{"id":2675,"date":"2026-04-14T14:17:57","date_gmt":"2026-04-14T12:17:57","guid":{"rendered":"https:\/\/www.petrklichelp.cz\/?page_id=2675"},"modified":"2026-04-15T22:15:54","modified_gmt":"2026-04-15T20:15:54","slug":"ozveny-zahrady","status":"publish","type":"page","link":"https:\/\/www.petrklichelp.cz\/cs\/ozveny-zahrady\/","title":{"rendered":"Ozv\u011bny zahrady"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"318\" src=\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png\" alt=\"\" class=\"wp-image-2691\" srcset=\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png 1024w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-300x93.png 300w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-768x238.png 768w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1536x477.png 1536w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-18x6.png 18w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner.png 1856w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div id=\"echoesGardenGame\" class=\"eg\">\n  <style>\n    #echoesGardenGame,\n    #echoesGardenGame * {\n      box-sizing: border-box;\n    }\n\n    #echoesGardenGame {\n      --eg-bg: linear-gradient(180deg, #eef7ee 0%, #dfeee2 100%);\n      --eg-card: rgba(255, 255, 255, 0.82);\n      --eg-card-strong: rgba(255, 255, 255, 0.92);\n      --eg-line: rgba(28, 63, 39, 0.10);\n      --eg-text: #183126;\n      --eg-muted: #557260;\n      --eg-green: #6ca56f;\n      --eg-green-dark: #44734b;\n      --eg-gold: #efc75e;\n      --eg-blue: #86c7d8;\n      --eg-danger: #d96a6a;\n      --eg-success: #5a9c60;\n      --eg-shadow: 0 18px 45px rgba(22, 43, 30, 0.12);\n      width: 100%;\n      max-width: 1100px;\n      margin: 0 auto;\n      padding: 18px;\n      font-family: \"Trebuchet MS\", \"Segoe UI\", Arial, sans-serif;\n      color: var(--eg-text);\n      background: var(--eg-bg);\n      border-radius: 32px;\n      border: 1px solid rgba(255,255,255,0.7);\n      overflow: hidden;\n      position: relative;\n      isolation: isolate;\n    }\n\n    #echoesGardenGame::before,\n    #echoesGardenGame::after {\n      content: \"\";\n      position: absolute;\n      border-radius: 999px;\n      pointer-events: none;\n      z-index: 0;\n      filter: blur(8px);\n      opacity: 0.55;\n    }\n\n    #echoesGardenGame::before {\n      width: 220px;\n      height: 220px;\n      background: rgba(134, 199, 216, 0.18);\n      top: -60px;\n      right: -40px;\n    }\n\n    #echoesGardenGame::after {\n      width: 260px;\n      height: 260px;\n      background: rgba(239, 199, 94, 0.14);\n      bottom: -100px;\n      left: -70px;\n    }\n\n    #echoesGardenGame .eg-shell {\n      position: relative;\n      z-index: 1;\n      display: grid;\n      grid-template-columns: 320px 1fr;\n      gap: 18px;\n      align-items: start;\n    }\n\n    #echoesGardenGame .eg-panel,\n    #echoesGardenGame .eg-main {\n      background: var(--eg-card);\n      border: 1px solid var(--eg-line);\n      box-shadow: var(--eg-shadow);\n      backdrop-filter: blur(10px);\n    }\n\n    #echoesGardenGame .eg-panel {\n      border-radius: 28px;\n      padding: 18px;\n      position: sticky;\n      top: 16px;\n    }\n\n    #echoesGardenGame .eg-main {\n      border-radius: 30px;\n      padding: 22px;\n      min-height: 700px;\n    }\n\n    #echoesGardenGame .eg-brand {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(108, 165, 111, 0.12);\n      color: var(--eg-green-dark);\n      font-size: 12px;\n      font-weight: 800;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      margin-bottom: 14px;\n    }\n\n    #echoesGardenGame .eg-title {\n      font-size: clamp(2rem, 4vw, 3rem);\n      line-height: 1.02;\n      margin: 0 0 8px;\n      letter-spacing: -0.03em;\n      color: #163124;\n    }\n\n    #echoesGardenGame .eg-subtitle {\n      margin: 0;\n      line-height: 1.55;\n      font-size: 1rem;\n      color: var(--eg-muted);\n    }\n\n    #echoesGardenGame .eg-mascot {\n      margin: 16px 0 18px;\n      padding: 16px;\n      border-radius: 24px;\n      background: linear-gradient(135deg, rgba(108,165,111,0.12), rgba(134,199,216,0.14));\n      border: 1px solid var(--eg-line);\n      text-align: center;\n      font-size: 54px;\n    }\n\n    #echoesGardenGame .eg-mini-grid {\n      display: grid;\n      gap: 12px;\n      margin-top: 16px;\n    }\n\n    #echoesGardenGame .eg-mini-card {\n      background: var(--eg-card-strong);\n      border: 1px solid var(--eg-line);\n      border-radius: 20px;\n      padding: 14px;\n    }\n\n    #echoesGardenGame .eg-mini-label {\n      font-size: 11px;\n      text-transform: uppercase;\n      letter-spacing: 0.09em;\n      color: var(--eg-muted);\n      font-weight: 800;\n      margin-bottom: 6px;\n    }\n\n    #echoesGardenGame .eg-progress-value,\n    #echoesGardenGame .eg-side-score {\n      font-size: 1.3rem;\n      font-weight: 900;\n      color: var(--eg-text);\n    }\n\n    #echoesGardenGame .eg-progressbar {\n      width: 100%;\n      height: 12px;\n      background: rgba(24,49,38,0.08);\n      border-radius: 999px;\n      overflow: hidden;\n      margin-top: 10px;\n    }\n\n    #echoesGardenGame .eg-progressfill {\n      width: 0%;\n      height: 100%;\n      border-radius: inherit;\n      background: linear-gradient(90deg, var(--eg-green), var(--eg-gold));\n      transition: width 0.35s ease;\n    }\n\n    #echoesGardenGame .eg-screen {\n      display: none;\n    }\n\n    #echoesGardenGame .eg-screen.eg-active {\n      display: block;\n    }\n\n    #echoesGardenGame .eg-start-layout {\n      display: grid;\n      gap: 18px;\n      align-items: start;\n    }\n\n    #echoesGardenGame .eg-start-card {\n      background: var(--eg-card-strong);\n      border: 1px solid var(--eg-line);\n      border-radius: 26px;\n      padding: 20px;\n    }\n\n    #echoesGardenGame .eg-start-hero {\n      display: grid;\n      grid-template-columns: 1.1fr 0.9fr;\n      gap: 18px;\n      align-items: center;\n    }\n\n    #echoesGardenGame .eg-bubbles {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 12px;\n    }\n\n    #echoesGardenGame .eg-bubble {\n      min-height: 120px;\n      border-radius: 24px;\n      padding: 16px;\n      display: flex;\n      flex-direction: column;\n      justify-content: space-between;\n      border: 1px solid var(--eg-line);\n      background: linear-gradient(180deg, rgba(255,255,255,0.88), rgba(247,252,247,0.92));\n    }\n\n    #echoesGardenGame .eg-bubble-icon {\n      font-size: 28px;\n    }\n\n    #echoesGardenGame .eg-bubble-text {\n      font-size: 0.95rem;\n      line-height: 1.45;\n      color: var(--eg-muted);\n    }\n\n    #echoesGardenGame .eg-chip-row {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-top: 14px;\n    }\n\n    #echoesGardenGame .eg-chip {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 9px 13px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.74);\n      border: 1px solid var(--eg-line);\n      font-size: 0.92rem;\n      font-weight: 700;\n      color: #355445;\n    }\n\n    #echoesGardenGame .eg-btn-row {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 12px;\n      margin-top: 20px;\n    }\n\n    #echoesGardenGame button {\n      appearance: none;\n      border: none;\n      cursor: pointer;\n      font: inherit;\n      transition: transform 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;\n    }\n\n    #echoesGardenGame button:hover {\n      transform: translateY(-1px);\n    }\n\n    #echoesGardenGame button:active {\n      transform: translateY(0);\n    }\n\n    #echoesGardenGame .eg-btn-main,\n    #echoesGardenGame .eg-btn-soft,\n    #echoesGardenGame .eg-btn-scan {\n      border-radius: 18px;\n      padding: 14px 18px;\n      font-weight: 800;\n      box-shadow: 0 10px 20px rgba(28,63,39,0.08);\n    }\n\n    #echoesGardenGame .eg-btn-main {\n      color: white;\n      background: linear-gradient(135deg, var(--eg-green), var(--eg-green-dark));\n    }\n\n    #echoesGardenGame .eg-btn-soft {\n      color: var(--eg-text);\n      background: rgba(255,255,255,0.78);\n      border: 1px solid var(--eg-line);\n    }\n\n    #echoesGardenGame .eg-btn-scan {\n      color: #163124;\n      background: linear-gradient(135deg, #f3d77d, #efc75e);\n    }\n\n    #echoesGardenGame .eg-stage-head {\n      display: flex;\n      justify-content: space-between;\n      gap: 14px;\n      align-items: start;\n      flex-wrap: wrap;\n      margin-bottom: 18px;\n    }\n\n    #echoesGardenGame .eg-stage-title {\n      margin: 0;\n      font-size: clamp(1.7rem, 3vw, 2.4rem);\n      line-height: 1.08;\n      color: #163124;\n    }\n\n    #echoesGardenGame .eg-stage-sub {\n      margin: 8px 0 0;\n      color: var(--eg-muted);\n      line-height: 1.55;\n    }\n\n    #echoesGardenGame .eg-level-badge {\n      padding: 10px 14px;\n      border-radius: 999px;\n      background: rgba(108,165,111,0.12);\n      border: 1px solid var(--eg-line);\n      color: var(--eg-green-dark);\n      font-weight: 800;\n      white-space: nowrap;\n    }\n\n    #echoesGardenGame .eg-playground {\n      display: grid;\n      grid-template-columns: 1.08fr 0.92fr;\n      gap: 18px;\n    }\n\n    #echoesGardenGame .eg-card {\n      background: var(--eg-card-strong);\n      border: 1px solid var(--eg-line);\n      border-radius: 26px;\n      padding: 18px;\n      min-width: 0;\n    }\n\n    #echoesGardenGame .eg-card-title {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      margin: 0 0 10px;\n      font-size: 1.15rem;\n      color: #193628;\n    }\n\n    #echoesGardenGame .eg-card-title .icon {\n      width: 38px;\n      height: 38px;\n      border-radius: 12px;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      background: rgba(108,165,111,0.13);\n      flex-shrink: 0;\n      font-size: 20px;\n    }\n\n    #echoesGardenGame .eg-clue-box {\n      min-height: 240px;\n      display: flex;\n      flex-direction: column;\n      justify-content: space-between;\n      background: linear-gradient(180deg, rgba(248,252,248,0.98), rgba(244,250,245,0.96));\n    }\n\n    #echoesGardenGame .eg-clue-main {\n      font-size: 1.18rem;\n      line-height: 1.7;\n      color: #294838;\n      margin: 8px 0 0;\n    }\n\n    #echoesGardenGame .eg-helper-note {\n      margin-top: 16px;\n      padding: 14px;\n      border-radius: 18px;\n      background: rgba(134,199,216,0.12);\n      border: 1px solid rgba(134,199,216,0.22);\n      color: #325463;\n      line-height: 1.55;\n      font-size: 0.95rem;\n    }\n\n    #echoesGardenGame .eg-audio-box {\n      display: grid;\n      gap: 14px;\n    }\n\n    #echoesGardenGame .eg-sound-orb {\n      height: 170px;\n      border-radius: 26px;\n      background:\n        radial-gradient(circle at 50% 40%, rgba(255,255,255,0.95), rgba(255,255,255,0.65) 35%, rgba(108,165,111,0.16) 36%, rgba(108,165,111,0.06) 65%, transparent 66%),\n        linear-gradient(180deg, rgba(108,165,111,0.12), rgba(134,199,216,0.08));\n      border: 1px solid var(--eg-line);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      position: relative;\n      overflow: hidden;\n    }\n\n    #echoesGardenGame .eg-sound-orb::before,\n    #echoesGardenGame .eg-sound-orb::after {\n      content: \"\";\n      position: absolute;\n      border-radius: 999px;\n      border: 2px dashed rgba(68,115,75,0.18);\n      animation: egPulse 2.4s linear infinite;\n    }\n\n    #echoesGardenGame .eg-sound-orb::before {\n      width: 110px;\n      height: 110px;\n    }\n\n    #echoesGardenGame .eg-sound-orb::after {\n      width: 160px;\n      height: 160px;\n      animation-delay: 1.2s;\n    }\n\n    #echoesGardenGame .eg-sound-icon {\n      font-size: 56px;\n      position: relative;\n      z-index: 1;\n    }\n\n    @keyframes egPulse {\n      0% { transform: scale(0.88); opacity: 0.7; }\n      100% { transform: scale(1.18); opacity: 0; }\n    }\n\n    #echoesGardenGame .eg-sound-caption {\n      text-align: center;\n      color: var(--eg-muted);\n      font-size: 0.98rem;\n      line-height: 1.5;\n    }\n\n    #echoesGardenGame .eg-howto {\n      display: grid;\n      gap: 10px;\n      margin-top: 12px;\n    }\n\n    #echoesGardenGame .eg-howto-step {\n      display: flex;\n      gap: 12px;\n      align-items: flex-start;\n      padding: 12px 14px;\n      border-radius: 18px;\n      background: rgba(255,255,255,0.74);\n      border: 1px solid var(--eg-line);\n    }\n\n    #echoesGardenGame .eg-howto-num {\n      width: 28px;\n      height: 28px;\n      border-radius: 999px;\n      background: rgba(108,165,111,0.15);\n      color: var(--eg-green-dark);\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 0.9rem;\n      font-weight: 900;\n      flex-shrink: 0;\n    }\n\n    #echoesGardenGame .eg-howto-text {\n      color: #355445;\n      line-height: 1.5;\n      font-size: 0.96rem;\n    }\n\n    #echoesGardenGame .eg-scan-area {\n      margin-top: 18px;\n      display: grid;\n      gap: 14px;\n    }\n\n    #echoesGardenGame .eg-reader-shell {\n      border-radius: 24px;\n      overflow: hidden;\n      background: #f8fbf8;\n      border: 1px dashed rgba(68,115,75,0.25);\n      padding: 10px;\n      display: none;\n    }\n\n    #echoesGardenGame .eg-reader-shell.eg-show {\n      display: block;\n    }\n\n    #echoesGardenGame #egQrReader {\n      width: 100%;\n      min-height: 260px;\n      border-radius: 18px;\n      overflow: hidden;\n    }\n\n    #echoesGardenGame .eg-manual {\n      display: grid;\n      grid-template-columns: 1fr auto;\n      gap: 10px;\n      align-items: center;\n    }\n\n    #echoesGardenGame .eg-manual input {\n      width: 100%;\n      padding: 14px 16px;\n      border-radius: 16px;\n      border: 1px solid rgba(28,63,39,0.12);\n      background: rgba(255,255,255,0.92);\n      font: inherit;\n      color: var(--eg-text);\n      outline: none;\n    }\n\n    #echoesGardenGame .eg-manual input:focus {\n      border-color: rgba(68,115,75,0.35);\n      box-shadow: 0 0 0 4px rgba(108,165,111,0.12);\n    }\n\n    #echoesGardenGame .eg-status {\n      min-height: 70px;\n      padding: 16px;\n      border-radius: 20px;\n      background: rgba(255,255,255,0.74);\n      border: 1px solid var(--eg-line);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      text-align: center;\n      line-height: 1.55;\n      color: #365445;\n      font-weight: 700;\n    }\n\n    #echoesGardenGame .eg-status.eg-success {\n      background: rgba(90,156,96,0.10);\n      border-color: rgba(90,156,96,0.26);\n      color: #2e6d38;\n    }\n\n    #echoesGardenGame .eg-status.eg-error {\n      background: rgba(217,106,106,0.10);\n      border-color: rgba(217,106,106,0.26);\n      color: #8b3e3e;\n    }\n\n    #echoesGardenGame .eg-fact {\n      display: none;\n      padding: 16px;\n      border-radius: 20px;\n      background: rgba(239,199,94,0.13);\n      border: 1px solid rgba(239,199,94,0.26);\n      color: #6f5422;\n      line-height: 1.58;\n    }\n\n    #echoesGardenGame .eg-fact.eg-show {\n      display: block;\n    }\n\n    #echoesGardenGame .eg-final-wrap {\n      text-align: center;\n      padding: 26px 10px 8px;\n    }\n\n    #echoesGardenGame .eg-final-icon {\n      font-size: 60px;\n      margin-bottom: 10px;\n    }\n\n    #echoesGardenGame .eg-final-title {\n      margin: 0 0 10px;\n      font-size: clamp(2rem, 4vw, 3rem);\n      color: #173126;\n    }\n\n    #echoesGardenGame .eg-final-score {\n      font-size: 4rem;\n      line-height: 1;\n      font-weight: 900;\n      color: var(--eg-green-dark);\n      margin: 18px 0 12px;\n    }\n\n    #echoesGardenGame .eg-final-badge {\n      display: inline-block;\n      padding: 12px 18px;\n      border-radius: 999px;\n      background: linear-gradient(135deg, rgba(239,199,94,0.24), rgba(108,165,111,0.16));\n      border: 1px solid rgba(239,199,94,0.24);\n      color: #5d4c22;\n      font-weight: 900;\n      margin-bottom: 18px;\n    }\n\n    #echoesGardenGame .eg-final-text {\n      max-width: 700px;\n      margin: 0 auto;\n      color: var(--eg-muted);\n      line-height: 1.7;\n      font-size: 1.05rem;\n    }\n\n    #echoesGardenGame .eg-hidden {\n      display: none !important;\n    }\n\n    @media (max-width: 980px) {\n      #echoesGardenGame .eg-shell {\n        grid-template-columns: 1fr;\n      }\n\n      #echoesGardenGame .eg-panel {\n        position: static;\n      }\n\n      #echoesGardenGame .eg-playground,\n      #echoesGardenGame .eg-start-hero {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media (max-width: 640px) {\n      #echoesGardenGame {\n        padding: 10px;\n        border-radius: 22px;\n      }\n\n      #echoesGardenGame .eg-main,\n      #echoesGardenGame .eg-panel {\n        padding: 16px;\n        border-radius: 22px;\n      }\n\n      #echoesGardenGame .eg-manual {\n        grid-template-columns: 1fr;\n      }\n\n      #echoesGardenGame .eg-bubbles {\n        grid-template-columns: 1fr;\n      }\n\n      #echoesGardenGame .eg-btn-main,\n      #echoesGardenGame .eg-btn-soft,\n      #echoesGardenGame .eg-btn-scan {\n        width: 100%;\n      }\n    }\n  <\/style>\n\n  <div class=\"eg-shell\">\n    <aside class=\"eg-panel\">\n      <div class=\"eg-brand\">\ud83c\udf3f Ozv\u011bny zahrady<\/div>\n      <h2 class=\"eg-title\">Mise podle zvuku<\/h2>\n      <p class=\"eg-subtitle\">\n        Poslouchej, pohybuj se prostorem a odhaluj spr\u00e1vn\u00e1 m\u00edsta zahrady pomoc\u00ed QR k\u00f3d\u016f.\n      <\/p>\n\n      <div class=\"eg-mascot\">\ud83e\udeb4\ud83e\udded<\/div>\n\n      <div class=\"eg-mini-grid\">\n        <div class=\"eg-mini-card\">\n          <div class=\"eg-mini-label\">Postup<\/div>\n          <div id=\"egSideProgress\" class=\"eg-progress-value\">0 \/ 5 stanovi\u0161\u0165<\/div>\n          <div class=\"eg-progressbar\">\n            <div id=\"egSideProgressFill\" class=\"eg-progressfill\"><\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"eg-mini-card\">\n          <div class=\"eg-mini-label\">Aktu\u00e1ln\u00ed stav<\/div>\n          <div id=\"egSideStatus\" class=\"eg-side-score\">P\u0159ipraveno ke startu<\/div>\n        <\/div>\n\n        <div class=\"eg-mini-card\">\n          <div class=\"eg-mini-label\">Jak hr\u00e1t<\/div>\n          <div class=\"eg-subtitle\" style=\"font-size:0.94rem;\">\n            Zvuk ti napov\u00ed m\u00edsto. A\u017e ho najde\u0161, naskenuj QR k\u00f3d p\u0159\u00edmo v t\u00e9to str\u00e1nce.\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/aside>\n\n    <main class=\"eg-main\">\n      <section id=\"egStartScreen\" class=\"eg-screen eg-active\">\n        <div class=\"eg-start-layout\">\n          <div class=\"eg-start-card eg-start-hero\">\n            <div>\n              <div class=\"eg-brand\">\ud83e\uddd2 Pro d\u011bti i ml\u00e1de\u017e<\/div>\n              <h1 class=\"eg-title\" style=\"margin-top:0;\">Ozv\u011bny zahrady<\/h1>\n              <p class=\"eg-subtitle\">\n                Smyslov\u00e1 cesta zvukem, prostorem a p\u0159\u00edrodou. Ka\u017ed\u00fd zvuk pat\u0159\u00ed k jin\u00e9mu m\u00edstu v zahrad\u011b.\n                Tv\u00fdm \u00fakolem je naj\u00edt spr\u00e1vn\u00e9 stanovi\u0161t\u011b a potvrdit ho skenem.\n              <\/p>\n\n              <div class=\"eg-chip-row\">\n                <span class=\"eg-chip\">\ud83c\udfa7 poslouchej<\/span>\n                <span class=\"eg-chip\">\ud83d\udeb6 hledej<\/span>\n                <span class=\"eg-chip\">\ud83d\udcf7 skenuj<\/span>\n                <span class=\"eg-chip\">\ud83c\udf3f objevuj<\/span>\n              <\/div>\n\n              <div class=\"eg-btn-row\">\n                <button id=\"egStartBtn\" class=\"eg-btn-main\" type=\"button\">\u25b6 Za\u010d\u00edt hru<\/button>\n                <button id=\"egResetStartBtn\" class=\"eg-btn-soft\" type=\"button\">\u21ba Resetovat postup<\/button>\n              <\/div>\n            <\/div>\n\n            <div class=\"eg-bubbles\">\n              <div class=\"eg-bubble\">\n                <div class=\"eg-bubble-icon\">\ud83d\udca7<\/div>\n                <div class=\"eg-bubble-text\">N\u011bkter\u00e9 zvuky t\u011b povedou k vod\u011b, jin\u00e9 ke strom\u016fm, ke\u0159\u016fm nebo otev\u0159en\u00e9mu prostoru.<\/div>\n              <\/div>\n              <div class=\"eg-bubble\">\n                <div class=\"eg-bubble-icon\">\ud83d\udc38<\/div>\n                <div class=\"eg-bubble-text\">Ka\u017ed\u00e9 m\u00edsto m\u00e1 svou atmosf\u00e9ru. Tady bude\u0161 objevovat zahradu hlavn\u011b pomoc\u00ed sluchu.<\/div>\n              <\/div>\n              <div class=\"eg-bubble\">\n                <div class=\"eg-bubble-icon\">\ud83e\udded<\/div>\n                <div class=\"eg-bubble-text\">Nemus\u00ed\u0161 odch\u00e1zet ze str\u00e1nky. QR k\u00f3dy bude\u0161 skenovat p\u0159\u00edmo tady pomoc\u00ed kamery.<\/div>\n              <\/div>\n              <div class=\"eg-bubble\">\n                <div class=\"eg-bubble-icon\">\ud83c\udfc1<\/div>\n                <div class=\"eg-bubble-text\">Po dokon\u010den\u00ed cel\u00e9 trasy z\u00edsk\u00e1\u0161 z\u00e1v\u011bre\u010dn\u00fd titul objevitele zahrady.<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <section id=\"egGameScreen\" class=\"eg-screen\">\n        <div class=\"eg-stage-head\">\n          <div>\n            <div class=\"eg-brand\">\ud83d\udd0d Aktivn\u00ed mise<\/div>\n            <h2 id=\"egStageTitle\" class=\"eg-stage-title\">Na\u010d\u00edt\u00e1n\u00ed stanovi\u0161t\u011b\u2026<\/h2>\n            <p id=\"egStageSub\" class=\"eg-stage-sub\">Na\u010d\u00edt\u00e1n\u00ed instrukc\u00ed\u2026<\/p>\n          <\/div>\n          <div id=\"egLevelBadge\" class=\"eg-level-badge\">Stanovi\u0161t\u011b 1 \/ 5<\/div>\n        <\/div>\n\n        <div class=\"eg-playground\">\n          <div class=\"eg-card eg-clue-box\">\n            <div>\n              <h3 class=\"eg-card-title\"><span class=\"icon\">\ud83d\uddfa\ufe0f<\/span> Zvukov\u00e1 n\u00e1pov\u011bda<\/h3>\n              <div id=\"egClueText\" class=\"eg-clue-main\"><\/div>\n              <div class=\"eg-helper-note\">\n                Zkus si p\u0159edstavit, kde by se tento zvuk v zahrad\u011b p\u0159irozen\u011b objevil. Nehledej QR k\u00f3d naslepo \u2014 nejd\u0159\u00edv hledej m\u00edsto.\n              <\/div>\n            <\/div>\n\n            <div class=\"eg-howto\">\n              <div class=\"eg-howto-step\">\n                <div class=\"eg-howto-num\">1<\/div>\n                <div class=\"eg-howto-text\">Pus\u0165 si zvuk tolikr\u00e1t, kolikr\u00e1t pot\u0159ebuje\u0161.<\/div>\n              <\/div>\n              <div class=\"eg-howto-step\">\n                <div class=\"eg-howto-num\">2<\/div>\n                <div class=\"eg-howto-text\">Najdi v zahrad\u011b m\u00edsto, kter\u00e9 se ke zvuku hod\u00ed.<\/div>\n              <\/div>\n              <div class=\"eg-howto-step\">\n                <div class=\"eg-howto-num\">3<\/div>\n                <div class=\"eg-howto-text\">Naskenuj QR k\u00f3d p\u0159\u00edmo tady ve str\u00e1nce a pokra\u010duj d\u00e1l.<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"eg-card\">\n            <h3 class=\"eg-card-title\"><span class=\"icon\">\ud83c\udfa7<\/span> Zvukov\u00e1 konzole<\/h3>\n\n            <div class=\"eg-audio-box\">\n              <div class=\"eg-sound-orb\">\n                <div class=\"eg-sound-icon\">\ud83d\udd0a<\/div>\n              <\/div>\n\n              <div id=\"egAudioCaption\" class=\"eg-sound-caption\">\n                Poslechni si zvuk a zjisti, kam t\u011b vede.\n              <\/div>\n\n              <div class=\"eg-btn-row\" style=\"margin-top:0;\">\n                <button id=\"egPlayBtn\" class=\"eg-btn-main\" type=\"button\">\u25b6 P\u0159ehr\u00e1t zvuk<\/button>\n                <button id=\"egReplayBtn\" class=\"eg-btn-soft\" type=\"button\">\ud83d\udd04 P\u0159ehr\u00e1t znovu<\/button>\n              <\/div>\n\n              <audio id=\"egAudio\" preload=\"none\"><\/audio>\n\n              <div class=\"eg-scan-area\">\n                <button id=\"egOpenScannerBtn\" class=\"eg-btn-scan\" type=\"button\">\ud83d\udcf7 Otev\u0159\u00edt skener QR<\/button>\n\n                <div id=\"egReaderShell\" class=\"eg-reader-shell\">\n                  <div id=\"egQrReader\"><\/div>\n                <\/div>\n\n                <div class=\"eg-manual\">\n                  <input id=\"egManualCode\" type=\"text\" placeholder=\"Z\u00e1lo\u017en\u011b vlo\u017e k\u00f3d ru\u010dn\u011b, nap\u0159. pond\" \/>\n                  <button id=\"egManualSubmit\" class=\"eg-btn-soft\" type=\"button\">Potvrdit k\u00f3d<\/button>\n                <\/div>\n\n                <div id=\"egStatusBox\" class=\"eg-status\">\n                  A\u017e najde\u0161 spr\u00e1vn\u00e9 m\u00edsto, otev\u0159i skener a naskenuj QR k\u00f3d.\n                <\/div>\n\n                <div id=\"egFactBox\" class=\"eg-fact\"><\/div>\n\n                <div class=\"eg-btn-row\">\n                  <button id=\"egNextBtn\" class=\"eg-btn-main eg-hidden\" type=\"button\">\ud83c\udf3f Pokra\u010dovat<\/button>\n                  <button id=\"egResetGameBtn\" class=\"eg-btn-soft\" type=\"button\">\u21ba Resetovat hru<\/button>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <section id=\"egFinalScreen\" class=\"eg-screen\">\n        <div class=\"eg-final-wrap\">\n          <div class=\"eg-final-icon\">\ud83c\udfc6\ud83c\udf3f<\/div>\n          <h2 class=\"eg-final-title\">Mise dokon\u010dena<\/h2>\n          <div id=\"egFinalScore\" class=\"eg-final-score\">5 \/ 5<\/div>\n          <div id=\"egFinalBadge\" class=\"eg-final-badge\">\ud83c\udf33 Str\u00e1\u017ece ekosyst\u00e9mu<\/div>\n          <p id=\"egFinalText\" class=\"eg-final-text\">\n            Zahradu jsi nepozn\u00e1val jen o\u010dima, ale i sluchem. Ka\u017ed\u00e9 m\u00edsto m\u00e1 svou vlastn\u00ed ozv\u011bnu \u2014 a ty ses ji nau\u010dil naj\u00edt.\n          <\/p>\n\n          <div class=\"eg-btn-row\" style=\"justify-content:center;\">\n            <button id=\"egPlayAgainBtn\" class=\"eg-btn-main\" type=\"button\">\ud83d\udd04 Hr\u00e1t znovu<\/button>\n          <\/div>\n        <\/div>\n      <\/section>\n    <\/main>\n  <\/div>\n\n  <script src=\"https:\/\/unpkg.com\/html5-qrcode\" defer><\/script>\n  <script>\n    (function () {\n      const root = document.getElementById(\"echoesGardenGame\");\n      if (!root || root.dataset.egReady === \"1\") return;\n      root.dataset.egReady = \"1\";\n\n      const GAME_KEY = \"echoesGardenProgressScoped\";\n\n      const levels = [\n        {\n          id: 1,\n          title: \"Za\u010d\u00e1tek u sklen\u00edku\",\n          subtitle: \"Prvn\u00ed zvuk t\u011b zavede tam, kde p\u0159\u00edroda roste s lidskou pomoc\u00ed.\",\n          caption: \"Stanovi\u0161t\u011b souvisej\u00edc\u00ed s p\u00e9\u010d\u00ed, r\u016fstem a chr\u00e1n\u011bn\u00fdm prostorem.\",\n          sound: \"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/storegraphic-soft-wind-477404.mp3\",\n          clue: \"Tvoje cesta za\u010d\u00edn\u00e1 tam, kde p\u0159\u00edrodu usm\u011br\u0148uj\u00ed lidsk\u00e9 ruce. Najdi m\u00edsto, kde r\u016fst nen\u00ed divok\u00fd, ale chr\u00e1n\u011bn\u00fd.\",\n          expectedCode: \"greenhouse\",\n          fact: \"Sklen\u00edk nebo p\u011bstebn\u00ed z\u00f3na p\u0159edstavuje \u0159\u00edzen\u00fd r\u016fst. Ukazuje, \u017ee zahrada nen\u00ed jen divok\u00e1 p\u0159\u00edroda, ale i prostor p\u00e9\u010de a z\u00e1m\u011bru.\"\n        },\n        {\n          id: 2,\n          title: \"Star\u00fd strom\",\n          subtitle: \"Te\u010f naslouchej m\u00edstu, kter\u00e9 sah\u00e1 vzh\u016fru a p\u0159itom z\u016fst\u00e1v\u00e1 pevn\u011b zako\u0159en\u011bn\u00e9.\",\n          caption: \"Stanovi\u0161t\u011b spojen\u00e9 s v\u011btvemi, v\u00fd\u0161kou a \u017eivotem nad hlavou.\",\n          sound: \"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Kos-cerny.mp3\",\n          clue: \"Najdi obra, kter\u00fd se dot\u00fdk\u00e1 nebe, i kdy\u017e vypad\u00e1, \u017ee pr\u00e1v\u011b odpo\u010d\u00edv\u00e1.\",\n          expectedCode: \"tree\",\n          fact: \"Velk\u00e9 stromy jsou \u00fato\u010di\u0161t\u011bm, orienta\u010dn\u00edm bodem i tich\u00fdm sv\u011bdkem \u010dasu. V zahrad\u011b vytv\u00e1\u0159ej\u00ed vlastn\u00ed mikroprost\u0159ed\u00ed.\"\n        },\n        {\n          id: 3,\n          title: \"Skryt\u00fd \u017eivot v ke\u0159\u00edch\",\n          subtitle: \"Tady bude pot\u0159eba vn\u00edmat drobnosti a hledat m\u00edsto pln\u00e9 mal\u00fdch, ale \u017eiv\u00fdch zvuk\u016f.\",\n          caption: \"Stanovi\u0161t\u011b souvisej\u00edc\u00ed s ke\u0159i, hust\u00fdm porostem a neviditeln\u00fdm pohybem.\",\n          sound: \"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/capaholiczsfx-countryside-swamp-insects-environment-402579.mp3\",\n          clue: \"\u017divot je tu mal\u00fd, ukryt\u00fd a neposedn\u00fd. Mo\u017en\u00e1 ho neuvid\u00ed\u0161 \u2014 ale ur\u010dit\u011b ho usly\u0161\u00ed\u0161.\",\n          expectedCode: \"bush\",\n          fact: \"Hust\u0161\u00ed vegetace ukr\u00fdv\u00e1 mnoho forem \u017eivota. Pr\u00e1v\u011b takov\u00e1 m\u00edsta b\u00fdvaj\u00ed pln\u00e1 tich\u00e9ho pohybu, \u0161ust\u011bn\u00ed a drobn\u00fdch zvuk\u016f.\"\n        },\n        {\n          id: 4,\n          title: \"Zastaven\u00ed u vody\",\n          subtitle: \"Te\u010f t\u011b zvuk dovede k m\u00edstu klidu, odrazu a soust\u0159ed\u011bn\u00ed.\",\n          caption: \"Stanovi\u0161t\u011b souvisej\u00edc\u00ed s vodou, klidem a odrazem okoln\u00edho sv\u011bta.\",\n          sound: \"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/dragon-studio-soothing-river-flow-372456.mp3\",\n          clue: \"Najdi m\u00edsto, kde se sv\u011bt zti\u0161\u00ed a obloha \u017eije podruh\u00e9.\",\n          expectedCode: \"pond\",\n          fact: \"Voda p\u0159in\u00e1\u0161\u00ed \u017eivot, odraz, chlad i klid. Vodn\u00ed plocha b\u00fdv\u00e1 jedn\u00edm z nejsiln\u011bj\u0161\u00edch center zahradn\u00edho prostoru.\"\n        },\n        {\n          id: 5,\n          title: \"Otev\u0159en\u00fd okraj zahrady\",\n          subtitle: \"Posledn\u00ed stanovi\u0161t\u011b t\u011b zavede tam, kde nic nebr\u00e1n\u00ed pohybu vzduchu.\",\n          caption: \"Stanovi\u0161t\u011b souvisej\u00edc\u00ed s v\u011btrem, prostorem a otev\u0159enost\u00ed.\",\n          sound: \"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/dragon-studio-wind-blowing-sfx-09-423678.mp3\",\n          clue: \"Tady nestoj\u00ed nic v cest\u011b. Vzduch se m\u016f\u017ee pohybovat voln\u011b a tvaruje prostor kolem sebe.\",\n          expectedCode: \"wind\",\n          fact: \"Otev\u0159en\u00e1 m\u00edsta zv\u00fdraz\u0148uj\u00ed proud\u011bn\u00ed vzduchu. V\u011btrn\u00e9 stanovi\u0161t\u011b p\u016fsob\u00ed jinak ne\u017e hust\u0161\u00ed a chr\u00e1n\u011bn\u011bj\u0161\u00ed \u010d\u00e1sti zahrady.\"\n        }\n      ];\n\n      const total = levels.length;\n\n      const $ = (sel) => root.querySelector(sel);\n\n      const els = {\n        startScreen: $(\"#egStartScreen\"),\n        gameScreen: $(\"#egGameScreen\"),\n        finalScreen: $(\"#egFinalScreen\"),\n        startBtn: $(\"#egStartBtn\"),\n        resetStartBtn: $(\"#egResetStartBtn\"),\n        playAgainBtn: $(\"#egPlayAgainBtn\"),\n        resetGameBtn: $(\"#egResetGameBtn\"),\n        stageTitle: $(\"#egStageTitle\"),\n        stageSub: $(\"#egStageSub\"),\n        clueText: $(\"#egClueText\"),\n        audioCaption: $(\"#egAudioCaption\"),\n        levelBadge: $(\"#egLevelBadge\"),\n        playBtn: $(\"#egPlayBtn\"),\n        replayBtn: $(\"#egReplayBtn\"),\n        audio: $(\"#egAudio\"),\n        openScannerBtn: $(\"#egOpenScannerBtn\"),\n        readerShell: $(\"#egReaderShell\"),\n        qrReader: $(\"#egQrReader\"),\n        manualCode: $(\"#egManualCode\"),\n        manualSubmit: $(\"#egManualSubmit\"),\n        statusBox: $(\"#egStatusBox\"),\n        factBox: $(\"#egFactBox\"),\n        nextBtn: $(\"#egNextBtn\"),\n        sideProgress: $(\"#egSideProgress\"),\n        sideProgressFill: $(\"#egSideProgressFill\"),\n        sideStatus: $(\"#egSideStatus\"),\n        finalScore: $(\"#egFinalScore\"),\n        finalBadge: $(\"#egFinalBadge\"),\n        finalText: $(\"#egFinalText\")\n      };\n\n      let scanner = null;\n      let scannerActive = false;\n\n      function getProgress() {\n        try {\n          const raw = sessionStorage.getItem(GAME_KEY);\n          if (!raw) return { completed: 0 };\n          const parsed = JSON.parse(raw);\n          return { completed: Number.isInteger(parsed.completed) ? parsed.completed : 0 };\n        } catch {\n          return { completed: 0 };\n        }\n      }\n\n      function setProgress(obj) {\n        sessionStorage.setItem(GAME_KEY, JSON.stringify(obj));\n      }\n\n      function resetProgress() {\n        sessionStorage.removeItem(GAME_KEY);\n      }\n\n      function getLevel(id) {\n        return levels.find(l => l.id === id) || null;\n      }\n\n      function showScreen(name) {\n        [els.startScreen, els.gameScreen, els.finalScreen].forEach(el => el.classList.remove(\"eg-active\"));\n        if (name === \"start\") els.startScreen.classList.add(\"eg-active\");\n        if (name === \"game\") els.gameScreen.classList.add(\"eg-active\");\n        if (name === \"final\") els.finalScreen.classList.add(\"eg-active\");\n      }\n\n      function updateSide(progressCompleted, text) {\n        els.sideProgress.textContent = `${progressCompleted} \/ ${total} stanovi\u0161\u0165`;\n        els.sideProgressFill.style.width = `${(progressCompleted \/ total) * 100}%`;\n        els.sideStatus.textContent = text;\n      }\n\n      function setNeutralStatus(msg) {\n        els.statusBox.className = \"eg-status\";\n        els.statusBox.textContent = msg || \"A\u017e najde\u0161 spr\u00e1vn\u00e9 m\u00edsto, otev\u0159i skener a naskenuj QR k\u00f3d.\";\n        els.factBox.classList.remove(\"eg-show\");\n        els.factBox.textContent = \"\";\n        els.nextBtn.classList.add(\"eg-hidden\");\n      }\n\n      function setSuccessStatus(msg, fact) {\n        els.statusBox.className = \"eg-status eg-success\";\n        els.statusBox.textContent = msg;\n        els.factBox.textContent = fact;\n        els.factBox.classList.add(\"eg-show\");\n        els.nextBtn.classList.remove(\"eg-hidden\");\n      }\n\n      function setErrorStatus(msg) {\n        els.statusBox.className = \"eg-status eg-error\";\n        els.statusBox.textContent = msg;\n        els.factBox.classList.remove(\"eg-show\");\n        els.factBox.textContent = \"\";\n        els.nextBtn.classList.add(\"eg-hidden\");\n      }\n\n      function updatePlayButton() {\n        els.playBtn.textContent = els.audio.paused ? \"\u25b6 P\u0159ehr\u00e1t zvuk\" : \"\u23f8 Pozastavit zvuk\";\n      }\n\n      function renderLevel(levelId) {\n        const level = getLevel(levelId);\n        if (!level) return;\n\n        showScreen(\"game\");\n\n        els.stageTitle.textContent = level.title;\n        els.stageSub.textContent = level.subtitle;\n        els.clueText.textContent = level.clue;\n        els.audioCaption.textContent = level.caption;\n        els.levelBadge.textContent = `Stanovi\u0161t\u011b ${level.id} \/ ${total}`;\n        els.audio.src = level.sound;\n        els.manualCode.value = \"\";\n        setNeutralStatus(\"A\u017e najde\u0161 spr\u00e1vn\u00e9 m\u00edsto, otev\u0159i skener a naskenuj QR k\u00f3d.\");\n\n        const progress = getProgress();\n        updateSide(progress.completed, `Hled\u00e1\u0161: ${level.title}`);\n\n        stopScanner();\n        updatePlayButton();\n      }\n\n      function getFinalBadge(score) {\n        if (score === total) return \"\ud83c\udf33 Str\u00e1\u017ece ekosyst\u00e9mu\";\n        if (score >= 4) return \"\ud83c\udf3f Pozorn\u00fd objevitel\";\n        if (score >= 2) return \"\ud83c\udf43 Pr\u016fzkumn\u00edk zahrady\";\n        return \"\ud83e\udeb4 Za\u010d\u00ednaj\u00edc\u00ed poslucha\u010d\";\n      }\n\n      function getFinalText(score) {\n        if (score === total) {\n          return \"Dok\u00e1zal jsi propojit zvuk s prostorem a proj\u00edt celou zahradu jako skute\u010dn\u00fd objevitel. Te\u010f u\u017e v\u00ed\u0161, \u017ee ka\u017ed\u00e9 m\u00edsto m\u00e1 svou vlastn\u00ed ozv\u011bnu.\";\n        }\n        if (score >= 4) {\n          return \"Skv\u011bl\u00e1 pr\u00e1ce. V\u011bt\u0161inu stanovi\u0161\u0165 jsi na\u0161el spr\u00e1vn\u011b a uk\u00e1zal jsi, \u017ee um\u00ed\u0161 opravdu naslouchat prost\u0159ed\u00ed kolem sebe.\";\n        }\n        if (score >= 2) {\n          return \"Dobr\u00e1 pr\u00e1ce. Objevil jsi n\u011bkolik m\u00edst a za\u010dal jsi vn\u00edmat zahradu jin\u00fdm zp\u016fsobem.\";\n        }\n        return \"Ka\u017ed\u00fd objevitel za\u010d\u00edn\u00e1 prvn\u00edm krokem. Zkus to znovu a sleduj, co ti zahrada prozrad\u00ed p\u0159\u00ed\u0161t\u011b.\";\n      }\n\n      function showFinal() {\n        const progress = getProgress();\n        els.finalScore.textContent = `${progress.completed} \/ ${total}`;\n        els.finalBadge.textContent = getFinalBadge(progress.completed);\n        els.finalText.textContent = getFinalText(progress.completed);\n        updateSide(progress.completed, \"Mise dokon\u010dena\");\n        showScreen(\"final\");\n        stopScanner();\n      }\n\n      function verifyCode(scannedCode) {\n        const progress = getProgress();\n        const currentLevelId = progress.completed + 1;\n        const currentLevel = getLevel(currentLevelId);\n\n        if (!currentLevel) {\n          setErrorStatus(\"Neexistuje dal\u0161\u00ed stanovi\u0161t\u011b ke kontrole.\");\n          return;\n        }\n\n        const cleaned = (scannedCode || \"\").trim().toLowerCase();\n\n        if (!cleaned) {\n          setErrorStatus(\"K\u00f3d se nepoda\u0159ilo na\u010d\u00edst.\");\n          return;\n        }\n\n        if (cleaned === currentLevel.expectedCode) {\n          setProgress({ completed: currentLevelId });\n          updateSide(currentLevelId, `Spr\u00e1vn\u011b: ${currentLevel.title}`);\n          setSuccessStatus(`Spr\u00e1vn\u011b! Na\u0161el jsi stanovi\u0161t\u011b: ${currentLevel.title}.`, currentLevel.fact);\n          stopScanner();\n        } else {\n          setErrorStatus(\"Tohle nen\u00ed spr\u00e1vn\u00fd k\u00f3d pro aktu\u00e1ln\u00ed zvuk. Zkus naj\u00edt jin\u00e9 m\u00edsto.\");\n        }\n      }\n\n      async function openScanner() {\n        if (scannerActive) return;\n\n        if (typeof Html5Qrcode === \"undefined\") {\n          setErrorStatus(\"Skener se nepoda\u0159ilo na\u010d\u00edst. Zkus ru\u010dn\u00ed zad\u00e1n\u00ed k\u00f3du.\");\n          return;\n        }\n\n        els.readerShell.classList.add(\"eg-show\");\n\n        try {\n          scanner = new Html5Qrcode(\"egQrReader\");\n          scannerActive = true;\n\n          await scanner.start(\n            { facingMode: \"environment\" },\n            { fps: 10, qrbox: { width: 220, height: 220 } },\n            (decodedText) => {\n              const maybeUrl = decodedText.trim();\n              try {\n                const url = new URL(maybeUrl, window.location.href);\n                const codeParam = url.searchParams.get(\"code\");\n                if (codeParam) {\n                  verifyCode(codeParam);\n                } else {\n                  verifyCode(maybeUrl);\n                }\n              } catch {\n                verifyCode(maybeUrl);\n              }\n            },\n            () => {}\n          );\n        } catch {\n          scannerActive = false;\n          setErrorStatus(\"Kamera se nepoda\u0159ila otev\u0159\u00edt. Zkus ru\u010dn\u00ed zad\u00e1n\u00ed k\u00f3du.\");\n        }\n      }\n\n      async function stopScanner() {\n        if (scanner && scannerActive) {\n          try {\n            await scanner.stop();\n            await scanner.clear();\n          } catch {}\n        }\n        scanner = null;\n        scannerActive = false;\n        els.readerShell.classList.remove(\"eg-show\");\n        els.qrReader.innerHTML = \"\";\n      }\n\n      function startGame() {\n        resetProgress();\n        renderLevel(1);\n      }\n\n      function resetGame() {\n        resetProgress();\n        stopScanner();\n        els.audio.pause();\n        els.audio.currentTime = 0;\n        updatePlayButton();\n        updateSide(0, \"P\u0159ipraveno ke startu\");\n        showScreen(\"start\");\n      }\n\n      function continueGame() {\n        const progress = getProgress();\n        const nextLevelId = progress.completed + 1;\n        if (nextLevelId > total) {\n          showFinal();\n        } else {\n          renderLevel(nextLevelId);\n        }\n      }\n\n      els.startBtn.addEventListener(\"click\", startGame);\n      els.resetStartBtn.addEventListener(\"click\", resetGame);\n      els.playAgainBtn.addEventListener(\"click\", startGame);\n      els.resetGameBtn.addEventListener(\"click\", resetGame);\n\n      els.playBtn.addEventListener(\"click\", () => {\n        if (els.audio.paused) {\n          els.audio.play();\n        } else {\n          els.audio.pause();\n        }\n      });\n\n      els.replayBtn.addEventListener(\"click\", () => {\n        els.audio.currentTime = 0;\n        els.audio.play();\n      });\n\n      els.audio.addEventListener(\"play\", updatePlayButton);\n      els.audio.addEventListener(\"pause\", updatePlayButton);\n      els.audio.addEventListener(\"ended\", () => {\n        els.audio.currentTime = 0;\n        updatePlayButton();\n      });\n\n      els.openScannerBtn.addEventListener(\"click\", openScanner);\n\n      els.manualSubmit.addEventListener(\"click\", () => {\n        verifyCode(els.manualCode.value);\n      });\n\n      els.manualCode.addEventListener(\"keydown\", (e) => {\n        if (e.key === \"Enter\") {\n          verifyCode(els.manualCode.value);\n        }\n      });\n\n      els.nextBtn.addEventListener(\"click\", continueGame);\n\n      updateSide(getProgress().completed, \"P\u0159ipraveno ke startu\");\n      showScreen(\"start\");\n    })();\n  <\/script>\n<\/div>\n\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22-1024x1024.png\" alt=\"\" class=\"wp-image-2689\" style=\"width:288px;height:auto\" srcset=\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22-1024x1024.png 1024w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22-300x300.png 300w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22-150x150.png 150w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22-768x768.png 768w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22-12x12.png 12w, https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/qr-code-22.png 1147w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf3f Ozv\u011bny zahrady Mise podle zvuku Poslouchej, pohybuj se prostorem a odhaluj spr\u00e1vn\u00e1 m\u00edsta zahrady pomoc\u00ed QR k\u00f3d\u016f. \ud83e\udeb4\ud83e\udded Postup&#8230;<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2675","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ozv\u011bny zahrady - Petrkl\u00ed\u010d help<\/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:\/\/www.petrklichelp.cz\/cs\/ozveny-zahrady\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ozv\u011bny zahrady - Petrkl\u00ed\u010d help\" \/>\n<meta property=\"og:description\" content=\"\ud83c\udf3f Ozv\u011bny zahrady Mise podle zvuku Poslouchej, pohybuj se prostorem a odhaluj spr\u00e1vn\u00e1 m\u00edsta zahrady pomoc\u00ed QR k\u00f3d\u016f. \ud83e\udeb4\ud83e\udded Postup...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.petrklichelp.cz\/cs\/ozveny-zahrady\/\" \/>\n<meta property=\"og:site_name\" content=\"Petrkl\u00ed\u010d help\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/PetrklicHelp\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-15T20:15:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"318\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/\",\"url\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/\",\"name\":\"Ozv\u011bny zahrady - Petrkl\u00ed\u010d help\",\"isPartOf\":{\"@id\":\"https:\/\/www.petrklichelp.cz\/cs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png\",\"datePublished\":\"2026-04-14T12:17:57+00:00\",\"dateModified\":\"2026-04-15T20:15:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#primaryimage\",\"url\":\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png\",\"contentUrl\":\"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.petrklichelp.cz\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ozv\u011bny zahrady\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.petrklichelp.cz\/cs\/#website\",\"url\":\"https:\/\/www.petrklichelp.cz\/cs\/\",\"name\":\"Petrkl\u00ed\u010d help\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.petrklichelp.cz\/cs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.petrklichelp.cz\/cs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.petrklichelp.cz\/cs\/#organization\",\"name\":\"Petrkl\u00ed\u010d help\",\"url\":\"https:\/\/www.petrklichelp.cz\/cs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/www.petrklichelp.cz\/cs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/petrklichelp.mrkninaweb.cz\/wp-content\/uploads\/2023\/01\/zahrada-petrklichelp.png\",\"contentUrl\":\"https:\/\/petrklichelp.mrkninaweb.cz\/wp-content\/uploads\/2023\/01\/zahrada-petrklichelp.png\",\"width\":117,\"height\":110,\"caption\":\"Petrkl\u00ed\u010d help\"},\"image\":{\"@id\":\"https:\/\/www.petrklichelp.cz\/cs\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/PetrklicHelp\",\"https:\/\/www.instagram.com\/petrklic_help\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ozv\u011bny zahrady - Petrkl\u00ed\u010d help","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:\/\/www.petrklichelp.cz\/cs\/ozveny-zahrady\/","og_locale":"cs_CZ","og_type":"article","og_title":"Ozv\u011bny zahrady - Petrkl\u00ed\u010d help","og_description":"\ud83c\udf3f Ozv\u011bny zahrady Mise podle zvuku Poslouchej, pohybuj se prostorem a odhaluj spr\u00e1vn\u00e1 m\u00edsta zahrady pomoc\u00ed QR k\u00f3d\u016f. \ud83e\udeb4\ud83e\udded Postup...","og_url":"https:\/\/www.petrklichelp.cz\/cs\/ozveny-zahrady\/","og_site_name":"Petrkl\u00ed\u010d help","article_publisher":"https:\/\/www.facebook.com\/PetrklicHelp","article_modified_time":"2026-04-15T20:15:54+00:00","og_image":[{"width":1024,"height":318,"url":"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Odhadovan\u00e1 doba \u010dten\u00ed":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/","url":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/","name":"Ozv\u011bny zahrady - Petrkl\u00ed\u010d help","isPartOf":{"@id":"https:\/\/www.petrklichelp.cz\/cs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#primaryimage"},"image":{"@id":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#primaryimage"},"thumbnailUrl":"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png","datePublished":"2026-04-14T12:17:57+00:00","dateModified":"2026-04-15T20:15:54+00:00","breadcrumb":{"@id":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/"]}]},{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#primaryimage","url":"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png","contentUrl":"https:\/\/www.petrklichelp.cz\/wp-content\/uploads\/2026\/04\/Echoes-of-Garden-banner-1024x318.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.petrklichelp.cz\/ozveny-zahrady\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.petrklichelp.cz\/"},{"@type":"ListItem","position":2,"name":"Ozv\u011bny zahrady"}]},{"@type":"WebSite","@id":"https:\/\/www.petrklichelp.cz\/cs\/#website","url":"https:\/\/www.petrklichelp.cz\/cs\/","name":"Petrkl\u00ed\u010d help","description":"","publisher":{"@id":"https:\/\/www.petrklichelp.cz\/cs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.petrklichelp.cz\/cs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"},{"@type":"Organization","@id":"https:\/\/www.petrklichelp.cz\/cs\/#organization","name":"Petrkl\u00ed\u010d help","url":"https:\/\/www.petrklichelp.cz\/cs\/","logo":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/www.petrklichelp.cz\/cs\/#\/schema\/logo\/image\/","url":"https:\/\/petrklichelp.mrkninaweb.cz\/wp-content\/uploads\/2023\/01\/zahrada-petrklichelp.png","contentUrl":"https:\/\/petrklichelp.mrkninaweb.cz\/wp-content\/uploads\/2023\/01\/zahrada-petrklichelp.png","width":117,"height":110,"caption":"Petrkl\u00ed\u010d help"},"image":{"@id":"https:\/\/www.petrklichelp.cz\/cs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/PetrklicHelp","https:\/\/www.instagram.com\/petrklic_help\/"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/pages\/2675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/comments?post=2675"}],"version-history":[{"count":10,"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/pages\/2675\/revisions"}],"predecessor-version":[{"id":2701,"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/pages\/2675\/revisions\/2701"}],"wp:attachment":[{"href":"https:\/\/www.petrklichelp.cz\/cs\/wp-json\/wp\/v2\/media?parent=2675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}