/* ==========================================================================
   Egzamin8klasa — mapa przygody i lokacje Miasta Wiedzy (arena, stajnia,
   gildia, sklep, tablica, skrzynia, hall of fame) w stylistyce landing
   page'a. Ładowany PO adventure.css, map-world.css i game-gaming.css,
   tylko na szablonach gry. Tokeny (--mint, --gold, --gh-clip, --font-h)
   pochodzą z game-gaming.css / gaming-home.css.

   Zasada wizualna "co się kiedy otwiera":
   - mint   = sukces / postęp / XP (ukończone, dostępne nagrody),
   - gold   = nagroda / następny krok / skarb,
   - pop    = zablokowane / promo / "już wkrótce",
   - locked = przygaszone, szare, przerywana obwódka, etykieta LOCK.
   ========================================================================== */

/* --- Język blokad (wspólny dla miasta, mapy i dialogów) ------------------- */
/* Chip z informacją "kiedy otwarte" — dodawany w markupie kafelków miasta. */
.city-lock-hint{
  display:inline-block;margin-top:9px;padding:4px 9px;
  font-family:var(--font-h);font-size:9px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;
  color:var(--pop-2);border:1px dashed rgba(255,46,136,.5);
  background:rgba(255,46,136,.07);clip-path:var(--gh-clip);
}
/* Kafelek z chipem blokady: przygaszona architektura, neonowa obwódka LOCK. */
.adventure-city-grid .city-place:has(.city-lock-hint){border-style:dashed;border-color:rgba(255,46,136,.4)}
.adventure-city-grid .city-place:has(.city-lock-hint) .city-art{
  filter:grayscale(.45) brightness(.72) drop-shadow(0 9px 9px rgba(8,12,24,.27));
}
.adventure-city-grid .city-place:has(.city-lock-hint)>span:not(.city-building):not(.city-lock-hint){color:var(--muted-2)}
.adventure-city-grid .city-place:has(.city-lock-hint):hover,
.adventure-city-grid .city-place:has(.city-lock-hint):focus-visible{
  border-color:rgba(255,46,136,.7);
  box-shadow:0 0 22px rgba(255,46,136,.18),inset 0 0 24px rgba(255,46,136,.05);
}
/* Zablokowane karty postaci, plecak, odznaki, opcje gildii — jeden język. */
.character-picker-card.is-locked{border-style:dashed;border-color:rgba(255,46,136,.4)}
.character-picker-lock-badge{
  font-family:var(--font-h);letter-spacing:.14em;text-transform:uppercase;font-size:9px;
  color:var(--pop-2);border:1px dashed rgba(255,46,136,.55);background:rgba(13,16,32,.9);
}
.backpack-card.is-locked,.backpack-card.is-mythic-locked{border-style:dashed;border-color:rgba(255,46,136,.35)}
.hall-badge.is-locked{border-style:dashed;border-color:rgba(255,46,136,.3);filter:grayscale(.6);opacity:.55}
.guild-card:disabled{border-style:dashed;border-color:rgba(255,46,136,.35);filter:grayscale(.5)}
.adventure-dialog [disabled]{cursor:not-allowed}

