{"id":5662,"date":"2026-08-01T14:34:55","date_gmt":"2026-08-01T12:34:55","guid":{"rendered":"https:\/\/hilaris-blonie.pl\/?page_id=5662"},"modified":"2026-08-18T14:49:18","modified_gmt":"2026-08-18T12:49:18","slug":"kalendarz-roku-przedszkolnego","status":"publish","type":"page","link":"https:\/\/hilaris-blonie.pl\/?page_id=5662","title":{"rendered":"Kalendarz roku przedszkolnego"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5662\" class=\"elementor elementor-5662\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e28a960 e-con e-atomic-element e-flexbox-base e-7c74e61 \" data-id=\"e28a960\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"e28a960\" data-e-type=\"e-flexbox\" data-id=\"e28a960\">\n    \t\t<div class=\"elementor-element elementor-element-ad0d624 elementor-widget elementor-widget-html\" data-id=\"ad0d624\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ==========================================================================\r\n     HILARIS \u2014 Przedszkole \u2192 KALENDARZ ROKU PRZEDSZKOLNEGO  (v2)\r\n     Zast\u0119puje poprzedni\u0105 wersj\u0119. Jeden widget HTML w Elementorze.\r\n\r\n     ZASADA: tre\u015b\u0107 jest w pe\u0142ni czytelna BEZ JavaScriptu i BEZ GSAP.\r\n     Animacje tylko dodaj\u0105 \u2014 nigdy nie warunkuj\u0105 widoczno\u015bci.\r\n\r\n     \u25b8 AKTUALIZACJA NA KOLEJNY ROK: edytujesz WY\u0141\u0104CZNIE YEAR_START i tablic\u0119 FREE\r\n       na pocz\u0105tku sekcji ze skryptem na dole pliku. Reszta przelicza si\u0119 sama.\r\n     ========================================================================== -->\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Figtree:wght@400;500;600;700;800&family=Fraunces:ital,opsz,wght@0,9..144,500;0,9..144,600;0,9..144,700&display=swap');\r\n\r\n.hil-kal{\r\n  --ink:#12324B; --ink-2:#55697B; --line:#DCE5E0; --paper:#fff; --mist:#F1F5F3; --r:16px;\r\n  --t-ust:#E09400; --t-zw:#8B54C4; --t-um:#0F7266; --t-zeb:#2E86C8; --t-atr:#D0417A;\r\n  font-family:'Figtree',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\r\n  color:var(--ink); line-height:1.6; display:block; width:100%;\r\n  -webkit-font-smoothing:antialiased;\r\n}\r\n.hil-kal *,.hil-kal *::before,.hil-kal *::after{box-sizing:border-box;}\r\n.hil-kal .w{max-width:1200px;margin:0 auto;padding:0 22px;}\r\n.hil-kal p{margin:0 0 1em;} .hil-kal p:last-child{margin-bottom:0;}\r\n.hil-kal h2,.hil-kal h3{font-family:'Fraunces',Georgia,'Times New Roman',serif;margin:0;\r\n  line-height:1.1;letter-spacing:-.015em;font-weight:700;color:var(--ink);}\r\n.hil-kal h2{font-size:clamp(2.2rem,5.2vw,3.6rem);}\r\n.hil-kal h3{font-size:clamp(1.35rem,2.5vw,1.9rem);}\r\n.hil-kal .eyebrow{font-size:.73rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;\r\n  color:var(--t-um);display:flex;align-items:center;gap:12px;margin:0 0 20px;}\r\n.hil-kal .eyebrow::before{content:\"\";width:32px;height:2px;background:var(--t-ust);flex:none;}\r\n\r\n\/* \u2500\u2500 stany startowe animacji: TYLKO gdy GSAP potwierdzony (.on) \u2500\u2500 *\/\r\n.hil-kal.on .ln>i{transform:translateY(105%);}\r\n.hil-kal.on [data-a=\"up\"]{opacity:0;transform:translateY(24px);}\r\n.hil-kal.on [data-a=\"fade\"]{opacity:0;}\r\n.hil-kal.on .d.free::before{transform:scale(0);}\r\n.hil-kal .ln{display:block;overflow:hidden;}\r\n.hil-kal .ln>i{display:block;font-style:normal;}\r\n\r\n\/* \u2550\u2550 KOTWICE \u2550\u2550\r\n   --kal-anchor = wysoko\u015b\u0107 przyklejonego nag\u0142\u00f3wka + zapas.\r\n   Je\u015bli po klikni\u0119ciu w menu tytu\u0142 sekcji chowa si\u0119 pod menu \u2014 zwi\u0119ksz t\u0119 warto\u015b\u0107. *\/\r\n.hil-kal{--kal-anchor:120px;}\r\n.hil-kal #dni-wolne,.hil-kal #piatki,.hil-kal #zebrania{scroll-margin-top:var(--kal-anchor);}\r\n\r\n@media (max-width:1024px){ .hil-kal{--kal-anchor:90px;} }\r\n\r\n\/* \u2550\u2550 HERO \u2550\u2550 *\/\r\n.hil-kal .hero{padding:clamp(52px,7vw,92px) 0 0;}\r\n.hil-kal .hero__grid{display:grid;grid-template-columns:minmax(0,1fr) auto;\r\n  gap:clamp(28px,5vw,64px);align-items:center;}\r\n.hil-kal .hero__lead{font-size:clamp(1.03rem,1.3vw,1.16rem);color:var(--ink-2);margin-top:22px;max-width:48ch;}\r\n.hil-kal .hero__lead b{color:var(--ink);font-weight:600;}\r\n.hil-kal .ring{position:relative;width:200px;height:200px;flex:none;}\r\n.hil-kal .ring svg{width:100%;height:100%;transform:rotate(-90deg);}\r\n.hil-kal .ring__bg{fill:none;stroke:var(--line);stroke-width:12;}\r\n.hil-kal .ring__on{fill:none;stroke:var(--t-um);stroke-width:12;}\r\n.hil-kal .ring__c{position:absolute;inset:0;display:grid;place-content:center;text-align:center;}\r\n.hil-kal .ring__n{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:2.9rem;line-height:1;}\r\n.hil-kal .ring__l{font-size:.75rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;\r\n  color:var(--ink-2);margin-top:7px;}\r\n\r\n\/* \u2550\u2550 LICZBY \u2550\u2550 *\/\r\n.hil-kal .kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;\r\n  margin-top:clamp(34px,4.5vw,54px);}\r\n.hil-kal .kpi{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:22px;}\r\n.hil-kal .kpi b{display:block;font-family:'Fraunces',Georgia,serif;font-weight:700;\r\n  font-size:clamp(1.7rem,3vw,2.25rem);line-height:1;}\r\n.hil-kal .kpi span{display:block;font-size:.87rem;color:var(--ink-2);margin-top:9px;}\r\n.hil-kal .kpi--live{background:var(--ink);border-color:var(--ink);}\r\n.hil-kal .kpi--live b{color:#fff;} .hil-kal .kpi--live span{color:#A5BDCE;}\r\n\r\n\/* \u2550\u2550 SIATKA 12 MIESI\u0118CY \u2550\u2550 *\/\r\n.hil-kal .year{padding:clamp(46px,6vw,84px) 0 0;}\r\n.hil-kal .year__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;\r\n  gap:16px;margin-bottom:clamp(22px,3vw,32px);}\r\n.hil-kal .months{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}\r\n.hil-kal .mon{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);\r\n  padding:18px 16px 20px;transition:box-shadow .35s ease,border-color .35s ease;}\r\n.hil-kal .mon:hover{border-color:#C2D2CB;box-shadow:0 18px 34px -26px rgba(18,50,75,.55);}\r\n.hil-kal .mon__h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:13px;}\r\n.hil-kal .mon__n{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:1.08rem;}\r\n.hil-kal .mon__b{font-size:.7rem;font-weight:700;background:var(--mist);color:var(--ink-2);\r\n  border-radius:999px;padding:4px 9px;white-space:nowrap;}\r\n.hil-kal .mon__b.has{background:#FFF3D9;color:#8A5B00;}\r\n.hil-kal .dow,.hil-kal .grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}\r\n.hil-kal .dow span{text-align:center;font-size:.63rem;font-weight:700;letter-spacing:.04em;\r\n  color:#9BADB8;text-transform:uppercase;padding-bottom:5px;}\r\n.hil-kal .d{position:relative;aspect-ratio:1;display:grid;place-items:center;border-radius:8px;\r\n  font-size:.78rem;font-weight:500;}\r\n.hil-kal .d.pad{visibility:hidden;}\r\n.hil-kal .d.we{color:#AEBCC5;}\r\n.hil-kal .d.today{box-shadow:inset 0 0 0 2px var(--ink);font-weight:700;}\r\n\/* dzie\u0144 wolny \u2014 t\u0142o jest domy\u015blnie widoczne; animacja tylko je \u201ewstrzykuje\" *\/\r\n.hil-kal .d.free{cursor:help;}\r\n.hil-kal .d.free::before{content:\"\";position:absolute;inset:0;border-radius:8px;background:var(--c);\r\n  transform:scale(1);transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .3s ease;}\r\n.hil-kal .d.free>i{position:relative;z-index:2;font-style:normal;color:#fff;font-weight:700;\r\n  text-shadow:0 1px 2px rgba(0,0,0,.18);}\r\n.hil-kal .d.free.dim::before{opacity:.15;}\r\n.hil-kal .d.free.dim>i{color:var(--ink-2);text-shadow:none;}\r\n.hil-kal .d[data-n]::after{content:attr(data-n);position:absolute;bottom:calc(100% + 8px);left:50%;\r\n  transform:translateX(-50%) translateY(5px);background:var(--ink);color:#fff;font-size:.71rem;\r\n  font-weight:500;padding:7px 11px;border-radius:9px;white-space:nowrap;opacity:0;pointer-events:none;\r\n  transition:opacity .2s ease,transform .2s ease;z-index:20;box-shadow:0 10px 26px -14px rgba(0,0,0,.75);}\r\n.hil-kal .d[data-n]:hover::after,.hil-kal .d[data-n]:focus-visible::after{opacity:1;transform:translateX(-50%) translateY(0);}\r\n\r\n\/* dzie\u0144 zebrania \u2014 obramowanie, nie wype\u0142nienie: przedszkole tego dnia PRACUJE *\/\r\n.hil-kal .d.meet{cursor:help;font-weight:700;color:var(--ink);\r\n  box-shadow:inset 0 0 0 2px var(--t-zeb);transition:box-shadow .3s ease,opacity .3s ease;}\r\n.hil-kal .d.meet::before{content:\"\";position:absolute;left:50%;bottom:3px;width:4px;height:4px;\r\n  border-radius:50%;background:var(--t-zeb);transform:translateX(-50%);}\r\n.hil-kal .d.meet.dim{box-shadow:inset 0 0 0 2px rgba(46,134,200,.22);color:var(--ink-2);}\r\n.hil-kal .d.meet.dim::before{opacity:.25;}\r\n\r\n\/* dzie\u0144 atrakcji \u2014 mi\u0119kkie t\u0142o, kolorowa cyfra: przedszkole pracuje, dzieje si\u0119 co\u015b ekstra *\/\r\n.hil-kal .d.atr{cursor:help;font-weight:700;color:var(--t-atr);\r\n  background:rgba(208,65,122,.13);transition:background .3s ease,color .3s ease;}\r\n.hil-kal .d.atr.dim{background:rgba(208,65,122,.05);color:#A3B2BA;}\r\n\r\n\/* ZABEZPIECZENIE: kom\u00f3rka dnia nigdy nie przejmuje styl\u00f3w sekcji o tej samej nazwie klasy *\/\r\n.hil-kal .months .grid .d{padding:0;margin:0;display:grid;place-items:center;\r\n  aspect-ratio:1;border:0;grid-template-columns:none;}\r\n\r\n\/* \u2550\u2550 ATRAKCYJNE PI\u0104TKI \u2550\u2550 *\/\r\n.hil-kal .fri{padding:clamp(46px,6vw,82px) 0 0;}\r\n.hil-kal .fri__head{max-width:62ch;}\r\n.hil-kal .fri__head p{color:var(--ink-2);margin-top:14px;}\r\n.hil-kal .fri__count{display:inline-flex;align-items:baseline;gap:8px;background:rgba(208,65,122,.1);\r\n  color:var(--t-atr);border-radius:999px;padding:7px 16px;font-weight:700;font-size:.9rem;margin-top:16px;}\r\n.hil-kal .fri__count b{font-family:'Fraunces',Georgia,serif;font-size:1.25rem;}\r\n.hil-kal .fri__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));\r\n  gap:16px;margin-top:clamp(22px,3vw,32px);}\r\n.hil-kal .amon{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);\r\n  padding:20px 20px 12px;transition:box-shadow .35s ease,opacity .3s ease;}\r\n.hil-kal .amon:hover{box-shadow:0 18px 34px -26px rgba(18,50,75,.5);}\r\n.hil-kal .amon__h{display:flex;align-items:center;justify-content:space-between;gap:10px;\r\n  padding-bottom:12px;border-bottom:2px solid rgba(208,65,122,.2);margin-bottom:6px;}\r\n.hil-kal .amon__n{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:1.1rem;}\r\n.hil-kal .amon__c{font-size:.7rem;font-weight:700;color:var(--t-atr);background:rgba(208,65,122,.1);\r\n  border-radius:999px;padding:4px 10px;white-space:nowrap;}\r\n.hil-kal .ev{display:grid;grid-template-columns:52px 1fr;gap:14px;padding:12px 0;\r\n  border-bottom:1px dashed var(--line);align-items:baseline;}\r\n.hil-kal .amon .ev:last-child{border-bottom:0;}\r\n.hil-kal .ev__d{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:.95rem;color:var(--t-atr);}\r\n.hil-kal .ev__n{font-size:.93rem;line-height:1.45;}\r\n.hil-kal .ev__w{display:block;font-size:.75rem;color:#9BADB8;margin-top:2px;}\r\n.hil-kal .ev__w.warn{color:#C1651A;font-weight:600;}\r\n.hil-kal .ev.past .ev__n{color:#9FB0BA;}\r\n.hil-kal .fri__grid.is-off{opacity:.22;}\r\n\r\n\/* \u2550\u2550 ZEBRANIA \u2550\u2550 *\/\r\n.hil-kal .meets{padding:clamp(44px,5.5vw,76px) 0 0;}\r\n.hil-kal .meets__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;\r\n  margin-top:clamp(20px,2.6vw,30px);}\r\n.hil-kal .zeb{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:center;\r\n  background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--t-zeb);\r\n  border-radius:var(--r);padding:20px 24px;transition:box-shadow .35s ease;}\r\n.hil-kal .zeb:hover{box-shadow:0 18px 34px -26px rgba(18,50,75,.55);}\r\n.hil-kal .zeb.past{opacity:.5;}\r\n.hil-kal .zeb.is-off{opacity:.22;}\r\n.hil-kal .zeb__dd{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:2.1rem;line-height:1;text-align:center;}\r\n.hil-kal .zeb__mm{font-size:.7rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;\r\n  color:var(--ink-2);margin-top:5px;text-align:center;white-space:nowrap;}\r\n.hil-kal .zeb__g{font-weight:700;font-size:1.02rem;}\r\n.hil-kal .zeb__s{font-size:.86rem;color:var(--ink-2);margin-top:3px;}\r\n.hil-kal .zeb__h{display:inline-flex;align-items:center;gap:7px;margin-top:11px;background:#E8F2FA;\r\n  color:#1A5C8C;border-radius:999px;padding:5px 13px;font-size:.85rem;font-weight:700;}\r\n.hil-kal .zeb__h svg{width:14px;height:14px;}\r\n.hil-kal .meets__note{margin-top:20px;display:flex;gap:12px;align-items:flex-start;\r\n  font-size:.93rem;color:var(--ink-2);background:var(--mist);border-radius:var(--r);padding:18px 22px;}\r\n.hil-kal .meets__note svg{width:20px;height:20px;color:var(--t-zeb);flex:none;margin-top:2px;}\r\n\r\n\/* \u2550\u2550 LEGENDA \u2550\u2550 *\/\r\n.hil-kal .legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(28px,3.5vw,40px);align-items:center;}\r\n.hil-kal .legend__l{font-size:.76rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;\r\n  color:var(--ink-2);margin-right:4px;}\r\n.hil-kal .chip{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);\r\n  background:var(--paper);border-radius:999px;padding:9px 17px;font-size:.9rem;font-weight:600;\r\n  cursor:pointer;font-family:inherit;color:var(--ink);transition:border-color .25s,opacity .25s;}\r\n.hil-kal .chip i{width:11px;height:11px;border-radius:50%;background:var(--c);display:block;}\r\n.hil-kal .chip[aria-pressed=\"false\"]{opacity:.4;}\r\n.hil-kal .chip:hover{border-color:#B4C6BE;}\r\n\r\n\/* \u2550\u2550 LISTA \u2550\u2550 *\/\r\n.hil-kal .list{margin-top:clamp(28px,3.5vw,42px);border-top:1px solid var(--line);}\r\n.hil-kal .row{display:grid;grid-template-columns:118px 1fr auto;gap:18px;align-items:center;\r\n  padding:16px 6px;border-bottom:1px solid var(--line);transition:opacity .3s,background .25s;}\r\n.hil-kal .row:hover{background:var(--mist);}\r\n.hil-kal .row.is-off{opacity:.22;}\r\n.hil-kal .row__d{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:1.03rem;\r\n  display:flex;align-items:center;gap:11px;}\r\n.hil-kal .row__d i{width:9px;height:9px;border-radius:50%;background:var(--c);flex:none;}\r\n.hil-kal .row__w{font-size:.78rem;color:#9BADB8;font-weight:500;}\r\n.hil-kal .row__t{font-size:.73rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;\r\n  color:var(--c);white-space:nowrap;}\r\n.hil-kal .row.past .row__n{color:#9FB0BA;}\r\n\r\n\/* \u2550\u2550 EKSPORT \u2550\u2550 *\/\r\n.hil-kal .exp{margin-top:clamp(34px,4vw,52px);background:var(--mist);border-radius:var(--r);\r\n  padding:clamp(26px,3.6vw,44px);display:flex;flex-wrap:wrap;align-items:center;\r\n  justify-content:space-between;gap:24px;}\r\n.hil-kal .exp p{margin:9px 0 0;color:var(--ink-2);font-size:.95rem;max-width:54ch;}\r\n.hil-kal .acts{display:flex;flex-wrap:wrap;gap:12px;}\r\n.hil-kal .btn{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-weight:600;\r\n  font-size:.96rem;padding:14px 26px;border-radius:999px;border:0;cursor:pointer;font-family:inherit;\r\n  transition:transform .26s ease,background .26s ease;}\r\n.hil-kal .btn svg{width:18px;height:18px;}\r\n.hil-kal .btn--s{background:var(--ink);color:#fff;}\r\n.hil-kal .btn--s:hover{background:#0A2032;transform:translateY(-2px);}\r\n.hil-kal .btn--g{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px rgba(18,50,75,.26);}\r\n.hil-kal .btn--g:hover{background:rgba(18,50,75,.06);transform:translateY(-2px);}\r\n.hil-kal .msg{font-size:.85rem;color:var(--t-um);font-weight:600;margin-top:12px;min-height:1.2em;}\r\n.hil-kal .note{margin-top:26px;font-size:.86rem;color:var(--ink-2);padding-bottom:clamp(52px,7vw,90px);}\r\n.hil-kal a:focus-visible,.hil-kal button:focus-visible{outline:3px solid var(--t-um);outline-offset:3px;}\r\n\r\n@media (max-width:1150px){ .hil-kal .months{grid-template-columns:repeat(3,minmax(0,1fr));} }\r\n@media (max-width:1000px){\r\n  .hil-kal .hero__grid{grid-template-columns:1fr;}\r\n  .hil-kal .kpis{grid-template-columns:repeat(2,minmax(0,1fr));}\r\n}\r\n@media (max-width:760px){ .hil-kal .months{grid-template-columns:repeat(2,minmax(0,1fr));} }\r\n@media (max-width:520px){\r\n  .hil-kal .months{grid-template-columns:1fr;}\r\n  .hil-kal .row{grid-template-columns:1fr;gap:5px;}\r\n  .hil-kal .exp{flex-direction:column;align-items:flex-start;}\r\n}\r\n@media (prefers-reduced-motion:reduce){\r\n  .hil-kal.on [data-a],.hil-kal.on .ln>i{opacity:1!important;transform:none!important;}\r\n  .hil-kal.on .d.free::before{transform:scale(1)!important;}\r\n}\r\n\/* \u2550\u2550 WYDRUK \u2014 kalendarz na tablic\u0119 og\u0142osze\u0144 \u2550\u2550 *\/\r\n@media print{\r\n  body *{visibility:hidden!important;}\r\n  .hil-kal,.hil-kal *{visibility:visible!important;}\r\n  .hil-kal{position:absolute!important;left:0;top:0;width:100%;}\r\n  .hil-kal .ring,.hil-kal .exp,.hil-kal .legend,.hil-kal .kpi--live{display:none!important;}\r\n  .hil-kal .months{grid-template-columns:repeat(4,1fr)!important;}\r\n  .hil-kal .mon{break-inside:avoid;border-color:#bbb!important;}\r\n  .hil-kal .hero{padding-top:0!important;}\r\n}\r\n<\/style>\r\n\r\n<section class=\"hil-kal\" id=\"hil-kalendarz\">\r\n  <div class=\"w\">\r\n\r\n    <div class=\"hero\">\r\n      <div class=\"hero__grid\">\r\n        <div>\r\n          <p class=\"eyebrow\" data-a=\"fade\">Niepubliczne Dwuj\u0119zyczne Przedszkole Hilaris<\/p>\r\n          <h2><span class=\"ln\"><i>Kalendarz roku<\/i><\/span><span class=\"ln\"><i>przedszkolnego<\/i><\/span><\/h2>\r\n          <p class=\"hero__lead\" data-a=\"up\">\r\n            Nasze przedszkole pracuje <b>przez 12 miesi\u0119cy w roku<\/b> \u2014 r\u00f3wnie\u017c w wakacje.\r\n            Poni\u017cej znajd\u0105 Pa\u0144stwo pe\u0142en wykaz dni wolnych od zaj\u0119\u0107 dydaktycznych\r\n            w roku szkolnym <b id=\"kalYearLabel\">2025\/2026<\/b>.\r\n          <\/p>\r\n        <\/div>\r\n        <div class=\"ring\" aria-hidden=\"true\">\r\n          <svg viewBox=\"0 0 120 120\">\r\n            <circle class=\"ring__bg\" cx=\"60\" cy=\"60\" r=\"50\"\/>\r\n            <circle class=\"ring__on\" id=\"kalRing\" cx=\"60\" cy=\"60\" r=\"50\"\/>\r\n          <\/svg>\r\n          <div class=\"ring__c\"><span class=\"ring__n\">12<\/span><span class=\"ring__l\">miesi\u0119cy pracy<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"kpis\">\r\n        <div class=\"kpi\"><b id=\"kalDni\">\u2014<\/b><span>dni z zaj\u0119ciami dydaktycznymi<\/span><\/div>\r\n        <div class=\"kpi\"><b id=\"kalWolne\">\u2014<\/b><span>dni wolnych od zaj\u0119\u0107<\/span><\/div>\r\n        <div class=\"kpi\"><b id=\"kalPozostalo\">\u2014<\/b><span>dni wolnych jeszcze przed nami<\/span><\/div>\r\n        <div class=\"kpi kpi--live\"><b id=\"kalNext\">\u2014<\/b><span id=\"kalNextLbl\">najbli\u017cszy dzie\u0144 wolny<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"year\" id=\"dni-wolne\">\r\n      <div class=\"year__head\">\r\n        <h3><span class=\"ln\"><i>Ca\u0142y rok na jednym ekranie<\/i><\/span><\/h3>\r\n      <\/div>\r\n      <div class=\"months\" id=\"kalMonths\"><\/div>\r\n\r\n      <div class=\"legend\" role=\"group\" aria-label=\"Filtruj rodzaje dni wolnych\">\r\n        <span class=\"legend__l\">Legenda \u2014 kliknij, aby filtrowa\u0107<\/span>\r\n        <button class=\"chip\" data-f=\"ust\" aria-pressed=\"true\" style=\"--c:var(--t-ust)\"><i><\/i>Dni ustawowo wolne<\/button>\r\n        <button class=\"chip\" data-f=\"zw\"  aria-pressed=\"true\" style=\"--c:var(--t-zw)\"><i><\/i>Wigilia i Sylwester<\/button>\r\n        <button class=\"chip\" data-f=\"um\"  aria-pressed=\"true\" style=\"--c:var(--t-um)\"><i><\/i>Zgodnie z umow\u0105 edukacyjn\u0105<\/button>\r\n        <button class=\"chip\" data-f=\"zeb\" aria-pressed=\"true\" style=\"--c:var(--t-zeb)\"><i><\/i>Zebrania z rodzicami<\/button>\r\n        <button class=\"chip\" data-f=\"atr\" aria-pressed=\"true\" style=\"--c:var(--t-atr)\"><i><\/i>Atrakcyjne Pi\u0105tki<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"list\" id=\"kalList\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"fri\" id=\"piatki\">\r\n      <div class=\"fri__head\">\r\n        <h3><span class=\"ln\"><i>Atrakcyjne Pi\u0105tki<\/i><\/span><\/h3>\r\n        <p data-a=\"fade\">Koniec tygodnia ma u nas w\u0142asny rytua\u0142. W pi\u0105tek dzieje si\u0119 co\u015b, czego\r\n           nie ma w planie zwyk\u0142ego dnia \u2014 teatrzyk po angielsku, gra terenowa, warsztaty\r\n           kulinarne albo wizyta go\u015bcia.<\/p>\r\n        <span class=\"fri__count\" data-a=\"fade\"><b id=\"kalAtrN\">0<\/b> wydarze\u0144 zaplanowanych w tym roku<\/span>\r\n      <\/div>\r\n      <div class=\"fri__grid\" id=\"kalAtr\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"meets\" id=\"zebrania\">\r\n      <h3><span class=\"ln\"><i>Terminy zebra\u0144 z rodzicami<\/i><\/span><\/h3>\r\n      <div class=\"meets__grid\" id=\"kalMeets\"><\/div>\r\n      <p class=\"meets__note\" data-a=\"fade\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 11v5.5M12 7.6v.1\"\/><\/svg>\r\n        <span>Terminy indywidualnych konsultacji ustalamy bezpo\u015brednio z rodzicem \u2014\r\n          prosimy o kontakt z wychowawc\u0105 grupy lub sekretariatem.<\/span>\r\n      <\/p>\r\n    <\/div>\r\n\r\n    <div class=\"exp\" data-a=\"up\">\r\n      <div>\r\n        <h3>Zabierz ten kalendarz ze sob\u0105<\/h3>\r\n        <p>Jedno klikni\u0119cie doda wszystkie dni wolne do Pa\u0144stwa kalendarza w telefonie \u2014\r\n           z przypomnieniem dzie\u0144 wcze\u015bniej. Dzia\u0142a w iPhonie, Androidzie, Outlooku\r\n           i Kalendarzu Google.<\/p>\r\n        <p class=\"msg\" id=\"kalMsg\" role=\"status\"><\/p>\r\n      <\/div>\r\n      <div class=\"acts\">\r\n        <button class=\"btn btn--s\" id=\"kalIcs\" type=\"button\">\r\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"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>\r\n          Dodaj do kalendarza\r\n        <\/button>\r\n        <button class=\"btn btn--g\" id=\"kalPrint\" type=\"button\">\r\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 9V3.5h10V9\"\/><path d=\"M7 18H4.5V9h15v9H17\"\/><path d=\"M7 14h10v6.5H7z\"\/><\/svg>\r\n          Drukuj\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <p class=\"note\" data-a=\"fade\">\r\n      Przedszkole jest czynne przez ca\u0142y rok kalendarzowy. W dni wolne od zaj\u0119\u0107 dydaktycznych\r\n      plac\u00f3wka pozostaje zamkni\u0119ta. Szczeg\u00f3\u0142y dni wolnych ustalanych zgodnie z umow\u0105 edukacyjn\u0105\r\n      znajd\u0105 Pa\u0144stwo w umowie oraz w sekretariacie.\r\n    <\/p>\r\n\r\n    <div id=\"kalSpacer\" aria-hidden=\"true\" style=\"height:0\"><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function(){\r\n  var ROOT = document.getElementById('hil-kalendarz');\r\n  if(!ROOT) return;\r\n\r\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\r\n     \u25bc JEDYNE MIEJSCE DO EDYCJI PRZY ZMIANIE ROKU \u25bc\r\n     t: 'ust' ustawowo wolne \u00b7 'zw' zwyczajowo wolne \u00b7 'um' wg umowy\r\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 *\/\r\n  var YEAR_START = 2025;\r\n  var FREE = [\r\n    {d:'2025-11-11', n:'\u015awi\u0119to Niepodleg\u0142o\u015bci',    t:'ust'},\r\n    {d:'2025-12-24', n:'Wigilia',                  t:'zw' },\r\n    {d:'2025-12-25', n:'Bo\u017ce Narodzenie',          t:'ust'},\r\n    {d:'2025-12-26', n:'Bo\u017ce Narodzenie',          t:'ust'},\r\n    {d:'2025-12-31', n:'Sylwester',                t:'zw' },\r\n    {d:'2026-01-01', n:'Nowy Rok',                 t:'ust'},\r\n    {d:'2026-01-06', n:'Trzech Kr\u00f3li',             t:'ust'},\r\n    {d:'2026-04-06', n:'Poniedzia\u0142ek Wielkanocny', t:'ust'},\r\n    {d:'2026-05-01', n:'\u015awi\u0119to Pracy',             t:'ust'},\r\n    {d:'2026-06-04', n:'Bo\u017ce Cia\u0142o',               t:'ust'},\r\n    {d:'2026-06-05', n:'Dzie\u0144 wolny zgodnie z umow\u0105 edukacyjn\u0105', t:'um'},\r\n    {d:'2026-08-28', n:'Dzie\u0144 wolny zgodnie z umow\u0105 edukacyjn\u0105', t:'um'},\r\n    {d:'2026-08-31', n:'Dzie\u0144 wolny zgodnie z umow\u0105 edukacyjn\u0105', t:'um'}\r\n  ];\r\n\r\n  \/* Zebrania z rodzicami \u2014 przedszkole tego dnia pracuje normalnie.\r\n     g = grupy, s = nazwy grup, h = godzina rozpocz\u0119cia (HH:MM) *\/\r\n  var MEET = [\r\n    {d:'2025-09-02', g:'Grupy \u015bredniak\u00f3w i starszak\u00f3w', s:'Biedroneczki i Robaczki', h:'16:00'},\r\n    {d:'2025-09-03', g:'Grupy zer\u00f3wki i maluszk\u00f3w',     s:'Kotki i Chmurki',         h:'17:00'},\r\n    {d:'2026-02-10', g:'Grupy \u015bredniak\u00f3w i starszak\u00f3w', s:'Biedroneczki i Robaczki', h:'16:00'},\r\n    {d:'2026-02-11', g:'Grupy zer\u00f3wki i maluszk\u00f3w',     s:'Kotki i Chmurki',         h:'17:00'}\r\n  ];\r\n\r\n  \/* Atrakcyjne Pi\u0105tki \u2014 dni pracuj\u0105ce z dodatkowym wydarzeniem *\/\r\n  var ATR = [\r\n    {d:'2025-09-05', n:'Mali Budowniczowie \u2014 budujemy wsp\u00f3lnie wie\u017ce z karton\u00f3w'},\r\n    {d:'2025-09-12', n:'Puppet in The Pocket \u2014 teatrzyk po angielsku'},\r\n    {d:'2025-09-19', n:'Dzie\u0144 Przedszkolaka \u2014 lody w przedszkolu'},\r\n    {d:'2025-09-26', n:'Zawody sportowe z okazji Dnia Ch\u0142opc\u00f3w'},\r\n    {d:'2025-10-03', n:'Poszukiwanie zaginionego ziemniaka \u2014 gra terenowa'},\r\n    {d:'2025-10-07', n:'Wizyta piel\u0119gniarki \u2014 warsztaty o zawodzie'},\r\n    {d:'2025-10-17', n:'Jesienne pude\u0142ko \u2014 co kryj\u0105 warzywa i owoce?'},\r\n    {d:'2025-10-24', n:'Teatr Dw\u00f3ch ze spektaklem \u201eTajemnica kolorowych li\u015bci\u201d'},\r\n    {d:'2025-10-31', n:'Pasowanie na przedszkolaka grupy Chmurki'},\r\n    {d:'2025-11-07', n:'Jesienny Bal Dyni \u2014 Pumpkin Festival'},\r\n    {d:'2025-11-14', n:'Piesza wycieczka do biblioteki \u2014 warsztaty o przyja\u017ani'},\r\n    {d:'2025-11-21', n:'Wizyta Myszki Miki; gr. zer\u00f3wkowa \u2014 wycieczka do Teatru Capitol'},\r\n    {d:'2025-11-28', n:'W \u015bwiecie magii \u2014 andrzejkowe wr\u00f3\u017cby'},\r\n    {d:'2025-12-05', n:'Miko\u0142ajki \u2014 wizyta \u015awi\u0119tego Miko\u0142aja'},\r\n    {d:'2025-12-12', n:'Warsztaty dekorowania pierniczk\u00f3w'},\r\n    {d:'2025-12-18', n:'Wigilia przedszkolna'},\r\n    {d:'2026-01-09', n:'Zimowa rozgrzewaj\u0105ca herbatka \u2014 Kuchcikowo'},\r\n    {d:'2026-01-16', n:'Wizyta go\u015bcia ze Stumilowego Lasu \u2014 Kubusia Puchatka'},\r\n    {d:'2026-01-23', n:'Warsztaty robienia pizzy'},\r\n    {d:'2026-01-30', n:'Zimowe kino'}\r\n  ];\r\n  \/* \u25b2 KONIEC SEKCJI DO EDYCJI \u25b2 *\/\r\n\r\n  var MONTHS = ['Stycze\u0144','Luty','Marzec','Kwiecie\u0144','Maj','Czerwiec',\r\n                'Lipiec','Sierpie\u0144','Wrzesie\u0144','Pa\u017adziernik','Listopad','Grudzie\u0144'];\r\n  var DOW  = ['Pn','Wt','\u015ar','Cz','Pt','So','Nd'];\r\n  var DOWL = ['poniedzia\u0142ek','wtorek','\u015broda','czwartek','pi\u0105tek','sobota','niedziela'];\r\n  var TYPE = { ust:{c:'var(--t-ust)',l:'ustawowo wolne'},\r\n               zw :{c:'var(--t-zw)', l:'zwyczajowo wolne'},\r\n               um :{c:'var(--t-um)', l:'zgodnie z umow\u0105'} };\r\n\r\n  var map = {}; FREE.forEach(function(f){ map[f.d] = f; });\r\n  var mmap = {}; MEET.forEach(function(z){ mmap[z.d] = z; });\r\n  var amap = {}; ATR.forEach(function(a){ amap[a.d] = a; });\r\n  var pad = function(n){ return (n<10?'0':'')+n; };\r\n  var key = function(y,m,d){ return y+'-'+pad(m+1)+'-'+pad(d); };\r\n  var today = new Date(); today.setHours(0,0,0,0);\r\n  var todayKey = key(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n  document.getElementById('kalYearLabel').textContent = YEAR_START+'\/'+(YEAR_START+1);\r\n\r\n  \/* \u2500\u2500 siatka 12 miesi\u0119cy \u2500\u2500 *\/\r\n  var out = '';\r\n  for(var i=0;i<12;i++){\r\n    var m = (8+i)%12, y = YEAR_START + (8+i>=12 ? 1 : 0);\r\n    var lead = (new Date(y,m,1).getDay()+6)%7, last = new Date(y,m+1,0).getDate();\r\n    var cnt = FREE.filter(function(f){ return f.d.indexOf(y+'-'+pad(m+1)) === 0; }).length;\r\n\r\n    out += '<div class=\"mon\" data-a=\"up\">';\r\n    out +=  '<div class=\"mon__h\"><span class=\"mon__n\">'+MONTHS[m]+'<\/span>';\r\n    out +=  '<span class=\"mon__b'+(cnt?' has':'')+'\">'+(cnt ? cnt+(cnt===1?' dzie\u0144 wolny':(cnt<5?' dni wolne':' dni wolnych')) : y)+'<\/span><\/div>';\r\n    out +=  '<div class=\"dow\">'; DOW.forEach(function(x){ out += '<span>'+x+'<\/span>'; }); out += '<\/div>';\r\n    out +=  '<div class=\"grid\">';\r\n    for(var p=0;p<lead;p++) out += '<div class=\"d pad\"><\/div>';\r\n    for(var d=1;d<=last;d++){\r\n      var k = key(y,m,d), dw = new Date(y,m,d).getDay(), f = map[k], z = mmap[k], a = amap[k], cls = 'd';\r\n      if(dw===0||dw===6) cls += ' we';\r\n      if(k===todayKey)   cls += ' today';\r\n      if(f){\r\n        out += '<div class=\"'+cls+' free\" tabindex=\"0\" data-t=\"'+f.t+'\" data-n=\"'+f.n+'\" style=\"--c:'+TYPE[f.t].c+'\"><i>'+d+'<\/i><\/div>';\r\n      } else if(z){\r\n        out += '<div class=\"'+cls+' meet\" tabindex=\"0\" data-t=\"zeb\" data-n=\"Zebranie \u2014 '+z.g+', godz. '+z.h+'\">'+d+'<\/div>';\r\n      } else if(a){\r\n        out += '<div class=\"'+cls+' atr\" tabindex=\"0\" data-t=\"atr\" data-n=\"'+a.n.replace(\/\"\/g,'&quot;')+'\">'+d+'<\/div>';\r\n      } else {\r\n        out += '<div class=\"'+cls+'\">'+d+'<\/div>';\r\n      }\r\n    }\r\n    out += '<\/div><\/div>';\r\n  }\r\n  document.getElementById('kalMonths').innerHTML = out;\r\n\r\n  \/* \u2500\u2500 lista \u2500\u2500 *\/\r\n  var lh = '';\r\n  FREE.forEach(function(f){\r\n    var p = f.d.split('-'), dt = new Date(+p[0],+p[1]-1,+p[2]);\r\n    lh += '<div class=\"row'+(dt<today?' past':'')+'\" data-t=\"'+f.t+'\" style=\"--c:'+TYPE[f.t].c+'\">'\r\n       +   '<span class=\"row__d\"><i><\/i>'+p[2]+'.'+p[1]+'.'+p[0].slice(2)+'<\/span>'\r\n       +   '<span class=\"row__n\">'+f.n+' <span class=\"row__w\">\u2014 '+DOWL[(dt.getDay()+6)%7]+'<\/span><\/span>'\r\n       +   '<span class=\"row__t\">'+TYPE[f.t].l+'<\/span><\/div>';\r\n  });\r\n  document.getElementById('kalList').innerHTML = lh;\r\n\r\n  \/* \u2500\u2500 karty zebra\u0144 \u2500\u2500 *\/\r\n  var MSHORT = ['sty','lut','mar','kwi','maj','cze','lip','sie','wrz','pa\u017a','lis','gru'];\r\n  var zh = '';\r\n  MEET.forEach(function(z){\r\n    var p = z.d.split('-'), dt = new Date(+p[0],+p[1]-1,+p[2]);\r\n    zh += '<div class=\"zeb'+(dt<today?' past':'')+'\" data-t=\"zeb\" data-a=\"up\">'\r\n       +   '<div><div class=\"zeb__dd\">'+p[2]+'<\/div>'\r\n       +   '<div class=\"zeb__mm\">'+MSHORT[+p[1]-1]+' '+p[0]+'<\/div><\/div>'\r\n       +   '<div><div class=\"zeb__g\">'+z.g+'<\/div>'\r\n       +   '<div class=\"zeb__s\">'+z.s+' \u00b7 '+DOWL[(dt.getDay()+6)%7]+'<\/div>'\r\n       +   '<span class=\"zeb__h\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5.3l3.4 2\"\/><\/svg>godz. '+z.h+'<\/span>'\r\n       +   '<\/div><\/div>';\r\n  });\r\n  document.getElementById('kalMeets').innerHTML = zh;\r\n\r\n  \/* \u2500\u2500 Atrakcyjne Pi\u0105tki, pogrupowane po miesi\u0105cach \u2500\u2500 *\/\r\n  var groups = [], gi = {};\r\n  ATR.forEach(function(a){\r\n    var p = a.d.split('-'), gk = p[0]+'-'+p[1];\r\n    if(gi[gk] === undefined){ gi[gk] = groups.length; groups.push({y:+p[0], m:+p[1]-1, items:[]}); }\r\n    groups[gi[gk]].items.push(a);\r\n  });\r\n  var ah = '';\r\n  groups.forEach(function(g){\r\n    ah += '<div class=\"amon\" data-a=\"up\"><div class=\"amon__h\"><span class=\"amon__n\">'+MONTHS[g.m]+'<\/span>'\r\n       +  '<span class=\"amon__c\">'+g.items.length+(g.items.length===1?' wydarzenie':(g.items.length<5?' wydarzenia':' wydarze\u0144'))+'<\/span><\/div>';\r\n    g.items.forEach(function(a){\r\n      var p = a.d.split('-'), dt = new Date(+p[0],+p[1]-1,+p[2]);\r\n      var wd = (dt.getDay()+6)%7;\r\n      var warn = wd !== 4 ? ' warn' : '';\r\n      ah += '<div class=\"ev'+(dt<today?' past':'')+'\">'\r\n         +    '<span class=\"ev__d\">'+p[2]+'.'+p[1]+'<\/span>'\r\n         +    '<span class=\"ev__n\">'+a.n+'<span class=\"ev__w'+warn+'\">'+DOWL[wd]+'<\/span><\/span>'\r\n         +  '<\/div>';\r\n    });\r\n    ah += '<\/div>';\r\n  });\r\n  document.getElementById('kalAtr').innerHTML = ah;\r\n  document.getElementById('kalAtrN').textContent = ATR.length;\r\n\r\n  \/* \u2500\u2500 wyliczenia \u2500\u2500 *\/\r\n  var work = 0, cur = new Date(YEAR_START,8,1), end = new Date(YEAR_START+1,7,31);\r\n  while(cur <= end){\r\n    var dw2 = cur.getDay();\r\n    if(dw2!==0 && dw2!==6 && !map[key(cur.getFullYear(),cur.getMonth(),cur.getDate())]) work++;\r\n    cur.setDate(cur.getDate()+1);\r\n  }\r\n  var upcoming = FREE.filter(function(f){\r\n    var p=f.d.split('-'); return new Date(+p[0],+p[1]-1,+p[2]) >= today;\r\n  });\r\n\r\n  \/* warto\u015bci wpisane od razu \u2014 animacja licznik\u00f3w je tylko \u201eprzewinie\" *\/\r\n  document.getElementById('kalDni').textContent = work;\r\n  document.getElementById('kalWolne').textContent = FREE.length;\r\n  document.getElementById('kalPozostalo').textContent = upcoming.length;\r\n\r\n  var nx = document.getElementById('kalNext'), nl = document.getElementById('kalNextLbl');\r\n  if(upcoming.length){\r\n    var q = upcoming[0].d.split('-');\r\n    var diff = Math.round((new Date(+q[0],+q[1]-1,+q[2]) - today)\/86400000);\r\n    nx.textContent = diff===0 ? 'dzi\u015b' : (diff===1 ? 'jutro' : 'za '+diff+' dni');\r\n    nl.textContent = 'najbli\u017cszy dzie\u0144 wolny \u2014 '+upcoming[0].n;\r\n  } else {\r\n    nx.textContent = '\u2014';\r\n    nl.textContent = 'kalendarz na kolejny rok w przygotowaniu';\r\n  }\r\n\r\n  \/* \u2500\u2500 filtry \u2500\u2500 *\/\r\n  ROOT.querySelectorAll('.chip').forEach(function(ch){\r\n    ch.addEventListener('click', function(){\r\n      var on = ch.getAttribute('aria-pressed')==='true';\r\n      ch.setAttribute('aria-pressed', on ? 'false':'true');\r\n      var t = ch.getAttribute('data-f');\r\n      ROOT.querySelectorAll('.d[data-t=\"'+t+'\"]').forEach(function(e){ e.classList.toggle('dim', on); });\r\n      ROOT.querySelectorAll('.row[data-t=\"'+t+'\"],.zeb[data-t=\"'+t+'\"]').forEach(function(e){ e.classList.toggle('is-off', on); });\r\n      if(t === 'atr'){ document.getElementById('kalAtr').classList.toggle('is-off', on); }\r\n    });\r\n  });\r\n\r\n  \/* \u2500\u2500 eksport .ics \u2500\u2500 *\/\r\n  document.getElementById('kalIcs').addEventListener('click', function(){\r\n    var stamp = new Date().toISOString().replace(\/[-:]\/g,'').split('.')[0]+'Z';\r\n    var L = ['BEGIN:VCALENDAR','VERSION:2.0','PRODID:-\/\/Hilaris Blonie\/\/Kalendarz\/\/PL',\r\n             'CALSCALE:GREGORIAN','METHOD:PUBLISH',\r\n             'X-WR-CALNAME:Hilaris \u2014 dni wolne '+YEAR_START+'\/'+(YEAR_START+1)];\r\n    FREE.forEach(function(f,i){\r\n      var s = f.d.replace(\/-\/g,''), p = f.d.split('-');\r\n      var e2 = new Date(+p[0],+p[1]-1,+p[2]+1);\r\n      L.push('BEGIN:VEVENT',\r\n             'UID:hilaris-'+s+'-'+i+'@hilaris-blonie.pl',\r\n             'DTSTAMP:'+stamp,\r\n             'DTSTART;VALUE=DATE:'+s,\r\n             'DTEND;VALUE=DATE:'+e2.getFullYear()+pad(e2.getMonth()+1)+pad(e2.getDate()),\r\n             'SUMMARY:Hilaris \u2014 '+f.n,\r\n             'DESCRIPTION:Dzie\u0144 wolny od zaj\u0119\u0107 dydaktycznych w Przedszkolu Hilaris w B\u0142oniu.',\r\n             'TRANSP:TRANSPARENT',\r\n             'BEGIN:VALARM','TRIGGER:-P1D','ACTION:DISPLAY',\r\n             'DESCRIPTION:Jutro przedszkole nieczynne','END:VALARM',\r\n             'END:VEVENT');\r\n    });\r\n    MEET.forEach(function(z,i){\r\n      var s = z.d.replace(\/-\/g,''), hh = z.h.split(':');\r\n      var st1 = s+'T'+pad(+hh[0])+pad(+hh[1])+'00';\r\n      var st2 = s+'T'+pad(+hh[0]+1)+pad(+hh[1])+'00';\r\n      L.push('BEGIN:VEVENT',\r\n             'UID:hilaris-zeb-'+s+'-'+i+'@hilaris-blonie.pl',\r\n             'DTSTAMP:'+stamp,\r\n             'DTSTART:'+st1,\r\n             'DTEND:'+st2,\r\n             'SUMMARY:Hilaris \u2014 zebranie: '+z.g,\r\n             'LOCATION:Przedszkole Hilaris, ul. Passowska 16A, 05-870 B\u0142onie',\r\n             'DESCRIPTION:Zebranie z rodzicami ('+z.s+'). Godz. '+z.h+'.',\r\n             'BEGIN:VALARM','TRIGGER:-PT2H','ACTION:DISPLAY',\r\n             'DESCRIPTION:Za 2 godziny zebranie w przedszkolu','END:VALARM',\r\n             'END:VEVENT');\r\n    });\r\n    ATR.forEach(function(a,i){\r\n      var s = a.d.replace(\/-\/g,''), p = a.d.split('-');\r\n      var e3 = new Date(+p[0],+p[1]-1,+p[2]+1);\r\n      L.push('BEGIN:VEVENT',\r\n             'UID:hilaris-atr-'+s+'-'+i+'@hilaris-blonie.pl',\r\n             'DTSTAMP:'+stamp,\r\n             'DTSTART;VALUE=DATE:'+s,\r\n             'DTEND;VALUE=DATE:'+e3.getFullYear()+pad(e3.getMonth()+1)+pad(e3.getDate()),\r\n             'SUMMARY:Hilaris \u2014 '+a.n,\r\n             'LOCATION:Przedszkole Hilaris, ul. Passowska 16A, 05-870 B\u0142onie',\r\n             'DESCRIPTION:Atrakcyjny Pi\u0105tek w Przedszkolu Hilaris.',\r\n             'TRANSP:TRANSPARENT',\r\n             'END:VEVENT');\r\n    });\r\n    L.push('END:VCALENDAR');\r\n    try{\r\n      var blob = new Blob([L.join('\\r\\n')], {type:'text\/calendar;charset=utf-8'});\r\n      var a = document.createElement('a');\r\n      a.href = URL.createObjectURL(blob);\r\n      a.download = 'hilaris-dni-wolne-'+YEAR_START+'-'+(YEAR_START+1)+'.ics';\r\n      document.body.appendChild(a); a.click();\r\n      setTimeout(function(){ URL.revokeObjectURL(a.href); a.remove(); },1500);\r\n      document.getElementById('kalMsg').textContent = 'Gotowe \u2014 otw\u00f3rz pobrany plik, aby doda\u0107 dni do kalendarza.';\r\n    }catch(err){\r\n      document.getElementById('kalMsg').textContent = 'Nie uda\u0142o si\u0119 pobra\u0107 pliku. Prosimy spr\u00f3bowa\u0107 w innej przegl\u0105darce.';\r\n    }\r\n  });\r\n\r\n  document.getElementById('kalPrint').addEventListener('click', function(){ window.print(); });\r\n\r\n  \/* \u2550\u2550 SKOK DO KOTWICY \u2014 wersja samokoryguj\u0105ca \u2550\u2550\r\n     Nie zak\u0142adamy, ile razy i kiedy zmieni si\u0119 uk\u0142ad strony po za\u0142adowaniu\r\n     (fonty, obrazki, przyklejone menu, animacje). Zamiast jednego skoku\r\n     przez ~2,5 s w ka\u017cdej klatce sprawdzamy, czy nag\u0142\u00f3wek stoi tam, gdzie ma,\r\n     i korygujemy r\u00f3\u017cnic\u0119. P\u0119tla przerywa si\u0119 natychmiast, gdy u\u017cytkownik\r\n     dotknie k\u00f3\u0142ka myszy, ekranu lub klawiatury. \u2550\u2550 *\/\r\n  (function(){\r\n    var IDS = ['dni-wolne','piatki','zebrania'];\r\n\r\n    if(location.hash && IDS.indexOf(location.hash.replace('#','')) !== -1\r\n       && 'scrollRestoration' in history){ history.scrollRestoration = 'manual'; }\r\n\r\n    function offset(){\r\n      var n = parseInt(getComputedStyle(ROOT).getPropertyValue('--kal-anchor'), 10);\r\n      return isNaN(n) ? 110 : n;\r\n    }\r\n\r\n    function targetEl(){\r\n      var h = (location.hash || '').replace('#','');\r\n      return IDS.indexOf(h) === -1 ? null : document.getElementById(h);\r\n    }\r\n\r\n    var running = false;\r\n\r\n    function align(ms){\r\n      var el = targetEl();\r\n      if(!el || running) return;\r\n      running = true;\r\n\r\n      var abort = false;\r\n      function stop(){ abort = true; }\r\n      var evs = ['wheel','touchstart','keydown','mousedown'];\r\n      evs.forEach(function(e){ window.addEventListener(e, stop, {passive:true}); });\r\n\r\n      var t0 = Date.now();\r\n      (function loop(){\r\n        if(abort){ done(); return; }\r\n        var el2 = targetEl();\r\n        if(el2){\r\n          var y = el2.getBoundingClientRect().top + window.pageYOffset - offset();\r\n          y = Math.max(0, Math.min(y, document.documentElement.scrollHeight - window.innerHeight));\r\n          if(Math.abs(y - window.pageYOffset) > 2){ window.scrollTo(0, y); }\r\n        }\r\n        if(Date.now() - t0 < (ms || 2500)){ requestAnimationFrame(loop); } else { done(); }\r\n      })();\r\n\r\n      function done(){\r\n        evs.forEach(function(e){ window.removeEventListener(e, stop); });\r\n        running = false;\r\n      }\r\n    }\r\n\r\n    if(location.hash){\r\n      align(2500);\r\n      window.addEventListener('load', function(){ align(1500); });\r\n      if(document.fonts && document.fonts.ready){ document.fonts.ready.then(function(){ align(800); }); }\r\n    }\r\n    window.addEventListener('hashchange', function(){ align(1200); });\r\n\r\n    \/* klik w link do kotwicy, gdy jeste\u015bmy ju\u017c na tej stronie *\/\r\n    document.addEventListener('click', function(e){\r\n      var a = e.target && e.target.closest ? e.target.closest('a[href*=\"#\"]') : null;\r\n      if(!a) return;\r\n      var hash = (a.getAttribute('href') || '').split('#')[1];\r\n      if(!hash || IDS.indexOf(hash) === -1) return;\r\n      if(a.pathname === location.pathname && a.search === location.search){\r\n        e.preventDefault();\r\n        if(location.hash !== '#' + hash){ history.pushState(null, '', '#' + hash); }\r\n        align(1200);\r\n      }\r\n    });\r\n  })();\r\n\r\n  \/* \u2500\u2500 animacje: w\u0142\u0105czaj\u0105 si\u0119 TYLKO je\u015bli GSAP faktycznie jest \u2500\u2500 *\/\r\n  function anim(){\r\n    var gsap = window.gsap, ST = window.ScrollTrigger;\r\n    if(!gsap || !ST) return;\r\n    if(window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\r\n    gsap.registerPlugin(ST);\r\n    ROOT.classList.add('on');\r\n    var E = 'power3.out';\r\n\r\n    gsap.timeline({defaults:{ease:E}, scrollTrigger:{trigger:ROOT, start:'top 82%'}})\r\n      .to('.hil-kal .eyebrow',{opacity:1,duration:.5})\r\n      .to('.hil-kal .hero h2 .ln>i',{y:0,duration:1,stagger:.09},'-=.25')\r\n      .to('.hil-kal .hero__lead',{opacity:1,y:0,duration:.75},'-=.6');\r\n\r\n    var ring = document.getElementById('kalRing');\r\n    if(ring){\r\n      var C = 2*Math.PI*50;\r\n      gsap.set(ring,{strokeDasharray:C, strokeDashoffset:C});\r\n      gsap.to(ring,{strokeDashoffset:0,duration:1.8,ease:'power2.inOut',\r\n        scrollTrigger:{trigger:'.hil-kal .ring',start:'top 88%'}});\r\n    }\r\n\r\n    gsap.utils.toArray('.hil-kal h3 .ln').forEach(function(ln){\r\n      gsap.to(ln.querySelector('i'),{y:0,duration:.9,ease:E,scrollTrigger:{trigger:ln,start:'top 92%'}});\r\n    });\r\n    gsap.utils.toArray('.hil-kal [data-a=\"fade\"]').forEach(function(el){\r\n      gsap.to(el,{opacity:1,duration:.7,ease:E,scrollTrigger:{trigger:el,start:'top 95%'}});\r\n    });\r\n\r\n    \/* liczniki \u2014 przewijaj\u0105 si\u0119 do warto\u015bci ju\u017c wpisanej w HTML *\/\r\n    [['kalDni',work],['kalWolne',FREE.length],['kalPozostalo',upcoming.length]].forEach(function(pr){\r\n      var el = document.getElementById(pr[0]), o = {v:0};\r\n      gsap.to(o,{v:pr[1],duration:1.6,ease:'power2.out',\r\n        onUpdate:function(){ el.textContent = Math.round(o.v); },\r\n        scrollTrigger:{trigger:el,start:'top 95%'}});\r\n    });\r\n\r\n    \/* karty miesi\u0119cy + kropki dni wolnych *\/\r\n    ST.batch('.hil-kal .mon',{\r\n      start:'top 92%',\r\n      onEnter:function(b){\r\n        gsap.to(b,{opacity:1,y:0,duration:.75,stagger:.07,ease:E});\r\n        b.forEach(function(mon,i){\r\n          mon.querySelectorAll('.d.free').forEach(function(c,j){\r\n            setTimeout(function(){ c.classList.add('pop'); }, 260 + i*70 + j*80);\r\n          });\r\n        });\r\n      }\r\n    });\r\n    gsap.utils.toArray('.hil-kal [data-a=\"up\"]').forEach(function(el){\r\n      if(el.classList.contains('mon')) return;\r\n      gsap.to(el,{opacity:1,y:0,duration:.8,ease:E,scrollTrigger:{trigger:el,start:'top 93%'}});\r\n    });\r\n\r\n    var st = document.createElement('style');\r\n    st.textContent = '.hil-kal.on .d.free.pop::before{transform:scale(1);}';\r\n    document.head.appendChild(st);\r\n\r\n    window.addEventListener('load', function(){ ST.refresh(); });\r\n    if(document.fonts && document.fonts.ready){ document.fonts.ready.then(function(){ ST.refresh(); }); }\r\n  }\r\n\r\n  if(window.gsap && window.ScrollTrigger){ anim(); }\r\n  else {\r\n    var t = 0;\r\n    (function wait(){\r\n      if(window.gsap && window.ScrollTrigger){ anim(); }\r\n      else if(t++ < 40){ setTimeout(wait,100); }\r\n    })();\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Niepubliczne Dwuj\u0119zyczne Przedszkole Hilaris Kalendarz rokuprzedszkolnego Nasze przedszkole pracuje przez 12 miesi\u0119cy w roku \u2014 r\u00f3wnie\u017c w wakacje. Poni\u017cej znajd\u0105 Pa\u0144stwo pe\u0142en wykaz dni wolnych od zaj\u0119\u0107 dydaktycznych w roku szkolnym 2025\/2026. 12miesi\u0119cy pracy \u2014dni z zaj\u0119ciami dydaktycznymi \u2014dni wolnych od zaj\u0119\u0107 \u2014dni wolnych jeszcze przed nami \u2014najbli\u017cszy dzie\u0144 wolny Ca\u0142y rok na jednym ekranie [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2435,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-5662","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/5662","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=5662"}],"version-history":[{"count":34,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/5662\/revisions"}],"predecessor-version":[{"id":7001,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/5662\/revisions\/7001"}],"up":[{"embeddable":true,"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=\/wp\/v2\/pages\/2435"}],"wp:attachment":[{"href":"https:\/\/hilaris-blonie.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}