{"id":2702,"date":"2025-09-22T21:43:41","date_gmt":"2025-09-22T19:43:41","guid":{"rendered":"https:\/\/hilaris-blonie.pl\/?page_id=2702"},"modified":"2026-09-05T11:50:26","modified_gmt":"2026-09-05T09:50:26","slug":"kalendarz-roku-szkolnego","status":"publish","type":"page","link":"https:\/\/hilaris-blonie.pl\/?page_id=2702","title":{"rendered":"Kalendarz roku szkolnego"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2702\" class=\"elementor elementor-2702\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f835ed2 e-grid e-con-boxed e-con e-parent\" data-id=\"f835ed2\" 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-3f567a0 elementor-widget elementor-widget-html\" data-id=\"3f567a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ==========================================================================\n     HILARIS \u2014 SZKO\u0141A \u2192 KALENDARZ ROKU SZKOLNEGO   (wersja responsywna)\n     Scala trzy zak\u0142adki: kalendarz, dni wolne od zaj\u0119\u0107 oraz zebrania i dni otwarte.\n     WYMAGA rdzenia (hilaris-CORE.html).\n\n     Strona zna dzisiejsz\u0105 dat\u0119: pokazuje post\u0119p roku szkolnego, najbli\u017csze\n     wydarzenie i sama oznacza, co min\u0119\u0142o.\n\n     \u25b8 AKTUALIZACJA: obiekt ROK na dole pliku. Reszta przelicza si\u0119 sama.\n     ---------------------------------------------------------------------------\n     POPRAWKI W TEJ WERSJI:\n\n       1) BIA\u0141E KROPKI (opieka \u015bwietlicowa) W WIELODNIOWYCH PRZERWACH\n          B\u0141\u0104D: pole \u201esw\u201d dzia\u0142a\u0142o na ca\u0142e wydarzenie, wi\u0119c kropka pojawia\u0142a si\u0119\n          przy KA\u017bDYM dniu przerwy \u2014 tak\u017ce 24, 25, 26 i 27 grudnia, kiedy\n          opieki nie ma. Ten sam b\u0142\u0105d dotyczy\u0142 wiosennej przerwy \u015bwi\u0105tecznej\n          (kropki wychodzi\u0142y te\u017c na 27, 28 i 29 marca).\n          POPRAWKA: nowe pole \u201eswDni\u201d \u2014 lista konkretnych dni z opiek\u0105.\n          Kropka rysowana jest tylko dla dni z tej listy; je\u015bli wydarzenie\n          nie ma \u201eswDni\u201d, dzia\u0142a jak dot\u0105d (ca\u0142e wydarzenie wg pola \u201esw\u201d).\n          Dodatkowo pole \u201eswInfo\u201d pozwala dopisa\u0107 szczeg\u00f3\u0142 do podpowiedzi\n          przy konkretnym dniu (np. 31 grudnia \u2014 \u201edo godz. 13.00\u201d).\n\n       2) KOLEJNO\u015a\u0106 WYDARZE\u0143\n          B\u0141\u0104D: \u201eDzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych\u201d z 28 maja 2027 by\u0142 wpisany\n          PO egzaminie z 9\u201311 czerwca 2027. Przez to lista termin\u00f3w sz\u0142a\n          nie po kolei, a wska\u017anik \u201enajbli\u017csze wydarzenie\u201d m\u00f3g\u0142 wskaza\u0107\n          niew\u0142a\u015bciw\u0105 pozycj\u0119.\n          POPRAWKA: pozycja przeniesiona na swoje miejsce ORAZ dopisane\n          automatyczne sortowanie wydarze\u0144 po dacie \u2014 od teraz kolejno\u015b\u0107\n          wpis\u00f3w w tabeli nie ma ju\u017c znaczenia.\n\n       3) OPIS OPIEKI W ZIMOWEJ PRZERWIE\n          Plakietka m\u00f3wi\u0142a \u201e23, 28, 29 i 30 grudnia\u201d, a notatka ni\u017cej dodawa\u0142a\n          31 grudnia. POPRAWKA: ujednolicone \u2014 \u201e23, 28, 29, 30 i 31 grudnia\u201d,\n          z zaznaczeniem, \u017ce 31 grudnia opieka trwa do godz. 13.00.\n     ---------------------------------------------------------------------------\n     ZMIANY W POPRZEDNIEJ WERSJI (dane na rok szkolny 2026\/2027):\n       \u2022 obiekt ROK w ca\u0142o\u015bci wymieniony na terminarz 2026\/2027\n         (1.09.2026 \u2013 25.06.2027)\n       \u2022 dopisana sekcja \u201eEgzaminy pr\u00f3bne\u201d \u2014 klasy VII i VIII oraz Cambridge.\n         Terminy s\u0105 tam podane tylko z dok\u0142adno\u015bci\u0105 do miesi\u0105ca, wi\u0119c nie\n         trafiaj\u0105 na wst\u0119g\u0119 ani na siatk\u0119 dni; maj\u0105 w\u0142asn\u0105 tabelk\u0119 PROBNE\n         tu\u017c pod obiektem ROK\n       \u2022 sekcje zamieni\u0142y si\u0119 t\u0142ami, \u017ceby nowa sekcja nie zlewa\u0142a si\u0119\n         z s\u0105siedni\u0105 (\u201eZabierz kalendarz ze sob\u0105\u201d ma teraz szare t\u0142o,\n         \u201ePowi\u0105zane strony\u201d bia\u0142e)\n     ---------------------------------------------------------------------------\n     WERYFIKACJA TERMIN\u00d3W EGZAMINU (komunikat dyrektora CKE, 2026\/2027):\n       \u2022 termin g\u0142\u00f3wny 10\u201312 maja 2027 r. \u2014 POTWIERDZONY, tak jak by\u0142o wpisane.\n         Uwaga: w szkolnej tabeli \u201eKalendarz roku szkolnego\u201d przy egzaminie\n         \u00f3smoklasisty widnieje \u201ekwiecie\u0144 2027\u201d; komunikat CKE m\u00f3wi o maju,\n         wi\u0119c zapis w tabeli jest omy\u0142k\u0105 i warto go poprawi\u0107 przy druku\n       \u2022 dopisany termin dodatkowy 9\u201311 czerwca 2027 r. To NIE s\u0105 dni wolne\n         od zaj\u0119\u0107 \u2014 dlatego w karcie jest o tym wyra\u017ana uwaga, a dni nie maj\u0105\n         plakietki opieki \u015bwietlicowej\n       \u2022 przy egzaminie majowym dopisane godziny i czas pracy z ka\u017cdego\n         przedmiotu oraz data og\u0142oszenia wynik\u00f3w (6 lipca 2027 r.)\n       \u2022 pozosta\u0142e terminy \u2014 zebrania, dni wolne, przerwy \u2014 zgadzaj\u0105 si\u0119\n         co do dnia ze stronami \u201eTerminy zebra\u0144\u201d i \u201eDni wolne od zaj\u0119\u0107\u201d\n     ========================================================================== -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\"\n      href=\"https:\/\/fonts.googleapis.com\/css2?family=Source+Serif+4:opsz,wght@8..60,600;8..60,700&display=swap\">\n\n<style>\n\/* \u2500\u2500 CZCIONKA NAG\u0141\u00d3WK\u00d3W (bez ozdobnego \u201eJ\u201d) \u2500\u2500 *\/\n.hx-kal h1,.hx-kal h2,.hx-kal h3,.hx-kal .hx-h,\n.hx-kal .kl-stat b,.hx-kal .kl-mon__n,.hx-kal .kl-when,.hx-kal .kl-hours b{\n  font-family:'Source Serif 4',Georgia,'Times New Roman',serif !important;\n}\n\n\/* \u2500\u2500 WY\u015aRODKOWANE NAG\u0141\u00d3WKI SEKCJI \u2500\u2500 *\/\n.hx-kal .hx-h{text-align:center;}\n.hx-kal .hx-sub{text-align:center;max-width:64ch;margin-left:auto;margin-right:auto;}\n\/* legenda i przyciski te\u017c na \u015brodku, \u017ceby trzyma\u0142y o\u015b z nag\u0142\u00f3wkiem *\/\n.hx-kal .kl-leg{justify-content:center;}\n\n\/* po usuni\u0119ciu stopki: zapas na dolny pasek szybkich akcji (tylko telefon) *\/\n.hx-kal .hx-app{padding-bottom:calc(48px + env(safe-area-inset-bottom));}\n@media (min-width:900px){ .hx-kal .hx-app{padding-bottom:0;} }\n\n\/* Kafle \u201ePowi\u0105zane strony\u201d: kolumna 1fr potrafi rozepchn\u0105\u0107 si\u0119 do szeroko\u015bci\n   najd\u0142u\u017cszego s\u0142owa (\u201e\u00f3smoklasisty\u201d) i wypchn\u0105\u0107 siatk\u0119 poza ekran.\n   minmax(0,1fr) plus \u0142amanie d\u0142ugich s\u0142\u00f3w pilnuje, \u017ceby nic nie wystawa\u0142o. *\/\n.hx-kal .hx-grid{grid-template-columns:repeat(var(--cols),minmax(0,1fr));}\n@media (min-width:900px){\n  .hx-kal .hx-grid{grid-template-columns:repeat(var(--cols-d),minmax(0,1fr));}\n}\n.hx-kal .hx-tile{min-width:0;overflow-wrap:anywhere;}\n\n\/* \u2500\u2500 wst\u0119ga roku szkolnego \u2500\u2500 *\/\n.hx-kal .kl-hero{background:var(--navy);color:#fff;padding:26px var(--pad) 28px;}\n.hx-kal .kl-ribbon{margin-top:22px;}\n.hx-kal .kl-cap{font-size:.76rem;color:#9FB8CB;line-height:1.45;margin-bottom:10px;}\n.hx-kal .kl-cap b{color:#fff;font-weight:700;}\n.hx-kal .kl-tip{min-height:2.6em;font-size:.8rem;font-weight:700;color:var(--gold-l);\n  margin-bottom:7px;line-height:1.3;transition:color .2s ease;}\n.hx-kal .kl-tip.idle{color:#7F98AD;font-weight:600;}\n.hx-kal .kl-rib{position:relative;height:38px;border-radius:10px;background:rgba(255,255,255,.12);}\n.hx-kal .kl-seg{position:absolute;top:3px;bottom:3px;border-radius:3px;cursor:pointer;\n  transition:transform .2s ease,filter .2s ease;transform-origin:center;}\n.hx-kal .kl-seg:hover,.hx-kal .kl-seg:focus-visible{transform:scaleY(1.22);filter:brightness(1.25);z-index:3;}\n.hx-kal .kl-seg.hit{transform:scaleY(1.22);filter:brightness(1.3);}\n\n\/* znacznik \u201edzi\u015b\u201d \u2014 pokazywany tylko wtedy, gdy naprawd\u0119 jest w zakresie roku *\/\n.hx-kal .kl-now{position:absolute;top:-9px;bottom:-9px;width:2.5px;background:#fff;border-radius:99px;\n  box-shadow:0 0 0 4px rgba(255,255,255,.22);z-index:4;}\n.hx-kal .kl-now::after{content:\"dzi\u015b\";position:absolute;top:-19px;left:50%;transform:translateX(-50%);\n  background:#fff;color:var(--navy);font-size:.62rem;font-weight:800;letter-spacing:.06em;\n  text-transform:uppercase;padding:2px 7px;border-radius:999px;}\n\n\/* stan po zako\u0144czeniu roku \u2014 zamiast tajemniczej kreski czytelny komunikat *\/\n\/* Delikatny raster informacyjny \u2014 NIGDY nie przechwytuje klikni\u0119\u0107,\n   inaczej zas\u0142ania\u0142by paski i wst\u0119ga przestawa\u0142aby reagowa\u0107. *\/\n.hx-kal .kl-done{position:absolute;inset:0;border-radius:10px;pointer-events:none;z-index:2;\n  background:repeating-linear-gradient(45deg,rgba(10,31,58,.28) 0 6px,rgba(10,31,58,.06) 6px 12px);}\n.hx-kal .kl-state{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.12);\n  color:#DCE7F0;border-radius:999px;padding:6px 13px;font-size:.72rem;font-weight:700;margin-top:10px;}\n.hx-kal .kl-state i{width:8px;height:8px;border-radius:50%;background:var(--gold-l);display:block;}\n\n\/* skala miesi\u0119cy pod wst\u0119g\u0105 *\/\n.hx-kal .kl-scale{position:relative;height:20px;margin-top:6px;}\n.hx-kal .kl-scale span{position:absolute;top:0;transform:translateX(-50%);font-size:.63rem;\n  font-weight:800;color:#7F98AD;letter-spacing:.04em;}\n.hx-kal .kl-scale i{position:absolute;top:-4px;width:1px;height:5px;background:rgba(255,255,255,.22);}\n.hx-kal .kl-rib__l{display:flex;justify-content:space-between;font-size:.72rem;color:#9FB8CB;\n  font-weight:700;margin-top:4px;gap:12px;flex-wrap:wrap;}\n.hx-kal .kl-ev.hit .kl-card{border-color:var(--gold);\n  box-shadow:0 0 0 3px rgba(217,164,23,.28),0 16px 32px -22px rgba(14,43,77,.7);}\n\n.hx-kal .kl-stat{display:grid;grid-template-columns:auto 1fr;gap:15px;align-items:center;\n  background:rgba(255,255,255,.09);border-radius:14px;padding:15px;margin-top:18px;}\n.hx-kal .kl-stat b{font-size:2.1rem;line-height:1;color:var(--gold-l);}\n.hx-kal .kl-stat u{text-decoration:none;display:block;font-size:.68rem;font-weight:800;\n  letter-spacing:.13em;text-transform:uppercase;color:#9FB8CB;}\n.hx-kal .kl-stat span{display:block;font-size:.85rem;color:#CFDDE8;margin-top:3px;line-height:1.4;}\n\n\/* \u2500\u2500 siatka miesi\u0119cy \u2500\u2500 *\/\n.hx-kal .kl-months{display:grid;grid-template-columns:1fr 1fr;gap:10px;}\n.hx-kal .kl-mon{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:13px 11px;}\n.hx-kal .kl-mon__h{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:9px;}\n.hx-kal .kl-mon__n{font-weight:700;font-size:.94rem;}\n.hx-kal .kl-mon__y{font-size:.66rem;font-weight:700;color:#9BADB8;}\n.hx-kal .kl-dow,.hx-kal .kl-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}\n.hx-kal .kl-dow span{text-align:center;font-size:.55rem;font-weight:800;color:#9BADB8;\n  text-transform:uppercase;padding-bottom:4px;}\n.hx-kal .kl-d{position:relative;aspect-ratio:1;display:grid;place-items:center;border-radius:6px;\n  font-size:.68rem;font-weight:500;}\n.hx-kal .kl-d.pad{visibility:hidden;}\n.hx-kal .kl-d.we{color:#B9C6CE;}\n.hx-kal .kl-d.today{box-shadow:inset 0 0 0 2px var(--ink);font-weight:800;}\n.hx-kal .kl-d.ev{color:#fff;font-weight:800;background:var(--c);}\n.hx-kal .kl-d.ev.dim{background:color-mix(in srgb,var(--c) 18%,transparent);color:var(--ink-2);}\n.hx-kal .kl-d.sw::after{content:\"\";position:absolute;bottom:1px;left:50%;transform:translateX(-50%);\n  width:3px;height:3px;border-radius:50%;background:#fff;}\n.hx-kal .kl-d[data-n]{cursor:help;}\n\/* Podpowied\u017a nad dniem: zawija si\u0119 i ma ograniczon\u0105 szeroko\u015b\u0107, wi\u0119c nawet\n   przy dniu w skrajnej kolumnie nie wychodzi poza ekran. *\/\n.hx-kal .kl-d[data-n]:hover::before{content:attr(data-n);position:absolute;bottom:calc(100% + 7px);\n  left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;font-size:.68rem;font-weight:500;\n  padding:6px 10px;border-radius:8px;white-space:normal;text-align:center;\n  width:max-content;max-width:min(60vw,220px);line-height:1.35;z-index:20;\n  box-shadow:0 10px 24px -14px rgba(0,0,0,.8);}\n\n\/* \u2500\u2500 legenda \u2500\u2500 *\/\n.hx-kal .kl-leg{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}\n.hx-kal .kl-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);\n  background:var(--paper);border-radius:999px;padding:8px 14px;font-size:.79rem;font-weight:700;\n  color:var(--ink);transition:opacity .25s ease,border-color .25s ease;}\n.hx-kal .kl-chip i{width:10px;height:10px;border-radius:3px;background:var(--c);display:block;}\n.hx-kal .kl-chip[aria-pressed=\"false\"]{opacity:.38;}\n\n\/* \u2500\u2500 o\u015b wydarze\u0144 \u2500\u2500 *\/\n.hx-kal .kl-list{position:relative;padding-left:30px;text-align:left;}\n.hx-kal .kl-list::before{content:\"\";position:absolute;left:9px;top:8px;bottom:8px;width:2px;background:var(--line);}\n.hx-kal .kl-ev{position:relative;padding-bottom:14px;}\n.hx-kal .kl-ev.off{display:none;}\n.hx-kal .kl-dot{position:absolute;left:-30px;top:14px;width:20px;height:20px;border-radius:50%;\n  background:var(--paper);border:2px solid var(--c);z-index:2;}\n.hx-kal .kl-ev.past .kl-dot{background:var(--c);}\n.hx-kal .kl-card{background:var(--paper);border:1px solid var(--line);border-radius:13px;\n  border-left:3px solid var(--c);padding:13px 14px;}\n.hx-kal .kl-ev.past{opacity:.5;}\n.hx-kal .kl-ev.next .kl-card{border-color:var(--gold);box-shadow:0 14px 30px -22px rgba(14,43,77,.7);}\n.hx-kal .kl-when{font-weight:700;font-size:.92rem;}\n.hx-kal .kl-what{font-size:.9rem;margin-top:3px;}\n.hx-kal .kl-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}\n.hx-kal .kl-b{font-size:.66rem;font-weight:800;border-radius:999px;padding:3px 9px;\n  background:var(--mist);color:var(--ink-2);}\n.hx-kal .kl-b--sw{background:#E7F4EC;color:#1F5C36;}\n.hx-kal .kl-b--next{background:#FFF3D6;color:#8A5B00;}\n.hx-kal .kl-hours{margin-top:8px;display:grid;gap:4px;}\n.hx-kal .kl-hours div{display:flex;gap:9px;font-size:.83rem;color:var(--ink-2);}\n.hx-kal .kl-hours b{color:var(--ink);white-space:nowrap;}\n.hx-kal .kl-note2{font-size:.79rem;color:var(--ink-2);margin-top:8px;padding-top:8px;\n  border-top:1px dashed var(--line);}\n\n\/* \u2500\u2500 EGZAMINY PR\u00d3BNE \u2500\u2500\n   Osobna sekcja, bo terminy znane s\u0105 tylko z dok\u0142adno\u015bci\u0105 do miesi\u0105ca.\n   Na telefonie jedna kolumna, od 900 px dwie; blok Cambridge zawsze\n   na ca\u0142\u0105 szeroko\u015b\u0107. D\u0142ugie nazwy \u0142ami\u0105 si\u0119 (overflow-wrap), wi\u0119c nic\n   nie rozpycha siatki w bok. *\/\n.hx-kal .kl-pr{display:grid;gap:12px;max-width:860px;margin:0 auto;text-align:left;}\n.hx-kal .kl-prg{background:var(--paper);border:1px solid var(--line);border-radius:14px;\n  border-left:3px solid #8B54C4;padding:14px 16px;min-width:0;}\n.hx-kal .kl-prg h3{font-size:1rem;margin-bottom:11px;}\n.hx-kal .kl-prl{list-style:none;margin:0;padding:0;display:grid;gap:9px;}\n.hx-kal .kl-prl li{display:flex;flex-direction:column;align-items:flex-start;gap:5px;\n  border-top:1px dashed var(--line);padding-top:9px;min-width:0;}\n.hx-kal .kl-prl li:first-child{border-top:0;padding-top:0;}\n.hx-kal .kl-prl b{font-size:.9rem;font-weight:700;min-width:0;overflow-wrap:anywhere;}\n.hx-kal .kl-prl span{font-size:.81rem;font-weight:700;color:#6B3E9E;\n  background:color-mix(in srgb,#8B54C4 12%,transparent);border-radius:999px;padding:3px 10px;}\n\n\/* bardzo w\u0105skie telefony \u2014 siatka miesi\u0119cy nie mo\u017ce wystawa\u0107 *\/\n@media (max-width:359px){\n  .hx-kal .kl-months{gap:8px;}\n  .hx-kal .kl-mon{padding:11px 8px;}\n  .hx-kal .kl-d{font-size:.62rem;}\n  .hx-kal .kl-chip{padding:7px 11px;font-size:.74rem;}\n}\n\n@media (min-width:900px){\n  .hx-kal .kl-hero{padding:44px var(--pad);}\n  .hx-kal .kl-rib{height:44px;}\n  .hx-kal .kl-stat{max-width:520px;}\n  .hx-kal .kl-stat b{font-size:2.6rem;}\n  .hx-kal .kl-months{grid-template-columns:repeat(4,1fr);gap:14px;}\n  .hx-kal .kl-mon{padding:16px 14px;}\n  .hx-kal .kl-d{font-size:.76rem;}\n  .hx-kal .kl-dow span{font-size:.6rem;}\n  .hx-kal .kl-list{columns:2;column-gap:22px;padding-left:0;}\n  .hx-kal .kl-list::before{display:none;}\n  .hx-kal .kl-ev{break-inside:avoid;padding-bottom:14px;}\n  .hx-kal .kl-dot{display:none;}\n  .hx-kal .kl-card{padding:16px 18px;}\n  .hx-kal .kl-pr{grid-template-columns:1fr 1fr;align-items:start;gap:16px;}\n  .hx-kal .kl-prg--wide{grid-column:1 \/ -1;}\n  .hx-kal .kl-prg{padding:18px 22px;}\n}\n\/* Na du\u017cych monitorach \u015aWIADOMIE nie zmieniamy uk\u0142adu: siatka miesi\u0119cy\n   zostaje przy czterech kolumnach, a lista termin\u00f3w przy dw\u00f3ch \u2014 tak jak\n   w pierwotnej wersji, bo taki rozk\u0142ad czyta si\u0119 lepiej. Gdyby kiedy\u015b mia\u0142o\n   by\u0107 inaczej, wystarczy tu dopisa\u0107 w\u0142asn\u0105 regu\u0142\u0119 @media. *\/\n<\/style>\n\n<section class=\"hx hx-kal\" id=\"hil-kalendarz-szkola\">\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=\"kl-hero\">\n    <p class=\"hx-kicker\">Dla rodzica<\/p>\n    <h1 style=\"color:#fff;font-size:clamp(1.9rem,7.6vw,2.4rem)\">\n      <span class=\"hx-ln\"><i>Kalendarz roku szkolnego<\/i><\/span><\/h1>\n    <p style=\"color:#C6D7E5;font-size:.89rem;margin-top:10px\">\n      Dni wolne, przerwy, zebrania i dni otwarte \u2014 wszystko w jednym miejscu.<\/p>\n\n    <div class=\"kl-ribbon\">\n      <p class=\"kl-cap\"><b>Wst\u0119ga roku szkolnego.<\/b> Ka\u017cdy pasek to jedno wydarzenie, a jego\n        szeroko\u015b\u0107 odpowiada liczbie dni. Prosimy dotkn\u0105\u0107 paska, aby zobaczy\u0107 szczeg\u00f3\u0142y.<\/p>\n      <p class=\"kl-tip idle\" id=\"klTip\">Najed\u017a kursorem lub dotknij paska, aby zobaczy\u0107 nazw\u0119 i d\u0142ugo\u015b\u0107 wydarzenia.<\/p>\n      <div class=\"kl-rib\" id=\"klRib\"><\/div>\n      <div class=\"kl-scale\" id=\"klScale\"><\/div>\n      <div class=\"kl-rib__l\"><span id=\"klRibA\">\u2014<\/span><span id=\"klRibB\">\u2014<\/span><\/div>\n      <div id=\"klState\"><\/div>\n    <\/div>\n\n    <div class=\"kl-stat\">\n      <b id=\"klN\">\u2014<\/b>\n      <span><u id=\"klL\">Najbli\u017csze wydarzenie<\/u><span id=\"klT\">\u2014<\/span><\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"hx-sec\">\n    <h2 class=\"hx-h\" data-x>Ca\u0142y rok na jednym ekranie<\/h2>\n    <p class=\"hx-sub\" data-x>Prosimy dotkn\u0105\u0107 pastylki, aby ukry\u0107 lub pokaza\u0107 dany rodzaj dni.<\/p>\n    <div class=\"kl-leg\" id=\"klLeg\"><\/div>\n    <div class=\"kl-months\" id=\"klMonths\"><\/div>\n    <p class=\"hx-sub\" style=\"margin:14px auto 0\" data-x>\n      Bia\u0142a kropka pod dat\u0105 oznacza dzie\u0144 z zapewnion\u0105 opiek\u0105 \u015bwietlicow\u0105.<\/p>\n  <\/div>\n\n  <div class=\"hx-sec hx-sec--mist\">\n    <h2 class=\"hx-h\" data-x>Wszystkie terminy po kolei<\/h2>\n    <p class=\"hx-sub\" data-x id=\"klListSub\">Minione s\u0105 przygaszone, najbli\u017csze wyr\u00f3\u017cnione.<\/p>\n    <div class=\"kl-list\" id=\"klList\"><\/div>\n  <\/div>\n\n  <div class=\"hx-sec\">\n    <h2 class=\"hx-h\" data-x>Egzaminy pr\u00f3bne<\/h2>\n    <p class=\"hx-sub\" data-x>Terminy planowane \u2014 dok\u0142adne daty przekazujemy z wyprzedzeniem\n      przez e-Dziennik.<\/p>\n    <div class=\"kl-pr\" id=\"klProbne\"><\/div>\n  <\/div>\n\n  <div class=\"hx-sec hx-sec--mist\">\n    <h2 class=\"hx-h\" data-x>Zabierz kalendarz ze sob\u0105<\/h2>\n    <p class=\"hx-sub\" data-x>Jedno klikni\u0119cie doda wszystkie terminy do kalendarza w telefonie.\n      Zebrania z przypomnieniem dwie godziny wcze\u015bniej.<\/p>\n    <div class=\"hx-btns\" style=\"--btns-d:3\">\n      <button class=\"hx-btn hx-btn--gold\" id=\"klIcs\" type=\"button\" data-x>\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3v12M7.5 10.5 12 15l4.5-4.5\"\/><path d=\"M4 17v2.5h16V17\"\/><\/svg>\n        Dodaj do kalendarza<\/button>\n      <button class=\"hx-btn hx-btn--navy\" id=\"klPrint\" type=\"button\" data-x>\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 9V3.5h10V9\"\/><path d=\"M7 18H4.5V9h15v9H17\"\/><path d=\"M7 14h10v6.5H7z\"\/><\/svg>\n        Drukuj<\/button>\n      <a class=\"hx-btn hx-btn--ghost\" href=\"https:\/\/portal.librus.pl\/rodzina\" target=\"_blank\" rel=\"noopener\" data-x>e-Dziennik<\/a>\n    <\/div>\n    <p class=\"hx-sub\" id=\"klMsg\" style=\"margin-top:12px;min-height:1.2em;color:var(--ok);font-weight:700\"><\/p>\n  <\/div>\n\n  <div class=\"hx-sec\">\n    <h2 class=\"hx-h\" data-x>Powi\u0105zane strony<\/h2>\n    <div class=\"hx-grid\" style=\"--cols:2;--cols-d:4\" id=\"klTiles\"><\/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-kalendarz-szkola');\n  if(!ROOT) return;\n\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\n     k: wol = dzie\u0144 wolny\/\u015bwi\u0119to \u00b7 fer = ferie i przerwy\n        zeb = zebranie \/ dzie\u0144 otwarty \u00b7 szk = pocz\u0105tek i koniec roku\n        egz = egzamin \u00f3smoklasisty\n\n     sw:     true lub tekst \u2014 plakietka \u201eopieka \u015bwietlicowa\u201d na karcie\n             wydarzenia. Dla wydarze\u0144 JEDNODNIOWYCH decyduje te\u017c\n             o bia\u0142ej kropce w siatce dni.\n     swDni:  \u25b8 WA\u017bNE przy wydarzeniach WIELODNIOWYCH \u25c2\n             lista konkretnych dni z opiek\u0105 \u015bwietlicow\u0105. Je\u015bli jest podana,\n             bia\u0142a kropka pojawia si\u0119 WY\u0141\u0104CZNIE przy tych dniach.\n             Bez tego pola kropk\u0119 dostawa\u0142by ka\u017cdy dzie\u0144 przerwy.\n     swInfo: szczeg\u00f3\u0142 dopisywany do podpowiedzi przy konkretnym dniu\n             (np. 31 grudnia \u2014 \u201eopieka do godz. 13.00\u201d).\n     h:      lista godzin dla zebra\u0144, n: dodatkowa notatka\n\n     Kolejno\u015b\u0107 wpis\u00f3w nie ma znaczenia \u2014 lista jest sortowana po dacie.\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 ROK = {\n    nazwa:'2026\/2027',\n    start:'2026-09-01',\n    koniec:'2027-06-25',\n    wydarzenia:[\n\n      {d:'2026-09-01', k:'szk', t:'Rozpocz\u0119cie roku szkolnego',\n       n:'Bez opieki \u015bwietlicowej.'},\n\n      {d:'2026-09-08', k:'zeb', t:'Zebranie organizuj\u0105ce prac\u0119 w roku szkolnym',\n       h:[['17:00','Zebrania z wychowawcami, klasy I\u2013III'],\n          ['18:00','Zebrania z wychowawcami, klasy IV\u2013VIII']],\n       n:'Pierwsze zebranie rozpoczyna si\u0119 spotkaniem z dyrektorem w \u0142odzi edukacyjnej.'},\n\n      {d:'2026-10-14', k:'wol', t:'Dzie\u0144 Edukacji Narodowej', sw:true},\n\n      {d:'2026-10-27', k:'zeb', t:'Dzie\u0144 otwarty',\n       h:[['17:00 \u2013 19:00','Dzie\u0144 otwarty dla rodzic\u00f3w uczni\u00f3w klas I\u2013VIII']]},\n\n      {d:'2026-11-01', k:'wol', t:'Wszystkich \u015awi\u0119tych'},\n\n      {d:'2026-11-02', k:'wol', t:'Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych',\n       n:'Bez opieki \u015bwietlicowej.'},\n\n      {d:'2026-11-11', k:'wol', t:'\u015awi\u0119to Niepodleg\u0142o\u015bci'},\n\n      {d:'2026-11-12', k:'wol', t:'Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych', sw:true},\n\n      {d:'2026-11-13', k:'wol', t:'Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych', sw:true},\n\n      {d:'2026-12-15', k:'zeb', t:'Zebranie i dzie\u0144 otwarty',\n       h:[['16:00 \u2013 18:00','Dzie\u0144 otwarty dla rodzic\u00f3w uczni\u00f3w klas I\u2013VIII'],\n          ['18:00','Zebranie dla rodzic\u00f3w uczni\u00f3w klas I\u2013III'],\n          ['18:30','Zebranie dla rodzic\u00f3w uczni\u00f3w klas IV\u2013VIII']],\n       n:'Temat: post\u0119py uczni\u00f3w w nauce. Oceny proponowane za I p\u00f3\u0142rocze wystawiane s\u0105 do 11 grudnia.'},\n\n      \/* \u25b8 POPRAWIONE: kropka opieki \u015bwietlicowej tylko przy 23, 28, 29, 30 i 31 grudnia.\n           24, 25, 26 i 27 grudnia zostaj\u0105 bez kropki. *\/\n      {d:'2026-12-23', do:'2026-12-31', k:'fer', t:'Zimowa przerwa \u015bwi\u0105teczna',\n       sw:'Opieka \u015bwietlicowa 23, 28, 29, 30 i 31 grudnia',\n       swDni:['2026-12-23','2026-12-28','2026-12-29','2026-12-30','2026-12-31'],\n       swInfo:{'2026-12-31':'opieka do godz. 13.00'},\n       n:'31 grudnia opieka \u015bwietlicowa do godz. 13.00. 24 grudnia bez opieki. '\n        + '25 i 26 grudnia \u2014 Bo\u017ce Narodzenie.'},\n\n      {d:'2027-01-01', k:'wol', t:'Nowy Rok'},\n\n      {d:'2027-01-04', k:'wol', t:'Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych',\n       n:'Bez opieki \u015bwietlicowej.'},\n\n      {d:'2027-01-05', k:'wol', t:'Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych',\n       n:'Bez opieki \u015bwietlicowej.'},\n\n      {d:'2027-01-06', k:'wol', t:'Trzech Kr\u00f3li'},\n\n      {d:'2027-02-01', do:'2027-02-14', k:'fer', t:'Ferie zimowe dla wojew\u00f3dztwa mazowieckiego'},\n\n      {d:'2027-02-16', k:'zeb', t:'Zebrania podsumowuj\u0105ce prac\u0119 w I p\u00f3\u0142roczu',\n       h:[['17:00','Zebrania z wychowawcami, klasy I\u2013III'],\n          ['18:00','Zebrania z wychowawcami, klasy IV\u2013VIII']]},\n\n      \/* \u25b8 POPRAWIONE: kropka tylko przy 25, 26 i 30 marca \u2014\n           27, 28 i 29 marca (weekend i \u015bwi\u0119ta wielkanocne) bez kropki. *\/\n      {d:'2027-03-25', do:'2027-03-30', k:'fer', t:'Wiosenna przerwa \u015bwi\u0105teczna',\n       sw:'Opieka \u015bwietlicowa 25, 26 i 30 marca',\n       swDni:['2027-03-25','2027-03-26','2027-03-30'],\n       n:'28 marca \u2014 Wielkanoc, 29 marca \u2014 Poniedzia\u0142ek Wielkanocny.'},\n\n      {d:'2027-04-06', k:'zeb', t:'Dzie\u0144 otwarty i zebranie dla klas VIII',\n       h:[['17:00 \u2013 19:00','Dzie\u0144 otwarty dla rodzic\u00f3w uczni\u00f3w klas I\u2013VIII']],\n       n:'Klasa VIII \u2014 zebranie rodzic\u00f3w w sprawie warunk\u00f3w przeprowadzenia egzaminu klas \u00f3smych.'},\n\n      {d:'2027-05-01', k:'wol', t:'\u015awi\u0119to Pracy'},\n      {d:'2027-05-02', k:'wol', t:'\u015awi\u0119to Flagi'},\n      {d:'2027-05-03', k:'wol', t:'\u015awi\u0119to Konstytucji 3 Maja'},\n\n      {d:'2027-05-10', do:'2027-05-12', k:'egz', t:'Egzamin \u00f3smoklasisty \u2014 termin g\u0142\u00f3wny',\n       h:[['10 maja','J\u0119zyk polski, godz. 9:00 \u2014 150 min'],\n          ['11 maja','Matematyka, godz. 9:00 \u2014 125 min'],\n          ['12 maja','J\u0119zyk obcy nowo\u017cytny, godz. 9:00 \u2014 110 min']],\n       n:'Dni wolne od zaj\u0119\u0107 dydaktycznych, bez opieki \u015bwietlicowej. '\n        + 'Wyniki egzaminu i za\u015bwiadczenia \u2014 6 lipca 2027 r.'},\n\n      {d:'2027-05-25', k:'zeb', t:'Zebranie i dzie\u0144 otwarty',\n       h:[['16:00 \u2013 18:00','Dzie\u0144 otwarty dla rodzic\u00f3w uczni\u00f3w klas I\u2013VIII'],\n          ['18:00','Zebranie dla rodzic\u00f3w uczni\u00f3w klas I\u2013III'],\n          ['18:30','Zebranie dla rodzic\u00f3w uczni\u00f3w klas IV\u2013VIII']],\n       n:'Temat: post\u0119py uczni\u00f3w w nauce. Oceny proponowane na koniec roku wystawiane s\u0105 do 24 maja.'},\n\n      {d:'2027-05-27', k:'wol', t:'Bo\u017ce Cia\u0142o'},\n\n      \/* \u25b8 POPRAWIONE: przeniesione na w\u0142a\u015bciwe miejsce (by\u0142o po 9\u201311 czerwca). *\/\n      {d:'2027-05-28', k:'wol', t:'Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych',\n       n:'Bez opieki \u015bwietlicowej.'},\n\n      {d:'2027-06-09', do:'2027-06-11', k:'egz', t:'Egzamin \u00f3smoklasisty \u2014 termin dodatkowy',\n       h:[['9 czerwca','J\u0119zyk polski, godz. 9:00'],\n          ['10 czerwca','Matematyka, godz. 9:00'],\n          ['11 czerwca','J\u0119zyk obcy nowo\u017cytny, godz. 9:00']],\n       n:'Dla uczni\u00f3w, kt\u00f3rzy z przyczyn losowych lub zdrowotnych nie przyst\u0105pili do egzaminu '\n        + 'w terminie g\u0142\u00f3wnym. To NIE s\u0105 dni wolne \u2014 pozosta\u0142e klasy maj\u0105 zaj\u0119cia normalnie.'},\n\n      {d:'2027-06-25', k:'szk', t:'Zako\u0144czenie roku szkolnego',\n       n:'Bez opieki \u015bwietlicowej.'}\n    ]\n  };\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 EGZAMINY PR\u00d3BNE \u2014 druga, osobna tabelka \u25bc\n     Terminy podane s\u0105 tylko z dok\u0142adno\u015bci\u0105 do miesi\u0105ca, dlatego nie\n     trafiaj\u0105 na siatk\u0119 dni ani na wst\u0119g\u0119 \u2014 maj\u0105 w\u0142asn\u0105 sekcj\u0119.\n     g \u2014 grupa (nag\u0142\u00f3wek), p \u2014 pozycje: [nazwa, planowany termin]\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 PROBNE = [\n    {g:'Klasa VII', p:[\n      ['Pr\u00f3bny egzamin \u00f3smoklasisty', 'planowany termin: maj 2027']\n    ]},\n    {g:'Klasa VIII', p:[\n      ['I pr\u00f3bny egzamin',   'planowany termin: pa\u017adziernik 2026'],\n      ['II pr\u00f3bny egzamin',  'planowany termin: listopad 2026'],\n      ['III pr\u00f3bny egzamin', 'planowany termin: grudzie\u0144 2026'],\n      ['IV pr\u00f3bny egzamin',  'planowany termin: luty 2027'],\n      ['V pr\u00f3bny egzamin',   'planowany termin: marzec 2027']\n    ]},\n    {g:'Egzaminy pr\u00f3bne Cambridge', p:[\n      ['I pr\u00f3bny egzamin', 'planowany termin: luty 2027'],\n      ['Pr\u00f3bny egzamin dla uczni\u00f3w klasy VIII przyst\u0119puj\u0105cych do egzamin\u00f3w w sesji zimowej',\n       'planowany termin: pa\u017adziernik 2026']\n    ]}\n  ];\n  \/* \u2550\u2550\u2550 \u25b2 KONIEC \u25b2 \u2550\u2550\u2550 *\/\n\n  var KAT = {\n    wol:{l:'Dni wolne i \u015bwi\u0119ta', c:'#D2543C'},\n    fer:{l:'Ferie i przerwy',    c:'#2E86C8'},\n    zeb:{l:'Zebrania i dni otwarte', c:'#D9A417'},\n    egz:{l:'Egzamin \u00f3smoklasisty', c:'#8B54C4'},\n    szk:{l:'Pocz\u0105tek i koniec roku', c:'#3E8E5A'}\n  };\n  var MIAN = ['Stycze\u0144','Luty','Marzec','Kwiecie\u0144','Maj','Czerwiec',\n              'Lipiec','Sierpie\u0144','Wrzesie\u0144','Pa\u017adziernik','Listopad','Grudzie\u0144'];\n  var DOW = ['Pn','Wt','\u015ar','Cz','Pt','So','Nd'];\n\n  var pad = HX.pad;\n  var d0  = function(s){ var p = s.split('-'); return new Date(+p[0], +p[1]-1, +p[2]); };\n  var key = function(dt){ return dt.getFullYear()+'-'+pad(dt.getMonth()+1)+'-'+pad(dt.getDate()); };\n  var fmt = function(dt){ return dt.getDate()+' '+HX.MIES[dt.getMonth()]+' '+dt.getFullYear(); };\n  var dni = function(a,b){ return Math.round((b-a)\/86400000); };\n  var esc = function(s){ return String(s).replace(\/&\/g,'&amp;').replace(\/\"\/g,'&quot;')\n                                         .replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); };\n\n  var dzis = new Date(); dzis.setHours(0,0,0,0);\n  var A = d0(ROK.start), B = d0(ROK.koniec);\n\n  \/* rozwini\u0119cie zakres\u00f3w na pojedyncze dni + mapa dni *\/\n  var mapa = {};\n  ROK.wydarzenia.forEach(function(e){\n    e._a = d0(e.d); e._b = e.do ? d0(e.do) : e._a;\n    var c = new Date(e._a);\n    while(c <= e._b){\n      mapa[key(c)] = e;\n      c.setDate(c.getDate()+1);\n    }\n  });\n\n  \/* \u25b8 POPRAWKA: automatyczne sortowanie po dacie rozpocz\u0119cia.\n       Dzi\u0119ki temu przestawiony wpis w tabeli powy\u017cej nie psuje ju\u017c\n       ani kolejno\u015bci listy, ani wska\u017anika \u201enajbli\u017csze wydarzenie\u201d. *\/\n  ROK.wydarzenia.sort(function(x,y){ return x._a - y._a; });\n\n  \/* \u25b8 POPRAWKA: czy dany dzie\u0144 ma opiek\u0119 \u015bwietlicow\u0105.\n       Przy wydarzeniach wielodniowych decyduje lista swDni, a nie\n       pole sw \u2014 bez tego kropka trafia\u0142a na wszystkie dni przerwy. *\/\n  function maOpieke(e, k){\n    if(e.swDni) return e.swDni.indexOf(k) > -1;\n    return !!e.sw;\n  }\n\n  \/* \u2500\u2500 wst\u0119ga roku \u2500\u2500 *\/\n  var calosc = dni(A, B) || 1;\n  var rib = document.getElementById('klRib'), html = '';\n\n  ROK.wydarzenia.forEach(function(e, idx){\n    var od = Math.max(0, dni(A, e._a)), doo = Math.min(calosc, dni(A, e._b) + 1);\n    var l = (od \/ calosc * 100), w = Math.max(0.8, (doo - od) \/ calosc * 100);\n    var ile = dni(e._a, e._b) + 1;\n    var opis = e.t + ' \u2014 ' + (e._a.getTime() === e._b.getTime()\n      ? fmt(e._a)\n      : fmt(e._a) + ' \u2013 ' + fmt(e._b) + ' (' + ile + ' dni)');\n    html += '<span class=\"kl-seg\" role=\"button\" tabindex=\"0\" data-i=\"'+idx+'\" '\n         +  'aria-label=\"'+esc(opis)+'\" '\n         +  'data-opis=\"'+esc(opis)+'\" '\n         +  'style=\"left:'+l.toFixed(2)+'%;width:'+w.toFixed(2)+'%;background:'+KAT[e.k].c+'\"><\/span>';\n  });\n\n  \/* znacznik \u201edzi\u015b\u201d tylko wtedy, gdy dzisiejsza data mie\u015bci si\u0119 w roku szkolnym *\/\n  var wTrakcie = (dzis >= A && dzis <= B);\n  if(wTrakcie){\n    html += '<span class=\"kl-now\" style=\"left:'+(dni(A,dzis)\/calosc*100).toFixed(2)+'%\"><\/span>';\n  } else {\n    html += '<span class=\"kl-done\"><\/span>';\n  }\n  rib.innerHTML = html;\n\n  \/* stan roku podany s\u0142owami \u2014 zamiast napisu na wst\u0119dze, kt\u00f3ry j\u0105 zas\u0142ania\u0142 *\/\n  var stanTxt = wTrakcie\n    ? 'Dzi\u015b ' + fmt(dzis) + ' \u2014 jeste\u015bmy w trakcie roku szkolnego'\n    : (dzis > B\n        ? 'Rok szkolny ' + ROK.nazwa + ' zako\u0144czy\u0142 si\u0119 ' + fmt(B)\n        : 'Rok szkolny ' + ROK.nazwa + ' zaczyna si\u0119 ' + fmt(A));\n  document.getElementById('klState').innerHTML =\n    '<span class=\"kl-state\"><i><\/i>' + stanTxt + '<\/span>';\n\n  document.getElementById('klRibA').textContent = fmt(A);\n  document.getElementById('klRibB').textContent = fmt(B);\n\n  \/* \u2500\u2500 skala miesi\u0119cy pod wst\u0119g\u0105 \u2014 bez niej pasek jest nieczytelny \u2500\u2500 *\/\n  var RZYM = ['I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII'];\n  var sc = '';\n  var c2 = new Date(A.getFullYear(), A.getMonth(), 1);\n  while(c2 <= B){\n    var poczM = new Date(c2.getFullYear(), c2.getMonth(), 1);\n    var konM  = new Date(c2.getFullYear(), c2.getMonth()+1, 0);\n    var od2 = Math.max(0, dni(A, poczM)), do2 = Math.min(calosc, dni(A, konM));\n    var srodek = ((od2 + do2) \/ 2 \/ calosc * 100);\n    if(srodek >= 0 && srodek <= 100){\n      sc += '<i style=\"left:'+(od2\/calosc*100).toFixed(2)+'%\"><\/i>'\n         +  '<span style=\"left:'+srodek.toFixed(2)+'%\">'+RZYM[c2.getMonth()]+'<\/span>';\n    }\n    c2.setMonth(c2.getMonth()+1);\n  }\n  document.getElementById('klScale').innerHTML = sc;\n\n  \/* \u2500\u2500 wst\u0119ga rozmawia z list\u0105 termin\u00f3w \u2500\u2500 *\/\n  var tip = document.getElementById('klTip');\n  var IDLE = 'Najed\u017a kursorem lub dotknij paska, aby zobaczy\u0107 nazw\u0119 i d\u0142ugo\u015b\u0107 wydarzenia.';\n  function bezczynnie(){ tip.textContent = IDLE; tip.classList.add('idle'); }\n  bezczynnie();\n\n  function pokaz(el){\n    tip.classList.remove('idle');\n    if(!el) return;\n    tip.textContent = el.getAttribute('data-opis');\n    ROOT.querySelectorAll('.kl-seg').forEach(function(x){ x.classList.remove('hit'); });\n    el.classList.add('hit');\n  }\n  rib.addEventListener('mouseover', function(e){\n    var el = e.target.closest('.kl-seg'); if(el) pokaz(el);\n  });\n  rib.addEventListener('mouseleave', function(){\n    bezczynnie();\n    ROOT.querySelectorAll('.kl-seg').forEach(function(x){ x.classList.remove('hit'); });\n  });\n  function skocz(el){\n    pokaz(el);\n    var cel = document.getElementById('klEv' + el.getAttribute('data-i'));\n    if(!cel) return;\n    ROOT.querySelectorAll('.kl-ev').forEach(function(x){ x.classList.remove('hit'); });\n    cel.classList.add('hit');\n    var y = cel.getBoundingClientRect().top + window.pageYOffset - 90;\n    window.scrollTo({top:Math.max(0,y), behavior:'smooth'});\n    setTimeout(function(){ cel.classList.remove('hit'); }, 2600);\n  }\n  rib.addEventListener('click', function(e){\n    var el = e.target.closest('.kl-seg'); if(el) skocz(el);\n  });\n  rib.addEventListener('keydown', function(e){\n    if(e.key !== 'Enter' && e.key !== ' ') return;\n    var el = e.target.closest('.kl-seg'); if(!el) return;\n    e.preventDefault(); skocz(el);\n  });\n  rib.addEventListener('focusin', function(e){\n    var el = e.target.closest('.kl-seg'); if(el) pokaz(el);\n  });\n\n  \/* \u2500\u2500 status: post\u0119p roku i najbli\u017csze wydarzenie \u2500\u2500 *\/\n  var przyszle = ROK.wydarzenia.filter(function(e){ return e._b >= dzis; });\n  var N = document.getElementById('klN'), L = document.getElementById('klL'), T = document.getElementById('klT');\n  if(dzis < A){\n    N.textContent = dni(dzis, A);\n    L.textContent = 'Do rozpocz\u0119cia roku';\n    T.textContent = 'Rok szkolny ' + ROK.nazwa + ' zaczyna si\u0119 ' + fmt(A) + '.';\n  } else if(dzis > B){\n    N.textContent = '\u2713';\n    L.textContent = 'Rok szkolny ' + ROK.nazwa;\n    T.textContent = 'Zako\u0144czony ' + fmt(B) + '. Kalendarz na kolejny rok w przygotowaniu.';\n  } else if(przyszle.length){\n    var e = przyszle[0], ile = dni(dzis, e._a);\n    N.textContent = ile <= 0 ? 'dzi\u015b' : ile;\n    L.textContent = ile <= 0 ? 'Dzisiaj' : 'Dni do najbli\u017cszego terminu';\n    T.textContent = e.t + ' \u2014 ' + fmt(e._a) + '.';\n  } else {\n    N.textContent = Math.round(dni(A,dzis)\/calosc*100) + '%';\n    L.textContent = 'Post\u0119p roku szkolnego';\n    T.textContent = 'Rok ko\u0144czy si\u0119 ' + fmt(B) + '.';\n  }\n\n  \/* \u2500\u2500 legenda z filtrowaniem \u2500\u2500 *\/\n  var uzyte = [];\n  ROK.wydarzenia.forEach(function(e){ if(uzyte.indexOf(e.k) === -1) uzyte.push(e.k); });\n  var kolejnosc = ['wol','fer','zeb','egz','szk'].filter(function(k){ return uzyte.indexOf(k) > -1; });\n  document.getElementById('klLeg').innerHTML = kolejnosc.map(function(k){\n    return '<button class=\"kl-chip\" type=\"button\" aria-pressed=\"true\" data-k=\"'+k+'\" style=\"--c:'\n      + KAT[k].c+'\"><i><\/i>'+KAT[k].l+'<\/button>';\n  }).join('');\n\n  \/* \u2500\u2500 dwana\u015bcie miesi\u0119cy \u2500\u2500 *\/\n  var out = '';\n  for(var i=0;i<12;i++){\n    var m = (8+i)%12, y = A.getFullYear() + (8+i >= 12 ? 1 : 0);\n    var lead = (new Date(y,m,1).getDay()+6)%7, last = new Date(y,m+1,0).getDate();\n    out += '<div class=\"kl-mon\" data-x><div class=\"kl-mon__h\"><span class=\"kl-mon__n\">'\n        +  MIAN[m] + '<\/span><span class=\"kl-mon__y\">'+y+'<\/span><\/div>';\n    out += '<div class=\"kl-dow\">' + DOW.map(function(x){ return '<span>'+x+'<\/span>'; }).join('') + '<\/div>';\n    out += '<div class=\"kl-grid\">';\n    for(var p=0;p<lead;p++) out += '<div class=\"kl-d pad\"><\/div>';\n    for(var d=1;d<=last;d++){\n      var dt = new Date(y,m,d), k = key(dt), e2 = mapa[k], cls = 'kl-d';\n      var dw = dt.getDay();\n      if(dw===0||dw===6) cls += ' we';\n      if(k === key(dzis)) cls += ' today';\n      if(e2){\n        \/* \u25b8 POPRAWKA: kropka tylko dla dni faktycznie obj\u0119tych opiek\u0105 *\/\n        var opieka = maOpieke(e2, k);\n        var nazwa  = e2.t;\n        if(e2.swDni){\n          nazwa += opieka\n            ? ' \u2014 opieka \u015bwietlicowa'\n                + (e2.swInfo && e2.swInfo[k] ? ' (' + e2.swInfo[k] + ')' : '')\n            : ' \u2014 bez opieki \u015bwietlicowej';\n        }\n        cls += ' ev' + (opieka ? ' sw' : '');\n        out += '<div class=\"'+cls+'\" data-k=\"'+e2.k+'\" data-n=\"'+esc(nazwa)\n            +  '\" style=\"--c:'+KAT[e2.k].c+'\">'+d+'<\/div>';\n      } else {\n        out += '<div class=\"'+cls+'\">'+d+'<\/div>';\n      }\n    }\n    out += '<\/div><\/div>';\n  }\n  document.getElementById('klMonths').innerHTML = out;\n\n  \/* \u2500\u2500 o\u015b wydarze\u0144 \u2500\u2500 *\/\n  var lh = '';\n  ROK.wydarzenia.forEach(function(e,idx){\n    var past = e._b < dzis;\n    var next = (!past && przyszle.length && przyszle[0] === e);\n    var kiedy = (e._a.getTime() === e._b.getTime())\n      ? fmt(e._a)\n      : e._a.getDate()+' '+HX.MIES[e._a.getMonth()]+' \u2013 '+fmt(e._b);\n    var dzien = (e._a.getTime() === e._b.getTime())\n      ? ', ' + HX.DOW[e._a.getDay()] : '';\n    var b = '';\n    if(e.sw) b += '<span class=\"kl-b kl-b--sw\">'\n      + (typeof e.sw === 'string' ? e.sw : 'Opieka \u015bwietlicowa zapewniona') + '<\/span>';\n    if(next) b += '<span class=\"kl-b kl-b--next\">Najbli\u017csze<\/span>';\n    b += '<span class=\"kl-b\">'+KAT[e.k].l+'<\/span>';\n    var godz = e.h ? '<div class=\"kl-hours\">' + e.h.map(function(g){\n      return '<div><b>'+g[0]+'<\/b><span>'+g[1]+'<\/span><\/div>'; }).join('') + '<\/div>' : '';\n    var nota = e.n ? '<div class=\"kl-note2\">'+e.n+'<\/div>' : '';\n    lh += '<div class=\"kl-ev'+(past?' past':'')+(next?' next':'')+'\" id=\"klEv'+idx+'\" data-k=\"'+e.k+'\">'\n       +  '<span class=\"kl-dot\" style=\"--c:'+KAT[e.k].c+'\"><\/span>'\n       +  '<div class=\"kl-card\" style=\"--c:'+KAT[e.k].c+'\">'\n       +  '<div class=\"kl-when\">'+kiedy+dzien+'<\/div>'\n       +  '<div class=\"kl-what\">'+e.t+'<\/div>'\n       +  godz + nota\n       +  '<div class=\"kl-badges\">'+b+'<\/div><\/div><\/div>';\n  });\n  document.getElementById('klList').innerHTML = lh;\n  document.getElementById('klListSub').textContent = (dzis > B)\n    ? 'Rok szkolny ' + ROK.nazwa + ' zako\u0144czony \u2014 wszystkie terminy ju\u017c min\u0119\u0142y.'\n    : 'Minione s\u0105 przygaszone, najbli\u017csze wyr\u00f3\u017cnione.';\n\n  \/* \u2500\u2500 filtrowanie \u2500\u2500 *\/\n  ROOT.querySelectorAll('.kl-chip').forEach(function(ch){\n    ch.addEventListener('click', function(){\n      var on = ch.getAttribute('aria-pressed') === 'true';\n      ch.setAttribute('aria-pressed', on ? 'false' : 'true');\n      var k = ch.getAttribute('data-k');\n      ROOT.querySelectorAll('.kl-d[data-k=\"'+k+'\"]').forEach(function(el){ el.classList.toggle('dim', on); });\n      ROOT.querySelectorAll('.kl-ev[data-k=\"'+k+'\"]').forEach(function(el){ el.classList.toggle('off', on); });\n    });\n  });\n\n  \/* \u2500\u2500 eksport do kalendarza \u2500\u2500 *\/\n  function toast(t){\n    var el = document.getElementById('klMsg');\n    el.textContent = t; setTimeout(function(){ el.textContent = ''; }, 4500);\n  }\n  document.getElementById('klIcs').addEventListener('click', function(){\n    var stamp = new Date().toISOString().replace(\/[-:]\/g,'').split('.')[0]+'Z';\n    var L2 = ['BEGIN:VCALENDAR','VERSION:2.0','PRODID:-\/\/Hilaris Blonie\/\/Rok szkolny\/\/PL',\n              'CALSCALE:GREGORIAN','METHOD:PUBLISH','X-WR-CALNAME:Hilaris \u2014 rok szkolny '+ROK.nazwa];\n    ROK.wydarzenia.forEach(function(e,i){\n      var s1 = key(e._a).replace(\/-\/g,'');\n      var kon = new Date(e._b); kon.setDate(kon.getDate()+1);\n      var s2 = key(kon).replace(\/-\/g,'');\n      var opis = (e.h ? e.h.map(function(g){ return g[0]+' \u2014 '+g[1]; }).join('\\\\n') + '\\\\n' : '')\n               + (e.n ? e.n : '');\n      L2.push('BEGIN:VEVENT',\n        'UID:hilaris-rok-'+s1+'-'+i+'@hilaris-blonie.pl',\n        'DTSTAMP:'+stamp,'DTSTART;VALUE=DATE:'+s1,'DTEND;VALUE=DATE:'+s2,\n        'SUMMARY:Hilaris \u2014 '+e.t,\n        'LOCATION:Szko\u0142a Podstawowa Hilaris, ul. Passowska 16A, 05-870 B\u0142onie',\n        'DESCRIPTION:'+(opis || KAT[e.k].l),\n        'TRANSP:TRANSPARENT');\n      if(e.k === 'zeb'){ L2.push('BEGIN:VALARM','TRIGGER:-P1D','ACTION:DISPLAY',\n        'DESCRIPTION:Jutro zebranie w szkole','END:VALARM'); }\n      L2.push('END:VEVENT');\n    });\n    L2.push('END:VCALENDAR');\n    try{\n      var b2 = new Blob([L2.join('\\r\\n')], {type:'text\/calendar;charset=utf-8'});\n      var a2 = document.createElement('a');\n      a2.href = URL.createObjectURL(b2);\n      a2.download = 'hilaris-rok-szkolny-'+ROK.nazwa.replace('\/','-')+'.ics';\n      document.body.appendChild(a2); a2.click();\n      setTimeout(function(){ URL.revokeObjectURL(a2.href); a2.remove(); }, 1500);\n      toast('Gotowe \u2014 otw\u00f3rz pobrany plik, aby doda\u0107 terminy do kalendarza.');\n    }catch(err){ toast('Nie uda\u0142o si\u0119 przygotowa\u0107 pliku.'); }\n  });\n  document.getElementById('klPrint').addEventListener('click', function(){ window.print(); });\n\n  \/* \u2500\u2500 egzaminy pr\u00f3bne \u2500\u2500 *\/\n  document.getElementById('klProbne').innerHTML = PROBNE.map(function(g, i){\n    var szeroki = (i === PROBNE.length - 1) ? ' kl-prg--wide' : '';\n    return '<div class=\"kl-prg'+szeroki+'\" data-x><h3>'+g.g+'<\/h3><ul class=\"kl-prl\">'\n      + g.p.map(function(p){ return '<li><b>'+p[0]+'<\/b><span>'+p[1]+'<\/span><\/li>'; }).join('')\n      + '<\/ul><\/div>';\n  }).join('');\n\n  \/* \u2500\u2500 powi\u0105zane \u2500\u2500 *\/\n  var T2 = [\n    {t:'\u015awietlica', d:'opieka w dni wolne', c:'#8B54C4', h:U+'2723',\n     i:ic('<path d=\"M2.6 11 12 3.6 21.4 11\"\/><path d=\"M5 9.2V20h14V9.2\"\/>')},\n    {t:'Rozk\u0142ad dzwonk\u00f3w', d:'godziny lekcji', c:'#D9A417', h:U+'2657',\n     i:ic('<circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5.3l3.4 2\"\/>')},\n    {t:'Obiady', d:'posi\u0142ki w szkole', c:'#D2543C', h:U+'2730',\n     i:ic('<path d=\"M4 11.5h16a8 8 0 0 1-16 0z\"\/><path d=\"M2.6 19.4h18.8\"\/>')},\n    {t:'Egzamin \u00f3smoklasisty', d:'terminy i wyniki', c:'#3E8E5A', 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  ];\n  document.getElementById('klTiles').innerHTML = T2.map(function(x){\n    return '<a class=\"hx-tile\" href=\"'+x.h+'\" style=\"--c:'+x.c+'\" data-x>'\n      + '<span class=\"hx-ic\">'+x.i+'<\/span><b>'+x.t+'<\/b><u>'+x.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<div class=\"elementor-element elementor-element-8832d1c animated-slow e-transform elementor-position-top elementor-invisible elementor-widget elementor-widget-image-box\" data-id=\"8832d1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/hilaris-blonie.pl\/?page_id=6181\" tabindex=\"-1\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/08\/IMG-20251107-WA0091-1024x768.jpg\" class=\"attachment-large size-large wp-image-6173\" alt=\"\" srcset=\"https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/08\/IMG-20251107-WA0091-1024x768.jpg 1024w, https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/08\/IMG-20251107-WA0091-300x225.jpg 300w, https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/08\/IMG-20251107-WA0091-768x576.jpg 768w, https:\/\/hilaris-blonie.pl\/wp-content\/uploads\/2026\/08\/IMG-20251107-WA0091.jpg 1440w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\"><a href=\"https:\/\/hilaris-blonie.pl\/?page_id=6181\">BAL DYNI<\/a><\/h3><\/div><\/div>\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 Dla rodzica Kalendarz roku szkolnego Dni wolne, przerwy, zebrania i dni otwarte \u2014 wszystko w jednym miejscu. Wst\u0119ga roku szkolnego. Ka\u017cdy pasek to jedno wydarzenie, a jego szeroko\u015b\u0107 odpowiada liczbie dni. Prosimy dotkn\u0105\u0107 paska, aby zobaczy\u0107 szczeg\u00f3\u0142y. Najed\u017a kursorem lub dotknij paska, aby zobaczy\u0107 nazw\u0119 i d\u0142ugo\u015b\u0107 wydarzenia. \u2014\u2014 \u2014 Najbli\u017csze wydarzenie\u2014 Ca\u0142y [&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-2702","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/2702","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=2702"}],"version-history":[{"count":37,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/2702\/revisions"}],"predecessor-version":[{"id":7989,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/2702\/revisions\/7989"}],"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=2702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}