{"id":32175,"date":"2026-09-03T10:44:58","date_gmt":"2026-09-03T10:44:58","guid":{"rendered":"https:\/\/etecnic.es\/?page_id=32175"},"modified":"2026-09-07T07:29:13","modified_gmt":"2026-09-07T07:29:13","slug":"afir-lector-targetes-punts-recarrega","status":"publish","type":"page","link":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/","title":{"rendered":"AFIR Landing &#8211; CA"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1331.2px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- ============================================================\n     Landing AFIR de Etecnic \u2014 versio catalana\n     Avada: Fusion Builder > Code Block. Pega ESTE fichero y nada m\u00e1s:\n     el arreglo de ancho y altura va dentro, no hace falta Custom CSS\n     ni a\u00f1adir clases al Container.\n     ============================================================ -->\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Kanit:wght@500;600;700&family=Poppins:wght@300;400;600&display=swap\">\n<style>\n\n\/* ============================================================\n   Libera los contenedores del tema que envuelven esta landing.\n   Va DENTRO del bloque a prop\u00f3sito: as\u00ed no depende de que el CSS\n   personalizado de Avada llegue a la p\u00e1gina ni de purgar cach\u00e9s.\n   :has() localiza al padre; no hay que a\u00f1adir ninguna clase.\n   ============================================================ *\/\n.fusion-fullwidth:has(#afir-landing),\n.fusion-builder-row:has(#afir-landing),\n.fusion-row:has(#afir-landing),\n.fusion-layout-column:has(#afir-landing),\n.fusion-column-wrapper:has(#afir-landing),\n.fusion-builder-row-container-inner:has(#afir-landing),\n.fusion-post-content:has(#afir-landing),\n.post-content:has(#afir-landing),\n.afir-full,\n.afir-full .fusion-row,\n.afir-full .fusion-column-wrapper{\n  height:auto !important;\n  min-height:0 !important;\n  max-height:none !important;\n  overflow:visible !important;\n  max-width:100% !important;\n  width:100% !important;\n  margin-left:0 !important;\n  margin-right:0 !important;\n  padding-left:0 !important;\n  padding-right:0 !important;\n  flex:0 0 auto !important;\n  align-items:flex-start !important;\n}\n#afir-landing{\n  width:100vw !important;\n  max-width:100vw !important;\n  margin-left:calc(50% - 50vw) !important;\n  margin-right:calc(50% - 50vw) !important;\n}\nbody:has(#afir-landing){overflow-x:hidden !important;}\n\n\/* El tema deja su propio relleno arriba y abajo del contenido, y eso abre una\n   franja blanca entre la cabecera y el degradado. Fuera solo en esta pagina. *\/\n#main:has(#afir-landing),\n.fusion-main:has(#afir-landing),\n#content:has(#afir-landing),\n.fusion-fullwidth:has(#afir-landing),\n.fusion-builder-row:has(#afir-landing),\n.fusion-builder-row-container-inner:has(#afir-landing),\n.fusion-row:has(#afir-landing),\n.fusion-layout-column:has(#afir-landing),\n.fusion-column-wrapper:has(#afir-landing),\n.fusion-post-content:has(#afir-landing),\n.post-content:has(#afir-landing),\n.afir-full,\n.afir-full .fusion-row{\n  padding-top:0 !important;\n  padding-bottom:0 !important;\n  margin-top:0 !important;\n  margin-bottom:0 !important;\n}\n\n#afir-landing{box-sizing:border-box;-webkit-text-size-adjust:100%;width:100%;}\n#afir-landing *,#afir-landing *:before,#afir-landing *:after{box-sizing:border-box;}\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;}\n#afir-landing em{font-style:normal;}\n#afir-landing a{text-decoration:none;}\n#afir-landing ul,#afir-landing ol{margin:0;padding:0;list-style:none;}\n#afir-landing img{max-width:100%;height:auto;display:block;}\n#afir-landing figure{margin:0;}\n#afir-landing button{font:inherit;margin:0;border:none;background:none;}\n#afir-landing input,#afir-landing select,#afir-landing textarea{font:inherit;margin:0;}\n#afir-landing details summary::marker{content:\"\";}\n#afir-landing details summary::-webkit-details-marker{display:none;}\n#afir-landing table{border-collapse:collapse;}\n\n#afir-landing{\n  --blanco:#ffffff;\n  --marino:#03176e;\n  --azul:#3c44ee;\n  --cian:#00e9ef;\n  --verde:#00d23b;\n  --amarillo:#f4e41e;\n  --celeste:#24a9f4;\n  --petroleo:#145e87;\n  --tinta:#000000;\n  --gris:#5b6079;\n  --linea:#dfe2ee;\n  --nieve:#f5f6fb;\n  --deg:linear-gradient(96deg,#3c44ee 0%,#24a9f4 32%,#00e9ef 62%,#00d23b 100%);\n  --deg-texto:linear-gradient(96deg,#3c44ee 0%,#1e7fd6 55%,#178ac7 100%);\n  --display:'Kanit','Trebuchet MS',sans-serif;\n  --texto:'Poppins','Helvetica Neue',Arial,sans-serif;\n}\n#afir-landing *{box-sizing:border-box;}\n#afir-landing [hidden]{display:none!important;}\n#afir-landing{margin:0;background:var(--blanco);color:var(--tinta);\n  font-family:var(--texto);font-weight:300;font-size:17px;line-height:1.7;\n  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}\n#afir-landing .envoltorio{max-width:1120px;margin:0 auto;padding:0 28px;}\n#afir-landing h1, #afir-landing h2, #afir-landing h3, #afir-landing h4{font-family:var(--display);font-weight:600;color:var(--marino);\n  margin:0;text-align:left;text-wrap:balance;line-height:1.12;}\n#afir-landing p{margin:0 0 1em 0;}\n#afir-landing .justificado{text-align:justify;hyphens:auto;}\n#afir-landing a{color:var(--azul);}\n#afir-landing :focus-visible{outline:3px solid var(--azul);outline-offset:3px;border-radius:4px;}\n#afir-landing .aviso{background:var(--marino);color:var(--blanco);font-size:14px;}\n#afir-landing .aviso .envoltorio{display:flex;gap:18px;align-items:flex-start;padding:16px 24px;}\n#afir-landing .aviso strong{font-family:var(--display);font-weight:600;}\n#afir-landing .aviso p{margin:0;}\n#afir-landing .aviso button{margin-left:auto;flex:none;background:none;border:1px solid rgba(255,255,255,.45);\n  color:var(--blanco);font-family:var(--texto);font-size:13px;padding:5px 12px;border-radius:40px;cursor:pointer;}\n#afir-landing .aviso button:hover{background:rgba(255,255,255,.12);}\n#afir-landing .portada{position:relative;width:100%;padding:58px 0 clamp(70px,7vw,130px);}\n#afir-landing .portada:before{content:'';position:absolute;top:0;\n  right:calc(50% - 50vw);\n  width:min(640px,52vw);height:min(420px,46vh);\n  pointer-events:none;z-index:0;\n  background:radial-gradient(115% 115% at 100% 0%,\n    rgba(60,68,238,.20) 0%,\n    rgba(36,169,244,.13) 26%,\n    rgba(0,233,239,.06) 48%,\n    rgba(255,255,255,0) 68%);}\n@media (max-width:860px){\n#afir-landing .portada:before{width:78vw;height:250px;}\n}\n#afir-landing .portada .envoltorio{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:0 28px;}\n#afir-landing .portada-rejilla{display:grid;grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr);\n  gap:44px;align-items:end;}\n#afir-landing .portada-imagen{margin:0;display:flex;justify-content:flex-end;align-items:flex-end;}\n#afir-landing .portada-imagen[hidden]{display:none!important;}\n#afir-landing .marco-totem{position:relative;width:100%;max-width:330px;aspect-ratio:4\/5;\n  overflow:hidden;border-radius:22px 22px 0 0;\n  background:linear-gradient(180deg,#eaf1ff 0%,#f2f7ff 55%,#e6edfb 100%);}\n#afir-landing .marco-totem img{position:absolute;left:50%;bottom:-9%;transform:translateX(-50%);\n  width:104%;max-width:none;height:auto;display:block;}\n#afir-landing .marco-totem:after{content:'';position:absolute;left:0;right:0;bottom:0;height:14%;\n  background:linear-gradient(180deg,rgba(230,237,251,0) 0%,rgba(230,237,251,.85) 100%);\n  pointer-events:none;}\n@media (max-width:860px){\n#afir-landing .portada-rejilla{grid-template-columns:1fr;gap:30px;}\n#afir-landing .portada-imagen{justify-content:center;}\n#afir-landing .marco-totem{max-width:230px;border-radius:18px 18px 0 0;}\n}\n#afir-landing .arranque{margin-top:30px;}\n#afir-landing .boton-arranque{display:inline-flex;align-items:center;gap:10px;\n  font-family:var(--display);font-weight:600;font-size:17px;color:var(--blanco);\n  background:var(--marino);border-radius:40px;padding:16px 32px;text-decoration:none;\n  transition:background .2s,transform .18s,box-shadow .18s;min-height:54px;}\n#afir-landing .boton-arranque:hover{background:var(--azul);transform:translateY(-2px);\n  box-shadow:0 10px 26px rgba(60,68,238,.28);color:var(--blanco);text-decoration:none;}\n#afir-landing .boton-arranque span{transition:transform .3s;}\n#afir-landing .boton-arranque:hover span{transform:translateY(3px);}\n#afir-landing .condiciones{margin:12px 0 0;font-size:14px;color:var(--gris);}\n#afir-landing .portada h1{font-size:clamp(31px,6vw,70px);font-weight:700;margin:0;max-width:15em;letter-spacing:-.015em;}\n#afir-landing .portada h1 em{font-style:normal;background:var(--deg-texto);-webkit-background-clip:text;background-clip:text;color:transparent;}\n#afir-landing .entradilla{font-size:clamp(17px,1.6vw,20px);color:var(--tinta);max-width:33em;margin-top:20px;}\n#afir-landing .entradilla strong{color:var(--marino);font-weight:600;}\n#afir-landing .entradilla-2{font-size:16px;color:var(--gris);max-width:33em;margin-top:14px;}\n#afir-landing .fechas{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0;\n  margin-top:40px;border-top:1px solid var(--linea);}\n#afir-landing .fechas div{padding:20px 24px 20px 0;border-right:1px solid var(--linea);}\n#afir-landing .fechas div:last-child{border-right:none;padding-right:0;}\n#afir-landing .fechas b{display:block;font-family:var(--display);font-weight:600;font-size:clamp(22px,2.2vw,26px);color:var(--marino);}\n#afir-landing .fechas small{display:block;font-size:14px;color:var(--gris);line-height:1.5;margin-top:4px;}\n#afir-landing .seccion{padding:52px 0;}\n#afir-landing .rotulo{font-family:var(--display);font-weight:500;font-size:15px;color:var(--petroleo);margin-bottom:10px;}\n#afir-landing .seccion h2{font-size:clamp(28px,3.6vw,40px);}\n#afir-landing .seccion h2 + p{color:var(--gris);max-width:36em;margin-top:14px;}\n#afir-landing .arbol{margin-top:40px;}\n#afir-landing .arbol .via, #afir-landing .arbol .rastro, #afir-landing .arbol #pregunta{max-width:780px;}\n#afir-landing .desenlace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);\n  gap:26px;align-items:start;margin-top:34px;}\n#afir-landing .desenlace .columna-veredicto{position:sticky;top:24px;}\n#afir-landing .desenlace .resultado{margin-top:0;}\n#afir-landing .desenlace .formulario{padding:28px;}\n#afir-landing .desenlace .campos{gap:15px;}\n#afir-landing .desenlace .formulario h2{font-size:clamp(22px,2.2vw,28px);}\n#afir-landing .desenlace .formulario .justificado{font-size:15.5px;text-align:left;}\n#afir-landing .desenlace .recap{margin-top:18px;padding:14px 16px;}\n@media (max-width:940px){\n#afir-landing .desenlace{grid-template-columns:1fr;}\n#afir-landing .desenlace .columna-veredicto{position:static;}\n#afir-landing .desenlace .resultado{padding:24px;}\n#afir-landing .desenlace .resultado h3{font-size:21px;}\n#afir-landing .desenlace .resultado li{font-size:15px;}\n}\n#afir-landing .barra{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;\n  background:var(--marino);padding:12px 16px;box-shadow:0 -6px 24px rgba(3,23,110,.22);}\n#afir-landing .barra button{width:100%;font-family:var(--display);font-weight:600;font-size:16px;\n  color:var(--marino);background:var(--amarillo);border:none;border-radius:40px;padding:14px;cursor:pointer;}\n#afir-landing .barra[data-ver=\"si\"]{display:block;}\n@media (min-width:941px){\n#afir-landing .barra{display:none!important;}\n}\n#afir-landing .via{display:flex;align-items:center;gap:8px;margin-bottom:26px;}\n#afir-landing .via span{height:5px;flex:1 1 auto;border-radius:5px;background:var(--linea);transition:background .4s;}\n#afir-landing .via span.hecho{background:var(--deg);}\n#afir-landing .via span.aqui{background:var(--azul);}\n#afir-landing .via em{font-family:var(--display);font-weight:500;font-style:normal;font-size:14px;\n  color:var(--petroleo);flex:none;padding-left:6px;}\n#afir-landing .rastro{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}\n#afir-landing .rastro button{font-family:var(--texto);font-weight:400;font-size:13.5px;color:var(--marino);\n  background:var(--nieve);border:1px solid var(--linea);border-radius:40px;padding:6px 14px;\n  cursor:pointer;display:inline-flex;gap:7px;align-items:center;transition:all .2s;}\n#afir-landing .rastro button:hover{border-color:var(--azul);color:var(--azul);background:var(--blanco);}\n#afir-landing .rastro button b{font-weight:600;}\n#afir-landing .rastro button i{font-style:normal;color:var(--gris);font-size:12px;}\n#afir-landing .tarjeta{border:1px solid var(--linea);border-radius:20px;padding:36px 36px 30px;\n  background:var(--blanco);box-shadow:0 12px 44px rgba(3,23,110,.08);}\n#afir-landing .tarjeta.entra{animation:aparece .34s cubic-bezier(.2,.7,.3,1) both;}\n@keyframes aparece{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}\n#afir-landing .tarjeta h3{font-size:clamp(22px,2.6vw,28px);}\n#afir-landing .tarjeta .matiz{font-size:16px;color:var(--gris);margin:12px 0 0;max-width:44em;}\n#afir-landing .opciones{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}\n#afir-landing .opciones button{font-family:var(--texto);font-weight:400;font-size:16px;padding:15px 22px 15px 24px;\n  border-radius:14px;border:1.5px solid var(--linea);background:var(--blanco);color:var(--marino);\n  cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s;text-align:left;\n  display:inline-flex;align-items:center;gap:14px;min-height:54px;}\n#afir-landing .opciones button:after{content:'\u2192';color:var(--azul);opacity:.35;transition:opacity .18s,transform .18s;}\n#afir-landing .opciones button:hover{border-color:var(--azul);\n  box-shadow:0 6px 20px rgba(60,68,238,.13);transform:translateY(-2px);}\n#afir-landing .opciones button:hover:after{opacity:1;transform:translateX(3px);}\n#afir-landing .opciones button:active{transform:translateY(0);}\n#afir-landing .atras{margin-top:24px;background:none;border:none;padding:0;cursor:pointer;\n  font-family:var(--texto);font-weight:400;font-size:15px;color:var(--gris);}\n#afir-landing .atras:hover{color:var(--azul);}\n#afir-landing .atras[hidden]{display:none;}\n#afir-landing .reiniciar{background:none;border:none;padding:0;cursor:pointer;font-family:var(--texto);\n  font-size:15px;color:var(--gris);text-decoration:underline;margin-top:22px;}\n#afir-landing .reiniciar:hover{color:var(--azul);}\n#afir-landing .resultado{margin-top:34px;border-radius:20px;padding:32px 32px 30px;background:var(--nieve);\n  border:1px solid var(--linea);}\n#afir-landing .resultado[data-estado=\"incumple\"]{background:var(--marino);border-color:var(--marino);}\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);}\n#afir-landing .resultado[data-estado=\"incumple\"] .sello{background:var(--amarillo);color:var(--marino);}\n#afir-landing .resultado[data-estado=\"plazo\"]{background:#fffdf0;border-color:var(--amarillo);}\n#afir-landing .resultado[data-estado=\"plazo\"] .sello{background:var(--amarillo);color:var(--marino);}\n#afir-landing .resultado[data-estado=\"confirmar\"]{background:#f3f8fb;border-color:var(--petroleo);}\n#afir-landing .resultado[data-estado=\"confirmar\"] .sello{background:var(--petroleo);color:var(--blanco);}\n#afir-landing .resultado[data-estado=\"cumple\"]{background:#f2fff6;border-color:var(--verde);}\n#afir-landing .resultado[data-estado=\"cumple\"] .sello{background:var(--verde);color:var(--blanco);}\n#afir-landing .resultado[data-estado=\"fuera\"] .sello{background:var(--petroleo);color:var(--blanco);}\n#afir-landing .sello{display:inline-block;font-family:var(--display);font-weight:600;font-size:14px;\n  padding:5px 14px;border-radius:40px;background:var(--celeste);color:var(--blanco);margin-bottom:14px;}\n#afir-landing .resultado h3{font-size:clamp(21px,2vw,26px);margin-bottom:12px;}\n#afir-landing .resultado ul{margin:16px 0 0;padding-left:4px;list-style:none;}\n#afir-landing .resultado li{margin-bottom:12px;padding-left:22px;position:relative;font-size:15.5px;line-height:1.65;}\n#afir-landing .resultado li:before{content:'';position:absolute;left:0;top:.62em;width:8px;height:8px;\n  border-radius:50%;background:currentColor;opacity:.4;}\n#afir-landing .resultado li:last-child{margin-bottom:0;}\n#afir-landing .formulario{border-radius:20px;border:1px solid var(--linea);padding:34px;background:var(--blanco);\n  box-shadow:0 12px 44px rgba(3,23,110,.08);}\n#afir-landing .campos{display:flex;flex-direction:column;gap:16px;margin-top:22px;}\n#afir-landing label{display:block;font-family:var(--texto);font-weight:600;font-size:14px;color:var(--marino);margin-bottom:6px;}\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);\n  font-weight:300;font-size:16px;padding:13px 15px;border:1.5px solid var(--linea);border-radius:11px;\n  background:var(--blanco);color:var(--tinta);transition:border-color .18s,box-shadow .18s;}\n#afir-landing input:focus, #afir-landing select:focus, #afir-landing textarea:focus{border-color:var(--azul);outline:none;\n  box-shadow:0 0 0 3px rgba(60,68,238,.13);}\n#afir-landing input::placeholder, #afir-landing textarea::placeholder{color:#a6abc2;}\n#afir-landing .ancho{grid-column:1\/-1;}\n#afir-landing .consentimiento{display:flex;gap:12px;align-items:flex-start;margin-top:22px;font-size:14px;color:var(--gris);}\n#afir-landing .consentimiento input{margin-top:4px;width:18px;height:18px;flex:none;accent-color:var(--azul);}\n#afir-landing .enviar{margin-top:26px;font-family:var(--display);font-weight:600;font-size:17px;color:var(--blanco);\n  background:var(--marino);border:none;border-radius:40px;padding:16px 34px;cursor:pointer;\n  transition:background .2s,transform .18s,box-shadow .18s;min-height:54px;}\n#afir-landing .enviar:hover{background:var(--azul);transform:translateY(-2px);box-shadow:0 8px 22px rgba(60,68,238,.28);}\n#afir-landing .enviar:active{transform:translateY(0);}\n#afir-landing .recogida{font-size:13px;color:var(--gris);margin-top:16px;}\n#afir-landing .recap{margin-top:22px;padding:18px 20px;background:var(--nieve);border-radius:14px;\n  border:1px solid var(--linea);}\n#afir-landing .recap p{margin:0 0 10px;font-size:14px;color:var(--gris);}\n#afir-landing .recap .fichas{display:flex;flex-wrap:wrap;gap:8px;}\n#afir-landing .recap .fichas span{font-size:13px;background:var(--blanco);border:1px solid var(--linea);\n  border-radius:40px;padding:5px 12px;color:var(--marino);}\n#afir-landing .recap .fichas span b{font-weight:600;}\n#afir-landing .enviar[disabled]{opacity:.55;cursor:progress;}\n#afir-landing .gracias{text-align:left;}\n#afir-landing .gracias .sello{margin-bottom:16px;}\n#afir-landing .gracias h2{margin-bottom:14px;}\n#afir-landing .gracias ul{margin:16px 0 0;padding-left:20px;color:var(--gris);font-size:15px;}\n#afir-landing .gracias li{margin-bottom:8px;}\n#afir-landing .aviso-error{margin-top:16px;padding:14px 16px;border-radius:12px;background:#fffdf0;\n  border:1px solid var(--amarillo);font-size:14px;color:var(--marino);}\n#afir-landing .opcional{font-weight:400;font-size:12px;color:var(--gris);background:var(--nieve);\n  border:1px solid var(--linea);border-radius:30px;padding:2px 8px;margin-left:6px;\n  text-transform:none;letter-spacing:0;}\n#afir-landing .pista{margin:6px 0 0;font-size:13px;color:var(--gris);}\n#afir-landing .fallo{margin:6px 0 0;font-size:13px;color:#a3122b;font-weight:400;}\n#afir-landing input.malo, #afir-landing textarea.malo{border-color:#a3122b;box-shadow:0 0 0 3px rgba(163,18,43,.10);}\n#afir-landing .extras{border:1px solid var(--linea);border-radius:14px;margin-top:16px;background:var(--nieve);}\n#afir-landing .extras summary{font-family:var(--texto);font-weight:600;font-size:14.5px;color:var(--marino);\n  padding:14px 18px;}\n#afir-landing .extras summary:after{content:'+';right:16px;font-size:20px;}\n#afir-landing .extras[open] summary:after{content:'\u2013';}\n#afir-landing .extras-cuerpo{display:flex;flex-direction:column;gap:16px;padding:2px 18px 20px;}\n#afir-landing .etiqueta-grupo{display:block;font-family:var(--texto);font-weight:600;font-size:14px;\n  color:var(--marino);margin-bottom:8px;}\n#afir-landing .radios{display:flex;flex-wrap:wrap;gap:8px;}\n#afir-landing .radios label{display:inline-flex;align-items:center;margin:0;font-weight:300;font-size:14.5px;\n  color:var(--marino);border:1.5px solid var(--linea);border-radius:40px;padding:8px 15px;\n  background:var(--blanco);cursor:pointer;transition:border-color .18s,background .18s;}\n#afir-landing .radios label:hover{border-color:var(--azul);}\n#afir-landing .radios input{position:absolute;opacity:0;width:0;height:0;}\n#afir-landing .radios input:checked + span{font-weight:600;}\n#afir-landing .radios label:has(input:checked){border-color:var(--marino);background:var(--marino);color:var(--blanco);}\n#afir-landing .radios input:focus-visible + span{outline:3px solid var(--azul);outline-offset:4px;border-radius:3px;}\n#afir-landing .confianza{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:7px;}\n#afir-landing .confianza li{position:relative;padding-left:24px;font-size:13.5px;color:var(--gris);line-height:1.5;}\n#afir-landing .confianza li:before{content:'';position:absolute;left:4px;top:.45em;width:9px;height:5px;\n  border-left:2px solid var(--verde);border-bottom:2px solid var(--verde);\n  transform:rotate(-45deg);}\n#afir-landing .depurar{margin-top:18px;border:1px dashed var(--celeste);border-radius:12px;background:#f3fbff;}\n#afir-landing .depurar summary{font-family:var(--texto);font-weight:600;font-size:13.5px;color:var(--petroleo);\n  padding:12px 16px;min-height:0;}\n#afir-landing .depurar summary:after{right:14px;font-size:18px;}\n#afir-landing .depurar .interior{padding:0 16px 16px;}\n#afir-landing .depurar table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:12px;}\n#afir-landing .depurar th, #afir-landing .depurar td{text-align:left;padding:5px 8px;border-bottom:1px solid #d7ecf7;\n  vertical-align:top;word-break:break-word;}\n#afir-landing .depurar th{font-weight:600;color:var(--marino);width:34%;}\n#afir-landing .depurar textarea{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;\n  border:1px solid #cfe6f4;border-radius:8px;padding:10px;background:var(--blanco);}\n#afir-landing .depurar p{font-size:12.5px;color:var(--gris);margin:0 0 10px;}\n#afir-landing .faqs{margin-top:34px;border-top:1px solid var(--linea);}\n#afir-landing details{border-bottom:1px solid var(--linea);}\n#afir-landing summary{padding:22px 48px 22px 0;cursor:pointer;list-style:none;position:relative;\n  transition:color .18s;}\n#afir-landing summary h3{font-family:var(--display);font-weight:500;font-size:clamp(16.5px,1.6vw,19px);\n  color:inherit;margin:0;display:inline;}\n#afir-landing .faqs summary{color:var(--marino);}\n#afir-landing summary:hover{color:var(--azul);}\n#afir-landing summary::-webkit-details-marker{display:none;}\n#afir-landing summary:after{content:'+';position:absolute;right:6px;top:50%;transform:translateY(-50%);\n  font-size:26px;font-weight:400;color:var(--azul);line-height:1;}\n#afir-landing details[open] summary:after{content:'\u2013';}\n#afir-landing details[open] summary{color:var(--azul);}\n#afir-landing details .cuerpo{padding:0 0 22px;max-width:62em;}\n#afir-landing details .cuerpo p:last-child{margin-bottom:0;}\n#afir-landing .cierre{border-top:1px solid var(--linea);margin-top:14px;padding:34px 0 10px;}\n#afir-landing .cierre .cols{display:grid;grid-template-columns:1.35fr 1fr;gap:44px;}\n#afir-landing .cierre h4{font-family:var(--display);font-weight:600;font-size:15px;color:var(--marino);\n  margin-bottom:10px;}\n#afir-landing .cierre p{font-size:13.5px;line-height:1.65;color:var(--gris);margin:0 0 9px;}\n#afir-landing .cierre p:last-child{margin-bottom:0;}\n#afir-landing .cierre a{color:var(--azul);}\n@media (max-width:940px){\n#afir-landing .desenlace{grid-template-columns:1fr;}\n#afir-landing .desenlace .columna-veredicto{position:static;}\n#afir-landing .desenlace .resultado{padding:24px;}\n#afir-landing .desenlace .resultado h3{font-size:21px;}\n#afir-landing .desenlace .resultado li{font-size:15px;}\n}\n#afir-landing .barra{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;\n  background:var(--marino);padding:12px 16px;box-shadow:0 -6px 24px rgba(3,23,110,.22);}\n#afir-landing .barra button{width:100%;font-family:var(--display);font-weight:600;font-size:16px;\n  color:var(--marino);background:var(--amarillo);border:none;border-radius:40px;padding:14px;cursor:pointer;}\n#afir-landing .barra[data-ver=\"si\"]{display:block;}\n@media (min-width:941px){\n#afir-landing .barra{display:none!important;}\n}\n#afir-landing .via{display:flex;align-items:center;gap:8px;margin-bottom:26px;}\n#afir-landing .via span{height:5px;flex:1 1 auto;border-radius:5px;background:var(--linea);transition:background .4s;}\n#afir-landing .via span.hecho{background:var(--deg);}\n#afir-landing .via span.aqui{background:var(--azul);}\n#afir-landing .via em{font-family:var(--display);font-weight:500;font-style:normal;font-size:14px;\n  color:var(--petroleo);flex:none;padding-left:6px;}\n#afir-landing .rastro{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}\n#afir-landing .rastro button{font-family:var(--texto);font-weight:400;font-size:13.5px;color:var(--marino);\n  background:var(--nieve);border:1px solid var(--linea);border-radius:40px;padding:6px 14px;\n  cursor:pointer;display:inline-flex;gap:7px;align-items:center;transition:all .2s;}\n#afir-landing .rastro button:hover{border-color:var(--azul);color:var(--azul);background:var(--blanco);}\n#afir-landing .rastro button b{font-weight:600;}\n#afir-landing .rastro button i{font-style:normal;color:var(--gris);font-size:12px;}\n#afir-landing .tarjeta{border:1px solid var(--linea);border-radius:20px;padding:36px 36px 30px;\n  background:var(--blanco);box-shadow:0 12px 44px rgba(3,23,110,.08);}\n#afir-landing .tarjeta.entra{animation:aparece .34s cubic-bezier(.2,.7,.3,1) both;}\n@keyframes aparece{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}\n#afir-landing .tarjeta h3{font-size:clamp(22px,2.6vw,28px);}\n#afir-landing .tarjeta .matiz{font-size:16px;color:var(--gris);margin:12px 0 0;max-width:44em;}\n#afir-landing .opciones{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}\n#afir-landing .opciones button{font-family:var(--texto);font-weight:400;font-size:16px;padding:15px 22px 15px 24px;\n  border-radius:14px;border:1.5px solid var(--linea);background:var(--blanco);color:var(--marino);\n  cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s;text-align:left;\n  display:inline-flex;align-items:center;gap:14px;min-height:54px;}\n#afir-landing .opciones button:after{content:'\u2192';color:var(--azul);opacity:.35;transition:opacity .18s,transform .18s;}\n#afir-landing .opciones button:hover{border-color:var(--azul);\n  box-shadow:0 6px 20px rgba(60,68,238,.13);transform:translateY(-2px);}\n#afir-landing .opciones button:hover:after{opacity:1;transform:translateX(3px);}\n#afir-landing .opciones button:active{transform:translateY(0);}\n#afir-landing .atras{margin-top:24px;background:none;border:none;padding:0;cursor:pointer;\n  font-family:var(--texto);font-weight:400;font-size:15px;color:var(--gris);}\n#afir-landing .atras:hover{color:var(--azul);}\n#afir-landing .atras[hidden]{display:none;}\n#afir-landing .reiniciar{background:none;border:none;padding:0;cursor:pointer;font-family:var(--texto);\n  font-size:15px;color:var(--gris);text-decoration:underline;margin-top:22px;}\n#afir-landing .reiniciar:hover{color:var(--azul);}\n#afir-landing .resultado{margin-top:34px;border-radius:20px;padding:32px 32px 30px;background:var(--nieve);\n  border:1px solid var(--linea);}\n#afir-landing .resultado[data-estado=\"incumple\"]{background:var(--marino);border-color:var(--marino);}\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);}\n#afir-landing .resultado[data-estado=\"incumple\"] .sello{background:var(--amarillo);color:var(--marino);}\n#afir-landing .resultado[data-estado=\"plazo\"]{background:#fffdf0;border-color:var(--amarillo);}\n#afir-landing .resultado[data-estado=\"plazo\"] .sello{background:var(--amarillo);color:var(--marino);}\n#afir-landing .resultado[data-estado=\"confirmar\"]{background:#f3f8fb;border-color:var(--petroleo);}\n#afir-landing .resultado[data-estado=\"confirmar\"] .sello{background:var(--petroleo);color:var(--blanco);}\n#afir-landing .resultado[data-estado=\"cumple\"]{background:#f2fff6;border-color:var(--verde);}\n#afir-landing .resultado[data-estado=\"cumple\"] .sello{background:var(--verde);color:var(--blanco);}\n#afir-landing .resultado[data-estado=\"fuera\"] .sello{background:var(--petroleo);color:var(--blanco);}\n#afir-landing .sello{display:inline-block;font-family:var(--display);font-weight:600;font-size:14px;\n  padding:5px 14px;border-radius:40px;background:var(--celeste);color:var(--blanco);margin-bottom:14px;}\n#afir-landing .resultado h3{font-size:clamp(21px,2vw,26px);margin-bottom:12px;}\n#afir-landing .resultado ul{margin:16px 0 0;padding-left:4px;list-style:none;}\n#afir-landing .resultado li{margin-bottom:12px;padding-left:22px;position:relative;font-size:15.5px;line-height:1.65;}\n#afir-landing .resultado li:before{content:'';position:absolute;left:0;top:.62em;width:8px;height:8px;\n  border-radius:50%;background:currentColor;opacity:.4;}\n#afir-landing .resultado li:last-child{margin-bottom:0;}\n#afir-landing .formulario{border-radius:20px;border:1px solid var(--linea);padding:34px;background:var(--blanco);\n  box-shadow:0 12px 44px rgba(3,23,110,.08);}\n#afir-landing .campos{display:flex;flex-direction:column;gap:16px;margin-top:22px;}\n#afir-landing label{display:block;font-family:var(--texto);font-weight:600;font-size:14px;color:var(--marino);margin-bottom:6px;}\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);\n  font-weight:300;font-size:16px;padding:13px 15px;border:1.5px solid var(--linea);border-radius:11px;\n  background:var(--blanco);color:var(--tinta);transition:border-color .18s,box-shadow .18s;}\n#afir-landing input:focus, #afir-landing select:focus, #afir-landing textarea:focus{border-color:var(--azul);outline:none;\n  box-shadow:0 0 0 3px rgba(60,68,238,.13);}\n#afir-landing input::placeholder, #afir-landing textarea::placeholder{color:#a6abc2;}\n#afir-landing .ancho{grid-column:1\/-1;}\n#afir-landing .consentimiento{display:flex;gap:12px;align-items:flex-start;margin-top:22px;font-size:14px;color:var(--gris);}\n#afir-landing .consentimiento input{margin-top:4px;width:18px;height:18px;flex:none;accent-color:var(--azul);}\n#afir-landing .enviar{margin-top:26px;font-family:var(--display);font-weight:600;font-size:17px;color:var(--blanco);\n  background:var(--marino);border:none;border-radius:40px;padding:16px 34px;cursor:pointer;\n  transition:background .2s,transform .18s,box-shadow .18s;min-height:54px;}\n#afir-landing .enviar:hover{background:var(--azul);transform:translateY(-2px);box-shadow:0 8px 22px rgba(60,68,238,.28);}\n#afir-landing .enviar:active{transform:translateY(0);}\n#afir-landing .recogida{font-size:13px;color:var(--gris);margin-top:16px;}\n#afir-landing .recap{margin-top:22px;padding:18px 20px;background:var(--nieve);border-radius:14px;\n  border:1px solid var(--linea);}\n#afir-landing .recap p{margin:0 0 10px;font-size:14px;color:var(--gris);}\n#afir-landing .recap .fichas{display:flex;flex-wrap:wrap;gap:8px;}\n#afir-landing .recap .fichas span{font-size:13px;background:var(--blanco);border:1px solid var(--linea);\n  border-radius:40px;padding:5px 12px;color:var(--marino);}\n#afir-landing .recap .fichas span b{font-weight:600;}\n#afir-landing .enviar[disabled]{opacity:.55;cursor:progress;}\n#afir-landing .gracias{text-align:left;}\n#afir-landing .gracias .sello{margin-bottom:16px;}\n#afir-landing .gracias h2{margin-bottom:14px;}\n#afir-landing .gracias ul{margin:16px 0 0;padding-left:20px;color:var(--gris);font-size:15px;}\n#afir-landing .gracias li{margin-bottom:8px;}\n#afir-landing .aviso-error{margin-top:16px;padding:14px 16px;border-radius:12px;background:#fffdf0;\n  border:1px solid var(--amarillo);font-size:14px;color:var(--marino);}\n#afir-landing .opcional{font-weight:400;font-size:12px;color:var(--gris);background:var(--nieve);\n  border:1px solid var(--linea);border-radius:30px;padding:2px 8px;margin-left:6px;\n  text-transform:none;letter-spacing:0;}\n#afir-landing .pista{margin:6px 0 0;font-size:13px;color:var(--gris);}\n#afir-landing .fallo{margin:6px 0 0;font-size:13px;color:#a3122b;font-weight:400;}\n#afir-landing input.malo, #afir-landing textarea.malo{border-color:#a3122b;box-shadow:0 0 0 3px rgba(163,18,43,.10);}\n#afir-landing .extras{border:1px solid var(--linea);border-radius:14px;margin-top:16px;background:var(--nieve);}\n#afir-landing .extras summary{font-family:var(--texto);font-weight:600;font-size:14.5px;color:var(--marino);\n  padding:14px 18px;}\n#afir-landing .extras summary:after{content:'+';right:16px;font-size:20px;}\n#afir-landing .extras[open] summary:after{content:'\u2013';}\n#afir-landing .extras-cuerpo{display:flex;flex-direction:column;gap:16px;padding:2px 18px 20px;}\n#afir-landing .etiqueta-grupo{display:block;font-family:var(--texto);font-weight:600;font-size:14px;\n  color:var(--marino);margin-bottom:8px;}\n#afir-landing .radios{display:flex;flex-wrap:wrap;gap:8px;}\n#afir-landing .radios label{display:inline-flex;align-items:center;margin:0;font-weight:300;font-size:14.5px;\n  color:var(--marino);border:1.5px solid var(--linea);border-radius:40px;padding:8px 15px;\n  background:var(--blanco);cursor:pointer;transition:border-color .18s,background .18s;}\n#afir-landing .radios label:hover{border-color:var(--azul);}\n#afir-landing .radios input{position:absolute;opacity:0;width:0;height:0;}\n#afir-landing .radios input:checked + span{font-weight:600;}\n#afir-landing .radios label:has(input:checked){border-color:var(--marino);background:var(--marino);color:var(--blanco);}\n#afir-landing .radios input:focus-visible + span{outline:3px solid var(--azul);outline-offset:4px;border-radius:3px;}\n#afir-landing .confianza{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:7px;}\n#afir-landing .confianza li{position:relative;padding-left:24px;font-size:13.5px;color:var(--gris);line-height:1.5;}\n#afir-landing .confianza li:before{content:'';position:absolute;left:4px;top:.45em;width:9px;height:5px;\n  border-left:2px solid var(--verde);border-bottom:2px solid var(--verde);\n  transform:rotate(-45deg);}\n#afir-landing .depurar{margin-top:18px;border:1px dashed var(--celeste);border-radius:12px;background:#f3fbff;}\n#afir-landing .depurar summary{font-family:var(--texto);font-weight:600;font-size:13.5px;color:var(--petroleo);\n  padding:12px 16px;min-height:0;}\n#afir-landing .depurar summary:after{right:14px;font-size:18px;}\n#afir-landing .depurar .interior{padding:0 16px 16px;}\n#afir-landing .depurar table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:12px;}\n#afir-landing .depurar th, #afir-landing .depurar td{text-align:left;padding:5px 8px;border-bottom:1px solid #d7ecf7;\n  vertical-align:top;word-break:break-word;}\n#afir-landing .depurar th{font-weight:600;color:var(--marino);width:34%;}\n#afir-landing .depurar textarea{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;\n  border:1px solid #cfe6f4;border-radius:8px;padding:10px;background:var(--blanco);}\n#afir-landing .depurar p{font-size:12.5px;color:var(--gris);margin:0 0 10px;}\n#afir-landing .faqs{margin-top:34px;border-top:1px solid var(--linea);}\n#afir-landing details{border-bottom:1px solid var(--linea);}\n#afir-landing summary{padding:22px 48px 22px 0;cursor:pointer;list-style:none;position:relative;\n  transition:color .18s;}\n#afir-landing summary h3{font-family:var(--display);font-weight:500;font-size:clamp(16.5px,1.6vw,19px);\n  color:inherit;margin:0;display:inline;}\n#afir-landing .faqs summary{color:var(--marino);}\n#afir-landing summary:hover{color:var(--azul);}\n#afir-landing summary::-webkit-details-marker{display:none;}\n#afir-landing summary:after{content:'+';position:absolute;right:6px;top:50%;transform:translateY(-50%);\n  font-size:26px;font-weight:400;color:var(--azul);line-height:1;}\n#afir-landing details[open] summary:after{content:'\u2013';}\n#afir-landing details[open] summary{color:var(--azul);}\n#afir-landing details .cuerpo{padding:0 0 22px;max-width:62em;}\n#afir-landing details .cuerpo p:last-child{margin-bottom:0;}\n#afir-landing .pie{background:var(--marino);color:#c9cfe8;padding:46px 0 40px;margin-top:60px;font-size:14px;}\n#afir-landing .pie h4{color:var(--blanco);font-size:17px;margin-bottom:12px;}\n#afir-landing .pie a{color:var(--cian);}\n#afir-landing .pie .cols{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;}\n@media (max-width:940px){\n#afir-landing .envoltorio{padding:0 20px;}\n#afir-landing .portada{padding:40px 0 34px;}\n#afir-landing .seccion{padding:46px 0;}\n#afir-landing .justificado{text-align:left;}\n#afir-landing .opciones{flex-direction:column;gap:10px;}\n#afir-landing .opciones button{width:100%;justify-content:space-between;}\n#afir-landing .tarjeta{padding:26px 22px 24px;border-radius:18px;}\n#afir-landing .desenlace .formulario{padding:24px 22px;}\n#afir-landing .fechas div{border-right:none;border-bottom:1px solid var(--linea);padding:16px 0;}\n#afir-landing .fechas div:last-child{border-bottom:none;}\n#afir-landing .via em{font-size:13px;}\n#afir-landing .barra ~ .seccion:last-of-type{padding-bottom:96px;}\n}\n@media (max-width:560px){\n#afir-landing{font-size:16px;}\n#afir-landing .aviso .envoltorio{flex-direction:column;gap:12px;}\n#afir-landing .aviso button{margin-left:0;}\n#afir-landing .rastro button{font-size:12.5px;padding:5px 11px;}\n#afir-landing .via{gap:5px;margin-bottom:20px;}\n#afir-landing .resultado{padding:24px 20px;}\n#afir-landing .enviar{width:100%;}\n#afir-landing .cierre .cols{grid-template-columns:1fr;gap:24px;}\n}\n@media (prefers-reduced-motion:reduce){\n#afir-landing *{transition:none!important;animation:none!important;}\n}\n\n\/* ============================================================\n   ANCHURA. El bloque ocupa 100vw, pero su contenido se quedaba\n   topado en 1120px y en pantallas grandes dejaba mucho blanco a\n   los lados, estrujando la columna de texto y partiendo el\n   titular en cuatro lineas. Va al final para ganar por orden.\n   ============================================================ *\/\n#afir-landing .envoltorio{max-width:1280px;padding:0 clamp(20px,3vw,44px);}\n#afir-landing .portada .envoltorio{max-width:1280px;padding:0 clamp(22px,3vw,44px);}\n#afir-landing .portada-rejilla{grid-template-columns:minmax(0,1.34fr) minmax(0,.66fr);gap:52px;}\n\/* el velo de marca acompana a la ventana, no al contenedor *\/\n#afir-landing .portada:before{width:min(760px,54vw);height:min(460px,48vh);}\n\/* hay que repetir el movil DESPUES del override, o la regla de arriba\n   ganaria tambien en pantalla pequena y dejaria dos columnas *\/\n@media (max-width:860px){\n  #afir-landing .portada-rejilla{grid-template-columns:1fr;gap:30px;}\n  #afir-landing .portada:before{width:78vw;height:250px;}\n}\n@media (max-width:940px){\n  #afir-landing .envoltorio{padding:0 20px;}\n}\n\n\/* ---- cabecera fija del tema: sin margen de scroll, al encuadrar una seccion\n   la cabecera se come la parte de arriba y el resultado se ve cortado ---- *\/\n#afir-landing #diagnostico,\n#afir-landing .desenlace,\n#afir-landing #cajaFormulario,\n#afir-landing #faqs{scroll-margin-top:0;}\n@media (max-width:940px){\n  #afir-landing #diagnostico,\n  #afir-landing .desenlace,\n  #afir-landing #cajaFormulario,\n  #afir-landing #faqs{scroll-margin-top:0;}\n}\n\/* la etiqueta iba pegada al ultimo tramo de la barra *\/\n#afir-landing .via{gap:10px;}\n#afir-landing .via em{padding-left:12px;}\n<\/style>\n\n<div id=\"afir-landing\">\n<header class=\"portada\">\n  <div class=\"envoltorio\">\n    <div class=\"portada-rejilla\">\n      <div class=\"portada-texto\">\n    <h1>T'obliga l'<em>AFIR<\/em> a posar un lector de targetes?<\/h1>\n    <p class=\"entradilla\"><strong>S\u00ed, si el punt \u00e9s d'acc\u00e9s p\u00fablic i t\u00e9 50 kW o m\u00e9s.<\/strong> Els instal\u00b7lats des del 13 d'abril de 2024 ja hi estan obligats; els anteriors tenen fins a l'1 de gener de 2027. Per sota de 50 kW n'hi ha prou amb un codi QR amb passarel\u00b7la de pagament.<\/p>\n    <p class=\"entradilla-2\">Respon sis preguntes sobre la teva instal\u00b7laci\u00f3 i et diem qu\u00e8 t'exigeix el Reglament (UE) 2023\/1804, amb quina data i qu\u00e8 et falta.<\/p>\n    <div class=\"arranque\">\n      <a class=\"boton-arranque\" href=\"#diagnostico\" id=\"irDiagnostico\">Comen\u00e7ar el diagn\u00f2stic <span aria-hidden=\"true\">\u2193<\/span><\/a>\n      <p class=\"condiciones\">Menys d'un minut. Sense registrar-te i sense deixar cap dada.<\/p>\n    <\/div>\n      <\/div>\n      <figure class=\"portada-imagen\" id=\"figuraTotem\">\n        <div class=\"marco-totem\">\n        <img id=\"imgTotem\" src=\"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/08\/totem-evcharge-sin-fondo-cuadrada-web.png\" alt=\"T\u00f2tem de pagament EVcharge, terminal amb lector de targetes per a punts de rec\u00e0rrega\" loading=\"eager\" decoding=\"async\">\n        <\/div>\n      <\/figure>\n    <\/div>\n    <div class=\"fechas\">\n      <div>\n        <b>13 abr 2024<\/b>\n        <small>Els punts nous d'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s ja han d'acceptar el pagament amb targeta.<\/small>\n      <\/div>\n      <div>\n        <b>8 gen 2026<\/b>\n        <small>ISO 15118-2 obligatori en corrent altern d'acc\u00e9s p\u00fablic, nou o renovat.<\/small>\n      <\/div>\n      <div>\n        <b>1 gen 2027<\/b>\n        <small>Termini per als punts de 50 kW o m\u00e9s que ja existien abans d'abril de 2024.<\/small>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/header>\n\n<section class=\"seccion\" id=\"diagnostico\">\n  <div class=\"envoltorio\">\n    <p class=\"rotulo\">Diagn\u00f2stic<\/p>\n    <h2>Comencem per la teva instal\u00b7laci\u00f3<\/h2>\n    <p>Et farem una pregunta cada vegada. El recorregut s'adaptar\u00e0 a les teves respostes i podr\u00e0s tornar enrere en qualsevol moment. No necessites facilitar cap dada personal per consultar el resultat.<\/p>\n\n    <div class=\"arbol\">\n      <div class=\"via\" id=\"via\" aria-hidden=\"true\"><\/div>\n      <div class=\"rastro\" id=\"rastro\"><\/div>\n      <div id=\"pregunta\" aria-live=\"polite\"><\/div>\n\n      <div class=\"desenlace\" id=\"desenlace\" hidden>\n        <div class=\"columna-veredicto\">\n          <div class=\"resultado\" id=\"resultado\" aria-live=\"polite\"><\/div>\n          <button class=\"reiniciar\" type=\"button\" id=\"reiniciar\">Comen\u00e7ar de nou<\/button>\n        <\/div>\n        <div class=\"columna-lead\">\n<div class=\"formulario\" id=\"cajaFormulario\">\n      <p class=\"rotulo\">Pas seg\u00fcent<\/p>\n      <h2 id=\"formTitulo\">Ho revisem amb les teves dades reals<\/h2>\n      <p class=\"justificado\" id=\"formIntro\"><\/p>\n\n      <div class=\"recap\" id=\"recap\">\n        <p>Aix\u00f2 \u00e9s el que ens has explicat del punt. Va amb el teu missatge perqu\u00e8 qui t'atengui no t'ho hagi de tornar a preguntar.<\/p>\n        <div class=\"fichas\" id=\"recapFichas\"><\/div>\n      <\/div>\n\n      <form id=\"formulario\" novalidate>\n        <div class=\"campos\">\n          <div>\n            <label for=\"nombre\">Nom i cognoms<\/label>\n            <input type=\"text\" id=\"nombre\" name=\"nombre\" autocomplete=\"name\" required>\n            <p class=\"fallo\" id=\"fallo-nombre\" hidden><\/p>\n          <\/div>\n          <div>\n            <label for=\"empresa\">Empresa o organisme<\/label>\n            <input type=\"text\" id=\"empresa\" name=\"empresa\" autocomplete=\"organization\" required>\n            <p class=\"fallo\" id=\"fallo-empresa\" hidden><\/p>\n          <\/div>\n          <div>\n            <label for=\"email\">Correu electr\u00f2nic de treball<\/label>\n            <input type=\"email\" id=\"email\" name=\"email\" autocomplete=\"email\" required>\n            <p class=\"fallo\" id=\"fallo-email\" hidden><\/p>\n          <\/div>\n          <div>\n            <label for=\"telefono\">Tel\u00e8fon <span class=\"opcional\">opcional<\/span><\/label>\n            <input type=\"tel\" id=\"telefono\" name=\"telefono\" autocomplete=\"tel\">\n            <p class=\"pista\">Si el deixes, et truquem. Si no, t'escrivim.<\/p>\n          <\/div>\n        <\/div>\n\n        <details class=\"extras\">\n          <summary>Afegir detalls de la instal\u00b7laci\u00f3 <span class=\"opcional\">opcional<\/span><\/summary>\n          <div class=\"extras-cuerpo\">\n            <div>\n              <label for=\"provincia\">Prov\u00edncia<\/label>\n              <input type=\"text\" id=\"provincia\" name=\"provincia\" autocomplete=\"address-level1\">\n            <\/div>\n            <div>\n              <span class=\"etiqueta-grupo\">Quants punts gestiones?<\/span>\n              <div class=\"radios\" role=\"radiogroup\" aria-label=\"Quants punts gestiones\">\n                <label><input type=\"radio\" name=\"puntos\" value=\"1 a 5\"><span>1 a 5<\/span><\/label>\n                <label><input type=\"radio\" name=\"puntos\" value=\"6 a 20\"><span>6 a 20<\/span><\/label>\n                <label><input type=\"radio\" name=\"puntos\" value=\"21 a 50\"><span>21 a 50<\/span><\/label>\n                <label><input type=\"radio\" name=\"puntos\" value=\"M\u00e9s de 50\"><span>M\u00e9s de 50<\/span><\/label>\n              <\/div>\n            <\/div>\n            <div>\n              <label for=\"mensaje\">Alguna cosa que h\u00e0gim de saber<\/label>\n              <textarea id=\"mensaje\" name=\"mensaje\" rows=\"3\"><\/textarea>\n            <\/div>\n          <\/div>\n        <\/details>\n\n        <div class=\"consentimiento\">\n          <input type=\"checkbox\" id=\"rgpd\" name=\"rgpd\" required>\n          <label for=\"rgpd\" style=\"font-weight:300;color:var(--gris);margin:0;\">He llegit i accepto la <a href=\"#\" target=\"_blank\" rel=\"noopener\">pol\u00edtica de privacitat<\/a>. Etecnic tractar\u00e0 les meves dades per respondre aquesta consulta i per informar-me sobre el compliment de l'AFIR. Puc retirar el consentiment en qualsevol moment.<\/label>\n        <\/div>\n\n        <button class=\"enviar\" type=\"submit\" id=\"botonEnviar\">Enviar<\/button>\n        <p class=\"recogida\" id=\"recogida\"><\/p>\n\n        <ul class=\"confianza\">\n          <li>Sense comprom\u00eds ni pressupost obligatori<\/li>\n          <li>Les teves dades no es comparteixen amb tercers<\/li>\n          <li>Et respon una persona de l'equip, no un formulari autom\u00e0tic<\/li>\n        <\/ul>\n      <\/form>\n\n      <div id=\"marcoZoho\" hidden>\n        <iframe id=\"iframeZoho\" title=\"Formulari de contacte\" loading=\"lazy\"\n          style=\"width:100%;min-height:760px;border:0;background:transparent;\"><\/iframe>\n      <\/div>\n    <\/div>\n<div class=\"formulario gracias\" id=\"gracias\" hidden aria-live=\"polite\"><\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n\n<script type=\"application\/ld+json\">\n{\n \"@context\": \"https:\/\/schema.org\",\n \"@type\": \"FAQPage\",\n \"inLanguage\": \"ca-ES\",\n \"mainEntity\": [\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Qu\u00e8 \u00e9s l'AFIR i per qu\u00e8 m'afecta si no soc una gran operadora?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"L'AFIR \u00e9s el Reglament (UE) 2023\/1804, relatiu a la implantaci\u00f3 d'una infraestructura per als combustibles alternatius. Substitueix l'antiga directiva AFID i, com que \u00e9s un reglament i no una directiva, s'aplica directament a tots els estats membres sense necessitat de transposici\u00f3 a l'ordenament espanyol. Aix\u00f2 deixa menys marge d'interpretaci\u00f3 local que la normativa anterior. Les seves obligacions operatives \u2014pagament, preus, dades\u2014 recauen sobre qui explota el punt de rec\u00e0rrega, amb independ\u00e8ncia de la seva mida. Si tens un punt obert al p\u00fablic, t'afecta.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Qu\u00e8 significa exactament \u00abd'acc\u00e9s p\u00fablic\u00bb?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"\u00c9s el malent\u00e8s m\u00e9s com\u00fa. L'AFIR no at\u00e9n la titularitat del punt de rec\u00e0rrega, sin\u00f3 qui hi pot accedir: el que \u00e9s rellevant \u00e9s si l'acc\u00e9s est\u00e0 obert a qualsevol usuari, amb registre previ o sense. Una empresa privada amb un aparcament obert a clients o visitants \u00e9s d'acc\u00e9s p\u00fablic i hi est\u00e0 subjecta. Una administraci\u00f3 amb carregadors reservats a la seva flota oficial t\u00e9 acc\u00e9s restringit i no hi est\u00e0 subjecta en aquell punt. Una empresa amb carregadors nom\u00e9s per als seus empleats, tampoc. La pregunta correcta no \u00e9s si ets p\u00fablic o privat, sin\u00f3 si qualsevol persona pot fer servir aquell carregador, encara que sigui de manera puntual.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Ja tinc carregadors instal\u00b7lats. Els he de canviar?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"Dep\u00e8n de la pot\u00e8ncia i de la data. Per sota de 50 kW no hi ha obligaci\u00f3 d'afegir un lector f\u00edsic. En els de 50 kW o m\u00e9s d'acc\u00e9s p\u00fablic instal\u00b7lats abans d'abril de 2024, s\u00ed: cal incorporar un lector de targetes o pagament sense contacte abans de l'1 de gener de 2027. L'actualitzaci\u00f3 a ISO 15118-20 nom\u00e9s \u00e9s obligat\u00f2ria si el punt s'instal\u00b7la nou o es renova substancialment. No hi ha obligaci\u00f3 retroactiva en un equip que es mant\u00e9 sense renovar.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Tinc aplicaci\u00f3 i codi QR. No n'hi ha prou?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"Per sota de 50 kW, s\u00ed: s'admeten alternatives connectades com un codi QR amb passarel\u00b7la de pagament segura. A partir de 50 kW, no. El Reglament exigeix un lector f\u00edsic de targeta banc\u00e0ria o un dispositiu que admeti pagaments sense contacte, hi hagi aplicaci\u00f3 o no. L'aplicaci\u00f3 continua sent un canal c\u00f2mode i recomanable, per\u00f2 no substitueix el requisit legal en aquestes pot\u00e8ncies.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"El meu carregador t\u00e9 Plug & Charge. Aix\u00f2 ja cobreix el pagament?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"No. El Plug & Charge, habilitat per la ISO 15118, \u00e9s un est\u00e0ndard de comunicaci\u00f3 i autenticaci\u00f3 entre vehicle i carregador que permet iniciar la c\u00e0rrega sense targeta ni aplicaci\u00f3, mitjan\u00e7ant un contracte previ amb un prove\u00efdor de mobilitat. L'AFIR el regula en un apartat diferent del mitj\u00e0 de pagament garantit. El lector de targetes \u00e9s el m\u00e8tode universal que sempre ha d'existir a partir de 50 kW, per cobrir qualsevol usuari: qui no t\u00e9 contracte de Plug & Charge amb aquell operador i qui condueix un vehicle que no ho admet. S\u00f3n requisits independents i complementaris, no intercanviables.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Qu\u00e8 exigeix l'AFIR sobre el preu?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"El preu s'ha d'expressar per kWh d'electricitat subministrada, no nom\u00e9s per temps o per sessi\u00f3, en els punts nous de 50 kW o m\u00e9s. Ha de ser raonable, f\u00e0cilment comparable, transparent i no discriminatori. S'admet una tarifa d'ocupaci\u00f3 per minut per desincentivar que es bloquegi el punt, per\u00f2 cal comunicar-la abans d'iniciar la sessi\u00f3. I no es pot exigir contracte ni registre previ per con\u00e8ixer o pagar una rec\u00e0rrega puntual.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"He de publicar dades dels meus punts?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"S\u00ed, i sense cost per a l'usuari. Dades est\u00e0tiques \u2014ubicaci\u00f3, nombre de connectors, horari, pot\u00e8ncia m\u00e0xima\u2014 i dades din\u00e0miques \u2014si est\u00e0 lliure o ocupat, preu de la sessi\u00f3, si l'electricitat \u00e9s cent per cent renovable\u2014, normalment a trav\u00e9s dels punts d'acc\u00e9s nacionals de dades. Un reglament d'execuci\u00f3 de la Comissi\u00f3 Europea de 2025 estandarditza el format i l'accessibilitat. A la pr\u00e0ctica, afavoreix l'\u00fas de sistemes de gesti\u00f3 compatibles amb OCPP i protocols oberts com OCPI, amb agregadors i aplicacions de tercers.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Qu\u00e8 passa si no ho compleixo?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"L'AFIR s'aplica de manera directa, per\u00f2 cada estat membre desenvolupa el seu propi r\u00e8gim sancionador i d'inspecci\u00f3. A Espanya, les conseq\u00fc\u00e8ncies de l'incompliment dependran de la normativa nacional aplicable i de les autoritats competents. Poden incloure requeriments d'esmena i, quan correspongui, sancions administratives. A m\u00e9s del risc regulatori \u2014sancions administratives i requeriments d'esmena\u2014 hi ha dos que se solen oblidar: el reputacional, perqu\u00e8 un usuari que no pot pagar amb targeta deixa una ressenya negativa, i l'econ\u00f2mic, per quedar excl\u00f2s d'ajuts que exigeixen complir la normativa vigent.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Afecta els ajuts tipus MOVES o PERTE?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"De manera indirecta per\u00f2 rellevant. Programes com el MOVES III, el PERTE VEC o els fons europeus per a infraestructura de rec\u00e0rrega solen exigir com a requisit d'elegibilitat el compliment de la normativa vigent aplicable, inclosa l'AFIR quan correspongui. No complir pot significar perdre un ajut concedit, haver de retornar-lo o quedar excl\u00f2s de futures convocat\u00f2ries.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"El meu punt \u00e9s privat. M'afecta igualment?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"Si l'acc\u00e9s est\u00e0 realment restringit i no est\u00e0 obert al p\u00fablic en general, la majoria de les obligacions operatives \u2014pagament, transpar\u00e8ncia de preus, dades obertes\u2014 no se t'apliquen directament. Tot i aix\u00ed pot interessar-te complir volunt\u00e0riament: millora l'experi\u00e8ncia d'\u00fas i deixa la instal\u00b7laci\u00f3 preparada si en algun moment canvia l'\u00fas de l'espai.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Els meus carregadors no s\u00f3n d'Etecnic. Em podeu ajudar igualment?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"S\u00ed. Etecnic no fabrica maquinari de rec\u00e0rrega: desenvolupem i operem EVcharge, la plataforma de gesti\u00f3, i oferim maquinari complementari propi com el t\u00f2tem de pagament. Amb carregadors d'un altre fabricant, EVcharge es pot integrar com a sistema de gesti\u00f3 directa per OCPP si el carregador ho admet, o interconnectar-se per OCPI amb el sistema que ja gestioni aquell punt. I el t\u00f2tem es pot afegir com a terminal de pagament centralitzat amb independ\u00e8ncia de la marca del carregador.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Cal un TPV a cada carregador?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"No necess\u00e0riament. El t\u00f2tem d'EVcharge \u00e9s compatible amb carregadors de fabricants diferents i pot centralitzar el pagament de diversos punts de rec\u00e0rrega en un \u00fanic terminal, en lloc d'instal\u00b7lar un lector a cada carregador. A m\u00e9s de resoldre el requisit de pagament puntual sense contracte previ, redueix la inversi\u00f3 inicial i el manteniment respecte a l'alternativa d'equipar cada punt per separat.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"De qui \u00e9s la responsabilitat legal, meva o del meu prove\u00efdor?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"La responsabilitat d'operador del punt de rec\u00e0rrega sota l'AFIR recau sobre qui explota el punt. Etecnic actua com a prove\u00efdor tecnol\u00f2gic que facilita les eines per complir: sistema de gesti\u00f3, connectivitat, terminal de pagament i obertura de dades mitjan\u00e7ant els protocols est\u00e0ndard del sector (OCPP i OCPI). El compliment dels est\u00e0ndards de comunicaci\u00f3 amb el vehicle, la fam\u00edlia ISO 15118, dep\u00e8n principalment del maquinari del carregador i del seu fabricant.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Puc limitar el meu carregador per programari a menys de 50 kW per no haver d'instal\u00b7lar el lector de targetes?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"No. El Reglament AFIR no mesura el llindar de 50 kW pel que el carregador lliura en un moment donat, sin\u00f3 per la pot\u00e8ncia m\u00e0xima que pot arribar a proporcionar. El mateix text legal ho defineix aix\u00ed en el seu article 2: la pot\u00e8ncia m\u00e0xima te\u00f2rica que el punt de rec\u00e0rrega pot proporcionar, no la que tingui configurada avui. Un l\u00edmit fixat per programari, reversible des del panell de gesti\u00f3, no canvia la capacitat f\u00edsica de l'equip: a efectes de l'AFIR el carregador continua comptant pel que pot lliurar, no pel que avui se li permet lliurar. No existeix, a dia d'avui, cap normativa espanyola espec\u00edfica que contempli aquesta limitaci\u00f3 com una via v\u00e0lida per eximir-se del requisit. Si a m\u00e9s el carregador va rebre una subvenci\u00f3 (MOVES, PERTE o altres fons europeus) precisament per tenir 50 kW o m\u00e9s de pot\u00e8ncia, limitar-lo despr\u00e9s per esquivar l'AFIR pot entrar en contradicci\u00f3 amb les condicions d'aquell ajut.\"\n   }\n  },\n  {\n   \"@type\": \"Question\",\n   \"name\": \"Quant costa i quant triga?\",\n   \"acceptedAnswer\": {\n    \"@type\": \"Answer\",\n    \"text\": \"Dep\u00e8n de quants punts calgui cobrir, d'on estiguin i de si el pagament es centralitza en un t\u00f2tem o es resol punt per punt. Preferim donar-te una xifra sobre la teva instal\u00b7laci\u00f3 real abans que un preu de cat\u00e0leg que despr\u00e9s no se sostingui. Sobre el termini, s\u00ed que conv\u00e9 tenir present una cosa: un t\u00f2tem s'ha de fabricar, subministrar, instal\u00b7lar i comprovar. Si l'objectiu \u00e9s arribar a l'1 de gener de 2027 amb la instal\u00b7laci\u00f3 funcionant, la nostra recomanaci\u00f3 \u00e9s no deixar la decisi\u00f3 m\u00e9s enll\u00e0 de finals d'octubre de 2026.\"\n   }\n  }\n ]\n}\n<\/script>\n\n<section class=\"seccion\" id=\"faqs\">\n  <div class=\"envoltorio\">\n    <p class=\"rotulo\">Preguntes freq\u00fcents<\/p>\n    <h2>El que m\u00e9s ens pregunten sobre l'AFIR<\/h2>\n\n    <div class=\"faqs\">\n      <details><summary><h3>Qu\u00e8 \u00e9s l'AFIR i per qu\u00e8 m'afecta si no soc una gran operadora?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">L'AFIR \u00e9s el Reglament (UE) 2023\/1804, relatiu a la implantaci\u00f3 d'una infraestructura per als combustibles alternatius. Substitueix l'antiga directiva AFID i, com que \u00e9s un reglament i no una directiva, s'aplica directament a tots els estats membres sense necessitat de transposici\u00f3 a l'ordenament espanyol. Aix\u00f2 deixa menys marge d'interpretaci\u00f3 local que la normativa anterior.<\/p>\n        <p class=\"justificado\">Les seves obligacions operatives \u2014pagament, preus, dades\u2014 recauen sobre qui explota el punt de rec\u00e0rrega, amb independ\u00e8ncia de la seva mida. Si tens un punt obert al p\u00fablic, t'afecta.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Qu\u00e8 significa exactament \u00abd'acc\u00e9s p\u00fablic\u00bb?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">\u00c9s el malent\u00e8s m\u00e9s com\u00fa. L'AFIR no at\u00e9n la titularitat del punt de rec\u00e0rrega, sin\u00f3 qui hi pot accedir: el que \u00e9s rellevant \u00e9s si l'acc\u00e9s est\u00e0 obert a qualsevol usuari, amb registre previ o sense.<\/p>\n        <p class=\"justificado\">Una empresa privada amb un aparcament obert a clients o visitants \u00e9s d'acc\u00e9s p\u00fablic i hi est\u00e0 subjecta. Una administraci\u00f3 amb carregadors reservats a la seva flota oficial t\u00e9 acc\u00e9s restringit i no hi est\u00e0 subjecta en aquell punt. Una empresa amb carregadors nom\u00e9s per als seus empleats, tampoc. La pregunta correcta no \u00e9s si ets p\u00fablic o privat, sin\u00f3 si qualsevol persona pot fer servir aquell carregador, encara que sigui de manera puntual.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Ja tinc carregadors instal\u00b7lats. Els he de canviar?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">Dep\u00e8n de la pot\u00e8ncia i de la data. Per sota de 50 kW no hi ha obligaci\u00f3 d'afegir un lector f\u00edsic. En els de 50 kW o m\u00e9s d'acc\u00e9s p\u00fablic instal\u00b7lats abans d'abril de 2024, s\u00ed: cal incorporar un lector de targetes o pagament sense contacte abans de l'1 de gener de 2027.<\/p>\n        <p class=\"justificado\">L'actualitzaci\u00f3 a ISO 15118-20 nom\u00e9s \u00e9s obligat\u00f2ria si el punt s'instal\u00b7la nou o es renova substancialment. No hi ha obligaci\u00f3 retroactiva en un equip que es mant\u00e9 sense renovar.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Tinc aplicaci\u00f3 i codi QR. No n'hi ha prou?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">Per sota de 50 kW, s\u00ed: s'admeten alternatives connectades com un codi QR amb passarel\u00b7la de pagament segura. A partir de 50 kW, no. El Reglament exigeix un lector f\u00edsic de targeta banc\u00e0ria o un dispositiu que admeti pagaments sense contacte, hi hagi aplicaci\u00f3 o no.<\/p>\n        <p class=\"justificado\">L'aplicaci\u00f3 continua sent un canal c\u00f2mode i recomanable, per\u00f2 no substitueix el requisit legal en aquestes pot\u00e8ncies.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>El meu carregador t\u00e9 Plug & Charge. Aix\u00f2 ja cobreix el pagament?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">No. El Plug & Charge, habilitat per la ISO 15118, \u00e9s un est\u00e0ndard de comunicaci\u00f3 i autenticaci\u00f3 entre vehicle i carregador que permet iniciar la c\u00e0rrega sense targeta ni aplicaci\u00f3, mitjan\u00e7ant un contracte previ amb un prove\u00efdor de mobilitat. L'AFIR el regula en un apartat diferent del mitj\u00e0 de pagament garantit.<\/p>\n        <p class=\"justificado\">El lector de targetes \u00e9s el m\u00e8tode universal que sempre ha d'existir a partir de 50 kW, per cobrir qualsevol usuari: qui no t\u00e9 contracte de Plug & Charge amb aquell operador i qui condueix un vehicle que no ho admet. S\u00f3n requisits independents i complementaris, no intercanviables.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Qu\u00e8 exigeix l'AFIR sobre el preu?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">El preu s'ha d'expressar per kWh d'electricitat subministrada, no nom\u00e9s per temps o per sessi\u00f3, en els punts nous de 50 kW o m\u00e9s. Ha de ser raonable, f\u00e0cilment comparable, transparent i no discriminatori.<\/p>\n        <p class=\"justificado\">S'admet una tarifa d'ocupaci\u00f3 per minut per desincentivar que es bloquegi el punt, per\u00f2 cal comunicar-la abans d'iniciar la sessi\u00f3. I no es pot exigir contracte ni registre previ per con\u00e8ixer o pagar una rec\u00e0rrega puntual.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>He de publicar dades dels meus punts?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">S\u00ed, i sense cost per a l'usuari. Dades est\u00e0tiques \u2014ubicaci\u00f3, nombre de connectors, horari, pot\u00e8ncia m\u00e0xima\u2014 i dades din\u00e0miques \u2014si est\u00e0 lliure o ocupat, preu de la sessi\u00f3, si l'electricitat \u00e9s cent per cent renovable\u2014, normalment a trav\u00e9s dels punts d'acc\u00e9s nacionals de dades.<\/p>\n        <p class=\"justificado\">Un reglament d'execuci\u00f3 de la Comissi\u00f3 Europea de 2025 estandarditza el format i l'accessibilitat. A la pr\u00e0ctica, afavoreix l'\u00fas de sistemes de gesti\u00f3 compatibles amb OCPP i protocols oberts com OCPI, amb agregadors i aplicacions de tercers.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Qu\u00e8 passa si no ho compleixo?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">L'AFIR s'aplica de manera directa, per\u00f2 cada estat membre desenvolupa el seu propi r\u00e8gim sancionador i d'inspecci\u00f3. A Espanya, les conseq\u00fc\u00e8ncies de l'incompliment dependran de la normativa nacional aplicable i de les autoritats competents. Poden incloure requeriments d'esmena i, quan correspongui, sancions administratives.<\/p>\n        <p class=\"justificado\">A m\u00e9s del risc regulatori \u2014sancions administratives i requeriments d'esmena\u2014 hi ha dos que se solen oblidar: el reputacional, perqu\u00e8 un usuari que no pot pagar amb targeta deixa una ressenya negativa, i l'econ\u00f2mic, per quedar excl\u00f2s d'ajuts que exigeixen complir la normativa vigent.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Afecta els ajuts tipus MOVES o PERTE?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">De manera indirecta per\u00f2 rellevant. Programes com el MOVES III, el PERTE VEC o els fons europeus per a infraestructura de rec\u00e0rrega solen exigir com a requisit d'elegibilitat el compliment de la normativa vigent aplicable, inclosa l'AFIR quan correspongui.<\/p>\n        <p class=\"justificado\">No complir pot significar perdre un ajut concedit, haver de retornar-lo o quedar excl\u00f2s de futures convocat\u00f2ries.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>El meu punt \u00e9s privat. M'afecta igualment?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">Si l'acc\u00e9s est\u00e0 realment restringit i no est\u00e0 obert al p\u00fablic en general, la majoria de les obligacions operatives \u2014pagament, transpar\u00e8ncia de preus, dades obertes\u2014 no se t'apliquen directament.<\/p>\n        <p class=\"justificado\">Tot i aix\u00ed pot interessar-te complir volunt\u00e0riament: millora l'experi\u00e8ncia d'\u00fas i deixa la instal\u00b7laci\u00f3 preparada si en algun moment canvia l'\u00fas de l'espai.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Els meus carregadors no s\u00f3n d'Etecnic. Em podeu ajudar igualment?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">S\u00ed. Etecnic no fabrica maquinari de rec\u00e0rrega: desenvolupem i operem EVcharge, la plataforma de gesti\u00f3, i oferim maquinari complementari propi com el t\u00f2tem de pagament.<\/p>\n        <p class=\"justificado\">Amb carregadors d'un altre fabricant, EVcharge es pot integrar com a sistema de gesti\u00f3 directa per OCPP si el carregador ho admet, o interconnectar-se per OCPI amb el sistema que ja gestioni aquell punt. I el t\u00f2tem es pot afegir com a terminal de pagament centralitzat amb independ\u00e8ncia de la marca del carregador.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Cal un TPV a cada carregador?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">No necess\u00e0riament. El t\u00f2tem d'EVcharge \u00e9s compatible amb carregadors de fabricants diferents i pot centralitzar el pagament de diversos punts de rec\u00e0rrega en un \u00fanic terminal, en lloc d'instal\u00b7lar un lector a cada carregador.<\/p>\n        <p class=\"justificado\">A m\u00e9s de resoldre el requisit de pagament puntual sense contracte previ, redueix la inversi\u00f3 inicial i el manteniment respecte a l'alternativa d'equipar cada punt per separat.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>De qui \u00e9s la responsabilitat legal, meva o del meu prove\u00efdor?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">La responsabilitat d'operador del punt de rec\u00e0rrega sota l'AFIR recau sobre qui explota el punt. Etecnic actua com a prove\u00efdor tecnol\u00f2gic que facilita les eines per complir: sistema de gesti\u00f3, connectivitat, terminal de pagament i obertura de dades mitjan\u00e7ant els protocols est\u00e0ndard del sector (OCPP i OCPI).<\/p>\n        <p class=\"justificado\">El compliment dels est\u00e0ndards de comunicaci\u00f3 amb el vehicle, la fam\u00edlia ISO 15118, dep\u00e8n principalment del maquinari del carregador i del seu fabricant.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Puc limitar el meu carregador per programari a menys de 50 kW per no haver d'instal\u00b7lar el lector de targetes?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">No. El Reglament AFIR no mesura el llindar de 50 kW pel que el carregador lliura en un moment donat, sin\u00f3 per la pot\u00e8ncia m\u00e0xima que pot arribar a proporcionar. El mateix text legal ho defineix aix\u00ed en el seu article 2: la pot\u00e8ncia m\u00e0xima te\u00f2rica que el punt de rec\u00e0rrega pot proporcionar, no la que tingui configurada avui.<\/p>\n        <p class=\"justificado\">Un l\u00edmit fixat per programari, reversible des del panell de gesti\u00f3, no canvia la capacitat f\u00edsica de l'equip: a efectes de l'AFIR el carregador continua comptant pel que pot lliurar, no pel que avui se li permet lliurar. No existeix, a dia d'avui, cap normativa espanyola espec\u00edfica que contempli aquesta limitaci\u00f3 com una via v\u00e0lida per eximir-se del requisit.<\/p>\n        <p class=\"justificado\">Si a m\u00e9s el carregador va rebre una subvenci\u00f3 (MOVES, PERTE o altres fons europeus) precisament per tenir 50 kW o m\u00e9s de pot\u00e8ncia, limitar-lo despr\u00e9s per esquivar l'AFIR pot entrar en contradicci\u00f3 amb les condicions d'aquell ajut.<\/p>\n      <\/div><\/details>\n\n      <details><summary><h3>Quant costa i quant triga?<\/h3><\/summary><div class=\"cuerpo\">\n        <p class=\"justificado\">Dep\u00e8n de quants punts calgui cobrir, d'on estiguin i de si el pagament es centralitza en un t\u00f2tem o es resol punt per punt. Preferim donar-te una xifra sobre la teva instal\u00b7laci\u00f3 real abans que un preu de cat\u00e0leg que despr\u00e9s no se sostingui.<\/p>\n        <p class=\"justificado\">Sobre el termini, s\u00ed que conv\u00e9 tenir present una cosa: un t\u00f2tem s'ha de fabricar, subministrar, instal\u00b7lar i comprovar. Si l'objectiu \u00e9s arribar a l'1 de gener de 2027 amb la instal\u00b7laci\u00f3 funcionant, la nostra recomanaci\u00f3 \u00e9s no deixar la decisi\u00f3 m\u00e9s enll\u00e0 de finals d'octubre de 2026.<\/p>\n      <\/div><\/details>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"barra\" id=\"barra\" data-ver=\"no\">\n  <button type=\"button\" id=\"barraBoton\">Deixar les meves dades<\/button>\n<\/div>\n\n<section class=\"seccion\" style=\"padding-top:0;\">\n  <div class=\"envoltorio\">\n   <div class=\"cierre\">\n    <div class=\"cols\">\n    <div>\n      <h4>Sobre aquest diagn\u00f2stic<\/h4>\n      <p>\u00c9s una orientaci\u00f3 general basada en el Reglament (UE) 2023\/1804. No substitueix una an\u00e0lisi de la teva instal\u00b7laci\u00f3 ni un informe de compliment. Per a una valoraci\u00f3 ferma per escrit, escriu-nos i ho tramitem amb l'equip corresponent.<\/p>\n    <\/div>\n    <div>\n      <h4>Fonts oficials<\/h4>\n      <p>Text consolidat del Reglament (UE) 2023\/1804, disponible a <a href=\"https:\/\/eur-lex.europa.eu\" target=\"_blank\" rel=\"noopener\">EUR-Lex<\/a>.<\/p>\n      <p>Guies i comunicacions de la Comissi\u00f3 Europea sobre l'AFIR (DG MOVE).<\/p>\n    <\/div>\n    <\/div>\n   <\/div>\n<\/section>\n\n<script>\n(function(){\n  \/\/ ---- definici\u00f3n del \u00e1rbol ----\n  var NODOS={\n    publico:{\n      corto:'Acc\u00e9s',\n      titulo:'Pot utilitzar el punt de rec\u00e0rrega qualsevol persona?',\n      matiz:'Tamb\u00e9 es considera acc\u00e9s p\u00fablic quan l\\'\u00fas \u00e9s ocasional, encara que l\\'aparcament sigui privat. El que \u00e9s rellevant \u00e9s qui pot accedir al punt de rec\u00e0rrega, no qui n\\'\u00e9s el propietari.',\n      opciones:[\n        {valor:'si', texto:'S\u00ed, est\u00e0 obert al p\u00fablic', etiqueta:'obert al p\u00fablic', va:'potencia'},\n        {valor:'no', texto:'No, nom\u00e9s l\\'utilitzen la meva flota o el personal', etiqueta:'restringit', va:null}\n      ]\n    },\n    potencia:{\n      corto:'Pot\u00e8ncia',\n      titulo:'Quina pot\u00e8ncia m\u00e0xima t\u00e9 el punt de rec\u00e0rrega?',\n      matiz:'Compta la pot\u00e8ncia m\u00e0xima que l\\'equip pot lliurar, la de la seva placa de caracter\u00edstiques, no la que tingui configurada avui. Si en tens diversos, respon pel m\u00e9s potent: el llindar de 50 kW es mira punt per punt.',\n      opciones:[\n        {valor:'alta', texto:'50 kW o m\u00e9s', etiqueta:'50 kW o m\u00e9s', va:'antiguedad'},\n        {valor:'baja', texto:'Menys de 50 kW', etiqueta:'menys de 50 kW', va:'precio'},\n        {valor:'nose', texto:'No ho s\u00e9', etiqueta:'pot\u00e8ncia per confirmar', va:'antiguedad'}\n      ]\n    },\n    antiguedad:{\n      corto:'Instal\u00b7laci\u00f3',\n      titulo:'Quan es va instal\u00b7lar el punt de rec\u00e0rrega?',\n      matiz:'La data d\\'instal\u00b7laci\u00f3 determina el r\u00e8gim aplicable. El 13 d\\'abril de 2024 marca la difer\u00e8ncia.',\n      opciones:[\n        {valor:'nuevo', texto:'El 13 d\\'abril de 2024 o despr\u00e9s', etiqueta:'des d\\'abril de 2024', va:'tpv'},\n        {valor:'viejo', texto:'Abans del 13 d\\'abril de 2024', etiqueta:'abans d\\'abril de 2024', va:'tpv'}\n      ]\n    },\n    tpv:{\n      corto:'Pagament',\n      titulo:'El punt de rec\u00e0rrega disposa d\\'un terminal de pagament amb targeta banc\u00e0ria?',\n      matiz:'Hi ha d\\'haver un terminal de pagament f\u00edsic, integrat en el carregador o centralitzat en un t\u00f2tem que doni servei a diversos equips. En aquest cas, l\\'aplicaci\u00f3 i el codi QR no substitueixen el terminal de pagament.',\n      opciones:[\n        {valor:'si', texto:'S\u00ed, disposa de terminal de pagament', etiqueta:'amb lector', va:'precio'},\n        {valor:'no', texto:'No, no disposa de terminal de pagament', etiqueta:'sense lector', va:'precio'}\n      ]\n    },\n    precio:{\n      corto:'Preu',\n      titulo:'Es mostra el preu per kWh abans d\\'iniciar la rec\u00e0rrega?',\n      matiz:'El preu s\\'ha de poder consultar sense contracte previ, sense registre i sense descarregar cap aplicaci\u00f3.',\n      opciones:[\n        {valor:'si', texto:'S\u00ed, es mostra', etiqueta:'preu visible', va:'datos'},\n        {valor:'no', texto:'No, o no ho s\u00e9', etiqueta:'preu no visible', va:'datos'}\n      ]\n    },\n    datos:{\n      corto:'Dades',\n      titulo:'Publiques la ubicaci\u00f3, la disponibilitat i el preu del punt de rec\u00e0rrega?',\n      matiz:'L\\'obligaci\u00f3 compr\u00e8n dades est\u00e0tiques i din\u00e0miques. Es publiquen en el punt d\\'acc\u00e9s nacional de dades, normalment mitjan\u00e7ant un sistema de gesti\u00f3 compatible amb protocols com OCPP i OCPI.',\n      opciones:[\n        {valor:'si', texto:'S\u00ed, estan publicats', etiqueta:'dades publicades', va:null},\n        {valor:'no', texto:'No, o no ho s\u00e9', etiqueta:'dades sense publicar', va:null}\n      ]\n    }\n  };\n\n  \/\/ ---- qu\u00e9 dice el formulario seg\u00fan el resultado ----\n  var PERFILES={\n    incumple:{\n      titulo:'Ho resolem com abans millor',\n      intro:'Aquest punt est\u00e0 fora de termini avui, aix\u00ed que el primer \u00e9s veure qu\u00e8 cal exactament i amb quin marge. Deixa\\'ns com contactar amb tu i et truquem aquesta setmana.',\n      cta:'Vull que em truquin aquesta setmana',\n      calificacion:'Caliente', prioridad:'Alta'\n    },\n    confirmar:{\n      titulo:'Confirma\\'ns la pot\u00e8ncia i ho tanquem',\n      intro:'Ens falta una dada per dir-te exactament qu\u00e8 t\\'obliga l\\'AFIR. Deixa\\'ns com contactar amb tu i, quan parlem, tingues a m\u00e0 una fotografia del frontal del carregador i una altra de la seva placa de caracter\u00edstiques.',\n      cta:'Vull que ho confirmem',\n      calificacion:'Caliente', prioridad:'Alta'\n    },\n    plazo:{\n      titulo:'T\\'ajudem a arribar a l\\'1 de gener de 2027',\n      intro:'Arribes a la data de sobres si ho poses en marxa ara: entre fabricar el t\u00f2tem, subministrar-lo, instal\u00b7lar-lo i comprovar-lo se\\'n va el temps. Deixa\\'ns les teves dades i ho dimensionem sobre la teva instal\u00b7laci\u00f3 real.',\n      cta:'Vull valorar la meva instal\u00b7laci\u00f3',\n      calificacion:'Caliente', prioridad:'Alta'\n    },\n    cumple:{\n      titulo:'Repassem el que queda obert',\n      intro:'El requisit de pagament el tens cobert, per\u00f2 l\\'AFIR no acaba aqu\u00ed: preu per kWh, publicaci\u00f3 de dades i els est\u00e0ndards de comunicaci\u00f3 en el que instal\u00b7lis d\\'ara endavant. Si vols, ho repassem punt per punt.',\n      cta:'Que ho revisi un t\u00e8cnic',\n      calificacion:'Templado', prioridad:'Media'\n    },\n    fuera:{\n      titulo:'En parlem igualment?',\n      intro:'Avui no se t\\'apliquen les obligacions operatives, i no et direm el contrari. Per\u00f2 si l\\'\u00fas de l\\'espai pot canviar, si tens altres punts en una altra situaci\u00f3 o si vols deixar-ho preparat, escriu-nos i ho mirem sense comprom\u00eds.',\n      cta:'Que m\\'escriguin',\n      calificacion:'Fr\u00edo', prioridad:'Baja'\n    }\n  };\n\n  \/\/ ---- captura de UTMs, para que viajen con el lead ----\n  var utm={};\n  (function(){\n    var q=new URLSearchParams(location.search);\n    ['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(function(k){utm[k]=q.get(k)||'';});\n  })();\n\n  var camino=[];          \/\/ [{clave, valor, etiqueta}]\n  var actual='publico';   \/\/ nodo en pantalla, o null si ya hay resultado\n  var elPregunta=document.getElementById('pregunta');\n  var elRastro=document.getElementById('rastro');\n  var elVia=document.getElementById('via');\n  var elResultado=document.getElementById('resultado');\n  var elReiniciar=document.getElementById('reiniciar');\n  var elDesenlace=document.getElementById('desenlace');\n\n  \/\/ texto completo de cada pregunta con la respuesta elegida y su aclaraci\u00f3n\n  function transcripcion(){\n    var t=camino.map(function(x,i){\n      var n=NODOS[x.clave];\n      var op=n.opciones.filter(function(o){return o.valor===x.valor;})[0];\n      return (i+1)+'. '+n.titulo+'\\n'+\n             '   Respuesta: '+(op?op.texto:x.etiqueta)+'\\n'+\n             '   Contexto: '+n.matiz;\n    }).join('\\n\\n');\n    \/* El formulario no pide adjuntos a proposito. Si el cliente no sabe la\n       potencia, se avisa aqui para que quien atienda le pida las dos fotos. *\/\n    if(respuestas().potencia==='nose'){\n      t+='\\n\\n--- PARA QUIEN ATIENDA ---\\n'+\n         'El cliente no conoce la potencia del punto de recarga. Pidele dos fotos:\\n'+\n         '  1) el frontal del cargador\\n'+\n         '  2) la placa de caracteristicas (la pegatina con letras y numeros del lateral o de la parte de atras)\\n'+\n         'Con la potencia maxima de placa se determina si le aplica el terminal de pago. '+\n         'Recuerda: cuenta la potencia maxima que el equipo puede entregar, no la que tenga limitada por software.';\n    }\n    return t;\n  }\n\n  \/\/ { Acceso:'abierto al p\u00fablico', Potencia:'50 kW o m\u00e9s', ... }\n  function etiquetadas(){\n    var o={};\n    camino.forEach(function(x){ o[NODOS[x.clave].corto]=x.etiqueta; });\n    return o;\n  }\n\n  function respuestas(){\n    var o={};camino.forEach(function(p){o[p.clave]=p.valor;});return o;\n  }\n\n  \/* ---- encuadre de scroll -----------------------------------------------\n     La cabecera fija del tema se mide en vivo en lugar de suponer una altura:\n     en la web se respeta, y en el archivo suelto (que no la lleva) la seccion\n     queda pegada arriba y el bloque anterior desaparece del todo en lugar de\n     verse cortado. Con un segundo elemento, baja lo justo para que su final\n     entre en pantalla. *\/\n  function altoCabecera(){\n    \/* Se recorre la PILA de barras fijas desde el borde de arriba y se van\n       sumando. No vale exigir que la primera empiece en y=0: con la barra de\n       administracion de WordPress la cabecera del tema empieza mas abajo, y\n       antes se descartaba y el contenido quedaba tapado. *\/\n    var xs=[Math.round(window.innerWidth\/2), 30, Math.max(0,window.innerWidth-30)];\n    var tope=0, y=1, vueltas=0;\n    while(y<=260 && vueltas<10){\n      vueltas++;\n      var fijo=null;\n      for(var i=0;i<xs.length && !fijo;i++){\n        var el=document.elementFromPoint(xs[i], y);\n        while(el && el!==document.body && el!==document.documentElement){\n          var cs=window.getComputedStyle(el);\n          if(cs.position==='fixed'||cs.position==='sticky'){ fijo=el; break; }\n          el=el.parentElement;\n        }\n      }\n      if(!fijo) break;\n      var r=fijo.getBoundingClientRect();\n      \/* alto de barra, y que baje de donde ya habiamos llegado *\/\n      if(!(r.height>0) || r.height>260 || r.bottom<=tope) break;\n      tope=r.bottom;\n      y=Math.round(r.bottom)+1;\n    }\n    return Math.round(Math.min(tope,300));\n  }\n\n  function encuadrar(inicio, fin, tope){\n    if(!inicio) return;\n    var y=window.pageYOffset||document.documentElement.scrollTop||0;\n    var cab=altoCabecera();\n    var destino=Math.round(inicio.getBoundingClientRect().top+y-cab-8);\n    if(fin){\n      var necesario=Math.round(fin.getBoundingClientRect().bottom+y+24-window.innerHeight);\n      if(necesario>destino) destino=necesario;\n    }\n    \/* Si no cabe todo, manda el veredicto: nunca se baja tanto que se meta\n       debajo de la cabecera. Se vera el final del formulario con un empujon. *\/\n    if(tope){\n      var limite=Math.round(tope.getBoundingClientRect().top+y-cab-8);\n      if(destino>limite) destino=limite;\n    }\n    var maximo=Math.max(0,(document.documentElement.scrollHeight||0)-window.innerHeight);\n    destino=Math.max(0,Math.min(destino,maximo));\n    var suave=!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);\n    \/* Repaso al terminar: si la cabecera ha cambiado de alto durante el\n       desplazamiento y el principio ha quedado tapado, se empuja lo justo.\n       Si el usuario ha seguido moviendose por su cuenta, no se toca nada. *\/\n    function repasar(){\n      var ahora=window.pageYOffset||document.documentElement.scrollTop||0;\n      if(Math.abs(ahora-destino)>4) return;\n      var cab2=altoCabecera();\n      var arriba=inicio.getBoundingClientRect().top;\n      if(arriba < cab2-1){\n        window.scrollTo(0, Math.max(0, ahora-(cab2-arriba)-8));\n      }\n    }\n    if(suave){ window.scrollTo({top:destino,behavior:'smooth'}); setTimeout(repasar,700); }\n    else { window.scrollTo(0,destino); setTimeout(repasar,60); }\n  }\n\n  function pintarVia(){\n    \/\/ un segmento por respuesta dada, mas uno para la pregunta en curso\n    var trozos='';\n    camino.forEach(function(){trozos+='<span class=\"hecho\"><\/span>';});\n    if(actual) trozos+='<span class=\"aqui\"><\/span>';\n    var n=camino.length+(actual?1:0);\n    elVia.innerHTML=trozos+'<em>'+(actual?('Pregunta '+n):(camino.length+' respostes'))+'<\/em>';\n  }\n\n  function pintarRastro(){\n    elRastro.innerHTML='';\n    camino.forEach(function(p,i){\n      var b=document.createElement('button');\n      b.type='button';\n      b.innerHTML='<b>'+NODOS[p.clave].corto+'<\/b><i>'+p.etiqueta+'<\/i>';\n      b.title='Tornar a aquesta pregunta';\n      b.addEventListener('click',function(){volverA(i);});\n      elRastro.appendChild(b);\n    });\n  }\n\n  function volverA(i){\n    \/\/ recupera la pregunta i y descarta lo posterior\n    var clave=camino[i].clave;\n    camino=camino.slice(0,i);\n    actual=clave;\n    elDesenlace.hidden=true;\n    document.getElementById('barra').dataset.ver='no';\n    render();\n  }\n\n  function atras(){\n    if(!camino.length) return;\n    volverA(camino.length-1);\n  }\n\n  function render(){\n    pintarVia(); pintarRastro();\n    if(!actual){elPregunta.innerHTML='';return;}\n    var n=NODOS[actual];\n    var tarjeta=document.createElement('div');\n    tarjeta.className='tarjeta entra';\n    var html='<h3>'+n.titulo+'<\/h3><p class=\"matiz\">'+n.matiz+'<\/p><div class=\"opciones\">';\n    n.opciones.forEach(function(o,idx){\n      html+='<button type=\"button\" data-idx=\"'+idx+'\">'+o.texto+'<\/button>';\n    });\n    html+='<\/div>';\n    html+='<button class=\"atras\" type=\"button\"'+(camino.length?'':' hidden')+'>\u2190 Tornar a l\\'anterior<\/button>';\n    tarjeta.innerHTML=html;\n    elPregunta.innerHTML='';\n    elPregunta.appendChild(tarjeta);\n\n    tarjeta.querySelectorAll('.opciones button').forEach(function(b){\n      b.addEventListener('click',function(){elegir(parseInt(b.dataset.idx,10));});\n    });\n    var vb=tarjeta.querySelector('.atras');\n    if(vb) vb.addEventListener('click',atras);\n    var primero=tarjeta.querySelector('.opciones button');\n    if(primero && camino.length) primero.focus({preventScroll:true});\n  }\n\n  function elegir(idx){\n    var n=NODOS[actual];\n    var o=n.opciones[idx];\n    camino.push({clave:actual, valor:o.valor, etiqueta:o.etiqueta});\n    actual=o.va;\n    if(actual){ render(); }\n    else { pintarVia(); pintarRastro(); elPregunta.innerHTML=''; resolver(); }\n  }\n\n  elReiniciar.addEventListener('click',function(){\n    camino=[];actual='publico';elDesenlace.hidden=true;document.getElementById('barra').dataset.ver='no';render();\n    encuadrar(document.getElementById('diagnostico'));\n  });\n\n  function resolver(){\n    var e=respuestas(), dato, sello, titulo, puntos=[];\n\n    if(e.publico==='no'){\n      dato='fuera'; sello='Avui no t\\'aplica';\n      titulo='Amb acc\u00e9s restringit, les obligacions operatives no se t\\'apliquen directament';\n      puntos=['Si l\\'acc\u00e9s est\u00e0 realment limitat a la teva flota o als teus empleats, l\\'AFIR no t\\'exigeix pagament amb targeta, transpar\u00e8ncia de preu ni publicaci\u00f3 de dades en aquell punt.',\n              'Compte amb un canvi d\\'\u00fas: si en algun moment s\\'obre a clients o visitants, passa a ser d\\'acc\u00e9s p\u00fablic i entren totes les obligacions.',\n              'Complir volunt\u00e0riament deixa la instal\u00b7laci\u00f3 preparada i millora l\\'experi\u00e8ncia de qui la fa servir.'];\n    } else if(e.potencia==='nose'){\n      dato='confirmar'; sello='Falta una dada per tancar-ho';\n      titulo='Amb la pot\u00e8ncia m\u00e0xima confirmada et diem qu\u00e8 et toca';\n      puntos=['L\\'AFIR mira la pot\u00e8ncia m\u00e0xima que el punt de rec\u00e0rrega pot lliurar, la de la seva placa de caracter\u00edstiques, no la que estigui configurada en el panell de gesti\u00f3. Un l\u00edmit posat per programari no baixa l\\'equip de tram.',\n              'Aquesta dada \u00e9s a la placa de caracter\u00edstiques: busca un adhesiu amb lletres i n\u00fameros en un lateral o a la part del darrere del carregador. \u00c9s com el seu DNI t\u00e8cnic.',\n              'Quan parlem, tingues a m\u00e0 una fotografia del frontal del carregador i una altra d\\'aquesta placa. Amb les dues ho confirmem en la mateixa trucada, sense necessitat de visita.'];\n      if(e.tpv==='no') puntos.push('Si en confirmar-ho resulta ser de 50 kW o m\u00e9s, caldr\u00e0 un terminal de pagament amb targeta banc\u00e0ria. Un t\u00f2tem pot resoldre-ho per a diversos punts de rec\u00e0rrega a la vegada.');\n      if(e.precio==='no') puntos.push('Amb independ\u00e8ncia de la pot\u00e8ncia, s\u00ed que t\\'aplica mostrar el preu per kWh abans d\\'iniciar la sessi\u00f3, sense contracte ni registre previ.');\n    } else if(e.potencia==='baja'){\n      dato='cumple'; sello='Sense lector f\u00edsic obligatori';\n      titulo='Per sota de 50 kW no necessites lector de targetes, per\u00f2 s\u00ed la resta';\n      puntos=['El codi QR amb passarel\u00b7la de pagament segura \u00e9s una alternativa admesa en el teu tram de pot\u00e8ncia.'];\n      if(e.precio==='no') puntos.push('Et falta mostrar el preu per kWh abans d\\'iniciar la sessi\u00f3, sense contracte ni registre previ. Aix\u00f2 s\u00ed que t\\'aplica.');\n      if(e.datos==='no') puntos.push('Et falta publicar dades est\u00e0tiques i din\u00e0miques del punt. Tamb\u00e9 t\\'aplica, i afavoreix l\\'\u00fas de sistemes de gesti\u00f3 compatibles amb OCPP i OCPI.');\n      if(e.precio==='si'&&e.datos==='si') puntos.push('Amb el preu visible i les dades publicades, l\\'essencial el tens cobert. Si algun dia puges de 50 kW, entra l\\'exig\u00e8ncia del lector f\u00edsic.');\n    } else if(e.tpv==='no' && e.antiguedad==='nuevo'){\n      dato='incumple'; sello='Termini ja ven\u00e7ut';\n      titulo='Aquest punt hauria d\\'acceptar targeta des de la seva instal\u00b7laci\u00f3';\n      puntos=['Els punts d\\'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s instal\u00b7lats des del 13 d\\'abril de 2024 estan obligats al pagament amb targeta banc\u00e0ria o sense contacte des del primer dia, no des del 2027.',\n              'L\\'1 de gener de 2027 \u00e9s el termini dels carregadors anteriors a aquesta data. No et dona marge addicional.',\n              'La via m\u00e9s r\u00e0pida sol ser un t\u00f2tem que centralitzi el pagament de diversos punts, sense canviar el maquinari de c\u00e0rrega.'];\n    } else if(e.tpv==='no' && e.antiguedad==='viejo'){\n      dato='plazo'; sello='Amb data l\u00edmit: 1 de gener de 2027';\n      titulo='Fes que qualsevol pugui pagar al teu punt de rec\u00e0rrega abans de l\\'1 de gener de 2027';\n      puntos=['Com que \u00e9s un punt d\\'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s instal\u00b7lat abans d\\'abril de 2024, s\\'ha d\\'adaptar abans de l\\'1 de gener de 2027.',\n              'Un t\u00f2tem compatible amb carregadors de fabricants diferents resol el requisit encara que siguin d\\'una altra marca, i pot cobrir diversos punts de rec\u00e0rrega a la vegada.',\n              'Si l\\'objectiu \u00e9s arribar a aquesta data amb tot funcionant, recomanem prendre la decisi\u00f3 abans de finals d\\'octubre de 2026: hi ha fabricaci\u00f3, subministrament, instal\u00b7laci\u00f3 i comprovaci\u00f3 pel mig.'];\n    } else {\n      dato='cumple'; sello='L\\'essencial, cobert';\n      titulo='El requisit de pagament el tens resolt';\n      puntos=['Amb lector de targetes o pagament sense contacte en un punt de rec\u00e0rrega d\\'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s, compleixes l\\'exig\u00e8ncia de pagament puntual sense contracte previ.'];\n      if(e.precio==='no') puntos.push('Queda pendent mostrar el preu per kWh abans d\\'iniciar la sessi\u00f3, sense contracte previ.');\n      if(e.datos==='no') puntos.push('Queda pendent publicar les dades est\u00e0tiques i din\u00e0miques del punt.');\n      if(e.precio==='si'&&e.datos==='si') puntos.push('Preu i dades tamb\u00e9 en ordre. El seg\u00fcent front \u00e9s la ISO 15118 en els punts que instal\u00b7lis o renovis d\\'ara endavant.');\n    }\n\n    elResultado.dataset.estado=dato;\n    elDesenlace.hidden=false;\n    var lista=puntos.map(function(t){return '<li>'+t+'<\/li>';}).join('');\n    elResultado.innerHTML='<span class=\"sello\">'+sello+'<\/span><h3>'+titulo+'<\/h3><ul>'+lista+'<\/ul>';\n    prepararFormulario(dato);\n    \/\/ el veredicto y el formulario tienen que entrar en pantalla juntos\n    requestAnimationFrame(function(){ requestAnimationFrame(function(){\n      \/* Se encuadra desde el principio de la seccion, y si el formulario no\n         cabe se baja lo justo para que se vea hasta el boton de enviar. *\/\n      \/* Se encuadra desde la barra de avance: asi se ve de donde sale el\n         resultado, y el veredicto y el formulario aprovechan toda la pantalla.\n         'fin' baja lo justo para llegar al boton de enviar; el tercer\n         argumento impide pasarse y dejar la barra fuera. *\/\n      var barraAvance=document.getElementById('via');\n      encuadrar(barraAvance||document.getElementById('diagnostico')||elDesenlace,\n                document.getElementById('marcoZoho')||document.getElementById('cajaFormulario'),\n                barraAvance);\n    }); });\n  }\n\n  \/\/ ---- el formulario se adapta al resultado y guarda el diagn\u00f3stico ----\n  function prepararFormulario(dato){\n    var p=PERFILES[dato];\n    document.getElementById('formTitulo').textContent=p.titulo;\n    document.getElementById('formIntro').textContent=p.intro;\n    document.getElementById('botonEnviar').textContent=p.cta;\n    \/\/ el diagn\u00f3stico queda a la vista: el usuario ve qu\u00e9 se env\u00eda con sus datos\n    document.getElementById('recapFichas').innerHTML=camino.map(function(x){\n      return '<span><b>'+NODOS[x.clave].corto+'<\/b> '+x.etiqueta+'<\/span>';\n    }).join('');\n    if(MODO==='zoho'){\n      document.getElementById('formulario').hidden=true;\n      document.getElementById('marcoZoho').hidden=false;\n      var marco=document.getElementById('iframeZoho');\n      var destino=urlZoho(dato);\n      if(marco.getAttribute('src')!==destino) marco.setAttribute('src',destino);\n      if(DEPURAR) pintarDepuracion(destino);\n    }\n    document.getElementById('cajaFormulario').hidden=false;\n    document.getElementById('gracias').hidden=true;\n    document.getElementById('recogida').textContent='';\n    var barra=document.getElementById('barra');\n    document.getElementById('barraBoton').textContent=p.cta;\n    barra.dataset.ver='si';\n  }\n\n  \/* ===================================================================\n     C\u00d3MO SE RECOGE EL LEAD. Dos opciones, se elige aqu\u00ed.\n\n     'propio' \u2192 el formulario de esta p\u00e1gina env\u00eda a n8n, que crea el\n                Cliente Potencial en Zoho y avisa al comercial.\n     'zoho'   \u2192 se incrusta un formulario de Zoho Forms. El diagn\u00f3stico y\n                las UTMs viajan como par\u00e1metros de prefill en la URL.\n     =================================================================== *\/\n  var MODO='zoho';\n\n  \/* Ponlo en false cuando esto se publique. Muestra un panel con la URL\n     exacta que se env\u00eda a Zoho Forms, para poder depurar el prefill. *\/\n  var DEPURAR=false;\n\n  \/\/ solo para MODO 'propio'\n  var WEBHOOK='https:\/\/n8n.etecnic.es\/webhook\/landing-afir';\n\n  \/* Solo para MODO 'zoho'. Los nombres de abajo NO son los t\u00edtulos de los\n     campos: son los ALIAS que se definen en Zoho Forms en\n     Ajustes > Prefill > Field Alias - Prefill URL. Si un alias no coincide,\n     ese dato llega vac\u00edo y no salta ning\u00fan error. *\/\n  var ZOHO={\n    url:'https:\/\/forms.zohopublic.com\/marketing351\/form\/AFIRFormulario\/formperma\/mAFR06vvo-_M_sEQA-bzDFvXCB8xCDW9P-D0wkPRzLc?zf_lang=ca',\n    origen:'https:\/\/forms.zohopublic.com',   \/\/ para validar los postMessage\n    \/* IMPORTANTE: deja en '' todo alias cuyo campo NO exista todav\u00eda en Zoho\n       Forms. Un alias vac\u00edo no se env\u00eda, y as\u00ed la URL se queda corta.\n       Enviar par\u00e1metros que no corresponden a ning\u00fan campo alarga la URL sin\n       necesidad y puede impedir que Zoho aplique el prefill. *\/\n    campos:{\n      resultado:'',        \/\/ pon 'Resultado' cuando crees ese campo\n      camino:'',           \/\/ pon 'Diagnostico' cuando lo crees\n      calificacion:'',     \/\/ pon 'Calificacion' cuando lo crees\n      prioridad:'',        \/\/ pon 'Prioridad' cuando lo crees\n      origen:'',           \/\/ mejor con \u00abValor inicial\u00bb fijo en Zoho\n      campana:'',\n      utm_source:'', utm_medium:'', utm_campaign:'', utm_content:'', utm_term:'',\n      idioma:'',           \/\/ mejor con \u00abValor inicial\u00bb fijo en Zoho\n      transcripcion:''     \/\/ pon 'Transcripcion' (multil\u00ednea) cuando lo crees\n    },\n    \/* Un campo oculto por pregunta del \u00e1rbol, para que en el correo salga\n       cada una en su propia l\u00ednea. La clave de la izquierda es interna;\n       el valor es el ALIAS del campo en Zoho Forms. *\/\n    preguntas:{\n      publico:'Acceso',\n      potencia:'Potencia',\n      antiguedad:'Instalacion',\n      tpv:'Pago',\n      precio:'Precio',\n      datos:'Datos'\n    },\n    \/\/ se manda como oculto para no pedirlo en el formulario\n    idioma:'Catal\u00e1n'   \/\/ en la versi\u00f3n catalana de la p\u00e1gina, 'Catal\u00e1n'\n  };\n\n  function urlZoho(dato){\n    var p=PERFILES[dato], c=ZOHO.campos, q=[];\n    function add(campo,valor){ if(campo&&valor) q.push(encodeURIComponent(campo)+'='+encodeURIComponent(valor)); }\n    add(c.resultado, document.querySelector('#resultado h3').textContent);\n    add(c.camino, camino.map(function(x){return NODOS[x.clave].corto+': '+x.etiqueta;}).join(' \u00b7 '));\n    add(c.calificacion, p.calificacion);\n    add(c.prioridad, p.prioridad);\n    add(c.origen, 'Landing AFIR');\n    add(c.campana, utm.utm_campaign||'norm2027');\n    ['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(function(k){add(c[k], utm[k]);});\n    \/\/ cada respuesta del \u00e1rbol a su propio campo\n    camino.forEach(function(x){ add(ZOHO.preguntas[x.clave], x.etiqueta); });\n    add(c.transcripcion, transcripcion());\n    add(c.idioma, ZOHO.idioma);\n    return ZOHO.url+(ZOHO.url.indexOf('?')>-1?'&':'?')+q.join('&');\n  }\n\n  function mostrarGracias(p){\n    var g=document.getElementById('gracias');\n    g.innerHTML='<span class=\"sello\" style=\"background:var(--verde);color:#fff;\">Rebut<\/span>'+\n      '<h2>Gr\u00e0cies, ja ho tenim<\/h2>'+\n      '<p class=\"justificado\">Hem passat la teva consulta al comercial de la teva zona amb el diagn\u00f2stic que has fet, '+\n      'aix\u00ed que no l\\'haur\u00e0s de repetir. Et contactar\u00e0 '+(p.prioridad==='Alta'?'en les properes 24 a 48 hores':'aviat')+'.<\/p>'+\n      '<ul><li>Si vols avan\u00e7ar alguna cosa, escriu a <a href=\"mailto:sales@etecnic.es\">sales@etecnic.es<\/a> dient el nom de la teva empresa.<\/li>'+\n      '<li>Mentrestant, a les preguntes freq\u00fcents de sota tens el detall de cada obligaci\u00f3.<\/li><\/ul>';\n    g.hidden=false;\n    document.getElementById('cajaFormulario').hidden=true;\n    document.getElementById('barra').dataset.ver='no';\n    encuadrar(g, g);\n    \/\/ evento de conversi\u00f3n para anal\u00edtica\n    window.dataLayer=window.dataLayer||[];\n    window.dataLayer.push({event:'lead_afir', resultado:elResultado.dataset.estado, calificacion:p.calificacion});\n  }\n\n  function pintarDepuracion(destino){\n    var panel=document.getElementById('panelDepurar');\n    var caja=document.getElementById('depurarCuerpo');\n    if(!panel||!caja) return;\n    var q=new URLSearchParams(destino.split('?')[1]||'');\n    var filas='';\n    q.forEach(function(v,k){\n      filas+='<tr><th>'+k+'<\/th><td>'+(v||'<i>(vac\u00edo)<\/i>')+'<\/td><\/tr>';\n    });\n    if(!filas) filas='<tr><td colspan=\"2\"><b>No se est\u00e1 enviando ning\u00fan par\u00e1metro.<\/b> Eso apunta a la landing, no a Zoho.<\/td><\/tr>';\n    caja.innerHTML='<div class=\"interior\">'+\n      '<p>Estos son los alias y valores que la p\u00e1gina est\u00e1 mandando. Cada <b>alias<\/b> de la izquierda tiene que existir en Zoho Forms en Configuraci\u00f3n \u2192 Prefill \u2192 Alias de campo, escrito <b>exactamente igual<\/b>.<\/p>'+\n      '<table><tr><th>Alias<\/th><th>Valor<\/th><\/tr>'+filas+'<\/table>'+\n      '<p>URL completa, para pegarla en una pesta\u00f1a nueva y ver si el formulario se rellena:<\/p>'+\n      '<textarea rows=\"4\" readonly onclick=\"this.select()\">'+destino+'<\/textarea>'+\n      '<\/div>';\n    panel.hidden=false;\n  }\n\n  \/\/ ---- validaci\u00f3n en l\u00ednea: avisa al salir del campo, no al enviar ----\n  var REGLAS={\n    nombre:{msj:'Posa el teu nom per saber com adre\u00e7ar-nos a tu.', ok:function(v){return v.trim().length>1;}},\n    empresa:{msj:'De quina empresa o organisme ens escrius?', ok:function(v){return v.trim().length>1;}},\n    email:{msj:'Aquest correu electr\u00f2nic no sembla complet. Comprova que tingui arrova i domini.',\n           ok:function(v){return \/^[^@\\s]+@[^@\\s]+\\.[^@\\s]{2,}$\/.test(v.trim());}}\n  };\n\n  function revisar(campo,silencioso){\n    var el=document.getElementById(campo), regla=REGLAS[campo];\n    var aviso=document.getElementById('fallo-'+campo);\n    var bien=regla.ok(el.value);\n    if(bien || (silencioso && !el.value)){\n      el.classList.remove('malo'); el.removeAttribute('aria-invalid'); aviso.hidden=true;\n    } else {\n      el.classList.add('malo'); el.setAttribute('aria-invalid','true');\n      aviso.textContent=regla.msj; aviso.hidden=false;\n    }\n    return bien;\n  }\n\n  Object.keys(REGLAS).forEach(function(campo){\n    var el=document.getElementById(campo);\n    el.addEventListener('blur',function(){revisar(campo,true);});\n    el.addEventListener('input',function(){\n      if(el.classList.contains('malo')) revisar(campo,true);\n    });\n  });\n\n  document.getElementById('formulario').addEventListener('submit',function(ev){\n    ev.preventDefault();\n    var f=ev.target, aviso=document.getElementById('recogida'), boton=document.getElementById('botonEnviar');\n    aviso.className='recogida'; aviso.textContent='';\n\n    var valido=true, primerFallo=null;\n    Object.keys(REGLAS).forEach(function(campo){\n      if(!revisar(campo,false)){ valido=false; if(!primerFallo) primerFallo=campo; }\n    });\n    if(!valido){ document.getElementById(primerFallo).focus(); return; }\n    if(!f.rgpd.checked){\n      aviso.className='aviso-error';\n      aviso.textContent='Marca la casella de la pol\u00edtica de privacitat per poder enviar-ho.';\n      f.rgpd.focus(); return;\n    }\n\n    var puntos=f.querySelector('input[name=\"puntos\"]:checked');\n    var estado=elResultado.dataset.estado;\n    var p=PERFILES[estado];\n    var envio={\n      nombre:f.nombre.value.trim(), empresa:f.empresa.value.trim(), email:f.email.value.trim(),\n      telefono:f.telefono.value.trim(), provincia:f.provincia.value.trim(),\n      puntos_gestionados:puntos?puntos.value:'', mensaje:f.mensaje.value.trim(),\n      diagnostico:respuestas(),\n      respuestas_texto:etiquetadas(),\n      camino:camino.map(function(x){return NODOS[x.clave].corto+': '+x.etiqueta;}).join(' \u00b7 '),\n      transcripcion:transcripcion(),\n      resultado:estado, resultado_titulo:document.querySelector('#resultado h3').textContent,\n      calificacion:p.calificacion, prioridad:p.prioridad,\n      origen:'Landing AFIR', campana:utm.utm_campaign||'norm2027',\n      utm_source:utm.utm_source, utm_medium:utm.utm_medium, utm_campaign:utm.utm_campaign,\n      utm_content:utm.utm_content, utm_term:utm.utm_term,\n      pagina:location.href.split('?')[0], referrer:document.referrer||'',\n      consentimiento_rgpd:true,\n      consentimiento_texto:'Pol\u00edtica de privacidad aceptada en el formulario de la landing AFIR (versi\u00f3n catalana)',\n      consentimiento_fecha:new Date().toISOString()\n    };\n\n    boton.disabled=true; boton.textContent='Enviant\u2026';\n\n    fetch(WEBHOOK,{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify(envio)})\n      .then(function(r){ if(!r.ok) throw new Error('HTTP '+r.status); return r; })\n      .then(function(){ mostrarGracias(p); })\n      .catch(function(){\n        boton.disabled=false; boton.textContent=p.cta;\n        aviso.className='aviso-error';\n        aviso.textContent='No ho hem pogut enviar. Torna-ho a provar en un moment o escriu-nos a sales@etecnic.es i t\\'atenem igualment.';\n        console.warn('[Landing AFIR] fall\u00f3 el env\u00edo. Payload:', envio);\n      });\n  });\n\n  \/* ---- Zoho Forms avisa del env\u00edo por postMessage (Compartir > Insertar >\n     Google Tag Manager & Custom Tracking, hay que activarlo all\u00ed).\n     As\u00ed la conversi\u00f3n se mide sin necesidad de redirigir a una p\u00e1gina de gracias. ---- *\/\n  window.addEventListener('message',function(ev){\n    if(MODO!=='zoho') return;\n    if(ev.origin!==ZOHO.origen) return;   \/\/ no aceptar mensajes de cualquier sitio\n    console.log('[Landing AFIR] mensaje de Zoho Forms:', ev.data);\n    var d=ev.data, texto=(typeof d==='string')?d:JSON.stringify(d||'');\n    \/\/ Zoho no documenta el contenido exacto: reconocemos el env\u00edo de forma laxa\n    if(\/submit|success|thank\/i.test(texto)){\n      var estado=elResultado.dataset.estado;\n      if(estado && PERFILES[estado]) mostrarGracias(PERFILES[estado]);\n    }\n  },false);\n\n  document.getElementById('barraBoton').addEventListener('click',function(){\n    var caja=document.getElementById('cajaFormulario');\n    encuadrar(caja, caja);\n    setTimeout(function(){document.getElementById('nombre').focus({preventScroll:true});},420);\n  });\n\n  \/\/ el bot\u00f3n de la portada baja al diagn\u00f3stico\n  (function(){\n    var b=document.getElementById('irDiagnostico');\n    if(!b) return;\n    b.addEventListener('click',function(ev){\n      ev.preventDefault();\n      encuadrar(document.getElementById('diagnostico'));\n    });\n  })();\n\n  \/\/ la imagen del t\u00f3tem se oculta mientras no haya URL puesta\n  (function(){\n    var img=document.getElementById('imgTotem'), fig=document.getElementById('figuraTotem');\n    if(!img||!fig) return;\n    if(!img.getAttribute('src') || img.getAttribute('src').indexOf('PEGA_AQUI')>-1){ fig.hidden=true; return; }\n    img.addEventListener('error',function(){fig.hidden=true;});\n  })();\n\n  render();\n})();\n<\/script>\n<\/div>\n<\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":261,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-32175","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>T&#039;obliga l&#039;AFIR a posar un lector de targetes?<\/title>\n<meta name=\"description\" content=\"Punts d&#039;acc\u00e9s p\u00fablic de 50 kW o m\u00e9s: pagament amb targeta obligatori des d&#039;abril de 2024, i abans de l&#039;1 de gener de 2027 si ja estaven instal\u00b7lats.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/\" \/>\n<meta property=\"og:locale\" content=\"ca_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"T&#039;obliga l&#039;AFIR a posar un lector de targetes?\" \/>\n<meta property=\"og:description\" content=\"Sis preguntes sobre la teva instal\u00b7laci\u00f3 i saps qu\u00e8 t&#039;exigeix el Reglament (UE) 2023\/1804, amb quina data i qu\u00e8 et falta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/\" \/>\n<meta property=\"og:site_name\" content=\"Etecnic - Delivering End-to-end charging solution for electric vehicles\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/etecnic?fref=ts%2f\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-07T07:29:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/09\/og-afir-ca-1200x630-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@etecnic\" \/>\n<meta name=\"twitter:label1\" content=\"Temps estimat de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"38 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/etecnic.es\\\/ca\\\/afir-lector-targetes-punts-recarrega\\\/\",\"url\":\"https:\\\/\\\/etecnic.es\\\/ca\\\/afir-lector-targetes-punts-recarrega\\\/\",\"name\":\"T'obliga l'AFIR a posar un lector de targetes?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/etecnic.es\\\/#website\"},\"datePublished\":\"2026-09-03T10:44:58+00:00\",\"dateModified\":\"2026-09-07T07:29:13+00:00\",\"description\":\"Punts d'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s: pagament amb targeta obligatori des d'abril de 2024, i abans de l'1 de gener de 2027 si ja estaven instal\u00b7lats.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/etecnic.es\\\/ca\\\/afir-lector-targetes-punts-recarrega\\\/#breadcrumb\"},\"inLanguage\":\"ca\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/etecnic.es\\\/ca\\\/afir-lector-targetes-punts-recarrega\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/etecnic.es\\\/ca\\\/afir-lector-targetes-punts-recarrega\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/etecnic.es\\\/ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AFIR Landing &#8211; CA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/etecnic.es\\\/#website\",\"url\":\"https:\\\/\\\/etecnic.es\\\/\",\"name\":\"Etecnic - Delivering End-to-end charging solution for electric vehicles\",\"description\":\"EVcharge is the software platform that allows you to manage and operate your smart charging points to scale your business. Comprehensive control software and App solution.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/etecnic.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ca\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"T'obliga l'AFIR a posar un lector de targetes?","description":"Punts d'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s: pagament amb targeta obligatori des d'abril de 2024, i abans de l'1 de gener de 2027 si ja estaven instal\u00b7lats.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/","og_locale":"ca_ES","og_type":"article","og_title":"T'obliga l'AFIR a posar un lector de targetes?","og_description":"Sis preguntes sobre la teva instal\u00b7laci\u00f3 i saps qu\u00e8 t'exigeix el Reglament (UE) 2023\/1804, amb quina data i qu\u00e8 et falta.","og_url":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/","og_site_name":"Etecnic - Delivering End-to-end charging solution for electric vehicles","article_publisher":"https:\/\/www.facebook.com\/etecnic?fref=ts%2f","article_modified_time":"2026-09-07T07:29:13+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/etecnic.es\/wp-content\/uploads\/2026\/09\/og-afir-ca-1200x630-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@etecnic","twitter_misc":{"Temps estimat de lectura":"38 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/","url":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/","name":"T'obliga l'AFIR a posar un lector de targetes?","isPartOf":{"@id":"https:\/\/etecnic.es\/#website"},"datePublished":"2026-09-03T10:44:58+00:00","dateModified":"2026-09-07T07:29:13+00:00","description":"Punts d'acc\u00e9s p\u00fablic de 50 kW o m\u00e9s: pagament amb targeta obligatori des d'abril de 2024, i abans de l'1 de gener de 2027 si ja estaven instal\u00b7lats.","breadcrumb":{"@id":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/#breadcrumb"},"inLanguage":"ca","potentialAction":[{"@type":"ReadAction","target":["https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/etecnic.es\/ca\/afir-lector-targetes-punts-recarrega\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/etecnic.es\/ca\/"},{"@type":"ListItem","position":2,"name":"AFIR Landing &#8211; CA"}]},{"@type":"WebSite","@id":"https:\/\/etecnic.es\/#website","url":"https:\/\/etecnic.es\/","name":"Etecnic - Delivering End-to-end charging solution for electric vehicles","description":"EVcharge is the software platform that allows you to manage and operate your smart charging points to scale your business. Comprehensive control software and App solution.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/etecnic.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ca"}]}},"_links":{"self":[{"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/pages\/32175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/users\/261"}],"replies":[{"embeddable":true,"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/comments?post=32175"}],"version-history":[{"count":4,"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/pages\/32175\/revisions"}],"predecessor-version":[{"id":32205,"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/pages\/32175\/revisions\/32205"}],"wp:attachment":[{"href":"https:\/\/etecnic.es\/ca\/wp-json\/wp\/v2\/media?parent=32175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}