{"id":39351,"date":"2026-09-16T08:18:00","date_gmt":"2026-09-16T08:18:00","guid":{"rendered":"https:\/\/etecnic.bisiestodeveloper.es\/?page_id=39351"},"modified":"2026-09-16T11:59:30","modified_gmt":"2026-09-16T11:59:30","slug":"afir-landing","status":"publish","type":"page","link":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/","title":{"rendered":"Afir landing"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"39351\" class=\"elementor elementor-39351 elementor-39337\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cdbd1fb e-flex e-con-boxed e-con e-parent\" data-id=\"cdbd1fb\" data-element_type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f4a0303 elementor-widget elementor-widget-html\" data-id=\"f4a0303\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================\r\n     Landing AFIR de Etecnic\r\n     Elementor: widget HTML (Elementor Pro) o widget Shortcode.\r\n     Pega ESTE fichero y nada m\u00e1s: el arreglo de ancho y altura va\r\n     dentro, no hace falta CSS personalizado ni tocar los ajustes de\r\n     la Secci\u00f3n\/Contenedor. Aun as\u00ed, para un resultado m\u00e1s limpio,\r\n     configura la Secci\u00f3n\/Contenedor que contiene este widget como:\r\n       - Content Width: Full Width (o el Contenedor como \"Full Width\")\r\n       - Stretch Section: S\u00ed (solo aplica a Secciones, no a Contenedores)\r\n       - Padding: 0 arriba y abajo (Advanced > Padding)\r\n     El CSS de aqu\u00ed ya fuerza estos mismos valores por si no lo haces\r\n     o si el tema a\u00f1ade su propio espaciado.\r\n     ============================================================ -->\r\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Kanit:wght@500;600;700&family=Poppins:wght@300;400;600&display=swap\">\r\n<style>\r\n\r\n\/* ============================================================\r\n   Libera los contenedores de Elementor (y del tema) que envuelven\r\n   esta landing. Va DENTRO del bloque a prop\u00f3sito: as\u00ed no depende de\r\n   que el CSS personalizado de Elementor llegue a la p\u00e1gina ni de\r\n   purgar cach\u00e9s. :has() localiza al padre; no hay que a\u00f1adir ninguna\r\n   clase, salvo que quieras usar la clase de refuerzo .afir-full\r\n   (ver m\u00e1s abajo) en la Secci\u00f3n\/Contenedor desde Advanced > CSS Classes.\r\n\r\n   Cubre tanto la estructura \"cl\u00e1sica\" de Elementor (Secciones\/Columnas:\r\n   .elementor-section, .elementor-container, .elementor-row,\r\n   .elementor-column, .elementor-widget-wrap...) como la estructura\r\n   nueva de \"Contenedores\" (.e-con, .e-con-inner). No pasa nada si\r\n   alguno de estos selectores no encuentra nada en tu maquetaci\u00f3n:\r\n   simplemente no hace nada.\r\n   ============================================================ *\/\r\n.elementor-widget-html:has(#afir-landing),\r\n.elementor-widget-container:has(#afir-landing),\r\n.elementor-widget:has(#afir-landing),\r\n.elementor-widget-wrap:has(#afir-landing),\r\n.elementor-column-wrap:has(#afir-landing),\r\n.elementor-column:has(#afir-landing),\r\n.elementor-container:has(#afir-landing),\r\n.elementor-row:has(#afir-landing),\r\n.elementor-section-wrap:has(#afir-landing),\r\n.elementor-section:has(#afir-landing),\r\n.e-con-inner:has(#afir-landing),\r\n.e-con:has(#afir-landing),\r\n.elementor:has(#afir-landing),\r\n.afir-full,\r\n.afir-full .elementor-container,\r\n.afir-full .elementor-column-wrap,\r\n.afir-full .e-con-inner{\r\n  height:auto !important;\r\n  min-height:0 !important;\r\n  max-height:none !important;\r\n  overflow:visible !important;\r\n  max-width:100% !important;\r\n  width:100% !important;\r\n  margin-left:0 !important;\r\n  margin-right:0 !important;\r\n  padding-left:0 !important;\r\n  padding-right:0 !important;\r\n  flex:0 0 auto !important;\r\n  align-items:flex-start !important;\r\n}\r\n#afir-landing{\r\n  width:100vw !important;\r\n  max-width:100vw !important;\r\n  margin-left:calc(50% - 50vw) !important;\r\n  margin-right:calc(50% - 50vw) !important;\r\n}\r\nbody:has(#afir-landing){overflow-x:hidden !important;}\r\n\r\n\/* El tema deja su propio relleno arriba y abajo del contenido, y eso abre una\r\n   franja blanca entre la cabecera y el degradado. Fuera solo en esta pagina. *\/\r\n#main:has(#afir-landing),\r\n#content:has(#afir-landing),\r\n.site-content:has(#afir-landing),\r\n.elementor-widget-html:has(#afir-landing),\r\n.elementor-widget-container:has(#afir-landing),\r\n.elementor-widget:has(#afir-landing),\r\n.elementor-widget-wrap:has(#afir-landing),\r\n.elementor-column-wrap:has(#afir-landing),\r\n.elementor-column:has(#afir-landing),\r\n.elementor-container:has(#afir-landing),\r\n.elementor-row:has(#afir-landing),\r\n.elementor-section-wrap:has(#afir-landing),\r\n.elementor-section:has(#afir-landing),\r\n.e-con-inner:has(#afir-landing),\r\n.e-con:has(#afir-landing),\r\n.afir-full,\r\n.afir-full .elementor-container,\r\n.afir-full .e-con-inner{\r\n  padding-top:0 !important;\r\n  padding-bottom:0 !important;\r\n  margin-top:0 !important;\r\n  margin-bottom:0 !important;\r\n}\r\n\r\n#afir-landing{box-sizing:border-box;-webkit-text-size-adjust:100%;width:100%;}\r\n#afir-landing *,#afir-landing *:before,#afir-landing *:after{box-sizing:border-box;}\r\n#afir-landing h1,#afir-landing h2,#afir-landing h3,#afir-landing h4,#afir-landing p,#afir-landing li,#afir-landing span,#afir-landing label,#afir-landing summary,#afir-landing button,#afir-landing input,#afir-landing select,#afir-landing textarea,#afir-landing b,#afir-landing strong,#afir-landing em,#afir-landing i,#afir-landing small,#afir-landing a{text-transform:none;letter-spacing:normal;font-variant:normal;text-shadow:none;}\r\n#afir-landing em{font-style:normal;}\r\n#afir-landing a{text-decoration:none;}\r\n#afir-landing ul,#afir-landing ol{margin:0;padding:0;list-style:none;}\r\n#afir-landing img{max-width:100%;height:auto;display:block;}\r\n#afir-landing figure{margin:0;}\r\n#afir-landing button{font:inherit;margin:0;border:none;background:none;}\r\n#afir-landing input,#afir-landing select,#afir-landing textarea{font:inherit;margin:0;}\r\n#afir-landing details summary::marker{content:\"\";}\r\n#afir-landing details summary::-webkit-details-marker{display:none;}\r\n#afir-landing table{border-collapse:collapse;}\r\n\r\n#afir-landing{\r\n  --blanco:#ffffff;\r\n  --marino:#03176e;\r\n  --azul:#3c44ee;\r\n  --cian:#00e9ef;\r\n  --verde:#00d23b;\r\n  --amarillo:#f4e41e;\r\n  --celeste:#24a9f4;\r\n  --petroleo:#145e87;\r\n  --tinta:#000000;\r\n  --gris:#5b6079;\r\n  --linea:#dfe2ee;\r\n  --nieve:#f5f6fb;\r\n  --deg:linear-gradient(96deg,#3c44ee 0%,#24a9f4 32%,#00e9ef 62%,#00d23b 100%);\r\n  --deg-texto:linear-gradient(96deg,#3c44ee 0%,#1e7fd6 55%,#178ac7 100%);\r\n  --display:'Kanit','Trebuchet MS',sans-serif;\r\n  --texto:'Poppins','Helvetica Neue',Arial,sans-serif;\r\n}\r\n#afir-landing *{box-sizing:border-box;}\r\n#afir-landing [hidden]{display:none!important;}\r\n#afir-landing{margin:0;background:var(--blanco);color:var(--tinta);\r\n  font-family:var(--texto);font-weight:300;font-size:17px;line-height:1.7;\r\n  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}\r\n#afir-landing .envoltorio{max-width:1120px;margin:0 auto;padding:0 28px;}\r\n#afir-landing h1, #afir-landing h2, #afir-landing h3, #afir-landing h4{font-family:var(--display);font-weight:600;color:var(--marino);\r\n  margin:0;text-align:left;text-wrap:balance;line-height:1.12;}\r\n#afir-landing p{margin:0 0 1em 0;}\r\n#afir-landing .justificado{text-align:justify;hyphens:auto;}\r\n#afir-landing a{color:var(--azul);}\r\n#afir-landing :focus-visible{outline:3px solid var(--azul);outline-offset:3px;border-radius:4px;}\r\n#afir-landing .aviso{background:var(--marino);color:var(--blanco);font-size:14px;}\r\n#afir-landing .aviso .envoltorio{display:flex;gap:18px;align-items:flex-start;padding:16px 24px;}\r\n#afir-landing .aviso strong{font-family:var(--display);font-weight:600;}\r\n#afir-landing .aviso p{margin:0;}\r\n#afir-landing .aviso button{margin-left:auto;flex:none;background:none;border:1px solid rgba(255,255,255,.45);\r\n  color:var(--blanco);font-family:var(--texto);font-size:13px;padding:5px 12px;border-radius:40px;cursor:pointer;}\r\n#afir-landing .aviso button:hover{background:rgba(255,255,255,.12);}\r\n#afir-landing .portada{position:relative;width:100%;padding:58px 0 clamp(70px,7vw,130px);}\r\n#afir-landing .portada:before{content:'';position:absolute;top:0;\r\n  right:calc(50% - 50vw);\r\n  width:min(640px,52vw);height:min(420px,46vh);\r\n  pointer-events:none;z-index:0;\r\n  background:radial-gradient(115% 115% at 100% 0%,\r\n    rgba(60,68,238,.20) 0%,\r\n    rgba(36,169,244,.13) 26%,\r\n    rgba(0,233,239,.06) 48%,\r\n    rgba(255,255,255,0) 68%);}\r\n@media (max-width:860px){\r\n#afir-landing .portada:before{width:78vw;height:250px;}\r\n}\r\n#afir-landing .portada .envoltorio{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:0 28px;}\r\n#afir-landing .portada-rejilla{display:grid;grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr);\r\n  gap:44px;align-items:end;}\r\n#afir-landing .portada-imagen{margin:0;display:flex;justify-content:flex-end;align-items:flex-end;}\r\n#afir-landing .portada-imagen[hidden]{display:none!important;}\r\n#afir-landing .marco-totem{position:relative;width:100%;max-width:330px;aspect-ratio:4\/5;\r\n  overflow:hidden;border-radius:22px 22px 0 0;\r\n  background:linear-gradient(180deg,#eaf1ff 0%,#f2f7ff 55%,#e6edfb 100%);}\r\n#afir-landing .marco-totem img{position:absolute;left:50%;bottom:-9%;transform:translateX(-50%);\r\n  width:104%;max-width:none;height:auto;display:block;}\r\n#afir-landing .marco-totem:after{content:'';position:absolute;left:0;right:0;bottom:0;height:14%;\r\n  background:linear-gradient(180deg,rgba(230,237,251,0) 0%,rgba(230,237,251,.85) 100%);\r\n  pointer-events:none;}\r\n@media (max-width:860px){\r\n#afir-landing .portada-rejilla{grid-template-columns:1fr;gap:30px;}\r\n#afir-landing .portada-imagen{justify-content:center;}\r\n#afir-landing .marco-totem{max-width:230px;border-radius:18px 18px 0 0;}\r\n}\r\n#afir-landing .arranque{margin-top:30px;}\r\n#afir-landing .boton-arranque{display:inline-flex;align-items:center;gap:10px;\r\n  font-family:var(--display);font-weight:600;font-size:17px;color:var(--blanco);\r\n  background:var(--marino);border-radius:40px;padding:16px 32px;text-decoration:none;\r\n  transition:background .2s,transform .18s,box-shadow .18s;min-height:54px;}\r\n#afir-landing .boton-arranque:hover{background:var(--azul);transform:translateY(-2px);\r\n  box-shadow:0 10px 26px rgba(60,68,238,.28);color:var(--blanco);text-decoration:none;}\r\n#afir-landing .boton-arranque span{transition:transform .3s;}\r\n#afir-landing .boton-arranque:hover span{transform:translateY(3px);}\r\n#afir-landing .condiciones{margin:12px 0 0;font-size:14px;color:var(--gris);}\r\n#afir-landing .portada h1{font-size:clamp(31px,6vw,70px);font-weight:700;margin:0;max-width:15em;letter-spacing:-.015em;}\r\n#afir-landing .portada h1 em{font-style:normal;background:var(--deg-texto);-webkit-background-clip:text;background-clip:text;color:transparent;}\r\n#afir-landing .entradilla{font-size:clamp(17px,1.6vw,20px);color:var(--tinta);max-width:33em;margin-top:20px;}\r\n#afir-landing .entradilla strong{color:var(--marino);font-weight:600;}\r\n#afir-landing .entradilla-2{font-size:16px;color:var(--gris);max-width:33em;margin-top:14px;}\r\n#afir-landing .fechas{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0;\r\n  margin-top:40px;border-top:1px solid var(--linea);}\r\n#afir-landing .fechas div{padding:20px 24px 20px 0;border-right:1px solid var(--linea);}\r\n#afir-landing .fechas div:last-child{border-right:none;padding-right:0;}\r\n#afir-landing .fechas b{display:block;font-family:var(--display);font-weight:600;font-size:clamp(22px,2.2vw,26px);color:var(--marino);}\r\n#afir-landing .fechas small{display:block;font-size:14px;color:var(--gris);line-height:1.5;margin-top:4px;}\r\n#afir-landing .seccion{padding:52px 0;}\r\n#afir-landing .rotulo{font-family:var(--display);font-weight:500;font-size:15px;color:var(--petroleo);margin-bottom:10px;}\r\n#afir-landing .seccion h2{font-size:clamp(28px,3.6vw,40px);}\r\n#afir-landing .seccion h2 + p{color:var(--gris);max-width:36em;margin-top:14px;}\r\n#afir-landing .arbol{margin-top:40px;}\r\n#afir-landing .arbol .via, #afir-landing .arbol .rastro, #afir-landing .arbol #pregunta{max-width:780px;}\r\n#afir-landing .desenlace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);\r\n  gap:26px;align-items:start;margin-top:34px;}\r\n#afir-landing .desenlace .columna-veredicto{position:sticky;top:24px;}\r\n#afir-landing .desenlace .resultado{margin-top:0;}\r\n#afir-landing .desenlace .formulario{padding:28px;}\r\n#afir-landing .desenlace .campos{gap:15px;}\r\n#afir-landing .desenlace .formulario h2{font-size:clamp(22px,2.2vw,28px);}\r\n#afir-landing .desenlace .formulario .justificado{font-size:15.5px;text-align:left;}\r\n#afir-landing .desenlace .recap{margin-top:18px;padding:14px 16px;}\r\n@media (max-width:940px){\r\n#afir-landing .desenlace{grid-template-columns:1fr;}\r\n#afir-landing .desenlace .columna-veredicto{position:static;}\r\n#afir-landing .desenlace .resultado{padding:24px;}\r\n#afir-landing .desenlace .resultado h3{font-size:21px;}\r\n#afir-landing .desenlace .resultado li{font-size:15px;}\r\n}\r\n#afir-landing .barra{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;\r\n  background:var(--marino);padding:12px 16px;box-shadow:0 -6px 24px rgba(3,23,110,.22);}\r\n#afir-landing .barra button{width:100%;font-family:var(--display);font-weight:600;font-size:16px;\r\n  color:var(--marino);background:var(--amarillo);border:none;border-radius:40px;padding:14px;cursor:pointer;}\r\n#afir-landing .barra[data-ver=\"si\"]{display:block;}\r\n@media (min-width:941px){\r\n#afir-landing .barra{display:none!important;}\r\n}\r\n#afir-landing .via{display:flex;align-items:center;gap:8px;margin-bottom:26px;}\r\n#afir-landing .via span{height:5px;flex:1 1 auto;border-radius:5px;background:var(--linea);transition:background .4s;}\r\n#afir-landing .via span.hecho{background:var(--deg);}\r\n#afir-landing .via span.aqui{background:var(--azul);}\r\n#afir-landing .via em{font-family:var(--display);font-weight:500;font-style:normal;font-size:14px;\r\n  color:var(--petroleo);flex:none;padding-left:6px;}\r\n#afir-landing .rastro{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}\r\n#afir-landing .rastro button{font-family:var(--texto);font-weight:400;font-size:13.5px;color:var(--marino);\r\n  background:var(--nieve);border:1px solid var(--linea);border-radius:40px;padding:6px 14px;\r\n  cursor:pointer;display:inline-flex;gap:7px;align-items:center;transition:all .2s;}\r\n#afir-landing .rastro button:hover{border-color:var(--azul);color:var(--azul);background:var(--blanco);}\r\n#afir-landing .rastro button b{font-weight:600;}\r\n#afir-landing .rastro button i{font-style:normal;color:var(--gris);font-size:12px;}\r\n#afir-landing .tarjeta{border:1px solid var(--linea);border-radius:20px;padding:36px 36px 30px;\r\n  background:var(--blanco);box-shadow:0 12px 44px rgba(3,23,110,.08);}\r\n#afir-landing .tarjeta.entra{animation:aparece .34s cubic-bezier(.2,.7,.3,1) both;}\r\n@keyframes aparece{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}\r\n#afir-landing .tarjeta h3{font-size:clamp(22px,2.6vw,28px);}\r\n#afir-landing .tarjeta .matiz{font-size:16px;color:var(--gris);margin:12px 0 0;max-width:44em;}\r\n#afir-landing .opciones{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}\r\n#afir-landing .opciones button{font-family:var(--texto);font-weight:400;font-size:16px;padding:15px 22px 15px 24px;\r\n  border-radius:14px;border:1.5px solid var(--linea);background:var(--blanco);color:var(--marino);\r\n  cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s;text-align:left;\r\n  display:inline-flex;align-items:center;gap:14px;min-height:54px;}\r\n#afir-landing .opciones button:after{content:'\u2192';color:var(--azul);opacity:.35;transition:opacity .18s,transform .18s;}\r\n#afir-landing .opciones button:hover{border-color:var(--azul);\r\n  box-shadow:0 6px 20px rgba(60,68,238,.13);transform:translateY(-2px);}\r\n#afir-landing .opciones button:hover:after{opacity:1;transform:translateX(3px);}\r\n#afir-landing .opciones button:active{transform:translateY(0);}\r\n#afir-landing .atras{margin-top:24px;background:none;border:none;padding:0;cursor:pointer;\r\n  font-family:var(--texto);font-weight:400;font-size:15px;color:var(--gris);}\r\n#afir-landing .atras:hover{color:var(--azul);}\r\n#afir-landing .atras[hidden]{display:none;}\r\n#afir-landing .reiniciar{background:none;border:none;padding:0;cursor:pointer;font-family:var(--texto);\r\n  font-size:15px;color:var(--gris);text-decoration:underline;margin-top:22px;}\r\n#afir-landing .reiniciar:hover{color:var(--azul);}\r\n#afir-landing .resultado{margin-top:34px;border-radius:20px;padding:32px 32px 30px;background:var(--nieve);\r\n  border:1px solid var(--linea);}\r\n#afir-landing .resultado[data-estado=\"incumple\"]{background:var(--marino);border-color:var(--marino);}\r\n#afir-landing .resultado[data-estado=\"incumple\"] h3, #afir-landing .resultado[data-estado=\"incumple\"] p, #afir-landing .resultado[data-estado=\"incumple\"] li, #afir-landing .resultado[data-estado=\"incumple\"] ul{color:var(--blanco);}\r\n#afir-landing .resultado[data-estado=\"incumple\"] .sello{background:var(--amarillo);color:var(--marino);}\r\n#afir-landing .resultado[data-estado=\"plazo\"]{background:#fffdf0;border-color:var(--amarillo);}\r\n#afir-landing .resultado[data-estado=\"plazo\"] .sello{background:var(--amarillo);color:var(--marino);}\r\n#afir-landing .resultado[data-estado=\"confirmar\"]{background:#f3f8fb;border-color:var(--petroleo);}\r\n#afir-landing .resultado[data-estado=\"confirmar\"] .sello{background:var(--petroleo);color:var(--blanco);}\r\n#afir-landing .resultado[data-estado=\"cumple\"]{background:#f2fff6;border-color:var(--verde);}\r\n#afir-landing .resultado[data-estado=\"cumple\"] .sello{background:var(--verde);color:var(--blanco);}\r\n#afir-landing .resultado[data-estado=\"fuera\"] .sello{background:var(--petroleo);color:var(--blanco);}\r\n#afir-landing .sello{display:inline-block;font-family:var(--display);font-weight:600;font-size:14px;\r\n  padding:5px 14px;border-radius:40px;background:var(--celeste);color:var(--blanco);margin-bottom:14px;}\r\n#afir-landing .resultado h3{font-size:clamp(21px,2vw,26px);margin-bottom:12px;}\r\n#afir-landing .resultado ul{margin:16px 0 0;padding-left:4px;list-style:none;}\r\n#afir-landing .resultado li{margin-bottom:12px;padding-left:22px;position:relative;font-size:15.5px;line-height:1.65;}\r\n#afir-landing .resultado li:before{content:'';position:absolute;left:0;top:.62em;width:8px;height:8px;\r\n  border-radius:50%;background:currentColor;opacity:.4;}\r\n#afir-landing .resultado li:last-child{margin-bottom:0;}\r\n#afir-landing .formulario{border-radius:20px;border:1px solid var(--linea);padding:34px;background:var(--blanco);\r\n  box-shadow:0 12px 44px rgba(3,23,110,.08);}\r\n#afir-landing .campos{display:flex;flex-direction:column;gap:16px;margin-top:22px;}\r\n#afir-landing label{display:block;font-family:var(--texto);font-weight:600;font-size:14px;color:var(--marino);margin-bottom:6px;}\r\n#afir-landing input[type=text], #afir-landing input[type=email], #afir-landing input[type=tel], #afir-landing select, #afir-landing textarea{width:100%;font-family:var(--texto);\r\n  font-weight:300;font-size:16px;padding:13px 15px;border:1.5px solid var(--linea);border-radius:11px;\r\n  background:var(--blanco);color:var(--tinta);transition:border-color .18s,box-shadow .18s;}\r\n#afir-landing input:focus, #afir-landing select:focus, #afir-landing textarea:focus{border-color:var(--azul);outline:none;\r\n  box-shadow:0 0 0 3px rgba(60,68,238,.13);}\r\n#afir-landing input::placeholder, #afir-landing textarea::placeholder{color:#a6abc2;}\r\n#afir-landing .ancho{grid-column:1\/-1;}\r\n#afir-landing .consentimiento{display:flex;gap:12px;align-items:flex-start;margin-top:22px;font-size:14px;color:var(--gris);}\r\n#afir-landing .consentimiento input{margin-top:4px;width:18px;height:18px;flex:none;accent-color:var(--azul);}\r\n#afir-landing .enviar{margin-top:26px;font-family:var(--display);font-weight:600;font-size:17px;color:var(--blanco);\r\n  background:var(--marino);border:none;border-radius:40px;padding:16px 34px;cursor:pointer;\r\n  transition:background .2s,transform .18s,box-shadow .18s;min-height:54px;}\r\n#afir-landing .enviar:hover{background:var(--azul);transform:translateY(-2px);box-shadow:0 8px 22px rgba(60,68,238,.28);}\r\n#afir-landing .enviar:active{transform:translateY(0);}\r\n#afir-landing .recogida{font-size:13px;color:var(--gris);margin-top:16px;}\r\n#afir-landing .recap{margin-top:22px;padding:18px 20px;background:var(--nieve);border-radius:14px;\r\n  border:1px solid var(--linea);}\r\n#afir-landing .recap p{margin:0 0 10px;font-size:14px;color:var(--gris);}\r\n#afir-landing .recap .fichas{display:flex;flex-wrap:wrap;gap:8px;}\r\n#afir-landing .recap .fichas span{font-size:13px;background:var(--blanco);border:1px solid var(--linea);\r\n  border-radius:40px;padding:5px 12px;color:var(--marino);}\r\n#afir-landing .recap .fichas span b{font-weight:600;}\r\n#afir-landing .enviar[disabled]{opacity:.55;cursor:progress;}\r\n#afir-landing .gracias{text-align:left;}\r\n#afir-landing .gracias .sello{margin-bottom:16px;}\r\n#afir-landing .gracias h2{margin-bottom:14px;}\r\n#afir-landing .gracias ul{margin:16px 0 0;padding-left:20px;color:var(--gris);font-size:15px;}\r\n#afir-landing .gracias li{margin-bottom:8px;}\r\n#afir-landing .aviso-error{margin-top:16px;padding:14px 16px;border-radius:12px;background:#fffdf0;\r\n  border:1px solid var(--amarillo);font-size:14px;color:var(--marino);}\r\n#afir-landing .opcional{font-weight:400;font-size:12px;color:var(--gris);background:var(--nieve);\r\n  border:1px solid var(--linea);border-radius:30px;padding:2px 8px;margin-left:6px;\r\n  text-transform:none;letter-spacing:0;}\r\n#afir-landing .pista{margin:6px 0 0;font-size:13px;color:var(--gris);}\r\n#afir-landing .fallo{margin:6px 0 0;font-size:13px;color:#a3122b;font-weight:400;}\r\n#afir-landing input.malo, #afir-landing textarea.malo{border-color:#a3122b;box-shadow:0 0 0 3px rgba(163,18,43,.10);}\r\n#afir-landing .extras{border:1px solid var(--linea);border-radius:14px;margin-top:16px;background:var(--nieve);}\r\n#afir-landing .extras summary{font-family:var(--texto);font-weight:600;font-size:14.5px;color:var(--marino);\r\n  padding:14px 18px;}\r\n#afir-landing .extras summary:after{content:'+';right:16px;font-size:20px;}\r\n#afir-landing .extras[open] summary:after{content:'\u2013';}\r\n#afir-landing .extras-cuerpo{display:flex;flex-direction:column;gap:16px;padding:2px 18px 20px;}\r\n#afir-landing .etiqueta-grupo{display:block;font-family:var(--texto);font-weight:600;font-size:14px;\r\n  color:var(--marino);margin-bottom:8px;}\r\n#afir-landing .radios{display:flex;flex-wrap:wrap;gap:8px;}\r\n#afir-landing .radios label{display:inline-flex;align-items:center;margin:0;font-weight:300;font-size:14.5px;\r\n  color:var(--marino);border:1.5px solid var(--linea);border-radius:40px;padding:8px 15px;\r\n  background:var(--blanco);cursor:pointer;transition:border-color .18s,background .18s;}\r\n#afir-landing .radios label:hover{border-color:var(--azul);}\r\n#afir-landing .radios input{position:absolute;opacity:0;width:0;height:0;}\r\n#afir-landing .radios input:checked + span{font-weight:600;}\r\n#afir-landing .radios label:has(input:checked){border-color:var(--marino);background:var(--marino);color:var(--blanco);}\r\n#afir-landing .radios input:focus-visible + span{outline:3px solid var(--azul);outline-offset:4px;border-radius:3px;}\r\n#afir-landing .confianza{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:7px;}\r\n#afir-landing .confianza li{position:relative;padding-left:24px;font-size:13.5px;color:var(--gris);line-height:1.5;}\r\n#afir-landing .confianza li:before{content:'';position:absolute;left:4px;top:.45em;width:9px;height:5px;\r\n  border-left:2px solid var(--verde);border-bottom:2px solid var(--verde);\r\n  transform:rotate(-45deg);}\r\n#afir-landing .depurar{margin-top:18px;border:1px dashed var(--celeste);border-radius:12px;background:#f3fbff;}\r\n#afir-landing .depurar summary{font-family:var(--texto);font-weight:600;font-size:13.5px;color:var(--petroleo);\r\n  padding:12px 16px;min-height:0;}\r\n#afir-landing .depurar summary:after{right:14px;font-size:18px;}\r\n#afir-landing .depurar .interior{padding:0 16px 16px;}\r\n#afir-landing .depurar table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:12px;}\r\n#afir-landing .depurar th, #afir-landing .depurar td{text-align:left;padding:5px 8px;border-bottom:1px solid #d7ecf7;\r\n  vertical-align:top;word-break:break-word;}\r\n#afir-landing .depurar th{font-weight:600;color:var(--marino);width:34%;}\r\n#afir-landing .depurar textarea{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;\r\n  border:1px solid #cfe6f4;border-radius:8px;padding:10px;background:var(--blanco);}\r\n#afir-landing .depurar p{font-size:12.5px;color:var(--gris);margin:0 0 10px;}\r\n#afir-landing .faqs{margin-top:34px;border-top:1px solid var(--linea);}\r\n#afir-landing details{border-bottom:1px solid var(--linea);}\r\n#afir-landing summary{padding:22px 48px 22px 0;cursor:pointer;list-style:none;position:relative;\r\n  transition:color .18s;}\r\n#afir-landing summary h3{font-family:var(--display);font-weight:500;font-size:clamp(16.5px,1.6vw,19px);\r\n  color:inherit;margin:0;display:inline;}\r\n#afir-landing .faqs summary{color:var(--marino);}\r\n#afir-landing summary:hover{color:var(--azul);}\r\n#afir-landing summary::-webkit-details-marker{display:none;}\r\n#afir-landing summary:after{content:'+';position:absolute;right:6px;top:50%;transform:translateY(-50%);\r\n  font-size:26px;font-weight:400;color:var(--azul);line-height:1;}\r\n#afir-landing details[open] summary:after{content:'\u2013';}\r\n#afir-landing details[open] summary{color:var(--azul);}\r\n#afir-landing details .cuerpo{padding:0 0 22px;max-width:62em;}\r\n#afir-landing details .cuerpo p:last-child{margin-bottom:0;}\r\n#afir-landing .cierre{border-top:1px solid var(--linea);margin-top:14px;padding:34px 0 10px;}\r\n#afir-landing .cierre .cols{display:grid;grid-template-columns:1.35fr 1fr;gap:44px;}\r\n#afir-landing .cierre h4{font-family:var(--display);font-weight:600;font-size:15px;color:var(--marino);\r\n  margin-bottom:10px;}\r\n#afir-landing .cierre p{font-size:13.5px;line-height:1.65;color:var(--gris);margin:0 0 9px;}\r\n#afir-landing .cierre p:last-child{margin-bottom:0;}\r\n#afir-landing .cierre a{color:var(--azul);}\r\n#afir-landing .pie{background:var(--marino);color:#c9cfe8;padding:46px 0 40px;margin-top:60px;font-size:14px;}\r\n#afir-landing .pie h4{color:var(--blanco);font-size:17px;margin-bottom:12px;}\r\n#afir-landing .pie a{color:var(--cian);}\r\n#afir-landing .pie .cols{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;}\r\n@media (max-width:940px){\r\n#afir-landing .envoltorio{padding:0 20px;}\r\n#afir-landing .portada{padding:40px 0 34px;}\r\n#afir-landing .seccion{padding:46px 0;}\r\n#afir-landing .justificado{text-align:left;}\r\n#afir-landing .opciones{flex-direction:column;gap:10px;}\r\n#afir-landing .opciones button{width:100%;justify-content:space-between;}\r\n#afir-landing .tarjeta{padding:26px 22px 24px;border-radius:18px;}\r\n#afir-landing .desenlace .formulario{padding:24px 22px;}\r\n#afir-landing .fechas div{border-right:none;border-bottom:1px solid var(--linea);padding:16px 0;}\r\n#afir-landing .fechas div:last-child{border-bottom:none;}\r\n#afir-landing .via em{font-size:13px;}\r\n#afir-landing .barra ~ .seccion:last-of-type{padding-bottom:96px;}\r\n}\r\n@media (max-width:560px){\r\n#afir-landing{font-size:16px;}\r\n#afir-landing .aviso .envoltorio{flex-direction:column;gap:12px;}\r\n#afir-landing .aviso button{margin-left:0;}\r\n#afir-landing .rastro button{font-size:12.5px;padding:5px 11px;}\r\n#afir-landing .via{gap:5px;margin-bottom:20px;}\r\n#afir-landing .resultado{padding:24px 20px;}\r\n#afir-landing .enviar{width:100%;}\r\n#afir-landing .cierre .cols{grid-template-columns:1fr;gap:24px;}\r\n}\r\n@media (prefers-reduced-motion:reduce){\r\n#afir-landing *{transition:none!important;animation:none!important;}\r\n}\r\n\r\n\/* ============================================================\r\n   ANCHURA. El bloque ocupa 100vw, pero su contenido se quedaba\r\n   topado en 1120px y en pantallas grandes dejaba mucho blanco a\r\n   los lados, estrujando la columna de texto y partiendo el\r\n   titular en cuatro lineas. Va al final para ganar por orden.\r\n   ============================================================ *\/\r\n#afir-landing .envoltorio{max-width:1280px;padding:0 clamp(20px,3vw,44px);}\r\n#afir-landing .portada .envoltorio{max-width:1280px;padding:0 clamp(22px,3vw,44px);}\r\n#afir-landing .portada-rejilla{grid-template-columns:minmax(0,1.34fr) minmax(0,.66fr);gap:52px;}\r\n\/* el velo de marca acompana a la ventana, no al contenedor *\/\r\n#afir-landing .portada:before{width:min(760px,54vw);height:min(460px,48vh);}\r\n\/* hay que repetir el movil DESPUES del override, o la regla de arriba\r\n   ganaria tambien en pantalla pequena y dejaria dos columnas *\/\r\n@media (max-width:860px){\r\n  #afir-landing .portada-rejilla{grid-template-columns:1fr;gap:30px;}\r\n  #afir-landing .portada:before{width:78vw;height:250px;}\r\n}\r\n@media (max-width:940px){\r\n  #afir-landing .envoltorio{padding:0 20px;}\r\n}\r\n\r\n\/* ---- cabecera fija del tema: sin margen de scroll, al encuadrar una seccion\r\n   la cabecera se come la parte de arriba y el resultado se ve cortado ---- *\/\r\n#afir-landing #diagnostico,\r\n#afir-landing .desenlace,\r\n#afir-landing #cajaFormulario,\r\n#afir-landing #faqs{scroll-margin-top:0;}\r\n@media (max-width:940px){\r\n  #afir-landing #diagnostico,\r\n  #afir-landing .desenlace,\r\n  #afir-landing #cajaFormulario,\r\n  #afir-landing #faqs{scroll-margin-top:0;}\r\n}\r\n\/* la etiqueta iba pegada al ultimo tramo de la barra *\/\r\n#afir-landing .via{gap:10px;}\r\n#afir-landing .via em{padding-left:12px;}\r\n<\/style>\r\n\r\n<div id=\"afir-landing\">\r\n<header class=\"portada\">\r\n  <div class=\"envoltorio\">\r\n    <div class=\"portada-rejilla\">\r\n      <div class=\"portada-texto\">\r\n    <h1>Does <em>AFIR<\/em> require you to install a card reader?<\/h1>\r\n    <p class=\"entradilla\"><strong>Yes, if the charge point is publicly accessible and rated at 50 kW or more.<\/strong> Points installed since 13 April 2024 are already required to comply; earlier ones have until 1 January 2027. Below 50 kW, a QR code with a payment gateway is enough.<\/p>\r\n    <p class=\"entradilla-2\">Answer six questions about your installation and we'll tell you exactly what Regulation (EU) 2023\/1804 requires, by what date, and what's still missing.<\/p>\r\n    <div class=\"arranque\">\r\n      <a class=\"boton-arranque\" href=\"#diagnostico\" id=\"irDiagnostico\">Start the assessment <span aria-hidden=\"true\">\u2193<\/span><\/a>\r\n      <p class=\"condiciones\">Under a minute. No sign-up, no data required.<\/p>\r\n    <\/div>\r\n      <\/div>\r\n      <figure class=\"portada-imagen\" id=\"figuraTotem\">\r\n        <div class=\"marco-totem\">\r\n        <img id=\"imgTotem\" src=\"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png\" alt=\"EVcharge payment kiosk, a card-reader terminal for EV charge points\" loading=\"eager\" decoding=\"async\">\r\n        <\/div>\r\n      <\/figure>\r\n    <\/div>\r\n    <div class=\"fechas\">\r\n      <div>\r\n        <b>13 Apr 2024<\/b>\r\n        <small>New publicly accessible points of 50 kW or more must already accept card payment.<\/small>\r\n      <\/div>\r\n      <div>\r\n        <b>8 Jan 2026<\/b>\r\n        <small>ISO 15118-2 mandatory for new or renewed publicly accessible AC charge points.<\/small>\r\n      <\/div>\r\n      <div>\r\n        <b>1 Jan 2027<\/b>\r\n        <small>Deadline for points of 50 kW or more that already existed before April 2024.<\/small>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/header>\r\n\r\n<section class=\"seccion\" id=\"diagnostico\">\r\n  <div class=\"envoltorio\">\r\n    <p class=\"rotulo\">Assessment<\/p>\r\n    <h2>Let's start with your installation<\/h2>\r\n    <p>We'll ask you one question at a time. The path adapts to your answers, and you can go back at any point. You don't need to give us any personal data to see the result.<\/p>\r\n\r\n    <div class=\"arbol\">\r\n      <div class=\"via\" id=\"via\" aria-hidden=\"true\"><\/div>\r\n      <div class=\"rastro\" id=\"rastro\"><\/div>\r\n      <div id=\"pregunta\" aria-live=\"polite\"><\/div>\r\n\r\n      <div class=\"desenlace\" id=\"desenlace\" hidden>\r\n        <div class=\"columna-veredicto\">\r\n          <div class=\"resultado\" id=\"resultado\" aria-live=\"polite\"><\/div>\r\n          <button class=\"reiniciar\" type=\"button\" id=\"reiniciar\">Start over<\/button>\r\n        <\/div>\r\n        <div class=\"columna-lead\">\r\n<div class=\"formulario\" id=\"cajaFormulario\">\r\n      <p class=\"rotulo\">Next step<\/p>\r\n      <h2 id=\"formTitulo\">Let's review it with your real details<\/h2>\r\n      <p class=\"justificado\" id=\"formIntro\"><\/p>\r\n\r\n      <div class=\"recap\" id=\"recap\">\r\n        <p>Here's what you've told us about your point. It goes along with your message so whoever gets in touch doesn't have to ask you again.<\/p>\r\n        <div class=\"fichas\" id=\"recapFichas\"><\/div>\r\n      <\/div>\r\n\r\n      <form id=\"formulario\" novalidate>\r\n        <div class=\"campos\">\r\n          <div>\r\n            <label for=\"nombre\">Full name<\/label>\r\n            <input type=\"text\" id=\"nombre\" name=\"nombre\" autocomplete=\"name\" required>\r\n            <p class=\"fallo\" id=\"fallo-nombre\" hidden><\/p>\r\n          <\/div>\r\n          <div>\r\n            <label for=\"empresa\">Company or organization<\/label>\r\n            <input type=\"text\" id=\"empresa\" name=\"empresa\" autocomplete=\"organization\" required>\r\n            <p class=\"fallo\" id=\"fallo-empresa\" hidden><\/p>\r\n          <\/div>\r\n          <div>\r\n            <label for=\"email\">Work email address<\/label>\r\n            <input type=\"email\" id=\"email\" name=\"email\" autocomplete=\"email\" required>\r\n            <p class=\"fallo\" id=\"fallo-email\" hidden><\/p>\r\n          <\/div>\r\n          <div>\r\n            <label for=\"telefono\">Phone <span class=\"opcional\">optional<\/span><\/label>\r\n            <input type=\"tel\" id=\"telefono\" name=\"telefono\" autocomplete=\"tel\">\r\n            <p class=\"pista\">If you leave it, we'll call you. If not, we'll email you.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <details class=\"extras\">\r\n          <summary>Add installation details <span class=\"opcional\">optional<\/span><\/summary>\r\n          <div class=\"extras-cuerpo\">\r\n            <div>\r\n              <label for=\"provincia\">Province \/ region<\/label>\r\n              <input type=\"text\" id=\"provincia\" name=\"provincia\" autocomplete=\"address-level1\">\r\n            <\/div>\r\n            <div>\r\n              <span class=\"etiqueta-grupo\">How many charge points do you manage?<\/span>\r\n              <div class=\"radios\" role=\"radiogroup\" aria-label=\"How many charge points you manage\">\r\n                <label><input type=\"radio\" name=\"puntos\" value=\"1 a 5\"><span>1 to 5<\/span><\/label>\r\n                <label><input type=\"radio\" name=\"puntos\" value=\"6 a 20\"><span>6 to 20<\/span><\/label>\r\n                <label><input type=\"radio\" name=\"puntos\" value=\"21 a 50\"><span>21 to 50<\/span><\/label>\r\n                <label><input type=\"radio\" name=\"puntos\" value=\"M\u00e1s de 50\"><span>More than 50<\/span><\/label>\r\n              <\/div>\r\n            <\/div>\r\n            <div>\r\n              <label for=\"mensaje\">Anything else we should know<\/label>\r\n              <textarea id=\"mensaje\" name=\"mensaje\" rows=\"3\"><\/textarea>\r\n            <\/div>\r\n          <\/div>\r\n        <\/details>\r\n\r\n        <div class=\"consentimiento\">\r\n          <input type=\"checkbox\" id=\"rgpd\" name=\"rgpd\" required>\r\n          <label for=\"rgpd\" style=\"font-weight:300;color:var(--gris);margin:0;\">I have read and accept the <a href=\"#\" target=\"_blank\" rel=\"noopener\">privacy policy<\/a>. Etecnic will process my data to respond to this enquiry and to inform me about AFIR compliance. I can withdraw my consent at any time.<\/label>\r\n        <\/div>\r\n\r\n        <button class=\"enviar\" type=\"submit\" id=\"botonEnviar\">Send<\/button>\r\n        <p class=\"recogida\" id=\"recogida\"><\/p>\r\n\r\n        <ul class=\"confianza\">\r\n          <li>No obligation, no compulsory quote<\/li>\r\n          <li>Your data is never shared with third parties<\/li>\r\n          <li>A real person from our team replies, not an automated form<\/li>\r\n        <\/ul>\r\n      <\/form>\r\n\r\n      <div id=\"marcoZoho\" hidden>\r\n        <iframe id=\"iframeZoho\" title=\"Contact form\" loading=\"lazy\"\r\n          style=\"width:100%;min-height:760px;border:0;background:transparent;\"><\/iframe>\r\n      <\/div>\r\n    <\/div>\r\n<div class=\"formulario gracias\" id=\"gracias\" hidden aria-live=\"polite\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n \"@context\": \"https:\/\/schema.org\",\r\n \"@type\": \"FAQPage\",\r\n \"inLanguage\": \"en-US\",\r\n \"mainEntity\": [\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"What is AFIR, and why does it affect me if I'm not a large operator?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"AFIR is Regulation (EU) 2023\/1804 on the deployment of alternative fuels infrastructure. It replaces the earlier AFID directive, and because it is a regulation rather than a directive, it applies directly in every Member State without needing transposition into national law. That leaves less room for local interpretation than the previous rules. Its operational obligations \u2014 payment, pricing, data \u2014 fall on whoever operates the charge point, regardless of size. If you have a point open to the public, it affects you.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"What exactly does \\\"publicly accessible\\\" mean?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"This is the most common misunderstanding. AFIR doesn't look at who owns the charge point, but at who can access it: what matters is whether access is open to any user, with or without prior registration. A private company with a car park open to customers or visitors is publicly accessible and is covered. A public authority with chargers reserved for its own official fleet has restricted access and is not covered at that point. A company with chargers only for its employees isn't covered either. The right question isn't whether you're public or private, but whether anyone can use that charger, even occasionally.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"I already have chargers installed. Do I have to change them?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"It depends on the power output and the installation date. Below 50 kW there's no obligation to add a physical reader. At 50 kW or more, for publicly accessible points installed before April 2024, yes: a card reader or contactless payment must be added before 1 January 2027. The upgrade to ISO 15118-20 is only mandatory if the point is newly installed or substantially renewed. There's no retroactive obligation for equipment that is kept without being renewed.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"I have an app and a QR code. Isn't that enough?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"Below 50 kW, yes: connected alternatives such as a QR code with a secure payment gateway are accepted. From 50 kW upward, no. The Regulation requires a physical bank card reader or a device that accepts contactless payment, whether or not the app exists. The app remains a convenient and recommended channel, but it doesn't replace the legal requirement at those power levels.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"My charger has Plug & Charge. Doesn't that already cover payment?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"No. Plug & Charge, enabled by ISO 15118, is a communication and authentication standard between vehicle and charger that lets charging start without a card or an app, through a prior contract with a mobility service provider. AFIR regulates it in a section separate from the guaranteed means of payment. The card reader is the universal method that must always exist from 50 kW upward, to cover any user: someone without a Plug & Charge contract with that operator, and someone driving a vehicle that doesn't support it. These are independent, complementary requirements, not interchangeable ones.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"What does AFIR require regarding price?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"The price must be expressed per kWh of electricity supplied, not only by time or by session, at new points of 50 kW or more. It must be reasonable, easily comparable, transparent and non-discriminatory. An occupancy fee per minute is allowed to discourage a point being blocked, but it must be communicated before the session starts. And no prior contract or registration can be required to find out about or pay for a one-off charging session.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"Do I have to publish data about my points?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"Yes, and at no cost to the user. Static data \u2014 location, number of connectors, opening hours, maximum power \u2014 and dynamic data \u2014 whether it's free or occupied, session price, whether the electricity is 100% renewable \u2014 usually through the national data access points. A European Commission implementing regulation from 2025 standardizes the format and accessibility. In practice, this favors management systems compatible with OCPP and open protocols such as OCPI, together with third-party aggregators and apps.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"What happens if I don't comply?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"AFIR applies directly, but each Member State develops its own enforcement and inspection regime. In Spain, the consequences of non-compliance depend on the applicable national rules and the competent authorities. They can include requirements to remedy the situation and, where applicable, administrative penalties. Besides the regulatory risk \u2014 administrative penalties and remediation requirements \u2014 there are two consequences people tend to forget: the reputational one, because a user who can't pay by card leaves a negative review, and the financial one, from being excluded from funding that requires compliance with the rules in force.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"Does it affect grants like MOVES or PERTE?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"Indirectly, but significantly. Programs such as MOVES III, the PERTE VEC, or European funds for charging infrastructure typically require compliance with applicable regulations, including AFIR where relevant, as an eligibility condition. Non-compliance can mean losing a grant already awarded, having to repay it, or being excluded from future calls.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"My point is private. Does it affect me anyway?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"If access is genuinely restricted and not open to the general public, most of the operational obligations \u2014 payment, price transparency, open data \u2014 don't apply to you directly. Even so, you may want to comply voluntarily: it improves the user experience and keeps the installation ready in case the use of the space changes at some point.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"My chargers aren't from Etecnic. Can you still help me?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"Yes. Etecnic doesn't manufacture charging hardware: we develop and operate EVcharge, the management platform, and we offer our own complementary hardware such as the payment kiosk. With chargers from another manufacturer, EVcharge can integrate as a direct management backend via OCPP if the charger supports it, or interconnect via OCPI with whichever backend already manages that point. And the kiosk can be added as a centralized payment terminal regardless of the charger's brand.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"Do I need a card terminal at every charger?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"Not necessarily. The EVcharge kiosk is compatible with chargers from different manufacturers and can centralize payment for several charge points in a single terminal, instead of fitting a reader to every charger. Besides meeting the requirement for one-off payment with no prior contract, it lowers the upfront investment and maintenance compared with equipping each point separately.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"Whose legal responsibility is it, mine or my supplier's?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"Responsibility as operator of the charge point under AFIR falls on whoever operates the point. Etecnic acts as the technology provider that supplies the tools to comply: backend, connectivity, payment terminal and open data via the sector's standard protocols (OCPP and OCPI). Compliance with the vehicle communication standards, the ISO 15118 family, depends mainly on the charger hardware and its manufacturer.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"Can I limit my charger by software to under 50 kW to avoid installing a card reader?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"No. The AFIR Regulation doesn't measure the 50 kW threshold by what the charger delivers at any given moment, but by the maximum power it is capable of providing. The legal text itself defines it this way in Article 2: the theoretical maximum power that the charge point can provide, not whatever it is configured to today. A limit set by software, reversible from the management panel, doesn't change the physical capacity of the equipment: for AFIR purposes, the charger still counts by what it can deliver, not by what it is currently allowed to deliver. As of today, there is no specific Spanish regulation that recognizes this kind of limitation as a valid way to be exempt from the requirement. If the charger also received a grant (MOVES, PERTE or other European funds) precisely for having 50 kW or more of power, limiting it afterward to get around AFIR may conflict with the conditions of that grant.\"\r\n   }\r\n  },\r\n  {\r\n   \"@type\": \"Question\",\r\n   \"name\": \"How much does it cost, and how long does it take?\",\r\n   \"acceptedAnswer\": {\r\n    \"@type\": \"Answer\",\r\n    \"text\": \"It depends on how many points need to be covered, where they are, and whether payment is centralized in a kiosk or resolved point by point. We'd rather give you a figure based on your actual installation than a catalog price that won't hold up later. On timing, one thing is worth keeping in mind: a kiosk has to be manufactured, supplied, installed and tested. If the goal is to reach 1 January 2027 with the installation up and running, our recommendation is not to leave the decision later than the end of October 2026.\"\r\n   }\r\n  }\r\n ]\r\n}\r\n<\/script>\r\n\r\n<section class=\"seccion\" id=\"faqs\">\r\n  <div class=\"envoltorio\">\r\n    <p class=\"rotulo\">Frequently asked questions<\/p>\r\n    <h2>What people ask us most about AFIR<\/h2>\r\n\r\n    <div class=\"faqs\">\r\n      <details><summary><h3>What is AFIR, and why does it affect me if I'm not a large operator?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">AFIR is Regulation (EU) 2023\/1804 on the deployment of alternative fuels infrastructure. It replaces the earlier AFID directive, and because it is a regulation rather than a directive, it applies directly in every Member State without needing transposition into national law. That leaves less room for local interpretation than the previous rules.<\/p>\r\n        <p class=\"justificado\">Its operational obligations \u2014 payment, pricing, data \u2014 fall on whoever operates the charge point, regardless of size. If you have a point open to the public, it affects you.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>What exactly does \"publicly accessible\" mean?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">This is the most common misunderstanding. AFIR doesn't look at who owns the charge point, but at who can access it: what matters is whether access is open to any user, with or without prior registration.<\/p>\r\n        <p class=\"justificado\">A private company with a car park open to customers or visitors is publicly accessible and is covered. A public authority with chargers reserved for its own official fleet has restricted access and is not covered at that point. A company with chargers only for its employees isn't covered either. The right question isn't whether you're public or private, but whether anyone can use that charger, even occasionally.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>I already have chargers installed. Do I have to change them?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">It depends on the power output and the installation date. Below 50 kW there's no obligation to add a physical reader. At 50 kW or more, for publicly accessible points installed before April 2024, yes: a card reader or contactless payment must be added before 1 January 2027.<\/p>\r\n        <p class=\"justificado\">The upgrade to ISO 15118-20 is only mandatory if the point is newly installed or substantially renewed. There's no retroactive obligation for equipment that is kept without being renewed.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>I have an app and a QR code. Isn't that enough?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">Below 50 kW, yes: connected alternatives such as a QR code with a secure payment gateway are accepted. From 50 kW upward, no. The Regulation requires a physical bank card reader or a device that accepts contactless payment, whether or not the app exists.<\/p>\r\n        <p class=\"justificado\">The app remains a convenient and recommended channel, but it doesn't replace the legal requirement at those power levels.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>My charger has Plug & Charge. Doesn't that already cover payment?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">No. Plug & Charge, enabled by ISO 15118, is a communication and authentication standard between vehicle and charger that lets charging start without a card or an app, through a prior contract with a mobility service provider. AFIR regulates it in a section separate from the guaranteed means of payment.<\/p>\r\n        <p class=\"justificado\">The card reader is the universal method that must always exist from 50 kW upward, to cover any user: someone without a Plug & Charge contract with that operator, and someone driving a vehicle that doesn't support it. These are independent, complementary requirements, not interchangeable ones.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>What does AFIR require regarding price?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">The price must be expressed per kWh of electricity supplied, not only by time or by session, at new points of 50 kW or more. It must be reasonable, easily comparable, transparent and non-discriminatory.<\/p>\r\n        <p class=\"justificado\">An occupancy fee per minute is allowed to discourage a point being blocked, but it must be communicated before the session starts. And no prior contract or registration can be required to find out about or pay for a one-off charging session.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>Do I have to publish data about my points?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">Yes, and at no cost to the user. Static data \u2014 location, number of connectors, opening hours, maximum power \u2014 and dynamic data \u2014 whether it's free or occupied, session price, whether the electricity is 100% renewable \u2014 usually through the national data access points.<\/p>\r\n        <p class=\"justificado\">A European Commission implementing regulation from 2025 standardizes the format and accessibility. In practice, this favors management systems compatible with OCPP and open protocols such as OCPI, together with third-party aggregators and apps.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>What happens if I don't comply?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">AFIR applies directly, but each Member State develops its own enforcement and inspection regime. In Spain, the consequences of non-compliance depend on the applicable national rules and the competent authorities. They can include requirements to remedy the situation and, where applicable, administrative penalties.<\/p>\r\n        <p class=\"justificado\">Besides the regulatory risk \u2014 administrative penalties and remediation requirements \u2014 there are two consequences people tend to forget: the reputational one, because a user who can't pay by card leaves a negative review, and the financial one, from being excluded from funding that requires compliance with the rules in force.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>Does it affect grants like MOVES or PERTE?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">Indirectly, but significantly. Programs such as MOVES III, the PERTE VEC, or European funds for charging infrastructure typically require compliance with applicable regulations, including AFIR where relevant, as an eligibility condition.<\/p>\r\n        <p class=\"justificado\">Non-compliance can mean losing a grant already awarded, having to repay it, or being excluded from future calls.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>My point is private. Does it affect me anyway?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">If access is genuinely restricted and not open to the general public, most of the operational obligations \u2014 payment, price transparency, open data \u2014 don't apply to you directly.<\/p>\r\n        <p class=\"justificado\">Even so, you may want to comply voluntarily: it improves the user experience and keeps the installation ready in case the use of the space changes at some point.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>My chargers aren't from Etecnic. Can you still help me?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">Yes. Etecnic doesn't manufacture charging hardware: we develop and operate EVcharge, the management platform, and we offer our own complementary hardware such as the payment kiosk.<\/p>\r\n        <p class=\"justificado\">With chargers from another manufacturer, EVcharge can integrate as a direct management backend via OCPP if the charger supports it, or interconnect via OCPI with whichever backend already manages that point. And the kiosk can be added as a centralized payment terminal regardless of the charger's brand.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>Do I need a card terminal at every charger?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">Not necessarily. The EVcharge kiosk is compatible with chargers from different manufacturers and can centralize payment for several charge points in a single terminal, instead of fitting a reader to every charger.<\/p>\r\n        <p class=\"justificado\">Besides meeting the requirement for one-off payment with no prior contract, it lowers the upfront investment and maintenance compared with equipping each point separately.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>Whose legal responsibility is it, mine or my supplier's?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">Responsibility as operator of the charge point under AFIR falls on whoever operates the point. Etecnic acts as the technology provider that supplies the tools to comply: backend, connectivity, payment terminal and open data via the sector's standard protocols (OCPP and OCPI).<\/p>\r\n        <p class=\"justificado\">Compliance with the vehicle communication standards, the ISO 15118 family, depends mainly on the charger hardware and its manufacturer.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>Can I limit my charger by software to under 50 kW to avoid installing a card reader?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">No. The AFIR Regulation doesn't measure the 50 kW threshold by what the charger delivers at any given moment, but by the maximum power it is capable of providing. The legal text itself defines it this way in Article 2: the theoretical maximum power that the charge point can provide, not whatever it is configured to today.<\/p>\r\n        <p class=\"justificado\">A limit set by software, reversible from the management panel, doesn't change the physical capacity of the equipment: for AFIR purposes, the charger still counts by what it can deliver, not by what it is currently allowed to deliver. As of today, there is no specific Spanish regulation that recognizes this kind of limitation as a valid way to be exempt from the requirement.<\/p>\r\n        <p class=\"justificado\">If the charger also received a grant (MOVES, PERTE or other European funds) precisely for having 50 kW or more of power, limiting it afterward to get around AFIR may conflict with the conditions of that grant.<\/p>\r\n      <\/div><\/details>\r\n\r\n      <details><summary><h3>How much does it cost, and how long does it take?<\/h3><\/summary><div class=\"cuerpo\">\r\n        <p class=\"justificado\">It depends on how many points need to be covered, where they are, and whether payment is centralized in a kiosk or resolved point by point. We'd rather give you a figure based on your actual installation than a catalog price that won't hold up later.<\/p>\r\n        <p class=\"justificado\">On timing, one thing is worth keeping in mind: a kiosk has to be manufactured, supplied, installed and tested. If the goal is to reach 1 January 2027 with the installation up and running, our recommendation is not to leave the decision later than the end of October 2026.<\/p>\r\n      <\/div><\/details>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<div class=\"barra\" id=\"barra\" data-ver=\"no\">\r\n  <button type=\"button\" id=\"barraBoton\">Leave my details<\/button>\r\n<\/div>\r\n\r\n<section class=\"seccion\" style=\"padding-top:0;\">\r\n  <div class=\"envoltorio\">\r\n   <div class=\"cierre\">\r\n    <div class=\"cols\">\r\n    <div>\r\n      <h4>About this assessment<\/h4>\r\n      <p>This is general guidance based on Regulation (EU) 2023\/1804. It doesn't replace an analysis of your installation or a formal compliance report. For a firm assessment in writing, contact us and we'll route it to the right team.<\/p>\r\n    <\/div>\r\n    <div>\r\n      <h4>Official sources<\/h4>\r\n      <p>Consolidated text of Regulation (EU) 2023\/1804, available on <a href=\"https:\/\/eur-lex.europa.eu\" target=\"_blank\" rel=\"noopener\">EUR-Lex<\/a>.<\/p>\r\n      <p>Guidance and communications from the European Commission on AFIR (DG MOVE).<\/p>\r\n    <\/div>\r\n    <\/div>\r\n   <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function(){\r\n  \/\/ ---- definici\u00f3n del \u00e1rbol ----\r\n  var NODOS={\r\n    publico:{\r\n      corto:'Access',\r\n      titulo:'Can anyone use this charge point?',\r\n      matiz:'Access still counts as public even when use is occasional, even if the car park itself is private. What matters is who can access the charge point, not who owns it.',\r\n      opciones:[\r\n        {valor:'si', texto:'Yes, it\\'s open to the public', etiqueta:'open to the public', va:'potencia'},\r\n        {valor:'no', texto:'No, only my fleet or staff use it', etiqueta:'restricted', va:null}\r\n      ]\r\n    },\r\n    potencia:{\r\n      corto:'Power',\r\n      titulo:'What is the charge point\\'s maximum power output?',\r\n      matiz:'What counts is the maximum power the unit can deliver, as shown on its rating plate, not whatever it\\'s configured to today. If you have several, answer for the most powerful one: the 50 kW threshold is assessed point by point.',\r\n      opciones:[\r\n        {valor:'alta', texto:'50 kW or more', etiqueta:'50 kW or more', va:'antiguedad'},\r\n        {valor:'baja', texto:'Less than 50 kW', etiqueta:'less than 50 kW', va:'precio'},\r\n        {valor:'nose', texto:'I don\\'t know', etiqueta:'power to be confirmed', va:'antiguedad'}\r\n      ]\r\n    },\r\n    antiguedad:{\r\n      corto:'Installation',\r\n      titulo:'When was the charge point installed?',\r\n      matiz:'The installation date determines which rules apply. 13 April 2024 is the dividing line.',\r\n      opciones:[\r\n        {valor:'nuevo', texto:'On or after 13 April 2024', etiqueta:'since April 2024', va:'tpv'},\r\n        {valor:'viejo', texto:'Before 13 April 2024', etiqueta:'before April 2024', va:'tpv'}\r\n      ]\r\n    },\r\n    tpv:{\r\n      corto:'Payment',\r\n      titulo:'Does the charge point have a bank card payment terminal?',\r\n      matiz:'There must be a physical payment terminal, either built into the charger or centralized in a kiosk serving several units. At this power level, an app or QR code does not replace the payment terminal.',\r\n      opciones:[\r\n        {valor:'si', texto:'Yes, it has a payment terminal', etiqueta:'with a reader', va:'precio'},\r\n        {valor:'no', texto:'No, it doesn\\'t have a payment terminal', etiqueta:'without a reader', va:'precio'}\r\n      ]\r\n    },\r\n    precio:{\r\n      corto:'Price',\r\n      titulo:'Is the price per kWh shown before charging starts?',\r\n      matiz:'The price must be available without a prior contract, without registering, and without downloading any app.',\r\n      opciones:[\r\n        {valor:'si', texto:'Yes, it\\'s shown', etiqueta:'price visible', va:'datos'},\r\n        {valor:'no', texto:'No, or I don\\'t know', etiqueta:'price not visible', va:'datos'}\r\n      ]\r\n    },\r\n    datos:{\r\n      corto:'Data',\r\n      titulo:'Do you publish the location, availability and price of the charge point?',\r\n      matiz:'The obligation covers both static and dynamic data. It\\'s published through the national data access point, usually via a management system compatible with protocols such as OCPP and OCPI.',\r\n      opciones:[\r\n        {valor:'si', texto:'Yes, they\\'re published', etiqueta:'data published', va:null},\r\n        {valor:'no', texto:'No, or I don\\'t know', etiqueta:'data not published', va:null}\r\n      ]\r\n    }\r\n  };\r\n\r\n  \/\/ ---- qu\u00e9 dice el formulario seg\u00fan el resultado ----\r\n  var PERFILES={\r\n    incumple:{\r\n      titulo:'Let\\'s fix this as soon as possible',\r\n      intro:'This point is past its deadline today, so the first step is finding out exactly what\\'s needed and how much room there is. Leave us your details and we\\'ll call you this week.',\r\n      cta:'Call me this week',\r\n      calificacion:'Caliente', prioridad:'Alta'\r\n    },\r\n    confirmar:{\r\n      titulo:'Confirm the power rating and we\\'ll close this out',\r\n      intro:'We\\'re missing one detail to tell you exactly what AFIR requires of you. Leave us your details and, when we talk, have a photo of the charger\\'s front and one of its rating plate ready.',\r\n      cta:'Let\\'s confirm it',\r\n      calificacion:'Caliente', prioridad:'Alta'\r\n    },\r\n    plazo:{\r\n      titulo:'We\\'ll help you meet the 1 January 2027 deadline',\r\n      intro:'You have plenty of time if you get started now: manufacturing, delivering, installing and testing the kiosk all take time. Leave us your details and we\\'ll size it to your actual installation.',\r\n      cta:'Get my installation assessed',\r\n      calificacion:'Caliente', prioridad:'Alta'\r\n    },\r\n    cumple:{\r\n      titulo:'Let\\'s go over what\\'s still open',\r\n      intro:'You\\'ve got the payment requirement covered, but AFIR doesn\\'t stop there: price per kWh, data publication, and the communication standards for anything you install from now on. If you\\'d like, we can go through it point by point.',\r\n      cta:'Have a technician review it',\r\n      calificacion:'Templado', prioridad:'Media'\r\n    },\r\n    fuera:{\r\n      titulo:'Want to talk anyway?',\r\n      intro:'The operational obligations don\\'t apply to you today, and we won\\'t tell you otherwise. But if the use of the space could change, if you have other points in a different situation, or if you\\'d like to get ahead of it, get in touch and we\\'ll take a look, no obligation.',\r\n      cta:'Get in touch with me',\r\n      calificacion:'Fr\u00edo', prioridad:'Baja'\r\n    }\r\n  };\r\n\r\n  \/\/ ---- captura de UTMs, para que viajen con el lead ----\r\n  var utm={};\r\n  (function(){\r\n    var q=new URLSearchParams(location.search);\r\n    ['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(function(k){utm[k]=q.get(k)||'';});\r\n  })();\r\n\r\n  var camino=[];          \/\/ [{clave, valor, etiqueta}]\r\n  var actual='publico';   \/\/ nodo en pantalla, o null si ya hay resultado\r\n  var elPregunta=document.getElementById('pregunta');\r\n  var elRastro=document.getElementById('rastro');\r\n  var elVia=document.getElementById('via');\r\n  var elResultado=document.getElementById('resultado');\r\n  var elReiniciar=document.getElementById('reiniciar');\r\n  var elDesenlace=document.getElementById('desenlace');\r\n\r\n  \/\/ texto completo de cada pregunta con la respuesta elegida y su aclaraci\u00f3n\r\n  function transcripcion(){\r\n    var t=camino.map(function(x,i){\r\n      var n=NODOS[x.clave];\r\n      var op=n.opciones.filter(function(o){return o.valor===x.valor;})[0];\r\n      return (i+1)+'. '+n.titulo+'\\n'+\r\n             '   Answer: '+(op?op.texto:x.etiqueta)+'\\n'+\r\n             '   Context: '+n.matiz;\r\n    }).join('\\n\\n');\r\n    \/* El formulario no pide adjuntos a proposito. Si el cliente no sabe la\r\n       potencia, se avisa aqui para que quien atienda le pida las dos fotos. *\/\r\n    if(respuestas().potencia==='nose'){\r\n      t+='\\n\\n--- FOR WHOEVER HANDLES THIS ---\\n'+\r\n         'The customer does not know the charge point\\'s power rating. Ask for two photos:\\n'+\r\n         '  1) the front of the charger\\n'+\r\n         '  2) the rating plate (the sticker with letters and numbers on the side or back of the unit)\\n'+\r\n         'The maximum power on the plate determines whether the payment terminal requirement applies. '+\r\n         'Remember: what counts is the maximum power the unit can deliver, not whatever it is limited to by software.';\r\n    }\r\n    return t;\r\n  }\r\n\r\n  \/\/ { Acceso:'abierto al p\u00fablico', Potencia:'50 kW o m\u00e1s', ... }\r\n  function etiquetadas(){\r\n    var o={};\r\n    camino.forEach(function(x){ o[NODOS[x.clave].corto]=x.etiqueta; });\r\n    return o;\r\n  }\r\n\r\n  function respuestas(){\r\n    var o={};camino.forEach(function(p){o[p.clave]=p.valor;});return o;\r\n  }\r\n\r\n  \/* ---- encuadre de scroll -----------------------------------------------\r\n     La cabecera fija del tema se mide en vivo en lugar de suponer una altura:\r\n     en la web se respeta, y en el archivo suelto (que no la lleva) la seccion\r\n     queda pegada arriba y el bloque anterior desaparece del todo en lugar de\r\n     verse cortado. Con un segundo elemento, baja lo justo para que su final\r\n     entre en pantalla. *\/\r\n  function altoCabecera(){\r\n    var xs=[Math.round(window.innerWidth\/2), 30, Math.max(0,window.innerWidth-30)];\r\n    var tope=0, y=1, vueltas=0;\r\n    while(y<=260 && vueltas<10){\r\n      vueltas++;\r\n      var fijo=null;\r\n      for(var i=0;i<xs.length && !fijo;i++){\r\n        var el=document.elementFromPoint(xs[i], y);\r\n        while(el && el!==document.body && el!==document.documentElement){\r\n          var cs=window.getComputedStyle(el);\r\n          if(cs.position==='fixed'||cs.position==='sticky'){ fijo=el; break; }\r\n          el=el.parentElement;\r\n        }\r\n      }\r\n      if(!fijo) break;\r\n      var r=fijo.getBoundingClientRect();\r\n      if(!(r.height>0) || r.height>260 || r.bottom<=tope) break;\r\n      tope=r.bottom;\r\n      y=Math.round(r.bottom)+1;\r\n    }\r\n    return Math.round(Math.min(tope,300));\r\n  }\r\n\r\n  function encuadrar(inicio, fin, tope){\r\n    if(!inicio) return;\r\n    var y=window.pageYOffset||document.documentElement.scrollTop||0;\r\n    var cab=altoCabecera();\r\n    var destino=Math.round(inicio.getBoundingClientRect().top+y-cab-8);\r\n    if(fin){\r\n      var necesario=Math.round(fin.getBoundingClientRect().bottom+y+24-window.innerHeight);\r\n      if(necesario>destino) destino=necesario;\r\n    }\r\n    if(tope){\r\n      var limite=Math.round(tope.getBoundingClientRect().top+y-cab-8);\r\n      if(destino>limite) destino=limite;\r\n    }\r\n    var maximo=Math.max(0,(document.documentElement.scrollHeight||0)-window.innerHeight);\r\n    destino=Math.max(0,Math.min(destino,maximo));\r\n    var suave=!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);\r\n    function repasar(){\r\n      var ahora=window.pageYOffset||document.documentElement.scrollTop||0;\r\n      if(Math.abs(ahora-destino)>4) return;\r\n      var cab2=altoCabecera();\r\n      var arriba=inicio.getBoundingClientRect().top;\r\n      if(arriba < cab2-1){\r\n        window.scrollTo(0, Math.max(0, ahora-(cab2-arriba)-8));\r\n      }\r\n    }\r\n    if(suave){ window.scrollTo({top:destino,behavior:'smooth'}); setTimeout(repasar,700); }\r\n    else { window.scrollTo(0,destino); setTimeout(repasar,60); }\r\n  }\r\n\r\n  function pintarVia(){\r\n    var trozos='';\r\n    camino.forEach(function(){trozos+='<span class=\"hecho\"><\/span>';});\r\n    if(actual) trozos+='<span class=\"aqui\"><\/span>';\r\n    var n=camino.length+(actual?1:0);\r\n    elVia.innerHTML=trozos+'<em>'+(actual?('Question '+n):(camino.length+' answers'))+'<\/em>';\r\n  }\r\n\r\n  function pintarRastro(){\r\n    elRastro.innerHTML='';\r\n    camino.forEach(function(p,i){\r\n      var b=document.createElement('button');\r\n      b.type='button';\r\n      b.innerHTML='<b>'+NODOS[p.clave].corto+'<\/b><i>'+p.etiqueta+'<\/i>';\r\n      b.title='Back to this question';\r\n      b.addEventListener('click',function(){volverA(i);});\r\n      elRastro.appendChild(b);\r\n    });\r\n  }\r\n\r\n  function volverA(i){\r\n    var clave=camino[i].clave;\r\n    camino=camino.slice(0,i);\r\n    actual=clave;\r\n    elDesenlace.hidden=true;\r\n    document.getElementById('barra').dataset.ver='no';\r\n    render();\r\n  }\r\n\r\n  function atras(){\r\n    if(!camino.length) return;\r\n    volverA(camino.length-1);\r\n  }\r\n\r\n  function render(){\r\n    pintarVia(); pintarRastro();\r\n    if(!actual){elPregunta.innerHTML='';return;}\r\n    var n=NODOS[actual];\r\n    var tarjeta=document.createElement('div');\r\n    tarjeta.className='tarjeta entra';\r\n    var html='<h3>'+n.titulo+'<\/h3><p class=\"matiz\">'+n.matiz+'<\/p><div class=\"opciones\">';\r\n    n.opciones.forEach(function(o,idx){\r\n      html+='<button type=\"button\" data-idx=\"'+idx+'\">'+o.texto+'<\/button>';\r\n    });\r\n    html+='<\/div>';\r\n    html+='<button class=\"atras\" type=\"button\"'+(camino.length?'':' hidden')+'>&larr; Back to previous<\/button>';\r\n    tarjeta.innerHTML=html;\r\n    elPregunta.innerHTML='';\r\n    elPregunta.appendChild(tarjeta);\r\n\r\n    tarjeta.querySelectorAll('.opciones button').forEach(function(b){\r\n      b.addEventListener('click',function(){elegir(parseInt(b.dataset.idx,10));});\r\n    });\r\n    var vb=tarjeta.querySelector('.atras');\r\n    if(vb) vb.addEventListener('click',atras);\r\n    var primero=tarjeta.querySelector('.opciones button');\r\n    if(primero && camino.length) primero.focus({preventScroll:true});\r\n  }\r\n\r\n  function elegir(idx){\r\n    var n=NODOS[actual];\r\n    var o=n.opciones[idx];\r\n    camino.push({clave:actual, valor:o.valor, etiqueta:o.etiqueta});\r\n    actual=o.va;\r\n    if(actual){ render(); }\r\n    else { pintarVia(); pintarRastro(); elPregunta.innerHTML=''; resolver(); }\r\n  }\r\n\r\n  elReiniciar.addEventListener('click',function(){\r\n    camino=[];actual='publico';elDesenlace.hidden=true;document.getElementById('barra').dataset.ver='no';render();\r\n    encuadrar(document.getElementById('diagnostico'));\r\n  });\r\n\r\n  function resolver(){\r\n    var e=respuestas(), dato, sello, titulo, puntos=[];\r\n\r\n    if(e.publico==='no'){\r\n      dato='fuera'; sello='Not applicable to you today';\r\n      titulo='With restricted access, the operational obligations don\\'t apply to you directly';\r\n      puntos=['If access is genuinely limited to your fleet or your staff, AFIR doesn\\'t require card payment, price transparency or data publication at that point.',\r\n              'Watch out for a change in use: if it ever opens up to customers or visitors, it becomes publicly accessible and every obligation kicks in.',\r\n              'Complying voluntarily keeps the installation future-ready and improves the experience for whoever uses it.'];\r\n    } else if(e.potencia==='nose'){\r\n      dato='confirmar'; sello='One detail left to close this out';\r\n      titulo='Once we confirm the maximum power, we\\'ll tell you exactly what applies';\r\n      puntos=['AFIR looks at the maximum power the charge point can deliver, as shown on its rating plate, not whatever is configured in the management panel. A software-imposed limit doesn\\'t move the unit into a lower bracket.',\r\n              'That figure is on the rating plate: look for a sticker with letters and numbers on the side or back of the charger. Think of it as the unit\\'s technical ID.',\r\n              'When we talk, have a photo of the charger\\'s front and one of that plate ready. With both, we can confirm it in the same call, no site visit needed.'];\r\n      if(e.tpv==='no') puntos.push('If it turns out to be 50 kW or more, you\\'ll need a card payment terminal. A kiosk can cover several charge points at once.');\r\n      if(e.precio==='no') puntos.push('Regardless of power output, you\\'re still required to show the price per kWh before the session starts, with no prior contract or registration.');\r\n    } else if(e.potencia==='baja'){\r\n      dato='cumple'; sello='No physical reader required';\r\n      titulo='Below 50 kW you don\\'t need a card reader, but the rest still applies';\r\n      puntos=['A QR code with a secure payment gateway is an accepted alternative at this power level.'];\r\n      if(e.precio==='no') puntos.push('You still need to show the price per kWh before the session starts, with no prior contract or registration. This does apply to you.');\r\n      if(e.datos==='no') puntos.push('You still need to publish static and dynamic data for the point. This also applies to you, and it favors management systems compatible with OCPP and OCPI.');\r\n      if(e.precio==='si'&&e.datos==='si') puntos.push('With the price visible and data published, you\\'ve got the essentials covered. If you ever move above 50 kW, the physical reader requirement kicks in.');\r\n    } else if(e.tpv==='no' && e.antiguedad==='nuevo'){\r\n      dato='incumple'; sello='Deadline already passed';\r\n      titulo='This point should have accepted card payment from day one';\r\n      puntos=['Publicly accessible points of 50 kW or more installed since 13 April 2024 have been required to accept card or contactless payment from day one, not from 2027.',\r\n              '1 January 2027 is the deadline for chargers installed before that date. It doesn\\'t give you extra time.',\r\n              'The fastest route is usually a kiosk that centralizes payment for several points, without changing the charging hardware.'];\r\n    } else if(e.tpv==='no' && e.antiguedad==='viejo'){\r\n      dato='plazo'; sello='Deadline: 1 January 2027';\r\n      titulo='Make sure anyone can pay at your charge point before 1 January 2027';\r\n      puntos=['As a publicly accessible point of 50 kW or more installed before April 2024, it must be upgraded before 1 January 2027.',\r\n              'A kiosk compatible with chargers from different manufacturers meets the requirement even if they\\'re a different brand, and can cover several charge points at once.',\r\n              'If the goal is to have everything running by that date, we recommend deciding no later than the end of October 2026: manufacturing, delivery, installation and testing all take time.'];\r\n    } else {\r\n      dato='cumple'; sello='The essentials, covered';\r\n      titulo='You\\'ve got the payment requirement sorted';\r\n      puntos=['With a card reader or contactless payment at a publicly accessible point of 50 kW or more, you meet the requirement for one-off payment with no prior contract.'];\r\n      if(e.precio==='no') puntos.push('You still need to show the price per kWh before the session starts, with no prior contract.');\r\n      if(e.datos==='no') puntos.push('You still need to publish the static and dynamic data for the point.');\r\n      if(e.precio==='si'&&e.datos==='si') puntos.push('Price and data are in order too. The next front is ISO 15118 for any points you install or renew from now on.');\r\n    }\r\n\r\n    elResultado.dataset.estado=dato;\r\n    elDesenlace.hidden=false;\r\n    var lista=puntos.map(function(t){return '<li>'+t+'<\/li>';}).join('');\r\n    elResultado.innerHTML='<span class=\"sello\">'+sello+'<\/span><h3>'+titulo+'<\/h3><ul>'+lista+'<\/ul>';\r\n    prepararFormulario(dato);\r\n    requestAnimationFrame(function(){ requestAnimationFrame(function(){\r\n      var barraAvance=document.getElementById('via');\r\n      encuadrar(barraAvance||document.getElementById('diagnostico')||elDesenlace,\r\n                document.getElementById('marcoZoho')||document.getElementById('cajaFormulario'),\r\n                barraAvance);\r\n    }); });\r\n  }\r\n\r\n  function prepararFormulario(dato){\r\n    var p=PERFILES[dato];\r\n    document.getElementById('formTitulo').textContent=p.titulo;\r\n    document.getElementById('formIntro').textContent=p.intro;\r\n    document.getElementById('botonEnviar').textContent=p.cta;\r\n    document.getElementById('recapFichas').innerHTML=camino.map(function(x){\r\n      return '<span><b>'+NODOS[x.clave].corto+'<\/b> '+x.etiqueta+'<\/span>';\r\n    }).join('');\r\n    if(MODO==='zoho'){\r\n      document.getElementById('formulario').hidden=true;\r\n      document.getElementById('marcoZoho').hidden=false;\r\n      var marco=document.getElementById('iframeZoho');\r\n      var destino=urlZoho(dato);\r\n      if(marco.getAttribute('src')!==destino) marco.setAttribute('src',destino);\r\n      if(DEPURAR) pintarDepuracion(destino);\r\n    }\r\n    document.getElementById('cajaFormulario').hidden=false;\r\n    document.getElementById('gracias').hidden=true;\r\n    document.getElementById('recogida').textContent='';\r\n    var barra=document.getElementById('barra');\r\n    document.getElementById('barraBoton').textContent=p.cta;\r\n    barra.dataset.ver='si';\r\n  }\r\n\r\n  var MODO='zoho';\r\n  var DEPURAR=false;\r\n  var WEBHOOK='https:\/\/n8n.etecnic.es\/webhook\/landing-afir';\r\n\r\n  var ZOHO={\r\n    url:'https:\/\/forms.zohopublic.com\/marketing351\/form\/AFIRFormulario\/formperma\/mAFR06vvo-_M_sEQA-bzDFvXCB8xCDW9P-D0wkPRzLc',\r\n    origen:'https:\/\/forms.zohopublic.com',\r\n    campos:{\r\n      resultado:'', camino:'', calificacion:'', prioridad:'', origen:'', campana:'',\r\n      utm_source:'', utm_medium:'', utm_campaign:'', utm_content:'', utm_term:'',\r\n      idioma:'', transcripcion:''\r\n    },\r\n    preguntas:{\r\n      publico:'Acceso', potencia:'Potencia', antiguedad:'Instalacion',\r\n      tpv:'Pago', precio:'Precio', datos:'Datos'\r\n    },\r\n    idioma:'English'\r\n  };\r\n\r\n  function urlZoho(dato){\r\n    var p=PERFILES[dato], c=ZOHO.campos, q=[];\r\n    function add(campo,valor){ if(campo&&valor) q.push(encodeURIComponent(campo)+'='+encodeURIComponent(valor)); }\r\n    add(c.resultado, document.querySelector('#resultado h3').textContent);\r\n    add(c.camino, camino.map(function(x){return NODOS[x.clave].corto+': '+x.etiqueta;}).join(' \u00b7 '));\r\n    add(c.calificacion, p.calificacion);\r\n    add(c.prioridad, p.prioridad);\r\n    add(c.origen, 'Landing AFIR');\r\n    add(c.campana, utm.utm_campaign||'norm2027');\r\n    ['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(function(k){add(c[k], utm[k]);});\r\n    camino.forEach(function(x){ add(ZOHO.preguntas[x.clave], x.etiqueta); });\r\n    add(c.transcripcion, transcripcion());\r\n    add(c.idioma, ZOHO.idioma);\r\n    return ZOHO.url+(ZOHO.url.indexOf('?')>-1?'&':'?')+q.join('&');\r\n  }\r\n\r\n  function mostrarGracias(p){\r\n    var g=document.getElementById('gracias');\r\n    g.innerHTML='<span class=\"sello\" style=\"background:var(--verde);color:#fff;\">Received<\/span>'+\r\n      '<h2>Thanks, we\\'ve got it<\/h2>'+\r\n      '<p class=\"justificado\">We\\'ve passed your enquiry to the sales rep for your area, along with the diagnosis you completed, '+\r\n      'so you won\\'t have to repeat it. They\\'ll contact you '+(p.prioridad==='Alta'?'within the next 24 to 48 hours':'shortly')+'.<\/p>'+\r\n      '<ul><li>If you\\'d like to speed things up, email <a href=\"mailto:sales@etecnic.es\">sales@etecnic.es<\/a> and mention your company.<\/li>'+\r\n      '<li>In the meantime, the FAQ section below has the details of each requirement.<\/li><\/ul>';\r\n    g.hidden=false;\r\n    document.getElementById('cajaFormulario').hidden=true;\r\n    document.getElementById('barra').dataset.ver='no';\r\n    encuadrar(g, g);\r\n    window.dataLayer=window.dataLayer||[];\r\n    window.dataLayer.push({event:'lead_afir', resultado:elResultado.dataset.estado, calificacion:p.calificacion});\r\n  }\r\n\r\n  function pintarDepuracion(destino){\r\n    var panel=document.getElementById('panelDepurar');\r\n    var caja=document.getElementById('depurarCuerpo');\r\n    if(!panel||!caja) return;\r\n    var q=new URLSearchParams(destino.split('?')[1]||'');\r\n    var filas='';\r\n    q.forEach(function(v,k){\r\n      filas+='<tr><th>'+k+'<\/th><td>'+(v||'<i>(empty)<\/i>')+'<\/td><\/tr>';\r\n    });\r\n    if(!filas) filas='<tr><td colspan=\"2\"><b>No parameters are being sent.<\/b> That points to an issue in the landing page, not in Zoho.<\/td><\/tr>';\r\n    caja.innerHTML='<div class=\"interior\">'+\r\n      '<p>These are the aliases and values the page is sending. Each <b>alias<\/b> on the left must exist in Zoho Forms under Settings &rarr; Prefill &rarr; Field Alias, written <b>exactly the same way<\/b>.<\/p>'+\r\n      '<table><tr><th>Alias<\/th><th>Value<\/th><\/tr>'+filas+'<\/table>'+\r\n      '<p>Full URL \u2014 paste it into a new tab to check whether the form gets prefilled:<\/p>'+\r\n      '<textarea rows=\"4\" readonly onclick=\"this.select()\">'+destino+'<\/textarea>'+\r\n      '<\/div>';\r\n    panel.hidden=false;\r\n  }\r\n\r\n  var REGLAS={\r\n    nombre:{msj:'Enter your name so we know how to address you.', ok:function(v){return v.trim().length>1;}},\r\n    empresa:{msj:'Which company or organization are you writing from?', ok:function(v){return v.trim().length>1;}},\r\n    email:{msj:'That email address doesn\\'t look complete. Check it has an @ and a domain.',\r\n           ok:function(v){return \/^[^@\\s]+@[^@\\s]+\\.[^@\\s]{2,}$\/.test(v.trim());}}\r\n  };\r\n\r\n  function revisar(campo,silencioso){\r\n    var el=document.getElementById(campo), regla=REGLAS[campo];\r\n    var aviso=document.getElementById('fallo-'+campo);\r\n    var bien=regla.ok(el.value);\r\n    if(bien || (silencioso && !el.value)){\r\n      el.classList.remove('malo'); el.removeAttribute('aria-invalid'); aviso.hidden=true;\r\n    } else {\r\n      el.classList.add('malo'); el.setAttribute('aria-invalid','true');\r\n      aviso.textContent=regla.msj; aviso.hidden=false;\r\n    }\r\n    return bien;\r\n  }\r\n\r\n  Object.keys(REGLAS).forEach(function(campo){\r\n    var el=document.getElementById(campo);\r\n    el.addEventListener('blur',function(){revisar(campo,true);});\r\n    el.addEventListener('input',function(){\r\n      if(el.classList.contains('malo')) revisar(campo,true);\r\n    });\r\n  });\r\n\r\n  document.getElementById('formulario').addEventListener('submit',function(ev){\r\n    ev.preventDefault();\r\n    var f=ev.target, aviso=document.getElementById('recogida'), boton=document.getElementById('botonEnviar');\r\n    aviso.className='recogida'; aviso.textContent='';\r\n\r\n    var valido=true, primerFallo=null;\r\n    Object.keys(REGLAS).forEach(function(campo){\r\n      if(!revisar(campo,false)){ valido=false; if(!primerFallo) primerFallo=campo; }\r\n    });\r\n    if(!valido){ document.getElementById(primerFallo).focus(); return; }\r\n    if(!f.rgpd.checked){\r\n      aviso.className='aviso-error';\r\n      aviso.textContent='Please check the privacy policy box before sending.';\r\n      f.rgpd.focus(); return;\r\n    }\r\n\r\n    var puntos=f.querySelector('input[name=\"puntos\"]:checked');\r\n    var estado=elResultado.dataset.estado;\r\n    var p=PERFILES[estado];\r\n    var envio={\r\n      nombre:f.nombre.value.trim(), empresa:f.empresa.value.trim(), email:f.email.value.trim(),\r\n      telefono:f.telefono.value.trim(), provincia:f.provincia.value.trim(),\r\n      puntos_gestionados:puntos?puntos.value:'', mensaje:f.mensaje.value.trim(),\r\n      diagnostico:respuestas(),\r\n      respuestas_texto:etiquetadas(),\r\n      camino:camino.map(function(x){return NODOS[x.clave].corto+': '+x.etiqueta;}).join(' \u00b7 '),\r\n      transcripcion:transcripcion(),\r\n      resultado:estado, resultado_titulo:document.querySelector('#resultado h3').textContent,\r\n      calificacion:p.calificacion, prioridad:p.prioridad,\r\n      origen:'Landing AFIR', campana:utm.utm_campaign||'norm2027',\r\n      utm_source:utm.utm_source, utm_medium:utm.utm_medium, utm_campaign:utm.utm_campaign,\r\n      utm_content:utm.utm_content, utm_term:utm.utm_term,\r\n      pagina:location.href.split('?')[0], referrer:document.referrer||'',\r\n      consentimiento_rgpd:true,\r\n      consentimiento_texto:'Privacy policy accepted in the AFIR landing page form (English version)',\r\n      consentimiento_fecha:new Date().toISOString()\r\n    };\r\n\r\n    boton.disabled=true; boton.textContent='Sending\u2026';\r\n\r\n    fetch(WEBHOOK,{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify(envio)})\r\n      .then(function(r){ if(!r.ok) throw new Error('HTTP '+r.status); return r; })\r\n      .then(function(){ mostrarGracias(p); })\r\n      .catch(function(){\r\n        boton.disabled=false; boton.textContent=p.cta;\r\n        aviso.className='aviso-error';\r\n        aviso.textContent='We couldn\\'t send it. Try again in a moment, or email sales@etecnic.es and we\\'ll help you all the same.';\r\n        console.warn('[Landing AFIR] fall\u00f3 el env\u00edo. Payload:', envio);\r\n      });\r\n  });\r\n\r\n  window.addEventListener('message',function(ev){\r\n    if(MODO!=='zoho') return;\r\n    if(ev.origin!==ZOHO.origen) return;\r\n    console.log('[Landing AFIR] mensaje de Zoho Forms:', ev.data);\r\n    var d=ev.data, texto=(typeof d==='string')?d:JSON.stringify(d||'');\r\n    if(\/submit|success|thank\/i.test(texto)){\r\n      var estado=elResultado.dataset.estado;\r\n      if(estado && PERFILES[estado]) mostrarGracias(PERFILES[estado]);\r\n    }\r\n  },false);\r\n\r\n  document.getElementById('barraBoton').addEventListener('click',function(){\r\n    var caja=document.getElementById('cajaFormulario');\r\n    encuadrar(caja, caja);\r\n    setTimeout(function(){document.getElementById('nombre').focus({preventScroll:true});},420);\r\n  });\r\n\r\n  (function(){\r\n    var b=document.getElementById('irDiagnostico');\r\n    if(!b) return;\r\n    b.addEventListener('click',function(ev){\r\n      ev.preventDefault();\r\n      encuadrar(document.getElementById('diagnostico'));\r\n    });\r\n  })();\r\n\r\n  (function(){\r\n    var img=document.getElementById('imgTotem'), fig=document.getElementById('figuraTotem');\r\n    if(!img||!fig) return;\r\n    if(!img.getAttribute('src') || img.getAttribute('src').indexOf('PEGA_AQUI')>-1){ fig.hidden=true; return; }\r\n    img.addEventListener('error',function(){fig.hidden=true;});\r\n  })();\r\n\r\n  render();\r\n})();\r\n<\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Does AFIR require you to install a card reader? Yes, if the charge point is publicly accessible and rated at 50 kW or more. Points installed since 13 April 2024 are already required to comply; earlier ones have until 1 January 2027. Below 50 kW, a QR code with a payment gateway is enough. Answer [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-39351","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Does AFIR require you to install a card reader? | Etecnic<\/title>\n<meta name=\"description\" content=\"Public charging stations with a capacity of 50 kW or more: Card payments will be mandatory starting in April 2024, and by January 1, 2027, for stations that were already installed.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Does AFIR require you to install a card reader? | Etecnic\" \/>\n<meta property=\"og:description\" content=\"Public charging stations with a capacity of 50 kW or more: Card payments will be mandatory starting in April 2024, and by January 1, 2027, for stations that were already installed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/\" \/>\n<meta property=\"og:site_name\" content=\"Etecnic\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-16T11:59:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/\",\"url\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/\",\"name\":\"Does AFIR require you to install a card reader? | Etecnic\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/etecnic.es\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/totem-evcharge-sin-fondo-cuadrada-web.png\",\"datePublished\":\"2026-09-16T08:18:00+00:00\",\"dateModified\":\"2026-09-16T11:59:30+00:00\",\"description\":\"Public charging stations with a capacity of 50 kW or more: Card payments will be mandatory starting in April 2024, and by January 1, 2027, for stations that were already installed.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/#primaryimage\",\"url\":\"https:\\\/\\\/etecnic.es\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/totem-evcharge-sin-fondo-cuadrada-web.png\",\"contentUrl\":\"https:\\\/\\\/etecnic.es\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/totem-evcharge-sin-fondo-cuadrada-web.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/afir-landing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Afir landing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/\",\"name\":\"Etecnic\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/#organization\",\"name\":\"Etecnic\",\"url\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/logo-etecnic-blanco.png\",\"contentUrl\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/logo-etecnic-blanco.png\",\"width\":1000,\"height\":500,\"caption\":\"Etecnic\"},\"image\":{\"@id\":\"https:\\\/\\\/etecnic.bisiestodeveloper.es\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Does AFIR require you to install a card reader? | Etecnic","description":"Public charging stations with a capacity of 50 kW or more: Card payments will be mandatory starting in April 2024, and by January 1, 2027, for stations that were already installed.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Does AFIR require you to install a card reader? | Etecnic","og_description":"Public charging stations with a capacity of 50 kW or more: Card payments will be mandatory starting in April 2024, and by January 1, 2027, for stations that were already installed.","og_url":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/","og_site_name":"Etecnic","article_modified_time":"2026-09-16T11:59:30+00:00","og_image":[{"url":"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/","url":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/","name":"Does AFIR require you to install a card reader? | Etecnic","isPartOf":{"@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/#primaryimage"},"image":{"@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/#primaryimage"},"thumbnailUrl":"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png","datePublished":"2026-09-16T08:18:00+00:00","dateModified":"2026-09-16T11:59:30+00:00","description":"Public charging stations with a capacity of 50 kW or more: Card payments will be mandatory starting in April 2024, and by January 1, 2027, for stations that were already installed.","breadcrumb":{"@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/#primaryimage","url":"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png","contentUrl":"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png"},{"@type":"BreadcrumbList","@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/afir-landing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/etecnic.bisiestodeveloper.es\/en\/"},{"@type":"ListItem","position":2,"name":"Afir landing"}]},{"@type":"WebSite","@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/#website","url":"https:\/\/etecnic.bisiestodeveloper.es\/en\/","name":"Etecnic","description":"","publisher":{"@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/etecnic.bisiestodeveloper.es\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/#organization","name":"Etecnic","url":"https:\/\/etecnic.bisiestodeveloper.es\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/#\/schema\/logo\/image\/","url":"https:\/\/etecnic.bisiestodeveloper.es\/wp-content\/uploads\/2025\/06\/logo-etecnic-blanco.png","contentUrl":"https:\/\/etecnic.bisiestodeveloper.es\/wp-content\/uploads\/2025\/06\/logo-etecnic-blanco.png","width":1000,"height":500,"caption":"Etecnic"},"image":{"@id":"https:\/\/etecnic.bisiestodeveloper.es\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/pages\/39351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/comments?post=39351"}],"version-history":[{"count":8,"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/pages\/39351\/revisions"}],"predecessor-version":[{"id":39396,"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/pages\/39351\/revisions\/39396"}],"wp:attachment":[{"href":"https:\/\/etecnic.bisiestodeveloper.es\/en\/wp-json\/wp\/v2\/media?parent=39351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}