/* ═══════════════════════════════════════════════════════════════════════════
   parent-kalendarz.css — Zajęcia rodzica, Kalendarz v2 (2026-09-11)
   Moduł: frontend/js/parent-kalendarz.js · kontrakt: docs/system-map/27_KALENDARZ_V2.md §3.1, §4.2

   Sygnatura: NIĆ DZIECKA. Każde dziecko ma swój kolor (z API, stabilny) i ten kolor
   prowadzi przez cały ekran — pasek karty, koraliki w kalendarzu, chip filtra.
   Stan lekcji mówi pigułka ze słowem, nigdy sam kolor. Przełożona = duch (przerywana
   ramka), a w szczegółach most „było → jest".

   Reguły: prefiks `pkal-` (grep 2026-09-11: 0 kolizji). Okna wchodzą RUCHEM (transform),
   nie przenikaniem — feedback_popupy_warstwy_i_animacje. Zero natywnych kontrolek.
   Mobile first (apka rodzica 390×844), dwie kolumny od 880 px przez container query.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Tokeny także na arkuszach i toaście — te wiszą w <body>, POZA .pkal (zrzut 11.09: zaznaczone
   godziny, powody i przycisk „Odwołaj lekcję" wychodziły białe, bo zmienne były niezdefiniowane). */