/* --- Mapa świata: markery i pinezki na malowidzie -------------------------- */
.map-world{border-color:var(--line-strong);background:var(--bg-2)}
/* Ciemniejsza poświata pod spodem, żeby szkło czytało się po AA. */
.map-world-shade{
  background:linear-gradient(rgba(6,7,13,.6),transparent 28%,transparent 70%,rgba(6,7,13,.78));
  box-shadow:inset 0 0 80px rgba(6,7,13,.55);
}
.map-world-marker{
  background:#0d1020e6;border:1px solid var(--line-strong);color:var(--mint);
  box-shadow:0 4px 18px rgba(0,0,0,.55),0 0 0 5px rgba(13,16,32,.4);
}
.map-world-pin:hover .map-world-marker{border-color:var(--mint)}
.map-world-pin:focus-visible{outline:2px solid var(--gold);outline-offset:6px}
/* W trakcie = złoto (następny krok), ukończona = mint + poświata. */
.map-world-pin.is-practiced .map-world-marker{
  color:var(--gold);border-color:rgba(255,210,63,.65);
  box-shadow:0 0 18px rgba(255,210,63,.35),0 4px 18px rgba(0,0,0,.55);
  animation:gm-gold-pulse 2.4s ease-in-out infinite;
}
.map-world-pin.is-complete .map-world-marker{
  background:#0d2a24;border-color:var(--mint);color:var(--mint);
  box-shadow:0 0 20px rgba(37,244,200,.4),0 4px 18px rgba(0,0,0,.55);
  animation:none;
}
/* Pinezka z kłódką (marker bez ikony .e8k-icon = realm zablokowany). */
.map-world-marker:not(:has(svg)){
  color:var(--pop-2);border:1px dashed rgba(255,46,136,.6);
  background:rgba(13,16,32,.92);filter:grayscale(.35);
}
.map-world-pin:has(.map-world-marker:not(:has(svg))) .map-world-label small{color:var(--pop-2)}
/* Przyciski-dojazdy: akcenty per lokalizacja. */
.map-world-guild:hover{border-color:rgba(37,244,200,.6);box-shadow:0 0 20px rgba(37,244,200,.2)}
.map-world-exam:hover,.map-world-cke:hover{border-color:rgba(255,210,63,.6);box-shadow:0 0 20px rgba(255,210,63,.2)}
.map-world-cke{border-color:rgba(255,210,63,.4)}
/* Tajemnicza Skrzynia na mapie: złoty pulsar — to cel wyprawy. */
.map-world-treasure{
  border-color:rgba(255,210,63,.55);color:var(--gold);
  background:linear-gradient(135deg,#231c10f2,#0d1020e6);
  box-shadow:0 4px 22px rgba(0,0,0,.55),0 0 22px rgba(255,210,63,.18);
  animation:gm-gold-pulse 2.8s ease-in-out infinite;
}
.map-world-treasure small{color:var(--muted)}
.map-world-treasure:hover{border-color:var(--gold);box-shadow:0 0 30px rgba(255,210,63,.35)}
@keyframes gm-gold-pulse{
  0%,100%{box-shadow:0 4px 22px rgba(0,0,0,.55),0 0 12px rgba(255,210,63,.14)}
  50%{box-shadow:0 4px 22px rgba(0,0,0,.55),0 0 30px rgba(255,210,63,.34)}
}
@media(max-width:680px){
  .map-world-pin{border-radius:0;clip-path:var(--gh-clip)}
  .map-world-treasure{animation:none}
}

/* --- Węzły trasy: kompletowanie stanów (baza w adventure.css) -------------- */
.map-node-orb{
  background:linear-gradient(135deg,#1c2140,#0d1020);
  border:1px solid var(--line-strong);color:var(--primary-2);
  clip-path:var(--gh-clip);border-radius:0;
  box-shadow:0 8px 0 rgba(8,12,22,.5),0 14px 25px rgba(0,0,0,.3);
}
/* Odkryty etap: mint + poświata. */
.map-node[data-status=completed] .map-node-orb{
  background:linear-gradient(135deg,#0d2a24,#123b32);
  border-color:rgba(37,244,200,.6);color:var(--mint);
  box-shadow:0 8px 0 rgba(8,12,22,.5),0 0 24px rgba(37,244,200,.35);
}
.map-node[data-status=completed] b{color:var(--mint)}
/* Twój kolejny krok: złoty pulsar. */
.map-node[data-status=available] .map-node-orb{
  border-color:rgba(255,210,63,.7);color:var(--gold);
  box-shadow:0 8px 0 rgba(8,12,22,.5),0 0 26px rgba(255,210,63,.3);
  animation:gm-node-gold 2.2s ease-in-out infinite;
}
.map-node[data-status=available] .map-node-status{color:var(--gold)}
@keyframes gm-node-gold{
  0%,100%{box-shadow:0 8px 0 rgba(8,12,22,.5),0 0 14px rgba(255,210,63,.22)}
  50%{box-shadow:0 8px 0 rgba(8,12,22,.5),0 0 34px rgba(255,210,63,.5)}
}
/* Zablokowany: przygaszony, przerywana obwódka. */
.map-node[data-status=locked]{color:var(--muted-2)}
.map-node[data-status=locked] .map-node-orb{
  background:#0b0d18;border:1px dashed rgba(111,122,163,.4);color:var(--muted-2);
  box-shadow:0 7px 0 rgba(8,12,22,.5);
}
.map-node[data-status=locked] .map-node-status{color:var(--muted-2)}
/* Boss: złoty marker wyzwania; skrzynia na szlaku: złoty skarb. */
.map-node[data-type=boss] .map-node-orb{color:var(--gold);border-color:rgba(255,210,63,.5)}
.map-node-treasure .map-node-orb,.map-node[data-type=chest] .map-node-orb{
  background:linear-gradient(135deg,#231c10,#171208);
  color:var(--gold);border:1px solid rgba(255,210,63,.6);
  box-shadow:0 8px 0 rgba(8,12,22,.5),0 0 26px rgba(255,210,63,.3);
  animation:gm-node-gold 2.6s ease-in-out infinite;
}
/* Legenda mapy: złoto = kolejny krok, mint = odkryte, szarość = czeka. */
.adventure-map-legend{font-family:var(--font-h);font-size:9px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.adventure-map-legend i{width:8px;height:8px;border-radius:0;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}
.adventure-map-legend .legend-available{background:var(--gold);box-shadow:0 0 10px rgba(255,210,63,.7)}
.adventure-map-legend .legend-completed{background:var(--mint);box-shadow:0 0 10px rgba(37,244,200,.7)}
.adventure-map-legend .legend-locked{background:#3a3f58}

/* --- Krainy: karty wyboru -------------------------------------------------- */
.adventure-realms .realm-card{
  clip-path:var(--gh-clip);border-radius:0;transition:border-color .15s,background .15s,box-shadow .15s;
}
.adventure-realms .realm-card:hover{border-color:rgba(37,244,200,.45);background:#10132a}
.adventure-realms .realm-card b{font-family:var(--font-h);letter-spacing:.02em}
.adventure-realms .realm-card:disabled{border-style:dashed;border-color:rgba(255,46,136,.35);color:var(--muted-2);cursor:not-allowed}

/* --- Miasto Wiedzy: kafelki lokacji ---------------------------------------- */
.adventure-city-grid .city-place{border-radius:0;clip-path:var(--gh-clip)}
/* Neonowa kreska na górze każdego kafelka — akcent per lokalizacja. */
.adventure-city-grid .city-place::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--mint),var(--primary));
  box-shadow:0 0 14px rgba(37,244,200,.5);pointer-events:none;
}
.adventure-city-grid .city-place:hover{
  border-color:rgba(37,244,200,.55);
  box-shadow:0 0 26px rgba(37,244,200,.16),inset 0 0 30px rgba(37,244,200,.05);
}
.adventure-city-grid .city-place>b{
  font-family:var(--font-h);font-weight:700;letter-spacing:.04em;text-transform:uppercase;
}
.adventure-city-grid .city-place>span:last-child{color:var(--muted)}
/* Glimmer na hover: poświata w kolorze akcentu danej lokacji. */
.city-place:hover .city-art-glimmer{opacity:1}
.adventure-city-grid .city-place .city-art{transition:filter .2s}
.adventure-city-grid .city-place:hover .city-art{filter:drop-shadow(0 0 18px rgba(37,244,200,.35))}
/* Akcenty per lokalizacja: mint = nauka/przyjaciele, złoto = nagrody/sklep/
   egzaminy/skrzynia/hala, róż = arena wyzwań, lawenda = tablica zadań. */
.adventure-city-grid .city-guild::before,
.adventure-city-grid .city-stable::before{background:linear-gradient(90deg,var(--mint),#4dd7ff);box-shadow:0 0 14px rgba(37,244,200,.5)}
.adventure-city-grid .city-shop::before,
.adventure-city-grid .city-exams::before,
.adventure-city-grid .city-chest::before,
.adventure-city-grid .city-fame::before{background:linear-gradient(90deg,var(--gold),#ff9d2e);box-shadow:0 0 14px rgba(255,210,63,.5)}
.adventure-city-grid .city-arena::before{background:linear-gradient(90deg,var(--pop),var(--lavender));box-shadow:0 0 14px rgba(255,46,136,.5)}
.adventure-city-grid .city-board::before{background:linear-gradient(90deg,var(--lavender),var(--primary-2));box-shadow:0 0 14px rgba(176,124,255,.5)}
.adventure-city-grid .city-arena:hover{border-color:rgba(255,46,136,.55);box-shadow:0 0 26px rgba(255,46,136,.16)}
.adventure-city-grid .city-arena:hover .city-art{filter:drop-shadow(0 0 18px rgba(255,46,136,.35))}
.adventure-city-grid .city-shop:hover,.adventure-city-grid .city-chest:hover,
.adventure-city-grid .city-fame:hover,.adventure-city-grid .city-exams:hover,
.adventure-city-grid .city-forge:hover{border-color:rgba(255,210,63,.55);box-shadow:0 0 26px rgba(255,210,63,.14)}
.adventure-city-grid .city-shop:hover .city-art,.adventure-city-grid .city-chest:hover .city-art,
.adventure-city-grid .city-fame:hover .city-art,.adventure-city-grid .city-exams:hover .city-art,
.adventure-city-grid .city-forge:hover .city-art{filter:drop-shadow(0 0 18px rgba(255,210,63,.32))}
.adventure-city-grid .city-board:hover{border-color:rgba(176,124,255,.55);box-shadow:0 0 26px rgba(176,124,255,.16)}
.adventure-city-grid .city-board:hover .city-art{filter:drop-shadow(0 0 18px rgba(176,124,255,.35))}

/* --- Dialog: Gildia Magów -------------------------------------------------- */
.adventure-dialog .guild-breadcrumbs{margin-bottom:20px}
.adventure-dialog .guild-breadcrumbs button{
  font-family:var(--font-h);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--mint);border-bottom:1px dashed rgba(37,244,200,.4);padding-bottom:2px;
}
.adventure-dialog .guild-breadcrumbs button:hover{text-shadow:0 0 12px rgba(37,244,200,.6)}
.adventure-dialog .guild-card{
  background:#10132a;border:1px solid var(--line-strong);border-radius:0;clip-path:var(--gh-clip);
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.adventure-dialog .guild-card b{font-family:var(--font-h);letter-spacing:.02em}
.adventure-dialog .guild-card:hover{
  border-color:rgba(37,244,200,.55);transform:translateY(-2px);
  box-shadow:0 0 20px rgba(37,244,200,.18);
}
.adventure-dialog .guild-card:disabled:hover{transform:none;box-shadow:none}
.adventure-dialog .guild-topic-text h3{font-family:var(--font-h)}
.adventure-dialog .guild-quiz-options button{
  background:#10132a;border:1px solid var(--line-strong);border-radius:0;clip-path:var(--gh-clip);
  transition:border-color .15s,box-shadow .15s;
}
.adventure-dialog .guild-quiz-options button:hover:not(:disabled){
  border-color:rgba(37,244,200,.55);box-shadow:0 0 14px rgba(37,244,200,.15);
}
.adventure-dialog .guild-quiz-options button:disabled{opacity:.55}
.adventure-dialog .guild-quiz-options button:focus-visible{outline-color:var(--gold)}
/* Feedback po odpowiedzi: baza to ciemny panel; is-correct = mint + glow,
   is-wrong = złoto (przyjazny błąd ucznia, bez czerwieni). Klasy dokleja
   map-guild.js na podstawie result.correct. */
.adventure-dialog .guild-answer-feedback{
  border:1px solid var(--line-strong);border-left:3px solid var(--muted-2);
  background:#10132a;border-radius:0;clip-path:var(--gh-clip);
}
.adventure-dialog .guild-answer-feedback h3{font-family:var(--font-h);letter-spacing:.04em}
.adventure-dialog .guild-answer-feedback p{color:var(--muted)}
.adventure-dialog .guild-answer-feedback.is-correct{
  border-color:rgba(37,244,200,.35);border-left-color:var(--mint);
  background:rgba(37,244,200,.06);box-shadow:0 0 18px rgba(37,244,200,.12);
}
.adventure-dialog .guild-answer-feedback.is-correct h3{color:var(--mint)}
.adventure-dialog .guild-answer-feedback.is-wrong{
  border-color:rgba(255,210,63,.4);border-left-color:var(--gold);
  background:rgba(255,210,63,.06);box-shadow:0 0 18px rgba(255,210,63,.1);
}
.adventure-dialog .guild-answer-feedback.is-wrong h3{color:var(--gold)}
/* Zablokowana kraina w gildii: pełnoprawny neonowy panel kłódki. */
.adventure-dialog .guild-release-lock{
  margin:14px 0;padding:26px 20px;text-align:center;
  border:1px dashed rgba(255,46,136,.55);border-radius:0;clip-path:var(--gh-clip);
  background:
    radial-gradient(ellipse at 50% 0,rgba(255,46,136,.1),transparent 65%),
    rgba(13,16,32,.85);
}
.adventure-dialog .guild-release-lock>span{
  display:inline-grid;place-items:center;width:56px;height:56px;font-size:26px;
  border:1px solid rgba(255,46,136,.5);background:rgba(255,46,136,.08);
  clip-path:var(--gh-clip);margin-bottom:12px;
}
.adventure-dialog .guild-release-lock h3{
  font-family:var(--font-h);color:var(--ink);letter-spacing:.02em;margin:0 0 8px;
}
.adventure-dialog .guild-release-lock p{color:var(--muted);font-size:13px}
.adventure-dialog .guild-realm-progress{
  font-family:var(--font-h);font-weight:700;color:var(--mint);
  text-shadow:0 0 16px rgba(37,244,200,.4);
}
.adventure-dialog .guild-discoveries{margin:16px 0}
.adventure-dialog .guild-discoveries>span{
  font-family:var(--font-h);font-size:9px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);border:1px solid rgba(255,210,63,.4);background:rgba(255,210,63,.07);
  padding:5px 9px;clip-path:var(--gh-clip);
}

/* --- Dialog: Stajnia ------------------------------------------------------- */
.adventure-dialog .stable-next{
  border:1px solid rgba(124,92,255,.4);border-radius:0;clip-path:var(--gh-clip);
  background:
    radial-gradient(ellipse at 0 0,rgba(124,92,255,.12),transparent 60%),
    rgba(13,16,32,.85);
}
.adventure-dialog .stable-next b{color:var(--primary-2)}
.adventure-dialog .catalog-art:has(.stable-pet-art){
  background:radial-gradient(ellipse at center,rgba(37,244,200,.12),rgba(13,16,32,.9));
  border:1px solid var(--line-strong);border-radius:0;clip-path:var(--gh-clip);
}

/* --- Dialog: Złote Szałasy (sklep) ----------------------------------------- */
.adventure-dialog .shop-intro,.adventure-dialog .shop-closed-note{border-radius:0;clip-path:var(--gh-clip)}
.adventure-dialog .shop-closed-note b{font-family:var(--font-h);letter-spacing:.04em;color:var(--ink)}
.adventure-dialog .shop-section-title{
  font-family:var(--font-h);font-weight:700;letter-spacing:.06em;color:var(--ink);
  border-top:1px solid var(--line);position:relative;padding-top:18px;
}
.adventure-dialog .shop-section-title::after{
  content:'';position:absolute;left:0;top:-1px;width:64px;height:2px;
  background:linear-gradient(90deg,var(--mint),var(--primary));
  box-shadow:0 0 12px rgba(37,244,200,.6);
}
.adventure-dialog .shop-category{
  font-family:var(--font-h);font-size:9px;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;color:var(--primary-2);
}
.adventure-dialog .catalog-item{
  background:#10132a;border:1px solid var(--line);border-radius:0;clip-path:var(--gh-clip);
  transition:border-color .15s,box-shadow .15s;
}
.adventure-dialog .catalog-item:hover{border-color:var(--line-strong);box-shadow:0 0 14px rgba(37,244,200,.1)}
.adventure-dialog .catalog-item b{font-family:var(--font-h);letter-spacing:.02em}

/* --- Dialog: Plecak (uzupełnienia, reszta w game-gaming.css) --------------- */
.adventure-dialog .backpack-heading{font-family:var(--font-h);letter-spacing:.04em;color:var(--ink)}
.adventure-dialog .backpack-card{border-radius:0;clip-path:var(--gh-clip)}

/* --- Dialog: Tablica zadań ------------------------------------------------- */
.adventure-dialog .quest-card{
  border:1px solid rgba(255,210,63,.35);border-radius:0;clip-path:var(--gh-clip);
  background:
    radial-gradient(ellipse at 100% 0,rgba(255,210,63,.09),transparent 60%),
    linear-gradient(130deg,rgba(255,210,63,.05),rgba(124,92,255,.05)),#0d1020;
}
.adventure-dialog .quest-card h3{font-family:var(--font-h);letter-spacing:.02em}
.adventure-dialog .quest-rules{
  border-top:1px dashed var(--line-strong);color:var(--muted);
}
.adventure-dialog .quest-rules summary{
  font-family:var(--font-h);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);
}
/* Fallback tablicy (bez WebGL): z pergamenu na ciemny złoty plakat. */
.adventure-dialog .quest-fallback{
  color:var(--gold);background:linear-gradient(110deg,#171208,#0d1020);
  border:6px double rgba(255,210,63,.45);border-radius:0;clip-path:var(--gh-clip);
  font-family:var(--font-h);
}

/* --- Dialog: Hall of Fame -------------------------------------------------- */
.adventure-dialog .hall-badge{border-radius:0;clip-path:var(--gh-clip)}
.adventure-dialog .hall-collection{gap:12px}

/* --- Dialog: Egzaminy CKE (źródła arkuszy) --------------------------------- */
.adventure-dialog .exam-source-panel{
  border:1px solid var(--line-strong);border-radius:0;clip-path:var(--gh-clip);
  background:rgba(13,16,32,.85);
}
.adventure-dialog .exam-source-panel>p{color:var(--ink)}
.adventure-dialog .exam-source-panel small{color:var(--muted)}
.adventure-dialog .exam-source-pdf{
  border:1px solid var(--line);border-radius:0;background:#0a0c16;
}

/* --- Postęp w krainach / notatki -------------------------------------------- */
.map-evidence-details>summary{
  font-family:var(--font-h);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--mint);
}
.adventure-map .map-learning-evidence,.map-learning-evidence{border-radius:0;clip-path:var(--gh-clip)}
.map-learning-evidence h3{font-family:var(--font-h);letter-spacing:.02em}
.map-evidence-realms>div{border-left:1px solid rgba(255,210,63,.4)}
.map-evidence-realms b{font-family:var(--font-h);letter-spacing:.02em}
/* "Już wkrótce" — jednoznacznie różowe, przerywane, bez złudzeń. */
.coming-soon-note{
  border:1px dashed rgba(255,46,136,.45);background:rgba(255,46,136,.05);color:var(--muted);
  border-radius:0;clip-path:var(--gh-clip);
}

/* --- Dostępność ruchu -------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  .map-world-pin.is-practiced .map-world-marker,
  .map-world-treasure,
  .map-node[data-status=available] .map-node-orb,
  .map-node-treasure .map-node-orb,.map-node[data-type=chest] .map-node-orb{animation:none}
  .adventure-city-grid .city-place,.adventure-city-grid .city-place .city-art,
  .adventure-dialog .guild-card,.adventure-dialog .catalog-item{transition:none}
}


/* ==========================================================================
   Egzaminy CKE (przeprojektowanie layoutu, mobile-first 360px)
   - .exam-goal   = kompaktowy chip celu (mint liczby, gold gdy gotowe),
   - .exam-cke-badge = mały złoty chip "Prawdziwy arkusz CKE",
   - .exam-opts/.exam-opt = duże klikalne odpowiedzi (radio → przyciski),
   - .btn-gold    = pełno szerokość, złota obwódka (oddanie arkusza),
   - .exam-attempt = rzędy podejść z chipem statusu po prawej,
   - .exam-source = audio/PDF zwinięte w <details>, oszczędza ekran.
   ========================================================================== */
.adventure-dialog .exam-goal{
  display:block;margin:0 0 10px;padding:8px 12px;
  font-family:var(--font-h);font-size:10px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--line-strong);background:rgba(13,16,32,.85);
  clip-path:var(--gh-clip);font-variant-numeric:tabular-nums;
}
.adventure-dialog .exam-goal b{color:var(--mint);text-shadow:0 0 12px rgba(37,244,200,.45)}
.adventure-dialog .exam-goal.is-done{border-color:rgba(255,210,63,.5);background:rgba(255,210,63,.06)}
.adventure-dialog .exam-goal.is-done b{color:var(--gold);text-shadow:0 0 12px rgba(255,210,63,.45)}
.adventure-dialog .exam-goal-ic{margin-right:4px}
/* Złoty chip "prawdziwy arkusz/zadanie CKE" — pojawia się nad ekranami. */
.adventure-dialog .exam-cke-badge{
  display:inline-flex;align-items:center;gap:6px;margin:0 0 10px;padding:4px 10px;
  font-family:var(--font-h);font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);border:1px solid rgba(255,210,63,.45);background:rgba(255,210,63,.07);
  clip-path:var(--gh-clip);
}
/* HUD zadania: "Zadanie X / N · N pkt · stan" — Chakra Petch, mint, tabular. */
.adventure-dialog .exam-hud{
  margin:10px 0;font-family:var(--font-h);font-size:11px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2);
  font-variant-numeric:tabular-nums;
}
.adventure-dialog .exam-hud b{color:var(--mint);text-shadow:0 0 12px rgba(37,244,200,.4)}
/* --- Odpowiedzi zamknięte: duże przyciski zamiast radio ------------------- */
.adventure-dialog .exam-opts{display:grid;gap:10px;margin:12px 0 14px}
.adventure-dialog .exam-opt{
  display:flex;align-items:flex-start;gap:12px;width:100%;min-height:48px;
  padding:12px 14px;text-align:left;cursor:pointer;
  background:#10132a;border:1px solid var(--line-strong);border-radius:0;
  clip-path:var(--gh-clip);color:var(--ink);font:inherit;font-size:15px;line-height:1.4;
  transition:border-color .15s,box-shadow .15s,background .15s;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.adventure-dialog .exam-opt-key{
  flex:0 0 28px;width:28px;height:28px;display:grid;place-items:center;margin-top:1px;
  border:1px solid rgba(37,244,200,.5);color:var(--mint);background:rgba(37,244,200,.06);
  font-family:var(--font-h);font-size:12px;font-weight:700;clip-path:var(--gh-clip);
}
.adventure-dialog .exam-opt-text{flex:1;min-width:0}
/* Odpowiedzi-obrazki z pełnych arkuszy CKE (choiceImages): kafelki w siatce. */
.adventure-dialog .exam-opts.has-images{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.adventure-dialog .exam-opts.has-images .exam-opt{flex-direction:column;align-items:center;text-align:center}
.adventure-dialog .exam-opts.has-images .exam-opt img{max-width:100%;max-height:160px;background:#fff;padding:4px}
.adventure-dialog .exam-opt:hover:not(:disabled){
  border-color:rgba(37,244,200,.55);box-shadow:0 0 14px rgba(37,244,200,.15);
}
.adventure-dialog .exam-opt.is-selected{
  border-color:var(--mint);background:rgba(37,244,200,.09);
  box-shadow:0 0 18px rgba(37,244,200,.28),inset 0 0 18px rgba(37,244,200,.06);
}
.adventure-dialog .exam-opt.is-selected .exam-opt-key{background:var(--mint);color:#06231c}
.adventure-dialog .exam-opt:disabled{cursor:default;opacity:.7}
.adventure-dialog .exam-opt.is-selected:disabled{opacity:1}
.adventure-dialog .exam-opt:focus-visible{outline-color:var(--gold)}
/* --- Treść zadania --------------------------------------------------------- */
.adventure-dialog .exam-prompt{margin:12px 0 6px;font-family:var(--font-h);letter-spacing:.02em}
.adventure-dialog .exam-material{
  margin:8px 0 12px;padding:12px 14px;white-space:pre-wrap;
  background:#0d1020;border:1px solid var(--line);color:var(--ink);
  clip-path:var(--gh-clip);font-size:14px;line-height:1.55;
}
/* --- Pola otwarte: textarea + zdjęcie -------------------------------------- */
.adventure-dialog .exam-field{display:block;margin:12px 0;font-family:var(--font-h);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.adventure-dialog textarea[data-exam-text]{
  display:block;width:100%;margin-top:6px;padding:12px 14px;min-height:150px;resize:vertical;
  background:#0a0c16;border:1px solid var(--line-strong);color:var(--ink);
  clip-path:var(--gh-clip);font:inherit;font-size:15px;line-height:1.5;letter-spacing:normal;text-transform:none;
}
.adventure-dialog textarea[data-exam-text]:focus{outline:none;border-color:var(--mint);box-shadow:0 0 14px rgba(37,244,200,.2)}
.adventure-dialog input[data-exam-photo]{
  display:block;width:100%;margin-top:6px;padding:10px;
  background:#0a0c16;border:1px dashed var(--line-strong);color:var(--muted);
  clip-path:var(--gh-clip);font-size:13px;
}
.adventure-dialog .exam-photo-state{margin:4px 0 0;font-size:12px;color:var(--mint)}
/* --- Linki tekstowe (lista arkuszy, bank zadań, zamknij) ------------------- */
.adventure-dialog .exam-links{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0 0 12px}
.adventure-dialog .exam-link{
  display:inline-block;padding:0;background:none;border:0;cursor:pointer;
  font-family:var(--font-h);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:rgba(151,161,198,.4);
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.adventure-dialog .exam-link:hover{color:var(--mint);text-decoration-color:var(--mint)}
.adventure-dialog .exam-link:focus-visible{outline-color:var(--gold)}
.adventure-dialog .exam-close-link{display:block;margin:16px auto 0;text-align:center}
/* --- Nawigacja runnera: max 3 przyciski ------------------------------------ */
.adventure-dialog .exam-nav{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 10px}
/* Złoty przycisk oddania — obwódka + poświata, bez gradientu primary. */
.adventure-dialog .btn-gold{
  display:block;width:100%;margin:4px 0 0;padding:13px 18px;cursor:pointer;
  font-family:var(--font-h);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);background:rgba(255,210,63,.06);
  border:1px solid rgba(255,210,63,.6);border-radius:0;clip-path:var(--gh-clip);
  transition:border-color .15s,box-shadow .15s,background .15s;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.adventure-dialog .btn-gold:hover:not(:disabled){
  border-color:var(--gold);background:rgba(255,210,63,.12);
  box-shadow:0 0 22px rgba(255,210,63,.3);
}
.adventure-dialog .btn-gold:focus-visible{outline-color:var(--gold)}
/* --- Karty arkuszy i podejścia --------------------------------------------- */
.adventure-dialog .exam-paper-btn{margin-top:8px;padding:8px 14px;font-size:10px}
.adventure-dialog .exam-subhead{
  margin:18px 0 8px;padding-top:14px;border-top:1px dashed var(--line-strong);
  font-family:var(--font-h);letter-spacing:.04em;color:var(--ink);
}
.adventure-dialog .exam-empty{margin:4px 0;color:var(--muted-2);font-size:13px}
.adventure-dialog .exam-attempt{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  width:100%;margin:0 0 8px;padding:11px 12px;cursor:pointer;text-align:left;
  background:#10132a;border:1px solid var(--line);border-radius:0;clip-path:var(--gh-clip);
  color:var(--ink);font-size:13px;line-height:1.35;
  transition:border-color .15s,box-shadow .15s;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.adventure-dialog .exam-attempt:hover{border-color:var(--line-strong);box-shadow:0 0 12px rgba(37,244,200,.1)}
.adventure-dialog .exam-attempt:focus-visible{outline-color:var(--gold)}
.adventure-dialog .exam-attempt-title{flex:1;min-width:0}
.adventure-dialog .exam-attempt-status{
  flex:0 0 auto;padding:3px 8px;white-space:nowrap;
  font-family:var(--font-h);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--mint);border:1px solid rgba(37,244,200,.35);background:rgba(37,244,200,.06);
  clip-path:var(--gh-clip);
}
/* --- Źródła: audio otwarte, PDF domyślnie zwinięty -------------------------- */
.adventure-dialog .exam-source{
  margin:10px 0;border:1px solid var(--line);background:rgba(13,16,32,.85);
  clip-path:var(--gh-clip);
}
.adventure-dialog .exam-source>summary{
  cursor:pointer;list-style:none;padding:10px 12px;
  font-family:var(--font-h);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold);
}
.adventure-dialog .exam-source>summary::-webkit-details-marker{display:none}
.adventure-dialog .exam-source>summary::before{content:'▸ ';color:var(--muted-2)}
.adventure-dialog .exam-source[open]>summary{border-bottom:1px solid var(--line)}
.adventure-dialog .exam-source[open]>summary::before{content:'▾ '}
.adventure-dialog .exam-source>summary a{
  color:var(--muted);text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:rgba(151,161,198,.4);
}
.adventure-dialog .exam-source>summary a:hover{color:var(--gold)}
.adventure-dialog .exam-source .exam-source-panel{
  border:0;clip-path:none;background:transparent;padding:10px 12px;
}
.adventure-dialog .exam-source audio{display:block;width:100%;margin:4px 0 8px}
/* --- Dostępność ruchu -------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  .adventure-dialog .exam-opt,.adventure-dialog .exam-attempt,
  .adventure-dialog .btn-gold{transition:none}
}


/* ==========================================================================
   CONTENT/UX UPDATE — zagadki w Arenie + linki pomocnicze w mieście
   Właściciel zmian: zadania content/UX (js/adventure.js, js/full-exams.js,
   js/map-guild.js, partials/zagadki.html.twig). Base styles (.zad-card,
   .zad-toggle, .zad-rozwiazanie, .lekt-kicker, .lekt-link, .exam-link)
   pochodzą z e8k.css / lektury-gaming.css — tu TYLKO dopasowanie kontekstu
   dialogu Miasta Wiedzy, bez nadpisywania ich definicji.
   ========================================================================== */

/* --- Zagadki na rozgrzewkę (szczyt dialogu Areny) ---------------------------
   Karty z partiala zagadki.html.twig renderowane przez arenaZagadkiHTML()
   w adventure.js. W dialogu ma być jedna zwarta kolumna, nie siatka 2-kol
   z .kp-grid — inaczej 6 kart zasłoniłoby samo pytanie. */
.adventure-dialog .arena-zagadki{margin:0 0 14px;padding-bottom:10px;border-bottom:1px dashed var(--line-strong)}
.adventure-dialog .arena-zagadki .lekt-kicker{margin:0 0 10px}
.adventure-dialog .arena-zagadki .kp-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:0}
.adventure-dialog .arena-zagadki .zad-card{padding:14px 16px;box-shadow:none}
.adventure-dialog .arena-zagadki .kp-head{margin-bottom:8px}
.adventure-dialog .arena-zagadki .zad-tresc{font-size:.9rem;margin-bottom:10px}
.adventure-dialog .arena-zagadki .zad-toggle{margin-top:0}
.adventure-dialog .arena-zagadki .zad-rozwiazanie{margin-top:12px;padding-top:12px}
.adventure-dialog .arena-zagadki .zad-rozwiazanie p{font-size:.85rem;line-height:1.5;margin:0 0 8px}
.adventure-dialog .arena-zagadki .zad-rozwiazanie p:last-child{margin-bottom:0}

/* --- „Wersja do druku (PDF)” / „Nagranie” pod kartami arkuszy ---------------
   Rządek małych linków (full-exams.js, klasa .exam-paper-links) — bazuje na
   .exam-link z sekcji egzaminów powyżej, tu tylko odstępy i układ. */
.adventure-dialog .exam-paper-links{display:flex;flex-wrap:wrap;gap:4px 16px;margin:8px 0 0}
.adventure-dialog .exam-paper-links .exam-link{font-size:9px;letter-spacing:.1em}

/* --- Gildia: link tekstowy „Pełna ścieżka klasy 4–8” ------------------------
   Pod siatką królestw (widok przedmiotu) i pod intro krainy lektur
   (map-guild.js). .lekt-link jest buttonowo-neutralny, jako <a> potrzebuje
   tylko wyśrodkowanego opakowania. */
.adventure-dialog .lekt-link-wrap{margin:16px 0 0;text-align:center}
.adventure-dialog .lekt-link-wrap .lekt-link{display:inline-block;text-decoration:none}

/* --- Poziomy trudności (Gildia) ------------------------------------------------
   Odznaka .topic-level doklejana przez map-guild.js na początku małej linii
   karty tematu (obok „Już ćwiczone” / „Odkryj materiał”). Kolor po numerze
   poziomu (1–4), typografia Chakra Petch uppercase jak w HUD. Legenda nad
   siatką tematów jest jedną stonowaną linią; renderuje się tylko gdy któryś
   temat krainy ma poziom (dane z MapLearningPath::build). */
.adventure-dialog .topic-level{
  display:inline-block;font-family:var(--font-h);font-size:9px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;line-height:1;
  padding:3px 6px 2px;margin-right:2px;vertical-align:1px;
  border:1px solid var(--line-strong);clip-path:var(--gh-clip);
  transition:border-color .15s,box-shadow .15s;
}
.adventure-dialog .topic-level-1{color:#89efd0;border-color:rgba(37,244,200,.4)}
.adventure-dialog .topic-level-2{color:#f2d391;border-color:rgba(242,211,145,.4)}
.adventure-dialog .topic-level-3{color:#ff9e5e;border-color:rgba(255,158,94,.45)}
.adventure-dialog .topic-level-4{color:#ff4f8b;border-color:rgba(255,46,136,.5)}
.adventure-dialog .guild-card:hover .topic-level{box-shadow:0 0 10px currentColor}
.adventure-dialog .guild-card:disabled .topic-level{opacity:.6}
.adventure-dialog .guild-level-legend{
  margin:14px 0 0;font-size:11px;letter-spacing:.04em;color:var(--muted);
  font-family:var(--font-h);text-transform:none;
}

/* --- Dostępność ruchu -------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  .adventure-dialog .arena-zagadki .zad-card,
  .adventure-dialog .exam-paper-links .exam-link,
  .adventure-dialog .lekt-link-wrap .lekt-link,
  .adventure-dialog .topic-level{transition:none}
}
/* Zagadka skrzyni: etykieta nad polem, a podświetlenie fokusu w obrysie pola — globalne outline-offset:4px
   nachodziło na tekst „Twoja odpowiedź” stojący tuż obok. */
.adventure-dialog .map-event-answer{display:flex;flex-direction:column;gap:8px;max-width:220px;margin:4px 0 12px}
.adventure-dialog .map-event-answer>span{font-size:14px;color:var(--muted)}
.adventure-dialog .map-event-answer input{box-sizing:border-box;width:100%;min-height:48px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:12px;background:#0a0d1c;color:var(--ink);font:inherit;font-size:20px;font-weight:700;letter-spacing:.08em}
.adventure-dialog .map-event-answer input:focus,.adventure-dialog .map-event-answer input:focus-visible{outline:none;border-color:var(--mint);box-shadow:0 0 0 2px rgba(37,244,200,.35)}
