{"id":156718,"date":"2026-09-03T14:57:31","date_gmt":"2026-09-03T12:57:31","guid":{"rendered":"https:\/\/gamestrategies.io\/?page_id=156718"},"modified":"2026-09-04T10:04:51","modified_gmt":"2026-09-04T08:04:51","slug":"calculadora-kepler-hoteles","status":"publish","type":"page","link":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/","title":{"rendered":"Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"156718\" class=\"elementor elementor-156718 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e5d8c29d elementor-widget elementor-widget-html\" data-id=\"e5d8c29d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        const form = document.querySelector('.elementor-form');\r\n        const emailField = form.querySelector('input[type=\"email\"]');\r\n        \r\n        form.addEventListener('submit', function(event) {\r\n            const email = emailField.value;\r\n            const bannedDomains = [\"gmail.com\", \"icloud.com\", \"hotmail.com\", \"yahoo.com\"];\r\n            \r\n            \/\/ Extraer el dominio del correo\r\n            const emailDomain = email.split('@').pop();\r\n            \r\n            if (bannedDomains.includes(emailDomain.toLowerCase())) {\r\n                event.preventDefault();  \/\/ Detiene el env\u00edo del formulario\r\n                alert('Por favor, utiliza un correo corporativo.');\r\n                return false; \/\/ Asegura que el formulario no se env\u00ede\r\n            }\r\n        });\r\n\r\n        \/\/ Impide el env\u00edo si se hace por medios no convencionales (refuerza la seguridad)\r\n        form.addEventListener('submit', function(event) {\r\n            if (!emailField.value || emailField.value === \"\") {\r\n                event.preventDefault();  \/\/ Detiene el env\u00edo del formulario\r\n            }\r\n        });\r\n    });\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b2abc893 e-con-full e-flex e-con e-parent\" data-id=\"b2abc893\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-625c14d6 elementor-widget elementor-widget-html\" data-id=\"625c14d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>.elementor-element-b2abc893{gap:0!important;padding:0!important;}<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dddd694 elementor-widget elementor-widget-html\" data-id=\"3dddd694\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n:root{\n  --white:#FFFFFF; --tint:#EDF7FD; --sky:#27AAF0; --blue:#0060C2; --blue-bright:#007EFE; --navy:#00356B;\n  --orange:#F89A3E; --orange-2:#FFB066; --gray-mid:#B6B6B6; --gray-dark:#515151;\n  --card: rgba(255,255,255,0.85); --text:#0f172a; --muted:#64748b;\n  --primary: var(--navy); --primary-2: var(--blue); --accent:#c9a227; --accent-2:#e7c85a; --success:#16a34a;\n  --border:#e3e8ee; --shadow: 0 34px 70px -34px rgba(0,53,107,0.32); --radius:26px;\n}\n*{ box-sizing:border-box; }\nhtml, body{ height:100%; }\nbody{ margin:0; overflow-x:hidden; font-family:'Open Sans', ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial; color:var(--gray-dark); background:#fff; }\n.bg{ position:absolute; left:50%; top:-8%; transform:translateX(-50%); width:1100px; height:720px; max-width:200vw;\n  background: radial-gradient(circle at 30% 35%, rgba(0,96,194,0.34), transparent 55%), radial-gradient(circle at 72% 62%, rgba(201,162,39,0.22), transparent 55%), radial-gradient(circle at 50% 50%, rgba(39,170,240,0.28), transparent 60%);\n  filter:blur(95px); opacity:.9; z-index:-1; pointer-events:none; }\n.container{ max-width:980px; margin:0 auto; padding:64px 18px 50px; position:relative; z-index:2; }\n.header{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:22px; flex-wrap:wrap; }\n.brand{ display:flex; gap:12px; align-items:center; }\n.brand-text{ color:var(--navy); }\n.brand-name{ font-family:'Poppins',sans-serif; font-weight:700; font-size:12px; text-transform:uppercase; letter-spacing:.12em; color:var(--blue); }\n.brand-sub{ font-weight:750; margin-top:3px; color:var(--navy); }\n.header-right{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }\n.trust{ display:flex; gap:8px; flex-wrap:wrap; }\n.pill{ font-size:11px; font-weight:600; padding:6px 10px; border-radius:999px; background:#fff; border:1px solid var(--border); box-shadow:0 6px 18px -10px rgba(0,53,107,.2); color:var(--navy); }\n.lang{ display:flex; align-items:center; gap:8px; padding:6px 10px; border-radius:999px; background:#fff; border:1px solid var(--border); box-shadow:0 6px 18px -10px rgba(0,53,107,.2); color:var(--navy); }\n.lang-label{ font-size:12px; opacity:.85; }\n.lang-select{ appearance:none; -webkit-appearance:none; border:1px solid var(--border); background:#fff; color:var(--navy); padding:4px 22px 4px 4px; border-radius:999px; font-weight:600; font-size:12px; cursor:pointer; outline:none; }\n.lang-select option{ color:#111827; background:#fff; }\n.card{ background:rgba(255,255,255,.82); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); border:1px solid rgba(255,255,255,.95); border-radius:var(--radius); padding:28px 26px 24px; box-shadow:var(--shadow); }\n.screen{ display:none; } .screen.active{ display:block; }\n.step{ display:none; } .step.active{ display:block; }\nh1{ font-family:'Poppins',sans-serif; font-weight:800; font-size:clamp(22px,2.8vw,29px); line-height:1.28; letter-spacing:-.3px; margin:0 0 10px; color:var(--navy); }\nh2{ font-family:'Poppins',sans-serif; font-weight:800; font-size:18px; margin:0 0 6px; color:var(--navy); }\nh3{ font-family:'Poppins',sans-serif; font-weight:700; font-size:13.5px; margin:0 0 6px; color:var(--navy); }\n.lead{ font-size:14.5px; line-height:1.6; color:var(--gray-dark); }\n.muted{ color:var(--muted); } .tiny{ font-size:11px; } .small{ font-size:12px; }\n.big{ font-size:22px; font-weight:800; margin-top:8px; color:var(--navy); font-family:'Poppins',sans-serif; }\n.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:16px 0 4px; }\n.info-box{ border:1px solid var(--border); border-radius:16px; padding:14px; background:#fff; }\n.info-box ul{ margin:10px 0 0 18px; padding:0; line-height:1.6; font-size:13.5px; }\n.field{ margin-top:10px; display:flex; align-items:center; gap:10px; border:1.5px solid var(--border); border-radius:14px; padding:10px 13px; background:#fff; transition:border-color .16s ease; }\n.field:focus-within{ border-color:var(--sky); }\n.field input, .field select{ flex:1; border:none; outline:none; font-size:16px; background:transparent; color:var(--navy); -webkit-appearance:none; appearance:none; }\n.prefix, .suffix{ font-weight:700; color:var(--gray-mid); }\n.toggle-row{ margin-top:10px; }\n.toggle{ display:inline-flex; align-items:center; gap:10px; border-radius:999px; padding:9px 14px; border:1.5px solid var(--border); background:#fff; cursor:pointer; font-weight:700; color:var(--navy); }\n.toggle .dot{ width:10px; height:10px; border-radius:50%; background:var(--gray-mid); }\n.toggle[aria-pressed=\"true\"]{ border-color:rgba(201,162,39,.55); background:rgba(201,162,39,.10); }\n.toggle[aria-pressed=\"true\"] .dot{ background:var(--accent); }\n.adr-block{ margin-top:10px; } .hidden{ display:none; }\n.assumption{ margin-top:14px; border:1px solid var(--border); border-radius:16px; padding:14px; background:var(--tint); }\n.assumption-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:14px; flex-wrap:wrap; }\n.badge{ font-weight:800; font-family:'Poppins',sans-serif; padding:6px 11px; border-radius:999px; background:rgba(201,162,39,.16); border:1px solid rgba(201,162,39,.4); color:#8a6a10; }\n#centerPct{ width:100%; margin:10px 0 6px; accent-color:var(--blue); }\n.range-labels{ display:flex; justify-content:space-between; font-size:11px; color:var(--muted); }\n.btn{ border:1px solid var(--border); background:#fff; color:var(--navy); padding:11px 18px; border-radius:999px; font-weight:600; font-family:'Poppins',sans-serif; font-size:13.5px; cursor:pointer; transition:transform .18s ease, box-shadow .18s ease; }\n.btn:hover{ transform:translateY(-2px); box-shadow:0 10px 24px -10px rgba(0,53,107,.25); }\n.btn-primary{ background:linear-gradient(135deg, var(--primary-2), var(--primary)); border:none; color:#fff; box-shadow:0 16px 32px -14px rgba(0,96,194,.55); }\n.btn-ghost{ background:#fff; }\n.btn-small{ padding:8px 14px; font-size:12px; }\n.nav{ margin-top:18px; display:flex; justify-content:space-between; }\n.topbar{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:18px; }\n.progress-wrap{ flex:1; max-width:300px; }\n.progress-label{ font-family:'Poppins',sans-serif; font-size:11px; font-weight:600; color:var(--gray-mid); margin-bottom:6px; }\n.progress{ height:5px; background:#e2ecf5; border-radius:999px; overflow:hidden; }\n.progress-bar{ height:100%; background:linear-gradient(90deg, var(--sky), var(--blue-bright)); transition:width .45s cubic-bezier(.22,.9,.32,1); }\n.loading{ text-align:center; padding:22px 0; }\n.spinner{ width:40px; height:40px; border-radius:50%; border:4px solid var(--border); border-top:4px solid var(--blue); margin:0 auto 14px; animation:spin 1s linear infinite; }\n@keyframes spin{ to{ transform:rotate(360deg); } }\n.cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-top:16px; }\n.result-card{ border-radius:16px; padding:14px; background:#fff; border:1px solid var(--border); }\n.result-card .label{ font-size:11.5px; color:var(--gray-mid); font-weight:700; font-family:'Poppins',sans-serif; text-transform:uppercase; letter-spacing:.04em; }\n.result-card .value{ font-size:21px; font-weight:800; margin-top:8px; color:var(--navy); font-family:'Poppins',sans-serif; }\n.result-card.highlight{ background:linear-gradient(135deg, rgba(201,162,39,.16), rgba(201,162,39,.05)); border:1px solid rgba(201,162,39,.35); }\n.cta-box{ background:linear-gradient(150deg, var(--navy), var(--blue)); border-radius:22px; padding:22px 20px; margin-top:16px; display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; color:#fff; }\n.cta-box h3{ color:#fff; } .cta-box p{ color:rgba(255,255,255,.82); margin:0; }\n.cta-box .btn-primary{ background:linear-gradient(135deg, var(--orange), var(--orange-2)); box-shadow:0 14px 30px -10px rgba(248,154,62,.55); white-space:nowrap; }\n.actions{ display:flex; gap:10px; flex-wrap:wrap; margin-top:16px; }\n.footer{ margin-top:22px; text-align:center; color:var(--gray-mid); }\n@media(max-width:860px){ .grid-2{ grid-template-columns:1fr; } .cards{ grid-template-columns:1fr; } .cta-box{ flex-direction:column; align-items:flex-start; } }\n\n\/* ===== Hero oscuro (mismo sistema que \/es\/generador-de-plan-de-formacion-con-ia\/) ===== *\/\n.kc-hero{ width:100vw; margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw); background:#050e1c; color:#cddcec; position:relative; overflow:hidden; isolation:isolate; }\n.kc-hero::before{ content:''; position:absolute; inset:0; z-index:1; pointer-events:none;\n  background-image:linear-gradient(to right, rgba(125,199,255,.07) 1px, transparent 1px), linear-gradient(to bottom, rgba(125,199,255,.07) 1px, transparent 1px);\n  background-size:64px 64px; -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 60%, #000 20%, transparent 75%); mask-image:radial-gradient(ellipse 90% 70% at 50% 60%, #000 20%, transparent 75%); }\n.kc-hero .bg{ width:1200px; height:780px; top:-6%; opacity:.85; filter:blur(110px);\n  background: radial-gradient(circle at 28% 34%, rgba(56,208,255,.42), transparent 58%), radial-gradient(circle at 74% 28%, rgba(123,92,255,.36), transparent 58%), radial-gradient(circle at 52% 74%, rgba(47,123,255,.34), transparent 60%), radial-gradient(circle at 88% 66%, rgba(255,171,94,.18), transparent 55%); }\n.kc-hero .container{ position:relative; z-index:3; }\n.kc-hero .brand-name{ color:#38d0ff !important; } .kc-hero .brand-sub{ color:#fff !important; }\n.kc-hero .pill, .kc-hero .lang{ background:rgba(255,255,255,.06) !important; border-color:rgba(125,199,255,.16) !important; color:#bfe4ff !important; box-shadow:none !important; }\n.kc-hero .lang-label{ display:none !important; }\n.kc-hero .lang{ padding:6px 10px !important; }\n.kc-hero .lang-select{ background:transparent !important; color:#bfe4ff !important; font-weight:600 !important; border-color:rgba(125,199,255,.16) !important; }\n.kc-hero .lang-select option{ color:#111827 !important; background:#fff !important; }\n.kc-hero h1, .kc-hero h2, .kc-hero h3{ color:#fff !important; text-transform:none !important; }\n.kc-hero .lead{ color:#cddcec !important; } .kc-hero .muted{ color:#8da1b8 !important; }\n.kc-hero .card{ background:linear-gradient(165deg, rgba(255,255,255,.075), rgba(255,255,255,.03)) !important; border:1px solid rgba(125,199,255,.16) !important; box-shadow:0 50px 100px -40px rgba(0,0,0,.75), inset 0 1px 0 rgba(255,255,255,.09) !important; }\n.kc-hero .info-box{ background:rgba(255,255,255,.04) !important; border-color:rgba(125,199,255,.16) !important; }\n.kc-hero .info-box h3{ color:#fff !important; }\n.kc-hero .field{ background:rgba(255,255,255,.04) !important; border-color:rgba(125,199,255,.16) !important; }\n.kc-hero .field input, .kc-hero .field select{ background:transparent !important; color:#fff !important; -webkit-text-fill-color:#fff !important; }\n.kc-hero .field select option{ color:#111827 !important; background:#fff !important; -webkit-text-fill-color:#111827 !important; }\n.kc-hero .prefix, .kc-hero .suffix{ color:#8da1b8 !important; }\n.kc-hero .toggle{ background:rgba(255,255,255,.04) !important; border-color:rgba(125,199,255,.16) !important; color:#fff !important; }\n.kc-hero .toggle .dot{ background:#8da1b8 !important; }\n.kc-hero .toggle[aria-pressed=\"true\"]{ border-color:#e7c85a !important; background:rgba(231,200,90,.14) !important; }\n.kc-hero .toggle[aria-pressed=\"true\"] .dot{ background:#e7c85a !important; }\n.kc-hero .assumption{ background:rgba(255,255,255,.04) !important; border-color:rgba(125,199,255,.16) !important; }\n.kc-hero .badge{ background:rgba(231,200,90,.16) !important; border-color:rgba(231,200,90,.4) !important; color:#f0d98a !important; }\n.kc-hero .range-labels{ color:#8da1b8 !important; }\n.kc-hero .big{ color:#fff !important; }\n.kc-hero .btn-ghost{ background:rgba(255,255,255,.04) !important; color:#9fd8ff !important; border-color:rgba(125,199,255,.16) !important; text-transform:none !important; }\n.kc-hero .btn-primary{ background:linear-gradient(135deg,#38d0ff,#2f7bff 55%,#7b5cff) !important; color:#fff !important; font-weight:600 !important; text-shadow:0 1px 3px rgba(0,0,0,.3) !important; box-shadow:0 16px 40px -16px rgba(56,208,255,.85) !important; text-transform:none !important; }\n.kc-hero .progress{ background:rgba(255,255,255,.09) !important; }\n.kc-hero .progress-bar{ background:linear-gradient(90deg,#38d0ff,#7b5cff) !important; box-shadow:0 0 14px rgba(56,208,255,.65); }\n.kc-hero .result-card{ background:rgba(255,255,255,.05) !important; border-color:rgba(125,199,255,.16) !important; }\n.kc-hero .result-card .label{ color:#8da1b8 !important; } .kc-hero .result-card .value{ color:#fff !important; }\n.kc-hero .result-card.highlight{ background:linear-gradient(135deg, rgba(231,200,90,.18), rgba(231,200,90,.06)) !important; border-color:#e7c85a !important; }\n.kc-hero .cta-box{ background:linear-gradient(150deg, rgba(56,208,255,.14), rgba(123,92,255,.14)) !important; border:1px solid rgba(125,199,255,.28) !important; }\n.kc-hero .cta-box .btn-primary{ background:linear-gradient(135deg,#ffab5e,#f89a3e) !important; color:#fff !important; font-weight:600 !important; text-shadow:0 1px 3px rgba(0,0,0,.3) !important; box-shadow:0 14px 30px -10px rgba(248,154,62,.55) !important; }\n.kc-hero .footer{ color:#6f8499 !important; }\na.btn.btn-primary#cta-link{ color:#fff !important; font-weight:600 !important; text-shadow:0 1px 3px rgba(0,0,0,.3) !important; }\n\n#screen-welcome .grid-2{ grid-template-columns:1fr !important; }\n#screen-welcome .grid-2 .info-box:nth-of-type(2){ display:none !important; }\n.kc-hero [data-i18n=\"methodNote\"]{ display:none !important; }\n\n.page-header{ display:none !important; }\n\n\/* ===== Bloque de contenido SEO ===== *\/\n.kc-sec{ width:100vw; margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw); padding:80px 24px; font-family:'Open Sans',sans-serif; box-sizing:border-box; }\n.kc-sec *{ box-sizing:border-box; }\n.kc-wrap{ max-width:1000px; margin:0 auto; }\n.kc-label{ font-family:'Poppins',sans-serif; font-weight:700; font-size:12px; letter-spacing:.16em; text-transform:uppercase; margin-bottom:14px; }\n.kc-sec h2{ font-family:'Poppins',sans-serif; font-weight:800; font-size:clamp(26px,3.4vw,36px); letter-spacing:-.6px; margin:0 0 16px; text-transform:none; }\n.kc-sec h3{ font-family:'Poppins',sans-serif; font-weight:700; font-size:17.5px; margin:0 0 8px; text-transform:none; }\n.kc-intro{ font-size:16px; line-height:1.75; max-width:720px; margin:0 0 44px; }\n.kc-ev{ background:#071a33; color:#b9cbdd; }\n.kc-ev .kc-label{ color:#ffab5e; } .kc-ev h2{ color:#fff; }\n.kc-ev-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; text-align:left; }\n@media(max-width:900px){ .kc-ev-grid{ grid-template-columns:1fr; max-width:480px; margin:0 auto; } }\n.kc-ev-card{ background:rgba(255,255,255,.05); border:1px solid rgba(125,199,255,.16); border-radius:20px; padding:28px 24px; }\n.kc-ev-cifra{ font-family:'Poppins',sans-serif; font-weight:800; font-size:32px; background-image:linear-gradient(120deg,#38d0ff,#ffab5e); -webkit-background-clip:text; background-clip:text; color:transparent; margin-bottom:8px; }\n.kc-ev-card p{ font-size:13.5px; line-height:1.65; color:#b9cbdd; margin:0; }\n.kc-guia{ background:linear-gradient(180deg,#eaf4fd,#fff); color:#43536b; }\n.kc-guia .kc-label{ color:#0060c2; } .kc-guia h2,.kc-guia h3{ color:#00356b; }\n.kc-pasos{ list-style:none; padding:0; margin:0; }\n.kc-paso{ display:grid; grid-template-columns:70px 1fr; gap:20px; padding:26px 0; border-top:1px solid #dceaf7; }\n.kc-paso:first-child{ border-top:0; padding-top:0; }\n.kc-paso-n{ font-family:'Poppins',sans-serif; font-weight:800; font-size:34px; background-image:linear-gradient(150deg,#38d0ff,#7b5cff); -webkit-background-clip:text; background-clip:text; color:transparent; }\n.kc-paso p{ font-size:15px; line-height:1.7; margin:0; color:#43536b; } .kc-paso strong{ color:#00356b; }\n@media(max-width:640px){ .kc-paso{ grid-template-columns:1fr; gap:8px; } }\n.kc-faq{ background:linear-gradient(180deg,#fff,#eaf4fd); color:#43536b; }\n.kc-faq .kc-label{ color:#0060c2; } .kc-faq h2{ color:#00356b; }\n.kc-faq-lista{ margin-top:36px; display:grid; gap:10px; }\n.kc-faq details{ border:1px solid #dfeaf6; border-radius:16px; background:#fff; overflow:hidden; }\n.kc-faq details[open]{ border-color:#9fd8ff; box-shadow:0 16px 36px -22px rgba(0,53,107,.4); }\n.kc-faq summary{ cursor:pointer; list-style:none; padding:18px 50px 18px 22px; font-family:'Poppins',sans-serif; font-weight:700; font-size:15.5px; color:#00356b; position:relative; }\n.kc-faq summary::-webkit-details-marker{ display:none; }\n.kc-faq summary::after{ content:''; position:absolute; right:22px; top:50%; width:10px; height:10px; border-right:2px solid #38d0ff; border-bottom:2px solid #38d0ff; transform:translateY(-70%) rotate(45deg); transition:transform .2s ease; }\n.kc-faq details[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }\n.kc-faq details p{ margin:0; padding:0 22px 20px; font-size:14.5px; line-height:1.7; }\n.kc-cta{ background:#050e1c; color:#cddcec; text-align:center; }\n.kc-cta h2{ color:#fff; } .kc-cta p{ font-size:16px; line-height:1.75; margin:0 auto 30px; max-width:560px; }\n.kc-cta .kc-wrap{ max-width:680px; }\n.kc-cta-botones{ display:flex; gap:18px; align-items:center; justify-content:center; flex-wrap:wrap; }\n.kc-cta-link{ font-family:'Poppins',sans-serif; font-weight:700; font-size:14.5px; color:#9fd8ff; text-decoration:none; }\n.kc-cta-link:hover{ text-decoration:underline; }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7546d595 elementor-widget elementor-widget-html\" data-id=\"7546d595\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"kc-hero\"><main class=\"container\">\n    <div class=\"bg\"><\/div>\n    <header class=\"header\">\n      <div class=\"brand\">\n        <div class=\"brand-text\">\n          <div class=\"brand-name\" data-i18n=\"brandName\">Kepler<\/div>\n          <div class=\"brand-sub\" data-i18n=\"brandSub\">Ingresos por Reputaci\u00f3n Hotelera<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"header-right\">\n        <div class=\"trust\">\n          <span class=\"pill\" data-i18n=\"pillFree\">100% gratuita<\/span>\n          <span class=\"pill\" data-i18n=\"pillInstant\">Resultados inmediatos<\/span>\n          <span class=\"pill\" data-i18n=\"pillScenarios\">3 escenarios<\/span>\n        <\/div>\n\n        <div class=\"lang\">\n          <label class=\"lang-label\" for=\"langSelect\" data-i18n=\"langLabel\">Idioma<\/label>\n          <select id=\"langSelect\" class=\"lang-select\" aria-label=\"Idioma\">\n            <option value=\"es\">ES<\/option>\n            <option value=\"fr\">FR<\/option>\n            <option value=\"en\">EN<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n    <\/header>\n\n    <!-- WELCOME -->\n    <section id=\"screen-welcome\" class=\"card screen active\">\n      <h1 data-i18n=\"welcomeTitle\">\u00bfCu\u00e1nto ingreso podr\u00edas capturar con +0,1 puntos de valoraci\u00f3n?<\/h1>\n      <p class=\"lead\" data-i18n=\"welcomeLead\">\n        En menos de 2 minutos, estima el impacto potencial de mejorar tu rating (p. ej., de 4,1 a 4,4) en ingresos.\n      <\/p>\n\n      <div class=\"grid-2\">\n        <div class=\"info-box\">\n          <h3 data-i18n=\"welcomeBox1Title\">Qu\u00e9 vas a obtener<\/h3>\n          <ul>\n            <li data-i18n=\"welcomeBox1Li1\">\ud83d\udcb6 Impacto anual (prudente \/ central \/ alto)<\/li>\n            <li data-i18n=\"welcomeBox1Li2\">\ud83d\udcc6 Impacto mensual estimado<\/li>\n            <li data-i18n=\"welcomeBox1Li3\">\ud83e\udde0 Sensibilidad: cada +0,1 \u2248 \u20acX\/a\u00f1o<\/li>\n            <li data-i18n=\"welcomeBox1Li4\">\ud83c\udf19 Opcional: equivalente en noches (si a\u00f1ades ADR)<\/li>\n          <\/ul>\n        <\/div>\n\n        <div class=\"info-box\">\n          <h3 data-i18n=\"welcomeBox2Title\">Contexto (estudios sectoriales)<\/h3>\n          <p data-i18n=\"welcomeBox2P1\">\n            Diferentes an\u00e1lisis acad\u00e9micos y del sector hotelero muestran que mejoras peque\u00f1as en la valoraci\u00f3n pueden asociarse\n            a incrementos de demanda\/ingresos (mejor conversi\u00f3n y visibilidad en OTAs).\n          <\/p>\n          <p class=\"muted\" data-i18n=\"welcomeBox2P2\">\n            Para mantenerlo prudente, esta herramienta usa un rango orientativo por cada +0,1: <strong>+1,0% \/ +1,5% \/ +2,0%<\/strong>.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"actions\">\n        <button class=\"btn btn-primary\" id=\"btn-start\" data-i18n=\"btnStart\">Empezar<\/button>\n        <button class=\"btn btn-ghost\" id=\"btn-demo\" data-i18n=\"btnExample\">Ver ejemplo<\/button>\n      <\/div>\n\n      <p class=\"tiny muted\" data-i18n=\"privacyNote\">No guardamos datos. Todo se calcula en tu navegador.<\/p>\n    <\/section>\n\n    <!-- FORM -->\n    <section id=\"screen-form\" class=\"card screen\">\n      <div class=\"topbar\">\n        <div class=\"progress-wrap\">\n          <div class=\"progress-label\"><span data-i18n=\"progressLabel\">Progreso<\/span>: <span id=\"progressText\">Paso 1 de 4<\/span><\/div>\n          <div class=\"progress\">\n            <div class=\"progress-bar\" id=\"progressBar\" style=\"width: 25%\"><\/div>\n          <\/div>\n        <\/div>\n        <button class=\"btn btn-ghost btn-small\" id=\"btn-reset\" data-i18n=\"btnReset\">Reiniciar<\/button>\n      <\/div>\n\n      <div class=\"step active\" data-step=\"1\">\n        <h2 data-i18n=\"q1Title\">Ingresos anuales por habitaciones<\/h2>\n        <p class=\"muted\" data-i18n=\"q1Help\">Si no tienes el dato exacto, usa una aproximaci\u00f3n (solo habitaciones).<\/p>\n        <div class=\"field\">\n          <span class=\"prefix\">\u20ac<\/span>\n          <input type=\"number\" min=\"0\" step=\"10000\" id=\"annualRevenue\" placeholder=\"Ej. 25000000\" \/>\n        <\/div>\n      <\/div>\n\n      <div class=\"step\" data-step=\"2\">\n        <h2 data-i18n=\"q2Title\">Valoraci\u00f3n actual<\/h2>\n        <p class=\"muted\" data-i18n=\"q2Help\">Ejemplo: 4,1 (0\u20135). Puedes usar Booking\/TripAdvisor\/Google como referencia interna.<\/p>\n        <div class=\"field\">\n          <input type=\"number\" min=\"0\" max=\"5\" step=\"0.1\" id=\"ratingCurrent\" placeholder=\"Ej. 4.1\" \/>\n          <span class=\"suffix\" data-i18n=\"suffixStars\">\/5<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"step\" data-step=\"3\">\n        <h2 data-i18n=\"q3Title\">Valoraci\u00f3n objetivo<\/h2>\n        <p class=\"muted\" data-i18n=\"q3Help\">Ejemplo: 4,4. La calculadora trabaja en incrementos de 0,1.<\/p>\n        <div class=\"field\">\n          <input type=\"number\" min=\"0\" max=\"5\" step=\"0.1\" id=\"ratingTarget\" placeholder=\"Ej. 4.4\" \/>\n          <span class=\"suffix\" data-i18n=\"suffixStars\">\/5<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"step\" data-step=\"4\">\n        <h2 data-i18n=\"q4Title\">\u00bfQuieres a\u00f1adir ADR (opcional)?<\/h2>\n        <p class=\"muted\" data-i18n=\"q4Help\">\n          Si introduces tu ADR (tarifa media), convertimos el impacto a \u201cnoches equivalentes\u201d. Si no, lo omitimos.\n        <\/p>\n\n        <div class=\"toggle-row\">\n          <button class=\"toggle\" id=\"toggleAdr\" type=\"button\" aria-pressed=\"false\">\n            <span class=\"dot\"><\/span>\n            <span data-i18n=\"toggleAdrText\">A\u00f1adir ADR<\/span>\n          <\/button>\n        <\/div>\n\n        <div id=\"adrBlock\" class=\"adr-block hidden\">\n          <div class=\"field\">\n            <span class=\"prefix\">\u20ac<\/span>\n            <input type=\"number\" min=\"0\" step=\"1\" id=\"adr\" placeholder=\"Ej. 165\" \/>\n            <span class=\"suffix\" data-i18n=\"suffixAdr\">ADR<\/span>\n          <\/div>\n          <p class=\"tiny muted\" data-i18n=\"adrNote\">\n            ADR opcional: solo se usa para traducir \u20ac a noches equivalentes. No afecta al % de impacto.\n          <\/p>\n        <\/div>\n\n        <div class=\"assumption\">\n          <div class=\"assumption-head\">\n            <div>\n              <h3 data-i18n=\"assumpTitle\">Supuesto (ajustable)<\/h3>\n              <p class=\"muted\" data-i18n=\"assumpHelp\">\n                Por defecto usamos 1,0% \/ 1,5% \/ 2,0% por cada +0,1. Si quieres, ajusta el escenario central.\n              <\/p>\n            <\/div>\n            <span class=\"badge\" id=\"centerPctBadge\">1.5%<\/span>\n          <\/div>\n\n          <input id=\"centerPct\" type=\"range\" min=\"0.5\" max=\"3.0\" step=\"0.1\" value=\"1.5\" \/>\n          <div class=\"range-labels\">\n            <span>0.5%<\/span>\n            <span>3.0%<\/span>\n          <\/div>\n          <p class=\"tiny muted\" data-i18n=\"assumpFoot\">\n            El escenario prudente y alto se ajustan autom\u00e1ticamente alrededor del central (\u00b10,5 pts).\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"nav\">\n        <button class=\"btn btn-ghost\" id=\"btn-back\" data-i18n=\"btnBack\">Atr\u00e1s<\/button>\n        <button class=\"btn btn-primary\" id=\"btn-next\" data-i18n=\"btnNext\">Continuar<\/button>\n      <\/div>\n\n      <p class=\"tiny muted\" data-i18n=\"methodNote\">\n        Metodolog\u00eda: impacto \u2248 ingresos \u00d7 (incrementos de 0,1) \u00d7 (% por cada 0,1). Tres escenarios para prudencia.\n      <\/p>\n    <\/section>\n\n    <!-- LOADING -->\n    <section id=\"screen-loading\" class=\"card screen\">\n      <div class=\"loading\">\n        <div class=\"spinner\"><\/div>\n        <h2 data-i18n=\"loadingTitle\">Calculando\u2026<\/h2>\n        <p class=\"muted\" data-i18n=\"loadingText\">Escenarios prudente, central y alto + sensibilidad por +0,1.<\/p>\n      <\/div>\n    <\/section>\n\n    <!-- RESULTS -->\n    <section id=\"screen-results\" class=\"card screen\">\n      <div class=\"results-head\">\n        <h2 data-i18n=\"resultsTitle\">Impacto estimado<\/h2>\n        <p class=\"muted\" id=\"resultsSubtitle\"><\/p>\n      <\/div>\n\n      <div class=\"cards\">\n        <div class=\"result-card\">\n          <div class=\"label\" data-i18n=\"r1Label\">\ud83d\udfe6 Prudente<\/div>\n          <div class=\"value\" id=\"outLow\">\u20ac\u2014<\/div>\n          <div class=\"small muted\" id=\"outLowNote\"><\/div>\n        <\/div>\n\n        <div class=\"result-card highlight\">\n          <div class=\"label\" data-i18n=\"r2Label\">\ud83d\udfe8 Central<\/div>\n          <div class=\"value\" id=\"outMid\">\u20ac\u2014<\/div>\n          <div class=\"small muted\" id=\"outMidNote\"><\/div>\n        <\/div>\n\n        <div class=\"result-card\">\n          <div class=\"label\" data-i18n=\"r3Label\">\ud83d\udfe9 Alto<\/div>\n          <div class=\"value\" id=\"outHigh\">\u20ac\u2014<\/div>\n          <div class=\"small muted\" id=\"outHighNote\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"grid-2\" style=\"margin-top: 14px;\">\n        <div class=\"info-box\">\n          <h3 data-i18n=\"sensTitle\">Sensibilidad<\/h3>\n          <p class=\"muted\" data-i18n=\"sensText\">Cada +0,1 puntos equivale aproximadamente a:<\/p>\n          <div class=\"big\" id=\"outPer01\">\u20ac\u2014<\/div>\n          <p class=\"tiny muted\" id=\"outPer01Note\"><\/p>\n        <\/div>\n\n        <div class=\"info-box\">\n          <h3 data-i18n=\"nightsTitle\">Equivalente en noches<\/h3>\n          <p class=\"muted\" data-i18n=\"nightsText\">Solo si a\u00f1ades ADR. Si no, lo omitimos.<\/p>\n          <div class=\"big\" id=\"outNights\">\u2014<\/div>\n          <p class=\"tiny muted\" id=\"outNightsNote\"><\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cta\">\n        <div class=\"cta-box\">\n          <div>\n            <h3 data-i18n=\"ctaTitle\">\u00bfQuieres capturar ese impacto?<\/h3>\n            <p class=\"muted\" data-i18n=\"ctaText\">\n              Podemos desglosar qu\u00e9 palancas operativas mueven el rating (tiempos, consistencia, est\u00e1ndares, respuesta a reviews) y priorizar acciones.\n            <\/p>\n          <\/div>\n          <a class=\"btn btn-primary\" id=\"cta-link\" href=\"#\" target=\"_self\" rel=\"noopener\" data-i18n=\"ctaBtn\">Pedir demo<\/a>\n        <\/div>\n\n        <div class=\"actions\">\n          <button class=\"btn btn-ghost\" id=\"btn-recalc\" data-i18n=\"btnRecalc\">Recalcular<\/button>\n          <button class=\"btn btn-ghost\" id=\"btn-copy\" data-i18n=\"btnCopy\">Copiar resultados<\/button>\n        <\/div>\n\n        <p class=\"tiny muted\" id=\"copyStatus\"><\/p>\n      <\/div>\n    <\/section>\n\n    <footer class=\"footer\">\n      <span class=\"tiny muted\">\u00a9 <span id=\"year\"><\/span> \u2014 <span data-i18n=\"footerText\">Herramienta interactiva gratuita<\/span><\/span>\n    <\/footer>\n  <\/main><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44949b62 elementor-widget elementor-widget-html\" data-id=\"44949b62\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\nconst CTA_URL = {\n  es: \"https:\/\/gamestrategies.io\/es\/pedir-una-demo-personalizada\/?utm_source=calculadora_kepler&utm_medium=lead_magnet&utm_campaign=hoteles\",\n  en: \"https:\/\/gamestrategies.io\/en\/demo\/?utm_source=calculadora_kepler&utm_medium=lead_magnet&utm_campaign=hoteles\",\n  fr: \"https:\/\/gamestrategies.io\/fr\/demander-une-demo-personalisee\/?utm_source=calculadora_kepler&utm_medium=lead_magnet&utm_campaign=hoteles\"\n};\n\nfunction scenarioPercents(centerPct){\n  const low = Math.max(0.1, centerPct - 0.5);\n  const high = centerPct + 0.5;\n  return { low, mid: centerPct, high };\n}\n\nconst i18n = {\n  es: {\n    langLabel: \"Idioma\", brandName: \"Kepler\", brandSub: \"Ingresos por Reputaci\u00f3n Hotelera\",\n    pillFree: \"100% gratuita\", pillInstant: \"Resultados inmediatos\", pillScenarios: \"3 escenarios\",\n    welcomeTitle: \"\u00bfCu\u00e1nto ingreso podr\u00edas capturar con +0,1 puntos de valoraci\u00f3n?\",\n    welcomeLead: \"En menos de 2 minutos, estima el impacto potencial de mejorar tu rating (p. ej., de 4,1 a 4,4) en ingresos.\",\n    welcomeBox1Title: \"Qu\u00e9 vas a obtener\",\n    welcomeBox1Li1: \"\ud83d\udcb6 Impacto anual (prudente \/ central \/ alto)\",\n    welcomeBox1Li2: \"\ud83d\udcc6 Impacto mensual estimado\",\n    welcomeBox1Li3: \"\ud83e\udde0 Sensibilidad: cada +0,1 \u2248 \u20acX\/a\u00f1o\",\n    welcomeBox1Li4: \"\ud83c\udf19 Opcional: equivalente en noches (si a\u00f1ades ADR)\",\n    welcomeBox2Title: \"Contexto (estudios sectoriales)\",\n    welcomeBox2P1: \"Diferentes an\u00e1lisis acad\u00e9micos y del sector hotelero muestran que mejoras peque\u00f1as en la valoraci\u00f3n pueden asociarse a incrementos de demanda\/ingresos (mejor conversi\u00f3n y visibilidad en OTAs).\",\n    welcomeBox2P2: \"Para mantenerlo prudente, esta herramienta usa un rango orientativo por cada +0,1: <strong>+1,0% \/ +1,5% \/ +2,0%<\/strong>.\",\n    btnStart: \"Empezar\", btnExample: \"Ver ejemplo\", privacyNote: \"No guardamos datos. Todo se calcula en tu navegador.\",\n    progressLabel: \"Progreso\", btnReset: \"Reiniciar\",\n    q1Title: \"Ingresos anuales por habitaciones\", q1Help: \"Si no tienes el dato exacto, usa una aproximaci\u00f3n (solo habitaciones).\",\n    q2Title: \"Valoraci\u00f3n actual\", q2Help: \"Ejemplo: 4,1 (0\u20135). Puedes usar Booking\/TripAdvisor\/Google como referencia interna.\",\n    q3Title: \"Valoraci\u00f3n objetivo\", q3Help: \"Ejemplo: 4,4. La calculadora trabaja en incrementos de 0,1.\",\n    q4Title: \"\u00bfQuieres a\u00f1adir ADR (opcional)?\", q4Help: \"Si introduces tu ADR (tarifa media), convertimos el impacto a \u201cnoches equivalentes\u201d. Si no, lo omitimos.\",\n    toggleAdrText: \"A\u00f1adir ADR\", suffixStars: \"\/5\", suffixAdr: \"ADR\",\n    adrNote: \"ADR opcional: solo se usa para traducir \u20ac a noches equivalentes. No afecta al % de impacto.\",\n    assumpTitle: \"Supuesto (ajustable)\", assumpHelp: \"Por defecto usamos 1,0% \/ 1,5% \/ 2,0% por cada +0,1. Si quieres, ajusta el escenario central.\",\n    assumpFoot: \"El escenario prudente y alto se ajustan autom\u00e1ticamente alrededor del central (\u00b10,5 pts).\",\n    btnBack: \"Atr\u00e1s\", btnNext: \"Continuar\", btnViewResults: \"Ver resultados\",\n    methodNote: \"Metodolog\u00eda: impacto \u2248 ingresos \u00d7 (incrementos de 0,1) \u00d7 (% por cada 0,1). Tres escenarios para prudencia.\",\n    loadingTitle: \"Calculando\u2026\", loadingText: \"Escenarios prudente, central y alto + sensibilidad por +0,1.\",\n    resultsTitle: \"Impacto estimado\", r1Label: \"\ud83d\udfe6 Prudente\", r2Label: \"\ud83d\udfe8 Central\", r3Label: \"\ud83d\udfe9 Alto\",\n    sensTitle: \"Sensibilidad\", sensText: \"Cada +0,1 puntos equivale aproximadamente a:\",\n    nightsTitle: \"Equivalente en noches\", nightsText: \"Solo si a\u00f1ades ADR. Si no, lo omitimos.\",\n    ctaTitle: \"\u00bfQuieres capturar ese impacto?\", ctaText: \"Podemos desglosar qu\u00e9 palancas operativas mueven el rating (tiempos, consistencia, est\u00e1ndares, respuesta a reviews) y priorizar acciones.\", ctaBtn: \"Pedir demo\",\n    btnRecalc: \"Recalcular\", btnCopy: \"Copiar resultados\", footerText: \"Herramienta interactiva gratuita\",\n    errRevenue: \"Indica unos ingresos anuales v\u00e1lidos (> 0).\", errRating: \"Revisa las valoraciones: deben estar entre 0 y 5.\",\n    errDelta: \"La valoraci\u00f3n objetivo debe ser mayor que la actual (al menos +0,1).\", errAdr: \"Si activas ADR, indica un valor v\u00e1lido (> 0).\",\n    copied: \"\u2705 Copiado. Puedes pegarlo en un email o en Slack.\", copyFail: \"No se pudo copiar autom\u00e1ticamente. Copia manualmente.\",\n    stepText: (s) => `Paso ${s} de 4`,\n    subtitleText: (cur, tgt, steps) => `De ${cur.toFixed(1)} \u2192 ${tgt.toFixed(1)} (\u2248 ${steps} incrementos de +0,1).`,\n    noteScenario: (pct) => `${pct.toFixed(1)}% por cada +0,1 \u00b7 mensual aprox.:`,\n    notePer01: (pct) => `Usando escenario central (${pct.toFixed(1)}% por +0,1).`,\n    nightsHidden: \"\u2014 (ADR no a\u00f1adido)\",\n    nightsNote: (adr) => `ADR usado: ${formatEUR(adr, \"es-ES\")} \u00b7 noches \u2248 impacto anual \/ ADR`,\n  },\n  fr: {\n    langLabel: \"Langue\", brandName: \"Kepler\", brandSub: \"Revenus li\u00e9s \u00e0 la R\u00e9putation\",\n    pillFree: \"100% gratuite\", pillInstant: \"R\u00e9sultats imm\u00e9diats\", pillScenarios: \"3 sc\u00e9narios\",\n    welcomeTitle: \"Quel revenu pourriez-vous capter avec +0,1 point de note ?\",\n    welcomeLead: \"En moins de 2 minutes, estimez l\u2019impact potentiel d\u2019une am\u00e9lioration de la note (ex. 4,1 \u2192 4,4) sur les revenus.\",\n    welcomeBox1Title: \"Ce que vous obtenez\",\n    welcomeBox1Li1: \"\ud83d\udcb6 Impact annuel (prudent \/ central \/ haut)\",\n    welcomeBox1Li2: \"\ud83d\udcc6 Impact mensuel estim\u00e9\",\n    welcomeBox1Li3: \"\ud83e\udde0 Sensibilit\u00e9 : chaque +0,1 \u2248 \u20acX\/an\",\n    welcomeBox1Li4: \"\ud83c\udf19 Option : \u00e9quivalent en nuits (si ADR)\",\n    welcomeBox2Title: \"Contexte (\u00e9tudes sectorielles)\",\n    welcomeBox2P1: \"Des analyses acad\u00e9miques et sectorielles sugg\u00e8rent qu\u2019une meilleure note peut \u00eatre associ\u00e9e \u00e0 une hausse de la demande\/du revenu (conversion et visibilit\u00e9 OTA).\",\n    welcomeBox2P2: \"Pour rester prudent, l\u2019outil utilise une fourchette par +0,1 : <strong>+1,0% \/ +1,5% \/ +2,0%<\/strong>.\",\n    btnStart: \"D\u00e9marrer\", btnExample: \"Exemple\", privacyNote: \"Aucune donn\u00e9e stock\u00e9e. Tout est calcul\u00e9 dans votre navigateur.\",\n    progressLabel: \"Progression\", btnReset: \"R\u00e9initialiser\",\n    q1Title: \"Revenus annuels chambres\", q1Help: \"Si vous n\u2019avez pas le chiffre exact, utilisez une estimation (chambres uniquement).\",\n    q2Title: \"Note actuelle\", q2Help: \"Exemple : 4,1 (0\u20135). R\u00e9f\u00e9rence interne Booking\/TripAdvisor\/Google.\",\n    q3Title: \"Note cible\", q3Help: \"Exemple : 4,4. Calcul par incr\u00e9ments de 0,1.\",\n    q4Title: \"Ajouter l\u2019ADR (optionnel) ?\", q4Help: \"Si vous saisissez l\u2019ADR, on convertit l\u2019impact en \u201cnuits \u00e9quivalentes\u201d. Sinon, on l\u2019omet.\",\n    toggleAdrText: \"Ajouter ADR\", suffixStars: \"\/5\", suffixAdr: \"ADR\",\n    adrNote: \"ADR optionnel : uniquement pour convertir \u20ac en nuits. N\u2019affecte pas le %.\",\n    assumpTitle: \"Hypoth\u00e8se (ajustable)\", assumpHelp: \"Par d\u00e9faut : 1,0% \/ 1,5% \/ 2,0% par +0,1. Vous pouvez ajuster le sc\u00e9nario central.\",\n    assumpFoot: \"Les sc\u00e9narios prudent et haut s\u2019ajustent autour du central (\u00b10,5 pt).\",\n    btnBack: \"Retour\", btnNext: \"Continuer\", btnViewResults: \"Voir r\u00e9sultats\",\n    methodNote: \"M\u00e9thode : impact \u2248 revenus \u00d7 (incr\u00e9ments de 0,1) \u00d7 (% par +0,1). Trois sc\u00e9narios.\",\n    loadingTitle: \"Calcul en cours\u2026\", loadingText: \"Sc\u00e9narios prudent, central et haut + sensibilit\u00e9 par +0,1.\",\n    resultsTitle: \"Impact estim\u00e9\", r1Label: \"\ud83d\udfe6 Prudent\", r2Label: \"\ud83d\udfe8 Central\", r3Label: \"\ud83d\udfe9 Haut\",\n    sensTitle: \"Sensibilit\u00e9\", sensText: \"Chaque +0,1 point \u00e9quivaut environ \u00e0 :\",\n    nightsTitle: \"\u00c9quivalent en nuits\", nightsText: \"Uniquement si ADR est saisi. Sinon, on l\u2019omet.\",\n    ctaTitle: \"Voulez-vous capter cet impact ?\", ctaText: \"On peut identifier les leviers op\u00e9rationnels qui font monter la note (d\u00e9lais, standards, coh\u00e9rence, r\u00e9ponses aux avis) et prioriser.\", ctaBtn: \"Demander une d\u00e9mo\",\n    btnRecalc: \"Recalculer\", btnCopy: \"Copier les r\u00e9sultats\", footerText: \"Outil interactif gratuit\",\n    errRevenue: \"Veuillez saisir des revenus annuels valides (> 0).\", errRating: \"V\u00e9rifiez les notes : elles doivent \u00eatre entre 0 et 5.\",\n    errDelta: \"La note cible doit \u00eatre sup\u00e9rieure \u00e0 la note actuelle (au moins +0,1).\", errAdr: \"Si ADR est activ\u00e9, saisissez une valeur valide (> 0).\",\n    copied: \"\u2705 Copi\u00e9. Vous pouvez le coller dans un email ou Slack.\", copyFail: \"Copie impossible automatiquement. Copiez manuellement.\",\n    stepText: (s) => `\u00c9tape ${s} sur 4`,\n    subtitleText: (cur, tgt, steps) => `De ${cur.toFixed(1)} \u2192 ${tgt.toFixed(1)} (\u2248 ${steps} incr\u00e9ments de +0,1).`,\n    noteScenario: (pct) => `${pct.toFixed(1)}% par +0,1 \u00b7 mensuel env. :`,\n    notePer01: (pct) => `Avec sc\u00e9nario central (${pct.toFixed(1)}% par +0,1).`,\n    nightsHidden: \"\u2014 (ADR non saisi)\",\n    nightsNote: (adr) => `ADR utilis\u00e9 : ${formatEUR(adr, \"fr-FR\")} \u00b7 nuits \u2248 impact annuel \/ ADR`,\n  },\n  en: {\n    langLabel: \"Language\", brandName: \"Kepler\", brandSub: \"Revenue From Hotel Reputation\",\n    pillFree: \"100% free\", pillInstant: \"Instant results\", pillScenarios: \"3 scenarios\",\n    welcomeTitle: \"How much revenue could you capture with +0.1 rating points?\",\n    welcomeLead: \"In under 2 minutes, estimate the potential impact of improving your rating (e.g., 4.1 \u2192 4.4) on revenue.\",\n    welcomeBox1Title: \"What you\u2019ll get\",\n    welcomeBox1Li1: \"\ud83d\udcb6 Annual impact (low \/ mid \/ high)\",\n    welcomeBox1Li2: \"\ud83d\udcc6 Estimated monthly impact\",\n    welcomeBox1Li3: \"\ud83e\udde0 Sensitivity: each +0.1 \u2248 \u20acX\/yr\",\n    welcomeBox1Li4: \"\ud83c\udf19 Optional: nights equivalent (with ADR)\",\n    welcomeBox2Title: \"Context (industry research)\",\n    welcomeBox2P1: \"Academic and industry analyses suggest small rating improvements can be associated with higher demand\/revenue (OTA conversion and visibility).\",\n    welcomeBox2P2: \"To keep it conservative, we use a per +0.1 range: <strong>+1.0% \/ +1.5% \/ +2.0%<\/strong>.\",\n    btnStart: \"Start\", btnExample: \"Example\", privacyNote: \"No data stored. Everything runs in your browser.\",\n    progressLabel: \"Progress\", btnReset: \"Reset\",\n    q1Title: \"Annual room revenue\", q1Help: \"If you don\u2019t have the exact number, use an estimate (rooms only).\",\n    q2Title: \"Current rating\", q2Help: \"Example: 4.1 (0\u20135). Use Booking\/TripAdvisor\/Google as your internal reference.\",\n    q3Title: \"Target rating\", q3Help: \"Example: 4.4. The calculator works in 0.1 increments.\",\n    q4Title: \"Add ADR (optional)?\", q4Help: \"If you enter ADR, we convert \u20ac impact into \u201cnights equivalent\u201d. Otherwise we omit it.\",\n    toggleAdrText: \"Add ADR\", suffixStars: \"\/5\", suffixAdr: \"ADR\",\n    adrNote: \"ADR is optional and only used to translate \u20ac into nights. It doesn\u2019t change the %.\",\n    assumpTitle: \"Assumption (adjustable)\", assumpHelp: \"Default: 1.0% \/ 1.5% \/ 2.0% per +0.1. You can adjust the mid scenario.\",\n    assumpFoot: \"Low\/High auto-adjust around the mid (\u00b10.5 pts).\",\n    btnBack: \"Back\", btnNext: \"Continue\", btnViewResults: \"View results\",\n    methodNote: \"Method: impact \u2248 revenue \u00d7 (0.1 steps) \u00d7 (% per +0.1). Three scenarios for prudence.\",\n    loadingTitle: \"Calculating\u2026\", loadingText: \"Low\/mid\/high scenarios + sensitivity per +0.1.\",\n    resultsTitle: \"Estimated impact\", r1Label: \"\ud83d\udfe6 Low\", r2Label: \"\ud83d\udfe8 Mid\", r3Label: \"\ud83d\udfe9 High\",\n    sensTitle: \"Sensitivity\", sensText: \"Each +0.1 point is roughly:\",\n    nightsTitle: \"Nights equivalent\", nightsText: \"Only if ADR is provided. Otherwise omitted.\",\n    ctaTitle: \"Want to capture that impact?\", ctaText: \"We can map the operational levers that move ratings (speed, consistency, standards, review responses) and prioritize actions.\", ctaBtn: \"Request a demo\",\n    btnRecalc: \"Recalculate\", btnCopy: \"Copy results\", footerText: \"Free interactive tool\",\n    errRevenue: \"Please enter a valid annual revenue (> 0).\", errRating: \"Check ratings: they must be between 0 and 5.\",\n    errDelta: \"Target rating must be higher than current (at least +0.1).\", errAdr: \"If ADR is enabled, enter a valid value (> 0).\",\n    copied: \"\u2705 Copied. You can paste into an email or Slack.\", copyFail: \"Could not copy automatically. Please copy manually.\",\n    stepText: (s) => `Step ${s} of 4`,\n    subtitleText: (cur, tgt, steps) => `From ${cur.toFixed(1)} \u2192 ${tgt.toFixed(1)} (\u2248 ${steps} steps of +0.1).`,\n    noteScenario: (pct) => `${pct.toFixed(1)}% per +0.1 \u00b7 monthly approx:`,\n    notePer01: (pct) => `Using mid scenario (${pct.toFixed(1)}% per +0.1).`,\n    nightsHidden: \"\u2014 (ADR not provided)\",\n    nightsNote: (adr) => `ADR used: ${formatEUR(adr, \"en-GB\")} \u00b7 nights \u2248 annual impact \/ ADR`,\n  }\n};\n\nfunction toNumber(value){ const n = Number(String(value).replace(',', '.')); return Number.isFinite(n) ? n : 0; }\nfunction formatEUR(n, locale){ const rounded = Math.round(n); return new Intl.NumberFormat(locale, { style:'currency', currency:'EUR', maximumFractionDigits:0 }).format(rounded); }\nfunction stripHtml(html){ return String(html).replace(\/<[^>]*>\/g, '').trim(); }\nfunction roundToTenth(x){ return Math.round(x * 10) \/ 10; }\nfunction ratingSteps(current, target){ const cur = roundToTenth(current); const tgt = roundToTenth(target); const delta = tgt - cur; return Math.round(delta \/ 0.1); }\n\nconst screens = { welcome: document.getElementById('screen-welcome'), form: document.getElementById('screen-form'), loading: document.getElementById('screen-loading'), results: document.getElementById('screen-results') };\nconst steps = Array.from(document.querySelectorAll('.step'));\nlet currentStep = 1;\n\nconst el = {\n  langSelect: document.getElementById('langSelect'),\n  annualRevenue: document.getElementById('annualRevenue'), ratingCurrent: document.getElementById('ratingCurrent'), ratingTarget: document.getElementById('ratingTarget'),\n  toggleAdr: document.getElementById('toggleAdr'), adrBlock: document.getElementById('adrBlock'), adr: document.getElementById('adr'),\n  centerPct: document.getElementById('centerPct'), centerPctBadge: document.getElementById('centerPctBadge'),\n  progressText: document.getElementById('progressText'), progressBar: document.getElementById('progressBar'),\n  resultsSubtitle: document.getElementById('resultsSubtitle'),\n  outLow: document.getElementById('outLow'), outMid: document.getElementById('outMid'), outHigh: document.getElementById('outHigh'),\n  outLowNote: document.getElementById('outLowNote'), outMidNote: document.getElementById('outMidNote'), outHighNote: document.getElementById('outHighNote'),\n  outPer01: document.getElementById('outPer01'), outPer01Note: document.getElementById('outPer01Note'),\n  outNights: document.getElementById('outNights'), outNightsNote: document.getElementById('outNightsNote'),\n  copyStatus: document.getElementById('copyStatus'), year: document.getElementById('year'), ctaLink: document.getElementById('cta-link'),\n};\n\nlet currentLang = \"es\";\nfunction localeForLang(lang){ return lang === \"fr\" ? \"fr-FR\" : lang === \"en\" ? \"en-GB\" : \"es-ES\"; }\nfunction showScreen(name){ Object.values(screens).forEach(s => s.classList.remove('active')); screens[name].classList.add('active'); }\n\nfunction showStep(stepNum){\n  steps.forEach(s => s.classList.remove('active'));\n  const step = steps.find(s => Number(s.dataset.step) === stepNum); if (step) step.classList.add('active');\n  const t = i18n[currentLang]; el.progressText.textContent = t.stepText(stepNum);\n  const pct = Math.round((stepNum \/ 4) * 100); el.progressBar.style.width = `${pct}%`;\n  const btnNext = document.getElementById('btn-next'); btnNext.innerHTML = (stepNum === 4) ? t.btnViewResults : t.btnNext;\n  const btnBack = document.getElementById('btn-back'); btnBack.style.visibility = stepNum === 1 ? 'hidden' : 'visible';\n}\n\nfunction validateStep(stepNum){\n  const t = i18n[currentLang];\n  const revenue = toNumber(el.annualRevenue.value); const cur = toNumber(el.ratingCurrent.value); const tgt = toNumber(el.ratingTarget.value);\n  if (stepNum === 1 && revenue <= 0) return t.errRevenue;\n  if (stepNum === 2){ if (cur < 0 || cur > 5) return t.errRating; }\n  if (stepNum === 3){ if (tgt < 0 || tgt > 5) return t.errRating; const steps01 = ratingSteps(cur, tgt); if (steps01 < 1) return t.errDelta; }\n  if (stepNum === 4){ const adrEnabled = el.toggleAdr.getAttribute('aria-pressed') === 'true'; if (adrEnabled){ const adr = toNumber(el.adr.value); if (adr <= 0) return t.errAdr; } }\n  return null;\n}\n\nfunction getCenterPct(){ return toNumber(el.centerPct.value); }\n\nfunction compute(){\n  const revenueAnnual = toNumber(el.annualRevenue.value);\n  const cur = roundToTenth(toNumber(el.ratingCurrent.value)); const tgt = roundToTenth(toNumber(el.ratingTarget.value));\n  const steps01 = ratingSteps(cur, tgt);\n  const center = getCenterPct(); const p = scenarioPercents(center);\n  const totalLowPct = (steps01 * p.low) \/ 100; const totalMidPct = (steps01 * p.mid) \/ 100; const totalHighPct = (steps01 * p.high) \/ 100;\n  const impactLowAnnual = revenueAnnual * totalLowPct; const impactMidAnnual = revenueAnnual * totalMidPct; const impactHighAnnual = revenueAnnual * totalHighPct;\n  const impactLowMonthly = impactLowAnnual \/ 12; const impactMidMonthly = impactMidAnnual \/ 12; const impactHighMonthly = impactHighAnnual \/ 12;\n  const per01Annual = revenueAnnual * (p.mid \/ 100);\n  const adrEnabled = el.toggleAdr.getAttribute('aria-pressed') === 'true'; const adr = adrEnabled ? toNumber(el.adr.value) : 0;\n  const nights = adrEnabled && adr > 0 ? (impactMidAnnual \/ adr) : null;\n  return { revenueAnnual, cur, tgt, steps01, p, center, impactLowAnnual, impactMidAnnual, impactHighAnnual, impactLowMonthly, impactMidMonthly, impactHighMonthly, per01Annual, adrEnabled, adr, nights };\n}\n\nfunction applyTranslations(){\n  const t = i18n[currentLang]; document.documentElement.lang = currentLang;\n  document.querySelectorAll('[data-i18n]').forEach(node => { const key = node.getAttribute('data-i18n'); if (!t[key]) return; node.innerHTML = t[key]; });\n  el.annualRevenue.placeholder = currentLang === \"en\" ? \"e.g. 25000000\" : currentLang === \"fr\" ? \"Ex. 25000000\" : \"Ej. 25000000\";\n  el.ratingCurrent.placeholder = currentLang === \"en\" ? \"e.g. 4.1\" : currentLang === \"fr\" ? \"Ex. 4.1\" : \"Ej. 4.1\";\n  el.ratingTarget.placeholder = currentLang === \"en\" ? \"e.g. 4.4\" : currentLang === \"fr\" ? \"Ex. 4.4\" : \"Ej. 4.4\";\n  el.adr.placeholder = currentLang === \"en\" ? \"e.g. 165\" : currentLang === \"fr\" ? \"Ex. 165\" : \"Ej. 165\";\n  if (screens.form.classList.contains('active')) showStep(currentStep);\n  if (screens.results.classList.contains('active')) renderResults();\n  updateCTA();\n}\n\nfunction renderResults(){\n  const t = i18n[currentLang]; const loc = localeForLang(currentLang); const r = compute();\n  el.resultsSubtitle.textContent = t.subtitleText(r.cur, r.tgt, r.steps01);\n  el.outLow.textContent = formatEUR(r.impactLowAnnual, loc); el.outMid.textContent = formatEUR(r.impactMidAnnual, loc); el.outHigh.textContent = formatEUR(r.impactHighAnnual, loc);\n  el.outLowNote.textContent = `${t.noteScenario(r.p.low)} ${formatEUR(r.impactLowMonthly, loc)}`;\n  el.outMidNote.textContent = `${t.noteScenario(r.p.mid)} ${formatEUR(r.impactMidMonthly, loc)}`;\n  el.outHighNote.textContent = `${t.noteScenario(r.p.high)} ${formatEUR(r.impactHighMonthly, loc)}`;\n  el.outPer01.textContent = formatEUR(r.per01Annual, loc); el.outPer01Note.textContent = t.notePer01(r.p.mid);\n  if (r.adrEnabled && r.adr > 0){\n    const nightsRounded = Math.round(r.nights);\n    el.outNights.textContent = `${nightsRounded.toLocaleString(loc)} ${currentLang === \"en\" ? \"nights\/yr\" : currentLang === \"fr\" ? \"nuits\/an\" : \"noches\/a\u00f1o\"}`;\n    el.outNightsNote.textContent = t.nightsNote(r.adr);\n  } else { el.outNights.textContent = t.nightsHidden; el.outNightsNote.textContent = \"\"; }\n  el.copyStatus.textContent = \"\";\n}\n\nfunction updateCTA(){ el.ctaLink.href = CTA_URL[currentLang] || CTA_URL.es; }\n\ndocument.getElementById('btn-start').addEventListener('click', () => { showScreen('form'); currentStep = 1; showStep(currentStep); el.copyStatus.textContent = ''; });\ndocument.getElementById('btn-demo').addEventListener('click', () => {\n  el.annualRevenue.value = 25000000; el.ratingCurrent.value = 4.1; el.ratingTarget.value = 4.4;\n  el.centerPct.value = 1.5; el.centerPctBadge.textContent = \"1.5%\";\n  el.toggleAdr.setAttribute('aria-pressed', 'true'); el.adrBlock.classList.remove('hidden'); el.adr.value = 165;\n  showScreen('form'); currentStep = 1; showStep(currentStep); el.copyStatus.textContent = '';\n});\ndocument.getElementById('btn-back').addEventListener('click', () => { currentStep = Math.max(1, currentStep - 1); showStep(currentStep); });\ndocument.getElementById('btn-next').addEventListener('click', () => {\n  const err = validateStep(currentStep); if (err){ alert(err); return; }\n  if (currentStep < 4){ currentStep += 1; showStep(currentStep); return; }\n  showScreen('loading');\n  setTimeout(() => { renderResults(); updateCTA(); showScreen('results'); }, 850);\n});\ndocument.getElementById('btn-recalc').addEventListener('click', () => { showScreen('form'); currentStep = 1; showStep(currentStep); el.copyStatus.textContent = ''; });\ndocument.getElementById('btn-reset').addEventListener('click', () => {\n  el.annualRevenue.value = ''; el.ratingCurrent.value = ''; el.ratingTarget.value = '';\n  el.centerPct.value = 1.5; el.centerPctBadge.textContent = \"1.5%\";\n  el.toggleAdr.setAttribute('aria-pressed', 'false'); el.adrBlock.classList.add('hidden'); el.adr.value = '';\n  currentStep = 1; showStep(currentStep); el.copyStatus.textContent = '';\n});\nel.toggleAdr.addEventListener('click', () => {\n  const pressed = el.toggleAdr.getAttribute('aria-pressed') === 'true';\n  el.toggleAdr.setAttribute('aria-pressed', String(!pressed));\n  el.adrBlock.classList.toggle('hidden', pressed);\n});\nel.centerPct.addEventListener('input', () => { const v = getCenterPct(); el.centerPctBadge.textContent = `${v.toFixed(1)}%`; });\ndocument.getElementById('btn-copy').addEventListener('click', async () => {\n  const t = i18n[currentLang]; const loc = localeForLang(currentLang);\n  try{\n    const r = compute(); const lowMidHigh = scenarioPercents(r.center);\n    const lines = [\n      currentLang === \"en\" ? \"Results \u2014 Hotel Reputation Revenue Calculator\" : currentLang === \"fr\" ? \"R\u00e9sultats \u2014 Calculatrice revenus & r\u00e9putation h\u00f4teli\u00e8re\" : \"Resultados \u2014 Calculadora de Ingresos por Reputaci\u00f3n Hotelera\",\n      `Annual room revenue: ${formatEUR(r.revenueAnnual, loc)}`,\n      `Rating: ${r.cur.toFixed(1)} \u2192 ${r.tgt.toFixed(1)} (${r.steps01} \u00d7 +0.1)`,\n      `Low (${lowMidHigh.low.toFixed(1)}% per +0.1): ${formatEUR(r.impactLowAnnual, loc)} (\u2248 ${formatEUR(r.impactLowMonthly, loc)}\/mo)`,\n      `Mid (${lowMidHigh.mid.toFixed(1)}% per +0.1): ${formatEUR(r.impactMidAnnual, loc)} (\u2248 ${formatEUR(r.impactMidMonthly, loc)}\/mo)`,\n      `High (${lowMidHigh.high.toFixed(1)}% per +0.1): ${formatEUR(r.impactHighAnnual, loc)} (\u2248 ${formatEUR(r.impactHighMonthly, loc)}\/mo)`,\n      `Sensitivity (per +0.1, mid): ${formatEUR(r.per01Annual, loc)}\/yr`,\n      r.adrEnabled && r.adr > 0 ? `ADR: ${formatEUR(r.adr, loc)} | Nights eq (mid): ${Math.round(r.nights).toLocaleString(loc)}` : \"\"\n    ].filter(Boolean).join(\"\\n\");\n    await navigator.clipboard.writeText(lines); el.copyStatus.textContent = t.copied;\n  }catch(e){ el.copyStatus.textContent = t.copyFail; }\n});\n\nel.langSelect.addEventListener('change', (e) => { currentLang = e.target.value; localStorage.setItem(\"hotel_calc_lang\", currentLang); applyTranslations(); });\ndocument.getElementById('year').textContent = String(new Date().getFullYear());\nconst savedLang = localStorage.getItem(\"hotel_calc_lang\");\nif (savedLang && i18n[savedLang]) currentLang = savedLang;\nel.langSelect.value = currentLang;\n\napplyTranslations(); updateCTA(); showScreen('welcome');\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-803cd31b elementor-widget elementor-widget-html\" data-id=\"803cd31b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"kc-sec kc-ev\">\n  <div class=\"kc-wrap\">\n    <div class=\"kc-label\">Por qu\u00e9 la reputaci\u00f3n online mueve ingresos<\/div>\n    <h2>Tres mecanismos por los que tu rating afecta a tus reservas<\/h2>\n    <p class=\"kc-intro\" style=\"color:#b9cbdd;\">No es solo percepci\u00f3n de marca: la valoraci\u00f3n online influye directamente en c\u00f3mo y a qui\u00e9n se muestra tu hotel en los canales donde se decide la reserva.<\/p>\n    <div class=\"kc-ev-grid\">\n      <article class=\"kc-ev-card\">\n        <h3 style=\"color:#fff;\">Posici\u00f3n en las OTAs<\/h3>\n        <p>Los algoritmos de ranking de Booking, Expedia y similares ponderan la valoraci\u00f3n del hu\u00e9sped. Un rating m\u00e1s alto suele traducirse en mejor posici\u00f3n en los resultados de b\u00fasqueda, antes de que el precio entre en juego.<\/p>\n      <\/article>\n      <article class=\"kc-ev-card\">\n        <h3 style=\"color:#fff;\">Tasa de conversi\u00f3n<\/h3>\n        <p>Entre dos hoteles a precio similar, el viajero tiende a reservar el mejor valorado. La valoraci\u00f3n act\u00faa como prueba social en el momento exacto de decisi\u00f3n.<\/p>\n      <\/article>\n      <article class=\"kc-ev-card\">\n        <h3 style=\"color:#fff;\">Tolerancia al precio<\/h3>\n        <p>Un hotel mejor valorado puede sostener una tarifa (ADR) m\u00e1s alta sin perder reservas frente a la competencia directa, porque el hu\u00e9sped percibe menor riesgo en la compra.<\/p>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"kc-sec kc-guia\">\n  <div class=\"kc-wrap\">\n    <div class=\"kc-label\">La metodolog\u00eda<\/div>\n    <h2>C\u00f3mo calculamos el impacto de mejorar tu valoraci\u00f3n<\/h2>\n    <p class=\"kc-intro\">Cuatro pasos, todos visibles.<\/p>\n    <ol class=\"kc-pasos\">\n      <li class=\"kc-paso\">\n        <div class=\"kc-paso-n\">01<\/div>\n        <div><h3>Partimos de tus ingresos por habitaciones<\/h3><p>Tu facturaci\u00f3n anual de habitaciones es la base sobre la que se aplica el impacto porcentual estimado.<\/p><\/div>\n      <\/li>\n      <li class=\"kc-paso\">\n        <div class=\"kc-paso-n\">02<\/div>\n        <div><h3>Medimos la distancia en incrementos de 0,1<\/h3><p>Entre tu valoraci\u00f3n actual y la objetivo (por ejemplo, de 4,1 a 4,4 son 3 incrementos de +0,1). Es la unidad m\u00ednima que usan la mayor\u00eda de plataformas de reviews.<\/p><\/div>\n      <\/li>\n      <li class=\"kc-paso\">\n        <div class=\"kc-paso-n\">03<\/div>\n        <div><h3>Aplicamos un rango conservador en tres escenarios<\/h3><p>Por defecto, entre +1,0% y +2,0% de ingresos por cada +0,1, con un escenario prudente, uno central y uno alto \u2014 puedes ajustar el central si tienes tu propio dato de referencia.<\/p><\/div>\n      <\/li>\n      <li class=\"kc-paso\">\n        <div class=\"kc-paso-n\">04<\/div>\n        <div><h3>Traducimos a noches, si a\u00f1ades tu ADR<\/h3><p>Es opcional: solo sirve para expresar el impacto en \u00abnoches equivalentes\u00bb en lugar de euros. No cambia el porcentaje de impacto calculado.<\/p><\/div>\n      <\/li>\n    <\/ol>\n  <\/div>\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b2fb1442 elementor-widget elementor-widget-html\" data-id=\"b2fb1442\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"kc-sec kc-faq\">\n  <div class=\"kc-wrap\">\n    <div class=\"kc-label\">Preguntas frecuentes<\/div>\n    <h2>Sobre la calculadora y sus cifras<\/h2>\n    <div class=\"kc-faq-lista\">\n      <details><summary>\u00bfDe d\u00f3nde sale el rango 1,0%\u20132,0% por cada +0,1?<\/summary><p>Es un rango orientativo y conservador, coherente con la literatura acad\u00e9mica y sectorial que relaciona reputaci\u00f3n online con demanda hotelera. No es una cifra exacta de un \u00fanico estudio: por eso puedes ajustar el escenario central si tienes tu propio dato de referencia.<\/p><\/details>\n      <details><summary>\u00bfEl resultado es una promesa de ingresos?<\/summary><p>No. Es una estimaci\u00f3n de orden de magnitud calculada con una f\u00f3rmula transparente sobre los datos que introduces. No sustituye un an\u00e1lisis real de tu revenue management ni garantiza ning\u00fan resultado.<\/p><\/details>\n      <details><summary>\u00bfGuard\u00e1is los datos que introduzco?<\/summary><p>No. Todo el c\u00e1lculo ocurre en tu navegador; no enviamos ni almacenamos tus ingresos, tu valoraci\u00f3n ni tu ADR en ning\u00fan servidor.<\/p><\/details>\n      <details><summary>\u00bfQu\u00e9 es el ADR y por qu\u00e9 es opcional?<\/summary><p>El ADR (Average Daily Rate) es tu tarifa media por noche. Solo lo usamos para traducir el impacto en euros a \u00abnoches equivalentes\u00bb, algo m\u00e1s intuitivo para un equipo de revenue. No a\u00f1adirlo no cambia el c\u00e1lculo del impacto en euros.<\/p><\/details>\n      <details><summary>\u00bfQu\u00e9 diferencia hay entre el escenario prudente, central y alto?<\/summary><p>Los tres usan el mismo n\u00famero de incrementos de +0,1 entre tu valoraci\u00f3n actual y la objetivo, pero aplican un porcentaje distinto por incremento (el central es el que ajustas; prudente y alto se calculan autom\u00e1ticamente \u00b10,5 puntos alrededor de \u00e9l).<\/p><\/details>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"kc-sec kc-cta\">\n  <div class=\"kc-wrap\">\n    <h2>\u00bfQuieres capturar ese impacto?<\/h2>\n    <p>Podemos desglosar qu\u00e9 palancas operativas mueven el rating (tiempos, consistencia, est\u00e1ndares, respuesta a reviews) y priorizar acciones.<\/p>\n    <div class=\"kc-cta-botones\">\n      <a class=\"kc-cta-link\" href=\"https:\/\/gamestrategies.io\/es\/pedir-una-demo-personalizada\/?utm_source=calculadora_kepler&utm_medium=lead_magnet&utm_campaign=hoteles\">Pedir demo \u2192<\/a>\n      <a class=\"kc-cta-link\" href=\"https:\/\/gamestrategies.io\/es\/incentivo-de-ventas-kepler\/\">Descubre Kepler \u2192<\/a>\n    <\/div>\n  <\/div>\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-129b31c2 elementor-widget elementor-widget-html\" data-id=\"129b31c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\na.kc-cta-link{ color:#9fd8ff !important; font-weight:700 !important; }\na.kc-cta-link:hover{ color:#fff !important; text-decoration:underline !important; }\n.kc-hero .container{ padding-top:100px !important; padding-bottom:60px !important; }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-85702b1e elementor-widget elementor-widget-html\" data-id=\"85702b1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.kc-hero{\n  background: linear-gradient(180deg, #ffffff 0px, #ffffff 30px, #050e1c 100px) !important;\n}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e35e837d elementor-widget elementor-widget-html\" data-id=\"e35e837d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.kc-hero, .kc-sec{\n  width:100% !important;\n  margin-left:0 !important;\n  margin-right:0 !important;\n}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3839a632 elementor-widget elementor-widget-html\" data-id=\"3839a632\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.kc-hero{ background:#050e1c !important; }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-610571e6 elementor-widget elementor-widget-html\" data-id=\"610571e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\nbody{ font-size:14px !important; }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3db90d2 elementor-widget elementor-widget-html\" data-id=\"b3db90d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.kc-hero h1{ font-size: clamp(22px,2.8vw,29px) !important; line-height:1.28 !important; letter-spacing:-0.3px !important; margin-bottom:10px !important; }\n.kc-hero h2{ font-size: 18px !important; margin-bottom:6px !important; }\n.kc-hero h3{ font-size: 13.5px !important; }\n.kc-hero .lead{ font-size: 14.5px !important; line-height:1.6 !important; }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a63a124 elementor-widget elementor-widget-html\" data-id=\"0a63a124\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.kc-headline{ font-family:'Poppins',sans-serif; font-weight:700; font-size:15.5px; line-height:1.55; color:#fff; background:rgba(56,208,255,.08); border:1px solid rgba(125,199,255,.25); border-radius:14px; padding:14px 16px; margin:0 0 16px; }\n.kc-headline strong{ color:#9fd8ff; }\n.kc-micro{ display:block; margin-top:4px; font-size:11.5px; color:#8da1b8; font-weight:400; }\n<\/style>\n<script>\n(function(){\n  var MICRO_SENS = { es:\"Es una tasa de referencia, no una cifra adicional a sumar.\", en:\"A reference rate \u2014 not a separate figure to add on top.\", fr:\"Un taux de r\u00e9f\u00e9rence \u2014 pas un montant suppl\u00e9mentaire \u00e0 additionner.\" };\n\n  function headlineText(lang, r, loc){\n    var mid = formatEUR(r.impactMidAnnual, loc);\n    var low = formatEUR(r.impactLowAnnual, loc);\n    var high = formatEUR(r.impactHighAnnual, loc);\n    if (lang === 'en') return 'With your target rating, you could capture <strong>' + mid + '<\/strong> more a year in the mid scenario \u2014 between ' + low + ' in the most conservative case and ' + high + ' in the most optimistic one.';\n    if (lang === 'fr') return 'Avec votre objectif de note, vous pourriez capter <strong>' + mid + '<\/strong> de plus par an dans le sc\u00e9nario central \u2014 entre ' + low + ' dans le cas le plus prudent et ' + high + ' dans le plus optimiste.';\n    return 'Con tu objetivo de valoraci\u00f3n, podr\u00edas capturar <strong>' + mid + '<\/strong> m\u00e1s al a\u00f1o en el escenario central \u2014 entre ' + low + ' en el caso m\u00e1s prudente y ' + high + ' en el m\u00e1s optimista.';\n  }\n\n  function render(){\n    if (typeof compute !== 'function' || typeof formatEUR !== 'function' || typeof currentLang === 'undefined') return;\n    var r = compute();\n    var lang = currentLang;\n    var loc = lang === 'fr' ? 'fr-FR' : lang === 'en' ? 'en-GB' : 'es-ES';\n\n    var head = document.getElementById('kc-headline');\n    if (!head){\n      head = document.createElement('p');\n      head.id = 'kc-headline';\n      head.className = 'kc-headline';\n      var rh = document.querySelector('#screen-results .results-head');\n      if (rh) rh.insertAdjacentElement('afterend', head);\n    }\n    if (head) head.innerHTML = headlineText(lang, r, loc);\n\n    var per01 = document.getElementById('outPer01Note');\n    if (per01){\n      var m = document.getElementById('kc-sens-micro');\n      if (!m){ m = document.createElement('span'); m.id = 'kc-sens-micro'; m.className = 'kc-micro'; per01.insertAdjacentElement('afterend', m); }\n      m.textContent = MICRO_SENS[lang] || MICRO_SENS.es;\n    }\n  }\n\n  var target = document.getElementById('screen-results');\n  if (target){\n    var mo = new MutationObserver(render);\n    mo.observe(target, { attributes:true, attributeFilter:['class'] });\n  }\n  var sel = document.getElementById('langSelect');\n  if (sel) sel.addEventListener('change', function(){ setTimeout(render, 60); });\n  document.addEventListener('click', function(e){\n    if (e.target && (e.target.id === 'btn-next' || e.target.id === 'btn-recalc')) setTimeout(render, 1000);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Kepler Ingresos por Reputaci\u00f3n Hotelera 100% gratuita Resultados inmediatos 3 escenarios Idioma ESFREN \u00bfCu\u00e1nto ingreso podr\u00edas capturar con +0,1 puntos de valoraci\u00f3n? En menos de 2 minutos, estima el impacto potencial de mejorar tu rating (p. ej., de 4,1 a 4,4) en ingresos. Qu\u00e9 vas a obtener \ud83d\udcb6 Impacto anual (prudente \/ central \/ alto) [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":156761,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-156718","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler<\/title>\n<meta name=\"description\" content=\"Estima cu\u00e1nto ingreso podr\u00eda capturar tu hotel al mejorar tu valoraci\u00f3n online. Calculadora gratuita con 3 escenarios, sin registro.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler\" \/>\n<meta property=\"og:description\" content=\"Estima cu\u00e1nto ingreso podr\u00eda capturar tu hotel al mejorar tu valoraci\u00f3n online. Calculadora gratuita con 3 escenarios, sin registro.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/\" \/>\n<meta property=\"og:site_name\" content=\"Game Strategies\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-04T08:04:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/kepler-calculator-og-image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler","description":"Estima cu\u00e1nto ingreso podr\u00eda capturar tu hotel al mejorar tu valoraci\u00f3n online. Calculadora gratuita con 3 escenarios, sin registro.","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:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/","og_locale":"es_ES","og_type":"article","og_title":"Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler","og_description":"Estima cu\u00e1nto ingreso podr\u00eda capturar tu hotel al mejorar tu valoraci\u00f3n online. Calculadora gratuita con 3 escenarios, sin registro.","og_url":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/","og_site_name":"Game Strategies","article_modified_time":"2026-09-04T08:04:51+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/kepler-calculator-og-image.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/","url":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/","name":"Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler","isPartOf":{"@id":"https:\/\/gamestrategies.io\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/#primaryimage"},"image":{"@id":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/#primaryimage"},"thumbnailUrl":"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/kepler-calculator-og-image.jpg","datePublished":"2026-09-03T12:57:31+00:00","dateModified":"2026-09-04T08:04:51+00:00","description":"Estima cu\u00e1nto ingreso podr\u00eda capturar tu hotel al mejorar tu valoraci\u00f3n online. Calculadora gratuita con 3 escenarios, sin registro.","breadcrumb":{"@id":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/#primaryimage","url":"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/kepler-calculator-og-image.jpg","contentUrl":"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/kepler-calculator-og-image.jpg","width":1200,"height":675,"caption":"Kepler calculator dashboard mockup showing estimated impact figures on a dark SaaS-style background"},{"@type":"BreadcrumbList","@id":"https:\/\/gamestrategies.io\/es\/calculadora-kepler-hoteles\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/gamestrategies.io\/es\/"},{"@type":"ListItem","position":2,"name":"Calculadora de Ingresos por Reputaci\u00f3n Hotelera | Kepler"}]},{"@type":"WebSite","@id":"https:\/\/gamestrategies.io\/es\/#website","url":"https:\/\/gamestrategies.io\/es\/","name":"Game Strategies","description":"","publisher":{"@id":"https:\/\/gamestrategies.io\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gamestrategies.io\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/gamestrategies.io\/es\/#organization","name":"Game Strategies","url":"https:\/\/gamestrategies.io\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/gamestrategies.io\/es\/#\/schema\/logo\/image\/","url":"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/Logo-GS-fondo-blanco.png","contentUrl":"https:\/\/gamestrategies.io\/wp-content\/uploads\/2026\/09\/Logo-GS-fondo-blanco.png","width":1600,"height":900,"caption":"Game Strategies"},"image":{"@id":"https:\/\/gamestrategies.io\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/gamestrategies\/","https:\/\/www.youtube.com\/@Game_strategies","https:\/\/open.spotify.com\/show\/5qmIIai3pkfl7AbW4MbRQG?si=8937886304024047&nd=1&dlsi=ac8d8434702f424c"]}]}},"_links":{"self":[{"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/pages\/156718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/comments?post=156718"}],"version-history":[{"count":7,"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/pages\/156718\/revisions"}],"predecessor-version":[{"id":156804,"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/pages\/156718\/revisions\/156804"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/media\/156761"}],"wp:attachment":[{"href":"https:\/\/gamestrategies.io\/es\/wp-json\/wp\/v2\/media?parent=156718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}