/* =========================================================================
   Fiszki w głowie — arkusz wspólny dla trzech produktów.

   Kolory NIE są tutaj: każdy build wstrzykuje własną paletę do :root
   (patrz narzedzia/zbuduj.js). Tu jest tylko układ, kształty i ruch.

   Założenia:
   - dziecko ma trafić palcem: nic klikalnego nie jest mniejsze niż 48 px,
   - na dużym ekranie karta ma być DUŻA, nie wyśrodkowanym pudełkiem 400 px,
   - żadnych zewnętrznych żądań: fonty leżą obok, tło jest z CSS,
   - kto ma włączone „ogranicz ruch", dostaje stronę bez animacji.
   ========================================================================= */

/* ------------------------------------------------------------------ fonty */
@font-face{font-family:'Baloo 2';font-style:normal;font-weight:400 800;font-display:swap;
  src:url(baloo2-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Baloo 2';font-style:normal;font-weight:400 800;font-display:swap;
  src:url(baloo2-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Nunito';font-style:normal;font-weight:400 900;font-display:swap;
  src:url(nunito-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Nunito';font-style:normal;font-weight:400 900;font-display:swap;
  src:url(nunito-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

/* ------------------------------------------------------------- podstawy */
:root{
  --biel:#fff;
  --papier:#fffdf8;
  --tekst:#241c16;
  --tekst-jasny:#6b6259;
  --zielony:#149067;
  --zielony-cien:#0d6b4c;
  --pomarancz:#e8702a;
  --pomarancz-cien:#c25a1c;
  --r-m:#2f80ed;      /* rodzajnik męski */
  --r-z:#e0457b;      /* żeński */
  --r-n:#12967c;      /* nijaki */
  --promien:28px;
  --promien-maly:16px;
  --ramka:3px;
  --cien-plaski:0 6px 0;
  --font-naglowki:'Baloo 2','Nunito','Segoe UI',system-ui,sans-serif;
  --font-tekst:'Nunito','Segoe UI',system-ui,sans-serif;
  /* IPA ma własny stos: Baloo i Nunito nie mają kompletu znaków fonetycznych */
  --font-ipa:'Charis SIL','Doulos SIL','Gentium Plus','Lucida Sans Unicode','Segoe UI',serif;
}

*,*::before,*::after{box-sizing:border-box;}
/* Atrybut `hidden` musi wygrywać z każdym `display` z tego arkusza — inaczej
   .odpowiedzi{display:grid} pokazuje przyciski odpowiedzi jeszcze przed
   odkryciem karty (i tak samo znikające przyciski dźwięku). */
[hidden]{display:none !important;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  min-height:100dvh;
  font-family:var(--font-tekst);
  font-size:clamp(16px,1rem + .25vw,19px);
  line-height:1.6;
  color:var(--tekst);
  background:var(--tlo-1);
  overflow-x:hidden;
}
h1,h2,h3,h4{font-family:var(--font-naglowki);line-height:1.1;margin:0 0 .4em;letter-spacing:-.01em;}
p{margin:0 0 1em;}
button{font:inherit;color:inherit;}
a{color:var(--marka);text-decoration-thickness:2px;text-underline-offset:3px;}

/* --------------------------------------------------------------- tło */
.tlo{position:fixed;inset:0;z-index:-1;overflow:hidden;
  background:
    radial-gradient(80vw 60vh at 12% 8%,var(--tlo-1) 0%,transparent 60%),
    radial-gradient(70vw 55vh at 88% 22%,var(--tlo-2) 0%,transparent 62%),
    radial-gradient(90vw 70vh at 50% 100%,var(--tlo-3) 0%,transparent 65%),
    var(--papier);
}
.plama{position:absolute;border-radius:50%;filter:blur(28px);opacity:.5;}
.plama-a{width:34vmax;height:34vmax;left:-10vmax;top:-8vmax;background:var(--plama-1);animation:plyn 22s ease-in-out infinite;}
.plama-b{width:28vmax;height:28vmax;right:-8vmax;top:12vmax;background:var(--plama-2);animation:plyn 27s ease-in-out infinite reverse;}
.plama-c{width:30vmax;height:30vmax;left:18vmax;bottom:-14vmax;background:var(--plama-3);animation:plyn 31s ease-in-out infinite;}
.plama-d{width:18vmax;height:18vmax;right:14vmax;bottom:6vmax;background:var(--marka-2);opacity:.28;animation:plyn 25s ease-in-out infinite reverse;}
@keyframes plyn{0%,100%{transform:translate(0,0) scale(1);}33%{transform:translate(4vmax,-3vmax) scale(1.08);}66%{transform:translate(-3vmax,4vmax) scale(.94);}}

/* ------------------------------------------------------------- pasek */
.pasek{
  position:sticky;top:0;z-index:40;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:10px clamp(14px,3vw,32px);
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(10px);
  border-bottom:var(--ramka) solid var(--ciemny);
}
.marka{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ciemny);}
.marka-znak{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;
  background:var(--marka);border:var(--ramka) solid var(--ciemny);box-shadow:0 4px 0 var(--ciemny);}
.marka-znak svg{width:28px;height:28px;fill:#fff;}
.marka-znak .linia{fill:none;stroke:var(--marka-2);stroke-width:3;stroke-linecap:round;}
.marka-tekst{display:flex;flex-direction:column;font-family:var(--font-naglowki);font-weight:800;
  font-size:1.15rem;line-height:1;}
.marka-tekst small{font-family:var(--font-tekst);font-weight:700;font-size:.68rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--tekst-jasny);}
.btn-pasek{padding:11px 18px !important;font-size:.98rem !important;white-space:nowrap;}
/* Na telefonie „Pełny kurs niemieckiego" łamie się na dwie linijki i przykrywa
   pasek — zostaje samo „Pełny kurs", nazwa języka i tak jest w tytule strony. */
@media(max-width:600px){
  .tylko-szeroko{display:none;}
  .btn-pasek{padding:10px 14px !important;font-size:.88rem !important;min-height:44px;}
  .marka-znak{width:38px;height:38px;}
  .marka-znak svg{width:24px;height:24px;}
  .marka-tekst{font-size:1rem;}
  .marka-tekst small{font-size:.6rem;}
}

/* ------------------------------------------------------------ przyciski */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:52px;padding:14px 26px;
  font-family:var(--font-naglowki);font-weight:800;font-size:1.1rem;
  color:#fff;background:var(--marka);
  border:var(--ramka) solid var(--ciemny);border-radius:999px;
  box-shadow:var(--cien-plaski) var(--ciemny);
  cursor:pointer;text-decoration:none;
  transition:transform .09s ease,box-shadow .09s ease,filter .15s ease;
}
.btn:hover{filter:brightness(1.06);}
.btn:active{transform:translateY(5px);box-shadow:0 1px 0 var(--ciemny);}
.btn:focus-visible{outline:4px solid var(--akcent);outline-offset:3px;}
.btn small{display:block;font-family:var(--font-tekst);font-weight:700;font-size:.72rem;opacity:.9;}
.btn-wielki{min-height:68px;padding:16px 40px;font-size:clamp(1.2rem,2.4vw,1.55rem);box-shadow:0 8px 0 var(--ciemny);}
.btn-wielki:active{transform:translateY(7px);box-shadow:0 1px 0 var(--ciemny);}
.btn-poboczny{background:var(--biel);color:var(--ciemny);}
.btn-tekstowy{background:none;border:0;padding:6px 2px;font-weight:700;font-size:.9rem;
  color:var(--tekst-jasny);text-decoration:underline;cursor:pointer;}
.btn-tekstowy:hover{color:var(--akcent);}
.btn-ikona{display:grid;place-items:center;width:48px;height:48px;flex:0 0 auto;
  background:var(--biel);border:var(--ramka) solid var(--ciemny);border-radius:50%;
  box-shadow:0 4px 0 var(--ciemny);font-size:1.2rem;font-weight:800;cursor:pointer;}
.btn-ikona:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ciemny);}

/* ------------------------------------------------------------- układ */
main{max-width:1240px;margin:0 auto;padding:clamp(20px,4vw,44px) clamp(14px,3vw,32px) 60px;}
.ekran[hidden]{display:none;}
.naglowek-sekcji{font-size:clamp(1.5rem,3.2vw,2.2rem);margin:40px 0 18px;text-align:center;}

/* --------------------------------------------------------------- hero */
.hero{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(16px,3vw,36px);align-items:center;
  text-align:center;justify-items:center;}
@media(min-width:900px){
  .hero{grid-template-columns:minmax(280px,.85fr) minmax(0,1.15fr);text-align:left;justify-items:start;}
}
.hero-maskotka{position:relative;width:clamp(180px,26vw,300px);}
.hero-maskotka .maskotka{width:100%;height:auto;animation:kiwanie 4s ease-in-out infinite;}
@keyframes kiwanie{0%,100%{transform:translateY(0) rotate(-1.5deg);}50%{transform:translateY(-10px) rotate(1.5deg);}}
.dymek{position:absolute;top:-8px;right:-14px;max-width:190px;
  padding:10px 16px;background:var(--biel);border:var(--ramka) solid var(--ciemny);
  border-radius:20px 20px 20px 6px;box-shadow:0 5px 0 var(--ciemny);
  font-family:var(--font-naglowki);font-weight:700;font-size:.95rem;line-height:1.25;}

.plakietka{display:inline-flex;align-items:center;gap:8px;margin:0 0 12px;
  padding:8px 18px;background:var(--marka-2);color:var(--ciemny);
  border:var(--ramka) solid var(--ciemny);border-radius:999px;
  box-shadow:0 4px 0 var(--ciemny);
  font-family:var(--font-naglowki);font-weight:800;font-size:.95rem;}
h1{font-size:clamp(2.1rem,6vw,4.2rem);margin:0 0 12px;}
/* Flagi rysujemy, nie piszemy emoji: Windows nie ma znaków flag i pokazuje
   w ich miejsce gołe litery „DE", co wygląda na zepsutą stronę. */
.flaga-svg{display:inline-block;width:1.5em;height:1em;border-radius:4px;
  border:2px solid var(--ciemny);vertical-align:-.16em;overflow:hidden;}
.plakietka .flaga-svg{width:1.45em;height:.97em;margin-right:.2em;}
.chip .flaga-svg{width:1.35em;height:.9em;}
.stopka-link .flaga-svg,.oferta-nad .flaga-svg{margin-right:.4em;}
.lead{font-size:clamp(1.02rem,1.6vw,1.25rem);color:var(--tekst-jasny);max-width:56ch;font-weight:600;}

.liczby{display:flex;flex-wrap:wrap;gap:12px;list-style:none;margin:22px 0 0;padding:0;}
.liczby li{display:flex;flex-direction:column;align-items:center;min-width:104px;
  padding:12px 16px;background:var(--biel);border:var(--ramka) solid var(--ciemny);
  border-radius:var(--promien-maly);box-shadow:0 5px 0 var(--ciemny);}
.liczby b{font-family:var(--font-naglowki);font-size:1.6rem;line-height:1;color:var(--marka);}
.liczby span{font-size:.8rem;font-weight:700;color:var(--tekst-jasny);}

/* ------------------------------------------------------------ postęp */
.postep-ogolem{margin:36px 0 0;padding:20px 24px;background:var(--biel);
  border:var(--ramka) solid var(--ciemny);border-radius:var(--promien);box-shadow:0 6px 0 var(--ciemny);}
.postep-naglowek{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;}
.postep-tytul{font-family:var(--font-naglowki);font-weight:800;font-size:1.15rem;}
.seria{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;
  background:var(--marka-2);border:2px solid var(--ciemny);font-weight:800;font-size:.92rem;}
.pasek-tor{height:20px;background:#efe9e1;border:2px solid var(--ciemny);border-radius:999px;overflow:hidden;}
.pasek-wypelnienie{height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,var(--marka-2),var(--marka));
  transition:width .4s cubic-bezier(.2,.9,.3,1.2);}
.postep-opis{margin:10px 0 0;font-size:.95rem;font-weight:600;color:var(--tekst-jasny);}

/* ------------------------------------------------------------ zestawy */
.zestawy{display:grid;gap:clamp(12px,1.6vw,18px);
  grid-template-columns:repeat(auto-fill,minmax(168px,1fr));}
@media(min-width:1100px){.zestawy{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));}}
.zestaw{
  position:relative;display:flex;flex-direction:column;gap:6px;
  min-height:150px;padding:16px;text-align:left;
  background:var(--biel);border:var(--ramka) solid var(--ciemny);
  border-radius:var(--promien);box-shadow:0 6px 0 var(--ciemny);
  cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;
}
.zestaw:hover{transform:translateY(-3px);box-shadow:0 9px 0 var(--ciemny);}
.zestaw:active{transform:translateY(3px);box-shadow:0 2px 0 var(--ciemny);}
.zestaw:focus-visible{outline:4px solid var(--akcent);outline-offset:3px;}
.zestaw[aria-pressed="true"]{background:var(--marka);color:#fff;}
.zestaw[aria-pressed="true"] .zestaw-ile,
.zestaw[aria-pressed="true"] .zestaw-stan{color:rgba(255,255,255,.9);}
.zestaw[aria-pressed="true"] .zestaw-tor{background:rgba(255,255,255,.35);}
.zestaw-ikona{font-size:2rem;line-height:1;}
.zestaw-nazwa{font-family:var(--font-naglowki);font-weight:800;font-size:1.08rem;line-height:1.15;}
.zestaw-ile{font-size:.85rem;font-weight:700;color:var(--tekst-jasny);}
.zestaw-tor{margin-top:auto;height:10px;background:#efe9e1;border-radius:999px;overflow:hidden;}
.zestaw-wypelnienie{height:100%;width:0;background:var(--zielony);border-radius:999px;transition:width .4s ease;}
.zestaw-stan{font-size:.78rem;font-weight:700;color:var(--tekst-jasny);}
/* kolorowa rotacja ikon — żeby siatka nie była szara */
.zestaw:nth-child(6n+1) .zestaw-ikona{filter:drop-shadow(0 3px 0 var(--plama-1));}
.zestaw:nth-child(6n+2) .zestaw-ikona{filter:drop-shadow(0 3px 0 var(--plama-2));}
.zestaw:nth-child(6n+3) .zestaw-ikona{filter:drop-shadow(0 3px 0 var(--plama-3));}
.zestaw:nth-child(6n+4) .zestaw-ikona{filter:drop-shadow(0 3px 0 var(--marka-2));}
.zestaw:nth-child(6n+5) .zestaw-ikona{filter:drop-shadow(0 3px 0 var(--policzek));}
.zestaw-znacznik{position:absolute;top:-10px;right:-6px;padding:4px 12px;border-radius:999px;
  background:var(--akcent);color:#fff;border:2px solid var(--ciemny);
  font-family:var(--font-naglowki);font-weight:800;font-size:.78rem;box-shadow:0 3px 0 var(--ciemny);}

/* ---------------------------------------------------------- ustawienia */
.ustawienia{display:grid;gap:18px;margin:28px 0 0;grid-template-columns:minmax(0,1fr);}
@media(min-width:760px){.ustawienia{grid-template-columns:1fr 1fr;}}
.grupa-opcji{margin:0;padding:16px 18px;background:var(--biel);
  border:var(--ramka) solid var(--ciemny);border-radius:var(--promien);box-shadow:0 6px 0 var(--ciemny);}
.grupa-opcji legend{padding:0 8px;font-family:var(--font-naglowki);font-weight:800;font-size:1.05rem;}
.chipsy{display:flex;flex-wrap:wrap;gap:10px;}
.chip{display:inline-flex;flex-direction:column;align-items:center;gap:2px;
  min-height:52px;padding:8px 18px;background:#f6f1ea;color:var(--ciemny);
  border:var(--ramka) solid var(--ciemny);border-radius:999px;
  font-family:var(--font-naglowki);font-weight:800;font-size:1.05rem;cursor:pointer;
  transition:transform .1s ease,background .15s ease;}
.chip small{font-family:var(--font-tekst);font-weight:700;font-size:.72rem;color:var(--tekst-jasny);}
.chip[aria-checked="true"]{background:var(--marka);color:#fff;box-shadow:0 4px 0 var(--ciemny);}
.chip[aria-checked="true"] small{color:rgba(255,255,255,.9);}
.chip:focus-visible{outline:4px solid var(--akcent);outline-offset:3px;}

.start-akcja{display:flex;flex-direction:column;align-items:center;gap:10px;margin:34px 0 0;}
.start-podpis{margin:0;font-weight:700;color:var(--tekst-jasny);text-align:center;}

/* -------------------------------------------------------------- nauka */
.ekran-nauka{display:flex;flex-direction:column;min-height:min(760px,82dvh);}
.nauka-pasek{display:flex;align-items:center;gap:14px;margin-bottom:clamp(12px,2.5vw,24px);}
.pasek-sesji{flex:1;}
.licznik{flex:0 0 auto;min-width:78px;text-align:right;
  font-family:var(--font-naglowki);font-weight:800;font-size:1.15rem;}

.scena{position:relative;display:flex;justify-content:center;align-items:center;flex:1;}
.maskotka-mala{position:absolute;left:0;bottom:0;width:clamp(88px,10vw,150px);display:none;pointer-events:none;}
@media(min-width:1000px){.maskotka-mala{display:block;}}
.maskotka-mala .maskotka{width:100%;height:auto;}

.karta-obszar{width:100%;max-width:820px;perspective:1600px;}
/* Wysokość karty musi mieścić NAJDŁUŻSZY tył: etykieta, hasło, wymowa,
   przycisk dźwięku i ramka z przykładowym zdaniem. Obie strony leżą na sobie
   (position:absolute), więc treść wyższa od karty wypływałaby poza nią —
   stąd większe minimum i awaryjne przewijanie wewnątrz strony karty. */
.karta{width:100%;min-height:clamp(360px,56dvh,520px);cursor:pointer;background:none;border:0;padding:0;}
.karta:focus-visible{outline:4px solid var(--akcent);outline-offset:8px;border-radius:var(--promien);}
.karta-wnetrze{position:relative;width:100%;height:100%;min-height:inherit;
  transform-style:preserve-3d;transition:transform .55s cubic-bezier(.3,1.2,.4,1);}
.karta.odkryta .karta-wnetrze{transform:rotateY(180deg);}
.karta-strona{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;
  padding:56px clamp(18px,4vw,40px) 50px;text-align:center;
  overflow-y:auto;overflow-x:hidden;
  background:var(--biel);border:var(--ramka) solid var(--ciemny);
  border-radius:var(--promien);box-shadow:0 10px 0 var(--ciemny);
  backface-visibility:hidden;-webkit-backface-visibility:hidden;}
.karta-przod{background:
  radial-gradient(120% 80% at 50% -20%,var(--marka-2) 0%,transparent 58%),var(--biel);}
/* Tył nie ma podpowiedzi „kliknij kartę" przyklejonej do dołu, więc nie
   potrzebuje na nią miejsca — bez tego przy dłuższym przykładzie pojawiał się
   na telefonie pasek przewijania w środku karty. */
.karta-tyl{padding-bottom:22px;}
.karta-tyl{transform:rotateY(180deg);scrollbar-width:thin;background:
  radial-gradient(120% 80% at 50% -20%,var(--plama-3) 0%,transparent 58%),var(--biel);}
.karta-etykieta{position:absolute;top:16px;left:50%;transform:translateX(-50%);
  padding:5px 16px;border-radius:999px;background:var(--ciemny);color:#fff;
  font-family:var(--font-naglowki);font-weight:800;font-size:.8rem;letter-spacing:.04em;
  white-space:nowrap;}
.haslo{margin:8px 0 0;font-family:var(--font-naglowki);font-weight:800;
  font-size:clamp(2rem,6.5vw,4rem);line-height:1.08;overflow-wrap:anywhere;}
.haslo-odpowiedz{font-size:clamp(1.7rem,5vw,3.1rem);color:var(--marka);}
.rodzajnik{margin-right:.28em;color:var(--r-m);}
.rodzajnik.r-z{color:var(--r-z);}
.rodzajnik.r-n{color:var(--r-n);}
.wymowa{margin:0;font-family:var(--font-ipa);font-size:clamp(1rem,2vw,1.35rem);
  color:var(--tekst-jasny);font-weight:600;}
.podpowiedz{position:absolute;bottom:18px;margin:0;font-weight:700;font-size:.9rem;
  color:var(--tekst-jasny);opacity:.85;}
.btn-glos{display:grid;place-items:center;width:64px;height:64px;margin-top:6px;
  background:var(--zielony);border:var(--ramka) solid var(--ciemny);border-radius:50%;
  box-shadow:0 5px 0 var(--zielony-cien);cursor:pointer;font-size:1.6rem;}
.btn-glos:active{transform:translateY(4px);box-shadow:0 1px 0 var(--zielony-cien);}
.btn-glos:focus-visible{outline:4px solid var(--akcent);outline-offset:3px;}
.btn-glos.gra .glos-ikona{animation:puls .6s ease-in-out infinite;}
.btn-glos[disabled]{opacity:.35;cursor:not-allowed;}
.btn-glos-maly{width:48px;height:48px;font-size:1.15rem;}
@keyframes puls{0%,100%{transform:scale(1);}50%{transform:scale(1.22);}}

.przyklad{margin-top:14px;padding:14px 18px;background:#f7f3ec;
  border:2px dashed var(--ciemny);border-radius:var(--promien-maly);max-width:46ch;}
.przyklad-obcy{margin:0 0 4px;font-family:var(--font-naglowki);font-weight:700;
  font-size:clamp(1rem,2vw,1.2rem);}
.przyklad-pl{margin:0 0 8px;font-size:.95rem;color:var(--tekst-jasny);font-weight:600;}

.odpowiedzi{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:clamp(16px,3vw,28px);}
.odkryj{display:flex;justify-content:center;margin-top:clamp(16px,3vw,28px);}
.btn-odkryj{min-height:64px;padding:16px 40px;font-size:1.25rem;background:var(--ciemny);}
.btn-nie{background:var(--pomarancz);box-shadow:0 6px 0 var(--pomarancz-cien);}
.btn-nie:active{box-shadow:0 1px 0 var(--pomarancz-cien);}
.btn-tak{background:var(--zielony);box-shadow:0 6px 0 var(--zielony-cien);}
.btn-tak:active{box-shadow:0 1px 0 var(--zielony-cien);}
.odpowiedzi .btn{min-height:74px;flex-direction:column;gap:0;font-size:clamp(1.05rem,2.4vw,1.4rem);}
.skroty{margin:18px 0 0;text-align:center;font-size:.86rem;color:var(--tekst-jasny);font-weight:600;}
.skroty kbd{display:inline-block;padding:2px 8px;background:var(--biel);
  border:2px solid var(--ciemny);border-radius:8px;font-family:var(--font-tekst);
  font-weight:800;font-size:.8rem;box-shadow:0 2px 0 var(--ciemny);}
@media(max-width:700px){
  .skroty{display:none;}
  .haslo{font-size:clamp(1.7rem,8vw,2.6rem);}
  .haslo-odpowiedz{font-size:clamp(1.45rem,7vw,2.2rem);}
  .przyklad{margin-top:10px;padding:11px 13px;}
  .przyklad-pl{font-size:.88rem;}
  .btn-glos{width:56px;height:56px;font-size:1.4rem;}
  .karta-strona{gap:6px;}
}

/* -------------------------------------------------------------- wynik */
.wynik{text-align:center;padding:clamp(22px,4vw,44px);background:var(--biel);
  border:var(--ramka) solid var(--ciemny);border-radius:var(--promien);box-shadow:0 10px 0 var(--ciemny);}
.wynik-maskotka{width:clamp(140px,18vw,210px);margin:0 auto 6px;}
.wynik-maskotka .maskotka{width:100%;height:auto;animation:skok .8s cubic-bezier(.3,1.4,.4,1);}
@keyframes skok{0%{transform:translateY(30px) scale(.8);}60%{transform:translateY(-12px) scale(1.06);}100%{transform:none;}}
.wynik h2{font-size:clamp(1.9rem,5vw,3rem);margin:0 0 6px;}
.gwiazdki{font-size:clamp(1.8rem,4.4vw,2.6rem);letter-spacing:.12em;margin-bottom:8px;}
.gwiazdki .pusta{filter:grayscale(1);opacity:.3;}
.wynik-opis{font-size:1.1rem;font-weight:700;color:var(--tekst-jasny);}
.pudelka{margin:26px auto 0;max-width:640px;}
.pudelka-tytul{margin:0 0 12px;font-family:var(--font-naglowki);font-weight:800;font-size:1.1rem;}
.pudelka-rzad{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;}
.pudelko{padding:12px 4px;background:#f6f1ea;border:2px solid var(--ciemny);
  border-radius:var(--promien-maly);}
.pudelko b{display:block;font-family:var(--font-naglowki);font-size:1.5rem;line-height:1;}
.pudelko span{font-size:.72rem;font-weight:700;color:var(--tekst-jasny);}
.pudelko:nth-child(1){background:#ffe0d6;}
.pudelko:nth-child(2){background:#ffeecb;}
.pudelko:nth-child(3){background:#e8f3d6;}
.pudelko:nth-child(4){background:#d6f0e4;}
.pudelko:nth-child(5){background:#d3ecff;}
.pudelka-opis{margin:12px 0 0;font-size:.9rem;color:var(--tekst-jasny);font-weight:600;}
.wynik-akcje{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:26px;}

/* ------------------------------------------------------------- oferta */
.oferta{margin:clamp(28px,5vw,52px) 0 0;padding:clamp(24px,4vw,44px);
  background:var(--ciemny);color:#fff;
  border:var(--ramka) solid var(--ciemny);border-radius:var(--promien);
  box-shadow:0 10px 0 var(--marka);}
.oferta h3{font-size:clamp(1.6rem,4vw,2.6rem);margin:6px 0 10px;color:#fff;}
.oferta-nad{margin:0;font-family:var(--font-naglowki);font-weight:800;
  font-size:.98rem;letter-spacing:.05em;text-transform:uppercase;color:var(--marka-2);}
.oferta-opis{max-width:62ch;color:rgba(255,255,255,.9);font-weight:600;}
.oferta-liczby{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0 0 22px;padding:0;}
.oferta-liczby li{padding:7px 16px;background:rgba(255,255,255,.12);border:2px solid rgba(255,255,255,.35);
  border-radius:999px;font-weight:800;font-size:.9rem;}
.oferta-przyciski{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
.btn-oferta{background:var(--marka-2);color:var(--ciemny);border-color:#fff;box-shadow:0 8px 0 #fff;}
.btn-oferta:active{box-shadow:0 1px 0 #fff;}
.oferta .btn-poboczny{background:transparent;color:#fff;border-color:#fff;box-shadow:0 6px 0 rgba(255,255,255,.5);}
.oferta-cena{margin:16px 0 0;font-weight:800;color:var(--marka-2);}
.oferta-po-sesji{text-align:center;}
.oferta-po-sesji .oferta-liczby{justify-content:center;}

/* --------------------------------------------------------- wyjaśnienie */
.kafle-info{display:grid;gap:18px;grid-template-columns:minmax(0,1fr);}
@media(min-width:820px){.kafle-info{grid-template-columns:repeat(3,1fr);}}
.kafel-info{padding:24px;background:var(--biel);border:var(--ramka) solid var(--ciemny);
  border-radius:var(--promien);box-shadow:0 6px 0 var(--ciemny);}
.kafel-ikona{display:grid;place-items:center;width:58px;height:58px;margin-bottom:10px;
  background:var(--marka-2);border:var(--ramka) solid var(--ciemny);border-radius:18px;
  box-shadow:0 4px 0 var(--ciemny);font-size:1.7rem;}
.kafel-info h3{font-size:1.3rem;}
.kafel-info p{margin:0;font-weight:600;color:var(--tekst-jasny);}

/* ------------------------------------------------------------- stopka */
.stopka{border-top:var(--ramka) solid var(--ciemny);background:rgba(255,255,255,.72);
  padding:clamp(28px,4vw,44px) clamp(14px,3vw,32px);}
.stopka-siatka{max-width:1240px;margin:0 auto;display:grid;gap:26px;
  grid-template-columns:minmax(0,1fr);}
@media(min-width:760px){.stopka-siatka{grid-template-columns:repeat(3,1fr);}}
.stopka h4{font-size:1.05rem;margin-bottom:10px;}
.stopka-link{display:block;padding:5px 0;font-weight:700;color:var(--ciemny);text-decoration:none;}
a.stopka-link:hover{color:var(--marka);text-decoration:underline;}
.stopka-tu{color:var(--tekst-jasny);font-weight:800;cursor:default;}
.stopka-tekst{font-size:.92rem;color:var(--tekst-jasny);font-weight:600;line-height:1.7;}
.stopka-nota{max-width:1240px;margin:26px auto 0;padding-top:18px;border-top:2px dashed rgba(0,0,0,.18);
  font-size:.85rem;color:var(--tekst-jasny);font-weight:600;}

/* ----------------------------------------------------------- konfetti */
#konfetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:60;display:none;}
#konfetti.leci{display:block;}

/* ---------------------------------------------------------- maskotka */
.maskotka .cien{fill:rgba(0,0,0,.12);}
.maskotka .glowa,.maskotka .ucho{fill:var(--futro);stroke:var(--ciemny);stroke-width:5;}
.maskotka .ucho-w{fill:var(--policzek);stroke:none;}
.maskotka .pysk{fill:var(--pysk);stroke:var(--ciemny);stroke-width:4;}
.maskotka .lysinka{fill:var(--pysk);stroke:none;opacity:.65;}
.maskotka .oko{fill:var(--ciemny);}
.maskotka .blysk{fill:#fff;}
.maskotka .nos{fill:var(--ciemny);}
.maskotka .usta,.maskotka .usta-smutne,.maskotka .kreska{
  fill:none;stroke:var(--ciemny);stroke-width:5;stroke-linecap:round;}
.maskotka .rogi{fill:none;stroke:var(--futro-cien);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;}
.maskotka .jezyk{fill:var(--policzek);stroke:var(--ciemny);stroke-width:3;}
.maskotka .policzki circle{fill:var(--policzek);opacity:.45;}
/* miny — przełączane klasą na <body> */
.maskotka .oczy-zamkniete,.maskotka .usta-smutne{display:none;}
body.mina-radosna .maskotka .oczy{display:none;}
body.mina-radosna .maskotka .oczy-zamkniete{display:block;}
body.mina-radosna .maskotka .policzki circle{opacity:.75;}
body.mina-smutna .maskotka .usta{display:none;}
body.mina-smutna .maskotka .usta-smutne{display:block;}
body.mina-smutna .maskotka .policzki circle{opacity:.2;}

/* ------------------------------------------------------- dostępność */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;}
  .karta-wnetrze{transition:none;}
}
@media(prefers-contrast:more){
  body{background:#fff;}
  .tlo{display:none;}
}

/* ------------------------------------------------------------- konto */
/* Konto jest dobrowolne, więc jego przycisk nie może przykrywać przycisku
   kursu ani rozpychać paska na telefonie — stąd osobny, węższy wariant. */
.pasek-prawa{display:flex;align-items:center;gap:10px;}
.btn-konto{min-height:44px;padding:10px 18px;font-size:.95rem;
  background:var(--biel);color:var(--ciemny);box-shadow:0 4px 0 var(--ciemny);white-space:nowrap;}
.btn-konto.konto-zalogowany{background:var(--zielony);color:#fff;}
.konto-stan{font-size:.78rem;font-weight:700;color:var(--tekst-jasny);white-space:nowrap;}
@media(max-width:760px){
  .konto-stan{display:none;}
  .btn-konto{padding:9px 13px;font-size:.85rem;}
  .pasek-prawa{gap:7px;}
}

.konto-okno{
  width:min(520px,calc(100vw - 28px));padding:0;color:var(--tekst);
  background:var(--biel);border:var(--ramka) solid var(--ciemny);
  border-radius:var(--promien);box-shadow:0 12px 0 var(--ciemny);
  font-family:var(--font-tekst);
}
.konto-okno::backdrop{background:rgba(20,14,10,.55);}
.konto-glowa{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:20px clamp(18px,4vw,28px) 0;}
.konto-glowa h2{margin:0;font-size:1.5rem;}
.konto-okno > *:not(.konto-glowa){padding-left:clamp(18px,4vw,28px);padding-right:clamp(18px,4vw,28px);}
.konto-okno > *:last-child{padding-bottom:22px;}
.konto-wstep{margin:14px 0 18px;font-weight:600;color:var(--tekst-jasny);}
.konto-blad{margin:14px 0 0;padding:11px 14px;border-radius:var(--promien-maly);
  background:#fdecea;border:2px solid #f0b3ac;font-weight:700;font-size:.95rem;}
.konto-zakladki{display:flex;gap:8px;margin-bottom:16px;}
.konto-zakladka{flex:1;min-height:46px;padding:9px 12px;background:#f6f1ea;color:var(--ciemny);
  border:var(--ramka) solid var(--ciemny);border-radius:999px;
  font-family:var(--font-naglowki);font-weight:800;cursor:pointer;}
.konto-zakladka[aria-selected="true"]{background:var(--marka);color:#fff;box-shadow:0 4px 0 var(--ciemny);}
.konto-form{display:flex;flex-direction:column;gap:12px;}
.konto-form label{display:flex;flex-direction:column;gap:5px;font-weight:800;font-size:.92rem;}
.konto-form input{min-height:50px;padding:11px 14px;font:inherit;
  background:#fff;border:var(--ramka) solid var(--ciemny);border-radius:var(--promien-maly);}
.konto-form input:focus-visible{outline:4px solid var(--akcent);outline-offset:2px;}
.konto-form .btn{align-self:flex-start;}
.konto-schowane{display:none;}
.konto-przyciski{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px;}
.konto-przyciski .btn{min-height:46px;padding:11px 18px;font-size:.95rem;}
.btn-usun{background:#c62828;}
.konto-usun{margin-top:18px;border-top:2px dashed rgba(0,0,0,.15);padding-top:14px;}
.konto-usun summary{cursor:pointer;font-weight:800;color:#c62828;}
.konto-drobne{margin:10px 0 0;font-size:.84rem;line-height:1.5;color:var(--tekst-jasny);font-weight:600;}
.konto-stopka-okna{margin-top:18px;}

/* --------------------------------------------- wąskie ekrany: pasek */
/* Pasek trzyma trzy rzeczy, których nie chcemy tracić: znak marki (odnośnik
   na wglowie.net), przycisk konta i przycisk kursu. Przy 380 px nie mieszczą
   się w jednym rzędzie i rozpychały całą stronę w poziomie — dlatego na wąskim
   ekranie prawa grupa schodzi do drugiego rzędu zamiast wypychać zawartość. */
.pasek{flex-wrap:wrap;}
@media(max-width:520px){
  .pasek{gap:8px 10px;padding-bottom:12px;}
  .pasek-prawa{flex:1 0 100%;justify-content:space-between;}
  .btn-konto,.btn-pasek{flex:1 1 auto;justify-content:center;}
  .plakietka{flex-wrap:wrap;justify-content:center;text-align:center;
    font-size:.85rem;padding:8px 14px;}
}