.pkal, .pkal-sheet, .pkal-toast {
  --pk-k: #2F6BD8;
  --pk-gold: #F9C843; --pk-or: #F07020; --pk-fire: #E8580A;
  --pk-ok: #16A34A; --pk-okd: #15803D; --pk-bad: #D64545; --pk-badd: #B93838;
  --pk-amb: #9A5B06; --pk-ambbg: #FFF3DC;
  --pk-ink: #1A1713; --pk-ink60: #6B6459; --pk-ink40: #978E83; --pk-ink30: #C2BAB0;
  --pk-line: #EDE8DF; --pk-line2: #D8D0C3; --pk-cream: #FFFDF7; --pk-paper: #F7F4EE; --pk-card: #FFFFFF;
  --pk-out: cubic-bezier(.16, 1, .3, 1);
  --pk-lin: cubic-bezier(.32, .72, 0, 1);
  --pk-spring: cubic-bezier(.34, 1.56, .64, 1);
  font-family: 'DM Sans', system-ui, -apple-system, sans-serif;
  color: var(--pk-ink);
  -webkit-tap-highlight-color: transparent;
}
.pkal { container-type: inline-size; padding-top: 12px; }
.pkal *, .pkal-sheet *, .pkal-toast * { box-sizing: border-box; }
.pkal button, .pkal-sheet button { font-family: inherit; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.pkal-sheet { font-family: 'DM Sans', system-ui, -apple-system, sans-serif; color: #1A1713; }

.pkal-layout { display: block; }
.pkal-side, .pkal-main { min-width: 0; }
@container (min-width: 880px) {
  .pkal-layout { display: grid; grid-template-columns: minmax(340px, 392px) minmax(0, 1fr); gap: 28px; align-items: start; }
  .pkal-side { position: sticky; top: 12px; }
  .pkal-main { padding-top: 2px; }
}

/* ── Karta „Następna lekcja" ─────────────────────────────────────────────── */
.pkal-hero {
  position: relative; overflow: hidden; isolation: isolate;
  border-radius: 26px; padding: 20px 20px 18px; margin-bottom: 14px; color: #fff;
  background: linear-gradient(152deg, #F6A532 0%, #F07020 44%, #DE4A05 100%);
  box-shadow: 0 6px 0 rgba(166, 56, 0, .22), 0 22px 40px -18px rgba(232, 88, 10, .62);
  animation: pkalRise .5s var(--pk-out) both;
}
.pkal-hero::before {
  content: ''; position: absolute; z-index: -1; right: -70px; top: -90px; width: 260px; height: 260px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 232, 160, .55), transparent 66%);
}
.pkal-hero::after {
  content: ''; position: absolute; z-index: -1; left: -40px; bottom: -70px; width: 200px; height: 160px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .12), transparent 70%);
}
.pkal-hero-top { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; min-height: 26px; }
.pkal-eyebrow { font: 800 10.5px/1 'DM Sans', sans-serif; letter-spacing: .15em; text-transform: uppercase; color: rgba(255, 255, 255, .88); }
.pkal-live { width: 8px; height: 8px; border-radius: 50%; background: rgba(255, 255, 255, .5); flex: none; }
.pkal-live.on { background: #4ADE80; animation: pkalLive 1.8s ease-out infinite; }
.pkal-hero-kid {
  margin-left: auto; display: inline-flex; align-items: center; gap: 7px; height: 26px; padding: 0 11px 0 8px; border-radius: 99px;
  background: rgba(255, 253, 247, .96); color: var(--pk-ink); font: 700 12px/1 'DM Sans', sans-serif;
  box-shadow: 0 4px 12px -6px rgba(90, 30, 0, .45);
}
.pkal-hero-kid i { width: 9px; height: 9px; border-radius: 50%; background: var(--pk-k); }
.pkal-hero-subj { font: 400 31px/1.04 'DM Serif Display', Georgia, serif; letter-spacing: -.01em; margin: 0 0 9px; text-shadow: 0 2px 12px rgba(110, 36, 0, .2); text-wrap: balance; }
.pkal-hero-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; font: 600 13.5px/1.35 'DM Sans', sans-serif; color: rgba(255, 255, 255, .92); margin-bottom: 14px; }
.pkal-hero-meta span { display: inline-flex; align-items: center; gap: 6px; }
.pkal-hero-meta svg { width: 15px; height: 15px; opacity: .85; flex: none; }
.pkal-count { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 4px; margin: -2px 0 16px; min-height: 36px; }
.pkal-count b { font: 600 36px/1 'Cormorant Garamond', Georgia, serif; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.pkal-count small { font: 700 12px/1 'DM Sans', sans-serif; color: rgba(255, 255, 255, .85); margin-right: 10px; }
.pkal-count .pkal-count-pre { font: 700 12.5px/1 'DM Sans', sans-serif; color: rgba(255, 255, 255, .85); margin-right: 6px; }
.pkal-count .pkal-count-now { font: 800 14px/1 'DM Sans', sans-serif; letter-spacing: .02em; padding: 7px 12px; border-radius: 99px; background: rgba(255, 255, 255, .22); }

.pkal-joinhero {
  position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%; height: 54px; border-radius: 16px; text-decoration: none; cursor: pointer;
  background: linear-gradient(180deg, #FFFFFF 0%, #FFF7E6 100%); color: var(--pk-fire);
  font: 800 16px/1 'DM Sans', sans-serif; letter-spacing: .01em; border: 1.5px solid rgba(249, 200, 67, .6);
  box-shadow: 0 4px 0 #E3B23C, 0 12px 26px -10px rgba(110, 40, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .9);
  transition: transform .1s var(--pk-out), box-shadow .12s;
}
.pkal-joinhero svg { width: 21px; height: 21px; }
.pkal-joinhero:active { transform: translateY(3px); box-shadow: 0 1px 0 #E3B23C, 0 4px 10px rgba(110, 40, 0, .3); }
.pkal-joinhero.teraz { background: linear-gradient(180deg, #3BD476 0%, #16A34A 100%); color: #fff; border-color: rgba(255, 255, 255, .35); box-shadow: 0 4px 0 #0E7A36, 0 12px 26px -10px rgba(10, 90, 40, .6); animation: pkalBreath 2.6s ease-in-out infinite; }
.pkal-joinhero-empty { text-align: center; font: 600 12.5px/1.4 'DM Sans', sans-serif; color: rgba(255, 255, 255, .8); padding: 4px 0 2px; }

/* ── Kontrpropozycje korepetytora (u góry, bo czekają na decyzję) ──────── */
.pkal-ask {
  position: relative; overflow: hidden; border-radius: 20px; padding: 15px 15px 14px 19px; margin-bottom: 12px;
  background: linear-gradient(160deg, #FFF3DF 0%, #FFFDF7 72%);
  box-shadow: inset 0 0 0 1.5px rgba(240, 112, 32, .3), 0 16px 32px -26px rgba(232, 88, 10, .8);
  animation: pkalRise .45s var(--pk-out) both;
}
.pkal-ask::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(180deg, var(--pk-gold), var(--pk-or)); }
.pkal-ask-k { display: flex; align-items: center; gap: 8px; font: 800 10.5px/1 'DM Sans', sans-serif; letter-spacing: .13em; text-transform: uppercase; color: #B4470A; }
.pkal-ask-k i { width: 7px; height: 7px; border-radius: 50%; background: var(--pk-or); animation: pkalLiveOr 1.8s ease-out infinite; }
@keyframes pkalLiveOr { 0% { box-shadow: 0 0 0 0 rgba(240, 112, 32, .6); } 70% { box-shadow: 0 0 0 7px rgba(240, 112, 32, 0); } 100% { box-shadow: 0 0 0 0 rgba(240, 112, 32, 0); } }
.pkal-ask-t { margin: 8px 0 2px; font: 800 16px/1.3 'DM Sans', sans-serif; letter-spacing: -.01em; }
.pkal-ask-s { font: 600 12.5px/1.4 'DM Sans', sans-serif; color: var(--pk-ink60); display: flex; align-items: center; gap: 6px; }
.pkal-ask-s i { width: 8px; height: 8px; border-radius: 50%; background: var(--pk-k); }
.pkal-swap { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; margin: 11px 0 13px; font: 700 14px/1.2 'DM Sans', sans-serif; font-variant-numeric: tabular-nums; }
.pkal-swap .was { color: var(--pk-ink40); text-decoration: line-through; text-decoration-thickness: 1.5px; font-weight: 600; }
.pkal-swap .now { color: var(--pk-ink); background: #fff; padding: 6px 10px; border-radius: 10px; box-shadow: inset 0 0 0 1.5px rgba(240, 112, 32, .35); }
.pkal-swap svg { width: 16px; height: 16px; color: var(--pk-or); flex: none; }
.pkal-ask-btns { display: flex; gap: 8px; }
.pkal-ask-btns .pkal-btn { flex: 1; }

/* ── Chipy dzieci i przedmiotów ──────────────────────────────────────────── */
.pkal-chips { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; margin: 0 -16px 12px; padding: 2px 16px 4px; }
.pkal-chips::-webkit-scrollbar { display: none; }
@container (min-width: 880px) { .pkal-chips { margin: 0 0 12px; padding: 2px 0 4px; flex-wrap: wrap; } }
.pkal-chip {
  flex: none; display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 15px 0 11px; border-radius: 99px;
  border: 1.5px solid var(--pk-line); background: var(--pk-card); color: var(--pk-ink60);
  font: 700 13px/1 'DM Sans', sans-serif; cursor: pointer;
  transition: transform .12s var(--pk-out), background .2s var(--pk-lin), border-color .2s, color .2s, box-shadow .2s;
}
.pkal-chip i { width: 10px; height: 10px; border-radius: 50%; background: var(--pk-k); box-shadow: 0 0 0 3px rgba(26, 23, 19, .05); flex: none; }
.pkal-chip .stos { display: inline-flex; }
.pkal-chip .stos i { box-shadow: 0 0 0 2px #fff; }
.pkal-chip .stos i + i { margin-left: -4px; }
.pkal-chip[aria-pressed="true"] { border-color: var(--pk-k); color: var(--pk-ink); background: color-mix(in srgb, var(--pk-k) 9%, #fff); box-shadow: 0 6px 16px -12px var(--pk-k); }
.pkal-chip.all[aria-pressed="true"] { border-color: var(--pk-ink); background: var(--pk-ink); color: #fff; box-shadow: 0 8px 18px -12px rgba(26, 23, 19, .8); }
.pkal-chip:active { transform: scale(.95); }
.pkal-chip:focus-visible, .pkal-seg button:focus-visible, .pkal-d:focus-visible, .pkal-card:focus-visible, .pkal-day:focus-visible, .pkal-hour:focus-visible, .pkal-reason:focus-visible, .pkal-nav:focus-visible, .pkal-x:focus-visible, .pkal-link:focus-visible {
  outline: none; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55);
}
.pkal-chips.subj .pkal-chip { height: 34px; font-size: 12px; padding: 0 13px; }
.pkal-chips.subj .pkal-chip[aria-pressed="true"] { border-color: var(--pk-ink); background: var(--pk-ink); color: #fff; box-shadow: none; }

/* ── Kalendarz miesiąca ──────────────────────────────────────────────────── */
.pkal-cal {
  background: var(--pk-card); border-radius: 22px; padding: 14px 12px 12px; margin-bottom: 14px;
  box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06), 0 2px 0 rgba(194, 186, 176, .16), 0 16px 32px -28px rgba(26, 23, 19, .55);
}
.pkal-cal-head { display: flex; align-items: center; gap: 6px; padding: 2px 4px 12px; }
.pkal-cal-title { flex: 1; font: 400 21px/1 'DM Serif Display', Georgia, serif; letter-spacing: -.005em; }
.pkal-cal-title small { font: 600 13px/1 'DM Sans', sans-serif; color: var(--pk-ink40); margin-left: 6px; }
.pkal-cal-today { height: 32px; padding: 0 12px; border-radius: 99px; border: 1.5px solid rgba(240, 112, 32, .32); background: #fff; color: var(--pk-fire); font: 800 11.5px/1 'DM Sans', sans-serif; cursor: pointer; }
.pkal-cal-today[hidden] { display: none; }
.pkal-nav { width: 36px; height: 36px; border-radius: 12px; border: 1.5px solid var(--pk-line); background: #fff; color: var(--pk-ink60); display: grid; place-items: center; cursor: pointer; transition: transform .1s var(--pk-out), background .15s; }
.pkal-nav:active { transform: scale(.92); }
.pkal-nav svg { width: 16px; height: 16px; }
.pkal-wd { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; padding-bottom: 6px; font: 800 10px/1 'DM Sans', sans-serif; letter-spacing: .09em; text-transform: uppercase; color: var(--pk-ink30); }
.pkal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; transition: transform .28s var(--pk-lin); }
.pkal-grid.wjazd-l { animation: pkalSlideL .32s var(--pk-lin) both; }
.pkal-grid.wjazd-p { animation: pkalSlideR .32s var(--pk-lin) both; }
.pkal-d {
  position: relative; min-height: 44px; aspect-ratio: 1 / 1.02; border: 0; background: transparent; border-radius: 13px;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  font: 600 14px/1 'DM Sans', sans-serif; color: var(--pk-ink); font-variant-numeric: tabular-nums; cursor: pointer;
  transition: background .15s var(--pk-lin), transform .1s var(--pk-out), color .15s;
}
.pkal-d:active { transform: scale(.92); }
@media (hover: hover) { .pkal-d:hover { background: var(--pk-paper); } }
.pkal-d.poza { color: var(--pk-ink30); }
.pkal-d.minal .pkal-num { color: var(--pk-ink60); }
.pkal-d.dzis { background: linear-gradient(135deg, rgba(249, 200, 67, .24), rgba(240, 112, 32, .13)); color: #B4470A; font-weight: 800; }
.pkal-d.dzis .pkal-num { color: #B4470A; }
.pkal-d.sel { background: var(--pk-ink); color: #fff; box-shadow: 0 8px 16px -10px rgba(26, 23, 19, .9); }
.pkal-d.sel .pkal-num { color: #fff; }
.pkal-beads { display: flex; align-items: center; gap: 3px; height: 6px; }
.pkal-bead { width: 6px; height: 6px; border-radius: 50%; background: var(--pk-k); }
.pkal-bead.ring { background: transparent; box-shadow: inset 0 0 0 1.5px var(--pk-k); }
.pkal-bead.plus { width: auto; height: auto; background: none; font: 800 8px/1 'DM Sans', sans-serif; color: var(--pk-ink40); }
.pkal-d.minal .pkal-bead:not(.ring) { opacity: .55; }
.pkal-d.sel .pkal-bead { box-shadow: 0 0 0 1.5px var(--pk-ink), 0 0 0 2.5px rgba(255, 255, 255, .85); opacity: 1; }
.pkal-d.sel .pkal-bead.ring { box-shadow: inset 0 0 0 1.5px #fff; }
.pkal-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; justify-content: center; padding-top: 10px; font: 600 10.5px/1 'DM Sans', sans-serif; color: var(--pk-ink40); }
.pkal-legend span { display: inline-flex; align-items: center; gap: 5px; }
.pkal-legend .pkal-bead { --pk-k: var(--pk-ink40); }

/* ── Pakiety (licznik per dziecko, jednostki po 40 min) ──────────────────── */
.pkal-packs { display: grid; gap: 8px; margin-bottom: 16px; }
.pkal-pack { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 4px 10px; padding: 12px 14px; border-radius: 16px; background: var(--pk-card); box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06); }
.pkal-pack-kid { display: inline-flex; align-items: center; gap: 7px; font: 800 13px/1 'DM Sans', sans-serif; }
.pkal-pack-kid i { width: 9px; height: 9px; border-radius: 50%; background: var(--pk-k); }
.pkal-pack-num { font: 700 12.5px/1 'DM Sans', sans-serif; color: var(--pk-ink60); font-variant-numeric: tabular-nums; justify-self: end; grid-column: 3; }
.pkal-pack-num b { color: var(--pk-ink); font-size: 14px; }
.pkal-pack-bar { grid-column: 1 / -1; height: 6px; border-radius: 99px; background: var(--pk-paper); overflow: hidden; }
.pkal-pack-bar i { display: block; height: 100%; width: 0; border-radius: inherit; background: var(--pk-k); transform-origin: left; animation: pkalBar .9s var(--pk-out) .15s both; }
.pkal-pack-sub { grid-column: 1 / -1; font: 600 11px/1.3 'DM Sans', sans-serif; color: var(--pk-ink40); font-variant-numeric: tabular-nums; }
/* Uwaga o pakiecie sprzed 1 wrzesnia 2026 — pelna szerokosc karty (18.09.2026). */
.pkal-pack .p-pkt-uwaga { grid-column: 1 / -1; min-width: 0; }

/* ── Przełącznik Nadchodzące / Odbyte ────────────────────────────────────── */
.pkal-seg { position: relative; display: grid; grid-template-columns: 1fr 1fr; background: var(--pk-paper); border-radius: 15px; padding: 4px; margin-bottom: 12px; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .04); }
.pkal-seg button { position: relative; z-index: 1; height: 40px; border: 0; background: transparent; border-radius: 12px; font: 700 13.5px/1 'DM Sans', sans-serif; color: var(--pk-ink60); cursor: pointer; transition: color .2s; display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.pkal-seg button[aria-selected="true"] { color: var(--pk-ink); }
.pkal-seg button .cnt { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 99px; background: rgba(26, 23, 19, .07); font: 800 10.5px/20px 'DM Sans', sans-serif; font-variant-numeric: tabular-nums; }
.pkal-seg button[aria-selected="true"] .cnt { background: rgba(240, 112, 32, .14); color: #B4470A; }
.pkal-seg-ind { position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc(50% - 4px); border-radius: 12px; background: #fff; box-shadow: 0 2px 10px -3px rgba(26, 23, 19, .2); transition: transform .34s var(--pk-lin); }
.pkal-seg[data-tab="past"] .pkal-seg-ind { transform: translateX(100%); }

.pkal-dayfilter { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 10px 10px 14px; margin-bottom: 4px; border-radius: 14px; background: var(--pk-ink); color: #fff; font: 700 13px/1.2 'DM Sans', sans-serif; animation: pkalRise .3s var(--pk-out) both; }
.pkal-dayfilter button { height: 30px; padding: 0 12px; border-radius: 99px; border: 0; background: rgba(255, 255, 255, .14); color: #fff; font: 700 12px/1 'DM Sans', sans-serif; cursor: pointer; }

/* ── Lista: nagłówek dnia ────────────────────────────────────────────────── */
.pkal-dayh { display: flex; align-items: center; gap: 10px; margin: 18px 2px 9px; }
.pkal-dayh:first-child { margin-top: 6px; }
.pkal-dayh h3 { margin: 0; font: 400 17px/1.15 'DM Serif Display', Georgia, serif; letter-spacing: -.005em; color: var(--pk-ink); }
.pkal-dayh .rel { flex: none; font: 800 9.5px/1 'DM Sans', sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #B4470A; background: rgba(249, 200, 67, .2); padding: 5px 8px; border-radius: 99px; }
.pkal-dayh .rel.cichy { color: var(--pk-ink40); background: rgba(26, 23, 19, .05); }
.pkal-dayh .kreska { flex: 1; height: 1px; background: linear-gradient(90deg, var(--pk-line2), rgba(216, 208, 195, 0)); }
.pkal-month { margin: 26px 2px 4px; font: 800 10.5px/1 'DM Sans', sans-serif; letter-spacing: .15em; text-transform: uppercase; color: var(--pk-ink40); }

/* ── Karta lekcji ────────────────────────────────────────────────────────── */
#view-lessons .pkal-card,
.pkal .pkal-card {
  position: relative; display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 0 12px;
  padding: 14px 14px 14px 16px; margin: 0 0 10px; border: 0; border-radius: 18px; overflow: hidden; cursor: pointer;
  background: var(--pk-card);
  box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06), 0 2px 0 rgba(194, 186, 176, .15), 0 14px 26px -24px rgba(26, 23, 19, .55);
  animation: pkalIn .44s var(--pk-out) both;
  transition: transform .14s var(--pk-out), box-shadow .22s var(--pk-lin);
}
#view-lessons .pkal-card::before,
.pkal .pkal-card::before {
  content: ''; position: absolute; left: 0; top: 12px; bottom: 12px; width: 4px; border-radius: 0 4px 4px 0; background: var(--pk-k);
}
.pkal .pkal-card:active { transform: scale(.985); }
@media (hover: hover) {
  .pkal .pkal-card:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .07), 0 4px 0 rgba(194, 186, 176, .14), 0 18px 32px -20px rgba(26, 23, 19, .45), 0 0 22px rgba(249, 200, 67, .12); }
}
.pkal .pkal-card.glow { box-shadow: 0 0 0 3px rgba(249, 200, 67, .9), 0 14px 30px -16px rgba(240, 112, 32, .6); }
.pkal-time { padding-top: 1px; }
.pkal-time b { display: block; font: 800 16px/1.1 'DM Sans', sans-serif; font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: var(--pk-ink); }
.pkal-time small { display: block; margin-top: 3px; font: 600 11.5px/1 'DM Sans', sans-serif; color: var(--pk-ink40); font-variant-numeric: tabular-nums; }
.pkal-time em { display: inline-block; margin-top: 8px; padding: 3px 6px; border-radius: 6px; background: var(--pk-paper); font: 800 9.5px/1 'DM Sans', sans-serif; font-style: normal; letter-spacing: .03em; color: var(--pk-ink60); font-variant-numeric: tabular-nums; }
.pkal-top { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; margin-bottom: 5px; min-width: 0; }
.pkal-kid { display: inline-flex; align-items: center; gap: 6px; font: 800 12px/1 'DM Sans', sans-serif; color: color-mix(in srgb, var(--pk-k) 82%, #1A1713); max-width: 50%; }
.pkal-kid i { width: 8px; height: 8px; border-radius: 50%; background: var(--pk-k); flex: none; }
.pkal-kid span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pkal-subj-t { margin: 0 0 3px; font: 700 16px/1.25 'DM Sans', sans-serif; letter-spacing: -.012em; color: var(--pk-ink); text-wrap: balance; }
.pkal-who { font: 500 12.5px/1.35 'DM Sans', sans-serif; color: var(--pk-ink60); }
.pkal-tag { display: inline-flex; align-items: center; gap: 5px; margin-top: 7px; padding: 4px 8px; border-radius: 8px; background: rgba(26, 23, 19, .05); font: 700 11px/1.2 'DM Sans', sans-serif; color: var(--pk-ink60); font-variant-numeric: tabular-nums; }
.pkal-tag svg { width: 12px; height: 12px; flex: none; }
.pkal-note { margin-top: 10px; padding: 9px 11px; border-radius: 12px; background: var(--pk-paper); font: 500 12.5px/1.45 'DM Sans', sans-serif; color: var(--pk-ink60); text-wrap: pretty; }
.pkal-note b { color: var(--pk-ink); font-weight: 700; }
.pkal-note.ok { background: rgba(22, 163, 74, .07); color: #1D5A36; }
.pkal-note.bad { background: rgba(214, 69, 69, .06); color: #8E2B2B; }
.pkal-note.amb { background: var(--pk-ambbg); color: #7A4A08; }
.pkal-note.or { background: #FFF1DF; color: #7A3A08; box-shadow: inset 0 0 0 1.5px rgba(240, 112, 32, .25); }
.pkal-note .pkal-note-btns { display: flex; gap: 8px; margin-top: 9px; }
.pkal-note .pkal-note-btns .pkal-btn { flex: 1; min-height: 38px; }
.pkal-link { display: inline-flex; align-items: center; gap: 5px; border: 0; background: none; padding: 0; margin: 0; font: 800 12.5px/1.3 'DM Sans', sans-serif; color: #B4470A; cursor: pointer; text-align: left; border-radius: 6px; }
.pkal-link svg { width: 13px; height: 13px; flex: none; }
.pkal-acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.pkal-topic { margin-top: 8px; font: 600 12.5px/1.4 'DM Sans', sans-serif; color: var(--pk-ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pkal-topic small { display: block; font: 800 9.5px/1 'DM Sans', sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--pk-ink40); margin-bottom: 4px; }
.pkal-hwdot { display: inline-flex; align-items: center; gap: 5px; margin-top: 7px; font: 700 11px/1 'DM Sans', sans-serif; color: var(--pk-okd); }
.pkal-hwdot i { width: 6px; height: 6px; border-radius: 50%; background: var(--pk-ok); }

/* stany karty */
.pkal .pkal-card[data-stan="odwolana"] .pkal-subj-t,
.pkal .pkal-card[data-stan="odwolana"] .pkal-time b { color: var(--pk-ink40); text-decoration: line-through; text-decoration-thickness: 1.5px; text-decoration-color: rgba(214, 69, 69, .55); }
.pkal .pkal-card[data-stan="przelozona"] { background: var(--pk-cream); box-shadow: inset 0 0 0 1.5px transparent; outline: 1.5px dashed var(--pk-line2); outline-offset: -1.5px; }
.pkal .pkal-card[data-stan="przelozona"]::before { background: repeating-linear-gradient(180deg, var(--pk-k) 0 5px, transparent 5px 9px); }
.pkal .pkal-card[data-stan="przelozona"] .pkal-subj-t,
.pkal .pkal-card[data-stan="przelozona"] .pkal-time b { color: var(--pk-ink40); }
.pkal .pkal-card[data-stan="archiwum"] { background: var(--pk-paper); box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .04); }
.pkal .pkal-card[data-stan="archiwum"]::before { opacity: .35; }
.pkal .pkal-card[data-stan="nie_odbyla_sie"] .pkal-subj-t, .pkal .pkal-card[data-stan="nieobecnosc"] .pkal-subj-t { color: var(--pk-ink60); }

/* ── Pigułki stanu (kropka + słowo — stan zawsze słowem, nie samym kolorem) ── */
.pkal-pill { margin-left: auto; flex: none; display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 99px; font: 800 10.5px/1 'DM Sans', sans-serif; letter-spacing: .015em; white-space: nowrap; }
.pkal-pill::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: none; }
.pkal-pill.s-zaplanowana { background: rgba(249, 200, 67, .2); color: #A4500A; }
.pkal-pill.s-raport_w_drodze { background: rgba(22, 163, 74, .1); color: var(--pk-okd); }
.pkal-pill.s-raport_w_drodze::before { animation: pkalDot 1.6s ease-in-out infinite; }
.pkal-pill.s-odbyta { background: rgba(22, 163, 74, .12); color: var(--pk-okd); }
.pkal-pill.s-odbyta::before { width: 11px; height: 11px; background: none; -webkit-mask: none; border-radius: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.4 6.3l2.3 2.2 4.9-5' fill='none' stroke='%2315803D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-size: contain; background-repeat: no-repeat; }
.pkal-pill.s-odwolana { background: rgba(214, 69, 69, .09); color: var(--pk-badd); }
.pkal-pill.s-przelozona { background: rgba(26, 23, 19, .06); color: var(--pk-ink60); }
.pkal-pill.s-przelozona::before { width: 10px; height: 10px; background: none; border-radius: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1.5 6h8M6.5 3l3 3-3 3' fill='none' stroke='%236B6459' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-size: contain; background-repeat: no-repeat; }
.pkal-pill.s-nieobecnosc { background: var(--pk-ambbg); color: var(--pk-amb); }
.pkal-pill.s-nie_odbyla_sie { background: rgba(26, 23, 19, .06); color: var(--pk-ink60); }
.pkal-pill.s-archiwum { background: rgba(26, 23, 19, .05); color: var(--pk-ink40); }
.pkal-pill.s-probna { background: linear-gradient(135deg, rgba(249, 200, 67, .32), rgba(240, 112, 32, .18)); color: #93400A; }
.pkal-pill.s-prosba { background: var(--pk-ambbg); color: var(--pk-amb); }
.pkal-pill.s-prosba::before { animation: pkalDot 1.6s ease-in-out infinite; }
.pkal-pill.s-kontra { background: var(--pk-or); color: #fff; box-shadow: 0 6px 14px -8px rgba(240, 112, 32, .9); }

/* ── Przyciski ───────────────────────────────────────────────────────────── */
.pkal-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  min-height: 42px; padding: 0 15px; border-radius: 13px; border: 0; cursor: pointer; text-decoration: none;
  font: 700 13px/1 'DM Sans', sans-serif; letter-spacing: .005em; white-space: nowrap;
  transition: transform .1s var(--pk-out), box-shadow .15s, background .2s, opacity .2s;
}
.pkal-btn svg { width: 16px; height: 16px; flex: none; }
.pkal-btn:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55) !important; }
.pkal-btn:active:not([disabled]) { transform: translateY(2px) scale(.98); }
.pkal-btn[disabled] { opacity: .5; cursor: not-allowed; box-shadow: none !important; }
.pkal-btn--join { background: linear-gradient(135deg, #F9C843, #F07020); color: #fff; box-shadow: 0 3px 0 #C4640E, 0 10px 20px -10px rgba(240, 112, 32, .8); }
.pkal-btn--join.teraz { background: linear-gradient(135deg, #3BD476, #16A34A); box-shadow: 0 3px 0 #0E7A36, 0 10px 20px -10px rgba(22, 163, 74, .8); animation: pkalBreath 2.6s ease-in-out infinite; }
.pkal-btn--primary { background: linear-gradient(135deg, #F9C843, #F07020); color: #fff; box-shadow: 0 3px 0 #C4640E, 0 12px 22px -12px rgba(240, 112, 32, .9); }
.pkal-btn--ghost { background: #fff; color: var(--pk-ink); box-shadow: inset 0 0 0 1.5px var(--pk-line), 0 2px 0 rgba(194, 186, 176, .28); }
.pkal-btn--danger { background: #fff; color: var(--pk-badd); box-shadow: inset 0 0 0 1.5px rgba(214, 69, 69, .3), 0 2px 0 rgba(214, 69, 69, .14); }
.pkal-btn--solid-danger { background: var(--pk-bad); color: #fff; box-shadow: 0 3px 0 #A52F2F, 0 12px 22px -14px rgba(165, 47, 47, .9); }
.pkal-btn--dark { background: var(--pk-ink); color: #fff; box-shadow: 0 3px 0 #000, 0 10px 20px -12px rgba(26, 23, 19, .8); }
.pkal-btn--ok { background: linear-gradient(135deg, #3BD476, #16A34A); color: #fff; box-shadow: 0 3px 0 #0E7A36, 0 10px 20px -12px rgba(22, 163, 74, .8); }
.pkal-btn--block { width: 100%; min-height: 52px; border-radius: 15px; font-size: 15px; }
.pkal-btn .spin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: pkalSpin .7s linear infinite; }
@media (hover: hover) {
  .pkal-btn--join:hover, .pkal-btn--primary:hover { transform: translateY(-1px); box-shadow: 0 4px 0 #C4640E, 0 14px 26px -10px rgba(240, 112, 32, .8), 0 0 20px rgba(249, 200, 67, .25); }
  .pkal-btn--ghost:hover { box-shadow: inset 0 0 0 1.5px var(--pk-line2), 0 2px 0 rgba(194, 186, 176, .3), 0 0 18px rgba(249, 200, 67, .15); }
}

/* ── Stany pustki, błędu, ładowania ─────────────────────────────────────── */
.pkal-empty { text-align: center; padding: 30px 22px 24px; border-radius: 22px; background: var(--pk-card); box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06); animation: pkalRise .45s var(--pk-out) both; }
.pkal-empty svg { display: block; width: 132px; height: 96px; margin: 0 auto 12px; }
.pkal-empty h4 { margin: 0 0 6px; font: 400 21px/1.2 'DM Serif Display', Georgia, serif; text-wrap: balance; }
.pkal-empty p { margin: 0 auto 16px; max-width: 290px; font: 500 13.5px/1.5 'DM Sans', sans-serif; color: var(--pk-ink60); text-wrap: pretty; }
.pkal-sk { border-radius: 18px; background: linear-gradient(90deg, #EFE9DE 25%, #F8F4ED 50%, #EFE9DE 75%); background-size: 200% 100%; animation: pkalShim 1.4s linear infinite; }
.pkal-more { display: flex; justify-content: center; padding: 8px 0 4px; }

/* ═══ Arkusze (szczegóły, Przesuń, Odwołaj, potwierdzenie) ═════════════════ */
html.pkal-lock .p-view.active { overflow: hidden !important; }
.pkal-bg { position: fixed; inset: 0; background: rgba(26, 23, 19, .46); -webkit-backdrop-filter: blur(8px) saturate(1.3); backdrop-filter: blur(8px) saturate(1.3); }
.pkal-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; margin: 0 auto; max-width: 560px; max-height: 92dvh;
  display: flex; flex-direction: column; background: #FFFDF7; border-radius: 26px 26px 0 0;
  box-shadow: 0 -18px 60px rgba(26, 23, 19, .28); outline: none;
  animation: pkalUp .44s var(--pk-lin) both;
}
.pkal-sheet.out { animation: pkalDown .24s var(--pk-lin) both; }
.pkal-sheet.full { top: 0; max-height: none; height: 100dvh; border-radius: 0; }
@media (min-width: 720px) {
  .pkal-sheet { left: 50%; right: auto; top: 50%; bottom: auto; width: min(540px, calc(100vw - 48px)); max-height: 86vh; border-radius: 24px; translate: -50% -50%; animation: pkalPop .38s var(--pk-spring) both; box-shadow: 0 30px 80px -20px rgba(26, 23, 19, .45); }
  .pkal-sheet.out { animation: pkalPopOut .2s var(--pk-lin) both; }
  .pkal-sheet.full { top: 50%; height: min(780px, 90vh); border-radius: 24px; }
  .pkal-grab { display: none; }
}
.pkal-grab { flex: none; width: 44px; height: 5px; border-radius: 99px; background: #E2DBCF; margin: 10px auto 0; }
.pkal-sh-head { flex: none; display: flex; align-items: flex-start; gap: 12px; padding: 14px 20px 4px; }
.pkal-sheet.full .pkal-sh-head { padding-top: calc(14px + env(safe-area-inset-top, 0px)); }
@media (min-width: 720px) { .pkal-sheet.full .pkal-sh-head { padding-top: 18px; } }
.pkal-x { flex: none; margin-left: auto; width: 38px; height: 38px; border-radius: 50%; border: 0; background: rgba(26, 23, 19, .06); color: var(--pk-ink60); display: grid; place-items: center; cursor: pointer; transition: transform .1s var(--pk-out), background .15s; }
.pkal-x:active { transform: scale(.9); }
.pkal-x svg { width: 16px; height: 16px; }
.pkal-sh-body { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; padding: 4px 20px 18px; }
.pkal-sh-foot { flex: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 20px calc(14px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid rgba(26, 23, 19, .06); background: #FFFDF7; }
.pkal-sh-foot .pkal-btn { flex: 1 1 auto; }
.pkal-sh-foot .pkal-err { flex-basis: 100%; }
.pkal-sh-kid { display: inline-flex; align-items: center; gap: 7px; height: 26px; padding: 0 11px 0 8px; border-radius: 99px; background: color-mix(in srgb, var(--pk-k) 11%, #fff); color: color-mix(in srgb, var(--pk-k) 80%, #1A1713); font: 800 12px/1 'DM Sans', sans-serif; }
.pkal-sh-kid i { width: 9px; height: 9px; border-radius: 50%; background: var(--pk-k); }
.pkal-sh-title { margin: 12px 0 4px; font: 400 27px/1.08 'DM Serif Display', Georgia, serif; letter-spacing: -.01em; text-wrap: balance; }
.pkal-sh-sub { font: 600 14px/1.45 'DM Sans', sans-serif; color: var(--pk-ink60); font-variant-numeric: tabular-nums; }
.pkal-h { margin: 22px 0 9px; font: 800 10.5px/1 'DM Sans', sans-serif; letter-spacing: .15em; text-transform: uppercase; color: var(--pk-ink40); display: flex; align-items: center; gap: 10px; }
.pkal-h::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, var(--pk-line2), rgba(216, 208, 195, 0)); }

.pkal-state { display: flex; gap: 12px; align-items: flex-start; margin: 16px 0 4px; padding: 14px; border-radius: 17px; background: #fff; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06); }
.pkal-state-ico { flex: none; width: 40px; height: 40px; border-radius: 13px; display: grid; place-items: center; background: rgba(249, 200, 67, .2); color: #A4500A; }
.pkal-state-ico svg { width: 20px; height: 20px; }
.pkal-state b { display: block; font: 800 15px/1.3 'DM Sans', sans-serif; }
.pkal-state p { margin: 3px 0 0; font: 500 13px/1.5 'DM Sans', sans-serif; color: var(--pk-ink60); text-wrap: pretty; }
.pkal-state.s-odbyta .pkal-state-ico, .pkal-state.s-raport_w_drodze .pkal-state-ico { background: rgba(22, 163, 74, .12); color: var(--pk-okd); }
.pkal-state.s-odwolana .pkal-state-ico { background: rgba(214, 69, 69, .1); color: var(--pk-badd); }
.pkal-state.s-przelozona .pkal-state-ico, .pkal-state.s-nie_odbyla_sie .pkal-state-ico, .pkal-state.s-archiwum .pkal-state-ico { background: rgba(26, 23, 19, .06); color: var(--pk-ink60); }
.pkal-state.s-nieobecnosc .pkal-state-ico { background: var(--pk-ambbg); color: var(--pk-amb); }
.pkal-state.s-kontra .pkal-state-ico, .pkal-state.s-prosba .pkal-state-ico { background: #FFE9D2; color: #B4470A; }

.pkal-bridge { display: grid; grid-template-columns: minmax(0, 1fr) 30px minmax(0, 1fr); align-items: stretch; gap: 6px; margin: 12px 0 2px; }
.pkal-bt { padding: 11px 12px; border-radius: 15px; background: #fff; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .07); min-width: 0; text-align: left; border: 0; font: inherit; color: inherit; }
button.pkal-bt { cursor: pointer; }
.pkal-bt small { display: block; margin-bottom: 5px; font: 800 9.5px/1 'DM Sans', sans-serif; letter-spacing: .13em; text-transform: uppercase; color: var(--pk-ink40); }
.pkal-bt b { display: block; font: 800 14.5px/1.25 'DM Sans', sans-serif; font-variant-numeric: tabular-nums; }
.pkal-bt span { display: block; margin-top: 3px; font: 600 11.5px/1.3 'DM Sans', sans-serif; color: var(--pk-ink40); }
.pkal-bt.stary { background: transparent; box-shadow: none; outline: 1.5px dashed var(--pk-line2); outline-offset: -1.5px; }
.pkal-bt.stary b { color: var(--pk-ink40); text-decoration: line-through; text-decoration-thickness: 1.5px; }
.pkal-bt.nowy { background: rgba(22, 163, 74, .06); box-shadow: inset 0 0 0 1.5px rgba(22, 163, 74, .32); }
.pkal-bt.nowy small { color: var(--pk-okd); }
.pkal-bt.nowy.biezacy { box-shadow: inset 0 0 0 2px rgba(22, 163, 74, .55); }
.pkal-bt.stary.biezacy { outline-color: #B9AE9E; }
.pkal-arrow { display: grid; place-items: center; color: var(--pk-ink40); }
.pkal-arrow svg { width: 18px; height: 18px; }

.pkal-rep { margin: 12px 0 0; padding: 16px; border-radius: 18px; background: #fff; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06); }
.pkal-rep small { display: block; font: 800 9.5px/1 'DM Sans', sans-serif; letter-spacing: .13em; text-transform: uppercase; color: var(--pk-ink40); }
.pkal-rep h4 { margin: 6px 0 12px; font: 400 20px/1.25 'DM Serif Display', Georgia, serif; text-wrap: balance; }
.pkal-rep blockquote { margin: 0 0 12px; padding: 1px 0 1px 13px; border-left: 3px solid var(--pk-gold); font: 500 14px/1.6 'DM Sans', sans-serif; color: var(--pk-ink); white-space: pre-line; text-wrap: pretty; }
.pkal-hw { padding: 12px 13px; border-radius: 13px; background: var(--pk-paper); }
.pkal-hw div { margin-top: 6px; font: 600 13.5px/1.55 'DM Sans', sans-serif; white-space: pre-line; color: var(--pk-ink); }
.pkal-rep-none { font: 500 13px/1.5 'DM Sans', sans-serif; color: var(--pk-ink60); }

.pkal-tl { position: relative; margin: 4px 0 0; padding: 2px 0 0 24px; }
.pkal-tl::before { content: ''; position: absolute; left: 7px; top: 8px; bottom: 14px; width: 2px; border-radius: 2px; background: linear-gradient(180deg, var(--pk-line2), rgba(216, 208, 195, .25)); }
.pkal-ev { position: relative; padding: 0 0 15px; animation: pkalIn .4s var(--pk-out) both; }
.pkal-ev::before { content: ''; position: absolute; left: -22px; top: 3px; width: 12px; height: 12px; border-radius: 50%; background: #FFFDF7; box-shadow: inset 0 0 0 2.5px var(--ev, #C2BAB0); }
.pkal-ev.last::before { background: var(--ev, #C2BAB0); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ev, #C2BAB0) 18%, transparent); }
.pkal-ev b { display: block; font: 800 13.5px/1.3 'DM Sans', sans-serif; }
.pkal-ev em { font-style: normal; font-weight: 600; color: var(--pk-ink60); }
.pkal-ev span { display: block; margin-top: 3px; font: 600 11.5px/1.3 'DM Sans', sans-serif; color: var(--pk-ink40); font-variant-numeric: tabular-nums; }

/* Przesuń */
.pkal-ctx { display: flex; align-items: center; gap: 10px; margin: 12px 0 2px; padding: 11px 12px; border-radius: 15px; background: #fff; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .06); }
.pkal-ctx i { width: 4px; align-self: stretch; border-radius: 4px; background: var(--pk-k); flex: none; }
.pkal-ctx b { display: block; font: 800 14px/1.25 'DM Sans', sans-serif; }
.pkal-ctx span { display: block; margin-top: 2px; font: 600 12.5px/1.3 'DM Sans', sans-serif; color: var(--pk-ink60); font-variant-numeric: tabular-nums; }
.pkal-days { display: flex; gap: 8px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; margin: 0 -20px; padding: 4px 20px 12px; }
.pkal-days::-webkit-scrollbar { display: none; }
.pkal-day {
  flex: none; scroll-snap-align: start; width: 58px; height: 76px; border-radius: 17px; border: 1.5px solid var(--pk-line); background: #fff;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; cursor: pointer;
  transition: transform .12s var(--pk-out), background .2s var(--pk-lin), border-color .2s, box-shadow .2s;
}
.pkal-day small { font: 800 10px/1 'DM Sans', sans-serif; letter-spacing: .08em; text-transform: uppercase; color: var(--pk-ink40); }
.pkal-day b { font: 800 20px/1 'DM Sans', sans-serif; font-variant-numeric: tabular-nums; color: var(--pk-ink); }
.pkal-day i { width: 6px; height: 6px; border-radius: 50%; background: var(--pk-ok); }
.pkal-day .dz { font: 800 8.5px/1 'DM Sans', sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--pk-or); }
.pkal-day.brak { background: transparent; }
.pkal-day.brak b { color: var(--pk-ink30); }
.pkal-day.brak i { background: transparent; box-shadow: inset 0 0 0 1.5px var(--pk-ink30); }
.pkal-day.sel { background: var(--pk-ink); border-color: var(--pk-ink); box-shadow: 0 12px 20px -12px rgba(26, 23, 19, .9); }
.pkal-day.sel small, .pkal-day.sel .dz { color: rgba(255, 255, 255, .72); }
.pkal-day.sel b { color: #fff; }
.pkal-day.sel i { background: #4ADE80; box-shadow: none; }
.pkal-day:active { transform: scale(.94); }
.pkal-legend2 { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 2px 0 12px; font: 600 11.5px/1.3 'DM Sans', sans-serif; color: var(--pk-ink60); }
.pkal-legend2 span { display: inline-flex; align-items: center; gap: 6px; }
.pkal-legend2 i { width: 12px; height: 12px; border-radius: 4px; border: 1.5px solid rgba(22, 163, 74, .45); background: rgba(22, 163, 74, .08); }
.pkal-legend2 i.req { border-color: rgba(180, 83, 9, .35); background: #FFF6E6; }
.pkal-hours { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
@media (min-width: 480px) { .pkal-hours { grid-template-columns: repeat(5, 1fr); } }
.pkal-hour {
  position: relative; height: 48px; border-radius: 14px; border: 1.5px solid rgba(22, 163, 74, .38); background: rgba(22, 163, 74, .05);
  font: 700 15px/1 'DM Sans', sans-serif; font-variant-numeric: tabular-nums; color: var(--pk-okd); cursor: pointer;
  transition: transform .12s var(--pk-out), background .18s, border-color .18s, color .18s, box-shadow .2s;
  animation: pkalIn .34s var(--pk-out) both;
}
.pkal-hour:active { transform: scale(.94); }
.pkal-hour.req { border-color: rgba(180, 83, 9, .3); background: #FFF8EC; color: var(--pk-amb); font-weight: 600; }
.pkal-hour.sel { background: var(--pk-ok); border-color: var(--pk-ok); color: #fff; box-shadow: 0 10px 18px -10px rgba(22, 163, 74, .9); }
.pkal-hour.req.sel { background: #D97706; border-color: #D97706; box-shadow: 0 10px 18px -10px rgba(217, 119, 6, .9); }
.pkal-hour.sel::after { content: ''; position: absolute; top: -6px; right: -6px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(26, 23, 19, .25);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 9.2l2.6 2.5L13 6.5' fill='none' stroke='%2316A34A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); animation: pkalPopDot .3s var(--pk-spring) both; }
.pkal-hour.req.sel::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 9.2l2.6 2.5L13 6.5' fill='none' stroke='%23D97706' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.pkal-nohours { padding: 18px 16px; border-radius: 15px; text-align: center; background: #fff; box-shadow: inset 0 0 0 1.5px var(--pk-line); font: 600 13px/1.5 'DM Sans', sans-serif; color: var(--pk-ink60); }
.pkal-disclose { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 14px 0 10px; padding: 13px 14px; border-radius: 15px; border: 1.5px dashed rgba(180, 83, 9, .35); background: #FFFBF3; font: 700 13.5px/1.3 'DM Sans', sans-serif; color: #7A4A08; cursor: pointer; text-align: left; }
.pkal-disclose svg { width: 16px; height: 16px; transition: transform .25s var(--pk-lin); flex: none; }
.pkal-disclose[aria-expanded="true"] svg { transform: rotate(180deg); }
.pkal-disclose small { display: block; font-weight: 600; font-size: 12px; color: #9A6A2A; margin-top: 2px; }

.pkal-reasons { display: flex; flex-wrap: wrap; gap: 8px; margin: 2px 0 10px; }
.pkal-reason { height: 38px; padding: 0 14px; border-radius: 99px; border: 1.5px solid var(--pk-line); background: #fff; color: var(--pk-ink60); font: 700 12.5px/1 'DM Sans', sans-serif; cursor: pointer; transition: transform .1s var(--pk-out), background .18s, border-color .18s, color .18s; }
.pkal-reason:active { transform: scale(.95); }
.pkal-reason[aria-pressed="true"] { border-color: var(--pk-ink); background: var(--pk-ink); color: #fff; }
.pkal-input { width: 100%; height: 50px; padding: 0 15px; border-radius: 15px; border: 1.5px solid var(--pk-line); background: #fff; font: 500 16px/1.2 'DM Sans', sans-serif; color: var(--pk-ink); transition: border-color .2s, box-shadow .2s; -webkit-appearance: none; appearance: none; }
.pkal-input::placeholder { color: #B2A99D; font-style: italic; }
.pkal-input:focus { outline: none; border-color: var(--pk-or); box-shadow: 0 0 0 3px rgba(249, 200, 67, .32); }
/* Globalna reguła panelu (parent.html: `button/a/input/[tabindex]:focus-visible { outline; box-shadow;
   border-radius: inherit }`) ścinała rogi zaokrąglonych elementów do kwadratu i dokładała drugi obrys.
   W module i arkuszach: bez obrysu, własny złoty pierścień i PRZYWRÓCONY promień każdego elementu. */
.pkal-sheet :focus-visible, .pkal :focus-visible, .pkal-zmien:focus-visible { outline: none; }
.pkal-sheet:focus-visible { outline: none; box-shadow: 0 -18px 60px rgba(26, 23, 19, .28); border-radius: 26px 26px 0 0; }
.pkal-input:focus-visible { border-radius: 15px; border-color: var(--pk-or); box-shadow: 0 0 0 3px rgba(249, 200, 67, .32); }
.pkal-input.blad:focus-visible { border-color: var(--pk-bad); box-shadow: 0 0 0 3px rgba(214, 69, 69, .14); }
.pkal-btn:focus-visible { border-radius: 13px; }
.pkal-btn--block:focus-visible { border-radius: 15px; }
.pkal-chip:focus-visible, .pkal-reason:focus-visible, .pkal-zmien:focus-visible, .pkal-cal-today:focus-visible { border-radius: 99px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal-hour:focus-visible { border-radius: 14px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal-day:focus-visible, .pkal-bt:focus-visible { border-radius: 17px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal-d:focus-visible { border-radius: 13px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal-nav:focus-visible { border-radius: 12px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal-x:focus-visible { border-radius: 50%; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal .pkal-card:focus-visible { border-radius: 18px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .7); }
.pkal-joinhero:focus-visible { border-radius: 16px; box-shadow: 0 0 0 3px rgba(255, 255, 255, .8); }
.pkal-seg button:focus-visible { border-radius: 12px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .55); }
.pkal-disclose:focus-visible { border-radius: 15px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .45); }
.pkal-link:focus-visible { border-radius: 6px; box-shadow: 0 0 0 3px rgba(249, 200, 67, .5); }
.pkal-input:-webkit-autofill { -webkit-box-shadow: inset 0 0 0 100px #FFFDF7; }
.pkal-info { display: flex; gap: 11px; align-items: flex-start; margin: 14px 0 4px; padding: 14px; border-radius: 16px; background: rgba(22, 163, 74, .07); box-shadow: inset 0 0 0 1px rgba(22, 163, 74, .22); font: 600 14px/1.45 'DM Sans', sans-serif; color: #14532D; }
.pkal-info svg { flex: none; width: 22px; height: 22px; color: var(--pk-ok); margin-top: -1px; }
.pkal-info small { display: block; margin-top: 3px; font-weight: 500; font-size: 12.5px; color: #2E6B45; }
.pkal-err { padding: 10px 12px; border-radius: 12px; background: rgba(214, 69, 69, .08); color: #8E2B2B; font: 600 12.5px/1.4 'DM Sans', sans-serif; animation: pkalShake .32s ease both; }
.pkal-err[hidden] { display: none; }

/* ── Toast (kremowy ze złotą obwódką — jak scena próbnej, nie granatowy panelowy) ── */
.pkal-toast {
  position: fixed; left: 50%; translate: -50% 0; bottom: calc(var(--p-nav-h, 68px) + 16px + env(safe-area-inset-bottom, 0px));
  display: flex; align-items: center; gap: 11px; width: max-content; max-width: calc(100vw - 32px); padding: 11px 16px 11px 11px; border-radius: 17px;
  background: #FFFDF7; color: #1A1713; box-shadow: inset 0 0 0 1.5px rgba(249, 200, 67, .8), 0 18px 40px -16px rgba(26, 23, 19, .45);
  font: 700 14px/1.3 'DM Sans', sans-serif; animation: pkalToast .46s var(--pk-spring) both;
}
.pkal-toast.out { animation: pkalToastOut .24s var(--pk-lin) both; }
.pkal-toast .ico { flex: none; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, #F9C843, #F07020); color: #fff; }
.pkal-toast.err .ico { background: var(--pk-bad); }
.pkal-toast .ico svg { width: 15px; height: 15px; }
.pkal-toast .ico path { stroke-dasharray: 20; stroke-dashoffset: 20; animation: pkalDraw .45s .18s var(--pk-out) forwards; }
.pkal-toast small { display: block; margin-top: 2px; font-weight: 600; font-size: 12.5px; color: var(--pk-ink60, #6B6459); }
.pkal-confetti { position: fixed; width: 7px; height: 7px; border-radius: 2px; pointer-events: none; animation: pkalConf .8s var(--pk-out) forwards; }

/* ── Ruch ────────────────────────────────────────────────────────────────── */
@keyframes pkalIn { from { transform: translateY(10px); } to { transform: none; } }
@keyframes pkalRise { from { transform: translateY(14px) scale(.985); } to { transform: none; } }
@keyframes pkalUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
@keyframes pkalDown { from { transform: translateY(0); } to { transform: translateY(105%); } }
@keyframes pkalPop { from { transform: translateY(22px) scale(.965); } to { transform: none; } }
@keyframes pkalPopOut { from { transform: none; } to { transform: translateY(16px) scale(.97); } }
@keyframes pkalSlideL { from { transform: translateX(-18px); } to { transform: none; } }
@keyframes pkalSlideR { from { transform: translateX(18px); } to { transform: none; } }
@keyframes pkalToast { from { transform: translateY(30px) scale(.94); } to { transform: none; } }
@keyframes pkalToastOut { from { transform: none; } to { transform: translateY(160%); } }
@keyframes pkalDraw { to { stroke-dashoffset: 0; } }
@keyframes pkalLive { 0% { box-shadow: 0 0 0 0 rgba(74, 222, 128, .75); } 70% { box-shadow: 0 0 0 8px rgba(74, 222, 128, 0); } 100% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); } }
@keyframes pkalBreath { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.02); } }
@keyframes pkalDot { 0%, 100% { transform: scale(1); } 50% { transform: scale(.55); } }
@keyframes pkalShim { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
@keyframes pkalBar { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes pkalSpin { to { transform: rotate(360deg); } }
@keyframes pkalShake { 0%, 100% { transform: none; } 25% { transform: translateX(-3px); } 75% { transform: translateX(3px); } }
@keyframes pkalPopDot { from { transform: scale(0); } to { transform: scale(1); } }
@keyframes pkalConf { from { transform: translate(0, 0) rotate(0); } to { transform: translate(var(--dx), var(--dy)) rotate(260deg) scale(.4); } }

@media (prefers-reduced-motion: reduce) {
  .pkal *, .pkal-sheet, .pkal-sheet *, .pkal-toast, .pkal-toast *, .pkal-confetti { animation: none !important; transition-duration: .01ms !important; }
  .pkal-toast .ico path { stroke-dashoffset: 0; }
  .pkal-pack-bar i { transform: none; }
}

/* ── Pakiet z przeniesieniem (mig. 222) i umowa do przedłużenia (2026-09-11) ── */
.pkal-pack-plus { grid-column: 1 / -1; display: inline-flex; align-items: center; gap: 6px; font: 700 11px/1.3 'DM Sans', sans-serif; color: #8A5A0A; }
.pkal-pack-plus::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: linear-gradient(135deg, #F9C843, #F07020); flex: none; }
.pkal-tag.umowa { background: rgba(249, 200, 67, .16); color: #8A5A0A; box-shadow: inset 0 0 0 1px rgba(227, 178, 60, .35); }
/* Minęła, nierozliczona — spokojnie, bez alarmowych kolorów (krąg 3, 11.09). */
.pkal-tag.rozliczenie { background: rgba(26, 23, 19, .05); color: #6B6459; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .08); }
/* E15 / D64 (2026-09-15): „raport karty" na koncie ucznia — raport bez przypisanego ucznia (wspólna historia rodzeństwa); ton jak `.rozliczenie`, bez alarmu. */
.pkal-tag.karta { background: rgba(26, 23, 19, .04); color: #6B6459; box-shadow: inset 0 0 0 1px rgba(26, 23, 19, .08); letter-spacing: .01em; }
/* Karta bez pakietu i bez limitu miesięcznego: sama liczba odbytych, bez paska/pierścienia postępu (2026-09-11). */
.p-child-v2-ring--bez .p-child-v2-ring-fill { display: none; }
.p-child-v2-ring--bez .p-child-v2-ring-bg { stroke-dasharray: 2.5 4.5; }
/* Stary widok Zajęć pod nowym kalendarzem: `hidden` nie wystarcza, bo część kontenerów ma inline
   `display:flex` (pasek „Zaplanowane / Odbyte / Wszystkie”, .p-cal-toggle). Znacznik `data-pkal-ukryte`
   stawia wyłącznie montaż nowego kalendarza — bez niego stary widok działa jak dziś (2026-09-11). */
#view-lessons > [data-pkal-ukryte] { display: none !important; }
/* Łańcuch przełożeń: dopisek z ostatecznym terminem na karcie pośredniej. */
.pkal-potem { display: block; margin-top: 4px; font-size: 12.5px; color: #8A8580; }
.pkal-potem .pkal-link { font-size: inherit; }
.pkal-dziecko-pakiet { margin: 12px 0 2px; padding: 10px 12px; border-radius: 12px; background: #F7F4EE; font: 600 12.5px/1.45 'DM Sans', sans-serif; color: #6B6459; font-variant-numeric: tabular-nums; }
.pkal-dziecko-pakiet b { color: #1A1713; font-weight: 800; }
.pkal-dziecko-pakiet span { display: flex; align-items: center; gap: 6px; margin-top: 3px; font-weight: 700; font-size: 11.5px; color: #8A5A0A; }
.pkal-dziecko-pakiet span::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: linear-gradient(135deg, #F9C843, #F07020); flex: none; }

/* ── Profil: zmiana maila / telefonu z kodem (2026-09-11) ───────────────── */
.pkal-zmien {
  flex: none; margin-left: 10px; height: 34px; padding: 0 14px; border-radius: 99px; border: 1.5px solid #EDE8DF; background: #fff;
  color: #B4470A; font: 700 12.5px/1 'DM Sans', sans-serif; cursor: pointer; -webkit-tap-highlight-color: transparent;
  transition: transform .1s cubic-bezier(.16, 1, .3, 1), box-shadow .2s, border-color .2s;
}
.pkal-zmien:active { transform: scale(.95); }
.pkal-zmien:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(249, 200, 67, .5); }
@media (hover: hover) { .pkal-zmien:hover { border-color: rgba(240, 112, 32, .4); box-shadow: 0 0 18px rgba(249, 200, 67, .22); } }
.pkal-lbl { display: block; margin: 18px 0 8px; font: 800 10.5px/1 'DM Sans', sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--pk-ink40); }
.pkal-sent { display: flex; align-items: center; gap: 11px; margin-top: 6px; padding: 13px 14px; border-radius: 15px; background: rgba(249, 200, 67, .16); box-shadow: inset 0 0 0 1px rgba(240, 112, 32, .18); font: 600 13.5px/1.4 'DM Sans', sans-serif; color: #7A4A08; }
.pkal-sent b { color: #1A1713; font-variant-numeric: tabular-nums; }
.pkal-sent svg { flex: none; width: 20px; height: 20px; color: #D9700A; }
.pkal-input.pkal-kod { height: 64px; text-align: center; font: 700 28px/1 'DM Sans', sans-serif; letter-spacing: .5em; padding-left: .5em; font-variant-numeric: tabular-nums; }
.pkal-input.pkal-kod::placeholder { letter-spacing: .5em; font-style: normal; color: #D8D0C3; }
.pkal-input.blad { border-color: var(--pk-bad); box-shadow: 0 0 0 3px rgba(214, 69, 69, .14); animation: pkalShake .32s ease both; }
.pkal-kod-meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; font: 600 12.5px/1.3 'DM Sans', sans-serif; color: var(--pk-ink60); font-variant-numeric: tabular-nums; }
.pkal-kod-meta .wygasl { color: var(--pk-badd); }
.pkal-link[disabled] { color: var(--pk-ink30); cursor: default; }
.pkal-kod-wstecz { margin-top: 16px; }

@media print {
  .pkal-hero, .pkal-chips, .pkal-cal, .pkal-seg, .pkal-acts, .pkal-sheet, .pkal-bg, .pkal-toast { display: none !important; }
  .pkal .pkal-card { box-shadow: none; border: 1px solid #ccc; break-inside: avoid; }
}
