{"id":11595,"date":"2026-07-27T11:27:11","date_gmt":"2026-07-27T09:27:11","guid":{"rendered":"https:\/\/mobaro.com\/?page_id=11595"},"modified":"2026-10-14T17:37:02","modified_gmt":"2026-10-14T15:37:02","slug":"maturity-scorecard","status":"publish","type":"page","link":"https:\/\/mobaro.com\/es\/maturity-scorecard\/","title":{"rendered":"Attractions Operations Maturity Scorecard"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"11595\" class=\"elementor elementor-11595\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a09ad18 e-con-full e-flex e-con e-parent\" data-id=\"a09ad18\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-c89e6d9 e-con-full e-flex e-con e-child\" data-id=\"c89e6d9\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-12fe9ea exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-html\" data-id=\"12fe9ea\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!--\n  Mobaro | Attractions Operations Maturity Scorecard (v2.0)\n  1. Page template: \"Elementor Full Width\" (not \"Elementor Canvas\"), so the site header and footer show.\n  2. Paste ALL of this into ONE Elementor \"HTML\" widget.\n  3. Surrounding Elementor container: Content width = Full width, Padding = 0, Gap = 0.\n  Everything is scoped under .mbr-ms so it will not affect the rest of the site.\n  Submissions go to the HubSpot form \"API Container | Maturity Scorecard | Operational Readiness\".\n-->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@700;800&family=Open+Sans:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n.mbr-ms{\n  --ms-dark:#074F57;\n  --ms-bg-dark:#224E56;\n  --ms-ink:#074F57;\n  --ms-text:#074F57;\n  --ms-on-dark:#D6E6E7;\n  --ms-on-dark-soft:#B8D0D2;\n  --ms-lilac:#CABFE5;\n  --ms-lilac-ink:#3A2B62;\n  --ms-tint:#EFF5F5;\n  --ms-tint-2:#DCEAEB;\n  --ms-line:#D9E4E5;\n  --ms-white:#FFFFFF;\n  --ms-ok:#1AA785;\n  --ms-warn:#E38B27;\n  --ms-warn-ink:#8A4B06;\n  --ms-error:#B4362B;\n  --ms-head:\"Montserrat\",\"Open Sans\",system-ui,sans-serif;\n  --ms-body:\"Open Sans\",\"Segoe UI\",system-ui,sans-serif;\n  font-family:var(--ms-body);\n  color:var(--ms-text);\n  font-size:16px;\n  font-weight:500;\n  line-height:1.6;\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n  scroll-margin-top:110px;\n}\n.mbr-ms *,.mbr-ms *::before,.mbr-ms *::after{box-sizing:border-box;}\n.mbr-ms [hidden]{display:none !important;}\n.mbr-ms .ms-sr{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}\n.mbr-ms [data-view],.mbr-ms [data-result-start],.mbr-ms [data-profile-start]{scroll-margin-top:110px;}\n.mbr-ms [tabindex=\"-1\"]:focus{outline:none;}\n.mbr-ms .ms-wrap{max-width:1200px;margin:0 auto;padding:0 24px;}\n.mbr-ms .ms-narrow{max-width:780px;}\n.mbr-ms .ms-sec{padding:96px 0;}\n.mbr-ms .ms-tint{background:var(--ms-tint);}\n.mbr-ms .ms-dark{background:var(--ms-bg-dark);color:var(--ms-on-dark);}\n\n\/* Type *\/\n.mbr-ms .ms-eyebrow{display:block;font-family:var(--ms-body);font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ms-dark);margin:0 0 16px;}\n.mbr-ms .ms-dark .ms-eyebrow,.mbr-ms .ms-hero .ms-eyebrow,.mbr-ms .ms-credit .ms-eyebrow{color:var(--ms-lilac);}\n.mbr-ms .ms-h1{font-family:var(--ms-head);font-weight:800;font-size:clamp(32px,3.6vw,46px);line-height:1.1;letter-spacing:-.02em;color:var(--ms-white);margin:0 0 22px;}\n.mbr-ms .ms-h2{font-family:var(--ms-head);font-weight:800;font-size:clamp(26px,2.6vw,36px);line-height:1.15;letter-spacing:-.015em;color:var(--ms-ink);margin:0 0 18px;}\n.mbr-ms .ms-dark .ms-h2{color:var(--ms-white);}\n.mbr-ms .ms-h3{font-family:var(--ms-head);font-weight:700;font-size:20px;line-height:1.3;color:var(--ms-ink);margin:0 0 8px;}\n.mbr-ms .ms-dark .ms-h3,.mbr-ms .ms-credit .ms-h3{color:var(--ms-white);}\n.mbr-ms .ms-lead{font-size:clamp(16px,1.3vw,18px);line-height:1.6;margin:0 0 32px;max-width:640px;}\n.mbr-ms .ms-dark .ms-lead{color:var(--ms-on-dark);}\n.mbr-ms .ms-p{margin:0;}\n.mbr-ms .ms-small{font-size:14px;line-height:1.5;margin:0;}\n.mbr-ms .ms-center{text-align:center;}\n.mbr-ms .ms-center .ms-lead{margin-left:auto;margin-right:auto;}\n.mbr-ms .ms-head-block{max-width:760px;margin:0 0 56px;}\n.mbr-ms .ms-center.ms-head-block{margin-left:auto;margin-right:auto;}\n.mbr-ms .ms-split{display:grid;grid-template-columns:1fr 1fr;gap:24px 64px;align-items:end;margin:0 0 56px;}\n.mbr-ms .ms-split .ms-h2,.mbr-ms .ms-split .ms-lead{margin:0;}\n.mbr-ms .ms-split .ms-lead{max-width:none;}\n.mbr-ms a.ms-link{color:var(--ms-dark);font-weight:700;text-decoration:underline;text-underline-offset:3px;}\n.mbr-ms .ms-dark a.ms-link{color:var(--ms-white);}\n\n\/* Buttons (reset theme button styles first) *\/\n.mbr-ms .ms-btn,.mbr-ms .ms-textbtn,.mbr-ms .ms-opt{\n  -webkit-appearance:none;appearance:none;margin:0;border:0;background:none;box-shadow:none;\n  font-family:var(--ms-body);text-transform:none;letter-spacing:normal;white-space:normal;\n  cursor:pointer;text-align:left;color:inherit;border-radius:0;padding:0;line-height:1.4;\n}\n.mbr-ms .ms-btns{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;}\n.mbr-ms .ms-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:700;font-size:16px;line-height:1;padding:17px 28px;border-radius:999px;text-decoration:none;transition:transform .15s ease,background-color .15s ease,box-shadow .15s ease;}\n.mbr-ms .ms-btn svg{width:18px;height:18px;flex:none;}\n.mbr-ms .ms-btn-primary,.mbr-ms .ms-btn-primary:focus{background:var(--ms-lilac);color:var(--ms-lilac-ink);}\n.mbr-ms .ms-btn-primary:hover{background:#D9D0EE;color:var(--ms-lilac-ink);transform:translateY(-1px);box-shadow:0 8px 24px rgba(58,43,98,.25);}\n.mbr-ms .ms-btn-dark,.mbr-ms .ms-btn-dark:focus{background:var(--ms-dark);color:var(--ms-white);}\n.mbr-ms .ms-btn-dark:hover{background:#0B3F45;color:var(--ms-white);transform:translateY(-1px);}\n.mbr-ms .ms-btn[disabled]{opacity:.6;cursor:wait;transform:none;box-shadow:none;}\n.mbr-ms .ms-textbtn,.mbr-ms .ms-textbtn:focus{font-weight:700;font-size:15px;color:var(--ms-dark);background:none;text-decoration:underline;text-underline-offset:3px;}\n.mbr-ms .ms-textbtn:hover{color:#0B3F45;background:none;}\n.mbr-ms .ms-dark .ms-textbtn,.mbr-ms .ms-dark .ms-textbtn:hover,.mbr-ms .ms-dark .ms-textbtn:focus,.mbr-ms .ms-hero .ms-textbtn,.mbr-ms .ms-hero .ms-textbtn:hover,.mbr-ms .ms-hero .ms-textbtn:focus{color:var(--ms-white);}\n.mbr-ms .ms-btn:focus-visible,.mbr-ms .ms-textbtn:focus-visible,.mbr-ms .ms-opt:focus-visible,.mbr-ms .ms-check input:focus-visible,.mbr-ms a:focus-visible{outline:3px solid var(--ms-dark);outline-offset:3px;}\n.mbr-ms .ms-hero .ms-btn:focus-visible,.mbr-ms .ms-hero .ms-textbtn:focus-visible,.mbr-ms .ms-dark .ms-btn:focus-visible,.mbr-ms .ms-dark .ms-textbtn:focus-visible,.mbr-ms .ms-credit .ms-btn:focus-visible,.mbr-ms .ms-dark a:focus-visible{outline-color:var(--ms-lilac);}\n\n\/* Hero *\/\n.mbr-ms .ms-hero{background:var(--ms-bg-dark);color:var(--ms-on-dark);padding:110px 0 100px;}\n.mbr-ms .ms-hero .ms-lead{color:var(--ms-on-dark);}\n.mbr-ms .ms-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center;}\n.mbr-ms .ms-meta{margin:18px 0 0;font-size:14px;color:var(--ms-on-dark-soft);}\n\n\/* Example report card *\/\n.mbr-ms .ms-example{justify-self:end;width:100%;max-width:500px;}\n.mbr-ms .ms-example-label{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ms-on-dark-soft);margin:0 0 12px;}\n.mbr-ms .ms-card{background:var(--ms-white);border:1px solid var(--ms-line);border-radius:20px;padding:28px;color:var(--ms-text);}\n.mbr-ms .ms-card-lift{box-shadow:0 24px 60px rgba(0,0,0,.22);border-color:transparent;}\n.mbr-ms .ms-ex-top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:20px;margin-bottom:8px;border-bottom:1px solid var(--ms-line);}\n.mbr-ms .ms-ex-level{font-family:var(--ms-head);font-weight:700;font-size:22px;line-height:1.2;color:var(--ms-ink);margin:2px 0 0;}\n.mbr-ms .ms-ex-kicker{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#476B70;margin:0;}\n.mbr-ms .ms-ex-score{font-family:var(--ms-head);font-weight:800;font-size:40px;line-height:1;color:var(--ms-ink);white-space:nowrap;}\n.mbr-ms .ms-ex-score small{font-family:var(--ms-body);font-weight:600;font-size:15px;color:#476B70;}\n\n\/* Dimension rows (example card + profile) *\/\n.mbr-ms .ms-dims{display:grid;}\n.mbr-ms .ms-dim{display:grid;grid-template-columns:36px 1fr;gap:14px;align-items:center;padding:14px 0;border-top:1px solid var(--ms-line);}\n.mbr-ms .ms-dim:first-child{border-top:0;}\n.mbr-ms .ms-letter{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--ms-tint);color:var(--ms-dark);font-family:var(--ms-head);font-weight:800;font-size:16px;flex:none;}\n.mbr-ms .ms-dim-top{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 8px;}\n.mbr-ms .ms-dim-name{font-weight:700;color:var(--ms-ink);font-size:15px;line-height:1.3;}\n.mbr-ms .ms-dim-score{margin-left:auto;font-weight:700;font-size:15px;color:var(--ms-ink);font-variant-numeric:tabular-nums;white-space:nowrap;}\n.mbr-ms .ms-dim-lvl{font-size:14px;color:#476B70;}\n.mbr-ms .ms-dim-right{margin-left:auto;display:inline-flex;align-items:baseline;gap:12px;}\n.mbr-ms .ms-dim-right .ms-dim-score{margin-left:0;}\n.mbr-ms .ms-bar{height:8px;border-radius:999px;background:var(--ms-tint);overflow:hidden;}\n.mbr-ms .ms-bar i{display:block;height:100%;border-radius:999px;background:var(--ms-dark);}\n.mbr-ms .ms-dim.is-gap .ms-bar i{background:var(--ms-warn);}\n.mbr-ms .ms-dim.is-gap .ms-letter{background:#FDEBD6;color:var(--ms-warn-ink);}\n.mbr-ms .ms-tag{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:var(--ms-tint);color:var(--ms-dark);}\n.mbr-ms .ms-tag-gap{background:#FDEBD6;color:var(--ms-warn-ink);}\n.mbr-ms .ms-profile-dims .ms-dim{grid-template-columns:44px 1fr;gap:18px;padding:20px 0;}\n.mbr-ms .ms-profile-dims .ms-letter{width:44px;height:44px;font-size:18px;}\n.mbr-ms .ms-profile-dims .ms-dim-name{font-size:17px;}\n.mbr-ms .ms-profile-dims .ms-bar{height:10px;}\n\n\/* Dimension cards *\/\n.mbr-ms .ms-grid5{display:grid;grid-template-columns:repeat(5,1fr);gap:20px;}\n.mbr-ms .ms-grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}\n.mbr-ms .ms-tile{background:var(--ms-white);border:1px solid var(--ms-line);border-radius:12px;padding:26px 24px;}\n.mbr-ms .ms-tint .ms-tile{border-color:transparent;}\n.mbr-ms .ms-tile .ms-letter{margin-bottom:18px;}\n.mbr-ms .ms-tile .ms-h3{font-size:18px;}\n.mbr-ms .ms-tile p{margin:0;font-size:15px;line-height:1.55;}\n\n\/* Level cards *\/\n.mbr-ms .ms-meter{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:0 0 20px;}\n.mbr-ms .ms-meter i{height:6px;border-radius:999px;background:var(--ms-tint-2);}\n.mbr-ms .ms-meter i.on{background:var(--ms-dark);}\n.mbr-ms .ms-lvl-range{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#476B70;margin:0 0 6px;}\n.mbr-ms .ms-lvl-quote{margin:0;font-size:15px;line-height:1.5;}\n\n\/* Credit band *\/\n.mbr-ms .ms-credit{background:var(--ms-bg-dark);padding:72px 0;color:var(--ms-on-dark);}\n.mbr-ms .ms-credit-grid{display:grid;grid-template-columns:200px 1fr;gap:48px;align-items:center;}\n.mbr-ms .ms-credit-photo{display:block;width:200px;height:200px;max-width:100%;object-fit:cover;object-position:50% 30%;border-radius:12px;}\n.mbr-ms .ms-credit .ms-h3{font-size:24px;margin-bottom:4px;}\n.mbr-ms .ms-credit-role{margin:0 0 16px;color:var(--ms-on-dark-soft);font-size:15px;}\n.mbr-ms .ms-credit-text{margin:0 0 28px;max-width:620px;}\n\n\/* Assessment *\/\n\/* Overlay *\/\n.mbr-ms .ms-dialog{\n  box-sizing:border-box;width:min(820px,calc(100% - 32px));max-width:none;max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);\n  margin:auto;padding:0;border:0;border-radius:20px;background:var(--ms-white);color:var(--ms-text);\n  font-family:var(--ms-body);font-size:16px;font-weight:500;line-height:1.6;overflow:auto;overscroll-behavior:contain;\n  box-shadow:0 30px 80px rgba(0,0,0,.35);\n}\n.mbr-ms .ms-dialog::backdrop{background:rgba(9,43,48,.78);}\n.mbr-ms .ms-dialog:not([open]){display:none;}\n.mbr-ms .ms-dialog.ms-dialog-inline[open]{position:static;display:block;width:auto;max-width:820px;max-height:none;margin:48px auto;box-shadow:0 0 0 1px var(--ms-line);}\n.mbr-ms .ms-dlg-inner{padding:24px 40px 36px;}\n.mbr-ms .ms-dlg-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 18px;}\n.mbr-ms .ms-dlg-title{margin:0;font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ms-dark);}\n.mbr-ms .ms-dlg-close,.mbr-ms .ms-dlg-close:focus,.mbr-ms .ms-dlg-close:hover{\n  -webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;\n  width:44px;height:44px;margin:-6px -10px -6px 0;padding:0;border:0;border-radius:50%;background:transparent;color:var(--ms-ink);cursor:pointer;box-shadow:none;\n}\n.mbr-ms .ms-dlg-close:hover{background:var(--ms-tint);}\n.mbr-ms .ms-dlg-close:focus-visible{outline:3px solid var(--ms-dark);outline-offset:2px;}\n.mbr-ms .ms-dlg-close svg{width:22px;height:22px;}\n.mbr-ms .ms-hero.is-compact{padding:64px 0;}\n.mbr-ms .ms-hero.is-compact .ms-hero-grid{grid-template-columns:1fr;}\n.mbr-ms .ms-progress{margin:0 0 28px;}\n.mbr-ms .ms-progress-top{display:flex;justify-content:space-between;gap:16px;font-size:14px;font-weight:700;margin:0 0 10px;color:var(--ms-ink);}\n.mbr-ms .ms-progress-top span:last-child{color:#476B70;font-weight:600;}\n.mbr-ms .ms-segs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;}\n.mbr-ms .ms-seg-group{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;}\n.mbr-ms .ms-seg-group i{height:6px;border-radius:999px;background:var(--ms-tint-2);}\n.mbr-ms .ms-seg-group i.done{background:var(--ms-dark);}\n.mbr-ms .ms-seg-group i.now{background:var(--ms-lilac);}\n.mbr-ms .ms-q-dim{display:flex;align-items:center;gap:12px;margin:0 0 18px;font-weight:700;font-size:15px;color:var(--ms-ink);}\n.mbr-ms .ms-q-dim .ms-letter{width:32px;height:32px;font-size:15px;border-radius:8px;}\n.mbr-ms .ms-q-text{font-family:var(--ms-head);font-weight:700;font-size:clamp(21px,2.1vw,26px);line-height:1.3;color:var(--ms-ink);margin:0 0 10px;outline:none;}\n.mbr-ms .ms-q-hint{margin:0 0 4px;font-size:15px;color:#4F7479;}\n.mbr-ms .ms-opts{display:grid;gap:10px;margin:24px 0 0;}\n.mbr-ms .ms-opt{display:grid;grid-template-columns:22px 1fr;gap:14px;align-items:start;width:100%;border:1px solid var(--ms-line);border-radius:12px;padding:16px 18px;background:var(--ms-white);color:var(--ms-text);transition:border-color .12s ease,background-color .12s ease;}\n.mbr-ms .ms-opt:hover,.mbr-ms .ms-opt:focus{background:var(--ms-white);color:var(--ms-text);}\n@media (hover:hover) and (pointer:fine){.mbr-ms .ms-opt:hover{border-color:#9DBFC3;background:#F7FAFA;}}\n.mbr-ms .ms-opt .ms-radio{width:22px;height:22px;border-radius:50%;border:2px solid #6F8E92;margin-top:1px;background:var(--ms-white);}\n.mbr-ms .ms-opt[aria-pressed=\"true\"]{border-color:var(--ms-dark);background:#F3F8F8;box-shadow:inset 0 0 0 1px var(--ms-dark);}\n.mbr-ms .ms-opt[aria-pressed=\"true\"] .ms-radio{border:7px solid var(--ms-dark);}\n.mbr-ms .ms-opt-label{display:block;font-weight:700;font-size:16px;color:var(--ms-ink);line-height:1.35;}\n.mbr-ms .ms-opt-desc{display:block;font-size:14.5px;line-height:1.5;margin-top:2px;color:#3F6A70;}\n.mbr-ms .ms-q-nav{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:24px 0 0;min-height:24px;}\n.mbr-ms .ms-q-keys{font-size:13px;color:#476B70;}\n@media (hover:none),(pointer:coarse){.mbr-ms .ms-q-keys{display:none;}}\n\n\/* Result *\/\n.mbr-ms .ms-result-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center;}\n.mbr-ms .ms-r-level{font-size:clamp(30px,3.2vw,42px);outline:none;}\n.mbr-ms .ms-result-quote{font-family:var(--ms-head);font-weight:700;font-size:clamp(19px,1.8vw,22px);line-height:1.4;color:var(--ms-ink);margin:0 0 16px;}\n.mbr-ms .ms-result .ms-lead{margin-bottom:0;}\n.mbr-ms .ms-scorebox{background:var(--ms-white);border-radius:20px;padding:32px;}\n.mbr-ms .ms-score{display:flex;align-items:baseline;gap:10px;margin:0 0 24px;line-height:1;}\n.mbr-ms .ms-score b{font-family:var(--ms-head);font-weight:800;font-size:72px;line-height:1;color:var(--ms-ink);font-variant-numeric:tabular-nums;}\n.mbr-ms .ms-score span{font-size:16px;color:#476B70;}\n.mbr-ms .ms-band{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;}\n.mbr-ms .ms-band div{padding:10px 8px;border-radius:8px;background:var(--ms-tint);font-size:13px;line-height:1.35;color:#476B70;}\n.mbr-ms .ms-band div b{display:block;font-weight:700;color:var(--ms-ink);}\n.mbr-ms .ms-band div.here{background:var(--ms-lilac);color:var(--ms-lilac-ink);}\n.mbr-ms .ms-band div.here b{color:var(--ms-lilac-ink);}\n\n\/* Gate *\/\n.mbr-ms .ms-gate-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start;}\n.mbr-ms ul.ms-list{list-style:none !important;margin:8px 0 0 !important;padding:0 !important;}\n.mbr-ms ul.ms-list > li{list-style:none !important;position:relative;margin:0 !important;padding:12px 0 12px 34px !important;border-top:1px solid var(--ms-line);}\n.mbr-ms ul.ms-list > li:first-child{border-top:0;}\n.mbr-ms ul.ms-list > li::marker{content:\"\";}\n.mbr-ms ul.ms-list > li::before{content:\"\";position:absolute;left:0;top:15px;width:22px;height:22px;border-radius:50%;background:#E3EEEF url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%230F5058' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'\/%3E%3C\/svg%3E\") center\/12px no-repeat;}\n.mbr-ms .ms-form{display:grid;gap:16px;}\n.mbr-ms .ms-field label{display:block;font-size:14px;font-weight:700;line-height:1.3;color:var(--ms-ink);margin:0 0 6px;}\n.mbr-ms .ms-field label span{font-weight:500;color:#476B70;}\n.mbr-ms .ms-input{display:block;width:100%;height:48px;border:1px solid #6F8E92;border-radius:8px;padding:0 14px;font-family:var(--ms-body);font-size:16px;color:var(--ms-ink);background:var(--ms-white);box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease;}\n.mbr-ms .ms-input:focus{outline:none;border-color:var(--ms-dark);box-shadow:0 0 0 3px rgba(202,191,229,.8);}\n.mbr-ms .ms-input[aria-invalid=\"true\"]{border-color:var(--ms-error);}\n.mbr-ms .ms-row2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}\n.mbr-ms .ms-check{display:grid;grid-template-columns:20px 1fr;gap:12px;align-items:start;font-size:14.5px;line-height:1.5;}\n.mbr-ms .ms-check input{width:20px;height:20px;margin:1px 0 0;accent-color:var(--ms-dark);cursor:pointer;opacity:1;}\n.mbr-ms .ms-check label{margin:0;line-height:1.5;display:block;cursor:pointer;}\n.mbr-ms .ms-check a{color:var(--ms-dark);font-weight:700;text-decoration:underline;}\n.mbr-ms .ms-error{margin:0;padding:12px 14px;border-radius:8px;background:#FDECEA;color:var(--ms-error);font-size:14.5px;font-weight:600;}\n.mbr-ms .ms-form .ms-btn{width:100%;margin-top:4px;}\n\n\/* Profile *\/\n.mbr-ms .ms-profile-card{padding:12px 32px;}\n.mbr-ms .ms-focus-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start;}\n.mbr-ms ol.ms-steps{list-style:none !important;margin:0 !important;padding:0 !important;counter-reset:ms;}\n.mbr-ms ol.ms-steps > li{list-style:none !important;counter-increment:ms;position:relative;margin:0 !important;padding:14px 0 14px 46px !important;border-top:1px solid var(--ms-line);font-weight:600;color:var(--ms-ink);}\n.mbr-ms ol.ms-steps > li:first-child{border-top:0;}\n.mbr-ms ol.ms-steps > li::before{content:counter(ms);position:absolute;left:0;top:12px;width:30px;height:30px;border-radius:8px;background:var(--ms-white);color:var(--ms-dark);font-family:var(--ms-head);font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;}\n.mbr-ms .ms-nextq{margin:32px 0 0;padding:24px 26px;border-radius:12px;background:var(--ms-white);}\n.mbr-ms .ms-nextq .ms-eyebrow{margin-bottom:10px;}\n.mbr-ms .ms-nextq .ms-nextq-text{margin:0;font-family:var(--ms-head);font-weight:700;font-size:19px;line-height:1.4;color:var(--ms-ink);}\n.mbr-ms .ms-note{margin:16px 0 0;font-size:15px;color:var(--ms-on-dark);}\n.mbr-ms .ms-cta .ms-btns{justify-content:center;}\n.mbr-ms .ms-retake{padding:28px 0;text-align:center;}\n\n\/* Responsive *\/\n@media (max-width:1024px){\n  .mbr-ms .ms-hero-grid,.mbr-ms .ms-result-grid,.mbr-ms .ms-gate-grid,.mbr-ms .ms-focus-grid{grid-template-columns:1fr;gap:48px;}\n  .mbr-ms .ms-example{justify-self:start;}\n  .mbr-ms .ms-split{grid-template-columns:1fr;margin-bottom:40px;}\n  .mbr-ms .ms-grid5{grid-template-columns:repeat(3,1fr);}\n  .mbr-ms .ms-grid4{grid-template-columns:1fr 1fr;}\n}\n@media (max-width:720px){\n  .mbr-ms .ms-wrap{padding:0 16px;}\n  .mbr-ms .ms-sec{padding:64px 0;}\n  .mbr-ms .ms-hero{padding:64px 0;}\n  .mbr-ms .ms-head-block{margin-bottom:36px;}\n  .mbr-ms .ms-grid5,.mbr-ms .ms-grid4{grid-template-columns:1fr;gap:12px;}\n  .mbr-ms .ms-tile{padding:22px;}\n  .mbr-ms .ms-grid5 .ms-tile{display:grid;grid-template-columns:36px 1fr;gap:2px 14px;align-items:start;padding:18px;}\n  .mbr-ms .ms-grid5 .ms-tile .ms-letter{grid-row:span 2;margin:0;}\n  .mbr-ms .ms-grid5 .ms-tile .ms-h3{margin:6px 0 2px;}\n  .mbr-ms .ms-card{padding:22px;}\n  .mbr-ms .ms-profile-card{padding:6px 20px;}\n  .mbr-ms .ms-credit{padding:56px 0;}\n  .mbr-ms .ms-credit-grid{grid-template-columns:1fr;gap:24px;}\n  .mbr-ms .ms-credit-photo{width:120px;height:120px;}\n  .mbr-ms .ms-btns .ms-btn{width:100%;}\n  .mbr-ms .ms-dialog{width:100%;height:100%;max-height:none;border-radius:0;}\n  .mbr-ms .ms-dialog.ms-dialog-inline[open]{height:auto;margin:0;}\n  .mbr-ms .ms-dlg-inner{padding:12px 16px 32px;}\n  .mbr-ms .ms-opt{padding:14px;gap:12px;}\n  .mbr-ms .ms-q-keys{display:none;}\n  .mbr-ms .ms-score b{font-size:60px;}\n  .mbr-ms .ms-scorebox{padding:22px;}\n  .mbr-ms .ms-band{grid-template-columns:1fr 1fr;}\n  .mbr-ms .ms-row2{grid-template-columns:1fr;}\n  .mbr-ms .ms-ex-score{font-size:34px;}\n  .mbr-ms .ms-profile-dims .ms-dim{grid-template-columns:36px 1fr;gap:14px;padding:16px 0;}\n  .mbr-ms .ms-profile-dims .ms-letter{width:36px;height:36px;font-size:16px;}\n}\n@media (prefers-reduced-motion:reduce){\n  .mbr-ms .ms-btn,.mbr-ms .ms-opt{transition:none;}\n  .mbr-ms .ms-btn:hover{transform:none;}\n}\n<\/style>\n\n<div class=\"mbr-ms\" id=\"mbr-ms\">\n\n<!-- ========== PAGE HERO (always visible) ========== -->\n  <section class=\"ms-hero\" data-hero>\n    <div class=\"ms-wrap ms-hero-grid\">\n      <div>\n        <p class=\"ms-eyebrow\">Self-assessment<\/p>\n        <h1 class=\"ms-h1\">The Attractions Operations Maturity Scorecard<\/h1>\n        <p class=\"ms-lead\">Rate your safety, maintenance and operations practices against industry best practice, and find the blind spots in your operation.<\/p>\n        <div class=\"ms-btns\">\n          <button type=\"button\" class=\"ms-btn ms-btn-primary\" data-action=\"start\">\n            <span data-start-label>Start the assessment<\/span>\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n          <\/button>\n          <button type=\"button\" class=\"ms-textbtn\" data-action=\"restart\" data-resume-only hidden>Start over<\/button>\n        <\/div>\n        <p class=\"ms-meta\">20 questions &middot; About 8 minutes &middot; Your level is shown on screen<\/p>\n      <\/div>\n\n      <div class=\"ms-example\" data-example>\n        <p class=\"ms-example-label\" id=\"ms-example-label\">Example result<\/p>\n        <div class=\"ms-card ms-card-lift\" role=\"img\" aria-labelledby=\"ms-example-label\" aria-describedby=\"ms-example-desc\">\n          <span class=\"ms-sr\" id=\"ms-example-desc\">Level 3, Informed, 62 out of 80. Data and Digitisation is the lowest-scoring dimension.<\/span>\n          <div class=\"ms-ex-top\" aria-hidden=\"true\">\n            <div>\n              <p class=\"ms-ex-kicker\">Overall level<\/p>\n              <p class=\"ms-ex-level\">Level 3: Informed<\/p>\n            <\/div>\n            <div class=\"ms-ex-score\">62 <small>\/ 80<\/small><\/div>\n          <\/div>\n          <div class=\"ms-dims\" aria-hidden=\"true\">\n            <div class=\"ms-dim\"><span class=\"ms-letter\">A<\/span><div><div class=\"ms-dim-top\"><span class=\"ms-dim-name\">Safety Culture<\/span><span class=\"ms-dim-score\">14 \/ 16<\/span><\/div><div class=\"ms-bar\"><i style=\"width:88%\"><\/i><\/div><\/div><\/div>\n            <div class=\"ms-dim\"><span class=\"ms-letter\">B<\/span><div><div class=\"ms-dim-top\"><span class=\"ms-dim-name\">Maintenance Practice<\/span><span class=\"ms-dim-score\">12 \/ 16<\/span><\/div><div class=\"ms-bar\"><i style=\"width:75%\"><\/i><\/div><\/div><\/div>\n            <div class=\"ms-dim\"><span class=\"ms-letter\">C<\/span><div><div class=\"ms-dim-top\"><span class=\"ms-dim-name\">Operations &amp; Training<\/span><span class=\"ms-dim-score\">12 \/ 16<\/span><\/div><div class=\"ms-bar\"><i style=\"width:75%\"><\/i><\/div><\/div><\/div>\n            <div class=\"ms-dim is-gap\"><span class=\"ms-letter\">D<\/span><div><div class=\"ms-dim-top\"><span class=\"ms-dim-name\">Data &amp; Digitisation<\/span><span class=\"ms-dim-score\">10 \/ 16<\/span><\/div><div class=\"ms-bar\"><i style=\"width:63%\"><\/i><\/div><\/div><\/div>\n            <div class=\"ms-dim\"><span class=\"ms-letter\">E<\/span><div><div class=\"ms-dim-top\"><span class=\"ms-dim-name\">Commercial Alignment<\/span><span class=\"ms-dim-score\">14 \/ 16<\/span><\/div><div class=\"ms-bar\"><i style=\"width:88%\"><\/i><\/div><\/div><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<!-- ========== VIEW 1: INTRO ========== -->\n<div data-view=\"intro\">\n\n  <section class=\"ms-sec\">\n    <div class=\"ms-wrap\">\n      <div class=\"ms-split\">\n        <div>\n          <p class=\"ms-eyebrow\">What it measures<\/p>\n          <h2 class=\"ms-h2\">Five dimensions, four questions each<\/h2>\n        <\/div>\n        <p class=\"ms-lead\">Every question uses the same four-point scale, from &ldquo;rarely or not yet in place&rdquo; to &ldquo;consistently and systematically&rdquo;. Answer for how things work today.<\/p>\n      <\/div>\n      <div class=\"ms-grid5\">\n        <div class=\"ms-tile\"><span class=\"ms-letter\">A<\/span><h3 class=\"ms-h3\">Safety Culture<\/h3><p>Near-miss reporting, shared ownership of safety and links to industry bodies.<\/p><\/div>\n        <div class=\"ms-tile\"><span class=\"ms-letter\">B<\/span><h3 class=\"ms-h3\">Maintenance Practice<\/h3><p>PPM discipline, spare parts coverage and how maintenance records are used.<\/p><\/div>\n        <div class=\"ms-tile\"><span class=\"ms-letter\">C<\/span><h3 class=\"ms-h3\">Operations &amp; Training<\/h3><p>Documented competency, consistent training and reliance on key people.<\/p><\/div>\n        <div class=\"ms-tile\"><span class=\"ms-letter\">D<\/span><h3 class=\"ms-h3\">Data &amp; Digitisation<\/h3><p>Digital records, access to operational data and using it to plan ahead.<\/p><\/div>\n        <div class=\"ms-tile\"><span class=\"ms-letter\">E<\/span><h3 class=\"ms-h3\">Commercial Alignment<\/h3><p>Reporting in business terms, the cost of downtime and investment cases.<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"ms-sec ms-tint\">\n    <div class=\"ms-wrap\">\n      <div class=\"ms-head-block ms-center\">\n        <p class=\"ms-eyebrow\">How it scores<\/p>\n        <h2 class=\"ms-h2\">Four levels of maturity<\/h2>\n        <p class=\"ms-lead\">Each answer scores 1 to 4, so your total lands between 20 and 80. The total places your operation on one of four levels.<\/p>\n      <\/div>\n      <div class=\"ms-grid4\">\n        <div class=\"ms-tile\"><div class=\"ms-meter\" aria-hidden=\"true\"><i class=\"on\"><\/i><i><\/i><i><\/i><i><\/i><\/div><p class=\"ms-lvl-range\">Level 1 &middot; 20&ndash;35<\/p><h3 class=\"ms-h3\">Reactive<\/h3><p class=\"ms-lvl-quote\">&ldquo;We fix it when it breaks.&rdquo;<\/p><\/div>\n        <div class=\"ms-tile\"><div class=\"ms-meter\" aria-hidden=\"true\"><i class=\"on\"><\/i><i class=\"on\"><\/i><i><\/i><i><\/i><\/div><p class=\"ms-lvl-range\">Level 2 &middot; 36&ndash;52<\/p><h3 class=\"ms-h3\">Structured<\/h3><p class=\"ms-lvl-quote\">&ldquo;We follow the plan.&rdquo;<\/p><\/div>\n        <div class=\"ms-tile\"><div class=\"ms-meter\" aria-hidden=\"true\"><i class=\"on\"><\/i><i class=\"on\"><\/i><i class=\"on\"><\/i><i><\/i><\/div><p class=\"ms-lvl-range\">Level 3 &middot; 53&ndash;67<\/p><h3 class=\"ms-h3\">Informed<\/h3><p class=\"ms-lvl-quote\">&ldquo;We know what is happening and why.&rdquo;<\/p><\/div>\n        <div class=\"ms-tile\"><div class=\"ms-meter\" aria-hidden=\"true\"><i class=\"on\"><\/i><i class=\"on\"><\/i><i class=\"on\"><\/i><i class=\"on\"><\/i><\/div><p class=\"ms-lvl-range\">Level 4 &middot; 68&ndash;80<\/p><h3 class=\"ms-h3\">Intelligent<\/h3><p class=\"ms-lvl-quote\">&ldquo;We manage the future, not just the present.&rdquo;<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"ms-credit\">\n    <div class=\"ms-wrap ms-credit-grid\">\n      <img class=\"ms-credit-photo lazyload\" data-src=\"https:\/\/mobaro.com\/wp-content\/uploads\/2022\/12\/Mobaro-David-Bromilow-1.jpg\" width=\"200\" height=\"200\" alt=\"Portrait of David Bromilow\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 200px; --smush-placeholder-aspect-ratio: 200\/200;\">\n      <div>\n        <p class=\"ms-eyebrow\">Developed with<\/p>\n        <h2 class=\"ms-h3\">David Bromilow<\/h2>\n        <p class=\"ms-credit-role\">Global Director, Parks &amp; Attractions at Mobaro &middot; Former Chair of the IAAPA Global Safety Committee<\/p>\n        <p class=\"ms-credit-text\">The questions, scoring model and improvement guidance draw on David&rsquo;s 50 years in the attractions industry.<\/p>\n        <div class=\"ms-btns\">\n          <button type=\"button\" class=\"ms-btn ms-btn-primary\" data-action=\"start\"><span data-start-label>Start the assessment<\/span><\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n<!-- ========== QUESTIONS (modal overlay) ========== -->\n<dialog class=\"ms-dialog\" data-quiz aria-labelledby=\"ms-dlg-title\">\n  <div class=\"ms-dlg-inner\">\n    <div class=\"ms-dlg-head\">\n      <p class=\"ms-dlg-title\" id=\"ms-dlg-title\">Maturity Scorecard<\/p>\n      <button type=\"button\" class=\"ms-dlg-close\" data-action=\"close-quiz\" aria-label=\"Close. Your answers are saved.\">\n        <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\"\/><\/svg>\n      <\/button>\n    <\/div>\n    <div class=\"ms-progress\">\n      <div class=\"ms-progress-top\"><span data-q-count>Question 1 of 20<\/span><span data-q-dimname><\/span><\/div>\n      <div class=\"ms-segs\" data-q-segs aria-hidden=\"true\"><\/div>\n    <\/div>\n    <div class=\"ms-qbody\">\n      <p class=\"ms-q-dim\"><span class=\"ms-letter\" data-q-letter>A<\/span><span data-q-dim>Safety Culture<\/span><\/p>\n      <h2 class=\"ms-q-text\" id=\"ms-qtext\" data-q-text tabindex=\"-1\"><\/h2>\n      <p class=\"ms-q-hint\" data-q-hint>Answer for how things work today.<\/p>\n      <div class=\"ms-opts\" data-q-opts role=\"group\" aria-labelledby=\"ms-qtext\"><\/div>\n      <div class=\"ms-q-nav\">\n        <button type=\"button\" class=\"ms-textbtn\" data-action=\"back\">Back<\/button>\n        <span class=\"ms-q-keys\" aria-hidden=\"true\">Tip: press 1 to 4 to answer<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/dialog>\n\n<!-- ========== VIEW 3: RESULT, FORM, FULL PROFILE ========== -->\n<div data-view=\"result\" hidden>\n\n  <section class=\"ms-sec ms-tint ms-result\" data-result-start>\n    <div class=\"ms-wrap ms-result-grid\">\n      <div>\n        <p class=\"ms-eyebrow\">Your result<\/p>\n        <h2 class=\"ms-h2 ms-r-level\" data-r-level tabindex=\"-1\">Level 3: Informed<\/h2>\n        <p class=\"ms-result-quote\" data-r-quote><\/p>\n        <p class=\"ms-lead\" data-r-desc><\/p>\n      <\/div>\n      <div class=\"ms-scorebox\">\n        <p class=\"ms-score\"><b data-r-score>0<\/b> <span>out of 80<\/span><\/p>\n        <div class=\"ms-band\" data-r-band aria-hidden=\"true\">\n          <div data-level=\"1\"><b>Reactive<\/b>20&ndash;35<\/div>\n          <div data-level=\"2\"><b>Structured<\/b>36&ndash;52<\/div>\n          <div data-level=\"3\"><b>Informed<\/b>53&ndash;67<\/div>\n          <div data-level=\"4\"><b>Intelligent<\/b>68&ndash;80<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Form (shown until submitted) -->\n  <section class=\"ms-sec\" data-part=\"gate\">\n    <div class=\"ms-wrap ms-gate-grid\">\n      <div>\n        <p class=\"ms-eyebrow\">Full profile<\/p>\n        <h2 class=\"ms-h2\">See how each dimension scores<\/h2>\n        <p class=\"ms-lead\">Enter your work email to see the rest of your results:<\/p>\n        <ul class=\"ms-list\">\n          <li>Your score in each of the five dimensions<\/li>\n          <li>Your strongest dimension and your biggest gap<\/li>\n          <li>Five focus areas for an operation at your level<\/li>\n          <li>A question to take into your next operations review<\/li>\n          <li>A copy of your results by email, if you want one<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"ms-card\">\n        <form class=\"ms-form\" data-form novalidate action=\"\">\n          <div class=\"ms-field\">\n            <label for=\"ms-email\">Work email<\/label>\n            <input class=\"ms-input\" type=\"email\" id=\"ms-email\" name=\"email\" autocomplete=\"email\" inputmode=\"email\" required aria-required=\"true\" aria-describedby=\"ms-form-error\">\n          <\/div>\n          <div class=\"ms-field\">\n            <label for=\"ms-name\">Name <span>(optional)<\/span><\/label>\n            <input class=\"ms-input\" type=\"text\" id=\"ms-name\" name=\"name\" autocomplete=\"name\">\n          <\/div>\n          <div class=\"ms-row2\">\n            <div class=\"ms-field\">\n              <label for=\"ms-company\">Attraction or company <span>(optional)<\/span><\/label>\n              <input class=\"ms-input\" type=\"text\" id=\"ms-company\" name=\"company\" autocomplete=\"organization\">\n            <\/div>\n            <div class=\"ms-field\">\n              <label for=\"ms-role\">Role <span>(optional)<\/span><\/label>\n              <input class=\"ms-input\" type=\"text\" id=\"ms-role\" name=\"role\" autocomplete=\"organization-title\">\n            <\/div>\n          <\/div>\n          <div class=\"ms-check\">\n            <input type=\"checkbox\" id=\"ms-pdf\" name=\"pdf\">\n            <label for=\"ms-pdf\">Email me a copy of my results.<\/label>\n          <\/div>\n          <div class=\"ms-check\">\n            <input type=\"checkbox\" id=\"ms-consent\" name=\"consent\" required aria-required=\"true\">\n            <label for=\"ms-consent\">I agree that Mobaro may send me my results and relevant operational content. I can unsubscribe at any time. See the <a href=\"https:\/\/mobaro.com\/privacy-and-cookie-policy\/\" target=\"_blank\" rel=\"noopener\">privacy policy<span class=\"ms-sr\"> (se abre en una nueva pesta\u00f1a)<\/span><\/a>.<\/label>\n          <\/div>\n          <p class=\"ms-error\" id=\"ms-form-error\" data-form-error role=\"alert\" hidden><\/p>\n          <button type=\"submit\" class=\"ms-btn ms-btn-dark\" data-submit>Show my full profile<\/button>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"es\"\/><\/form>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Full profile (shown after submit) -->\n  <div data-part=\"profile\" hidden>\n\n    <section class=\"ms-sec\" data-profile-start>\n      <div class=\"ms-wrap\">\n        <div class=\"ms-split\">\n          <div>\n            <p class=\"ms-eyebrow\">Your full profile<\/p>\n            <h2 class=\"ms-h2\" data-profile-heading tabindex=\"-1\">Your five dimensions<\/h2>\n          <\/div>\n          <p class=\"ms-lead\" data-p-intro><\/p>\n        <\/div>\n        <div class=\"ms-card ms-profile-card\">\n          <div class=\"ms-dims ms-profile-dims\" data-p-dims><\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"ms-sec ms-tint\">\n      <div class=\"ms-wrap ms-focus-grid\">\n        <div>\n          <p class=\"ms-eyebrow\" data-p-focus-eyebrow>Where to focus next<\/p>\n          <h2 class=\"ms-h2\" data-p-focus-title><\/h2>\n          <div class=\"ms-nextq\">\n            <p class=\"ms-eyebrow\">A question for your next operations review<\/p>\n            <p class=\"ms-nextq-text\" data-p-nextq><\/p>\n          <\/div>\n        <\/div>\n        <ol class=\"ms-steps\" data-p-focus><\/ol>\n      <\/div>\n    <\/section>\n\n    <section class=\"ms-sec ms-dark ms-cta\">\n      <div class=\"ms-wrap ms-center\">\n        <p class=\"ms-eyebrow\">30-minute review<\/p>\n        <h2 class=\"ms-h2\">Talk your results through with Mobaro<\/h2>\n        <p class=\"ms-lead\">We will go through your score with you, look at your biggest gap and share how other attraction operators have worked on the same areas.<\/p>\n        <div class=\"ms-btns\" data-review-wrap>\n          <button type=\"button\" class=\"ms-btn ms-btn-primary\" data-action=\"review\">Request a review call<\/button>\n        <\/div>\n        <p class=\"ms-note\" data-review-done role=\"status\" hidden>Thanks. We will be in touch to find a time.<\/p>\n        <p class=\"ms-note\" data-review-error role=\"alert\" hidden>That did not go through. Please try again.<\/p>\n        <p class=\"ms-note\" data-pdf-note hidden>A copy of your results is on its way to your inbox.<\/p>\n      <\/div>\n    <\/section>\n\n  <\/div>\n\n  <div class=\"ms-retake\">\n    <div class=\"ms-wrap\">\n      <button type=\"button\" class=\"ms-textbtn\" data-action=\"restart\">Retake the assessment<\/button>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<\/div>\n<script>\n(function(){\n  \"use strict\";\n  var root = document.getElementById(\"mbr-ms\");\n  if(!root) return;\n\n  \/* ---------- HubSpot ---------- *\/\n  var HUBSPOT_PORTAL_ID = \"2795997\";\n  var HUBSPOT_FORM_GUID = \"0253e989-3748-41d2-9747-694855b99686\";\n  var HUBSPOT_ENDPOINT = \"https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/\" + HUBSPOT_PORTAL_ID + \"\/\" + HUBSPOT_FORM_GUID;\n  var ASSESSMENT_VERSION = \"2.0\";\n  var SUBSCRIPTION_TYPE_ID = 7050590; \/* Marketing Information *\/\n  var CONSENT_TEXT = \"I agree that Mobaro may send me my results and relevant operational content.\";\n  var STORAGE_KEY = \"mbr-maturity-scorecard-v2\";\n\n  \/* HubSpot contact properties (internal names) *\/\n  var F = {\n    responses:\"quick_diagnostic_responses\",   \/* label: Assessment responses. All 20 answers, e.g. \"A1=3; A2=4; ...\" *\/\n    completed:\"assessment_completed\",\n    version:\"assessment_version\",\n    level:\"overall_maturity_level\",           \/* dropdown values: reactive \/ structured \/ informed \/ intelligent *\/\n    total:\"total_maturity_score\",\n    strongest:\"strongest_dimension\",\n    weakest:\"weakest_dimension\",\n    score:{A:\"safety_culture_score\",B:\"maintenance_practice_score\",C:\"operations_training_score\",D:\"data_digitisation_score\",E:\"commercial_alignment_score\"},\n    pct:{A:\"safety_culture_score_percent\",B:\"maintenance_practice_score_percent\",C:\"operations_training_score_percent\",D:\"data_digitisation_score_percent\",E:\"commercial_alignment_score_percent\"},\n    pdf:\"pdf_report_requested\",\n    review:\"review_call_requested\"\n  };\n\n  \/* ---------- Content ---------- *\/\n  var DIMS = {A:\"Safety Culture\",B:\"Maintenance Practice\",C:\"Operations & Training\",D:\"Data & Digitisation\",E:\"Commercial Alignment\"};\n  var LETTERS = [\"A\",\"B\",\"C\",\"D\",\"E\"];\n  var QUESTIONS = {\n    A1:\"Is safety discussed as a shared organisational value, not just a departmental responsibility?\",\n    A2:\"When a near-miss occurs, is it reported, recorded and reviewed for systemic causes?\",\n    A3:\"Could a new starter describe your park's safety culture after their first week?\",\n    A4:\"Does your safety programme engage with industry standards bodies or peer networks?\",\n    B1:\"Are PPM schedules followed consistently, with records that would hold up under external audit?\",\n    B2:\"Does your spare parts inventory include all components that could cause significant downtime if unavailable?\",\n    B3:\"Are your maintenance procedures specific to your park's equipment and operating context?\",\n    B4:\"Do you analyse maintenance records for patterns before failures occur?\",\n    C1:\"Is every maintenance technician's competency on every ride type formally documented?\",\n    C2:\"If your most experienced people left tomorrow, would the operation continue at the same standard?\",\n    C3:\"Are procedures and training records consistent across all rides, including seasonal and temporary staff?\",\n    C4:\"Is training reviewed when incidents occur, standards change or new equipment is introduced?\",\n    D1:\"Are inspection, maintenance and incident records held in a digital system that can be searched and reported on?\",\n    D2:\"Can you identify which assets are most likely to cause unplanned downtime in the next 90 days?\",\n    D3:\"Do supervisors have direct access to operational data without specialist support?\",\n    D4:\"Is operational data used to improve scheduling and reduce downtime, not just produce audit documentation?\",\n    E1:\"Does senior leadership receive regular reporting on operational performance in business terms?\",\n    E2:\"When you make the case for maintenance investment, do you quantify the return?\",\n    E3:\"Is the cost of downtime on key assets calculated and understood by operations and finance leadership?\",\n    E4:\"Does capital planning incorporate operational performance data from your asset fleet?\"\n  };\n  var IDS = [];\n  LETTERS.forEach(function(L){ for(var n=1;n<=4;n++) IDS.push(L+n); });\n\n  var SCALE = [\n    {v:1,label:\"Rarely or not yet in place\",desc:\"No consistent practice. Handled ad hoc when it comes up.\"},\n    {v:2,label:\"Sometimes, but inconsistent\",desc:\"Happens in places, but not reliably across the operation.\"},\n    {v:3,label:\"Usually in place\",desc:\"A dependable routine, with occasional gaps or exceptions.\"},\n    {v:4,label:\"Consistently and systematically\",desc:\"Embedded, documented and measured across the operation.\"}\n  ];\n\n  var LEVELS = [\n    {n:1,name:\"Reactive\",min:20,max:35,quote:\"We fix it when it breaks.\",\n     desc:\"Your operation depends heavily on experience, informal routines and individual knowledge. The priority is to build structure, documentation and basic visibility.\",\n     focusIntro:\"Make the operation less dependent on individual memory and informal routines.\",\n     focus:[\"Document critical procedures\",\"Create consistent PPM schedules\",\"Record downtime and incidents in a searchable format\",\"Formalise competency sign-off\",\"Introduce structured near-miss reporting\"],\n     nextQ:\"What operational knowledge would disappear if one or two key people left?\"},\n    {n:2,name:\"Structured\",min:36,max:52,quote:\"We follow the plan.\",\n     desc:\"You have core processes in place. The next opportunity is to turn records and routines into usable operational insight.\",\n     focusIntro:\"Move from having records to using them to make better decisions.\",\n     focus:[\"Review downtime data every month\",\"Identify repeat issues on specific assets\",\"Connect inspections to follow-up tasks\",\"Give supervisors better visibility\",\"Use data to adjust maintenance planning\"],\n     nextQ:\"What have we changed in the past 12 months because of what our operational data showed us?\"},\n    {n:3,name:\"Informed\",min:53,max:67,quote:\"We know what is happening and why.\",\n     desc:\"You are using data and structure to improve performance. The next opportunity is to connect operational insight to leadership and investment decisions.\",\n     focusIntro:\"Connect operational insight to leadership, investment and risk management.\",\n     focus:[\"Translate downtime into financial impact\",\"Report operational performance to senior leadership\",\"Build stronger ROI cases for maintenance investment\",\"Use asset history in capital planning\",\"Benchmark against industry peers\"],\n     nextQ:\"Can we explain the business value of better maintenance, safety and operational visibility?\"},\n    {n:4,name:\"Intelligent\",min:68,max:80,quote:\"We manage the future, not just the present.\",\n     desc:\"You operate at a leading level. The priority is to keep standards consistent, scale best practice and contribute to wider industry learning.\",\n     focusIntro:\"Sustain the standard and help shape industry best practice.\",\n     focus:[\"Keep standards consistent as teams change\",\"Scale best practice across sites or departments\",\"Mature your predictive maintenance\",\"Share learnings through industry networks\",\"Use operational data in long-term strategic planning\"],\n     nextQ:\"How do we keep improving when the operation is already performing well?\"}\n  ];\n\n  function dimLevel(s){ return s <= 7 ? \"Reactive\" : s <= 10 ? \"Structured\" : s <= 13 ? \"Informed\" : \"Intelligent\"; }\n  function overallLevel(t){ for(var i=0;i<LEVELS.length;i++){ if(t >= LEVELS[i].min && t <= LEVELS[i].max) return LEVELS[i]; } return LEVELS[0]; }\n\n  \/* ---------- State ---------- *\/\n  var answers = {}, idx = 0, contact = null, result = null, locked = false, currentView = \"intro\";\n  var dialog = q(\"[data-quiz]\"), modalOK = !!(dialog && typeof dialog.showModal === \"function\");\n  var historyPushed = false, finishing = false, returnFocus = null, savedOverflow = \"\", savedPad = \"\";\n\n  function save(){\n    try{ sessionStorage.setItem(STORAGE_KEY, JSON.stringify({answers:answers, idx:idx})); }catch(e){}\n  }\n  function load(){\n    try{\n      var s = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || \"null\");\n      if(s && s.answers && typeof s.answers === \"object\"){\n        IDS.forEach(function(id){ var v = Number(s.answers[id]); if(v>=1 && v<=4) answers[id] = v; });\n        idx = Math.max(0, Math.min(IDS.length-1, Number(s.idx) || 0));\n      }\n    }catch(e){}\n  }\n  function clearSaved(){ try{ sessionStorage.removeItem(STORAGE_KEY); }catch(e){} }\n  function answeredCount(){ return IDS.filter(function(id){ return answers[id] !== undefined; }).length; }\n\n  function track(event, params){\n    try{\n      window.dataLayer = window.dataLayer || [];\n      var o = {event:event}; for(var k in (params||{})) o[k] = params[k];\n      window.dataLayer.push(o);\n    }catch(e){}\n  }\n\n  \/* ---------- Helpers ---------- *\/\n  function q(sel){ return root.querySelector(sel); }\n  function qa(sel){ return Array.prototype.slice.call(root.querySelectorAll(sel)); }\n  function esc(s){ return String(s).replace(\/[&<>\"]\/g, function(c){ return {\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"}[c]; }); }\n  var reduceMotion = window.matchMedia && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n  function scrollToEl(el, force){\n    if(!el) return;\n    var top = el.getBoundingClientRect().top;\n    if(force || top < 0 || top > window.innerHeight * 0.4){\n      el.scrollIntoView({behavior: reduceMotion ? \"auto\" : \"smooth\", block:\"start\"});\n    }\n  }\n\n  function focusEl(el){\n    if(!el) return;\n    try{ el.focus({preventScroll:true}); }catch(e){ el.focus(); }\n  }\n\n  \/* Swap the content below the hero. The hero itself always stays. *\/\n  function show(view){\n    qa(\"[data-view]\").forEach(function(v){ v.hidden = v.getAttribute(\"data-view\") !== view; });\n    currentView = view;\n    \/* Hide the example card once a real result exists, so the two are never confused *\/\n    var hasResult = view === \"result\";\n    q(\"[data-example]\").hidden = hasResult;\n    q(\"[data-hero]\").classList.toggle(\"is-compact\", hasResult);\n    updateStartLabels();\n  }\n\n  \/* ---------- Overlay ---------- *\/\n  function isOpen(){ return dialog.hasAttribute(\"open\"); }\n\n  function openQuiz(){\n    if(isOpen()) { focusEl(q(\"[data-q-text]\")); return; }\n    returnFocus = document.activeElement;\n    if(modalOK){\n      \/* Lock the page behind the overlay, and keep the layout from jumping when the scrollbar disappears *\/\n      var de = document.documentElement, sbw = window.innerWidth - de.clientWidth;\n      savedOverflow = de.style.overflow; savedPad = de.style.paddingRight;\n      de.style.overflow = \"hidden\";\n      if(sbw > 0) de.style.paddingRight = sbw + \"px\";\n      dialog.showModal();\n      \/* The browser back button closes the overlay instead of leaving the page *\/\n      try{ history.pushState({msQuiz:true}, \"\"); historyPushed = true; }catch(e){ historyPushed = false; }\n    } else {\n      dialog.classList.add(\"ms-dialog-inline\");\n      dialog.setAttribute(\"open\", \"\");\n      scrollToEl(dialog, true);\n    }\n    renderQuestion(true);\n  }\n\n  function closeQuiz(){\n    if(!isOpen()) return;\n    if(modalOK) dialog.close();\n    else { dialog.removeAttribute(\"open\"); onQuizClosed(); }\n  }\n\n  var afterPop = null;\n  function runAfterPop(){ var fn = afterPop; afterPop = null; if(fn) fn(); }\n\n  function onQuizClosed(){\n    var de = document.documentElement;\n    de.style.overflow = savedOverflow; de.style.paddingRight = savedPad;\n    if(historyPushed){\n      \/* Remove our history entry, and wait for it so the browser's scroll restore doesn't fight our scrolling *\/\n      historyPushed = false;\n      afterPop = afterClose;\n      try{ history.back(); setTimeout(runAfterPop, 500); }catch(e){ runAfterPop(); }\n    } else {\n      afterClose();\n    }\n  }\n\n  function afterClose(){\n    if(finishing){ finishing = false; finish(); return; }\n    if(answeredCount() < IDS.length) track(\"scorecard_close\", {assessment_version:ASSESSMENT_VERSION, question:idx+1});\n    updateStartLabels();\n    var target = returnFocus && root.contains(returnFocus) && returnFocus.offsetParent !== null ? returnFocus : q(\".ms-hero [data-action='start']\");\n    focusEl(target);\n  }\n\n  \/* ---------- Intro ---------- *\/\n  function updateStartLabels(){\n    var n = answeredCount();\n    var label = n === 0 ? \"Start the assessment\"\n      : n < IDS.length ? \"Continue from question \" + (Math.min(idx, IDS.length-1) + 1)\n      : \"See your result\";\n    qa(\"[data-start-label]\").forEach(function(el){ el.textContent = label; });\n    qa(\"[data-resume-only]\").forEach(function(el){ el.hidden = n === 0; });\n  }\n\n  function start(){\n    if(currentView === \"result\" || answeredCount() === IDS.length){\n      if(currentView !== \"result\") finish();\n      else { scrollToEl(q(\"[data-result-start]\"), true); focusEl(q(\"[data-r-level]\")); }\n      return;\n    }\n    if(answeredCount() === 0) track(\"scorecard_start\", {assessment_version:ASSESSMENT_VERSION});\n    openQuiz();\n  }\n\n  function restart(){\n    if(isOpen()) closeQuiz();\n    answers = {}; idx = 0; contact = null; result = null; locked = false;\n    clearSaved();\n    var form = q(\"[data-form]\"); if(form) form.reset();\n    q(\"[data-form-error]\").hidden = true;\n    q(\"[data-part='gate']\").hidden = false;\n    q(\"[data-part='profile']\").hidden = true;\n    q(\"[data-review-wrap]\").hidden = false;\n    q(\"[data-review-done]\").hidden = true;\n    q(\"[data-review-error]\").hidden = true;\n    var rb = q(\"[data-action='review']\"); rb.disabled = false; rb.textContent = \"Request a review call\";\n    show(\"intro\");\n    scrollToEl(root, true);\n    focusEl(q(\".ms-hero [data-action='start']\"));\n  }\n\n  \/* ---------- Questions ---------- *\/\n  function renderQuestion(focus){\n    var id = IDS[idx], L = id[0];\n    q(\"[data-q-count]\").textContent = \"Question \" + (idx+1) + \" of \" + IDS.length;\n    q(\"[data-q-dimname]\").textContent = \"Dimension \" + (LETTERS.indexOf(L)+1) + \" of 5\";\n    q(\"[data-q-letter]\").textContent = L;\n    q(\"[data-q-dim]\").textContent = DIMS[L];\n    \/* The hidden prefix gives screen reader users the context that sighted users get from the progress bar *\/\n    q(\"[data-q-text]\").innerHTML = '<span class=\"ms-sr\">Question ' + (idx+1) + ' of ' + IDS.length + ', ' + esc(DIMS[L]) + '. <\/span>' + esc(QUESTIONS[id]);\n    q(\"[data-q-hint]\").hidden = idx !== 0;\n    q(\"[data-action='back']\").style.visibility = idx === 0 ? \"hidden\" : \"visible\";\n\n    q(\"[data-q-segs]\").innerHTML = LETTERS.map(function(D){\n      var segs = \"\";\n      for(var n=1;n<=4;n++){\n        var sid = D+n, i = IDS.indexOf(sid);\n        segs += '<i class=\"' + (i === idx ? \"now\" : answers[sid] !== undefined ? \"done\" : \"\") + '\"><\/i>';\n      }\n      return '<div class=\"ms-seg-group\">' + segs + '<\/div>';\n    }).join(\"\");\n\n    var opts = q(\"[data-q-opts]\");\n    opts.innerHTML = SCALE.map(function(s){\n      var on = answers[id] === s.v;\n      return '<button type=\"button\" class=\"ms-opt\" aria-pressed=\"' + on + '\" data-v=\"' + s.v + '\">' +\n        '<span class=\"ms-radio\" aria-hidden=\"true\"><\/span>' +\n        '<span><span class=\"ms-opt-label\">' + esc(s.label) + '<\/span><span class=\"ms-opt-desc\">' + esc(s.desc) + '<\/span><\/span>' +\n        '<\/button>';\n    }).join(\"\");\n\n    locked = false;\n    updateStartLabels();\n    if(focus){\n      focusEl(q(\"[data-q-text]\"));\n      if(modalOK) dialog.scrollTop = 0;\n    }\n  }\n\n  function answer(v){\n    if(locked) return;\n    locked = true;\n    var id = IDS[idx];\n    answers[id] = v;\n    qa(\"[data-q-opts] .ms-opt\").forEach(function(b){ b.setAttribute(\"aria-pressed\", Number(b.getAttribute(\"data-v\")) === v ? \"true\" : \"false\"); });\n    setTimeout(function(){\n      if(idx < IDS.length-1){ idx++; save(); renderQuestion(true); }\n      else { save(); finishing = true; closeQuiz(); }\n    }, 220);\n  }\n\n  function back(){\n    if(idx > 0){ idx--; save(); renderQuestion(true); }\n  }\n\n  \/* ---------- Scoring ---------- *\/\n  function compute(){\n    var scores = {};\n    LETTERS.forEach(function(L){ scores[L] = 0; for(var n=1;n<=4;n++) scores[L] += answers[L+n] || 0; });\n    var total = LETTERS.reduce(function(a,L){ return a + scores[L]; }, 0);\n    var vals = LETTERS.map(function(L){ return scores[L]; });\n    var maxS = Math.max.apply(null, vals), minS = Math.min.apply(null, vals);\n    return {\n      scores:scores, total:total, level:overallLevel(total), maxS:maxS, minS:minS, even:maxS === minS,\n      strongest:LETTERS.filter(function(L){ return scores[L] === maxS; }),\n      weakest:LETTERS.filter(function(L){ return scores[L] === minS; })\n    };\n  }\n  function names(letters){ return letters.map(function(L){ return DIMS[L]; }); }\n  function joinAnd(arr){ return arr.length < 2 ? arr.join(\"\") : arr.slice(0,-1).join(\", \") + \" and \" + arr[arr.length-1]; }\n\n  \/* ---------- Result ---------- *\/\n  function finish(){\n    result = compute();\n    var lv = result.level;\n    q(\"[data-r-level]\").textContent = \"Level \" + lv.n + \": \" + lv.name;\n    q(\"[data-r-quote]\").textContent = \"\u201c\" + lv.quote + \"\u201d\";\n    q(\"[data-r-desc]\").textContent = lv.desc;\n    q(\"[data-r-score]\").textContent = result.total;\n    qa(\"[data-r-band] > div\").forEach(function(d){ d.classList.toggle(\"here\", Number(d.getAttribute(\"data-level\")) === lv.n); });\n    if(!contact){\n      q(\"[data-part='gate']\").hidden = false;\n      q(\"[data-part='profile']\").hidden = true;\n    } else {\n      renderProfile();\n    }\n    track(\"scorecard_complete\", {assessment_version:ASSESSMENT_VERSION, maturity_level:lv.name, maturity_score:result.total});\n    show(\"result\");\n    scrollToEl(q(\"[data-result-start]\"), true);\n    focusEl(q(\"[data-r-level]\"));\n  }\n\n  function renderProfile(){\n    var r = result, lv = r.level;\n    q(\"[data-p-intro]\").textContent = r.even\n      ? \"Your five dimensions score evenly. Aim for steady progress across all of them.\"\n      : \"Your biggest gap is \" + joinAnd(names(r.weakest)) + \". The spread between your strongest and weakest dimension usually says more about where to act than the total score does.\";\n\n    q(\"[data-p-dims]\").innerHTML = LETTERS.map(function(L){\n      var s = r.scores[L], tags = \"\";\n      var gap = !r.even && s === r.minS, strong = !r.even && s === r.maxS;\n      if(strong) tags += '<span class=\"ms-tag\">Strongest<\/span>';\n      if(gap) tags += '<span class=\"ms-tag ms-tag-gap\">Biggest gap<\/span>';\n      return '<div class=\"ms-dim' + (gap ? \" is-gap\" : \"\") + '\"><span class=\"ms-letter\">' + L + '<\/span><div>' +\n        '<div class=\"ms-dim-top\"><span class=\"ms-dim-name\">' + esc(DIMS[L]) + '<\/span>' + tags +\n        '<span class=\"ms-dim-right\"><span class=\"ms-dim-lvl\">' + dimLevel(s) + '<\/span><span class=\"ms-dim-score\">' + s + ' \/ 16<\/span><\/span><\/div>' +\n        '<div class=\"ms-bar\"><i style=\"width:' + Math.round(s\/16*100) + '%\"><\/i><\/div>' +\n        '<\/div><\/div>';\n    }).join(\"\");\n\n    q(\"[data-p-focus-eyebrow]\").textContent = \"Where to focus next \u00b7 Level \" + lv.n + \": \" + lv.name;\n    q(\"[data-p-focus-title]\").textContent = lv.focusIntro;\n    q(\"[data-p-focus]\").innerHTML = lv.focus.map(function(f){ return \"<li>\" + esc(f) + \"<\/li>\"; }).join(\"\");\n    q(\"[data-p-nextq]\").textContent = \"\u201c\" + lv.nextQ + \"\u201d\";\n    q(\"[data-pdf-note]\").hidden = !(contact && contact.pdf);\n\n    q(\"[data-part='gate']\").hidden = true;\n    q(\"[data-part='profile']\").hidden = false;\n  }\n\n  \/* ---------- HubSpot submission ---------- *\/\n  function getCookie(name){\n    try{ var m = document.cookie.match(new RegExp(\"(?:^|; )\" + name + \"=([^;]*)\")); return m ? decodeURIComponent(m[1]) : undefined; }catch(e){ return undefined; }\n  }\n  function field(name, value){ return {objectTypeId:\"0-1\", name:name, value:String(value)}; }\n\n  function post(fields, withConsent){\n    var payload = {fields:fields, context:{pageUri:location.href, pageName:document.title}};\n    var hutk = getCookie(\"hubspotutk\"); if(hutk) payload.context.hutk = hutk;\n    if(withConsent){\n      payload.legalConsentOptions = {consent:{\n        consentToProcess:true, text:CONSENT_TEXT,\n        communications:[{value:true, subscriptionTypeId:SUBSCRIPTION_TYPE_ID, text:\"I agree to receive marketing communications from Mobaro.\"}]\n      }};\n    }\n    return fetch(HUBSPOT_ENDPOINT, {method:\"POST\", headers:{\"Content-Type\":\"application\/json\"}, body:JSON.stringify(payload)})\n      .then(function(res){\n        if(res.ok) return true;\n        return res.json().catch(function(){ return {}; }).then(function(j){\n          var types = (j && j.errors ? j.errors : []).map(function(e){ return e.errorType; });\n          var err = new Error(\"HubSpot \" + res.status);\n          err.status = res.status; err.types = types; err.retry = res.status >= 500 || res.status === 429;\n          throw err;\n        });\n      }, function(netErr){ var err = new Error(\"Network error\"); err.status = 0; err.types = []; err.retry = true; throw err; });\n  }\n  function postWithRetry(fields, withConsent){\n    return post(fields, withConsent).catch(function(err){\n      if(!err.retry) throw err;\n      return new Promise(function(res){ setTimeout(res, 1500); }).then(function(){ return post(fields, withConsent); });\n    });\n  }\n\n  function errorMessage(err){\n    var t = (err.types || []).join(\" \");\n    if(\/BLOCKED_EMAIL|FREE_EMAIL\/.test(t)) return \"Please use your work email address.\";\n    if(\/INVALID_EMAIL\/.test(t)) return \"That email address doesn't look right. Please check it.\";\n    return \"We couldn't save your details. Please check your connection and try again.\";\n  }\n\n  function submitForm(e){\n    e.preventDefault();\n    var errEl = q(\"[data-form-error]\"), emailEl = q(\"#ms-email\");\n    errEl.hidden = true; emailEl.removeAttribute(\"aria-invalid\");\n    var email = emailEl.value.trim();\n    if(!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)){\n      errEl.textContent = \"Enter a valid work email to see your full profile.\"; errEl.hidden = false;\n      emailEl.setAttribute(\"aria-invalid\",\"true\"); emailEl.focus(); return;\n    }\n    if(!q(\"#ms-consent\").checked){\n      errEl.textContent = \"Tick the consent box so we can send you your results.\"; errEl.hidden = false; return;\n    }\n    var c = {email:email, name:q(\"#ms-name\").value.trim(), company:q(\"#ms-company\").value.trim(), role:q(\"#ms-role\").value.trim(), pdf:q(\"#ms-pdf\").checked};\n    var r = result || compute();\n    var lv = r.level;\n    var fields = [\n      field(\"email\", c.email),\n      field(F.responses, IDS.map(function(id){ return id + \"=\" + answers[id]; }).join(\"; \")),\n      field(F.completed, \"true\"),\n      field(F.version, ASSESSMENT_VERSION),\n      field(F.level, lv.name.toLowerCase()),\n      field(F.total, r.total),\n      field(F.strongest, names(r.strongest).join(\", \")),\n      field(F.weakest, names(r.weakest).join(\", \")),\n      field(F.pdf, c.pdf ? \"true\" : \"false\")\n    ];\n    LETTERS.forEach(function(L){\n      fields.push(field(F.score[L], r.scores[L]));\n      fields.push(field(F.pct[L], Math.round(r.scores[L]\/16*100)));\n    });\n    var parts = c.name.split(\/\\s+\/).filter(Boolean);\n    if(parts[0]) fields.push(field(\"firstname\", parts[0]));\n    if(parts.length > 1) fields.push(field(\"lastname\", parts.slice(1).join(\" \")));\n    if(c.company) fields.push(field(\"company\", c.company));\n    if(c.role) fields.push(field(\"jobtitle\", c.role));\n\n    var btn = q(\"[data-submit]\");\n    btn.disabled = true; btn.textContent = \"Saving\u2026\";\n    postWithRetry(fields, true).then(function(){\n      contact = c;\n      track(\"scorecard_lead\", {assessment_version:ASSESSMENT_VERSION, maturity_level:lv.name, maturity_score:r.total, pdf_requested:c.pdf});\n      renderProfile();\n      scrollToEl(q(\"[data-profile-start]\"), true);\n      focusEl(q(\"[data-profile-heading]\"));\n    }).catch(function(err){\n      track(\"scorecard_submit_error\", {status:err.status || 0, error_types:(err.types || []).join(\",\")});\n      errEl.textContent = errorMessage(err); errEl.hidden = false;\n      if(window.console) console.error(\"Scorecard submission failed\", err);\n    }).then(function(){\n      btn.disabled = false; btn.textContent = \"Show my full profile\";\n    });\n  }\n\n  function requestReview(){\n    if(!contact) return;\n    var btn = q(\"[data-action='review']\");\n    btn.disabled = true; btn.textContent = \"Sending\u2026\";\n    q(\"[data-review-error]\").hidden = true;\n    postWithRetry([field(\"email\", contact.email), field(F.review, \"true\")], false).then(function(){\n      q(\"[data-review-wrap]\").hidden = true;\n      q(\"[data-review-done]\").hidden = false;\n      track(\"scorecard_review_request\", {assessment_version:ASSESSMENT_VERSION});\n    }).catch(function(err){\n      track(\"scorecard_submit_error\", {status:err.status || 0, error_types:\"review\"});\n      btn.disabled = false; btn.textContent = \"Request a review call\";\n      q(\"[data-review-error]\").hidden = false;\n    });\n  }\n\n  \/* ---------- Wiring ---------- *\/\n  root.addEventListener(\"click\", function(e){\n    var opt = e.target.closest(\".ms-opt\");\n    if(opt && root.contains(opt)){ answer(Number(opt.getAttribute(\"data-v\"))); return; }\n    var a = e.target.closest(\"[data-action]\");\n    if(!a || !root.contains(a)) return;\n    var act = a.getAttribute(\"data-action\");\n    if(act === \"start\") start();\n    else if(act === \"restart\") restart();\n    else if(act === \"back\") back();\n    else if(act === \"close-quiz\") closeQuiz();\n    else if(act === \"review\") requestReview();\n  });\n  q(\"[data-form]\").addEventListener(\"submit\", submitForm);\n\n  if(modalOK) dialog.addEventListener(\"close\", onQuizClosed);\n  window.addEventListener(\"popstate\", function(){\n    if(afterPop){ setTimeout(runAfterPop, 0); return; }\n    if(historyPushed && isOpen()){ historyPushed = false; closeQuiz(); }\n  });\n\n  \/* Number keys only work while focus is inside the question overlay (WCAG 2.1.4) *\/\n  document.addEventListener(\"keydown\", function(e){\n    if(!isOpen() || !dialog.contains(document.activeElement)) return;\n    if(e.altKey || e.ctrlKey || e.metaKey) return;\n    var t = e.target;\n    if(t && (t.tagName === \"INPUT\" || t.tagName === \"TEXTAREA\" || t.isContentEditable)) return;\n    if(\/^[1-4]$\/.test(e.key)){ e.preventDefault(); answer(Number(e.key)); }\n  });\n\n  load();\n  updateStartLabels();\n})();\n<\/script>\n\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\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Self-assessment The Attractions Operations Maturity Scorecard Rate your safety, maintenance and operations practices against industry best practice, and find the blind spots in your operation. Start the assessment Start over 20 questions &middot; About 8 minutes &middot; Your level is shown on screen Example result Level 3, Informed, 62 out of 80. Data and Digitisation [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"content-type":"","footnotes":""},"class_list":["post-11595","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/pages\/11595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/comments?post=11595"}],"version-history":[{"count":68,"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/pages\/11595\/revisions"}],"predecessor-version":[{"id":12161,"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/pages\/11595\/revisions\/12161"}],"wp:attachment":[{"href":"https:\/\/mobaro.com\/es\/wp-json\/wp\/v2\/media?parent=11595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}