{"id":4171,"date":"2025-10-25T22:46:32","date_gmt":"2025-10-25T20:46:32","guid":{"rendered":"https:\/\/hilaris-blonie.pl\/?page_id=4171"},"modified":"2026-08-29T12:16:16","modified_gmt":"2026-08-29T10:16:16","slug":"certyfikaty-cambridge","status":"publish","type":"page","link":"https:\/\/hilaris-blonie.pl\/?page_id=4171","title":{"rendered":"Certyfikaty Cambridge"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4171\" class=\"elementor elementor-4171\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22fa7fd e-flex e-con-boxed e-con e-parent\" data-id=\"22fa7fd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9034692 elementor-widget elementor-widget-html\" data-id=\"9034692\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ==========================================================================\n     HILARIS \u2014 NASZE SUKCESY \u2192 CERTYFIKATY CAMBRIDGE (page_id=4171)\n     WYMAGA rdzenia (hilaris-CORE.html).\n     Jeden kod obs\u0142uguje telefon i komputer \u2014 nie ma osobnej wersji mobilnej.\n     \u25b8 AKTUALIZACJA DANYCH: obiekt CAM w dolnej cz\u0119\u015bci pliku.\n     ---------------------------------------------------------------------------\n     DANE: rok szkolny 2025\/2026 \u2014 100% zdawalno\u015bci.\n           Kolejne sesje: grudzie\u0144 2026 oraz maj i czerwiec 2027.\n     ---------------------------------------------------------------------------\n     CO JEST NA STRONIE (kolejno od g\u00f3ry):\n       1. strza\u0142ka powrotu \u201eSzko\u0142a Podstawowa\u201d\n       2. nag\u0142\u00f3wek w stylu pozosta\u0142ych podstron: nadtytu\u0142 \u201eNasze sukcesy\u201d,\n          tytu\u0142 \u201eCertyfikaty Cambridge\u201d, wst\u0119p\n       3. granatowa karta wyniku: logo Cambridge, pier\u015bcie\u0144, kt\u00f3ry sam si\u0119\n          rysuje, i licznik odliczaj\u0105cy do 100% \u2014 rusza dopiero wtedy, gdy\n          karta wjedzie w widok\n       4. trzy liczby: zdawalno\u015b\u0107, poziom egzamin\u00f3w, sesje w roku\n       5. galeria zdj\u0119\u0107 z wr\u0119czenia certyfikat\u00f3w \u2014 klikni\u0119cie otwiera du\u017cy\n          podgl\u0105d (strza\u0142ki, Esc, przesuwanie palcem)\n       6. terminarz kolejnych sesji z odliczaniem do najbli\u017cszej\n       7. kafelki \u201ePowi\u0105zane strony\u201d\n       8. przyklejony dolny pasek szybkich akcji (telefon i tablet)\n     ---------------------------------------------------------------------------\n     RESPONSYWNO\u015a\u0106 (jeden kod, bez osobnej wersji mobilnej):\n       \u2022 telefon   \u2014 wszystko w jednej kolumnie, pier\u015bcie\u0144 nad opisem,\n                     galeria po dwa zdj\u0119cia w rz\u0119dzie\n       \u2022 od 700 px \u2014 liczby po trzy w rz\u0119dzie, sesje obok siebie\n       \u2022 od 900 px \u2014 karta wyniku rozk\u0142ada si\u0119 w poziomie (pier\u015bcie\u0144 po lewej,\n                     opis po prawej), galeria po cztery zdj\u0119cia, kafelki po cztery\n       \u2022 poni\u017cej 360 px \u2014 mniejsze odst\u0119py i czcionki, nic nie wystaje\n       \u2022 nic nie ma sta\u0142ej szeroko\u015bci w pikselach, d\u0142ugie nazwy si\u0119 \u0142ami\u0105,\n         wi\u0119c na \u017cadnej szeroko\u015bci nie pojawia si\u0119 poziomy suwak\n     ---------------------------------------------------------------------------\n     ANIMACJE: pier\u015bcie\u0144 i licznik ruszaj\u0105 przy wej\u015bciu w widok (jeden raz),\n     zdj\u0119cia wje\u017cd\u017caj\u0105 kaskadowo, du\u017cy podgl\u0105d otwiera si\u0119 p\u0142ynnie.\n     Wszystko wy\u0142\u0105cza si\u0119 automatycznie, gdy w systemie w\u0142\u0105czona jest opcja\n     ograniczenia ruchu (prefers-reduced-motion) \u2014 wtedy wida\u0107 od razu\n     gotowy wynik, bez animacji.\n     ========================================================================== -->\n<style>\n\/* \u2550\u2550 NAG\u0141\u00d3WEK STRONY BEZ PUSTEJ PRZESTRZENI \u2550\u2550\n   W rdzeniu nag\u0142\u00f3wek podstrony ma zapas wysoko\u015bci na zdj\u0119cie w tle.\n   Ta strona zdj\u0119cia w nag\u0142\u00f3wku nie ma, wi\u0119c zerujemy minimaln\u0105 wysoko\u015b\u0107\n   i dajemy w\u0142asne odst\u0119py \u2014 tekst podci\u0105ga si\u0119 do g\u00f3ry. *\/\n.hx-cam .hx-hero{\n  min-height:0 !important;\n  height:auto !important;\n  display:block !important;\n  padding:28px 18px 32px !important;\n}\n.hx-cam .hx-hero__c{margin:0 !important;padding:0 !important;}\n.hx-cam .hx-hero .hx-kicker{margin-top:0 !important;}\n.hx-cam .hx-h{text-align:center;}\n.hx-cam .hx-sub{text-align:center;max-width:64ch;margin-left:auto;margin-right:auto;}\n\/* Kafelki: nie rozpychaj\u0105 siatki d\u0142ugim s\u0142owem, tre\u015b\u0107 na \u015brodku *\/\n.hx-cam .hx-grid{grid-template-columns:repeat(var(--cols),minmax(0,1fr));}\n.hx-cam .hx-tile{min-width:0;overflow-wrap:anywhere;text-align:center;\n  display:flex;flex-direction:column;align-items:center;}\n.hx-cam .hx-tile .hx-ic{margin-left:auto;margin-right:auto;}\n.hx-cam .hx-tile b,.hx-cam .hx-tile u{display:block;width:100%;text-align:center;}\n\n\/* \u2550\u2550 GRANATOWA KARTA WYNIKU \u2550\u2550 *\/\n.hx-cam .cm-hero{position:relative;overflow:hidden;background:var(--navy);color:#fff;\n  border-radius:var(--r,14px);padding:26px 20px 28px;text-align:center;}\n\/* delikatna z\u0142ota po\u015bwiata w tle \u2014 czysto dekoracyjna, nie \u0142apie klikni\u0119\u0107 *\/\n.hx-cam .cm-hero::before{content:\"\";position:absolute;inset:-40% -20% auto -20%;height:150%;\n  background:radial-gradient(60% 60% at 50% 0%,rgba(217,164,23,.28),transparent 70%);\n  pointer-events:none;}\n.hx-cam .cm-hero > *{position:relative;}\n\/* Logo Cambridge w naturalnych kolorach, na bia\u0142ej plakietce.\n   UWAGA: nie wolno nak\u0142ada\u0107 na nie filtr\u00f3w typu brightness(0) invert(1) \u2014\n   herb ma wtedy jednolite wype\u0142nienie i zamienia si\u0119 w pust\u0105 bia\u0142\u0105 tarcz\u0119.\n   Plakietka daje jasne t\u0142o, dzi\u0119ki czemu logo czyta si\u0119 na granacie. *\/\n.hx-cam .cm-znak{display:inline-flex;align-items:center;justify-content:center;\n  background:#fff;border-radius:16px;padding:12px 18px;margin:0 auto 16px;\n  box-shadow:0 14px 30px -20px rgba(0,0,0,.85);}\n.hx-cam .cm-logo{width:96px;max-width:40vw;height:auto;display:block;}\n.hx-cam .cm-lead{color:#C6D7E5;font-size:.9rem;line-height:1.6;max-width:52ch;margin:0 auto;}\n\n\/* pier\u015bcie\u0144 z licznikiem *\/\n.hx-cam .cm-ring{position:relative;width:min(238px,64vw);aspect-ratio:1;margin:20px auto 4px;}\n.hx-cam .cm-ring svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible;}\n.hx-cam .cm-ring circle{fill:none;stroke-linecap:round;}\n.hx-cam .cm-ring .cm-bg{stroke:rgba(255,255,255,.14);}\n.hx-cam .cm-ring .cm-fg{stroke:url(#cmGrad);\n  stroke-dasharray:var(--obw);stroke-dashoffset:var(--obw);\n  transition:stroke-dashoffset 1.8s cubic-bezier(.22,1,.36,1);\n  filter:drop-shadow(0 0 10px rgba(240,198,74,.55));}\n.hx-cam .cm-ring.go .cm-fg{stroke-dashoffset:var(--cel);}\n.hx-cam .cm-num{position:absolute;inset:0;display:flex;flex-direction:column;\n  align-items:center;justify-content:center;gap:2px;}\n.hx-cam .cm-num b{font-family:'Fraunces',Georgia,serif;font-weight:700;line-height:1;\n  font-size:clamp(2.9rem,13vw,4.2rem);color:var(--gold-l);\n  font-variant-numeric:tabular-nums;letter-spacing:-.02em;}\n.hx-cam .cm-num b i{font-style:normal;font-size:.46em;vertical-align:super;margin-left:2px;}\n.hx-cam .cm-num u{text-decoration:none;font-size:.66rem;font-weight:800;letter-spacing:.14em;\n  text-transform:uppercase;color:#9FB8CB;}\n.hx-cam .cm-what{font-size:1.02rem;font-weight:700;margin-top:8px;line-height:1.35;}\n.hx-cam .cm-what span{display:block;color:var(--gold-l);font-size:.86rem;font-weight:700;margin-top:4px;}\n\/* iskierki po doj\u015bciu do 100% \u2014 malutkie, gasn\u0105 same *\/\n.hx-cam .cm-spark{position:absolute;left:50%;top:50%;width:7px;height:7px;border-radius:50%;\n  background:var(--gold-l);opacity:0;pointer-events:none;}\n.hx-cam .cm-ring.done .cm-spark{animation:cm-spark 1.15s ease-out forwards;}\n@keyframes cm-spark{\n  0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateX(0) scale(.4);}\n  25%{opacity:1;}\n  100%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateX(var(--r2)) scale(.9);}\n}\n\n\/* \u2550\u2550 TRZY LICZBY \u2550\u2550 *\/\n.hx-cam .cm-nums{display:grid;grid-template-columns:1fr;gap:10px;margin-top:18px;}\n.hx-cam .cm-n{background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--c);\n  border-radius:var(--r,14px);padding:15px 17px;text-align:left;min-width:0;}\n.hx-cam .cm-n b{display:block;font-family:'Fraunces',Georgia,serif;font-size:1.7rem;line-height:1;\n  color:var(--c);}\n.hx-cam .cm-n u{text-decoration:none;display:block;font-size:.65rem;font-weight:800;\n  letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-top:8px;}\n.hx-cam .cm-n span{display:block;font-size:.85rem;color:var(--ink-2);margin-top:3px;line-height:1.45;\n  overflow-wrap:anywhere;}\n\n\/* \u2550\u2550 GALERIA \u2550\u2550 *\/\n.hx-cam .cm-gal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}\n\/* Kafelek galerii to <button>, wi\u0119c \u2014 tak jak przyciski podgl\u0105du \u2014 musi by\u0107\n   odporny na style przycisk\u00f3w z motywu strony. *\/\n.hx-cam .cm-g{position:relative;display:block;\n  -webkit-appearance:none !important;appearance:none !important;\n  padding:0 !important;margin:0;font:inherit;color:inherit;text-shadow:none;\n  border:2px solid var(--line) !important;box-shadow:none;\n  border-radius:var(--r,14px);overflow:hidden;background:var(--mist) !important;cursor:zoom-in;\n  aspect-ratio:4\/3;min-width:0;\n  opacity:0;transform:translateY(20px) scale(.97);\n  transition:opacity .6s ease,transform .6s ease,border-color .3s ease,box-shadow .3s ease;}\n.hx-cam .cm-g.in{opacity:1;transform:none;}\n.hx-cam .cm-g img{width:100%;height:100%;object-fit:cover;display:block;\n  transition:transform .6s cubic-bezier(.22,1,.36,1);}\n.hx-cam .cm-g:hover,.hx-cam .cm-g:focus-visible{border-color:var(--gold) !important;\n  box-shadow:0 18px 36px -26px rgba(14,43,77,.75);outline:none;}\n.hx-cam .cm-g:hover img,.hx-cam .cm-g:focus-visible img{transform:scale(1.07);}\n.hx-cam .cm-g::after{content:\"\";position:absolute;inset:0;\n  background:linear-gradient(180deg,transparent 55%,rgba(10,31,58,.55));\n  opacity:0;transition:opacity .3s ease;}\n.hx-cam .cm-g:hover::after,.hx-cam .cm-g:focus-visible::after{opacity:1;}\n.hx-cam .cm-g em{position:absolute;left:10px;right:10px;bottom:9px;z-index:2;font-style:normal;\n  color:#fff;font-size:.74rem;font-weight:700;line-height:1.3;text-align:left;\n  opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease;}\n.hx-cam .cm-g:hover em,.hx-cam .cm-g:focus-visible em{opacity:1;transform:none;}\n\n\/* \u2550\u2550 DU\u017bY PODGL\u0104D ZDJ\u0118CIA \u2550\u2550\n   UWAGA \u2014 dwie rzeczy s\u0105 tu celowe i nie nale\u017cy ich upraszcza\u0107:\n   1. Skrypt przenosi to okno na sam koniec strony (do <body>), poza blok\n      z tre\u015bci\u0105. Gdyby zosta\u0142o w \u015brodku, wystarczy\u0142by jeden element nadrz\u0119dny\n      z przekszta\u0142ceniem (transform\/filter), \u017ceby \u201eposition:fixed\u201d przesta\u0142o\n      dzia\u0142a\u0107 wzgl\u0119dem ekranu \u2014 okno wchodzi\u0142oby pod g\u00f3rny pasek strony.\n   2. Dlatego selektory NIE zaczynaj\u0105 si\u0119 od \u201e.hx-cam\u201d \u2014 okno jest ju\u017c poza\n      sekcj\u0105. Kolory maj\u0105 wpisane warto\u015bci zapasowe, bo zmienne rdzenia\n      mog\u0105 by\u0107 przypisane do sekcji, a nie do ca\u0142ej strony.\n   Bardzo wysoki z-index stawia okno nad przyklejonym nag\u0142\u00f3wkiem serwisu,\n   a zapasy u g\u00f3ry i u do\u0142u uwzgl\u0119dniaj\u0105 \u201ewci\u0119cia\u201d ekranu w telefonach. *\/\n.cm-box{position:fixed;inset:0;z-index:2147483000;display:none;\n  \/* --cmTop to wysoko\u015b\u0107 pasa u g\u00f3ry, zarezerwowanego na przyklejony nag\u0142\u00f3wek\n     serwisu. Krzy\u017cyk i zdj\u0119cie zaczynaj\u0105 si\u0119 DOPIERO pod nim, wi\u0119c pasek nie\n     zas\u0142ania ich nawet wtedy, gdy motyw wypycha nag\u0142\u00f3wek bardzo wysoko.\n     Je\u015bli nag\u0142\u00f3wek Waszej strony jest wy\u017cszy lub ni\u017cszy \u2014 zmieniamy t\u0119\n     jedn\u0105 liczb\u0119 i wszystko przesuwa si\u0119 razem. *\/\n  --cmTop:74px;   \/* pas u g\u00f3ry na nag\u0142\u00f3wek serwisu *\/\n  --cmBot:58px;   \/* pas u do\u0142u na licznik zdj\u0119\u0107 *\/\n  --cmCap:56px;   \/* miejsce na podpis pod zdj\u0119ciem *\/\n  background:rgba(8,20,36,.94);backdrop-filter:blur(6px);\n  align-items:center;justify-content:center;\n  padding:calc(var(--cmTop) + env(safe-area-inset-top)) 14px calc(var(--cmBot) + env(safe-area-inset-bottom));\n  box-sizing:border-box;overscroll-behavior:contain;}\n\/* niskie ekrany (telefon w poziomie) \u2014 pas na nag\u0142\u00f3wek zostaje bez zmian,\n   zmniejszamy tylko zapas na dole i miejsce na podpis *\/\n@media (max-height:540px){\n  .cm-box{--cmBot:34px;--cmCap:38px;}\n  .cm-box figcaption{font-size:.76rem;margin-top:6px;}\n}\n.cm-box *{box-sizing:border-box;}\n.cm-box.on{display:flex;animation:cm-fade .25s ease;}\n@keyframes cm-fade{from{opacity:0}to{opacity:1}}\n.cm-box img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:12px;display:block;\n  margin:0 auto;box-shadow:0 30px 70px -30px #000;animation:cm-zoom .3s cubic-bezier(.22,1,.36,1);}\n@keyframes cm-zoom{from{opacity:0;transform:scale(.93)}to{opacity:1;transform:none}}\n.cm-box figcaption{color:#C6D7E5;font-size:.84rem;text-align:center;margin:10px auto 0;\n  line-height:1.45;max-width:60ch;}\n.cm-box figure{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;\n  align-items:center;justify-content:center;min-height:0;}\n\/* Wysoko\u015b\u0107 zdj\u0119cia liczymy wprost z wysoko\u015bci ekranu minus oba pasy i miejsce\n   na podpis. Procenty tu nie wystarcz\u0105 \u2014 rodzic nie ma ustalonej wysoko\u015bci,\n   wi\u0119c przegl\u0105darka je ignoruje i na niskim ekranie zdj\u0119cie wychodzi\u0142o poza\n   kadr. Jednostka dvh (je\u015bli przegl\u0105darka j\u0105 zna) uwzgl\u0119dnia chowaj\u0105cy si\u0119\n   pasek adresu w telefonie. *\/\n.cm-box figure img{max-height:calc(100vh - var(--cmTop) - var(--cmBot) - var(--cmCap));}\n@supports (height:100dvh){\n  .cm-box figure img{max-height:calc(100dvh - var(--cmTop) - var(--cmBot) - var(--cmCap));}\n}\n\/* PRZYCISKI PODGL\u0104DU (zamknij, poprzednie, nast\u0119pne)\n   Motyw strony ma w\u0142asne, bardzo mocne style dla znacznika <button> \u2014\n   potrafi\u0105 nadpisa\u0107 kolor, obramowanie i t\u0142o, przez co przyciski robi\u0142y si\u0119\n   jaskrawe i krzywe. Dlatego wszystkie w\u0142asno\u015bci ustawiamy tu wprost,\n   z !important, i zerujemy wygl\u0105d systemowy (appearance).\n   Znaki \u00d7 \u2039 \u203a s\u0105 rysowane jako SVG, a nie pisane czcionk\u0105 \u2014 dzi\u0119ki temu\n   krzy\u017cyk i strza\u0142ki s\u0105 zawsze idealnie na \u015brodku k\u00f3\u0142ka i nie zale\u017c\u0105 od\n   tego, jaki font wczyta strona. *\/\n.cm-box .cm-x,.cm-box .cm-p,.cm-box .cm-nx{\n  position:absolute;z-index:2;\n  -webkit-appearance:none !important;appearance:none !important;\n  \/* min\/max te\u017c musz\u0105 by\u0107 ustawione \u2014 motyw potrafi wymusi\u0107 min-width,\n     kt\u00f3re wygrywa ze zwyk\u0142\u0105 szeroko\u015bci\u0105 i robi z k\u00f3\u0142ka owal *\/\n  width:48px !important;height:48px !important;\n  min-width:48px !important;max-width:48px !important;\n  min-height:48px !important;max-height:48px !important;\n  padding:0 !important;margin:0 !important;flex:none;\n  display:grid !important;place-items:center !important;\n  background:rgba(10,31,58,.88) !important;\n  color:var(--gold-l,#F0C64A) !important;\n  border:2px solid var(--gold,#D9A417) !important;\n  border-radius:50% !important;\n  box-shadow:0 12px 28px -16px rgba(0,0,0,.95) !important;\n  text-shadow:none !important;font:inherit !important;line-height:0 !important;\n  cursor:pointer;outline:none;\n  transition:background .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease;}\n.cm-box .cm-x svg,.cm-box .cm-p svg,.cm-box .cm-nx svg{\n  width:20px;height:20px;display:block;fill:none;stroke:currentColor;\n  stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;}\n.cm-box .cm-x:hover,.cm-box .cm-p:hover,.cm-box .cm-nx:hover,\n.cm-box .cm-x:focus-visible,.cm-box .cm-p:focus-visible,.cm-box .cm-nx:focus-visible{\n  background:var(--gold,#D9A417) !important;color:#1A2C42 !important;}\n.cm-box .cm-x:focus-visible,.cm-box .cm-p:focus-visible,.cm-box .cm-nx:focus-visible{\n  box-shadow:0 0 0 4px rgba(217,164,23,.35) !important;}\n\/* Krzy\u017cyk siedzi tu\u017c PONI\u017bEJ pasa zarezerwowanego na nag\u0142\u00f3wek serwisu \u2014\n   dzi\u0119ki temu jest widoczny niezale\u017cnie od tego, jak wysoko motyw wypycha\n   sw\u00f3j przyklejony pasek, a jednocze\u015bnie stoi nad zdj\u0119ciem. *\/\n.cm-box .cm-x{top:calc(var(--cmTop) + env(safe-area-inset-top) + 8px);right:14px;}\n.cm-box .cm-x:hover,.cm-box .cm-x:focus-visible{transform:scale(1.07);}\n.cm-box .cm-p{left:10px;top:50%;transform:translateY(-50%);}\n.cm-box .cm-nx{right:10px;top:50%;transform:translateY(-50%);}\n.cm-box .cm-p:hover,.cm-box .cm-nx:hover,\n.cm-box .cm-p:focus-visible,.cm-box .cm-nx:focus-visible{transform:translateY(-50%) scale(1.07);}\n.cm-box .cm-licz{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom));\n  left:50%;transform:translateX(-50%);\n  color:#9FB8CB;font-size:.78rem;font-weight:700;letter-spacing:.08em;}\n\n\/* \u2550\u2550 SESJE EGZAMINACYJNE \u2550\u2550 *\/\n.hx-cam .cm-ses{display:grid;grid-template-columns:1fr;gap:12px;}\n.hx-cam .cm-s{background:var(--paper);border:1.5px solid var(--line);\n  border-left:3px solid var(--c);border-radius:var(--r,14px);padding:16px 18px;\n  text-align:left;min-width:0;transition:box-shadow .3s ease,transform .3s ease;}\n.hx-cam .cm-s:hover{box-shadow:0 18px 34px -28px rgba(14,43,77,.6);transform:translateY(-2px);}\n.hx-cam .cm-s.next{border-color:var(--gold);\n  box-shadow:0 0 0 3px rgba(217,164,23,.2),0 14px 30px -26px rgba(14,43,77,.6);}\n.hx-cam .cm-s b{display:block;font-size:1.06rem;line-height:1.25;}\n.hx-cam .cm-s span{display:block;font-size:.88rem;color:var(--ink-2);margin-top:4px;line-height:1.45;}\n.hx-cam .cm-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px;}\n.hx-cam .cm-t{font-size:.68rem;font-weight:800;letter-spacing:.04em;border-radius:999px;padding:4px 10px;\n  background:color-mix(in srgb,var(--c) 15%,transparent);color:var(--c);}\n.hx-cam .cm-t--soon{background:var(--gold);color:#3B2A00;}\n\n\/* \u2550\u2550 BARDZO W\u0104SKIE TELEFONY \u2550\u2550 *\/\n@media (max-width:359px){\n  .hx-cam .cm-hero{padding:20px 14px 22px;}\n  .hx-cam .cm-gal{gap:8px;}\n  .hx-cam .cm-n,.hx-cam .cm-s{padding:13px 14px;}\n  .cm-box .cm-p,.cm-box .cm-nx,.cm-box .cm-x{\n    width:42px !important;height:42px !important;\n    min-width:42px !important;max-width:42px !important;\n    min-height:42px !important;max-height:42px !important;}\n}\n\n\/* \u2550\u2550 ZAPAS NA DOLNY PASEK SZYBKICH AKCJI (telefon i tablet) \u2550\u2550 *\/\n@media (max-width:899px){\n  .hx-cam .hx-sec:last-of-type{padding-bottom:calc(58px + 18px + env(safe-area-inset-bottom));}\n}\n\n\/* \u2550\u2550 OD 700 px \u2550\u2550 *\/\n@media (min-width:700px){\n  .hx-cam .cm-nums{grid-template-columns:repeat(3,minmax(0,1fr));}\n  .hx-cam .cm-ses{grid-template-columns:repeat(3,minmax(0,1fr));}\n  .hx-cam .cm-gal{grid-template-columns:repeat(4,minmax(0,1fr));}\n}\n\n\/* \u2550\u2550 OD 900 px \u2550\u2550 *\/\n@media (min-width:900px){\n  .hx-cam .hx-hero{padding:42px 40px 46px !important;}\n  .hx-cam .hx-grid{grid-template-columns:repeat(var(--cols-d),minmax(0,1fr));}\n  .hx-cam .cm-hero,.hx-cam .cm-nums,.hx-cam .cm-gal,.hx-cam .cm-ses{\n    max-width:960px;margin-left:auto;margin-right:auto;}\n  \/* karta wyniku w poziomie: pier\u015bcie\u0144 po lewej, opis po prawej *\/\n  .hx-cam .cm-hero{display:grid;grid-template-columns:auto minmax(0,1fr);gap:38px;\n    align-items:center;text-align:left;padding:40px 44px;}\n  .hx-cam .cm-ring{margin:0;width:250px;}\n  .hx-cam .cm-znak{margin:0 0 18px;}\n  .hx-cam .cm-lead{margin:0;font-size:.95rem;}\n  .hx-cam .cm-what{font-size:1.3rem;margin-top:14px;}\n  .hx-cam .cm-nums{margin-top:22px;}\n  .hx-cam .cm-n b{font-size:2.1rem;}\n  .hx-cam .cm-gal{gap:14px;}\n  .hx-cam .cm-g em{font-size:.8rem;}\n}\n\n\/* \u2550\u2550 DRUKOWANIE \u2550\u2550 *\/\n@media print{\n  .hx-cam .hx-bar,.hx-cam .hx-btns,.hx-cam .hx-back,.cm-box{display:none !important;}\n  .hx-cam .cm-g{opacity:1 !important;transform:none !important;break-inside:avoid;}\n  .hx-cam .cm-hero{background:#fff;color:#000;}\n}\n\n\/* \u2550\u2550 MNIEJ RUCHU \u2550\u2550 *\/\n@media (prefers-reduced-motion:reduce){\n  .hx-cam .cm-g{opacity:1;transform:none;}\n  .hx-cam .cm-ring .cm-fg{transition:none;}\n  .hx-cam .cm-ring.done .cm-spark{animation:none;}\n  .cm-box.on,.cm-box img{animation:none;}\n  .hx-cam .cm-g img,.hx-cam .cm-s{transition:none;}\n}\n<\/style>\n\n<section class=\"hx hx-cam\" id=\"hil-cambridge\">\n <div class=\"hx-app\">\n\n  <a class=\"hx-back\" href=\"https:\/\/hilaris-blonie.pl\/?page_id=345\">\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 12H6M11 6l-6 6 6 6\"\/><\/svg>\n    Szko\u0142a Podstawowa\n  <\/a>\n\n  <div class=\"hx-hero hx-hero--plain\">\n    <div class=\"hx-hero__c\">\n      <p class=\"hx-kicker\">Nasze sukcesy<\/p>\n      <h1><span class=\"hx-ln\"><i>Certyfikaty Cambridge<\/i><\/span><\/h1>\n      <p id=\"cmLead\">\u2014<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"hx-sec\">\n    <div class=\"cm-hero\" id=\"cmHero\">\n      <div class=\"cm-ring\" id=\"cmRing\">\n        <svg viewBox=\"0 0 120 120\" aria-hidden=\"true\" focusable=\"false\">\n          <defs>\n            <linearGradient id=\"cmGrad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n              <stop offset=\"0%\" stop-color=\"#F0C64A\"\/>\n              <stop offset=\"100%\" stop-color=\"#D9A417\"\/>\n            <\/linearGradient>\n          <\/defs>\n          <circle class=\"cm-bg\" cx=\"60\" cy=\"60\" r=\"52\" stroke-width=\"10\"\/>\n          <circle class=\"cm-fg\" cx=\"60\" cy=\"60\" r=\"52\" stroke-width=\"10\"\/>\n        <\/svg>\n        <div class=\"cm-num\">\n          <b><span id=\"cmVal\">0<\/span><i>%<\/i><\/b>\n          <u>zdawalno\u015bci<\/u>\n        <\/div>\n      <\/div>\n      <div>\n        <span class=\"cm-znak\" id=\"cmZnak\">\n          <img decoding=\"async\" class=\"cm-logo\" id=\"cmLogo\" src=\"\" alt=\"University of Cambridge\">\n        <\/span>\n        <p class=\"cm-lead\">Co roku uczniowie naszej szko\u0142y przyst\u0119puj\u0105 do mi\u0119dzynarodowych\n          egzamin\u00f3w Cambridge English. To sprawdzian uznawany na ca\u0142ym \u015bwiecie \u2014 a nasi\n          uczniowie zdaj\u0105 go od klasy III i wy\u017cej.<\/p>\n        <p class=\"cm-what\" id=\"cmWhat\">\u2014<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"cm-nums\" id=\"cmNums\"><\/div>\n  <\/div>\n\n  <div class=\"hx-sec hx-sec--mist\">\n    <!-- Nag\u0142\u00f3wek tej sekcji zmienia si\u0119 tutaj, w jednym miejscu.\n         Inne propozycje, gdyby ten przesta\u0142 pasowa\u0107:\n         \u201eMoment, kt\u00f3ry zostaje na d\u0142ugo\u201d, \u201eCertyfikaty w r\u0119kach uczni\u00f3w\u201d,\n         \u201eDuma z w\u0142asnej pracy\u201d. -->\n    <h2 class=\"hx-h\" data-x>Wa\u017cna chwila w \u017cyciu ka\u017cdego ucznia<\/h2>\n    <p class=\"hx-sub\" data-x>Wr\u0119czenie certyfikat\u00f3w w naszej szkole. Prosimy dotkn\u0105\u0107 zdj\u0119cia,\n      aby zobaczy\u0107 je w powi\u0119kszeniu.<\/p>\n    <div class=\"cm-gal\" id=\"cmGal\"><\/div>\n  <\/div>\n\n  <div class=\"hx-sec\">\n    <h2 class=\"hx-h\" data-x>Kolejne sesje egzaminacyjne<\/h2>\n    <p class=\"hx-sub\" data-x id=\"cmSesSub\">\u2014<\/p>\n    <div class=\"cm-ses\" id=\"cmSes\"><\/div>\n    <div class=\"hx-btns\" style=\"--btns-d:2;margin-top:22px\">\n      <a class=\"hx-btn hx-btn--gold\" href=\"https:\/\/www.cambridgeenglish.org\/exams-and-tests\/qualifications\/schools\/\" target=\"_blank\" rel=\"noopener\" data-x>O egzaminach Cambridge<\/a>\n      <a class=\"hx-btn hx-btn--ghost\" href=\"https:\/\/hilaris-blonie.pl\/?page_id=2702\" data-x>Kalendarz roku<\/a>\n    <\/div>\n  <\/div>\n\n  <div class=\"hx-sec hx-sec--mist\">\n    <h2 class=\"hx-h\" data-x>Powi\u0105zane strony<\/h2>\n    <div class=\"hx-grid\" style=\"--cols:2;--cols-d:4\" id=\"cmTiles\"><\/div>\n  <\/div>\n\n  <nav class=\"hx-bar\" aria-label=\"Szybkie akcje\">\n    <a href=\"https:\/\/hilaris-blonie.pl\/?page_id=345\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 12H6M11 6l-6 6 6 6\"\/><\/svg>\n      Szko\u0142a<\/a>\n    <a class=\"is-main\" href=\"https:\/\/portal.librus.pl\/rodzina\" target=\"_blank\" rel=\"noopener\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"18\" rx=\"2.5\"\/><path d=\"M8 8h8M8 12h8M8 16h5\"\/><\/svg>\n      e-Dziennik<\/a>\n    <a href=\"tel:+48224985525\">\n      <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.6 10.8a15.5 15.5 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.2.4 2.4.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1l-2.3 2.2z\"\/><\/svg>\n      Zadzwo\u0144<\/a>\n  <\/nav>\n\n <\/div>\n<\/section>\n\n<script>\n(function(){\n  var ROOT = document.getElementById('hil-cambridge');\n  if(!ROOT) return;\n  function __start(){\n  var ic = HX.ic, U = 'https:\/\/hilaris-blonie.pl\/?page_id=';\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     \u25bc JEDYNE MIEJSCE DO EDYCJI \u25bc\n     rok         \u2014 rok szkolny, kt\u00f3rego dotyczy wynik\n     zdawalnosc  \u2014 liczba procent (licznik i pier\u015bcie\u0144 policz\u0105 si\u0119 same)\n     uczniowie   \u2014 liczba uczni\u00f3w z certyfikatem; wpisz 0, je\u015bli jeszcze\n                   nie jest znana \u2014 kafelek wtedy si\u0119 nie poka\u017ce\n     wreczenie   \u2014 data wr\u0119czenia certyfikat\u00f3w w formacie RRRR-MM-DD\n                   albo pusty tekst '', je\u015bli terminu jeszcze nie ma\n     sesje       \u2014 kolejne terminy egzamin\u00f3w; d to pierwszy dzie\u0144 miesi\u0105ca,\n                   od kt\u00f3rego liczy si\u0119 odliczanie, t i o to opisy\n     zdjecia     \u2014 adres, podpis i tekst alternatywny ka\u017cdego zdj\u0119cia\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  var CAM = {\n    rok:'2025\/2026',\n    zdawalnosc:100,\n    uczniowie:0,\n    wreczenie:'',\n    klasy:'III\u2013VIII',\n    logo:'https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2025\/10\/university-of-cambridge-seeklogo.png',\n    sesje:[\n      {d:'2026-12-01', t:'Sesja zimowa',  o:'grudzie\u0144 2026'},\n      {d:'2027-05-01', t:'Sesja wiosenna', o:'maj 2027'},\n      {d:'2027-06-01', t:'Sesja letnia',   o:'czerwiec 2027'}\n    ],\n    zdjecia:[\n      {s:'https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/02\/cert1-768x432.jpeg',\n       p:'Uczniowie z certyfikatami Cambridge', a:'Uczniowie Hilaris z certyfikatami Cambridge'},\n      {s:'https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/02\/cert2-768x432.jpeg',\n       p:'Wr\u0119czenie certyfikat\u00f3w w szkole', a:'Wr\u0119czenie certyfikat\u00f3w Cambridge w szkole Hilaris'},\n      {s:'https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2025\/10\/top-othercambridge1-enhance-3.9x-1024x566.jpg',\n       p:'Gratulacje od nauczycieli j\u0119zyka angielskiego', a:'Uczniowie i nauczyciele j\u0119zyka angielskiego'},\n      {s:'https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2025\/10\/top-othercamb11-denoise-enhance-3.2x-768x638.jpg',\n       p:'Duma z mi\u0119dzynarodowego dyplomu', a:'Uczennica z certyfikatem Cambridge'}\n    ]\n  };\n  \/* \u2550\u2550\u2550 \u25b2 KONIEC \u25b2 \u2550\u2550\u2550 *\/\n\n  var MIES = HX.MIES, pad = HX.pad;\n  var d0  = function(s){ var p = s.split('-'); return new Date(+p[0], +p[1]-1, +p[2]); };\n  var dni = function(a,b){ return Math.round((b-a)\/86400000); };\n  var esc = function(s){ return String(s).replace(\/\"\/g,'&quot;'); };\n  var dzis = new Date(); dzis.setHours(0,0,0,0);\n  var mniejRuchu = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/* Logo: gdyby plik znikn\u0105\u0142 z serwera, chowamy ca\u0142\u0105 plakietk\u0119 \u2014\n     lepiej brak logo ni\u017c pusta bia\u0142a ramka z ikon\u0105 b\u0142\u0119du. *\/\n  var logo = document.getElementById('cmLogo');\n  logo.addEventListener('error', function(){\n    var z = document.getElementById('cmZnak'); if(z) z.style.display = 'none';\n  });\n  logo.src = CAM.logo;\n\n  \/* \u2500\u2500 wst\u0119p i podpis pod pier\u015bcieniem \u2500\u2500 *\/\n  document.getElementById('cmLead').textContent =\n    'Mi\u0119dzynarodowe egzaminy Cambridge English w naszej szkole \u2014 wyniki, zdj\u0119cia '\n    + 'z wr\u0119czenia certyfikat\u00f3w i terminy kolejnych sesji.';\n  document.getElementById('cmWhat').innerHTML =\n    'Zdawalno\u015b\u0107 w roku szkolnym ' + CAM.rok + '<span>Wszyscy nasi uczniowie zdali egzamin.<\/span>';\n\n  \/* \u2500\u2500 pier\u015bcie\u0144 + licznik \u2500\u2500 *\/\n  var ring = document.getElementById('cmRing');\n  var val  = document.getElementById('cmVal');\n  var R = 52, OBW = 2 * Math.PI * R;\n  var proc = Math.max(0, Math.min(100, CAM.zdawalnosc));\n  ring.style.setProperty('--obw', OBW.toFixed(2));\n  ring.style.setProperty('--cel', (OBW * (1 - proc\/100)).toFixed(2));\n  \/* Iskierki dooko\u0142a \u2014 dok\u0142adamy je dopiero po doj\u015bciu licznika do ko\u0144ca.\n     Zasi\u0119g liczymy z aktualnej szeroko\u015bci pier\u015bcienia, \u017ceby na telefonie\n     i na komputerze wylatywa\u0142y tu\u017c za jego obrys, a nie do \u015brodka. *\/\n  function iskierki(){\n    var sz = ring.getBoundingClientRect().width || 240, out = '';\n    for(var s=0; s<10; s++){\n      out += '<i class=\"cm-spark\" style=\"--a:' + (s*36) + 'deg;--r2:'\n          +  Math.round(sz * (0.52 + (s%3)*0.05)) + 'px;animation-delay:' + (s*45) + 'ms\"><\/i>';\n    }\n    return out;\n  }\n\n  function licz(){\n    ring.classList.add('go');\n    if(mniejRuchu){ val.textContent = proc; ring.classList.add('done'); return; }\n    var t0 = null, czas = 1800;\n    function krok(t){\n      if(t0 === null) t0 = t;\n      var p = Math.min((t - t0) \/ czas, 1);\n      \/* wyhamowanie na ko\u0144cu \u2014 liczby zwalniaj\u0105, zamiast urwa\u0107 si\u0119 nagle *\/\n      var e = 1 - Math.pow(1 - p, 3);\n      val.textContent = Math.round(e * proc);\n      if(p < 1){ requestAnimationFrame(krok); }\n      else { ring.insertAdjacentHTML('beforeend', iskierki()); ring.classList.add('done'); }\n    }\n    requestAnimationFrame(krok);\n  }\n\n  \/* \u2500\u2500 liczby pod kart\u0105 \u2500\u2500 *\/\n  var N = [];\n  N.push({b:proc + '%', u:'Zdawalno\u015b\u0107', s:'Rok szkolny ' + CAM.rok + '.', c:'#3E8E5A'});\n  if(CAM.uczniowie > 0){\n    N.push({b:CAM.uczniowie, u:'Uczni\u00f3w z certyfikatem', s:'Klasy ' + CAM.klasy + '.', c:'#D9A417'});\n  } else {\n    N.push({b:CAM.klasy, u:'Klasy przyst\u0119puj\u0105ce', s:'Do egzaminu podchodz\u0105 uczniowie od klasy trzeciej.', c:'#D9A417'});\n  }\n  \/* wyliczenie po polsku: \u201ea, b oraz c\u201d \u2014 przecinki, a przed ostatnim \u201eoraz\u201d *\/\n  var terminy = CAM.sesje.map(function(x){ return x.o; });\n  var spis = terminy.length > 1\n    ? terminy.slice(0, -1).join(', ') + ' oraz ' + terminy[terminy.length - 1]\n    : (terminy[0] || '\u2014');\n  N.push({b:CAM.sesje.length, u:'Sesje w tym roku', s:spis + '.', c:'#2E86C8'});\n  document.getElementById('cmNums').innerHTML = N.map(function(o){\n    return '<div class=\"cm-n\" style=\"--c:' + o.c + '\" data-x><b>' + o.b + '<\/b>'\n      + '<u>' + o.u + '<\/u><span>' + o.s + '<\/span><\/div>';\n  }).join('');\n\n  \/* \u2500\u2500 galeria \u2500\u2500 *\/\n  document.getElementById('cmGal').innerHTML = CAM.zdjecia.map(function(z, i){\n    return '<button class=\"cm-g\" type=\"button\" data-i=\"' + i + '\" '\n      + 'aria-label=\"Powi\u0119ksz zdj\u0119cie: ' + esc(z.p) + '\">'\n      + '<img decoding=\"async\" src=\"' + z.s + '\" alt=\"' + esc(z.a) + '\" loading=\"lazy\">'\n      + '<em>' + z.p + '<\/em><\/button>';\n  }).join('');\n\n  \/* du\u017cy podgl\u0105d \u2014 budowany raz, dopiero przy pierwszym klikni\u0119ciu *\/\n  var box = null, akt = 0;\n  function zbuduj(){\n    if(box) return;\n    box = document.createElement('div');\n    box.className = 'cm-box';\n    box.setAttribute('role','dialog');\n    box.setAttribute('aria-modal','true');\n    box.setAttribute('aria-label','Powi\u0119kszone zdj\u0119cie');\n    \/* ikony rysowane wektorowo \u2014 zawsze r\u00f3wne i wy\u015brodkowane *\/\n    var IX = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\"\/><\/svg>';\n    var IL = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M14.5 5.5L8 12l6.5 6.5\"\/><\/svg>';\n    var IP = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9.5 5.5L16 12l-6.5 6.5\"\/><\/svg>';\n    box.innerHTML = '<button class=\"cm-x\" type=\"button\" aria-label=\"Zamknij\">' + IX + '<\/button>'\n      + '<button class=\"cm-p\" type=\"button\" aria-label=\"Poprzednie zdj\u0119cie\">' + IL + '<\/button>'\n      + '<button class=\"cm-nx\" type=\"button\" aria-label=\"Nast\u0119pne zdj\u0119cie\">' + IP + '<\/button>'\n      + '<figure><img alt=\"\"><figcaption><\/figcaption><\/figure>'\n      + '<span class=\"cm-licz\"><\/span>';\n    \/* Okno doklejamy do <body>, a NIE do sekcji \u2014 inaczej wystarczy\u0142by\n       jeden nadrz\u0119dny element z przekszta\u0142ceniem, \u017ceby zamiast na ca\u0142ym\n       ekranie wy\u015bwietli\u0142o si\u0119 w \u015brodku strony, pod g\u00f3rnym paskiem. *\/\n    (document.body || ROOT).appendChild(box);\n    box.addEventListener('click', function(e){\n      if(e.target === box || e.target.closest('.cm-x')) zamknij();\n      else if(e.target.closest('.cm-p')) idz(-1);\n      else if(e.target.closest('.cm-nx')) idz(1);\n    });\n    \/* przesuwanie palcem w lewo i w prawo *\/\n    var x0 = null;\n    box.addEventListener('touchstart', function(e){ x0 = e.touches[0].clientX; }, {passive:true});\n    box.addEventListener('touchend', function(e){\n      if(x0 === null) return;\n      var dx = e.changedTouches[0].clientX - x0;\n      if(Math.abs(dx) > 45) idz(dx < 0 ? 1 : -1);\n      x0 = null;\n    }, {passive:true});\n  }\n  function pokaz(i){\n    akt = (i + CAM.zdjecia.length) % CAM.zdjecia.length;\n    var z = CAM.zdjecia[akt];\n    var img = box.querySelector('img');\n    img.src = z.s; img.alt = z.a;\n    box.querySelector('figcaption').textContent = z.p;\n    box.querySelector('.cm-licz').textContent = (akt+1) + ' \/ ' + CAM.zdjecia.length;\n  }\n  function idz(k){ pokaz(akt + k); }\n  var wrocDo = null;\n  function otworz(i){\n    zbuduj(); pokaz(i);\n    wrocDo = document.activeElement;\n    box.classList.add('on');\n    \/* blokada przewijania t\u0142a \u2014 niekt\u00f3re motywy przewijaj\u0105 <body>,\n       inne <html>, wi\u0119c zatrzymujemy oba i potem oba przywracamy *\/\n    document.documentElement.style.overflow = 'hidden';\n    if(document.body) document.body.style.overflow = 'hidden';\n    box.querySelector('.cm-x').focus();\n  }\n  function zamknij(){\n    if(!box) return;\n    box.classList.remove('on');\n    document.documentElement.style.overflow = '';\n    if(document.body) document.body.style.overflow = '';\n    if(wrocDo && wrocDo.focus) wrocDo.focus();\n  }\n  document.getElementById('cmGal').addEventListener('click', function(e){\n    var g = e.target.closest('.cm-g'); if(!g) return;\n    otworz(+g.getAttribute('data-i'));\n  });\n  document.addEventListener('keydown', function(e){\n    if(!box || !box.classList.contains('on')) return;\n    if(e.key === 'Escape'){ e.preventDefault(); zamknij(); }\n    else if(e.key === 'ArrowLeft'){ e.preventDefault(); idz(-1); }\n    else if(e.key === 'ArrowRight'){ e.preventDefault(); idz(1); }\n  });\n\n  \/* \u2500\u2500 sesje egzaminacyjne \u2500\u2500 *\/\n  CAM.sesje.forEach(function(x){ x._d = d0(x.d); });\n  var przyszle = CAM.sesje.filter(function(x){ return x._d >= dzis; });\n  var nast = przyszle.length ? przyszle[0] : null;\n  document.getElementById('cmSes').innerHTML = CAM.sesje.map(function(x){\n    var isNext = (nast === x), past = x._d < dzis;\n    var ile = dni(dzis, x._d);\n    var tagi = '<span class=\"cm-t\">' + x.o + '<\/span>';\n    if(isNext && ile > 0){\n      var tyg = Math.round(ile \/ 7);\n      tagi += '<span class=\"cm-t cm-t--soon\">' + (ile <= 31 ? 'za ' + ile + ' dni'\n            : 'za oko\u0142o ' + tyg + ' tygodni') + '<\/span>';\n    }\n    return '<div class=\"cm-s' + (isNext ? ' next' : '') + '\" style=\"--c:'\n      + (past ? '#9BADB8' : (isNext ? '#D9A417' : '#2E86C8')) + '\" data-x>'\n      + '<b>' + x.t + '<\/b><span>Egzaminy Cambridge English dla uczni\u00f3w klas ' + CAM.klasy\n      + '. Szczeg\u00f3\u0142y i zapisy przekazujemy przez e-Dziennik.<\/span>'\n      + '<div class=\"cm-tags\">' + tagi + '<\/div><\/div>';\n  }).join('');\n  document.getElementById('cmSesSub').textContent = nast\n    ? 'Najbli\u017csza sesja: ' + nast.o + '. Dok\u0142adne daty przekazujemy z wyprzedzeniem przez e-Dziennik.'\n    : 'Terminy kolejnych sesji przeka\u017cemy przez e-Dziennik.';\n\n  \/* \u2500\u2500 animacje wej\u015bcia: pier\u015bcie\u0144 i zdj\u0119cia \u2500\u2500 *\/\n  var zdjeciaEl = Array.prototype.slice.call(ROOT.querySelectorAll('.cm-g'));\n  function wszystko(){ zdjeciaEl.forEach(function(el){ el.classList.add('in'); }); licz(); }\n  if(mniejRuchu || !('IntersectionObserver' in window)){\n    wszystko();\n  } else {\n    var io1 = new IntersectionObserver(function(w){\n      w.forEach(function(x){ if(x.isIntersecting){ licz(); io1.disconnect(); } });\n    }, {threshold:.45});\n    io1.observe(ring);\n    var io2 = new IntersectionObserver(function(w){\n      w.filter(function(x){ return x.isIntersecting; }).forEach(function(x,n){\n        setTimeout(function(){ x.target.classList.add('in'); }, n*90);\n        io2.unobserve(x.target);\n      });\n    }, {threshold:.15});\n    zdjeciaEl.forEach(function(el){ io2.observe(el); });\n    \/* bezpiecznik: gdyby obserwator nie zadzia\u0142a\u0142, po 4 s pokazujemy wszystko *\/\n    setTimeout(function(){ if(!ring.classList.contains('go')) licz();\n      zdjeciaEl.forEach(function(el){ el.classList.add('in'); }); }, 4000);\n  }\n\n  \/* \u2500\u2500 powi\u0105zane strony \u2500\u2500 *\/\n  var T = [\n    {t:'Kalendarz roku', d:'wszystkie terminy', c:'#3E8E5A', h:U+'2702',\n     i:ic('<rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2.5\"\/><path d=\"M8 2.5v5M16 2.5v5M3 10h18\"\/>')},\n    {t:'Egzamin \u00f3smoklasisty', d:'terminy i wyniki', c:'#8B54C4', h:U+'2687',\n     i:ic('<path d=\"M8 4h8a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\"\/><path d=\"M9.6 9h4.8M9.6 13h4.8M9.6 17h3\"\/>')},\n    {t:'Wybrane wydarzenia', d:'z \u017cycia szko\u0142y', c:'#D9A417', h:U+'3325',\n     i:ic('<path d=\"M12 3.6l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z\"\/>')},\n    {t:'Nasz zesp\u00f3\u0142', d:'nauczyciele', c:'#2E86C8', h:U+'342',\n     i:ic('<circle cx=\"9\" cy=\"8.6\" r=\"3.2\"\/><path d=\"M2.9 19.4c0-3.4 2.7-5.6 6.1-5.6s6.1 2.2 6.1 5.6\"\/><circle cx=\"17.6\" cy=\"10.2\" r=\"2.4\"\/><path d=\"M15.9 19.4c0-2.6 1.9-4.2 4.2-4.2\"\/>')}\n  ];\n  document.getElementById('cmTiles').innerHTML = T.map(function(o){\n    return '<a class=\"hx-tile\" href=\"'+o.h+'\" style=\"--c:'+o.c+'\" data-x>'\n      + '<span class=\"hx-ic\">'+o.i+'<\/span><b>'+o.t+'<\/b><u>'+o.d+'<\/u><\/a>';\n  }).join('');\n\n  HX.sierotki(ROOT); HX.boot();\n  }\n\n  var __t = 0;\n  (function __wait(){\n    if(window.HX){ __start(); return; }\n    if(__t++ < 80){ setTimeout(__wait, 100); return; }\n    if(window.console) console.warn('Hilaris: nie znaleziono rdzenia (hilaris-CORE).');\n  })();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Szko\u0142a Podstawowa Nasze sukcesy Certyfikaty Cambridge \u2014 0% zdawalno\u015bci Co roku uczniowie naszej szko\u0142y przyst\u0119puj\u0105 do mi\u0119dzynarodowych egzamin\u00f3w Cambridge English. To sprawdzian uznawany na ca\u0142ym \u015bwiecie \u2014 a nasi uczniowie zdaj\u0105 go od klasy III i wy\u017cej. \u2014 Wa\u017cna chwila w \u017cyciu ka\u017cdego ucznia Wr\u0119czenie certyfikat\u00f3w w naszej szkole. Prosimy dotkn\u0105\u0107 zdj\u0119cia, aby zobaczy\u0107 je [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":345,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-4171","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/4171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4171"}],"version-history":[{"count":96,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/4171\/revisions"}],"predecessor-version":[{"id":7874,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/4171\/revisions\/7874"}],"up":[{"embeddable":true,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/345"}],"wp:attachment":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}