{"id":6,"date":"2026-06-19T19:25:26","date_gmt":"2026-06-19T19:25:26","guid":{"rendered":"https:\/\/akademia-wedzarnika.pl\/?page_id=6"},"modified":"2026-06-19T20:55:00","modified_gmt":"2026-06-19T20:55:00","slug":"akademia-wedzarnika","status":"publish","type":"page","link":"https:\/\/akademia-wedzarnika.pl\/","title":{"rendered":"Panel uczestnika"},"content":{"rendered":"    <style>\n        .aw-app, .aw-app p, .aw-app div, .aw-app label, .aw-app span, .aw-app h1, .aw-app h2, .aw-app h3{color:#111!important;box-sizing:border-box}\n        .aw-app input, .aw-app select, .aw-app textarea{background:#fff!important;color:#111!important}\n        .aw-app{--aw-primary:#002a61;--aw-secondary:#f77a36;--aw-accent:#1b1b1b;max-width:1180px;width:calc(100% - 28px);margin:24px auto;padding:0;border-radius:28px;background:linear-gradient(180deg,#fff,#fafafa);box-shadow:0 18px 60px rgba(0,0,0,.16);font-family:inherit;overflow:hidden;border:1px solid rgba(0,0,0,.06)}\n        .aw-portal-hero{position:relative;min-height:300px;padding:34px;border-radius:0;background:linear-gradient(135deg,color-mix(in srgb,var(--aw-primary) 88%,#111 12%),color-mix(in srgb,var(--aw-secondary) 78%,#000 22%)), url('https:\/\/akademia-wedzarnika.pl\/wp-content\/plugins\/akademia-wedzarnika\/assets\/dashboard\/dashboard-tlo.png?awver=1781809901') center\/cover no-repeat;overflow:hidden}\n        .aw-portal-hero:before{content:\"\";position:absolute;inset:0;background:radial-gradient(circle at 78% 20%,rgba(255,255,255,.22),transparent 28%),linear-gradient(90deg,rgba(0,0,0,.22),rgba(0,0,0,.02));pointer-events:none}\n        .aw-portal-hero-inner{position:relative;display:grid;grid-template-columns:1.45fr .75fr;gap:22px;align-items:center;z-index:1}\n        .aw-portal-logo{display:block;width:180px;max-height:100px;object-fit:contain;background:rgba(255,255,255,.92);border-radius:18px;padding:10px;border:1px solid rgba(255,255,255,.65);box-shadow:0 14px 34px rgba(0,0,0,.16);margin:0 0 16px}.aw-portal-kicker{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.25);color:#fff!important;font-weight:900;text-transform:uppercase;letter-spacing:.09em;font-size:12px;margin-bottom:14px}\n        .aw-app .aw-portal-hero h1{margin:0;color:#fff!important;font-size:44px;line-height:1.05;text-align:left;letter-spacing:-.03em;text-shadow:0 2px 18px rgba(0,0,0,.22)}\n        .aw-portal-subtitle{max-width:680px;margin:14px 0 0;color:rgba(255,255,255,.92)!important;font-size:18px;line-height:1.55}\n        .aw-portal-sponsor{justify-self:end;width:100%;max-width:310px;background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.65);border-radius:22px;padding:18px;text-align:center;box-shadow:0 18px 40px rgba(0,0,0,.18);backdrop-filter:blur(10px)}\n        .aw-portal-sponsor .label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:900;color:var(--aw-primary)!important;margin-bottom:10px}\n        .aw-portal-sponsor img{max-width:220px;max-height:82px;object-fit:contain;background:#fff;border-radius:14px;padding:10px;border:1px solid #eee}\n        .aw-portal-sponsor .name{font-weight:900;margin-top:10px;color:#111!important;font-size:17px}\n        .aw-portal-sponsor a{display:inline-block;margin-top:12px;background:var(--aw-primary)!important;color:#fff!important;text-decoration:none;border-radius:12px;padding:10px 14px;font-weight:900}\n        .aw-portal-body{padding:24px;background:linear-gradient(180deg,#fff 0%,#f6f7fb 100%)}\n        .aw-app h1{margin-top:0;font-size:34px;text-align:center}\n        .aw-intro{text-align:center;font-size:17px;margin-bottom:24px}\n        .aw-levels{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}\n        .aw-levels .aw-btn{min-height:78px;border-radius:18px;background:linear-gradient(135deg,var(--aw-primary),var(--aw-secondary))!important;box-shadow:0 10px 24px color-mix(in srgb,var(--aw-primary) 28%,transparent);font-size:16px}\n        .aw-btn{border:0;border-radius:12px;padding:14px 12px;font-weight:700;cursor:pointer;background:#b02020;color:#fff;font-size:15px}\n        .aw-btn:hover{filter:brightness(.95);transform:translateY(-1px)}\n        .aw-btn-secondary{background:#444!important}\n        .aw-card{border:1px solid #e3e3e3;border-radius:20px;padding:20px;margin-top:18px;background:rgba(255,255,255,.94);box-shadow:0 8px 28px rgba(0,0,0,.06)}\n        .aw-field{margin-bottom:12px}\n        .aw-field label{display:block;font-weight:700;margin-bottom:5px}\n        .aw-field input{width:100%;padding:10px;border:1px solid #ccc;border-radius:8px;font-size:16px}\n        .aw-message{margin:12px 0;padding:10px;border-radius:8px;display:none}\n        .aw-message.ok{background:#e7f7e7;color:#135f13;display:block}\n        .aw-message.err{background:#fde8e8;color:#8a1111;display:block}\n        .aw-question{font-size:22px;font-weight:800;margin:14px 0}\n        .aw-answer{display:block;width:100%;text-align:left;margin:8px 0;padding:12px;border:1px solid #ddd;border-radius:10px;background:#fff!important;color:#111!important;cursor:pointer;font-size:16px;line-height:1.4}\n        .aw-answer:hover{background:#f3f3f3!important;color:#111!important}\n        .aw-timer{font-size:20px;font-weight:800;color:#b02020;margin:10px 0}\n        .aw-progress{font-weight:700;color:#555}\n        .aw-q-image{max-width:100%;height:auto;border-radius:12px;margin:10px 0}\n        .aw-result-summary{background:#fff;border:1px solid #e3e3e3;border-radius:12px;padding:14px;margin-bottom:16px}\n        .aw-mistakes-title{margin-top:18px;border-top:1px solid #ddd;padding-top:14px}\n        .aw-mistake{background:#fff4f4!important;border:1px solid #e8b7b7;border-radius:12px;padding:14px;margin:12px 0;color:#111!important}\n        .aw-mistake-question{font-weight:800;margin-bottom:10px;color:#111!important}\n        .aw-user-answer{background:#ffe5e5;border-radius:8px;padding:8px;margin:6px 0;color:#111!important}\n        .aw-correct-answer{background:#e8f7e8;border-radius:8px;padding:8px;margin:6px 0;color:#111!important}\n        .aw-explanation{background:#f7f7f7;border-radius:8px;padding:8px;margin-top:8px;color:#111!important}\n        .aw-hidden{display:none!important}\n\n        .aw-ranking{margin-top:28px;border-top:2px solid #eee;padding-top:20px}\n        .aw-ranking h2{text-align:center;margin:0 0 14px}\n        .aw-rank-tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:12px 0 18px}\n        .aw-rank-tab{display:inline-block;padding:8px 10px;border-radius:999px;background:#eee!important;color:#111!important;text-decoration:none!important;font-weight:700;font-size:13px}\n        .aw-rank-tab.active{background:#b02020!important;color:#fff!important}\n        .aw-rank-table-wrap{overflow-x:auto}\n        .aw-rank-table{width:100%;border-collapse:collapse;background:#fff;color:#111!important}\n        .aw-rank-table th,.aw-rank-table td{border:1px solid #e5e5e5;padding:9px;text-align:left;color:#111!important}\n        .aw-rank-table th{background:#f4f4f4;font-weight:800}\n        .aw-rank-table tr:nth-child(even){background:#fafafa}\n        .aw-rank-place{font-weight:900;color:#b02020!important}\n        .aw-achievements{font-size:20px;letter-spacing:2px;white-space:nowrap}\n        .aw-achievement-empty{color:#777!important;font-size:13px}\n        .aw-rank-empty{text-align:center;background:#fff8e8;border:1px solid #f1d9a6;border-radius:10px;padding:12px;color:#111!important}\n\n        .aw-share-box{background:#fff8e8!important;border:1px solid #f1d9a6;border-radius:12px;padding:14px;margin:16px 0;color:#111!important}\n        .aw-share-box h3{margin-top:0;color:#111!important}\n        .aw-share-text{width:100%;min-height:150px;padding:10px;border:1px solid #ccc;border-radius:8px;background:#fff!important;color:#111!important;font-size:14px;line-height:1.45}\n        .aw-copy-ok{display:none;margin-top:8px;padding:8px;border-radius:8px;background:#e7f7e7!important;color:#135f13!important;font-weight:700}\n        .aw-career-path{margin:0 0 22px;padding:18px;border:1px solid color-mix(in srgb,var(--aw-primary) 20%,#ead7b5);border-radius:22px;background:linear-gradient(135deg,#fff, color-mix(in srgb,var(--aw-primary) 7%,#fff8e8))!important;color:#111!important;box-shadow:0 8px 24px rgba(0,0,0,.05)}\n        .aw-career-path h3{margin:0 0 14px;text-align:center;color:#111!important;font-size:22px}\n        .aw-career-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}\n        .aw-career-step{position:relative;background:#fff!important;border:1px solid color-mix(in srgb,var(--aw-primary) 22%,#e6d2aa);border-radius:18px;padding:14px 10px;text-align:center;font-weight:900;color:#111!important;box-shadow:0 8px 18px rgba(0,0,0,.045)}\n        .aw-career-step small{display:block;font-weight:700;color:#555!important;margin-top:5px;font-size:12px;line-height:1.35}\n\n        #awApp .aw-btn,#awApp .aw-rank-tab.active{background:var(--aw-primary)!important;color:#fff!important}\n        #awApp .aw-timer,#awApp .aw-rank-place{color:var(--aw-primary)!important}\n        #awApp .aw-career-path{border-color:color-mix(in srgb,var(--aw-primary) 25%,#ead7b5)!important;background:linear-gradient(135deg,#fff, color-mix(in srgb,var(--aw-primary) 7%,#fff8e8))!important}\n        #awApp .aw-sponsor-main-card{border:1px solid color-mix(in srgb,var(--aw-primary) 20%,#e7e7e7);background:linear-gradient(135deg,#fff, color-mix(in srgb,var(--aw-primary) 6%,#fff));border-radius:14px;padding:14px;margin:16px 0;text-align:center}\n        #awApp .aw-sponsor-main-card img{max-width:190px;max-height:70px;object-fit:contain;background:#fff;border-radius:10px;padding:8px;border:1px solid #eee}\n        #awApp .aw-sponsor-main-card a{display:inline-block;margin-top:8px;background:var(--aw-primary)!important;color:#fff!important;text-decoration:none;border-radius:9px;padding:8px 12px;font-weight:800}\n        #awApp .aw-profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0}\n        #awApp .aw-profile-wide{grid-column:1 \/ -1}\n        #awApp .aw-profile-panel{background:#fff;border:1px solid color-mix(in srgb,var(--aw-primary) 16%,#e5e7eb);border-radius:20px;padding:18px;box-shadow:0 10px 26px rgba(0,0,0,.055)}\n        #awApp .aw-profile-panel h3{margin:0 0 12px;font-size:20px}\n        #awApp .aw-progress-path{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}\n        #awApp .aw-progress-tile{border-radius:16px;padding:13px;background:#f3f4f6;border:1px solid #e5e7eb;text-align:center;font-weight:900}\n        #awApp .aw-progress-tile.passed{background:linear-gradient(135deg,#e8f7ed,#ffffff);border-color:#95d5a6}\n        #awApp .aw-progress-tile.active{background:linear-gradient(135deg,color-mix(in srgb,var(--aw-primary) 16%,#fff),#fff);border-color:var(--aw-primary)}\n        #awApp .aw-progress-tile.locked{opacity:.58}\n        #awApp .aw-mini-muted{font-size:12px;color:#666!important;font-weight:700;margin-top:4px;display:block}\n        #awApp .aw-certs-list{display:grid;gap:9px}\n        #awApp .aw-cert-row{display:flex;gap:12px;align-items:center;justify-content:space-between;background:#fafafa;border:1px solid #eee;border-radius:14px;padding:12px 14px}\n        #awApp .aw-cert-row strong{display:block}\n        #awApp .aw-cert-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}\n        #awApp .aw-cert-actions a{display:inline-block;padding:7px 9px;border-radius:9px;background:var(--aw-primary)!important;color:#fff!important;text-decoration:none;font-weight:800;font-size:12px}\n        #awApp .aw-history-row{border-left:4px solid var(--aw-primary);padding:9px 10px;background:#fff;border-radius:10px;margin:8px 0}\n        #awApp .aw-history-row.revoked{border-left-color:#888;opacity:.8}\n        #awApp .aw-next-box{background:linear-gradient(135deg,color-mix(in srgb,var(--aw-primary) 12%,#fff8e8),#fff);border:1px solid color-mix(in srgb,var(--aw-primary) 25%,#ead7b5);border-radius:18px;padding:14px;margin-top:14px}\n        #awApp .aw-master-top{margin-top:14px}\n        #awApp .aw-master-top li{margin:6px 0}\n        @media(max-width:900px){#awApp .aw-profile-grid{grid-template-columns:1fr}#awApp .aw-profile-wide{grid-column:auto}#awApp .aw-progress-path{grid-template-columns:repeat(2,1fr)}}\n\n        @media(max-width:900px){.aw-portal-hero-inner{grid-template-columns:1fr}.aw-portal-sponsor{justify-self:start;max-width:100%}.aw-app .aw-portal-hero h1{font-size:36px}.aw-levels,.aw-career-steps{grid-template-columns:repeat(2,1fr)}}\n        @media(max-width:700px){#awApp .aw-progress-path{grid-template-columns:1fr}#awApp .aw-cert-row{display:block}#awApp .aw-cert-actions{justify-content:flex-start;margin-top:10px}.aw-levels,.aw-career-steps{grid-template-columns:1fr}.aw-app{width:calc(100% - 16px);margin:8px auto}.aw-portal-hero{padding:24px}.aw-portal-body{padding:16px}.aw-app .aw-portal-hero h1{font-size:32px}}\n    <\/style>\n\n    <div class=\"aw-app aw-portal\" id=\"awApp\" data-ajax=\"https:\/\/akademia-wedzarnika.pl\/wp-admin\/admin-ajax.php\" data-nonce=\"90badc34c1\">\n        <section class=\"aw-portal-hero\">\n            <div class=\"aw-portal-hero-inner\">\n                <div>\n                    <img decoding=\"async\" class=\"aw-portal-logo\" src=\"https:\/\/akademia-wedzarnika.pl\/wp-content\/plugins\/akademia-wedzarnika\/assets\/logo\/logo-akademii.png?awver=1781809762\" alt=\"Akademia W\u0119dzarnika\">                    <div class=\"aw-portal-kicker\">\ud83c\udfc6 System certyfikacji<\/div>\n                    <h1>Akademia W\u0119dzarnika<\/h1>\n                    <p class=\"aw-portal-subtitle\">Zdobywaj certyfikaty, rozwijaj umiej\u0119tno\u015bci i awansuj od Nowicjusza do Mistrza W\u0119dzarnictwa.<\/p>\n                <\/div>\n                                    <div class=\"aw-portal-sponsor\">\n                        <div class=\"label\">Partner Akademii<\/div>\n                        <img decoding=\"async\" src=\"https:\/\/akademia-wedzarnika.pl\/wp-content\/plugins\/akademia-wedzarnika\/assets\/sponsorzy\/sponsor-logo-20260618-102504-euRGNT.png?awver=1781778304\" alt=\"Jelux Polska\">                        <div class=\"name\">Jelux Polska<\/div>                        <a href=\"https:\/\/sklep.jelux.pl\" target=\"_blank\" rel=\"noopener\">Zobacz sponsora<\/a>                    <\/div>\n                            <\/div>\n        <\/section>\n        <div class=\"aw-portal-body\">\n            <p class=\"aw-intro\">Podaj dane, potwierd\u017a e-mail kodem i wejd\u017a do Panelu Uczestnika. Test wybierzesz dopiero w panelu.<\/p>\n                <div class=\"aw-dashboard-stats\" aria-label=\"Statystyki Akademii\">\n        <div class=\"aw-dashboard-stat\"><span class=\"ico\">\ud83c\udfc5<\/span><strong>5<\/strong><small>Certyfikaty<\/small><\/div>\n        <div class=\"aw-dashboard-stat\"><span class=\"ico\">\ud83d\udc64<\/span><strong>8<\/strong><small>Uczestnicy<\/small><\/div>\n        <div class=\"aw-dashboard-stat\"><span class=\"ico\">\ud83e\udd53<\/span><strong>4<\/strong><small>Nowicjusze<\/small><\/div>\n        <div class=\"aw-dashboard-stat\"><span class=\"ico\">\ud83d\udd25<\/span><strong>1<\/strong><small>Praktycy<\/small><\/div>\n        <div class=\"aw-dashboard-stat\"><span class=\"ico\">\ud83c\udf93<\/span><strong>0<\/strong><small>Znawcy<\/small><\/div>\n        <div class=\"aw-dashboard-stat\"><span class=\"ico\">\ud83d\udc51<\/span><strong>0<\/strong><small>Mistrzowie<\/small><\/div>\n    <\/div>\n            <div class=\"aw-top3\">\n            <h3>\ud83c\udfc6 TOP 3 Akademii<\/h3>\n            <div class=\"aw-top3-grid\">\n                                    <div class=\"aw-top3-card\">\n                        <div class=\"aw-top3-medal\">\ud83e\udd47<\/div>\n                        <strong>Fenek4<\/strong>\n                        <small>Nowicjusz \u00b7 21 s<\/small>\n                        <div class=\"aw-top3-score\">1499 pkt<\/div>\n                    <\/div>\n                                    <div class=\"aw-top3-card\">\n                        <div class=\"aw-top3-medal\">\ud83e\udd48<\/div>\n                        <strong>Szybki<\/strong>\n                        <small>Nowicjusz \u00b7 28 s<\/small>\n                        <div class=\"aw-top3-score\">1471 pkt<\/div>\n                    <\/div>\n                                    <div class=\"aw-top3-card\">\n                        <div class=\"aw-top3-medal\">\ud83e\udd49<\/div>\n                        <strong>Majewski<\/strong>\n                        <small>Nowicjusz \u00b7 46 s<\/small>\n                        <div class=\"aw-top3-score\">1448 pkt<\/div>\n                    <\/div>\n                            <\/div>\n        <\/div>\n        \n        <div id=\"awStepLevels\" class=\"aw-hidden\">\n            <div class=\"aw-career-path\">\n                <h3>\ud83c\udf93 \u015acie\u017cka awansu Akademii<\/h3>\n                <div class=\"aw-career-steps\">\n                    <div class=\"aw-career-step\">\ud83d\udd13 \ud83e\udd53 Nowicjusz<small>dost\u0119pny od razu<\/small><\/div>\n                    <div class=\"aw-career-step\">\ud83d\udd12 \ud83d\udd25 Praktyk<small>wymaga certyfikatu Nowicjusza<\/small><\/div>\n                    <div class=\"aw-career-step\">\ud83d\udd12 \ud83c\udf93 Znawca<small>wymaga certyfikatu Praktyka<\/small><\/div>\n                    <div class=\"aw-career-step\">\ud83d\udd12 \ud83d\udc51 Mistrz<small>wymaga certyfikatu Znawcy<\/small><\/div>\n                <\/div>\n            <\/div>\n            <div class=\"aw-levels\">\n                                    <button type=\"button\" class=\"aw-btn aw-level-btn\" data-level=\"beginner\">Nowicjusz<\/button>\n                                    <button type=\"button\" class=\"aw-btn aw-level-btn\" data-level=\"practitioner\">Praktyk<\/button>\n                                    <button type=\"button\" class=\"aw-btn aw-level-btn\" data-level=\"expert\">Znawca<\/button>\n                                    <button type=\"button\" class=\"aw-btn aw-level-btn\" data-level=\"master\">Mistrz W\u0119dzarnictwa<\/button>\n                            <\/div>\n        <\/div>\n\n        <div id=\"awStepRegister\" class=\"aw-card\">\n            <h2 id=\"awSelectedLevelTitle\">Panel Uczestnika \u2014 weryfikacja<\/h2>\n            <div class=\"aw-field\"><label>Imi\u0119<\/label><input type=\"text\" id=\"awName\" maxlength=\"100\"><\/div>\n            <div class=\"aw-field\"><label>Ksywa<\/label><input type=\"text\" id=\"awNickname\" maxlength=\"100\"><\/div>\n            <div class=\"aw-field\"><label>E-mail<\/label><input type=\"email\" id=\"awEmail\" maxlength=\"190\"><\/div>\n            <button type=\"button\" class=\"aw-btn\" id=\"awSendCode\">Wy\u015blij kod<\/button>\n            <div id=\"awRegisterMsg\" class=\"aw-message\"><\/div>\n        <\/div>\n\n        <div id=\"awStepCode\" class=\"aw-card aw-hidden\">\n            <h2>Wpisz kod z e-maila<\/h2>\n            <p>Kod zosta\u0142 wys\u0142any na podany adres e-mail. Sprawd\u017a te\u017c folder SPAM.<\/p>\n            <div class=\"aw-field\"><label>Kod weryfikacyjny<\/label><input type=\"text\" id=\"awCode\" maxlength=\"10\"><\/div>\n            <button type=\"button\" class=\"aw-btn\" id=\"awVerifyCode\">Wejd\u017a do Panelu Uczestnika<\/button>\n            <button type=\"button\" class=\"aw-btn aw-btn-secondary awBack\">Wr\u00f3\u0107<\/button>\n            <div id=\"awCodeMsg\" class=\"aw-message\"><\/div>\n        <\/div>\n\n        <div id=\"awStepProfile\" class=\"aw-card aw-hidden\">\n            <h2>Tw\u00f3j profil Akademii<\/h2>\n            <div id=\"awProfileBox\"><\/div>\n            <p class=\"aw-mini-muted\">Wybierz dost\u0119pny poziom w panelu poni\u017cej. Je\u017celi poziom nie ma jeszcze pyta\u0144, nadal zobaczysz swoje certyfikaty i osi\u0105gni\u0119cia.<\/p>\n            <button type=\"button\" class=\"aw-btn aw-btn-secondary awBack\">Wr\u00f3\u0107<\/button>\n        <\/div>\n\n        <div id=\"awStepTest\" class=\"aw-card aw-hidden\">\n            <div class=\"aw-progress\" id=\"awProgress\"><\/div>\n            <div class=\"aw-timer\">Czas: <span id=\"awTimer\">0<\/span> s<\/div>\n            <div id=\"awImage\"><\/div>\n            <div class=\"aw-question\" id=\"awQuestion\"><\/div>\n            <div id=\"awAnswers\"><\/div>\n        <\/div>\n\n        <div id=\"awStepReview\" class=\"aw-card aw-hidden\">\n            <h2>Podsumowanie odpowiedzi<\/h2>\n            <p>Masz <strong><span id=\"awReviewTimer\">20<\/span> s<\/strong> na podgl\u0105d. Odpowiedzi nie mo\u017cna ju\u017c zmienia\u0107.<\/p>\n            <div id=\"awReviewList\"><\/div>\n            <button type=\"button\" class=\"aw-btn\" id=\"awFinishNow\">Zatwierd\u017a wynik<\/button>\n        <\/div>\n\n        <div id=\"awStepResult\" class=\"aw-card aw-hidden\">\n            <h2>Wynik testu<\/h2>\n            <div id=\"awResultBox\"><\/div>\n            <button type=\"button\" class=\"aw-btn\" onclick=\"window.location.reload();\">Wr\u00f3\u0107 do Akademii<\/button>\n        <\/div>\n\n            <div class=\"aw-ranking\">\n        <h2>\ud83c\udfc6 Ranking Akademii W\u0119dzarnika<\/h2>\n\n        <div class=\"aw-rank-tabs\">\n                                            <a class=\"aw-rank-tab active\" href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F6\">\n                    TOP 100 Akademii                <\/a>\n                                            <a class=\"aw-rank-tab \" href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F6&#038;aw_rank=beginner\">\n                    Nowicjusz                <\/a>\n                                            <a class=\"aw-rank-tab \" href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F6&#038;aw_rank=practitioner\">\n                    Praktyk                <\/a>\n                                            <a class=\"aw-rank-tab \" href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F6&#038;aw_rank=expert\">\n                    Znawca                <\/a>\n                                            <a class=\"aw-rank-tab \" href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F6&#038;aw_rank=master\">\n                    Mistrz W\u0119dzarnictwa                <\/a>\n                    <\/div>\n\n                    <div class=\"aw-rank-table-wrap\">\n                <table class=\"aw-rank-table\">\n                    <thead>\n                        <tr>\n                            <th>Miejsce<\/th>\n                            <th>Ksywa<\/th>\n                            <th>Tytu\u0142<\/th>\n                            <th>Osi\u0105gni\u0119cia<\/th>\n                            <th>Poziom<\/th>\n                            <th>Wiedza<\/th>\n                            <th>Polecenia<\/th>\n                            <th>Razem<\/th>\n                            <th>Poprawne<\/th>\n                            <th>Czas<\/th>\n                            <th>Data<\/th>\n                        <\/tr>\n                    <\/thead>\n                    <tbody>\n                                                    <tr>\n                                <td class=\"aw-rank-place\">1<\/td>\n                                <td><strong>Fenek4<\/strong><\/td>\n                                <td>\ud83e\udd53 Nowicjusz<\/td>\n                                <td><span class=\"aw-achievements\"><span title=\"Uko\u0144czony poziom: Pocz\u0105tkuj\u0105cy\">\ud83e\udd53<\/span><span title=\"Uko\u0144czony poziom: Praktyk\">\ud83d\udd25<\/span><\/span><\/td>\n                                <td>Nowicjusz<\/td>\n                                <td><strong>1479<\/strong><\/td>\n                                <td>20<\/td>\n                                <td><strong>1499<\/strong><\/td>\n                                <td>10<\/td>\n                                <td>21 s<\/td>\n                                <td>17.06.2026 19:07<\/td>\n                            <\/tr>\n                                                    <tr>\n                                <td class=\"aw-rank-place\">2<\/td>\n                                <td><strong>Szybki<\/strong><\/td>\n                                <td>\ud83e\udd53 Nowicjusz<\/td>\n                                <td><span class=\"aw-achievements\"><span title=\"Uko\u0144czony poziom: Pocz\u0105tkuj\u0105cy\">\ud83e\udd53<\/span><\/span><\/td>\n                                <td>Nowicjusz<\/td>\n                                <td><strong>1471<\/strong><\/td>\n                                <td>0<\/td>\n                                <td><strong>1471<\/strong><\/td>\n                                <td>10<\/td>\n                                <td>28 s<\/td>\n                                <td>19.06.2026 14:27<\/td>\n                            <\/tr>\n                                                    <tr>\n                                <td class=\"aw-rank-place\">3<\/td>\n                                <td><strong>Majewski<\/strong><\/td>\n                                <td>\ud83e\udd53 Nowicjusz<\/td>\n                                <td><span class=\"aw-achievements\"><span title=\"Uko\u0144czony poziom: Pocz\u0105tkuj\u0105cy\">\ud83e\udd53<\/span><\/span><\/td>\n                                <td>Nowicjusz<\/td>\n                                <td><strong>1448<\/strong><\/td>\n                                <td>0<\/td>\n                                <td><strong>1448<\/strong><\/td>\n                                <td>10<\/td>\n                                <td>46 s<\/td>\n                                <td>18.06.2026 16:27<\/td>\n                            <\/tr>\n                                                    <tr>\n                                <td class=\"aw-rank-place\">4<\/td>\n                                <td><strong>Fenek4<\/strong><\/td>\n                                <td>\ud83d\udd25 Praktyk<\/td>\n                                <td><span class=\"aw-achievements\"><span title=\"Uko\u0144czony poziom: Pocz\u0105tkuj\u0105cy\">\ud83e\udd53<\/span><span title=\"Uko\u0144czony poziom: Praktyk\">\ud83d\udd25<\/span><\/span><\/td>\n                                <td>Praktyk<\/td>\n                                <td><strong>1274<\/strong><\/td>\n                                <td>20<\/td>\n                                <td><strong>1294<\/strong><\/td>\n                                <td>9<\/td>\n                                <td>72 s<\/td>\n                                <td>18.06.2026 15:57<\/td>\n                            <\/tr>\n                                                    <tr>\n                                <td class=\"aw-rank-place\">5<\/td>\n                                <td><strong>ITS<\/strong><\/td>\n                                <td>\ud83e\udd53 Nowicjusz<\/td>\n                                <td><span class=\"aw-achievements\"><span title=\"Uko\u0144czony poziom: Pocz\u0105tkuj\u0105cy\">\ud83e\udd53<\/span><\/span><\/td>\n                                <td>Nowicjusz<\/td>\n                                <td><strong>1163<\/strong><\/td>\n                                <td>0<\/td>\n                                <td><strong>1163<\/strong><\/td>\n                                <td>8<\/td>\n                                <td>47 s<\/td>\n                                <td>17.06.2026 12:35<\/td>\n                            <\/tr>\n                                            <\/tbody>\n                <\/table>\n            <\/div>\n            <\/div>\n            <\/div>\n    <\/div>\n\n    <script>\n    (function(){\n        const app = document.getElementById('awApp');\n        const ajaxUrl = app.dataset.ajax;\n        const nonce = app.dataset.nonce;\n        const levelLabels = {\"beginner\":\"Nowicjusz\",\"practitioner\":\"Praktyk\",\"expert\":\"Znawca\",\"master\":\"Mistrz W\\u0119dzarnictwa\"};\n        const titleLabels = {\"beginner\":\"\\ud83e\\udd53 Nowicjusz\",\"practitioner\":\"\\ud83d\\udd25 Praktyk\",\"expert\":\"\\ud83c\\udf93 Znawca\",\"master\":\"\\ud83d\\udc51 Mistrz W\\u0119dzarnictwa\"};\n        const awCertConfig = {\"academyUrl\":\"https:\\\/\\\/akademia-wedzarnika.pl\\\/\",\"certificateBaseUrl\":\"https:\\\/\\\/akademia-wedzarnika.pl\\\/\",\"verificationBaseUrl\":\"https:\\\/\\\/akademia-wedzarnika.pl\\\/weryfikacja-certyfikatu\\\/\",\"logoUrl\":\"https:\\\/\\\/akademia-wedzarnika.pl\\\/wp-content\\\/plugins\\\/akademia-wedzarnika\\\/assets\\\/logo\\\/logo-akademii.png?awver=1781809762\",\"sponsorName\":\"Jelux Polska\",\"sponsorLogoUrl\":\"https:\\\/\\\/akademia-wedzarnika.pl\\\/wp-content\\\/plugins\\\/akademia-wedzarnika\\\/assets\\\/sponsorzy\\\/sponsor-logo-20260618-102504-euRGNT.png?awver=1781778304\",\"sponsorBackgroundUrl\":\"https:\\\/\\\/akademia-wedzarnika.pl\\\/wp-content\\\/plugins\\\/akademia-wedzarnika\\\/assets\\\/certyfikaty\\\/sponsor-certyfikat-20260618-102504-Paf1hF.png?awver=1781778304\",\"sponsorCode\":\"AKADEMIA5\",\"sponsorLink\":\"https:\\\/\\\/sklep.jelux.pl\"};\n        let state = {level:'', name:'', nickname:'', email:'', questions:[], current:0, answers:[], timeLimit:0, timer:null, secondsLeft:0, questionStarted:0, reviewTimer:null, reviewLeft:20};\n\n        function show(id){['awStepLevels','awStepRegister','awStepCode','awStepProfile','awStepTest','awStepReview','awStepResult'].forEach(x=>document.getElementById(x).classList.add('aw-hidden'));document.getElementById(id).classList.remove('aw-hidden');}\n        function msg(id, text, ok){const el=document.getElementById(id);el.className='aw-message '+(ok?'ok':'err');el.textContent=text;}\n        function post(action, data){\n            const body = new URLSearchParams(Object.assign({action:action, nonce:nonce}, data));\n            return fetch(ajaxUrl,{method:'POST',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body}).then(r=>r.json());\n        }\n        document.querySelectorAll('.aw-level-btn').forEach(btn=>btn.addEventListener('click',()=>{state.level=btn.dataset.level;document.getElementById('awSelectedLevelTitle').textContent='Poziom: '+levelLabels[state.level];show('awStepRegister');}));\n        document.querySelectorAll('.awBack').forEach(btn=>btn.addEventListener('click',()=>show('awStepRegister')));\n        document.getElementById('awSendCode').addEventListener('click',()=>{\n            state.name=document.getElementById('awName').value.trim(); state.nickname=document.getElementById('awNickname').value.trim(); state.email=document.getElementById('awEmail').value.trim();\n            if(!state.name||!state.nickname||!state.email){msg('awRegisterMsg','Uzupe\u0142nij imi\u0119, ksyw\u0119 i e-mail.',false);return;}\n            msg('awRegisterMsg','Wysy\u0142am kod...',true);\n            post('aw_send_code',{name:state.name,nickname:state.nickname,email:state.email,ref:new URLSearchParams(location.search).get('ref')||''}).then(res=>{\n                if(res.success){msg('awRegisterMsg',res.data.message,true);show('awStepCode');} else {msg('awRegisterMsg',res.data.message||'Wyst\u0105pi\u0142 b\u0142\u0105d.',false);}\n            }).catch(()=>msg('awRegisterMsg','B\u0142\u0105d po\u0142\u0105czenia z serwerem.',false));\n        });\n\n        function escHtml(v){\n            return String(v ?? '').replace(\/[&<>\"']\/g, function(ch){\n                return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[ch];\n            });\n        }\n        function renderPortalProfile(data){\n            if(!data){return '';}\n\n            const levelOrder = ['beginner','practitioner','expert','master'];\n            const passedLevels = (data.levels || []).filter(l => !!l.passed);\n            const currentLevel = passedLevels.length ? passedLevels[passedLevels.length - 1] : null;\n            const activeLevel = (data.levels || []).find(l => !l.locked && !l.passed) || currentLevel || (data.levels || [])[0] || null;\n            const nextLockedOrActive = (data.levels || []).find(l => !l.passed) || null;\n            const bestFromLevels = passedLevels.length ? passedLevels.reduce((best,l)=>{\n                const val = parseInt(String(l.score || '0').split('\/')[0],10) || 0;\n                const bestVal = parseInt(String(best.score || '0').split('\/')[0],10) || 0;\n                return val >= bestVal ? l : best;\n            }, passedLevels[0]) : null;\n\n            const certCount = (data.certificates || []).length;\n            const historyCount = (data.history || []).length;\n            const rankLabel = data.personal && data.personal.rank ? ('#' + escHtml(data.personal.rank)) : '\u2014';\n            const bestScore = bestFromLevels && bestFromLevels.score ? bestFromLevels.score : (data.personal && data.personal.best_result ? data.personal.best_result : '\u2014');\n            const bestTime = bestFromLevels && bestFromLevels.time ? bestFromLevels.time : (data.personal && data.personal.best_time ? data.personal.best_time : '\u2014');\n            const currentLabel = currentLevel ? currentLevel.label : 'Start Akademii';\n            const currentScore = currentLevel && currentLevel.score ? currentLevel.score : '\u2014';\n\n            const profileHero = `\n                <div class=\"aw-member-hero\">\n                    <div class=\"aw-member-badge\">${currentLevel ? escHtml(currentLevel.label.split(' ')[0]) : '\ud83c\udf93'}<\/div>\n                    <div class=\"aw-member-main\">\n                        <div class=\"aw-member-kicker\">Panel uczestnika<\/div>\n                        <h2>Witaj${state.nickname ? ', ' + escHtml(state.nickname) : ''} \ud83d\udc4b<\/h2>\n                        <p>Tw\u00f3j aktualny poziom: <strong>${escHtml(currentLabel)}<\/strong>${currentLevel ? ` \u00b7 najlepszy wynik: <strong>${escHtml(currentScore)}<\/strong>` : ' \u00b7 rozpocznij pierwszy egzamin i zdob\u0105d\u017a certyfikat.'}<\/p>\n                    <\/div>\n                    <div class=\"aw-member-rank\">\n                        <span>Pozycja<\/span>\n                        <strong>${rankLabel}<\/strong>\n                    <\/div>\n                <\/div>\n            `;\n\n            const summaryCards = `\n                <div class=\"aw-member-stats\">\n                    <div class=\"aw-member-stat\"><span>\ud83c\udfc5<\/span><strong>${certCount}<\/strong><small>Certyfikaty<\/small><\/div>\n                    <div class=\"aw-member-stat\"><span>\ud83d\udd25<\/span><strong>${historyCount}<\/strong><small>Zdane egzaminy<\/small><\/div>\n                    <div class=\"aw-member-stat\"><span>\ud83d\udcc8<\/span><strong>${escHtml(bestScore)}<\/strong><small>Najlepszy wynik<\/small><\/div>\n                    <div class=\"aw-member-stat\"><span>\u23f1\ufe0f<\/span><strong>${escHtml(bestTime)}<\/strong><small>Najlepszy czas<\/small><\/div>\n                <\/div>\n            `;\n\n            const levelTiles = (data.levels || []).map((l,idx) => {\n                const cls = l.passed ? 'passed' : (l.locked ? 'locked' : 'active');\n                const icon = l.passed ? '\u2705' : (l.locked ? '\ud83d\udd12' : '\ud83c\udfaf');\n                const statusText = l.passed ? 'Uko\u0144czony' : (l.locked ? 'Zablokowany' : 'Dost\u0119pny teraz');\n                const canStart = !!l.can_start;\n                const btnLabel = l.start_label || (l.passed ? 'Popraw wynik' : 'Rozpocznij');\n                const noteText = l.locked ? 'Uko\u0144cz poprzedni poziom' : (l.start_message ? escHtml(l.start_message).replace('\ud83c\udf93 ','').replace('\ud83c\udfaf ','') : '');\n                const btn = canStart\n                    ? `<button type=\"button\" class=\"aw-start-level-btn aw-step-btn\" data-level=\"${escHtml(l.key)}\">${escHtml(btnLabel)}<\/button>`\n                    : `<button type=\"button\" class=\"aw-start-level-btn aw-step-btn\" disabled>${escHtml(btnLabel)}<\/button>`;\n                return `\n                    <div class=\"aw-cert-step ${cls}\">\n                        <div class=\"aw-step-top\"><span class=\"aw-step-icon\">${icon}<\/span><span class=\"aw-step-no\">${idx+1}<\/span><\/div>\n                        <h4>${escHtml(l.label)}<\/h4>\n                        <div class=\"aw-step-status\">${escHtml(statusText)}<\/div>\n                        ${l.score ? `<div class=\"aw-step-score\">${escHtml(l.score)}${l.time ? ` \u00b7 ${escHtml(l.time)}` : ''}<\/div>` : ''}\n                        ${btn}\n                        ${noteText ? `<p>${noteText}<\/p>` : ''}\n                    <\/div>\n                `;\n            }).join('');\n\n            const nextTitle = nextLockedOrActive ? nextLockedOrActive.label : 'Wszystkie poziomy uko\u0144czone';\n            const nextText = nextLockedOrActive\n                ? (nextLockedOrActive.locked ? 'Odblokuj kolejny poziom przez uko\u0144czenie poprzedniego egzaminu minimum 8\/10.' : 'Mo\u017cesz rozpocz\u0105\u0107 kolejny egzamin i zdoby\u0107 nast\u0119pny certyfikat.')\n                : 'Gratulacje \u2014 masz komplet \u015bcie\u017cki certyfikacji.';\n\n            const nextActionLevel = (data.levels || []).find(l => !!l.can_start);\n            const nextAction = nextActionLevel\n                ? `<button type=\"button\" class=\"aw-start-level-btn aw-next-action\" data-level=\"${escHtml(nextActionLevel.key)}\">Rozpocznij: ${escHtml(nextActionLevel.label)}<\/button>`\n                : `<button type=\"button\" class=\"aw-next-action\" disabled>Brak dost\u0119pnego egzaminu<\/button>`;\n\n            const nextBox = `\n                <div class=\"aw-next-step-card\">\n                    <div>\n                        <span>\ud83c\udfaf Nast\u0119pny krok<\/span>\n                        <h3>${escHtml(nextTitle)}<\/h3>\n                        <p>${escHtml(nextText)}<\/p>\n                    <\/div>\n                    ${nextAction}\n                <\/div>\n            `;\n\n            const certs = (data.certificates || []).length ? (data.certificates || []).map(c => {\n                const certUrl = awMakeUrl(awCertConfig.certificateBaseUrl || '\/', 'certificate', c.number || '');\n                const verifyUrl = c.private_verify_url || awMakeUrl(awCertConfig.verificationBaseUrl || '\/weryfikacja-certyfikatu\/', 'aw_verify_no', c.number || '');\n                return `\n                <div class=\"aw-cert-row aw-cert-card-mini\">\n                    <div class=\"aw-cert-card-head\">\n                        <span class=\"aw-cert-card-icon\">${String(c.level || '').includes('Praktyk') ? '\ud83d\udd25' : (String(c.level || '').includes('Znawca') ? '\ud83c\udf93' : (String(c.level || '').includes('Mistrz') ? '\ud83d\udc51' : '\ud83e\udd53'))}<\/span>\n                        <div><strong>${escHtml(c.level)}<\/strong><span class=\"aw-mini-muted\">${escHtml(c.number)}<\/span><\/div>\n                    <\/div>\n                    <div class=\"aw-cert-card-meta\"><span>Wynik: <b>${escHtml(c.score)}<\/b><\/span><span>${escHtml(c.date)}<\/span><\/div>\n                    <div class=\"aw-cert-actions\"><a href=\"${escHtml(certUrl)}\" target=\"_blank\" rel=\"noopener\">Certyfikat<\/a><a href=\"${escHtml(verifyUrl)}\" target=\"_blank\" rel=\"noopener\">Weryfikacja<\/a><\/div>\n                <\/div>`;\n            }).join('') : '<p>Nie masz jeszcze aktywnych certyfikat\u00f3w na tym koncie.<\/p>';\n\n            const achievements = (data.achievements || []).length ? '<ul class=\"aw-ach-list\">' + (data.achievements || []).map(a => `<li>${escHtml(a)}<\/li>`).join('') + '<\/ul>' : '<p>Pierwsze osi\u0105gni\u0119cie pojawi si\u0119 po zdobyciu certyfikatu.<\/p>';\n\n            const history = (data.history || []).length ? `\n                <div class=\"aw-history-table-wrap\">\n                    <table class=\"aw-history-table\">\n                        <thead><tr><th>Certyfikat<\/th><th>Poziom<\/th><th>Wynik<\/th><th>Data<\/th><th>Status<\/th><\/tr><\/thead>\n                        <tbody>\n                        ${(data.history || []).map(h => `\n                            <tr class=\"${h.status === 'uniewa\u017cniony' ? 'revoked' : ''}\">\n                                <td><strong>${escHtml(h.number)}<\/strong><\/td>\n                                <td>${escHtml(h.level)}<\/td>\n                                <td>${escHtml(h.score)}<\/td>\n                                <td>${escHtml(h.date)}<\/td>\n                                <td>${h.status === 'uniewa\u017cniony' ? '\u274c Uniewa\u017cniony' : '\u2705 Aktywny'}${h.reason ? '<br><small>' + escHtml(h.reason) + '<\/small>' : ''}<\/td>\n                            <\/tr>\n                        `).join('')}\n                        <\/tbody>\n                    <\/table>\n                <\/div>\n            ` : '<p>Historia certyfikat\u00f3w jest jeszcze pusta.<\/p>';\n\n            const topMasters = (data.top_masters || []).length ? '<ol class=\"aw-master-top\">' + (data.top_masters || []).map(m => `<li><strong>${escHtml(m.nickname)}<\/strong> \u2014 ${escHtml(m.score)} \u00b7 ${escHtml(m.time)}<\/li>`).join('') + '<\/ol>' : '<p>Ranking Mistrz\u00f3w czeka na pierwszych uczestnik\u00f3w.<\/p>';\n\n            const sponsorPanel = (awCertConfig.sponsorLogoUrl || awCertConfig.sponsorName) ? `\n                <div class=\"aw-profile-panel aw-profile-sponsor\">\n                    <h3>\ud83e\udd1d Partner Akademii<\/h3>\n                    ${awCertConfig.sponsorLogoUrl ? `<img decoding=\"async\" src=\"${escHtml(awCertConfig.sponsorLogoUrl)}\" alt=\"${escHtml(awCertConfig.sponsorName || 'Sponsor Akademii')}\" style=\"max-width:210px;max-height:88px;object-fit:contain;background:#fff;border:1px solid #eee;border-radius:14px;padding:10px;\">` : ''}\n                    ${awCertConfig.sponsorName ? `<p><strong>${escHtml(awCertConfig.sponsorName)}<\/strong><\/p>` : ''}\n                <\/div>\n            ` : '';\n\n            return `\n                <div class=\"aw-member-dashboard\">\n                    ${profileHero}\n                    ${summaryCards}\n                    <div class=\"aw-profile-panel aw-profile-wide aw-path-panel\">\n                        <h3>\ud83c\udf93 \u015acie\u017cka certyfikacji<\/h3>\n                        <div class=\"aw-cert-path\">${levelTiles}<\/div>\n                    <\/div>\n                    ${nextBox}\n                    <div class=\"aw-profile-grid aw-profile-grid-new\">\n                        <div class=\"aw-profile-panel aw-certificates-panel\"><h3>\ud83d\udcdc Moje certyfikaty<\/h3><div class=\"aw-certs-list\">${certs}<\/div><\/div>\n                        <div class=\"aw-profile-panel aw-achievements-panel\"><h3>\ud83c\udfc6 Moje osi\u0105gni\u0119cia<\/h3>${achievements}${sponsorPanel}<\/div>\n                        <div class=\"aw-profile-panel aw-profile-wide\"><h3>\ud83d\udcda Historia egzamin\u00f3w<\/h3>${history}<\/div>\n                        <div class=\"aw-profile-panel aw-profile-wide\"><h3>\ud83d\udc51 TOP 10 Mistrz\u00f3w W\u0119dzarnictwa<\/h3>${topMasters}<\/div>\n                    <\/div>\n                <\/div>\n            `;\n        }\n        document.getElementById('awVerifyCode').addEventListener('click',()=>{\n            const code=document.getElementById('awCode').value.trim(); if(!code){msg('awCodeMsg','Wpisz kod.',false);return;}\n            msg('awCodeMsg','Sprawdzam kod i otwieram Panel Uczestnika...',true);\n            post('aw_verify_code',{email:state.email,code:code}).then(res=>{\n                if(res.success){\n                    document.getElementById('awProfileBox').innerHTML=renderPortalProfile(res.data.portal||null);\n                    show('awStepProfile');\n                }\n                else {msg('awCodeMsg',res.data.message||'B\u0142\u0105d weryfikacji.',false);}\n            }).catch(()=>msg('awCodeMsg','B\u0142\u0105d po\u0142\u0105czenia z serwerem.',false));\n        });\n\n        document.getElementById('awProfileBox').addEventListener('click', function(e){\n            const btn = e.target.closest('.aw-start-level-btn[data-level]');\n            if(!btn || btn.disabled){return;}\n            const level = btn.dataset.level;\n            state.level = level;\n            btn.disabled = true;\n            const oldText = btn.textContent;\n            btn.textContent = 'Przygotowuj\u0119 test...';\n            post('aw_start_level',{level:level,email:state.email}).then(res=>{\n                btn.disabled = false;\n                btn.textContent = oldText;\n                if(res.success){\n                    state.questions=res.data.questions;\n                    state.timeLimit=parseInt(res.data.time_limit,10);\n                    state.reviewLeft=parseInt(res.data.review_time,10);\n                    state.current=0;\n                    state.answers=[];\n                    show('awStepTest');\n                    renderQuestion();\n                } else {\n                    alert(res.data.message || 'Nie mo\u017cna rozpocz\u0105\u0107 tego poziomu.');\n                    if(res.data.portal){\n                        document.getElementById('awProfileBox').innerHTML=renderPortalProfile(res.data.portal);\n                    }\n                }\n            }).catch(()=>{\n                btn.disabled = false;\n                btn.textContent = oldText;\n                alert('B\u0142\u0105d po\u0142\u0105czenia z serwerem.');\n            });\n        });\n        function renderQuestion(){\n            if(state.current>=state.questions.length){startReview();return;}\n            const q=state.questions[state.current]; state.secondsLeft=state.timeLimit; state.questionStarted=Date.now();\n            document.getElementById('awProgress').textContent='Pytanie '+(state.current+1)+'\/'+state.questions.length;\n            document.getElementById('awTimer').textContent=state.secondsLeft;\n            document.getElementById('awQuestion').textContent=q.question;\n            document.getElementById('awImage').innerHTML=q.image_url?'<img decoding=\"async\" class=\"aw-q-image\" src=\"'+escapeHtml(q.image_url)+'\" alt=\"Obrazek do pytania\">':'';\n            const ans=document.getElementById('awAnswers'); ans.innerHTML='';\n            const minAnswers = parseInt(q.min_answers || 1, 10);\n            const maxAnswers = parseInt(q.max_answers || 1, 10);\n            const instruction = document.createElement('div');\n            instruction.className = 'aw-answer-rule';\n            instruction.style.margin = '0 0 10px';\n            instruction.style.fontWeight = '700';\n            instruction.textContent = q.answer_hint || (minAnswers === maxAnswers ? 'Wybierz dok\u0142adnie '+minAnswers+' odpowied\u017a\/odpowiedzi.' : 'Wybierz od '+minAnswers+' do '+maxAnswers+' odpowiedzi.');\n            ans.appendChild(instruction);\n\n            [['A',q.answer_a],['B',q.answer_b],['C',q.answer_c],['D',q.answer_d]].forEach(a=>{\n                const label=document.createElement('label');\n                label.className='aw-answer';\n                label.style.display='block';\n                label.style.cursor='pointer';\n                label.innerHTML='<input type=\"checkbox\" class=\"aw-answer-check\" value=\"'+a[0]+'\" style=\"margin-right:8px;\"> <strong>'+a[0]+'.<\/strong> '+escapeHtml(a[1]);\n                ans.appendChild(label);\n            });\n\n            const msgBox=document.createElement('div');\n            msgBox.id='awAnswerMsg';\n            msgBox.className='aw-message err';\n            msgBox.style.display='none';\n            ans.appendChild(msgBox);\n\n            const nextBtn=document.createElement('button');\n            nextBtn.type='button';\n            nextBtn.className='aw-btn';\n            nextBtn.textContent='Zatwierd\u017a odpowied\u017a';\n            nextBtn.style.marginTop='10px';\n            nextBtn.onclick=()=>answerSelected(false);\n            ans.appendChild(nextBtn);\n\n            clearInterval(state.timer); state.timer=setInterval(()=>{state.secondsLeft--;document.getElementById('awTimer').textContent=state.secondsLeft;if(state.secondsLeft<=0){answerSelected(true);}},1000);\n        }\n        function answerSelected(timeout){\n            const q=state.questions[state.current];\n            const selected=[...document.querySelectorAll('#awAnswers .aw-answer-check:checked')].map(el=>el.value).sort();\n            const minAnswers = parseInt(q.min_answers || 1, 10);\n            const maxAnswers = parseInt(q.max_answers || 1, 10);\n\n            if(!timeout && (selected.length < minAnswers || selected.length > maxAnswers)){\n                const msgEl=document.getElementById('awAnswerMsg');\n                if(msgEl){\n                    msgEl.style.display='block';\n                    msgEl.textContent = minAnswers === maxAnswers\n                        ? 'Musisz zaznaczy\u0107 dok\u0142adnie '+minAnswers+' odpowied\u017a\/odpowiedzi.'\n                        : 'Musisz zaznaczy\u0107 od '+minAnswers+' do '+maxAnswers+' odpowiedzi.';\n                }\n                return;\n            }\n\n            clearInterval(state.timer);\n            const used=Math.min(state.timeLimit, Math.max(0, Math.round((Date.now()-state.questionStarted)\/1000)));\n            state.answers.push({question_id:q.id, answer:selected, time_used:used});\n            state.current++;\n            renderQuestion();\n        }\n        function startReview(){\n            show('awStepReview'); document.getElementById('awReviewTimer').textContent=state.reviewLeft;\n            const list=document.getElementById('awReviewList'); list.innerHTML='';\n            state.questions.forEach((q,i)=>{const a=state.answers[i]||{}; const userAns=Array.isArray(a.answer)?(a.answer.length?a.answer.join('+'):'brak'):(a.answer?String(a.answer):'brak'); const div=document.createElement('div');div.style.margin='8px 0';div.innerHTML='<strong>'+(i+1)+'.<\/strong> '+escapeHtml(q.question)+'<br>Twoja odpowied\u017a: <strong>'+escapeHtml(userAns)+'<\/strong>';list.appendChild(div);});\n            clearInterval(state.reviewTimer); state.reviewTimer=setInterval(()=>{state.reviewLeft--;document.getElementById('awReviewTimer').textContent=state.reviewLeft;if(state.reviewLeft<=0){finishTest();}},1000);\n        }\n        document.getElementById('awFinishNow').addEventListener('click',finishTest);\n        function finishTest(){\n            clearInterval(state.reviewTimer); show('awStepResult'); document.getElementById('awResultBox').innerHTML='<p>Obliczam wynik...<\/p>';\n            post('aw_submit_test',{level:state.level,email:state.email,answers:JSON.stringify(state.answers)}).then(res=>{\n                if(res.success){\n                    console.log('AW submit result v2.05', res.data);\n                    let html = '<div class=\"aw-result-summary\">'\n                        + '<p><strong>Poziom:<\/strong> '+escapeHtml(levelLabels[state.level])+'<\/p>'\n                        + '<p><strong>Poprawne odpowiedzi:<\/strong> '+res.data.correct+'\/'+res.data.total+'<\/p>'\n                        + '<p><strong>B\u0142\u0119dne odpowiedzi:<\/strong> '+res.data.wrong+'<\/p>'\n                        + '<p><strong>Punkty z testu:<\/strong> '+res.data.score+'<\/p>'\n                        + '<\/div>';\n\n                    if(res.data.is_retake){\n                        const boxClass = res.data.improvement_status === 'better' ? 'aw-correct-answer' : 'aw-mistake';\n                        html += '<div class=\"'+boxClass+'\" style=\"margin-top:14px;\">'\n                            + '<strong>\ud83c\udfaf Doskonalenie wyniku<\/strong><br>'\n                            + escapeHtml(res.data.improvement_message || '') +\n                            '<\/div>';\n                    }\n\n                    if(res.data.perfect_result_message){\n                        html += '<div class=\"aw-correct-answer\" style=\"margin-top:14px;\">'\n                            + '<strong>\ud83c\udfc6 Wynik idealny<\/strong><br>'\n                            + escapeHtml(res.data.perfect_result_message || '')\n                            + '<\/div>';\n                    }\n\n                    if(res.data.next_retake_date){\n                        const retakePrompt = res.data.next_retake_prompt || 'Kolejne podej\u015bcie do tego poziomu b\u0119dzie dost\u0119pne od:';\n                        html += '<div class=\"aw-result-summary\" style=\"margin-top:14px;\">'\n                            + '<strong>\ud83c\udfaf Chcesz osi\u0105gn\u0105\u0107 jeszcze lepszy wynik?<\/strong><br>'\n                            + escapeHtml(retakePrompt)+' <strong>'+escapeHtml(res.data.next_retake_date)+'<\/strong>.'\n                            + '<\/div>';\n                    }\n\n                    if(res.data.mistakes && res.data.mistakes.length){\n                        html += '<h3 class=\"aw-mistakes-title\">Pytania wymagaj\u0105ce poprawy<\/h3>';\n                        res.data.mistakes.forEach((m, idx)=>{\n                            html += '<div class=\"aw-mistake\">'\n                                + '<div class=\"aw-mistake-question\">\u274c Pytanie '+(idx+1)+': '+escapeHtml(m.question)+'<\/div>'\n                                + (m.image_url ? '<img decoding=\"async\" class=\"aw-q-image\" src=\"'+escapeHtml(m.image_url)+'\" alt=\"Obrazek do pytania\">' : '')\n                                + '<div class=\"aw-user-answer\"><strong>Twoja odpowied\u017a:<\/strong><br>'+escapeHtml(m.user_answer_label)+'<br>'+escapeHtml(m.user_answer_text).replace(\/\\n\/g,'<br>')+'<\/div>'\n                                + '<div class=\"aw-correct-answer\"><strong>Poprawna odpowied\u017a:<\/strong><br>'+escapeHtml(m.correct_answer_label)+'<br>'+escapeHtml(m.correct_answer_text).replace(\/\\n\/g,'<br>')+'<\/div>';\n                            if(m.explanation){\n                                html += '<div class=\"aw-explanation\"><strong>Wyja\u015bnienie:<\/strong><br>'+escapeHtml(m.explanation)+'<\/div>';\n                            }\n                            html += '<\/div>';\n                        });\n                    } else {\n                        html += '<div class=\"aw-correct-answer\"><strong>\u015awietnie!<\/strong><br>Nie masz \u017cadnych b\u0142\u0119dnych odpowiedzi w tym te\u015bcie.<\/div>';\n                    }\n                    const academyUrl = (res.data.referral_link || 'https:\/\/radiowir.co.uk\/akademia-wedzarnika\/').split('?')[0];\n                    const shareText = '\ud83c\udfc6 Uko\u0144czy\u0142em test Akademii W\u0119dzarnika!\\n\\n'\n                        + '\ud83d\udc64 Ksywa: ' + (state.nickname || 'Uczestnik') + '\\n'\n                        + '\ud83c\udf93 Poziom: ' + levelLabels[state.level] + '\\n'\n                        + '\ud83c\udfaf Wynik: ' + res.data.score + ' pkt\\n'\n                        + '\u2705 Poprawne odpowiedzi: ' + res.data.correct + '\/' + res.data.total + '\\n\\n'\n                        + 'Sprawd\u017a swoj\u0105 wiedz\u0119 i do\u0142\u0105cz do rywalizacji:\\n'\n                        + academyUrl;\n\n                    html += '<div class=\"aw-share-box\">'\n                        + '<h3>\ud83d\udce3 Pochwal si\u0119 wynikiem<\/h3>'\n                        + '<p>Skopiuj gotowy tekst i wklej go na Facebooku lub w komentarzu na grupie.<\/p>'\n                        + '<textarea class=\"aw-share-text\" id=\"awShareText\" readonly>'+escapeHtml(shareText)+'<\/textarea>'\n                        + '<p><button type=\"button\" class=\"aw-btn\" id=\"awCopyShare\">\ud83d\udccb Kopiuj tekst wyniku<\/button><\/p>'\n                        + '<div class=\"aw-copy-ok\" id=\"awCopyMsg\">Skopiowano tekst wyniku do schowka.<\/div>'\n                        + '<\/div>';\n\n                    if(parseInt(res.data.correct, 10) >= 8 && parseInt(res.data.certificate_active || 0, 10) === 1){\n                        const certificateUrl = res.data.certificate_url || '';\n                        const verifyUrl = res.data.private_verify_url || res.data.verify_url || '';\n                        html += '<div class=\"aw-result-summary aw-certificate-ready\" style=\"margin-top:16px;\">'\n                            + '<h3>\ud83d\udcdc Certyfikat Akademii jest gotowy<\/h3>'\n                            + '<p><strong>Gratulacje!<\/strong> Wynik minimum 8\/10 uprawnia Ci\u0119 do certyfikatu.<\/p>'\n                            + (res.data.certificate_no ? '<p><strong>Numer certyfikatu:<\/strong> '+escapeHtml(res.data.certificate_no)+'<\/p>' : '')\n                            + '<div class=\"aw-cert-actions\" style=\"display:flex;gap:10px;flex-wrap:wrap;margin-top:10px;\">'\n                            + (certificateUrl ? '<a class=\"aw-btn\" href=\"'+escapeHtml(certificateUrl)+'\" target=\"_blank\" rel=\"noopener\">\ud83d\udc41 Otw\u00f3rz certyfikat<\/a>' : '')\n                            + (verifyUrl ? '<a class=\"aw-btn secondary\" href=\"'+escapeHtml(verifyUrl)+'\" target=\"_blank\" rel=\"noopener\">\ud83d\udd0d Weryfikacja<\/a>' : '')\n                            + '<\/div>'\n                            + '<p style=\"font-size:13px;color:#555!important;margin-top:10px;\">Po otwarciu certyfikatu u\u017cyj <strong>Ctrl+P<\/strong> i wybierz \u201eZapisz jako PDF\u201d albo \u201eDrukuj\u201d.<\/p>';\n\n                        const nextLevelMap = {beginner:'practitioner', practitioner:'expert', expert:'master'};\n                        if(nextLevelMap[state.level]){\n                            html += '<div class=\"aw-correct-answer\" style=\"margin-top:10px;\"><strong>\ud83c\udf89 Odblokowano kolejny poziom:<\/strong><br>' + escapeHtml(titleLabels[nextLevelMap[state.level]] || levelLabels[nextLevelMap[state.level]]) + '<\/div>';\n                        } else if(state.level === 'master'){\n                            html += '<div class=\"aw-correct-answer\" style=\"margin-top:10px;\"><strong>\ud83c\udfc6 Gratulacje!<\/strong><br>Uko\u0144czy\u0142e\u015b pe\u0142n\u0105 \u015bcie\u017ck\u0119 Akademii W\u0119dzarnika.<\/div>';\n                        }\n\n                        html += '<\/div>';\n                    }\n\n                    if(res.data.player_code){\n                        html += '<div class=\"aw-result-summary\" style=\"margin-top:16px;\">'\n                            + '<h3>\ud83c\udf81 Pole\u0107 Akademi\u0119 znajomym<\/h3>'\n                            + '<p><strong>Tw\u00f3j numer zawodnika:<\/strong> '+escapeHtml(res.data.player_code)+'<\/p>'\n                            + '<p><strong>Tw\u00f3j link polecaj\u0105cy:<\/strong><br><input type=\"text\" readonly value=\"'+escapeHtml(res.data.referral_link)+'\" style=\"width:100%;padding:8px;border:1px solid #ccc;border-radius:8px;color:#111!important;background:#fff!important\" onclick=\"this.select();\"><\/p>'\n                            + '<p><strong>Polecone osoby:<\/strong> '+escapeHtml(res.data.referral_count)+' | <strong>Punkty za polecenia:<\/strong> '+escapeHtml(res.data.referral_points)+'<\/p>'\n                            + '<\/div>';\n                    }\n                    document.getElementById('awResultBox').innerHTML = html;\n                    const copyBtn = document.getElementById('awCopyShare');\n                    if(copyBtn){\n                        copyBtn.addEventListener('click', function(){\n                            const text = document.getElementById('awShareText').value;\n                            const done = function(){document.getElementById('awCopyMsg').style.display='block';};\n                            if(navigator.clipboard && navigator.clipboard.writeText){\n                                navigator.clipboard.writeText(text).then(done).catch(function(){document.getElementById('awShareText').select();document.execCommand('copy');done();});\n                            } else {\n                                document.getElementById('awShareText').select();document.execCommand('copy');done();\n                            }\n                        });\n                    }\n\n                    const certBtn = document.getElementById('awCertificateBtn');\n                    if(certBtn){\n                        certBtn.addEventListener('click', function(){\n                            const certWindow = window.open('', '_blank');\n                            if(!certWindow){\n                                alert('Przegl\u0105darka zablokowa\u0142a nowe okno. Zezw\u00f3l na wyskakuj\u0105ce okna dla tej strony.');\n                                return;\n                            }\n\n                            const certTitle = titleLabels[state.level] || levelLabels[state.level] || 'Uczestnik';\n                            const certLevel = levelLabels[state.level] || state.level;\n                            const today = new Date().toLocaleDateString('pl-PL');\n                            const certNoPrefix = {beginner:'AW-N', practitioner:'AW-P', expert:'AW-Z', master:'AW-M'}[state.level] || 'AW-C';\n                            const playerDigits = String(res.data.player_code || '').replace(\/\\D\/g, '') || String(res.data.result_id || Date.now()).slice(-6);\n                            const certNo = certNoPrefix + '-' + new Date().getFullYear() + '-' + playerDigits.padStart(6, '0');\n                            const academyUrl = (awCertConfig.certificateBaseUrl || awCertConfig.academyUrl || '\/').split('?')[0];\n                            const verifyUrl = awMakeUrl(awCertConfig.verificationBaseUrl || '\/weryfikacja-certyfikatu\/', 'aw_verify_no', certNo);\n                            const qrUrl = 'https:\/\/api.qrserver.com\/v1\/create-qr-code\/?size=150x150&data=' + encodeURIComponent(verifyUrl);\n                            const logoHtml = awCertConfig.logoUrl\n                                ? '<img decoding=\"async\" class=\"aw-cert-logo-img\" src=\"'+escapeHtml(awCertConfig.logoUrl)+'\" alt=\"Akademia W\u0119dzarnika\">'\n                                : '<div class=\"aw-cert-logo-text\"><div class=\"aw-cert-logo-top\">AKADEMIA<\/div><div class=\"aw-cert-logo-main\">W\u0118DZARNIKA<\/div><div class=\"aw-cert-logo-sub\">WIEDZA \u2022 PASJA \u2022 SMAK<\/div><\/div>';\n                            const sponsorHtml = awCertConfig.sponsorLogoUrl\n                                ? '<img decoding=\"async\" class=\"aw-sponsor-img\" src=\"'+escapeHtml(awCertConfig.sponsorLogoUrl)+'\" alt=\"Sponsor certyfikatu\">'\n                                : '<div class=\"aw-sponsor-placeholder\">MIEJSCE NA<br>LOGO SPONSORA<\/div>';\n                            const sponsorName = awCertConfig.sponsorName ? '<div class=\"aw-sponsor-name\">'+escapeHtml(awCertConfig.sponsorName)+'<\/div>' : '';\n                            const sponsorCode = awCertConfig.sponsorCode ? '<div class=\"aw-sponsor-code\">Kod: '+escapeHtml(awCertConfig.sponsorCode)+'<\/div>' : '';\n                            const sponsorLink = awCertConfig.sponsorLink ? '<div class=\"aw-sponsor-link\"><a href=\"'+escapeHtml(awCertConfig.sponsorLink)+'\" target=\"_blank\" rel=\"noopener\">Odwied\u017a sponsora<\/a><\/div>' : '';\n                            const sponsorBgUrl = awCertConfig.sponsorBackgroundUrl || '';\n                            const certBackgroundStyle = sponsorBgUrl\n                                ? \"background-image:linear-gradient(rgba(255,248,232,.78),rgba(245,223,182,.78)),url('\" + String(sponsorBgUrl).replace(\/'\/g, \"%27\") + \"');background-size:cover;background-position:center;background-repeat:no-repeat;\"\n                                : \"\";\n\n                            const certHtml = `<!doctype html>\n<html lang=\"pl\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Certyfikat Akademii W\u0119dzarnika<\/title>\n<style>\n    @page{size:A4 portrait;margin:8mm;}\n    *{box-sizing:border-box;}\n    body{margin:0;background:#2b160a;font-family:Georgia,'Times New Roman',serif;color:#2a170c;-webkit-print-color-adjust:exact;print-color-adjust:exact;}\n    .aw-cert-page{width:210mm;min-height:297mm;margin:0 auto;background:linear-gradient(135deg,#2b160a,#5d3115 35%,#2b160a);padding:9mm;}\n    .aw-cert{position:relative;min-height:279mm;background:radial-gradient(circle at center,#fff8e8 0,#f5dfb6 52%,#e6c48a 100%);-webkit-print-color-adjust:exact;print-color-adjust:exact;border:7px solid #3a1d0c;outline:4px solid #c07a27;box-shadow:0 0 0 6px #1e0f07 inset,0 18px 40px rgba(0,0,0,.45);padding:18mm 15mm 13mm;overflow:hidden;text-align:center;}\n    .aw-cert:before{content:'';position:absolute;inset:9mm;border:2px solid rgba(120,65,20,.45);pointer-events:none;}\n    .aw-cert:after{content:'';position:absolute;left:0;right:0;top:0;height:32mm;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0));pointer-events:none;}\n    .aw-orn{position:absolute;width:36mm;height:36mm;border-color:#8a4a16;color:#8a4a16;opacity:.9;}\n    .aw-orn.tl{top:8mm;left:8mm;border-top:4px solid;border-left:4px solid;border-radius:18mm 0 0 0;}\n    .aw-orn.tr{top:8mm;right:8mm;border-top:4px solid;border-right:4px solid;border-radius:0 18mm 0 0;}\n    .aw-orn.bl{bottom:8mm;left:8mm;border-bottom:4px solid;border-left:4px solid;border-radius:0 0 0 18mm;}\n    .aw-orn.br{bottom:8mm;right:8mm;border-bottom:4px solid;border-right:4px solid;border-radius:0 0 18mm 0;}\n    .aw-cert-logo{height:42mm;margin:0 auto 7mm;display:flex;align-items:center;justify-content:center;}\n    .aw-cert-logo-img{max-height:40mm;max-width:115mm;object-fit:contain;}\n    .aw-cert-logo-text{display:inline-block;padding:7mm 18mm;border:3px solid #4a260e;background:linear-gradient(180deg,#4a260e,#1f1007);color:#f5e2bb;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.35);}\n    .aw-cert-logo-top{font-size:16pt;letter-spacing:5px;font-weight:900;}\n    .aw-cert-logo-main{font-size:30pt;font-weight:900;letter-spacing:2px;color:#fff1cf;text-shadow:2px 2px #000;}\n    .aw-cert-logo-sub{font-size:11pt;letter-spacing:3px;color:#f29b28;font-weight:900;}\n    .aw-cert-title{font-size:47pt;letter-spacing:9px;font-weight:900;margin:3mm 0 0;color:#2a170c;text-shadow:1px 1px #fff2cd;}\n    .aw-cert-subtitle{font-size:15pt;letter-spacing:4px;margin:1mm 0 11mm;color:#6e3b15;text-transform:uppercase;font-weight:900;}\n    .aw-flame{font-size:18pt;color:#bc4d14;margin:1mm 0 4mm;}\n    .aw-cert-small{font-size:16pt;margin:3mm 0;color:#2a170c;}\n    .aw-cert-name{font-size:42pt;line-height:1.1;font-style:italic;font-weight:900;margin:7mm 0 4mm;color:#2b160a;border-bottom:2px solid rgba(120,65,20,.35);display:inline-block;padding:0 22mm 2mm;}\n    .aw-cert-level-wrap{margin:8mm auto 6mm;display:inline-block;position:relative;}\n    .aw-cert-level{font-size:24pt;font-weight:900;letter-spacing:1px;color:#ffe7b1;background:linear-gradient(180deg,#9b3c12,#7a2208);border:3px solid #4b1c09;box-shadow:0 0 0 2px #d09b48 inset,0 6px 13px rgba(0,0,0,.28);padding:5mm 22mm;text-transform:uppercase;}\n    .aw-cert-score{font-size:18pt;margin:2mm 0 7mm;}\n    .aw-cert-score strong{font-size:23pt;color:#9b3c12;}\n    .aw-cert-meta{display:grid;grid-template-columns:1.2fr 1fr 1.2fr;gap:7mm;margin:6mm auto 8mm;max-width:170mm;align-items:stretch;}\n    .aw-meta-box{border:2px solid #b27630;background:rgba(255,250,236,.78);padding:4mm;min-height:20mm;font-size:12pt;}\n    .aw-meta-box strong{display:block;font-size:10pt;text-transform:uppercase;letter-spacing:1px;color:#5c3111;margin-bottom:2mm;}\n    .aw-bottom{display:grid;grid-template-columns:1fr 32mm 1fr;gap:8mm;margin-top:8mm;align-items:center;}\n    .aw-sponsor,.aw-qr{border:2px solid #9a642a;background:rgba(255,250,236,.72);padding:4mm;min-height:44mm;}\n    .aw-sponsor h3,.aw-qr h3{font-size:11pt;letter-spacing:1px;margin:0 0 3mm;text-transform:uppercase;color:#5c3111;}\n    .aw-sponsor-placeholder{height:27mm;border:2px dashed #b9986a;display:flex;align-items:center;justify-content:center;color:#9a8467;font-size:12pt;line-height:1.35;}\n    .aw-sponsor-img{max-height:28mm;max-width:58mm;object-fit:contain;display:block;margin:0 auto;}\n    .aw-sponsor-name{font-weight:900;margin-top:2mm;font-size:11pt;}\n    .aw-sponsor-code{font-size:10pt;margin-top:1mm;color:#8a3c13;font-weight:900;}\n    .aw-sponsor-link{font-size:9pt;margin-top:1mm;font-weight:900;}\n    .aw-sponsor-link a{color:#5c3111;text-decoration:none;}\n    .aw-medal{width:31mm;height:31mm;margin:auto;border-radius:50%;background:radial-gradient(circle,#ffb22e,#81410f 68%,#2b160a);border:3px solid #3a1d0c;color:#fff;display:flex;align-items:center;justify-content:center;font-size:26pt;box-shadow:0 4px 15px rgba(0,0,0,.35);}\n    .aw-qr img{width:30mm;height:30mm;display:block;margin:0 auto 2mm;}\n    .aw-qr-label{font-size:10pt;font-weight:800;letter-spacing:1px;color:#3a1d0c;}\n    .aw-cert-footer{position:absolute;left:18mm;right:18mm;bottom:8mm;background:linear-gradient(180deg,#4a260e,#1f1007);color:#f5e2bb;border:2px solid #c07a27;border-radius:3px;padding:3mm;font-size:11pt;letter-spacing:.4px;}\n    .aw-print{width:210mm;margin:10px auto;text-align:center;}\n    .aw-print button{font-size:16px;padding:12px 22px;border:0;background:#b02020;color:#fff;border-radius:8px;cursor:pointer;font-weight:900;}\n    @media print{body{background:#2b160a!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.aw-cert-page{margin:0;padding:0;background:linear-gradient(135deg,#2b160a,#5d3115 35%,#2b160a)!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.aw-cert{min-height:297mm;border-width:6px;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.aw-print{display:none}}\n<\/style>\n<\/head>\n<body>\n<div class=\"aw-cert-page\">\n  <div class=\"aw-cert\" style=\"${certBackgroundStyle}\">\n    <div class=\"aw-orn tl\"><\/div><div class=\"aw-orn tr\"><\/div><div class=\"aw-orn bl\"><\/div><div class=\"aw-orn br\"><\/div>\n    <div class=\"aw-cert-logo\">${logoHtml}<\/div>\n    <div class=\"aw-cert-title\">CERTYFIKAT<\/div>\n    <div class=\"aw-cert-subtitle\">uko\u0144czenia Akademii W\u0119dzarnika<\/div>\n    <div class=\"aw-flame\">\ud83d\udd25<\/div>\n    <p class=\"aw-cert-small\">Niniejszym potwierdza si\u0119, \u017ce<\/p>\n    <div class=\"aw-cert-name\">${escapeHtml(state.nickname || 'Uczestnik')}<\/div>\n    <p class=\"aw-cert-small\">uzyska\u0142 tytu\u0142<\/p>\n    <div class=\"aw-cert-level-wrap\"><div class=\"aw-cert-level\">${escapeHtml(certTitle)}<\/div><\/div>\n    <div class=\"aw-cert-score\">Wynik egzaminu: <strong>${res.data.correct}\/${res.data.total}<\/strong><\/div>\n    <div class=\"aw-cert-meta\">\n      <div class=\"aw-meta-box\"><strong>Nr certyfikatu<\/strong>${escapeHtml(certNo)}<\/div>\n      <div class=\"aw-meta-box\"><strong>Poziom<\/strong>${escapeHtml(certLevel)}<\/div>\n      <div class=\"aw-meta-box\"><strong>Data wygenerowania<\/strong>${today}<\/div>\n    <\/div>\n    <div class=\"aw-bottom\">\n      <div class=\"aw-sponsor\"><h3>Sponsor certyfikatu<\/h3>${sponsorHtml}${sponsorName}${sponsorCode}${sponsorLink}<\/div>\n      <div class=\"aw-medal\">\ud83c\udfc6<\/div>\n      <div class=\"aw-qr\"><h3>Sprawd\u017a autentyczno\u015b\u0107<\/h3><img decoding=\"async\" src=\"${qrUrl}\" alt=\"QR\"><div class=\"aw-qr-label\">SKANUJ MNIE<\/div><\/div>\n    <\/div>\n    <div class=\"aw-cert-footer\">Certyfikat wygenerowany przez Akademi\u0119 W\u0119dzarnika<\/div>\n  <\/div>\n<\/div>\n<div class=\"aw-print\"><button onclick=\"window.print()\">Drukuj \/ Zapisz jako PDF<\/button><\/div>\n<\/body>\n<\/html>`;\n                            certWindow.document.open();\n                            certWindow.document.write(certHtml);\n                            certWindow.document.close();\n                        });\n                    }\n                }\n                else {document.getElementById('awResultBox').innerHTML='<p>'+escapeHtml(res.data.message||'Nie uda\u0142o si\u0119 zapisa\u0107 wyniku.')+'<\/p>';}\n            }).catch(()=>{document.getElementById('awResultBox').innerHTML='<p>B\u0142\u0105d po\u0142\u0105czenia z serwerem.<\/p>';});\n        }\n        function escapeHtml(s){return String(s||'').replace(\/[&<>'\"]\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;',\"'\":'&#039;','\"':'&quot;'}[c]));}\n    })();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":1,"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":13,"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/13"}],"wp:attachment":[{"href":"https:\/\/akademia-wedzarnika.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}