{"id":383,"date":"2026-06-23T13:46:14","date_gmt":"2026-06-23T13:46:14","guid":{"rendered":"https:\/\/mikrotoni.mk\/?page_id=383"},"modified":"2026-06-23T14:02:55","modified_gmt":"2026-06-23T14:02:55","slug":"test-online","status":"publish","type":"page","link":"https:\/\/mikrotoni.mk\/mk\/test-online\/","title":{"rendered":"TEST Online"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"383\" class=\"elementor elementor-383\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-87c0732 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"87c0732\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;ekit_has_onepagescroll_dot&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a78b3d9 elementor-invisible\" data-id=\"a78b3d9\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;animation&quot;:&quot;fadeInDown&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3eb6005 elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget-mobile__width-inherit  ui-split-animate ui-splitby-chars elementor-widget elementor-widget-heading\" data-id=\"3eb6005\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ui_animate_split&quot;:&quot;ui-split-animate&quot;,&quot;ui_animate_split_by&quot;:&quot;chars&quot;,&quot;ui_animate_split_style&quot;:&quot;fadeInUp&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">\n\n<h2 style=\",sans-serif;font-size:46px;font-weight:800;line-height:1.15;color:#ffffff;margin:0;letter-spacing:-1.2px;text-transform:uppercase;text-align:left\">\n\n TEST DEGJIMI ONLINE\n\n<\/h2><\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ab02908 e-con e-atomic-element e-flexbox-base e-ab837b2\" data-id=\"ab02908\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ab02908\">\n    \t\t<div class=\"elementor-element elementor-element-9d40d44 elementor-widget elementor-widget-html\" data-id=\"9d40d44\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- TESTI ONLINE I D\u00cbGJIMIT MIKROTONI \u2013 vendoseni t\u00eb gjith\u00eb kodin n\u00eb nj\u00eb widget HTML t\u00eb Elementor -->\r\n<style>\r\n\r\n    #mikrotoni-hearing-test {\r\n      --primary: #0759b8;\r\n      --primary-dark: #053c7c;\r\n      --primary-light: #eaf4ff;\r\n      --accent: #11a7a0;\r\n      --success: #15845f;\r\n      --warning: #b76c00;\r\n      --danger: #c43b48;\r\n      --ink: #152338;\r\n      --muted: #627086;\r\n      --line: #dce5ef;\r\n      --surface: #ffffff;\r\n      --background: #f3f7fb;\r\n      --shadow: 0 18px 50px rgba(28, 67, 111, 0.12);\r\n      --radius: 22px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test, #mikrotoni-hearing-test * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #mikrotoni-hearing-test {\r\n      scroll-behavior: smooth;\r\n    }\r\n\r\n    #mikrotoni-hearing-test {\r\n      margin: 0;\r\n      min-height: 0;\r\n      color: var(--ink);\r\n      background:\r\n        radial-gradient(circle at 10% 0%, rgba(17, 167, 160, 0.13), transparent 32%),\r\n        radial-gradient(circle at 100% 10%, rgba(7, 89, 184, 0.14), transparent 34%),\r\n        var(--background);\r\n      font-family: inherit, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\r\n      line-height: 1.55;\r\n    }\r\n\r\n    #mikrotoni-hearing-test button,\r\n#mikrotoni-hearing-test input {\r\n      font: inherit;\r\n    }\r\n\r\n    #mikrotoni-hearing-test button,\r\n#mikrotoni-hearing-test a {\r\n      -webkit-tap-highlight-color: transparent;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .site-header {\r\n      width: min(1120px, calc(100% - 32px));\r\n      margin: 24px auto 0;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 18px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .brand {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 12px;\r\n      color: var(--primary-dark);\r\n      font-weight: 900;\r\n      letter-spacing: 0.08em;\r\n      text-decoration: none;\r\n      font-size: 1.22rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .brand-mark {\r\n      width: 44px;\r\n      height: 44px;\r\n      border-radius: 14px;\r\n      display: grid;\r\n      place-items: center;\r\n      color: #fff;\r\n      background: linear-gradient(145deg, var(--primary), var(--accent));\r\n      box-shadow: 0 12px 26px rgba(7, 89, 184, 0.22);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .privacy-note {\r\n      color: var(--muted);\r\n      font-size: 0.9rem;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 7px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .app-shell {\r\n      width: min(960px, calc(100% - 32px));\r\n      margin: 28px auto 56px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero {\r\n      padding: clamp(26px, 5vw, 48px);\r\n      color: #fff;\r\n      background: linear-gradient(130deg, var(--primary-dark), var(--primary) 58%, #0b86b7);\r\n      border-radius: 28px 28px 0 0;\r\n      position: relative;\r\n      overflow: hidden;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero::before,\r\n#mikrotoni-hearing-test .hero::after {\r\n      content: \"\";\r\n      position: absolute;\r\n      border-radius: 999px;\r\n      background: rgba(255, 255, 255, 0.08);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero::before {\r\n      width: 250px;\r\n      height: 250px;\r\n      right: -75px;\r\n      top: -110px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero::after {\r\n      width: 150px;\r\n      height: 150px;\r\n      right: 120px;\r\n      bottom: -100px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero-content {\r\n      position: relative;\r\n      z-index: 1;\r\n      max-width: 690px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .eyebrow {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding: 7px 12px;\r\n      border: 1px solid rgba(255,255,255,.25);\r\n      background: rgba(255,255,255,.1);\r\n      border-radius: 999px;\r\n      font-size: 0.82rem;\r\n      font-weight: 800;\r\n      letter-spacing: 0.04em;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    #mikrotoni-hearing-test h1,\r\n#mikrotoni-hearing-test h2,\r\n#mikrotoni-hearing-test h3,\r\n#mikrotoni-hearing-test p {\r\n      margin-top: 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero h1 {\r\n      margin: 18px 0 12px;\r\n      font-size: clamp(2rem, 5vw, 3.7rem);\r\n      line-height: 1.04;\r\n      letter-spacing: -0.045em;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .hero p {\r\n      max-width: 620px;\r\n      margin-bottom: 0;\r\n      color: rgba(255, 255, 255, 0.86);\r\n      font-size: 1.03rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .panel {\r\n      padding: clamp(22px, 4.5vw, 44px);\r\n      background: var(--surface);\r\n      border-radius: 0 0 28px 28px;\r\n      box-shadow: var(--shadow);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .steps {\r\n      display: grid;\r\n      grid-template-columns: repeat(3, 1fr);\r\n      gap: 12px;\r\n      margin-bottom: 34px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .step {\r\n      min-width: 0;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 10px;\r\n      padding: 12px;\r\n      color: var(--muted);\r\n      background: #f7f9fc;\r\n      border: 1px solid var(--line);\r\n      border-radius: 16px;\r\n      font-size: 0.88rem;\r\n      font-weight: 700;\r\n      transition: 0.25s ease;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .step-number {\r\n      flex: 0 0 auto;\r\n      width: 30px;\r\n      height: 30px;\r\n      display: grid;\r\n      place-items: center;\r\n      border-radius: 50%;\r\n      color: var(--muted);\r\n      background: #fff;\r\n      border: 1px solid var(--line);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .step.active {\r\n      color: var(--primary-dark);\r\n      background: var(--primary-light);\r\n      border-color: #9dc8f7;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .step.active .step-number,\r\n#mikrotoni-hearing-test .step.done .step-number {\r\n      color: #fff;\r\n      background: var(--primary);\r\n      border-color: var(--primary);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .step.done {\r\n      color: var(--success);\r\n      background: #effaf6;\r\n      border-color: #b9e7d5;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .screen {\r\n      display: none;\r\n      animation: reveal 0.35s ease;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .screen.active {\r\n      display: block;\r\n    }\r\n\r\n    @keyframes reveal {\r\n      from { opacity: 0; transform: translateY(8px); }\r\n      to { opacity: 1; transform: translateY(0); }\r\n    }\r\n\r\n    #mikrotoni-hearing-test .section-heading {\r\n      margin-bottom: 24px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .section-heading h2 {\r\n      margin-bottom: 8px;\r\n      font-size: clamp(1.55rem, 3vw, 2.15rem);\r\n      line-height: 1.2;\r\n      letter-spacing: -0.025em;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .section-heading p {\r\n      margin-bottom: 0;\r\n      color: var(--muted);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .question-list {\r\n      display: grid;\r\n      gap: 15px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .question-card {\r\n      padding: 18px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 18px;\r\n      background: #fff;\r\n      transition: border-color 0.2s ease, box-shadow 0.2s ease;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .question-card:focus-within {\r\n      border-color: #7bb5f2;\r\n      box-shadow: 0 0 0 4px rgba(7, 89, 184, 0.08);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .question-card.invalid {\r\n      border-color: #ef9aa4;\r\n      background: #fff8f8;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .question-title {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 12px;\r\n      margin-bottom: 14px;\r\n      font-weight: 780;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .question-index {\r\n      flex: 0 0 auto;\r\n      width: 30px;\r\n      height: 30px;\r\n      display: grid;\r\n      place-items: center;\r\n      color: var(--primary);\r\n      background: var(--primary-light);\r\n      border-radius: 9px;\r\n      font-size: 0.84rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .choices {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 10px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .choice {\r\n      position: relative;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .choice input {\r\n      position: absolute;\r\n      opacity: 0;\r\n      pointer-events: none;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .choice label {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      min-height: 46px;\r\n      padding: 10px 14px;\r\n      color: var(--muted);\r\n      background: #f8fafc;\r\n      border: 1px solid var(--line);\r\n      border-radius: 13px;\r\n      cursor: pointer;\r\n      font-weight: 750;\r\n      transition: 0.2s ease;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .choice input:checked + label {\r\n      color: var(--primary-dark);\r\n      background: var(--primary-light);\r\n      border-color: #70acec;\r\n      box-shadow: inset 0 0 0 1px #70acec;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .choice input:focus-visible + label {\r\n      outline: 3px solid rgba(7, 89, 184, 0.2);\r\n      outline-offset: 2px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .actions {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-end;\r\n      flex-wrap: wrap;\r\n      gap: 12px;\r\n      margin-top: 26px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .btn {\r\n      min-height: 50px;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 9px;\r\n      padding: 12px 20px;\r\n      border: 0;\r\n      border-radius: 14px;\r\n      cursor: pointer;\r\n      font-weight: 850;\r\n      text-decoration: none;\r\n      transition: transform 0.18s ease, box-shadow 0.18s ease, opacity 0.18s ease;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .btn:hover {\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .btn:disabled {\r\n      cursor: not-allowed;\r\n      opacity: 0.5;\r\n      transform: none;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .btn-primary {\r\n      color: #fff;\r\n      background: linear-gradient(135deg, var(--primary), #0c7dc3);\r\n      box-shadow: 0 12px 24px rgba(7, 89, 184, 0.2);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .btn-secondary {\r\n      color: var(--primary-dark);\r\n      background: var(--primary-light);\r\n      border: 1px solid #b7d6f6;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .btn-ghost {\r\n      color: var(--muted);\r\n      background: #fff;\r\n      border: 1px solid var(--line);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .error-message {\r\n      display: none;\r\n      margin-top: 14px;\r\n      padding: 12px 14px;\r\n      color: #9d2633;\r\n      background: #fff1f2;\r\n      border: 1px solid #ffd0d5;\r\n      border-radius: 12px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .error-message.show {\r\n      display: block;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .instruction-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(3, 1fr);\r\n      gap: 14px;\r\n      margin: 24px 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .instruction-card {\r\n      padding: 20px;\r\n      text-align: center;\r\n      background: #f8fbfe;\r\n      border: 1px solid var(--line);\r\n      border-radius: 18px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .instruction-icon {\r\n      width: 52px;\r\n      height: 52px;\r\n      margin: 0 auto 13px;\r\n      display: grid;\r\n      place-items: center;\r\n      color: var(--primary);\r\n      background: var(--primary-light);\r\n      border-radius: 16px;\r\n      font-size: 1.5rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .instruction-card h3 {\r\n      margin-bottom: 6px;\r\n      font-size: 1rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .instruction-card p {\r\n      margin-bottom: 0;\r\n      color: var(--muted);\r\n      font-size: 0.9rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .notice {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 12px;\r\n      padding: 16px;\r\n      border-radius: 16px;\r\n      margin: 18px 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .notice.info {\r\n      color: #154a79;\r\n      background: #edf6ff;\r\n      border: 1px solid #c8e2fb;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .notice.warning {\r\n      color: #7b4a00;\r\n      background: #fff8e9;\r\n      border: 1px solid #f4d99d;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .notice.danger {\r\n      color: #8d2732;\r\n      background: #fff2f3;\r\n      border: 1px solid #f2c5cb;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .notice strong {\r\n      display: block;\r\n      margin-bottom: 3px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .checklist {\r\n      display: grid;\r\n      gap: 10px;\r\n      margin-top: 22px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .check-item {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 11px;\r\n      padding: 13px 14px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 13px;\r\n      cursor: pointer;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .check-item input {\r\n      width: 19px;\r\n      height: 19px;\r\n      margin-top: 2px;\r\n      accent-color: var(--primary);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .test-wrap {\r\n      text-align: center;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .test-progress-line {\r\n      height: 9px;\r\n      margin-bottom: 24px;\r\n      overflow: hidden;\r\n      background: #e8eef5;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .test-progress-fill {\r\n      width: 0%;\r\n      height: 100%;\r\n      background: linear-gradient(90deg, var(--accent), var(--primary));\r\n      border-radius: inherit;\r\n      transition: width 0.35s ease;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .test-meta {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      gap: 15px;\r\n      margin-bottom: 20px;\r\n      color: var(--muted);\r\n      font-size: 0.9rem;\r\n      font-weight: 750;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .ear-badge {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 9px;\r\n      padding: 9px 14px;\r\n      margin-bottom: 18px;\r\n      color: var(--primary-dark);\r\n      background: var(--primary-light);\r\n      border: 1px solid #b7d6f6;\r\n      border-radius: 999px;\r\n      font-weight: 850;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .tone-stage {\r\n      min-height: 320px;\r\n      display: flex;\r\n      flex-direction: column;\r\n      align-items: center;\r\n      justify-content: center;\r\n      padding: 28px;\r\n      background: linear-gradient(180deg, #fafdff, #f1f7fc);\r\n      border: 1px solid var(--line);\r\n      border-radius: 24px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .frequency {\r\n      margin-bottom: 8px;\r\n      font-size: clamp(2.2rem, 7vw, 4.7rem);\r\n      line-height: 1;\r\n      letter-spacing: -0.055em;\r\n      color: var(--primary-dark);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .frequency-label {\r\n      margin-bottom: 22px;\r\n      color: var(--muted);\r\n      font-weight: 720;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .sound-visualizer {\r\n      height: 52px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 5px;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .sound-visualizer span {\r\n      width: 5px;\r\n      height: 10px;\r\n      background: #a5c9ee;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .sound-visualizer.playing span {\r\n      animation: wave 0.7s ease-in-out infinite alternate;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .sound-visualizer span:nth-child(2) { animation-delay: 0.1s; }\r\n    #mikrotoni-hearing-test .sound-visualizer span:nth-child(3) { animation-delay: 0.2s; }\r\n    #mikrotoni-hearing-test .sound-visualizer span:nth-child(4) { animation-delay: 0.3s; }\r\n    #mikrotoni-hearing-test .sound-visualizer span:nth-child(5) { animation-delay: 0.4s; }\r\n    #mikrotoni-hearing-test .sound-visualizer span:nth-child(6) { animation-delay: 0.2s; }\r\n    #mikrotoni-hearing-test .sound-visualizer span:nth-child(7) { animation-delay: 0.1s; }\r\n\r\n    @keyframes wave {\r\n      to { height: 44px; background: var(--primary); }\r\n    }\r\n\r\n    #mikrotoni-hearing-test .play-tone {\r\n      min-width: 210px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .response-area {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 12px;\r\n      width: min(520px, 100%);\r\n      margin: 22px auto 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .heard-btn {\r\n      color: #fff;\r\n      background: var(--success);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .not-heard-btn {\r\n      color: #8b2934;\r\n      background: #fff1f2;\r\n      border: 1px solid #efbcc3;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .test-status {\r\n      min-height: 25px;\r\n      margin: 18px 0 0;\r\n      color: var(--muted);\r\n      font-weight: 700;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .results-grid {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 16px;\r\n      margin: 22px 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .result-card {\r\n      padding: 20px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 18px;\r\n      background: #fbfdff;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .result-card h3 {\r\n      margin-bottom: 8px;\r\n      font-size: 1rem;\r\n      color: var(--muted);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .result-value {\r\n      margin-bottom: 7px;\r\n      color: var(--primary-dark);\r\n      font-size: 1.75rem;\r\n      font-weight: 900;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .result-card p {\r\n      margin-bottom: 0;\r\n      color: var(--muted);\r\n      font-size: 0.92rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .ear-results {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 16px;\r\n      margin: 20px 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .ear-result {\r\n      padding: 18px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 18px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .ear-result h3 {\r\n      margin-bottom: 14px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .frequency-result {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 10px;\r\n      padding: 10px 0;\r\n      border-bottom: 1px dashed var(--line);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .frequency-result:last-child {\r\n      border-bottom: 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .status-chip {\r\n      padding: 5px 9px;\r\n      border-radius: 999px;\r\n      font-size: 0.78rem;\r\n      font-weight: 850;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .status-chip.ok {\r\n      color: #0f6b4b;\r\n      background: #e7f7f0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .status-chip.miss {\r\n      color: #9a2c38;\r\n      background: #ffedef;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .final-message {\r\n      padding: 20px;\r\n      border-radius: 18px;\r\n      border: 1px solid;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .final-message.good {\r\n      color: #105e45;\r\n      background: #eefaf5;\r\n      border-color: #bae5d4;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .final-message.review {\r\n      color: #765000;\r\n      background: #fff8e9;\r\n      border-color: #efd69f;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .final-message.priority {\r\n      color: #8b2934;\r\n      background: #fff1f2;\r\n      border-color: #efbcc3;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .final-message h3 {\r\n      margin-bottom: 8px;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .final-message p {\r\n      margin-bottom: 0;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .disclaimer {\r\n      margin-top: 28px;\r\n      padding-top: 20px;\r\n      border-top: 1px solid var(--line);\r\n      color: var(--muted);\r\n      font-size: 0.86rem;\r\n    }\r\n\r\n    #mikrotoni-hearing-test .disclaimer strong {\r\n      color: var(--ink);\r\n    }\r\n\r\n    #mikrotoni-hearing-test .footer-note {\r\n      width: min(960px, calc(100% - 32px));\r\n      margin: -28px auto 30px;\r\n      color: var(--muted);\r\n      text-align: center;\r\n      font-size: 0.82rem;\r\n    }\r\n\r\n    @media (max-width: 720px) {\r\n      #mikrotoni-hearing-test .site-header {\r\n        align-items: flex-start;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .privacy-note {\r\n        max-width: 145px;\r\n        text-align: right;\r\n        font-size: 0.78rem;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .steps {\r\n        grid-template-columns: 1fr;\r\n        gap: 8px;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .step {\r\n        padding: 9px 11px;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .instruction-grid,\r\n#mikrotoni-hearing-test .results-grid,\r\n#mikrotoni-hearing-test .ear-results {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .instruction-card {\r\n        text-align: left;\r\n        display: grid;\r\n        grid-template-columns: auto 1fr;\r\n        column-gap: 13px;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .instruction-icon {\r\n        grid-row: span 2;\r\n        margin: 0;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .instruction-card h3,\r\n#mikrotoni-hearing-test .instruction-card p {\r\n        margin: 0;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .response-area {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .actions .btn {\r\n        flex: 1 1 100%;\r\n      }\r\n    }\r\n\r\n    @media print {\r\n      #mikrotoni-hearing-test {\r\n        background: #fff;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .site-header,\r\n#mikrotoni-hearing-test .hero,\r\n#mikrotoni-hearing-test .steps,\r\n#mikrotoni-hearing-test .actions,\r\n#mikrotoni-hearing-test .footer-note,\r\n#mikrotoni-hearing-test .disclaimer .no-print {\r\n        display: none !important;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .app-shell {\r\n        width: 100%;\r\n        margin: 0;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .panel {\r\n        padding: 0;\r\n        box-shadow: none;\r\n      }\r\n\r\n      #mikrotoni-hearing-test .screen {\r\n        display: none !important;\r\n      }\r\n\r\n      #mikrotoni-hearing-test #resultsScreen {\r\n        display: block !important;\r\n      }\r\n    }\r\n  \r\n\r\n#mikrotoni-hearing-test .hero-privacy {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 7px;\r\n  margin-top: 18px;\r\n  padding: 8px 12px;\r\n  color: rgba(255,255,255,.9);\r\n  background: rgba(255,255,255,.1);\r\n  border: 1px solid rgba(255,255,255,.18);\r\n  border-radius: 999px;\r\n  font-size: .84rem;\r\n  font-weight: 700;\r\n}\r\n#mikrotoni-hearing-test .app-shell { isolation: isolate; }\r\n<\/style>\r\n\r\n<div id=\"mikrotoni-hearing-test\">\r\n  <div class=\"app-shell\">\r\n    <section class=\"hero\">\r\n      <div class=\"hero-content\">\r\n        <span class=\"eyebrow\">MIKROTONI \u2022 Kontroll orientues \u2022 5\u20137 minuta<\/span>\r\n        <h1>Testi Online i D\u00ebgjimit Mikrotoni<\/h1>\r\n        <p>\r\n          P\u00ebrgjigjuni disa pyetjeve t\u00eb shkurtra dhe kontrolloni d\u00ebgjimin me tone t\u00eb ndryshme p\u00ebr secilin vesh. Rezultati \u00ebsht\u00eb orientues dhe nuk z\u00ebvend\u00ebson audiometrin\u00eb profesionale.\r\n        <\/p>\r\n        <div class=\"hero-privacy\" aria-label=\"Privat\u00ebsia\">\ud83d\udd12 P\u00ebrgjigjet dhe rezultatet nuk ruhen.<\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"panel\">\r\n      <nav class=\"steps\" aria-label=\"Hapat e testit\">\r\n        <div class=\"step active\" data-step=\"1\">\r\n          <span class=\"step-number\">1<\/span>\r\n          <span>Pyet\u00ebsori<\/span>\r\n        <\/div>\r\n        <div class=\"step\" data-step=\"2\">\r\n          <span class=\"step-number\">2<\/span>\r\n          <span>Testi me tone<\/span>\r\n        <\/div>\r\n        <div class=\"step\" data-step=\"3\">\r\n          <span class=\"step-number\">3<\/span>\r\n          <span>Rezultati<\/span>\r\n        <\/div>\r\n      <\/nav>\r\n\r\n      <section id=\"questionnaireScreen\" class=\"screen active\">\r\n        <div class=\"section-heading\">\r\n          <h2>Si e p\u00ebrjetoni d\u00ebgjimin n\u00eb p\u00ebrditshm\u00ebri?<\/h2>\r\n          <p>Zgjidhni nj\u00eb p\u00ebrgjigje p\u00ebr \u00e7do pyetje. Nuk ka p\u00ebrgjigje t\u00eb gabuara.<\/p>\r\n        <\/div>\r\n\r\n        <form id=\"questionnaireForm\" novalidate action=\"\">\r\n          <div id=\"questionList\" class=\"question-list\"><\/div>\r\n          <div id=\"questionError\" class=\"error-message\" role=\"alert\">\r\n            Ju lutemi p\u00ebrgjigjuni t\u00eb gjitha pyetjeve p\u00ebrpara se t\u00eb vazhdoni.\r\n          <\/div>\r\n          <div class=\"actions\">\r\n            <button class=\"btn btn-primary\" type=\"submit\">\r\n              Vazhdo te p\u00ebrgatitja <span aria-hidden=\"true\">\u2192<\/span>\r\n            <\/button>\r\n          <\/div>\r\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"mk\"\/><\/form>\r\n      <\/section>\r\n\r\n      <section id=\"preparationScreen\" class=\"screen\">\r\n        <div class=\"section-heading\">\r\n          <h2>P\u00ebrgatituni p\u00ebr testin me tone<\/h2>\r\n          <p>P\u00ebr nj\u00eb rezultat sa m\u00eb t\u00eb q\u00ebndruesh\u00ebm, ndiqni k\u00ebto hapa.<\/p>\r\n        <\/div>\r\n\r\n        <div class=\"instruction-grid\">\r\n          <article class=\"instruction-card\">\r\n            <div class=\"instruction-icon\" aria-hidden=\"true\">\ud83c\udfa7<\/div>\r\n            <h3>Vendosni kufjet<\/h3>\r\n            <p>Sigurohuni q\u00eb kanali majtas dhe djathtas jan\u00eb vendosur sakt\u00eb.<\/p>\r\n          <\/article>\r\n          <article class=\"instruction-card\">\r\n            <div class=\"instruction-icon\" aria-hidden=\"true\">\ud83d\udd07<\/div>\r\n            <h3>Zgjidhni qet\u00ebsin\u00eb<\/h3>\r\n            <p>Mbyllni muzik\u00ebn, televizorin dhe shmangni zhurm\u00ebn p\u00ebrreth.<\/p>\r\n          <\/article>\r\n          <article class=\"instruction-card\">\r\n            <div class=\"instruction-icon\" aria-hidden=\"true\">\ud83d\udd09<\/div>\r\n            <h3>Volum i moderuar<\/h3>\r\n            <p>Vendoseni volumin e pajisjes rreth 40\u201350% dhe mos e rrisni gjat\u00eb testit.<\/p>\r\n          <\/article>\r\n        <\/div>\r\n\r\n        <div class=\"notice warning\">\r\n          <span aria-hidden=\"true\">\u26a0\ufe0f<\/span>\r\n          <div>\r\n            <strong>Siguria e d\u00ebgjimit<\/strong>\r\n            Ndaloni menj\u00ebher\u00eb n\u00ebse nj\u00eb tingull ju duket i fort\u00eb ose i pak\u00ebndsh\u00ebm. Ky test nuk \u00ebsht\u00eb audiometri klinike dhe nuk mat dB HL.\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"urgentNotice\" class=\"notice danger\" hidden>\r\n          <span aria-hidden=\"true\">!<\/span>\r\n          <div>\r\n            <strong>Ndryshim i papritur i d\u00ebgjimit<\/strong>\r\n            P\u00ebrgjigjja juaj tregon nj\u00eb ndryshim t\u00eb papritur. Mos u mb\u00ebshtetni te testi online; k\u00ebrkoni vler\u00ebsim t\u00eb menj\u00ebhersh\u00ebm mjek\u00ebsor\/ORL.\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"checklist\">\r\n          <label class=\"check-item\">\r\n            <input id=\"headphonesCheck\" type=\"checkbox\" \/>\r\n            <span>Kam vendosur kufjet dhe dalloj an\u00ebn e majt\u00eb nga ajo e djatht\u00eb.<\/span>\r\n          <\/label>\r\n          <label class=\"check-item\">\r\n            <input id=\"quietCheck\" type=\"checkbox\" \/>\r\n            <span>Jam n\u00eb nj\u00eb ambient t\u00eb qet\u00eb dhe volumi \u00ebsht\u00eb n\u00eb nivel t\u00eb moderuar.<\/span>\r\n          <\/label>\r\n        <\/div>\r\n\r\n        <div class=\"actions\">\r\n          <button id=\"backToQuestions\" class=\"btn btn-ghost\" type=\"button\">\u2190 Kthehu<\/button>\r\n          <button id=\"startToneTest\" class=\"btn btn-primary\" type=\"button\" disabled>\r\n            Fillo testin me tone\r\n          <\/button>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section id=\"toneTestScreen\" class=\"screen\">\r\n        <div class=\"test-wrap\">\r\n          <div class=\"test-progress-line\" aria-hidden=\"true\">\r\n            <div id=\"testProgressFill\" class=\"test-progress-fill\"><\/div>\r\n          <\/div>\r\n\r\n          <div class=\"test-meta\">\r\n            <span id=\"trialCounter\">Toni 1 nga 10<\/span>\r\n            <span>Mbani volumin t\u00eb pandryshuar<\/span>\r\n          <\/div>\r\n\r\n          <div id=\"earBadge\" class=\"ear-badge\">\ud83d\udc42 Veshi i majt\u00eb<\/div>\r\n\r\n          <div class=\"tone-stage\">\r\n            <div id=\"frequencyValue\" class=\"frequency\">500 Hz<\/div>\r\n            <div class=\"frequency-label\">Klikoni p\u00ebr t\u00eb d\u00ebgjuar tonin<\/div>\r\n\r\n            <div id=\"soundVisualizer\" class=\"sound-visualizer\" aria-hidden=\"true\">\r\n              <span><\/span><span><\/span><span><\/span><span><\/span>\r\n              <span><\/span><span><\/span><span><\/span>\r\n            <\/div>\r\n\r\n            <button id=\"playToneButton\" class=\"btn btn-primary play-tone\" type=\"button\">\r\n              \u25b6 Luaj tonin\r\n            <\/button>\r\n\r\n            <div class=\"response-area\">\r\n              <button id=\"heardButton\" class=\"btn heard-btn\" type=\"button\" disabled>\r\n                \u2713 E d\u00ebgjova\r\n              <\/button>\r\n              <button id=\"notHeardButton\" class=\"btn not-heard-btn\" type=\"button\" disabled>\r\n                Nuk e d\u00ebgjova\r\n              <\/button>\r\n            <\/div>\r\n\r\n            <p id=\"testStatus\" class=\"test-status\" aria-live=\"polite\">\r\n              Pasi t\u00eb luhet toni, zgjidhni p\u00ebrgjigjen tuaj.\r\n            <\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section id=\"resultsScreen\" class=\"screen\">\r\n        <div class=\"section-heading\">\r\n          <h2>Rezultati juaj orientues<\/h2>\r\n          <p>Rezultati kombinon p\u00ebrgjigjet e pyet\u00ebsorit me tonet e d\u00ebgjuara.<\/p>\r\n        <\/div>\r\n\r\n        <div class=\"results-grid\">\r\n          <article class=\"result-card\">\r\n            <h3>Pyet\u00ebsori<\/h3>\r\n            <div id=\"questionnaireResultValue\" class=\"result-value\">0 \/ 8<\/div>\r\n            <p id=\"questionnaireResultText\">P\u00ebrgjigje q\u00eb mund t\u00eb lidhen me v\u00ebshtir\u00ebsi n\u00eb d\u00ebgjim.<\/p>\r\n          <\/article>\r\n          <article class=\"result-card\">\r\n            <h3>Testi me tone<\/h3>\r\n            <div id=\"toneResultValue\" class=\"result-value\">0 \/ 10<\/div>\r\n            <p>Tone q\u00eb nuk u konfirmuan pas p\u00ebrs\u00ebritjes n\u00eb k\u00ebt\u00eb pajisje.<\/p>\r\n          <\/article>\r\n        <\/div>\r\n\r\n        <div class=\"ear-results\">\r\n          <article class=\"ear-result\">\r\n            <h3>\ud83d\udc42 Veshi i majt\u00eb<\/h3>\r\n            <div id=\"leftEarResults\"><\/div>\r\n          <\/article>\r\n          <article class=\"ear-result\">\r\n            <h3>\ud83d\udc42 Veshi i djatht\u00eb<\/h3>\r\n            <div id=\"rightEarResults\"><\/div>\r\n          <\/article>\r\n        <\/div>\r\n\r\n        <div id=\"finalMessage\" class=\"final-message good\">\r\n          <h3>Rezultat orientues<\/h3>\r\n          <p id=\"finalMessageText\"><\/p>\r\n        <\/div>\r\n\r\n        <div class=\"actions\">\r\n          <button id=\"restartTest\" class=\"btn btn-ghost\" type=\"button\">\u21bb P\u00ebrs\u00ebrit testin<\/button>\r\n          <button class=\"btn btn-secondary\" type=\"button\" onclick=\"window.print()\">Printo rezultatin<\/button>\r\n          <a class=\"btn btn-primary\" href=\"https:\/\/mikrotoni.mk\/mk\/\" target=\"_blank\" rel=\"noopener\">\r\n            Rezervo kontroll te Mikrotoni\r\n          <\/a>\r\n        <\/div>\r\n\r\n        <div class=\"disclaimer\">\r\n          <strong>Sh\u00ebnim i r\u00ebnd\u00ebsish\u00ebm:<\/strong>\r\n          Ky \u00ebsht\u00eb vet\u00ebm nj\u00eb kontroll orientues. Pajisjet, kufjet, volumi dhe zhurma e ambientit ndikojn\u00eb n\u00eb rezultat. Vet\u00ebm nj\u00eb vler\u00ebsim profesional mund t\u00eb diagnostikoj\u00eb humbjen e d\u00ebgjimit. N\u00eb rast dhimbjeje, rrjedhjeje nga veshi, marramendjeje ose ndryshimi t\u00eb papritur t\u00eb d\u00ebgjimit, kontaktoni nj\u00eb profesionist sh\u00ebndet\u00ebsor.\r\n        <\/div>\r\n      <\/section>\r\n    <\/section>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(() => {\r\n  \"use strict\";\r\n  const root = document.getElementById(\"mikrotoni-hearing-test\");\r\n  if (!root || root.dataset.testInitialized === \"1\") return;\r\n  root.dataset.testInitialized = \"1\";\r\n\r\n      const questions = [\r\n        \"A e keni t\u00eb v\u00ebshtir\u00eb t\u00eb kuptoni bisedat kur ka zhurm\u00eb p\u00ebrreth?\",\r\n        \"A u k\u00ebrkoni shpesh t\u00eb tjer\u00ebve t\u00eb p\u00ebrs\u00ebrisin at\u00eb q\u00eb than\u00eb?\",\r\n        \"A e ngrini televizorin ose telefonin m\u00eb shum\u00eb se personat e tjer\u00eb?\",\r\n        \"A e keni t\u00eb v\u00ebshtir\u00eb t\u00eb ndiqni nj\u00eb bised\u00eb me disa persona nj\u00ebkoh\u00ebsisht?\",\r\n        \"A ju duket sikur njer\u00ebzit flasin pa qart\u00ebsi ose 'm\u00ebrm\u00ebrisin'?\",\r\n        \"A ju kan\u00eb th\u00ebn\u00eb familjar\u00ebt se mund t\u00eb mos d\u00ebgjoni mir\u00eb?\",\r\n        \"A ju duket se nj\u00ebri vesh d\u00ebgjon m\u00eb dob\u00ebt se tjetri?\",\r\n        \"A keni v\u00ebn\u00eb re nj\u00eb ndryshim t\u00eb papritur t\u00eb d\u00ebgjimit koh\u00ebt e fundit?\"\r\n      ];\r\n\r\n      const frequencies = [500, 1000, 2000, 4000, 6000];\r\n      const ears = [\r\n        { key: \"left\", label: \"Veshi i majt\u00eb\", pan: -1 },\r\n        { key: \"right\", label: \"Veshi i djatht\u00eb\", pan: 1 }\r\n      ];\r\n\r\n      \/\/ Nivele relative, jo dB klinike. Jan\u00eb q\u00ebllimisht t\u00eb kufizuara.\r\n      const relativeLevels = [0.015, 0.03, 0.06];\r\n\r\n      const state = {\r\n        questionnaireScore: 0,\r\n        suddenChange: false,\r\n        earIndex: 0,\r\n        frequencyIndex: 0,\r\n        levelIndex: 0,\r\n        isPlaying: false,\r\n        hasPlayedCurrentTone: false,\r\n        results: {\r\n          left: {},\r\n          right: {}\r\n        }\r\n      };\r\n\r\n      let audioContext = null;\r\n\r\n      const questionList = root.querySelector(\"#questionList\");\r\n      const questionnaireForm = root.querySelector(\"#questionnaireForm\");\r\n      const questionError = root.querySelector(\"#questionError\");\r\n      const urgentNotice = root.querySelector(\"#urgentNotice\");\r\n      const headphonesCheck = root.querySelector(\"#headphonesCheck\");\r\n      const quietCheck = root.querySelector(\"#quietCheck\");\r\n      const startToneTest = root.querySelector(\"#startToneTest\");\r\n      const playToneButton = root.querySelector(\"#playToneButton\");\r\n      const heardButton = root.querySelector(\"#heardButton\");\r\n      const notHeardButton = root.querySelector(\"#notHeardButton\");\r\n      const testStatus = root.querySelector(\"#testStatus\");\r\n      const soundVisualizer = root.querySelector(\"#soundVisualizer\");\r\n\r\n      function renderQuestions() {\r\n        questionList.innerHTML = questions.map((question, index) => `\r\n          <fieldset class=\"question-card\" data-question-card=\"${index}\">\r\n            <legend class=\"question-title\">\r\n              <span class=\"question-index\">${index + 1}<\/span>\r\n              <span>${question}<\/span>\r\n            <\/legend>\r\n            <div class=\"choices\">\r\n              <div class=\"choice\">\r\n                <input id=\"q${index}-no\" type=\"radio\" name=\"q${index}\" value=\"0\" \/>\r\n                <label for=\"q${index}-no\">Jo<\/label>\r\n              <\/div>\r\n              <div class=\"choice\">\r\n                <input id=\"q${index}-yes\" type=\"radio\" name=\"q${index}\" value=\"1\" \/>\r\n                <label for=\"q${index}-yes\">Po<\/label>\r\n              <\/div>\r\n            <\/div>\r\n          <\/fieldset>\r\n        `).join(\"\");\r\n      }\r\n\r\n      function showScreen(screenId, stepNumber) {\r\n        root.querySelectorAll(\".screen\").forEach(screen => {\r\n          screen.classList.toggle(\"active\", screen.id === screenId);\r\n        });\r\n\r\n        root.querySelectorAll(\".step\").forEach(step => {\r\n          const number = Number(step.dataset.step);\r\n          step.classList.toggle(\"active\", number === stepNumber);\r\n          step.classList.toggle(\"done\", number < stepNumber);\r\n        });\r\n\r\n        root.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n      }\r\n\r\n      function validateQuestionnaire() {\r\n        let valid = true;\r\n        let score = 0;\r\n\r\n        questions.forEach((_, index) => {\r\n          const selected = questionnaireForm.querySelector(`input[name=\"q${index}\"]:checked`);\r\n          const card = questionnaireForm.querySelector(`[data-question-card=\"${index}\"]`);\r\n          const missing = !selected;\r\n\r\n          card.classList.toggle(\"invalid\", missing);\r\n          if (missing) {\r\n            valid = false;\r\n          } else {\r\n            score += Number(selected.value);\r\n          }\r\n        });\r\n\r\n        state.questionnaireScore = score;\r\n        const suddenAnswer = questionnaireForm.querySelector('input[name=\"q7\"]:checked');\r\n        state.suddenChange = suddenAnswer?.value === \"1\";\r\n        questionError.classList.toggle(\"show\", !valid);\r\n\r\n        if (!valid) {\r\n          questionnaireForm.querySelector(\".question-card.invalid\")?.scrollIntoView({\r\n            behavior: \"smooth\",\r\n            block: \"center\"\r\n          });\r\n        }\r\n\r\n        return valid;\r\n      }\r\n\r\n      questionnaireForm.addEventListener(\"submit\", event => {\r\n        event.preventDefault();\r\n        if (!validateQuestionnaire()) return;\r\n\r\n        urgentNotice.hidden = !state.suddenChange;\r\n        showScreen(\"preparationScreen\", 2);\r\n      });\r\n\r\n      root.querySelector(\"#backToQuestions\").addEventListener(\"click\", () => {\r\n        showScreen(\"questionnaireScreen\", 1);\r\n      });\r\n\r\n      function updateStartButton() {\r\n        startToneTest.disabled = !(headphonesCheck.checked && quietCheck.checked);\r\n      }\r\n\r\n      headphonesCheck.addEventListener(\"change\", updateStartButton);\r\n      quietCheck.addEventListener(\"change\", updateStartButton);\r\n\r\n      startToneTest.addEventListener(\"click\", async () => {\r\n        try {\r\n          const AudioContextClass = window.AudioContext || window.webkitAudioContext;\r\n          if (!AudioContextClass) {\r\n            alert(\"Shfletuesi juaj nuk e mb\u00ebshtet Web Audio API. Provoni nj\u00eb version t\u00eb p\u00ebrdit\u00ebsuar t\u00eb Chrome, Edge, Firefox ose Safari.\");\r\n            return;\r\n          }\r\n\r\n          audioContext = audioContext || new AudioContextClass();\r\n          if (audioContext.state === \"suspended\") {\r\n            await audioContext.resume();\r\n          }\r\n\r\n          resetToneState();\r\n          showScreen(\"toneTestScreen\", 2);\r\n          updateToneUI();\r\n        } catch (error) {\r\n          console.error(error);\r\n          alert(\"Nuk mund t\u00eb aktivizohej audio. Kontrolloni lejet e shfletuesit dhe provoni p\u00ebrs\u00ebri.\");\r\n        }\r\n      });\r\n\r\n      function resetToneState() {\r\n        state.earIndex = 0;\r\n        state.frequencyIndex = 0;\r\n        state.levelIndex = 0;\r\n        state.isPlaying = false;\r\n        state.hasPlayedCurrentTone = false;\r\n        state.results = { left: {}, right: {} };\r\n      }\r\n\r\n      function getCurrentEar() {\r\n        return ears[state.earIndex];\r\n      }\r\n\r\n      function getCurrentFrequency() {\r\n        return frequencies[state.frequencyIndex];\r\n      }\r\n\r\n      function updateToneUI() {\r\n        const totalTrials = ears.length * frequencies.length;\r\n        const completedTrials = (state.earIndex * frequencies.length) + state.frequencyIndex;\r\n        const currentTrial = Math.min(completedTrials + 1, totalTrials);\r\n        const progress = (completedTrials \/ totalTrials) * 100;\r\n        const ear = getCurrentEar();\r\n        const frequency = getCurrentFrequency();\r\n\r\n        root.querySelector(\"#testProgressFill\").style.width = `${progress}%`;\r\n        root.querySelector(\"#trialCounter\").textContent = `Toni ${currentTrial} nga ${totalTrials}`;\r\n        root.querySelector(\"#earBadge\").textContent = `\ud83d\udc42 ${ear.label}`;\r\n        root.querySelector(\"#frequencyValue\").textContent = `${frequency} Hz`;\r\n\r\n        playToneButton.disabled = false;\r\n        playToneButton.innerHTML = state.levelIndex === 0 ? \"\u25b6 Luaj tonin\" : \"\u25b6 Luaj tonin p\u00ebrs\u00ebri\";\r\n        heardButton.disabled = true;\r\n        notHeardButton.disabled = true;\r\n        state.hasPlayedCurrentTone = false;\r\n\r\n        testStatus.textContent = state.levelIndex === 0\r\n          ? \"Pasi t\u00eb luhet toni, zgjidhni p\u00ebrgjigjen tuaj.\"\r\n          : \"Toni do t\u00eb p\u00ebrs\u00ebritet n\u00eb nj\u00eb nivel relativ pak m\u00eb t\u00eb lart\u00eb.\";\r\n      }\r\n\r\n      playToneButton.addEventListener(\"click\", playCurrentTone);\r\n\r\n      async function playCurrentTone() {\r\n        if (state.isPlaying || !audioContext) return;\r\n\r\n        try {\r\n          if (audioContext.state === \"suspended\") {\r\n            await audioContext.resume();\r\n          }\r\n\r\n          state.isPlaying = true;\r\n          state.hasPlayedCurrentTone = false;\r\n          playToneButton.disabled = true;\r\n          heardButton.disabled = true;\r\n          notHeardButton.disabled = true;\r\n          soundVisualizer.classList.add(\"playing\");\r\n          testStatus.textContent = \"D\u00ebgjoni me v\u00ebmendje\u2026\";\r\n\r\n          const oscillator = audioContext.createOscillator();\r\n          const gainNode = audioContext.createGain();\r\n          const panner = audioContext.createStereoPanner();\r\n\r\n          const now = audioContext.currentTime;\r\n          const duration = 1.15;\r\n          const amplitude = relativeLevels[state.levelIndex];\r\n\r\n          oscillator.type = \"sine\";\r\n          oscillator.frequency.setValueAtTime(getCurrentFrequency(), now);\r\n          panner.pan.setValueAtTime(getCurrentEar().pan, now);\r\n\r\n          gainNode.gain.setValueAtTime(0.0001, now);\r\n          gainNode.gain.exponentialRampToValueAtTime(amplitude, now + 0.08);\r\n          gainNode.gain.setValueAtTime(amplitude, now + duration - 0.12);\r\n          gainNode.gain.exponentialRampToValueAtTime(0.0001, now + duration);\r\n\r\n          oscillator.connect(gainNode);\r\n          gainNode.connect(panner);\r\n          panner.connect(audioContext.destination);\r\n\r\n          oscillator.start(now);\r\n          oscillator.stop(now + duration + 0.02);\r\n\r\n          oscillator.onended = () => {\r\n            oscillator.disconnect();\r\n            gainNode.disconnect();\r\n            panner.disconnect();\r\n\r\n            state.isPlaying = false;\r\n            state.hasPlayedCurrentTone = true;\r\n            soundVisualizer.classList.remove(\"playing\");\r\n            playToneButton.disabled = false;\r\n            heardButton.disabled = false;\r\n            notHeardButton.disabled = false;\r\n            testStatus.textContent = \"A e d\u00ebgjuat tonin?\";\r\n          };\r\n        } catch (error) {\r\n          console.error(error);\r\n          state.isPlaying = false;\r\n          soundVisualizer.classList.remove(\"playing\");\r\n          playToneButton.disabled = false;\r\n          testStatus.textContent = \"Audio nuk u luajt. Provoni p\u00ebrs\u00ebri.\";\r\n        }\r\n      }\r\n\r\n      heardButton.addEventListener(\"click\", () => {\r\n        if (!state.hasPlayedCurrentTone || state.isPlaying) return;\r\n\r\n        const ear = getCurrentEar().key;\r\n        const frequency = getCurrentFrequency();\r\n        state.results[ear][frequency] = {\r\n          heard: true,\r\n          relativeLevel: state.levelIndex\r\n        };\r\n\r\n        advanceTrial();\r\n      });\r\n\r\n      notHeardButton.addEventListener(\"click\", () => {\r\n        if (!state.hasPlayedCurrentTone || state.isPlaying) return;\r\n\r\n        if (state.levelIndex < relativeLevels.length - 1) {\r\n          state.levelIndex += 1;\r\n          updateToneUI();\r\n          return;\r\n        }\r\n\r\n        const ear = getCurrentEar().key;\r\n        const frequency = getCurrentFrequency();\r\n        state.results[ear][frequency] = {\r\n          heard: false,\r\n          relativeLevel: state.levelIndex\r\n        };\r\n\r\n        advanceTrial();\r\n      });\r\n\r\n      function advanceTrial() {\r\n        state.levelIndex = 0;\r\n        state.frequencyIndex += 1;\r\n\r\n        if (state.frequencyIndex >= frequencies.length) {\r\n          state.frequencyIndex = 0;\r\n          state.earIndex += 1;\r\n        }\r\n\r\n        if (state.earIndex >= ears.length) {\r\n          root.querySelector(\"#testProgressFill\").style.width = \"100%\";\r\n          renderResults();\r\n          showScreen(\"resultsScreen\", 3);\r\n          return;\r\n        }\r\n\r\n        updateToneUI();\r\n      }\r\n\r\n      function countMissedTones() {\r\n        return ears.reduce((total, ear) => {\r\n          return total + frequencies.filter(freq => state.results[ear.key][freq]?.heard === false).length;\r\n        }, 0);\r\n      }\r\n\r\n      function renderEarResults(earKey, containerId) {\r\n        const container = root.querySelector(\"#\" + containerId);\r\n        container.innerHTML = frequencies.map(freq => {\r\n          const result = state.results[earKey][freq];\r\n          const heard = result?.heard === true;\r\n          return `\r\n            <div class=\"frequency-result\">\r\n              <strong>${freq} Hz<\/strong>\r\n              <span class=\"status-chip ${heard ? \"ok\" : \"miss\"}\">\r\n                ${heard ? \"D\u00ebgjuar\" : \"Pa konfirmim\"}\r\n              <\/span>\r\n            <\/div>\r\n          `;\r\n        }).join(\"\");\r\n      }\r\n\r\n      function renderResults() {\r\n        const missed = countMissedTones();\r\n        const questionnaireScore = state.questionnaireScore;\r\n\r\n        root.querySelector(\"#questionnaireResultValue\").textContent = `${questionnaireScore} \/ ${questions.length}`;\r\n        root.querySelector(\"#toneResultValue\").textContent = `${missed} \/ ${ears.length * frequencies.length}`;\r\n\r\n        const questionnaireText = questionnaireScore === 0\r\n          ? \"Nuk u raportuan v\u00ebshtir\u00ebsi n\u00eb pyet\u00ebsor.\"\r\n          : questionnaireScore === 1\r\n            ? \"U raportua 1 situat\u00eb q\u00eb mund t\u00eb lidhet me d\u00ebgjimin.\"\r\n            : `U raportuan ${questionnaireScore} situata q\u00eb mund t\u00eb lidhen me d\u00ebgjimin.`;\r\n\r\n        root.querySelector(\"#questionnaireResultText\").textContent = questionnaireText;\r\n\r\n        renderEarResults(\"left\", \"leftEarResults\");\r\n        renderEarResults(\"right\", \"rightEarResults\");\r\n\r\n        const messageBox = root.querySelector(\"#finalMessage\");\r\n        const messageText = root.querySelector(\"#finalMessageText\");\r\n        messageBox.className = \"final-message\";\r\n\r\n        if (state.suddenChange) {\r\n          messageBox.classList.add(\"priority\");\r\n          messageBox.querySelector(\"h3\").textContent = \"K\u00ebrkohet vler\u00ebsim i menj\u00ebhersh\u00ebm\";\r\n          messageText.textContent = \"Meq\u00eb keni raportuar ndryshim t\u00eb papritur t\u00eb d\u00ebgjimit, mos prisni rezultatin e nj\u00eb testi online. Kontaktoni menj\u00ebher\u00eb nj\u00eb mjek ose specialist ORL.\";\r\n        } else if (missed >= 3 || questionnaireScore >= 4) {\r\n          messageBox.classList.add(\"priority\");\r\n          messageBox.querySelector(\"h3\").textContent = \"Rekomandohet nj\u00eb kontroll profesional\";\r\n          messageText.textContent = \"Rezultati orientues tregon disa v\u00ebshtir\u00ebsi t\u00eb mundshme. Nj\u00eb audiometri profesionale mund t\u00eb p\u00ebrcaktoj\u00eb me sakt\u00ebsi d\u00ebgjimin n\u00eb secilin vesh.\";\r\n        } else if (missed >= 1 || questionnaireScore >= 2) {\r\n          messageBox.classList.add(\"review\");\r\n          messageBox.querySelector(\"h3\").textContent = \"Ia vlen nj\u00eb verifikim profesional\";\r\n          messageText.textContent = \"U vun\u00eb re disa tregues orientues. P\u00ebrs\u00ebriteni testin n\u00eb qet\u00ebsi dhe konsideroni nj\u00eb kontroll t\u00eb plot\u00eb n\u00ebse v\u00ebshtir\u00ebsit\u00eb vazhdojn\u00eb.\";\r\n        } else {\r\n          messageBox.classList.add(\"good\");\r\n          messageBox.querySelector(\"h3\").textContent = \"Nuk u vun\u00eb re v\u00ebshtir\u00ebsi t\u00eb dukshme\";\r\n          messageText.textContent = \"N\u00eb k\u00ebt\u00eb kontroll orientues i konfirmuat tonet dhe raportuat pak ose aspak v\u00ebshtir\u00ebsi. Vazhdoni ta monitoroni d\u00ebgjimin, sidomos n\u00ebse vini re ndryshime.\";\r\n        }\r\n      }\r\n\r\n      root.querySelector(\"#restartTest\").addEventListener(\"click\", () => {\r\n        questionnaireForm.reset();\r\n        headphonesCheck.checked = false;\r\n        quietCheck.checked = false;\r\n        updateStartButton();\r\n        questionError.classList.remove(\"show\");\r\n        root.querySelectorAll(\".question-card.invalid\").forEach(card => card.classList.remove(\"invalid\"));\r\n\r\n        state.questionnaireScore = 0;\r\n        state.suddenChange = false;\r\n        resetToneState();\r\n        showScreen(\"questionnaireScreen\", 1);\r\n      });\r\n\r\n      renderQuestions();\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>TEST DEGJIMI ONLINE MIKROTONI \u2022 Kontroll orientues \u2022 5\u20137 minuta Testi Online i D\u00ebgjimit Mikrotoni P\u00ebrgjigjuni disa pyetjeve t\u00eb shkurtra dhe kontrolloni [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-383","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.8 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>TEST Online - Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi<\/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:\/\/mikrotoni.mk\/mk\/test-online\/\" \/>\n<meta property=\"og:locale\" content=\"mk_MK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TEST Online\" \/>\n<meta property=\"og:description\" content=\"TEST DEGJIMI ONLINE MIKROTONI \u2022 Kontroll orientues \u2022 5\u20137 minuta Testi Online i D\u00ebgjimit Mikrotoni P\u00ebrgjigjuni disa pyetjeve t\u00eb shkurtra dhe kontrolloni [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mikrotoni.mk\/mk\/test-online\/\" \/>\n<meta property=\"og:site_name\" content=\"Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-23T14:02:55+00:00\" \/>\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=\"15 \u043c\u0438\u043d\u0443\u0442\u0438\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mikrotoni.mk\\\/test-online\\\/\",\"url\":\"https:\\\/\\\/mikrotoni.mk\\\/test-online\\\/\",\"name\":\"TEST Online - Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mikrotoni.mk\\\/#website\"},\"datePublished\":\"2026-06-23T13:46:14+00:00\",\"dateModified\":\"2026-06-23T14:02:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mikrotoni.mk\\\/test-online\\\/#breadcrumb\"},\"inLanguage\":\"mk-MK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mikrotoni.mk\\\/test-online\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mikrotoni.mk\\\/test-online\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mikrotoni.mk\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TEST Online\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mikrotoni.mk\\\/#website\",\"url\":\"https:\\\/\\\/mikrotoni.mk\\\/\",\"name\":\"Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi\",\"description\":\"Mikrotoni\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mikrotoni.mk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"mk-MK\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TEST Online - Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi","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:\/\/mikrotoni.mk\/mk\/test-online\/","og_locale":"mk_MK","og_type":"article","og_title":"TEST Online","og_description":"TEST DEGJIMI ONLINE MIKROTONI \u2022 Kontroll orientues \u2022 5\u20137 minuta Testi Online i D\u00ebgjimit Mikrotoni P\u00ebrgjigjuni disa pyetjeve t\u00eb shkurtra dhe kontrolloni [&hellip;]","og_url":"https:\/\/mikrotoni.mk\/mk\/test-online\/","og_site_name":"Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi","article_modified_time":"2026-06-23T14:02:55+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"15 \u043c\u0438\u043d\u0443\u0442\u0438"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mikrotoni.mk\/test-online\/","url":"https:\/\/mikrotoni.mk\/test-online\/","name":"TEST Online - Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi","isPartOf":{"@id":"https:\/\/mikrotoni.mk\/#website"},"datePublished":"2026-06-23T13:46:14+00:00","dateModified":"2026-06-23T14:02:55+00:00","breadcrumb":{"@id":"https:\/\/mikrotoni.mk\/test-online\/#breadcrumb"},"inLanguage":"mk-MK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mikrotoni.mk\/test-online\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/mikrotoni.mk\/test-online\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mikrotoni.mk\/"},{"@type":"ListItem","position":2,"name":"TEST Online"}]},{"@type":"WebSite","@id":"https:\/\/mikrotoni.mk\/#website","url":"https:\/\/mikrotoni.mk\/","name":"Mikrotoni | Partner i Beltone ne Maqedoni | Aparate Degjimi","description":"Mikrotoni","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mikrotoni.mk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"mk-MK"}]}},"_links":{"self":[{"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/pages\/383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/comments?post=383"}],"version-history":[{"count":4,"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/pages\/383\/revisions"}],"predecessor-version":[{"id":389,"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/pages\/383\/revisions\/389"}],"wp:attachment":[{"href":"https:\/\/mikrotoni.mk\/mk\/wp-json\/wp\/v2\/media?parent=383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}