{"id":19465,"date":"2026-08-05T13:15:19","date_gmt":"2026-08-05T10:15:19","guid":{"rendered":"https:\/\/visitoulu.fi\/?page_id=19465"},"modified":"2026-08-10T15:09:46","modified_gmt":"2026-08-10T12:09:46","slug":"test-quiz","status":"publish","type":"page","link":"https:\/\/visitoulu.fi\/en\/test-quiz\/","title":{"rendered":"Quiz"},"content":{"rendered":"\n<style data-wp-block-html=\"css\">\n\/* --- teasers + footer --- *\/\n.vo-quiz .vo-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:38px}\n.vo-quiz .vo-strip .vo-ph{min-height:150px}\n\n.vo-quiz .vo-partners{\n  display:flex;align-items:center;justify-content:center;gap:32px;flex-wrap:wrap;\n  margin-top:20px;padding-top:20px;\n}\n\n.vo-quiz .vo-partners img{height:50px;width:auto;display:block}\n.vo-quiz .vo-footer{\n  margin-top:0;padding-top:20px;border-top:0;\n  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;\n  font-size:13px;opacity:.7;\n}\n.vo-quiz .vo-tagline{font-family:var(--vo-display);font-weight:800;letter-spacing:.04em;color:var(--vo-purple)\n}\n<\/style>\n\n<!--\n===============================================================================\nVISIT OULU \u2014 \"Guess the North\" quiz page\nImplementation-ready block for WordPress (Custom HTML block or WPCode snippet)\n===============================================================================\n\nWHAT TO DO \u2014 in order:\n\n1. IMAGES\n   Scroll to the \"IMAGE SLOTS\" section in the <script> below.\n   Fill in src and alt for 10 slots (4 round images + 6 page images).\n   Any slot left empty shows a labelled placeholder \u2014 the page still works.\n   Get URLs from: WordPress Media Library > click image > \"Copy URL\".\n\n2. HUBSPOT FORM\n   Find the block marked \"HUBSPOT FORM \u2014 REPLACE THIS\".\n   Delete everything between the DEMO FORM markers, paste your embed code.\n   In HubSpot: enable the GDPR consent checkbox and double opt-in first.\n\n3. PASTE\n   Paste this whole file into a Custom HTML block on a full-width page.\n   This version contains no ampersand-ampersand and no less-than signs\n   inside the JavaScript, so WordPress cannot break it by converting\n   those characters into HTML entities.\n\n4. GA4 (optional, works automatically if gtag is present)\n   Events fired: vo_quiz_start, vo_quiz_complete, vo_newsletter_signup.\n\nEverything is scoped under .vo-quiz and wrapped in an IIFE \u2014 no CSS or JS\ncan leak into the theme, and nothing in the theme can reach in.\n===============================================================================\n-->\n\n<div class=\"vo-quiz\">\n<style>\n.vo-quiz{\n  --vo-purple:#362983;\n  --vo-green:#A2E9D2;\n  --vo-pink:#F478AF;\n  --vo-ink:#241C4A;\n  --vo-paper:#F7F5FF;\n  --vo-white:#FFFFFF;\n  --vo-line:rgba(54,41,131,.16);\n  --vo-shadow:0 18px 50px rgba(36,28,74,.13);\n  --vo-display:\"ABC Favorit Expanded Variable\",\"Archivo Expanded\",\"Helvetica Neue\",Arial,sans-serif;\n  --vo-body:\"ABC Favorit\",\"Inter\",\"Helvetica Neue\",Arial,sans-serif;\n\n  background:var(--vo-paper);\n  color:var(--vo-ink);\n  font-family:var(--vo-body);\n  font-size:17px;\n  line-height:1.55;\n  -webkit-font-smoothing:antialiased;\n  padding:0 20px 72px;\n  margin:0;\n}\n.vo-quiz *{box-sizing:border-box}\n.vo-quiz .vo-inner{max-width:960px;margin:0 auto}\n\n\/* --- resets against theme bleed --- *\/\n.vo-quiz h1,.vo-quiz h2,.vo-quiz p,.vo-quiz figure{margin:0}\n.vo-quiz button{font:inherit;color:inherit;margin:0}\n.vo-quiz input{font:inherit;margin:0}\n.vo-quiz ul{margin:0;padding:0;list-style:none}\n\n\/* --- top bar --- *\/\n.vo-quiz .vo-topbar{\n  display:flex;align-items:center;justify-content:space-between;gap:16px;\n  padding:18px 0;border-bottom:1px solid var(--vo-line);\n}\n.vo-quiz .vo-logo{\n  display:flex;align-items:center;gap:10px;\n  font-family:var(--vo-display);font-weight:800;letter-spacing:.02em;\n  font-size:14px;text-transform:uppercase;color:var(--vo-purple);\n}\n.vo-quiz .vo-logo img{height:150px;width:auto;display:block}\n.vo-quiz .vo-logo-box{\n  width:38px;height:38px;border:2px solid var(--vo-purple);border-radius:50%;\n  display:grid;place-items:center;font-size:8px;color:var(--vo-purple);font-weight:700;\n}\n.vo-quiz .vo-lang{display:flex;border:1.5px solid var(--vo-purple);border-radius:999px;overflow:hidden}\n.vo-quiz .vo-lang button{\n  font-size:13px;font-weight:700;letter-spacing:.06em;\n  padding:7px 16px;border:0;background:transparent;color:var(--vo-purple);cursor:pointer;\n}\n.vo-quiz .vo-lang button[aria-pressed=\"true\"]{background:var(--vo-purple);color:#fff}\n\n\/* --- hero --- *\/\n.vo-quiz .vo-hero{padding:52px 0 8px}\n.vo-quiz .vo-eyebrow{\n  font-family:var(--vo-display);font-size:12px;font-weight:800;letter-spacing:.18em;\n  text-transform:uppercase;color:var(--vo-pink);margin:0 0 18px;\n}\n.vo-quiz h1{\n  font-family:var(--vo-display);font-weight:900;letter-spacing:-.015em;\n  font-size:clamp(38px,6.2vw,68px);line-height:1.02;margin:0 0 20px;color:var(--vo-purple);\n}\n.vo-quiz .vo-lede{font-size:20px;max-width:44ch;margin:0 0 32px;opacity:.85}\n\n.vo-quiz .vo-btn{\n  font-family:var(--vo-display);font-weight:800;font-size:15px;letter-spacing:.06em;\n  text-transform:uppercase;border:0;border-radius:999px;cursor:pointer;\n  padding:17px 34px;background:var(--vo-purple);color:#fff;\n  transition:transform .15s ease,box-shadow .15s ease;\n}\n.vo-quiz .vo-btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(54,41,131,.28)}\n.vo-quiz .vo-btn:focus-visible{outline:3px solid var(--vo-pink);outline-offset:3px}\n.vo-quiz .vo-btn.vo-ghost{background:transparent;color:var(--vo-purple);box-shadow:inset 0 0 0 2px var(--vo-purple)}\n.vo-quiz .vo-btn[disabled]{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}\n\n\/* --- image slots --- *\/\n.vo-quiz .vo-ph{\n  position:relative;border-radius:18px;overflow:hidden;\n  background:\n    repeating-linear-gradient(135deg,rgba(255,255,255,.28) 0 12px,transparent 12px 24px),\n    linear-gradient(150deg,var(--vo-purple),#5b47c9 55%,var(--vo-pink));\n  display:grid;place-items:center;text-align:center;\n}\n.vo-quiz .vo-ph.vo-alt{background:\n    repeating-linear-gradient(135deg,rgba(255,255,255,.32) 0 12px,transparent 12px 24px),\n    linear-gradient(150deg,#2f2475,#4d3fae 45%,var(--vo-green));}\n.vo-quiz .vo-ph img{\n  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;\n}\n.vo-quiz .vo-ph-label{\n  position:relative;z-index:1;\n  font-family:var(--vo-display);font-size:11px;font-weight:800;letter-spacing:.14em;\n  text-transform:uppercase;color:#fff;padding:8px 14px;\n  border:1.5px dashed rgba(255,255,255,.75);border-radius:999px;background:rgba(36,28,74,.28);\n}\n.vo-quiz .vo-ph.vo-filled .vo-ph-label{display:none}\n\n.vo-quiz .vo-hero-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;margin-top:44px}\n.vo-quiz .vo-hero-grid > .vo-ph{min-height:280px}\n.vo-quiz .vo-hero-stack{display:grid;grid-template-rows:1fr 1fr;gap:14px}\n.vo-quiz .vo-hero-stack .vo-ph{min-height:133px}\n\n\/* --- latitude rail --- *\/\n.vo-quiz .vo-rail{margin:0 0 30px;padding-top:28px}\n.vo-quiz .vo-rail-head{\n  display:flex;justify-content:space-between;align-items:baseline;\n  font-family:var(--vo-display);font-size:11px;font-weight:800;letter-spacing:.16em;\n  text-transform:uppercase;color:var(--vo-purple);margin-bottom:10px;\n}\n.vo-quiz .vo-rail-head .vo-round{color:var(--vo-pink)}\n.vo-quiz .vo-ticks{display:flex;align-items:flex-end;gap:5px;height:34px}\n.vo-quiz .vo-tick{\n  flex:1;height:9px;border-radius:3px;background:rgba(54,41,131,.14);\n  transition:height .3s ease,background .3s ease;\n}\n.vo-quiz .vo-tick.vo-done{background:var(--vo-green);height:16px}\n.vo-quiz .vo-tick.vo-now{background:var(--vo-pink);height:32px}\n\n\/* --- question card --- *\/\n.vo-quiz .vo-card{\n  background:var(--vo-white);border-radius:22px;box-shadow:var(--vo-shadow);\n  overflow:hidden;border:1px solid var(--vo-line);\n}\n.vo-quiz .vo-card .vo-ph{border-radius:0;height:190px}\n.vo-quiz .vo-card-body{padding:30px 32px 34px}\n.vo-quiz .vo-qtext{\n  font-family:var(--vo-display);font-weight:800;font-size:clamp(22px,3vw,30px);\n  line-height:1.18;margin:0 0 24px;color:var(--vo-purple);letter-spacing:-.01em;\n}\n.vo-quiz .vo-opts{display:grid;gap:11px}\n.vo-quiz .vo-opt{\n  display:flex;align-items:center;gap:14px;width:100%;text-align:left;cursor:pointer;\n  font-size:17px;font-weight:500;color:var(--vo-ink);\n  background:var(--vo-paper);border:1.5px solid var(--vo-line);border-radius:14px;\n  padding:16px 18px;transition:border-color .15s ease,background .15s ease,transform .15s ease;\n}\n.vo-quiz .vo-opt:hover:not(:disabled){border-color:var(--vo-purple);transform:translateX(3px)}\n.vo-quiz .vo-opt:focus-visible{outline:3px solid var(--vo-pink);outline-offset:2px}\n.vo-quiz .vo-key{\n  width:28px;height:28px;flex:0 0 28px;border-radius:8px;display:grid;place-items:center;\n  font-family:var(--vo-display);font-weight:800;font-size:13px;\n  background:rgba(54,41,131,.09);color:var(--vo-purple);\n}\n.vo-quiz .vo-opt.vo-correct{background:var(--vo-green);border-color:#5cc4a5}\n.vo-quiz .vo-opt.vo-correct .vo-key{background:var(--vo-purple);color:#fff}\n.vo-quiz .vo-opt.vo-wrong{background:rgba(244,120,175,.22);border-color:var(--vo-pink)}\n.vo-quiz .vo-opt.vo-wrong .vo-key{background:var(--vo-pink);color:#fff}\n.vo-quiz .vo-opt:disabled{cursor:default}\n\n.vo-quiz .vo-reveal{\n  margin-top:22px;padding:20px 22px;border-radius:14px;background:var(--vo-paper);\n  border-left:5px solid var(--vo-pink);\n}\n.vo-quiz .vo-verdict{\n  font-family:var(--vo-display);font-weight:800;font-size:13px;letter-spacing:.14em;\n  text-transform:uppercase;color:var(--vo-pink);margin:0 0 7px;\n}\n.vo-quiz .vo-reveal.vo-right{border-left-color:var(--vo-green)}\n.vo-quiz .vo-reveal.vo-right .vo-verdict{color:#1e8a6c}\n.vo-quiz .vo-reveal p{font-size:16.5px}\n.vo-quiz .vo-factflag{\n  display:inline-block;margin-top:12px;font-size:11px;letter-spacing:.1em;\n  text-transform:uppercase;font-weight:700;color:var(--vo-purple);opacity:.55;\n}\n.vo-quiz .vo-rowend{display:flex;justify-content:flex-end;margin-top:24px}\n\n\/* --- result --- *\/\n.vo-quiz .vo-result-top{\n  background:var(--vo-purple);color:#fff;border-radius:22px 22px 0 0;\n  padding:44px 32px 38px;text-align:center;position:relative;overflow:hidden;\n}\n.vo-quiz .vo-result-top:after{\n  content:\"\";position:absolute;inset:auto -60px -140px -60px;height:220px;border-radius:50%;\n  background:radial-gradient(closest-side,rgba(162,233,210,.35),transparent);\n}\n.vo-quiz .vo-needle{\n  font-family:var(--vo-display);font-size:11px;font-weight:800;letter-spacing:.2em;\n  text-transform:uppercase;color:var(--vo-green);margin:0 0 14px;position:relative;z-index:1;\n}\n.vo-quiz .vo-score{\n  font-family:var(--vo-display);font-weight:900;font-size:clamp(64px,13vw,120px);\n  line-height:.9;margin:0;letter-spacing:-.03em;position:relative;z-index:1;\n}\n.vo-quiz .vo-score small{font-size:.3em;opacity:.6;letter-spacing:0}\n.vo-quiz .vo-tier{\n  font-family:var(--vo-display);font-weight:800;font-size:clamp(20px,3.4vw,28px);\n  margin:18px 0 6px;color:var(--vo-green);position:relative;z-index:1;\n}\n.vo-quiz .vo-tiersub{opacity:.85;font-size:16px;max-width:38ch;margin:0 auto;position:relative;z-index:1}\n\n.vo-quiz .vo-capture{\n  background:var(--vo-white);border-radius:0 0 22px 22px;padding:38px 32px 40px;\n  border:1px solid var(--vo-line);border-top:0;\n}\n.vo-quiz .vo-capture h2{\n  font-family:var(--vo-display);font-weight:900;font-size:clamp(24px,3.6vw,34px);\n  color:var(--vo-purple);margin:0 0 10px;line-height:1.1;\n}\n.vo-quiz .vo-capture .vo-sub{margin:0 0 24px;opacity:.8;max-width:52ch}\n.vo-quiz .vo-again{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}\n\n\/* --- demo form (delete when HubSpot goes in) --- *\/\n.vo-quiz .vo-field{display:flex;gap:10px;flex-wrap:wrap}\n.vo-quiz .vo-field input[type=email]{\n  flex:1;min-width:240px;font-size:17px;padding:16px 18px;\n  border:1.5px solid var(--vo-line);border-radius:14px;background:var(--vo-paper);color:var(--vo-ink);\n}\n.vo-quiz .vo-field input[type=email]:focus{outline:3px solid var(--vo-pink);outline-offset:2px;border-color:var(--vo-purple)}\n.vo-quiz .vo-consent{display:flex;gap:12px;align-items:flex-start;margin:20px 0 4px;font-size:14.5px;line-height:1.45}\n.vo-quiz .vo-consent input{margin-top:3px;width:19px;height:19px;accent-color:var(--vo-purple);flex:0 0 19px}\n.vo-quiz .vo-legal{font-size:12.5px;opacity:.6;margin:14px 0 0;max-width:60ch}\n.vo-quiz .vo-thanks{background:var(--vo-green);border-radius:14px;padding:24px 26px}\n.vo-quiz .vo-thanks strong{font-family:var(--vo-display);display:block;font-size:20px;color:var(--vo-purple);margin-bottom:6px}\n\n\/* --- HubSpot form styling (applies once you paste the embed) --- *\/\n.vo-quiz .hs-form fieldset{max-width:none !important;width:100% !important}\n.vo-quiz .hs-form .hs-input:not([type=checkbox]):not([type=radio]){\n  width:100% !important;font-family:var(--vo-body) !important;font-size:17px !important;\n  padding:16px 18px !important;border:1.5px solid var(--vo-line) !important;\n  border-radius:14px !important;background:var(--vo-paper) !important;color:var(--vo-ink) !important;\n}\n.vo-quiz .hs-form .hs-input:focus{outline:3px solid var(--vo-pink) !important;outline-offset:2px;border-color:var(--vo-purple) !important}\n.vo-quiz .hs-form .hs-button{\n  font-family:var(--vo-display) !important;font-weight:800 !important;font-size:15px !important;\n  letter-spacing:.06em !important;text-transform:uppercase !important;\n  border:0 !important;border-radius:999px !important;cursor:pointer;\n  padding:17px 34px !important;background:var(--vo-purple) !important;color:#fff !important;\n  margin-top:16px !important;\n}\n.vo-quiz .hs-form .hs-button:hover{background:#2b2069 !important}\n.vo-quiz .hs-form .legal-consent-container{font-size:14px;margin-top:16px;color:var(--vo-ink)}\n.vo-quiz .hs-form .legal-consent-container a{color:var(--vo-purple)}\n.vo-quiz .hs-form .hs-error-msg{color:#b3306e;font-size:14px}\n.vo-quiz .submitted-message{\n  background:var(--vo-green);border-radius:14px;padding:24px 26px;color:var(--vo-ink);\n}\n\n\/* --- teasers + footer --- *\/\n.vo-quiz .vo-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:38px}\n.vo-quiz .vo-strip .vo-ph{min-height:150px}\n.vo-quiz .vo-footer{\n  margin-top:54px;padding-top:26px;border-top:1px solid var(--vo-line);\n  display:flex;justify-content:center;align-items:center;gap:16px;flex-wrap:wrap;\n  font-size:13px;opacity:7;\n}\n.vo-quiz .vo-tagline{font-family:var(--vo-display);font-weight:800;letter-spacing:.04em;color:var(--vo-purple);opacity:1}\n\n.vo-quiz .vo-hidden{display:none !important}\n.vo-quiz .vo-sr{\n  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;\n  clip:rect(0 0 0 0);white-space:nowrap;border:0;\n}\n@media (max-width:720px){\n  .vo-quiz .vo-hero-grid{grid-template-columns:1fr}\n  .vo-quiz .vo-strip{grid-template-columns:1fr}\n  .vo-quiz .vo-card-body,.vo-quiz .vo-capture,.vo-quiz .vo-result-top{padding-left:20px;padding-right:20px}\n}\n@media (prefers-reduced-motion:reduce){\n  .vo-quiz *{transition:none !important;animation:none !important}\n}\n<\/style>\n\n<div class=\"vo-inner\">\n\n  <div class=\"vo-topbar\">\n    <div class=\"vo-logo\">\n<a href=\"https:\/\/visitoulu.fi\/en\/\" target=\"_blank\" rel=\"noopener\">\n<img decoding=\"async\" src=\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png\" alt=\"Visit Oulu\">\n<\/a>\n    <\/div>\n    <div class=\"vo-lang\" role=\"group\" aria-label=\"Language\">\n      <button type=\"button\" data-lang=\"en\" aria-pressed=\"true\">EN<\/button>\n      <button type=\"button\" data-lang=\"lv\" aria-pressed=\"false\">LV<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- ===== INTRO ===== -->\n  <section id=\"vo-intro\">\n    <div class=\"vo-hero\">\n      <p class=\"vo-eyebrow\" data-t=\"eyebrow\"><\/p>\n      <h1 data-t=\"title\"><\/h1>\n      <p class=\"vo-lede\" data-t=\"lede\"><\/p>\n      <button class=\"vo-btn\" id=\"vo-start\" data-t=\"start\"><\/button>\n    <\/div>\n    <div class=\"vo-hero-grid\">\n      <figure class=\"vo-ph\" data-slot=\"hero\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n      <div class=\"vo-hero-stack\">\n        <figure class=\"vo-ph vo-alt\" data-slot=\"heroA\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n        <figure class=\"vo-ph\" data-slot=\"heroB\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== QUIZ ===== -->\n  <section id=\"vo-game\" class=\"vo-hidden\">\n    <div class=\"vo-rail\">\n      <div class=\"vo-rail-head\">\n        <span id=\"vo-counter\"><\/span>\n        <span class=\"vo-round\" id=\"vo-roundlabel\"><\/span>\n      <\/div>\n      <div class=\"vo-ticks\" id=\"vo-ticks\"><\/div>\n    <\/div>\n\n    <div class=\"vo-card\">\n      <figure class=\"vo-ph\" id=\"vo-qimage\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n      <div class=\"vo-card-body\">\n        <h2 class=\"vo-qtext\" id=\"vo-qtext\"><\/h2>\n        <div class=\"vo-opts\" id=\"vo-opts\"><\/div>\n        <div class=\"vo-reveal vo-hidden\" id=\"vo-reveal\" role=\"status\" aria-live=\"polite\">\n          <p class=\"vo-verdict\" id=\"vo-verdict\"><\/p>\n          <p id=\"vo-fact\"><\/p>\n          <span class=\"vo-factflag\" data-t=\"factflag\"><\/span>\n        <\/div>\n        <div class=\"vo-rowend\">\n          <button class=\"vo-btn vo-hidden\" id=\"vo-next\"><\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== RESULT ===== -->\n  <section id=\"vo-result\" class=\"vo-hidden\">\n    <div class=\"vo-result-top\">\n      <p class=\"vo-needle\" data-t=\"needle\"><\/p>\n      <p class=\"vo-score\"><span id=\"vo-finalscore\">0<\/span><small>\/15<\/small><\/p>\n      <p class=\"vo-tier\" id=\"vo-tier\"><\/p>\n      <p class=\"vo-tiersub\" id=\"vo-tiersub\"><\/p>\n    <\/div>\n\n    <div class=\"vo-capture\">\n      <h2 data-t=\"capH\"><\/h2>\n      <p class=\"vo-sub\" data-t=\"capSub\"><\/p>\n\n      <!-- ==================================================================\n           HUBSPOT FORM \u2014 REPLACE THIS\n           Paste your HubSpot embed code where the demo form is.\n           Keep the wrapper div (id=\"vo-hs-form\") \u2014 the CSS above styles\n           the HubSpot form to match the Aurora palette automatically.\n           ================================================================== -->\n<div id=\"vo-hs-form\">\n<script src=\"https:\/\/js.hsforms.net\/forms\/embed\/7060614.js\" defer=\"\"><\/script>\n<div class=\"hs-form-frame\" data-region=\"na1\" data-form-id=\"20824ec1-f5ec-48a1-b367-d6377e0e6325\" data-portal-id=\"7060614\"><\/div>\n      <\/div>\n      <div class=\"vo-again\">\n        <button class=\"vo-btn vo-ghost\" id=\"vo-replay\" data-t=\"replay\"><\/button>\n        <a class=\"vo-btn vo-ghost\" id=\"vo-explore\" href=\"\/\" style=\"text-decoration:none;display:inline-block\" data-t=\"explore\"><\/a>\n      <\/div>\n    <\/div>\n\n    <div class=\"vo-strip\">\n      <figure class=\"vo-ph\" data-slot=\"teaseA\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n      <figure class=\"vo-ph vo-alt\" data-slot=\"teaseB\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n      <figure class=\"vo-ph\" data-slot=\"teaseC\"><img alt=\"\"><span class=\"vo-ph-label\"><\/span><\/figure>\n    <\/div>\n  <\/section>\n  <div class=\"vo-footer\">\n <span class=\"vo-tagline\" style=\"display:block;text-align:center\">Click logos to learn more<\/span>\n<div class=\"vo-partners\">\n  <a href=\"https:\/\/www.businessoulu.com\/en\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/businessoulu-pysty1.png\" alt=\"BusinessOulu\"><\/a>\n\n  <a href=\"https:\/\/nallikari.fi\/en\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/Nallikari-logo.png\" alt=\"Nallikari\"><\/a>\n\n  <a href=\"https:\/\/syote.fi\/en\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\" https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/syote_logo_pudasjarvi-Finland.pdf-1-e1785924344171.png\" alt=\"Sy\u00f6te\"><\/a>\n\n  <a href=\"https:\/\/ranuaresort.com\/en\/front-page\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/Nimeton-malli-14-e1785924185426.png\" alt=\"Ranua\"><\/a>\n\n<a href=\"https:\/\/ii.fi\/en\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/1.-Logo-sininen-transparent-1.png\" alt=\"Sy\u00f6te\"><\/a>\n\n<\/div>\n  <\/div>\n<\/div>\n<\/div>\n\n<script>\n(function(){\n\"use strict\";\n\n\/* =============================================================\n   IMAGE SLOTS \u2014 fill in src and alt. 10 slots total.\n   Leave src empty (\"\") to keep the labelled placeholder.\n   ============================================================= *\/\nvar IMG = {\n  hero:   {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/02\/Nallikari1-scaled.jpg\", alt:\"Nallikari beach\", note:\"Hero \u2014 Nallikari \/ Bay of Bothnia\"},\n  heroA:  {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2024\/01\/Pikku-Syote_Experience_Ski_Hike_2-scaled.jpg\", alt:\"Sy\u00f6te\", note:\"Sy\u00f6te \u2014 winter forest\"},\n  heroB:  {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2024\/01\/Ranua-Resort-Jaakarhu-1-scaled.jpg\", alt:\"\", note:\"Ranua \u2014 polar bear\"},\n  teaseA: {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/02\/Oulu_winter_2026_@rosaruuskanen-62-scaled.jpeg\", alt:\"\", note:\"Teaser \u2014 Oulu in winter\"},\n  teaseB: {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/DJI_0005-scaled.jpg\", alt:\"\", note:\"Teaser \u2014 Sy\u00f6te trails\"},\n  teaseC: {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/20170207-_MG_6193-scaled.jpg\", alt:\"\", note:\"Teaser \u2014 Ranua wildlife park\"}\n};\n\n\/* One image per round is enough \u2014 all questions in a round reuse it.\n   To give a single question its own image, add src\/alt to that question\n   in the Q array below. *\/\nvar ROUND_IMG = {\n  \"Oulu\":  {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2025\/12\/Summer_Oulu-3-scaled.jpg\", alt:\"\", note:\"Oulu \u2014 city and sea\"},\n  \"Sy\u00f6te\": {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/syote_fellview3-2-scaled.jpg\", alt:\"\", note:\"Sy\u00f6te \u2014 fell landscape\"},\n  \"Ii\":    {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/Ii_summr2025_@rosaruuskanen-25-scaled.jpg\", alt:\"\", note:\"Ii \u2014 river and coast\"},\n  \"Ranua\": {src:\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/08\/20210603-_T4A6717-scaled.jpg\", alt:\"\", note:\"Ranua \u2014 Arctic animals\"}\n};\n\n\/* =============================================================\n   INTERFACE COPY\n   ============================================================= *\/\nvar UI = {\n  en:{\n    eyebrow:\"A 2-minute guessing game\",\n    title:\"How much do you actually know about Northern Finland?\",\n    lede:\"Fifteen questions about Oulu, Sy\u00f6te, Ii and Ranua. Guess freely \u2014 most people get the first one wrong.\",\n    start:\"Start guessing\",\n    counter:function(n){return \"Question \"+n+\" of 15\";},\n    next:\"Next question\",\n    seeScore:\"See my score\",\n    right:\"Correct\",\n    wrong:\"Not quite\",\n    factflag:\"Fun fact\",\n    needle:\"Your true north reading\",\n    capH:\"There's a lot more where that came from.\",\n    capSub:\"One email a month: what's open, what's worth the drive, and when the light is at its best. No noise.\",\n    subscribe:\"Subscribe\",\n    consent:\"Yes, send me the Visit Oulu newsletter. I can unsubscribe at any time.\",\n    legal:\"We use your address only to send the newsletter. You'll get a confirmation email first \u2014 the subscription starts once you click the link in it.\",\n    thanksH:\"Almost there \u2014 check your inbox.\",\n    thanksP:\"We've sent a confirmation link. Click it and you're in.\",\n    replay:\"Play again\",\n    explore:\"Explore the region\",\n    tiers:[\n      [\"Curious newcomer\",\"You've got some exploring to do \u2014 and that's the fun part.\"],\n      [\"Northern explorer\",\"You know the shape of the place. The details are where it gets good.\"],\n      [\"Almost a local\",\"Impressive. You've clearly been paying attention up here.\"],\n      [\"True northerner\",\"Either you live here or you've been reading ahead.\"]\n    ]\n  },\n  lv:{\n    eyebrow:\"2 min\u016b\u0161u min\u0113\u0161anas sp\u0113le\",\n    title:\"Cik labi tu paties\u012bb\u0101 paz\u012bsti Zieme\u013csomiju?\",\n    lede:\"Piecpadsmit jaut\u0101jumi par Oulu, Sy\u00f6te, Ii un Ranua. Min dro\u0161i \u2014 pirmaj\u0101 jaut\u0101jum\u0101 k\u013c\u016bd\u0101s gandr\u012bz visi.\",\n    start:\"S\u0101kt min\u0113t\",\n    counter:function(n){return n+\". jaut\u0101jums no 15\";},\n    next:\"N\u0101kamais jaut\u0101jums\",\n    seeScore:\"Skat\u012bt rezult\u0101tu\",\n    right:\"Pareizi\",\n    wrong:\"Gandr\u012bz\",\n    factflag:\"Interesants fakts\",\n    needle:\"Tavs zieme\u013cu r\u0101d\u012bjums\",\n    capH:\"Un tas v\u0113l nav viss.\",\n    capSub:\"Viena v\u0113stule m\u0113nes\u012b: kas ir atv\u0113rts, kurp ir v\u0113rts doties un kad gaisma ir visskaist\u0101k\u0101. Bez lieka trok\u0161\u0146a.\",\n    subscribe:\"Pieteikties\",\n    consent:\"J\u0101, s\u016btiet man Visit Oulu jaunumu v\u0113stuli. Es jebkur\u0101 br\u012bd\u012b varu atteikties.\",\n    legal:\"Tavu e-pasta adresi izmantosim tikai jaunumu v\u0113stules s\u016bt\u012b\u0161anai. Vispirms sa\u0146emsi apstiprin\u0101juma v\u0113stuli \u2014 abonements s\u0101kas, kad nospied\u012bsi taj\u0101 eso\u0161o saiti.\",\n    thanksH:\"Gandr\u012bz gatavs \u2014 p\u0101rbaudi savu e-pastu.\",\n    thanksP:\"Esam nos\u016bt\u012bju\u0161i apstiprin\u0101juma saiti. Nospied to, un viss ir k\u0101rt\u012bb\u0101.\",\n    replay:\"Sp\u0113l\u0113t v\u0113lreiz\",\n    explore:\"Iepaz\u012bt re\u0123ionu\",\n    tiers:[\n      [\"Zi\u0146k\u0101r\u012bgs ies\u0101c\u0113js\",\"Tev v\u0113l ir ko atkl\u0101t \u2014 un t\u0101 ir t\u0101 jautr\u0101k\u0101 da\u013ca.\"],\n      [\"Zieme\u013cu p\u0113tnieks\",\"Kopainu tu zini. Interesant\u0101kais sl\u0113pjas deta\u013c\u0101s.\"],\n      [\"Gandr\u012bz viet\u0113jais\",\"Iespaid\u012bgi. Tu ac\u012bmredzot esi sekojis l\u012bdzi tam, kas \u0161eit notiek.\"],\n      [\"\u012asts zieme\u013cnieks\",\"Vai nu tu \u0161eit dz\u012bvo, vai ar\u012b esi m\u0101c\u012bjies uz priek\u0161u.\"]\n    ]\n  }\n};\n\n\/* =============================================================\n   QUESTIONS\n   ============================================================= *\/\nvar Q = [\n {round:\"Oulu\", correct:0,\n  en:{q:\"True or false: Oulu is one of Finland's northernmost major cities.\",\n      a:[\"True\",\"False\"],\n      f:\"True. Oulu is the largest city in Northern Finland \u2014 and the country carries on for hundreds of kilometres above it.\"},\n  lv:{q:\"Patiess vai aplams: Oulu ir viena no Somijas vist\u0101l\u0101k uz zieme\u013ciem eso\u0161aj\u0101m lielpils\u0113t\u0101m.\",\n      a:[\"Patiess\",\"Aplams\"],\n      f:\"Patiess. Oulu ir liel\u0101k\u0101 pils\u0113ta Zieme\u013csomij\u0101 \u2014 un valsts turpin\u0101s v\u0113l simtiem kilometru uz zieme\u013ciem no t\u0101s.\"}},\n\n {round:\"Oulu\", correct:1,\n  en:{q:\"Which city is farther north?\", a:[\"Riga\",\"Oulu\"],\n      f:\"Oulu, at roughly 65\u00b0N \u2014 about eight degrees of latitude above Riga. That's why the summer nights here never really go dark.\"},\n  lv:{q:\"Kura pils\u0113ta atrodas t\u0101l\u0101k uz zieme\u013ciem?\", a:[\"R\u012bga\",\"Oulu\"],\n      f:\"Oulu \u2014 aptuveni 65\u00b0 zieme\u013cu platuma, apm\u0113ram asto\u0146us gr\u0101dus t\u0101l\u0101k uz zieme\u013ciem nek\u0101 R\u012bga. T\u0101p\u0113c vasaras naktis \u0161eit gandr\u012bz nemaz nepaliek tum\u0161as.\"}},\n\n {round:\"Oulu\", correct:1,\n  en:{q:\"Which country has more lakes?\", a:[\"Latvia\",\"Finland\"],\n      f:\"Finland, by a wide margin. It's called the land of a thousand lakes, which turns out to be a serious undercount.\"},\n  lv:{q:\"Kur\u0101 valst\u012b ir vair\u0101k ezeru?\", a:[\"Latvij\u0101\",\"Somij\u0101\"],\n      f:\"Somij\u0101 \u2014 ar lielu p\u0101rsvaru. To sauc par t\u016bksto\u0161 ezeru zemi, un paties\u012bb\u0101 tas ir stipri par maz teikts.\"}},\n\n {round:\"Oulu\", correct:0,\n  en:{q:\"What sea is Oulu located on?\", a:[\"The Baltic Sea\",\"The North Sea\",\"The Black Sea\"],\n      f:\"The Baltic \u2014 specifically the Bay of Bothnia, its northernmost arm, which freezes solid enough to walk on in winter.\"},\n  lv:{q:\"Pie kuras j\u016bras atrodas Oulu?\", a:[\"Baltijas j\u016bras\",\"Zieme\u013cj\u016bras\",\"Meln\u0101s j\u016bras\"],\n      f:\"Baltijas j\u016bras \u2014 prec\u012bz\u0101k, Botnijas l\u012b\u010da, t\u0101s vist\u0101l\u0101k\u0101s zieme\u013cu da\u013cas, kas ziem\u0101 aizsalst tik cieti, ka pa to var staig\u0101t.\"}},\n\n {round:\"Oulu\", correct:2,\n  en:{q:\"Which activity is very popular in Oulu during winter?\", a:[\"Ice swimming\",\"Cross-country skiing\",\"Both\"],\n      f:\"Both. Winter here is spent outdoors, not indoors \u2014 and the sauna afterwards is non-negotiable.\"},\n  lv:{q:\"Kura nodarbe Oulu ziem\u0101 ir \u012bpa\u0161i popul\u0101ra?\", a:[\"Ziemas peld\u0113\u0161ana\",\"Distan\u010du sl\u0113po\u0161ana\",\"Abas\"],\n      f:\"Abas. Ziema \u0161eit tiek pavad\u012bta \u0101r\u0101, nevis iek\u0161telp\u0101s \u2014 un pirts p\u0113c tam ir oblig\u0101ta.\"}},\n\n {round:\"Oulu\", correct:0,\n  en:{q:\"What is Oulu's best-known beach called?\", a:[\"Nallikari\",\"Tiima\",\"Valkea\"],\n      f:\"Nallikari \u2014 a sandy beach on the Bay of Bothnia. In winter the same stretch turns into a snow and ice playground.\"},\n  lv:{q:\"K\u0101 sauc Oulu paz\u012bstam\u0101ko pludmali?\", a:[\"Nallikari\",\"Tiima\",\"Valkea\"],\n      f:\"Nallikari \u2014 smil\u0161u pludmale pie Botnijas l\u012b\u010da. Ziem\u0101 t\u0101 pati vieta p\u0101rv\u0113r\u0161as par sniega un ledus rota\u013cu laukumu.\"}},\n\n {round:\"Sy\u00f6te\", correct:0,\n  en:{q:\"What is Sy\u00f6te best known for?\", a:[\"Skiing and outdoor activities\",\"Large vineyards\",\"Finland's biggest airport\"],\n      f:\"Skiing and the outdoors. Sy\u00f6te is a national park and fell area \u2014 quiet, forested, and built for slow days.\"},\n  lv:{q:\"Ar ko Sy\u00f6te ir vislab\u0101k paz\u012bstams?\", a:[\"Ar sl\u0113po\u0161anu un \u0101ra aktivit\u0101t\u0113m\",\"Ar lieliem v\u012bnogul\u0101ju d\u0101rziem\",\"Ar Somijas liel\u0101ko lidostu\"],\n      f:\"Ar sl\u0113po\u0161anu un dabu. Sy\u00f6te ir nacion\u0101lais parks un kalnu apvidus \u2014 kluss, me\u017eains un rad\u012bts l\u0113n\u0101m dien\u0101m.\"}},\n\n {round:\"Sy\u00f6te\", correct:0,\n  en:{q:\"Which season is Sy\u00f6te especially popular with visitors?\", a:[\"Winter\",\"Monsoon season\",\"Hurricane season\"],\n      f:\"Winter. Snow-laden spruce trees \u2014 tykky in Finnish \u2014 turn the forest into something closer to sculpture.\"},\n  lv:{q:\"Kur\u0101 sezon\u0101 Sy\u00f6te ir \u012bpa\u0161i iecien\u012bts viesu vid\u016b?\", a:[\"Ziem\u0101\",\"Musonu sezon\u0101\",\"Viesu\u013cv\u0113tru sezon\u0101\"],\n      f:\"Ziem\u0101. Ar sniegu kl\u0101t\u0101s egles \u2014 somiski \u201ctykky\u201d \u2014 p\u0101rv\u0113r\u0161 me\u017eu par skulpt\u016bru d\u0101rzu.\"}},\n\n {round:\"Sy\u00f6te\", correct:0,\n  en:{q:\"What can you do in Sy\u00f6te during summer?\", a:[\"Hiking and mountain biking\",\"Surfing\",\"Desert trekking\"],\n      f:\"Hiking and mountain biking. The trail network stays open long after the snow has gone.\"},\n  lv:{q:\"Ko Sy\u00f6te var dar\u012bt vasar\u0101?\", a:[\"Doties p\u0101rg\u0101jienos un braukt ar kalnu velosip\u0113du\",\"S\u0113rfot\",\"Doties tuksne\u0161a p\u0101rg\u0101jienos\"],\n      f:\"P\u0101rg\u0101jienus un kalnu rite\u0146brauk\u0161anu. Taku t\u012bkls ir atv\u0113rts v\u0113l ilgi p\u0113c tam, kad sniegs izkusis.\"}},\n\n {round:\"Ii\", correct:0,\n  en:{q:\"What has the municipality of Ii become internationally known for?\",\n      a:[\"Climate action and cutting carbon emissions\",\"Gold mining\",\"Shipbuilding\"],\n      f:\"Climate action. This small municipality has become an international reference point for cutting emissions.\"},\n  lv:{q:\"Ar ko Ii pa\u0161vald\u012bba ir k\u013cuvusi starptautiski paz\u012bstama?\",\n      a:[\"Ar klimata darb\u012bbu un oglek\u013ca emisiju samazin\u0101\u0161anu\",\"Ar zelta ieguvi\",\"Ar ku\u0123u b\u016bvi\"],\n      f:\"Ar klimata darb\u012bbu. \u0160\u012b neliel\u0101 pa\u0161vald\u012bba ir k\u013cuvusi par starptautisku paraugu emisiju samazin\u0101\u0161an\u0101.\"}},\n\n {round:\"Ii\", correct:0,\n  en:{q:\"Which river flows through the municipality of Ii?\", a:[\"Iijoki\",\"Kemijoki\",\"Oulujoki\"],\n      f:\"The Iijoki \u2014 the river the municipality is named after, and the centre of life there for centuries.\"},\n  lv:{q:\"Kura upe tek caur Ii pa\u0161vald\u012bbu?\", a:[\"Iijoki\",\"Kemijoki\",\"Oulujoki\"],\n      f:\"Iijoki \u2014 upe, p\u0113c kuras pa\u0161vald\u012bba nosaukta un ap kuru gadsimtiem ilgi rit\u0113jusi dz\u012bve.\"}},\n\n {round:\"Ii\", correct:0,\n  en:{q:\"Ii is located approximately how far from Oulu?\", a:[\"About 35 km\",\"About 150 km\",\"About 300 km\"],\n      f:\"About 35 km north \u2014 close enough for a half-day trip out of the city.\"},\n  lv:{q:\"Cik t\u0101lu no Oulu aptuveni atrodas Ii?\", a:[\"Aptuveni 35 km\",\"Aptuveni 150 km\",\"Aptuveni 300 km\"],\n      f:\"Aptuveni 35 km uz zieme\u013ciem \u2014 pietiekami tuvu, lai izbrauktu uz pusi dienas.\"}},\n\n {round:\"Ranua\", correct:0,\n  en:{q:\"What is Ranua's most famous attraction?\", a:[\"A wildlife park\",\"Finland's tallest mountain\",\"A tropical aquarium\"],\n      f:\"Ranua Wildlife Park \u2014 home to Arctic species you won't find in most European zoos.\"},\n  lv:{q:\"Kas ir Ranua slaven\u0101k\u0101 apskates vieta?\", a:[\"Savva\u013cas dz\u012bvnieku parks\",\"Somijas augst\u0101kais kalns\",\"Tropiskais akv\u0101rijs\"],\n      f:\"Ranua savva\u013cas dz\u012bvnieku parks \u2014 m\u0101jvieta Arktikas sug\u0101m, k\u0101das liel\u0101kaj\u0101 da\u013c\u0101 Eiropas zood\u0101rzu neredz\u0113si.\"}},\n\n {round:\"Ranua\", correct:0,\n  en:{q:\"What makes Ranua Wildlife Park special?\",\n      a:[\"It focuses on Arctic and northern species\",\"It only has marine animals\",\"It is open only during summer\"],\n      f:\"It specialises in Arctic and northern animals \u2014 and it's open year-round, when many of them are at their most active.\"},\n  lv:{q:\"Kas Ranua savva\u013cas dz\u012bvnieku parku padara \u012bpa\u0161u?\",\n      a:[\"Tas ir velt\u012bts Arktikas un zieme\u013cu sug\u0101m\",\"Taj\u0101 ir tikai j\u016bras dz\u012bvnieki\",\"Tas ir atv\u0113rts tikai vasar\u0101\"],\n      f:\"Tas specializ\u0113jas Arktikas un zieme\u013cu dz\u012bvniekos \u2014 un ir atv\u0113rts visu gadu, kad daudzi no tiem ir visakt\u012bv\u0101kie.\"}},\n\n {round:\"Ranua\", correct:0,\n  en:{q:\"Which of these animals could you see at Ranua Wildlife Park?\", a:[\"A polar bear\",\"An elephant\",\"A giraffe\"],\n      f:\"A polar bear \u2014 one of the park's best-known residents, and a very good reason to come north.\"},\n  lv:{q:\"Kuru no \u0161iem dz\u012bvniekiem vari ieraudz\u012bt Ranua savva\u013cas dz\u012bvnieku park\u0101?\", a:[\"Pol\u0101rl\u0101ci\",\"Ziloni\",\"\u017dirafi\"],\n      f:\"Pol\u0101rl\u0101ci \u2014 vienu no parka paz\u012bstam\u0101kajiem iem\u012btniekiem un \u013coti labu iemeslu doties uz zieme\u013ciem.\"}}\n];\n\n\/* =============================================================\n   ENGINE\n   ============================================================= *\/\nvar root = document.querySelector(\".vo-quiz\");\nif(!root) return;\nvar $ = function(s){ return root.querySelector(s); };\n\nvar lang=\"en\", idx=0, answers=new Array(Q.length).fill(null), started=false;\nvar optionOrder=new Array(Q.length).fill(null);\n\nfunction track(name, params){\n  if(typeof window.gtag === \"function\"){ window.gtag(\"event\", name, params||{}); }\n}\n\nfunction fillSlot(fig, data){\n  var img = fig.querySelector(\"img\");\n  var label = fig.querySelector(\".vo-ph-label\");\n  var src = data ? (data.src || \"\") : \"\";\n  if(src !== \"\"){\n    img.src = src;\n    img.alt = data.alt || \"\";\n    fig.classList.add(\"vo-filled\");\n  }else{\n    img.removeAttribute(\"src\");\n    img.alt = \"\";\n    fig.classList.remove(\"vo-filled\");\n    label.textContent = data ? (data.note || \"Image\") : \"Image\";\n  }\n}\n\nObject.keys(IMG).forEach(function(k){\n  var fig = root.querySelector('[data-slot=\"'+k+'\"]');\n  if(fig) fillSlot(fig, IMG[k]);\n});\n\nvar ticksEl = $(\"#vo-ticks\");\nQ.forEach(function(){\n  var d=document.createElement(\"div\"); d.className=\"vo-tick\"; ticksEl.appendChild(d);\n});\n\nfunction applyStatic(){\n  var t = UI[lang];\n  root.querySelectorAll(\"[data-t]\").forEach(function(el){\n    var k = el.dataset.t;\n    if(typeof t[k] === \"string\") el.textContent = t[k];\n  });\n}\n\nfunction score(){\n  return answers.reduce(function(n,a,i){ return n + (a===Q[i].correct?1:0); },0);\n}\nfunction shuffledOrder(qi){\n  if(!optionOrder[qi]){\n    var arr = Q[qi].en.a.map(function(_,i){ return i; });\n    for(var i=arr.length-1;i>0;i--){\n      var j = Math.floor(Math.random()*(i+1));\n      var tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp;\n    }\n    optionOrder[qi] = arr;\n  }\n  return optionOrder[qi];\n}\n\nfunction renderQuestion(){\n  var t=UI[lang], q=Q[idx], c=q[lang];\n\n  $(\"#vo-counter\").textContent = t.counter(idx+1);\n  $(\"#vo-roundlabel\").textContent = q.round;\n  fillSlot($(\"#vo-qimage\"), (q.src ? {src:q.src, alt:q.alt} : ROUND_IMG[q.round]));\n  $(\"#vo-qtext\").textContent = c.q;\n\n  Array.prototype.forEach.call(ticksEl.children, function(el,i){\n    el.className = \"vo-tick\" + (idx > i ? \" vo-done\" : i === idx ? \" vo-now\" : \"\");\n  });\n\n  var box = $(\"#vo-opts\");\n  box.innerHTML = \"\";\n  var order = shuffledOrder(idx);\n  order.forEach(function(origIndex, displayIndex){\n    var label = c.a[origIndex];\n    var b=document.createElement(\"button\");\n    b.type=\"button\"; b.className=\"vo-opt\";\n    b.dataset.orig = origIndex;\n    var k=document.createElement(\"span\"); k.className=\"vo-key\";\n    k.textContent=String.fromCharCode(65+displayIndex);\n    var s=document.createElement(\"span\"); s.textContent=label;\n    b.appendChild(k); b.appendChild(s);\n    b.addEventListener(\"click\", function(){ answer(origIndex); });\n    box.appendChild(b);\n  });\n\n  if(answers[idx] === null){\n    $(\"#vo-reveal\").classList.add(\"vo-hidden\");\n    $(\"#vo-next\").classList.add(\"vo-hidden\");\n  }else{\n    paintAnswer(answers[idx]);\n  }\n  $(\"#vo-next\").textContent = (idx===Q.length-1) ? t.seeScore : t.next;\n}\n\nfunction paintAnswer(choice){\n  var q=Q[idx], t=UI[lang], ok=(choice===q.correct);\n  Array.prototype.forEach.call($(\"#vo-opts\").children, function(b){\n    var origIndex = parseInt(b.dataset.orig, 10);\n    b.disabled = true;\n    if(origIndex===q.correct) b.classList.add(\"vo-correct\");\n    else if(origIndex===choice) b.classList.add(\"vo-wrong\");\n  });\n  var r=$(\"#vo-reveal\");\n  r.classList.remove(\"vo-hidden\");\n  r.classList.toggle(\"vo-right\", ok);\n  $(\"#vo-verdict\").textContent = ok ? t.right : t.wrong;\n  $(\"#vo-fact\").textContent = q[lang].f;\n  $(\"#vo-next\").classList.remove(\"vo-hidden\");\n}\n\nfunction answer(i){\n  if(answers[idx] !== null) return;\n  answers[idx] = i;\n  paintAnswer(i);\n}\n\nfunction showResult(){\n  var t=UI[lang], s=score();\n  $(\"#vo-game\").classList.add(\"vo-hidden\");\n  $(\"#vo-result\").classList.remove(\"vo-hidden\");\n  $(\"#vo-finalscore\").textContent = s;\n  var tier = (s > 13) ? 3 : (s > 9) ? 2 : (s > 4) ? 1 : 0;\n  $(\"#vo-tier\").textContent = t.tiers[tier][0];\n  $(\"#vo-tiersub\").textContent = t.tiers[tier][1];\n  track(\"vo_quiz_complete\", {score:s, tier:t.tiers[tier][0], language:lang});\n  root.scrollIntoView({behavior:\"smooth\", block:\"start\"});\n}\n\n\/* --- language toggle --- *\/\nroot.querySelectorAll(\".vo-lang button\").forEach(function(b){\n  b.addEventListener(\"click\", function(){\n    lang = b.dataset.lang;\n    root.querySelectorAll(\".vo-lang button\").forEach(function(x){\n      x.setAttribute(\"aria-pressed\", String(x===b));\n    });\n    applyStatic();\n    if(!$(\"#vo-game\").classList.contains(\"vo-hidden\")) renderQuestion();\n    if(!$(\"#vo-result\").classList.contains(\"vo-hidden\")) showResult();\n  });\n});\n\n$(\"#vo-start\").addEventListener(\"click\", function(){\n  started = true;\n  $(\"#vo-intro\").classList.add(\"vo-hidden\");\n  $(\"#vo-game\").classList.remove(\"vo-hidden\");\n  renderQuestion();\n  track(\"vo_quiz_start\", {language:lang});\n});\n\n$(\"#vo-next\").addEventListener(\"click\", function(){\n  if(idx === Q.length-1){ showResult(); return; }\n  idx++;\n  renderQuestion();\n  root.scrollIntoView({behavior:\"smooth\", block:\"start\"});\n});\n\n$(\"#vo-replay\").addEventListener(\"click\", function(){\n  idx=0; answers=new Array(Q.length).fill(null); optionOrder=new Array(Q.length).fill(null);\n  var df=$(\"#vo-demo-form\"), dd=$(\"#vo-demo-done\");\n  if(df){ if(dd){\n    df.classList.remove(\"vo-hidden\");\n    dd.classList.add(\"vo-hidden\");\n    $(\"#vo-email\").value=\"\"; $(\"#vo-consent\").checked=false; checkDemoForm();\n  }}\n  $(\"#vo-result\").classList.add(\"vo-hidden\");\n  $(\"#vo-game\").classList.remove(\"vo-hidden\");\n  renderQuestion();\n  root.scrollIntoView({behavior:\"smooth\", block:\"start\"});\n});\n\n\/* --- demo form only; harmless once removed --- *\/\nfunction checkDemoForm(){\n  var e=$(\"#vo-email\"), c=$(\"#vo-consent\"), b=$(\"#vo-subscribe\");\n  if(!e||!c||!b) return;\n  var okMail = \/\\S+@\\S+\\.\\S+\/.test(e.value);\n  var okTick = c.checked;\n  b.disabled = true;\n  if(okMail){ if(okTick){ b.disabled = false; } }\n}\nif($(\"#vo-demo-form\")){\n  $(\"#vo-email\").addEventListener(\"input\", checkDemoForm);\n  $(\"#vo-consent\").addEventListener(\"change\", checkDemoForm);\n  $(\"#vo-subscribe\").addEventListener(\"click\", function(){\n    $(\"#vo-demo-form\").classList.add(\"vo-hidden\");\n    $(\"#vo-demo-done\").classList.remove(\"vo-hidden\");\n    track(\"vo_newsletter_signup\", {score:score(), language:lang});\n  });\n}\n\n\/* --- HubSpot submit tracking (fires once the real form is in place) --- *\/\nwindow.addEventListener(\"message\", function(ev){\n  var d = ev.data;\n  if(!d){ return; }\n  if(d.type !== \"hsFormCallback\"){ return; }\n  if(d.eventName !== \"onFormSubmitted\"){ return; }\n  track(\"vo_newsletter_signup\", {score:score(), language:lang});\n});\n\napplyStatic();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p> [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"https:\/\/visitoulu.fi\/en\/test-quiz\/\">Read More&#8230;<span class=\"screen-reader-text\"> from Quiz<\/span><\/a><\/p>\n","protected":false},"author":34,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"coauthors":[199],"class_list":["post-19465","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Quiz - Visit Oulu<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/visitoulu.fi\/en\/test-quiz\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quiz - Visit Oulu\" \/>\n<meta property=\"og:description\" content=\"[...]Read More... from Quiz\" \/>\n<meta property=\"og:url\" content=\"https:\/\/visitoulu.fi\/en\/test-quiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Visit Oulu\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/visitoulufi\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-10T12:09:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data2\" content=\"Jenni Annala\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/\",\"url\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/\",\"name\":\"Quiz - Visit Oulu\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/visitoulu.fi\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/VisitOulu_696x696.png\",\"datePublished\":\"2026-08-05T10:15:19+00:00\",\"dateModified\":\"2026-08-10T12:09:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/#primaryimage\",\"url\":\"https:\\\/\\\/visitoulu.fi\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/VisitOulu_696x696.png\",\"contentUrl\":\"https:\\\/\\\/visitoulu.fi\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/VisitOulu_696x696.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/test-quiz\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Etusivu\",\"item\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quiz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/\",\"name\":\"Visit Oulu\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/#organization\",\"name\":\"Visit Oulu\",\"url\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/visitoulu.fi\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/VisitOulu_696x696.png\",\"contentUrl\":\"https:\\\/\\\/visitoulu.fi\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/VisitOulu_696x696.png\",\"width\":696,\"height\":696,\"caption\":\"Visit Oulu\"},\"image\":{\"@id\":\"https:\\\/\\\/visitoulu.fi\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/visitoulufi\\\/\",\"https:\\\/\\\/www.instagram.com\\\/visitoulu\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Quiz - Visit Oulu","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:\/\/visitoulu.fi\/en\/test-quiz\/","og_locale":"en_US","og_type":"article","og_title":"Quiz - Visit Oulu","og_description":"[...]Read More... from Quiz","og_url":"https:\/\/visitoulu.fi\/en\/test-quiz\/","og_site_name":"Visit Oulu","article_publisher":"https:\/\/www.facebook.com\/visitoulufi\/","article_modified_time":"2026-08-10T12:09:46+00:00","og_image":[{"url":"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes","Written by":"Jenni Annala"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/visitoulu.fi\/en\/test-quiz\/","url":"https:\/\/visitoulu.fi\/en\/test-quiz\/","name":"Quiz - Visit Oulu","isPartOf":{"@id":"https:\/\/visitoulu.fi\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/visitoulu.fi\/en\/test-quiz\/#primaryimage"},"image":{"@id":"https:\/\/visitoulu.fi\/en\/test-quiz\/#primaryimage"},"thumbnailUrl":"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png","datePublished":"2026-08-05T10:15:19+00:00","dateModified":"2026-08-10T12:09:46+00:00","breadcrumb":{"@id":"https:\/\/visitoulu.fi\/en\/test-quiz\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/visitoulu.fi\/en\/test-quiz\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/visitoulu.fi\/en\/test-quiz\/#primaryimage","url":"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png","contentUrl":"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png"},{"@type":"BreadcrumbList","@id":"https:\/\/visitoulu.fi\/en\/test-quiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Etusivu","item":"https:\/\/visitoulu.fi\/en\/"},{"@type":"ListItem","position":2,"name":"Quiz"}]},{"@type":"WebSite","@id":"https:\/\/visitoulu.fi\/en\/#website","url":"https:\/\/visitoulu.fi\/en\/","name":"Visit Oulu","description":"","publisher":{"@id":"https:\/\/visitoulu.fi\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/visitoulu.fi\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/visitoulu.fi\/en\/#organization","name":"Visit Oulu","url":"https:\/\/visitoulu.fi\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/visitoulu.fi\/en\/#\/schema\/logo\/image\/","url":"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png","contentUrl":"https:\/\/visitoulu.fi\/wp-content\/uploads\/2026\/07\/VisitOulu_696x696.png","width":696,"height":696,"caption":"Visit Oulu"},"image":{"@id":"https:\/\/visitoulu.fi\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/visitoulufi\/","https:\/\/www.instagram.com\/visitoulu\/"]}]}},"_links":{"self":[{"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/pages\/19465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/comments?post=19465"}],"version-history":[{"count":36,"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/pages\/19465\/revisions"}],"predecessor-version":[{"id":19585,"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/pages\/19465\/revisions\/19585"}],"wp:attachment":[{"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/media?parent=19465"}],"wp:term":[{"taxonomy":"author","embeddable":true,"href":"https:\/\/visitoulu.fi\/en\/wp-json\/wp\/v2\/coauthors?post=19465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}