// Mock data for the RPG You prototype

const CATEGORIES = [
  { id: "feedback", label: "Feedback" },
  { id: "hard-talks", label: "Trudne rozmowy" },
  { id: "negotiation", label: "Negocjacje" },
  { id: "leadership", label: "Leadership" },
  { id: "communication", label: "Komunikacja" },
  { id: "change", label: "Zmiana" },
];

const SERIES = [
  { id: "trudne-rozmowy", title: "Trudne rozmowy z pracownikiem", host: "Joanna Malinowska", category: "hard-talks", episodes: 5, hue: "default",
    desc: "Empatyczna i asertywna komunikacja pozwala udzielić dobrego feedbacku, docierać do pracownika z trudnym komunikatem i zachować jednocześnie relację opartą na szacunku." },
  { id: "leadership-s4", title: "Leadership Skills — Sezon 4", host: "Vivek Antonio", category: "leadership", episodes: 10, hue: "teal",
    desc: "Odkryj więcej kluczowych umiejętności i modeli, które przynoszą sukces w dynamicznym świecie biznesu. Zdobądź niezbędne narzędzia, by przewodzić zespołom i skutecznie wprowadzać zmiany." },
  { id: "zarzadzanie-zmiana", title: "Zarządzanie Zmianą — Sezon 2", host: "Tomasz Krajewski", category: "change", episodes: 14, hue: "amber",
    desc: "W każdej organizacji zmiany wywołują w pracownikach skrajne emocje. Wymagają także od lidera, by potrafił okazywać wsparcie, odpowiednio prowadząc zespół przez kolejne fazy transformacji." },
  { id: "rozmowy-poglebione", title: "Rozmowy Pogłębione — Sezon 2", host: "Maciej Orłoś", category: "communication", episodes: 10, hue: "default",
    desc: "Głównym celem rozmowy pogłębionej jest wpłynięcie na rozmówcę i przekonanie go do swojego punktu widzenia. Zobacz jak rozmawiać i argumentować swoje wybory, aby wywierać wpływ na ludzi." },
  { id: "zwinne-przywodztwo", title: "Zwinne i empatyczne przywództwo", host: "Anna Dąbrowska", category: "leadership", episodes: 10, hue: "teal",
    desc: "Seria, która pomoże Ci stać się liderem, za którym ludzie naprawdę chcą iść. Dowiesz się, jak rozwijać siebie i innych, jak budować relacje oparte na zaufaniu." },
  { id: "fundamenty-lidera", title: "Fundamenty skutecznego lidera", host: "Andrzej Borcz", category: "feedback", episodes: 15, hue: "default",
    desc: "Praktyczny kurs, który w prosty sposób wyjaśni fundamenty skutecznego przywództwa. Od oczekiwań pracowników względem lidera, przez Killerów efektywności, aż po standard Leadership 734." },
];

const EPISODES = [
  // Seria 1 — Trudne rozmowy
  { id: "ep-tr-1", series: "trudne-rozmowy", n: 1, title: "Trudne sytuacje — przyczyny", duration: "11 min", skills: [] },
  { id: "ep-tr-2", series: "trudne-rozmowy", n: 2, title: "Komunikacja bez przemocy", duration: "8 min", skills: ["s-nvc"] },
  { id: "ep-tr-3", series: "trudne-rozmowy", n: 3, title: "Ageizm i adultyzm — jak zapobiegać?", duration: "7 min", skills: [] },
  { id: "ep-tr-4", series: "trudne-rozmowy", n: 4, title: "Rozmowa oceniająca SOOP", duration: "9 min", skills: ["s-soop"] },
  { id: "ep-tr-5", series: "trudne-rozmowy", n: 5, title: "Asertywna odmowa", duration: "7 min", skills: ["s-asertywna-odmowa"] },
  // Seria 2 — Leadership S4
  { id: "ep-ls-1",  series: "leadership-s4", n: 1,  title: "Przygotuj się na zmiany", duration: "4 min", skills: [] },
  { id: "ep-ls-2",  series: "leadership-s4", n: 2,  title: "Pomóż zaakceptować", duration: "6 min", skills: [] },
  { id: "ep-ls-3",  series: "leadership-s4", n: 3,  title: "4 dyscypliny realizacji", duration: "8 min", skills: [] },
  { id: "ep-ls-4",  series: "leadership-s4", n: 4,  title: "Odpowiedzialność siłą napędową zespołu", duration: "5 min", skills: ["s-delegacja"] },
  { id: "ep-ls-5",  series: "leadership-s4", n: 5,  title: "Moc struktury i prostoty w komunikacji", duration: "5 min", skills: ["s-struktura"] },
  { id: "ep-ls-6",  series: "leadership-s4", n: 6,  title: "Storytelling — daj się zapamiętać", duration: "6 min", skills: ["s-storytelling"] },
  { id: "ep-ls-7",  series: "leadership-s4", n: 7,  title: "Użyj danych, by opowiedzieć historię", duration: "3 min", skills: [] },
  { id: "ep-ls-8",  series: "leadership-s4", n: 8,  title: "Budowanie zrozumienia w czasach kryzysu", duration: "7 min", skills: [] },
  { id: "ep-ls-9",  series: "leadership-s4", n: 9,  title: "Bezpieczeństwo psychologiczne", duration: "11 min", skills: ["s-bezpieczenstwo"] },
  { id: "ep-ls-10", series: "leadership-s4", n: 10, title: "Stawiaj małe kroki, osiągaj wielkie rezultaty", duration: "6 min", skills: [] },
  // Seria 3 — Zarządzanie Zmianą
  { id: "ep-zm-1",  series: "zarzadzanie-zmiana", n: 1,  title: "Pora na zmiany", duration: "9 min", skills: ["s-change-kom"] },
  { id: "ep-zm-2",  series: "zarzadzanie-zmiana", n: 2,  title: "Siedem cech osobowości", duration: "8 min", skills: [] },
  { id: "ep-zm-3",  series: "zarzadzanie-zmiana", n: 3,  title: "Krzywa zmiany Fishera", duration: "2 min", skills: [] },
  { id: "ep-zm-4",  series: "zarzadzanie-zmiana", n: 4,  title: "Proces wdrażania zmian", duration: "4 min", skills: [] },
  { id: "ep-zm-5",  series: "zarzadzanie-zmiana", n: 5,  title: "Faza oporu — bunt na pokładzie", duration: "10 min", skills: ["s-change-opor"] },
  { id: "ep-zm-6",  series: "zarzadzanie-zmiana", n: 6,  title: "Faza próby — niepewność i nadzieja", duration: "4 min", skills: [] },
  { id: "ep-zm-7",  series: "zarzadzanie-zmiana", n: 7,  title: "Faza adaptacji — zadowolenie i satysfakcja", duration: "3 min", skills: [] },
  { id: "ep-zm-8",  series: "zarzadzanie-zmiana", n: 8,  title: "Koncepcja Tuckmana", duration: "4 min", skills: [] },
  { id: "ep-zm-9",  series: "zarzadzanie-zmiana", n: 9,  title: "Paktowanie z zespołem", duration: "5 min", skills: ["s-paktowanie"] },
  { id: "ep-zm-10", series: "zarzadzanie-zmiana", n: 10, title: "Podważanie roli lidera", duration: "8 min", skills: [] },
  // Seria 4 — Rozmowy Pogłębione
  { id: "ep-rp-1",  series: "rozmowy-poglebione", n: 1,  title: "Zmiana myślenia", duration: "8 min", skills: [] },
  { id: "ep-rp-2",  series: "rozmowy-poglebione", n: 2,  title: "Wywieranie wpływu", duration: "7 min", skills: ["s-wplyw"] },
  { id: "ep-rp-3",  series: "rozmowy-poglebione", n: 3,  title: "Wydźwięk ciszy", duration: "4 min", skills: ["s-cisza"] },
  { id: "ep-rp-4",  series: "rozmowy-poglebione", n: 4,  title: "Rozmowa o pracę", duration: "6 min", skills: ["s-wynagrodzenie"] },
  { id: "ep-rp-5",  series: "rozmowy-poglebione", n: 5,  title: "Partnerstwo w rozmowie", duration: "8 min", skills: [] },
  { id: "ep-rp-6",  series: "rozmowy-poglebione", n: 6,  title: "Rozpraszacze", duration: "6 min", skills: [] },
  { id: "ep-rp-7",  series: "rozmowy-poglebione", n: 7,  title: "Odpowiednie nastawienie", duration: "7 min", skills: [] },
  { id: "ep-rp-8",  series: "rozmowy-poglebione", n: 8,  title: "Osiąganie celu", duration: "6 min", skills: ["s-negocjacja"] },
  { id: "ep-rp-9",  series: "rozmowy-poglebione", n: 9,  title: "Pierwsze wrażenie", duration: "5 min", skills: [] },
  { id: "ep-rp-10", series: "rozmowy-poglebione", n: 10, title: "Podejmowanie decyzji", duration: "5 min", skills: [] },
  // Seria 5 — Zwinne przywództwo
  { id: "ep-zp-1", series: "zwinne-przywodztwo", n: 1, title: "Kształtuj w sobie pragnienie ciągłej przemiany", duration: "9 min", skills: [] },
  { id: "ep-zp-2", series: "zwinne-przywodztwo", n: 2, title: "Wykształć właściwy obraz siebie jako lidera", duration: "10 min", skills: [] },
  { id: "ep-zp-3", series: "zwinne-przywodztwo", n: 3, title: "Nieustannie wyposażaj ludzi", duration: "9 min", skills: [] },
  { id: "ep-zp-4", series: "zwinne-przywodztwo", n: 4, title: "Przejdź z nastawienia na cel do koncentracji na wzrost", duration: "12 min", skills: [] },
  { id: "ep-zp-5", series: "zwinne-przywodztwo", n: 5, title: "Najpierw koncentruj się na wartości", duration: "9 min", skills: [] },
  // Seria 6 — Fundamenty lidera
  { id: "ep-fl-1", series: "fundamenty-lidera", n: 1, title: "Skuteczny CEO — czyli jaki?", duration: "6 min", skills: [] },
  { id: "ep-fl-2", series: "fundamenty-lidera", n: 2, title: "Trzy nici relacji pomiędzy pracodawcą a pracownikiem", duration: "7 min", skills: [] },
  { id: "ep-fl-3", series: "fundamenty-lidera", n: 3, title: "Satysfakcja z pracy — fakty", duration: "5 min", skills: [] },
  { id: "ep-fl-4", series: "fundamenty-lidera", n: 4, title: "10 oczekiwań pracowników względem lidera", duration: "8 min", skills: ["s-feedback-rozwoj"] },
  { id: "ep-fl-5", series: "fundamenty-lidera", n: 5, title: "Silosy — My i Oni", duration: "9 min", skills: [] },
  { id: "ep-fl-6", series: "fundamenty-lidera", n: 6, title: "Improwizowane Przywództwo", duration: "7 min", skills: [] },
  { id: "ep-fl-7", series: "fundamenty-lidera", n: 7, title: "Opinie zamiast Faktów", duration: "6 min", skills: ["s-feedback-trudny"] },
  { id: "ep-fl-8", series: "fundamenty-lidera", n: 8, title: "Why, How i Who — trzy najważniejsze zadania skutecznego CEO", duration: "9 min", skills: [] },
];

const SKILLS = [
  // Trudne rozmowy
  { id: "s-asertywna-odmowa", cat: "hard-talks", name: "Asertywna odmowa", level: "Średni", time: "8 min", ep: "ep-tr-5",
    criteria: [
      "Jasno wyraża odmowę bez „może”, „spróbuję”, „zobaczę”",
      "Uzasadnia odmowę konkretnym powodem (nie pretekstem)",
      "Zachowuje szacunek wobec rozmówcy (bez ataku, bez nadmiarowych przeproszeń)",
      "Proponuje alternatywę lub wyraźnie mówi że nie ma alternatywy",
    ]},
  { id: "s-nvc", cat: "hard-talks", name: "Komunikacja bez przemocy (NVC)", level: "Średni", time: "10 min", ep: "ep-tr-2",
    criteria: [
      "Opisuje obserwację (fakt), nie ocenę",
      "Nazywa uczucie swoje, nie atrybutuje uczuć rozmówcy",
      "Wyraża potrzebę (co jest ważne), nie żądanie",
      "Formułuje konkretną prośbę (wykonywalną)",
    ]},
  { id: "s-soop", cat: "hard-talks", name: "Rozmowa oceniająca SOOP", level: "Trudny", time: "12 min", ep: "ep-tr-4",
    criteria: [
      "S — Sytuacja: konkretna, nie „zawsze/nigdy”",
      "O — Obserwacja: fakty, nie interpretacje",
      "O — Odczucie: nazwana reakcja bez oskarżania",
      "P — Propozycja: konkretna zmiana do uzgodnienia",
    ]},
  // Feedback
  { id: "s-feedback-trudny", cat: "feedback", name: "Trudny feedback korygujący", level: "Średni", time: "9 min", ep: "ep-fl-7",
    criteria: [
      "Zaczyna od faktu, nie opinii („widziałem że” vs „jesteś”)",
      "Powiązuje z wpływem (co ten fakt powoduje)",
      "Daje przestrzeń na perspektywę pracownika",
      "Kończy na uzgodnieniu konkretnej zmiany",
    ]},
  { id: "s-feedback-rozwoj", cat: "feedback", name: "Feedback rozwojowy 1:1", level: "Łatwy", time: "7 min", ep: "ep-fl-4",
    criteria: [
      "Zaczyna od mocnych stron (konkretnych)",
      "Wskazuje jedno pole rozwoju (nie trzy naraz)",
      "Łączy rozwój z celami pracownika",
      "Ustala follow-up",
    ]},
  // Leadership
  { id: "s-delegacja", cat: "leadership", name: "Delegowanie z odpowiedzialnością", level: "Średni", time: "10 min", ep: "ep-ls-4",
    criteria: [
      "Jasno określa rezultat, nie proces",
      "Ustala autonomię (co pracownik decyduje sam)",
      "Definiuje moment check-in",
      "Powstrzymuje się od micromanagementu",
    ]},
  { id: "s-bezpieczenstwo", cat: "leadership", name: "Budowanie bezpieczeństwa psychologicznego", level: "Trudny", time: "11 min", ep: "ep-ls-9",
    criteria: [
      "Reaguje na błąd bez eskalacji emocji",
      "Oddziela osobę od sytuacji",
      "Pyta co się stało, zanim oceni",
      "Traktuje błąd jako informację, nie punishment",
    ]},
  { id: "s-storytelling", cat: "leadership", name: "Storytelling lidera", level: "Średni", time: "8 min", ep: "ep-ls-6",
    criteria: [
      "Opowieść ma strukturę (początek — zwrot — pointa)",
      "Łączy fakty z emocją",
      "Pointa związana z kontekstem słuchaczy",
      "Story służy punktowi, nie odwrotnie",
    ]},
  // Komunikacja
  { id: "s-wplyw", cat: "communication", name: "Wywieranie wpływu w rozmowie", level: "Średni", time: "9 min", ep: "ep-rp-2",
    criteria: [
      "Zaczyna od tego co ważne dla rozmówcy",
      "Używa faktów i konkretnych przykładów",
      "Odpowiada na zastrzeżenia bez defensywy",
      "Kończy prośbą o konkretną decyzję",
    ]},
  { id: "s-cisza", cat: "communication", name: "Zarządzanie ciszą w rozmowie", level: "Trudny", time: "10 min", ep: "ep-rp-3",
    criteria: [
      "Nie wypełnia ciszy po trudnym pytaniu",
      "Czyta sygnały niewerbalne i pauzuje",
      "Używa ciszy celowo",
      "Nie uznaje ciszy za zgodę",
    ]},
  { id: "s-struktura", cat: "communication", name: "Struktura przekazu w komunikacji", level: "Łatwy", time: "7 min", ep: "ep-ls-5",
    criteria: [
      "Zaczyna od punktu (headline)",
      "Używa max 3 głównych argumentów",
      "Każdy argument podparty przykładem",
      "Kończy call-to-action",
    ]},
  // Zmiana
  { id: "s-change-kom", cat: "change", name: "Komunikacja zmiany w zespole", level: "Średni", time: "10 min", ep: "ep-zm-1",
    criteria: [
      "Komunikuje DLACZEGO przed CO i JAK",
      "Nie minimalizuje emocji zespołu",
      "Daje przestrzeń na pytania i obawy",
      "Jest transparentny o tym co wie i czego nie wie",
    ]},
  { id: "s-change-opor", cat: "change", name: "Rozmowa z oporującym członkiem zespołu", level: "Trudny", time: "12 min", ep: "ep-zm-5",
    criteria: [
      "Słucha obaw zanim argumentuje",
      "Nazywa emocje bez etykietowania",
      "Oddziela zrozumienie od zgody",
      "Nie dyskwalifikuje pracownika",
    ]},
  { id: "s-paktowanie", cat: "change", name: "Paktowanie z zespołem", level: "Trudny", time: "11 min", ep: "ep-zm-9",
    criteria: [
      "Jasno nazywa co jest do negocjacji, a co nie",
      "Pyta zespół czego potrzebuje",
      "Kontraktuje konkretne zobowiązania",
      "Ustala konsekwencje zerwania paktu",
    ]},
  // Negocjacje
  { id: "s-negocjacja", cat: "negotiation", name: "Negocjacja warunków z dostawcą", level: "Trudny", time: "13 min", ep: "ep-rp-8",
    criteria: [
      "Zaczyna od interesu, nie stanowiska",
      "Zna swoje BATNA i respektuje BATNA drugiej strony",
      "Wymienia ustępstwa (quid pro quo)",
      "Dąży do podpisanego uzgodnienia",
    ]},
  { id: "s-wynagrodzenie", cat: "negotiation", name: "Rozmowa o wynagrodzeniu", level: "Średni", time: "9 min", ep: "ep-rp-4",
    criteria: [
      "Podaje konkretną kwotę, nie widełki",
      "Uzasadnia wartością wnoszoną",
      "Nie przeprasza za pytanie o pieniądze",
      "Przy odmowie — pyta o warunki podwyżki",
    ]},
];

// User progress per skill — for demo
const USER_PROGRESS = {
  "s-feedback-trudny":  { attempts: 0, lastScore: null, status: "new", assigned: true, deadline: "28 kwi" },
  "s-feedback-rozwoj":  { attempts: 3, lastScore: 82,   status: "done" },
  "s-change-opor":      { attempts: 2, lastScore: 71,   status: "in-progress" },
  "s-change-kom":       { attempts: 1, lastScore: 64,   status: "in-progress" },
  "s-delegacja":        { attempts: 0, lastScore: null, status: "new" },
  "s-struktura":        { attempts: 0, lastScore: null, status: "new", assigned: true, deadline: "5 maj" },
  "s-asertywna-odmowa": { attempts: 1, lastScore: 66,   status: "in-progress" },
  "s-nvc":              { attempts: 2, lastScore: 78,   status: "in-progress" },
  "s-bezpieczenstwo":   { attempts: 0, lastScore: null, status: "new" },
  "s-storytelling":     { attempts: 1, lastScore: 84,   status: "done" },
  "s-wplyw":            { attempts: 0, lastScore: null, status: "new" },
  "s-cisza":            { attempts: 0, lastScore: null, status: "new" },
  "s-paktowanie":       { attempts: 0, lastScore: null, status: "new" },
  "s-soop":             { attempts: 0, lastScore: null, status: "new" },
  "s-negocjacja":       { attempts: 0, lastScore: null, status: "new" },
  "s-wynagrodzenie":    { attempts: 0, lastScore: null, status: "new" },
};

// Rubric for demo scenario (trudny feedback korygujący)
const SCENARIO = {
  id: "sc-feedback-trudny-1",
  skillId: "s-feedback-trudny",
  title: "Spóźnienia Marka — rozmowa korygująca",
  category: "Feedback",
  episode: "ep-fl-7",
  level: "Średni",
  time: "~9 min",
  turns: 12,
  situation:
    "Marek, senior developer w Twoim zespole, w ostatnich 3 tygodniach spóźnia się na daily (5 razy), a w piątek nie oddał PR-a, który blokuje dwie osoby. Wcześniej był wzorowy. Dziś masz z nim zaplanowane 1:1 o 15:00.",
  goal: "Przeprowadzić rozmowę korygującą — nazwać zachowanie, poznać kontekst, uzgodnić konkretną zmianę. Bez ataku, bez pomijania problemu.",
  npc: {
    name: "Marek Kowalski",
    role: "Senior Developer · 4 lata w firmie",
    mood: "W defensywie. Zmęczony.",
    tone: "Lakoniczny, sarkastyczny gdy poczuje atak.",
  },
  rubric: [
    { id: "r1", title: "Nazwać zachowanie konkretnie", desc: "Podajesz fakty (daty, liczby) zamiast ogólników." },
    { id: "r2", title: "Oddzielić zachowanie od osoby", desc: "Krytykujesz zachowanie, nie charakter." },
    { id: "r3", title: "Posłuchać kontekstu", desc: "Pytania otwarte, aktywne słuchanie, brak przerywania." },
    { id: "r4", title: "Uzgodnić konkretną zmianę", desc: "Konkrety: co, kiedy, jak to weryfikujecie." },
    { id: "r5", title: "Zamknąć na wspierającej nucie", desc: "Podkreślasz dotychczasową wartość i gotowość wsparcia." },
  ],
};

// 12 scenariuszy z katalogu treści — każdy wskazuje na umiejętność + rubrykę
const SCENARIOS = [
  {
    id: "sc-feedback-marek", skillId: "s-feedback-trudny", title: "Marek — spóźniony PR", level: "Średni", time: "~9 min", turns: 12,
    npc: { name: "Marek Kowalski", role: "Senior Developer · 4 lata w firmie", mood: "W defensywie, zmęczony", tone: "Lakoniczny, sarkastyczny gdy poczuje atak" },
    situation: "Marek, senior developer w Twoim zespole, w ostatnich 3 tygodniach spóźnia się na daily (5 razy), a w piątek nie oddał PR-a, który blokuje dwie osoby. Wcześniej był wzorowy. Dziś masz z nim zaplanowane 1:1 o 15:00.",
    goal: "Przeprowadzić rozmowę korygującą — nazwać zachowanie, poznać kontekst, uzgodnić konkretną zmianę. Bez ataku, bez pomijania problemu.",
    variants: [
      { label: "Wariant A: Anna — niski engagement", npc: "Anna, Product Designer, 2 lata w firmie, znudzona" },
      { label: "Wariant B: Tomek — PR blokuje release", npc: "Tomek, Mid Developer, 1 rok w firmie, obronny" },
    ],
  },
  {
    id: "sc-odmowa-paulina", skillId: "s-asertywna-odmowa", title: "Asertywna odmowa prośbie z boku", level: "Średni", time: "~8 min", turns: 8,
    npc: { name: "Paulina Krzysztof", role: "Head of Marketing, rówieśniczka w organizacji", mood: "Przyjazna, ale z naciskiem", tone: "Presja + eskalacja argumentów biznesowych" },
    situation: "Paulina pisze do Ciebie na Slack: „Hej, potrzebuję szybkiej pomocy Twojego zespołu na 2-3 dni przy launchu kampanii Q2. Wiem że macie swój roadmap, ale to naprawdę ważne”. Masz sprint w toku, twój zespół nie wyrabia własnych zobowiązań.",
    goal: "Odmówić bez zepsucia relacji. Być jasnym, uzasadnić, zaproponować alternatywę lub wyraźnie jej nie mieć.",
    variants: [
      { label: "Wariant A: Robert — CTO prosi o side-project", npc: "Robert, CTO — eskalacja od szefa" },
      { label: "Wariant B: Dominika przepycha feature spoza roadmapy", npc: "Dominika, Product Manager" },
    ],
  },
  {
    id: "sc-opor-jakub", skillId: "s-change-opor", title: "Rozmowa z oporującym członkiem zespołu", level: "Trudny", time: "~12 min", turns: 14,
    npc: { name: "Jakub Wójcik", role: "Engineering Lead · 6 lat w firmie", mood: "Sceptyczny wobec zmiany", tone: "Rzeczowy, ale z ironią" },
    situation: "Firma wdraża AI-first w procesach developerskich — Copilot, code review AI, automatyczne testy. Jakub, twój lead engineer, na ostatnim all-hands publicznie powiedział że „to zabija inżynierię”. Reszta zespołu zaczyna kwestionować. Masz z nim 1:1 za 10 minut.",
    goal: "Zrozumieć obawy Jakuba bez minimalizowania. Oddzielić zrozumienie od zgody. Zdecydować czy chcesz go przekonać, czy zaakceptować różnicę zdań.",
    variants: [
      { label: "Wariant A: Michał — senior QA", npc: "Michał, senior QA kwestionujący wartość automatyzacji" },
      { label: "Wariant B: Beata — Product Owner", npc: "Beata, PO niezgodna z reorganizacją działu" },
    ],
  },
  {
    id: "sc-delegacja-zosia", skillId: "s-delegacja", title: "Delegowanie zadań AI-first", level: "Średni", time: "~10 min", turns: 10,
    npc: { name: "Zosia Kubicka", role: "Junior Product Manager · 8 miesięcy w firmie", mood: "Ambitna, niepewna siebie", tone: "Dopytuje o szczegóły" },
    situation: "Twój zespół dostał zadanie zbadania opłacalności wprowadzenia Notebook LM do procesów strategicznych firmy. Chcesz to zdelegować Zosi — to dla niej szansa rozwojowa. Masz 15 minut na briefing przed jej wyjściem na wakacje.",
    goal: "Zdelegować tak, żeby Zosia wiedziała co ma dostarczyć, ale nie żebyś Ty dyktował jak. Ustalić check-in, autonomię, kryterium sukcesu.",
    variants: [
      { label: "Wariant A: Paweł — senior analyst", npc: "Paweł, senior analyst, dostaje research project" },
      { label: "Wariant B: Maja — designer", npc: "Maja, designer, zadanie przeprojektowania onboardingu" },
    ],
  },
  {
    id: "sc-zmiana-karolina", skillId: "s-change-kom", title: "Komunikacja zmiany w zespole", level: "Średni", time: "~10 min", turns: 12,
    npc: { name: "Karolina Lewandowska", role: "Senior HR Business Partner", mood: "Zaskoczona, szuka pewności", tone: "Spokojna, ale zadaje trudne pytania" },
    situation: "Zarząd zdecydował o reorganizacji — dział HR zostaje zintegrowany z Operations, raportujecie teraz do COO zamiast do CEO. Decyzja jest ogłoszona publicznie za 3 dni. Dziś masz z Karoliną 1:1 — chcesz jej powiedzieć zanim dowie się z all-hands.",
    goal: "Zakomunikować zmianę z sensem (dlaczego), dać przestrzeń na reakcję, być transparentnym o tym co wiesz i czego nie wiesz.",
    variants: [
      { label: "Wariant A: Marta — Finance Lead", npc: "Marta, Finance Lead, cięcia budżetu" },
      { label: "Wariant B: Krzysiek — Tech Lead", npc: "Krzysiek, Tech Lead, zmiana technology stack" },
    ],
  },
  {
    id: "sc-roadmap-adrian", skillId: "s-struktura", title: "Przedstawienie roadmapy zarządowi", level: "Trudny", time: "~11 min", turns: 10,
    npc: { name: "Adrian Kaczkowski", role: "CEO, założyciel firmy", mood: "Impatient, data-driven", tone: "Przerywa, dopytuje o liczby" },
    situation: "Masz 15 minut na board review swojej kwartalnej roadmapy. Adrian nie lubi długich wstępów, chce zobaczyć decyzje i liczby. Twoja roadmapa to 4 duże inicjatywy — niektóre jeszcze nie walidowane.",
    goal: "Dostarczyć punkt w pierwszych 30 sekundach. Mieć 3 główne argumenty, każdy z evidence. Zakończyć konkretnym pytaniem do zarządu.",
    variants: [
      { label: "Wariant A: Zarząd VC — quarterly update", npc: "Panel 3 investorów VC" },
      { label: "Wariant B: All-hands — strategia roczna dla 80 osób", npc: "Cały zespół firmy" },
    ],
  },
  {
    id: "sc-notebook-dawid", skillId: "s-change-kom", title: "Wprowadzenie Notebook LM w zespole", level: "Średni", time: "~10 min", turns: 11,
    npc: { name: "Dawid Zawadzki", role: "Product Lead AI", mood: "Otwarty, pragmatyczny", tone: "Chce rezultatów, nie hype" },
    situation: "Twój zespół (6 osób) ma wdrożyć Notebook LM jako narzędzie pracy dla onboardingu nowych pracowników. Dawid jest odpowiedzialny za feature, ale ma obawy że to kolejny tool który doda chaos zamiast usprawnić. Masz z nim kickoff na 30 minut.",
    goal: "Wyjaśnić dlaczego Notebook LM, nie konkurencyjne rozwiązania. Pokazać konkretny use case. Uzgodnić first milestone.",
    variants: [
      { label: "Wariant A: Sesja onboardingowa całego zespołu", npc: "Cały zespół (6 osób)" },
      { label: "Wariant B: Rozmowa z sceptycznym seniorem", npc: "Senior developer, sceptyczny" },
    ],
  },
  {
    id: "sc-feedback-ola", skillId: "s-feedback-rozwoj", title: "Feedback rozwojowy 1:1", level: "Łatwy", time: "~7 min", turns: 9,
    npc: { name: "Aleksandra Zając", role: "Marketing Specialist · 1 rok w firmie", mood: "Pasywna, czeka na instrukcje", tone: "Cicha, zgodna" },
    situation: "Ola robi solidną robotę, ale brakuje jej inicjatywy. Dziś macie kwartalne 1:1 — chcesz ją zachęcić do większej proaktywności bez zniechęcania. Ma potencjał, ale czeka na instrukcje zamiast proponować.",
    goal: "Dać feedback który nie demotywuje. Pokazać mocne strony konkretnie. Wskazać JEDNO pole rozwoju (nie listę). Ustalić follow-up.",
    variants: [
      { label: "Wariant A: Senior — pivot kariery", npc: "Senior rozważa nową rolę" },
      { label: "Wariant B: Junior — brak inicjatywy, 3 miesiące", npc: "Junior, 3 miesiące w firmie" },
    ],
  },
  {
    id: "sc-kandydat-natalia", skillId: "s-wplyw", title: "Rozmowa z kandydatem — weryfikacja", level: "Średni", time: "~9 min", turns: 10,
    npc: { name: "Natalia Wolska", role: "Kandydatka · Senior PM, 8 lat doświadczenia", mood: "Confident, rozważa też ofertę konkurencji", tone: "Profesjonalna, trochę zdystansowana" },
    situation: "Natalia jest waszym top candidate na Senior PM. Na pierwszej rozmowie zrobiła duże wrażenie. Dziś druga rozmowa z Tobą — Ty oceniasz culture fit i weryfikujesz czy ona naprawdę chce tu pracować, a nie używa was jako leverage na negocjacje z obecnym pracodawcą.",
    goal: "Poznać jej prawdziwą motywację. Zadać pytania trudne bez atakowania. Sprzedać firmę, ale bez naciągania.",
    variants: [
      { label: "Wariant A: Senior — culture fit", npc: "Pytanie o wartości" },
      { label: "Wariant B: Mid — weryfikacja kompetencji", npc: "Mid-level, weryfikacja skills" },
    ],
  },
  {
    id: "sc-brief-chatbot", skillId: "s-struktura", title: "Brief z chatbotem o strategii", level: "Łatwy", time: "~6 min", turns: 7,
    npc: { name: "AI Assistant", role: "Wewnętrzny chatbot firmowy", mood: "Neutralny, prosi o konkretne dane wejściowe", tone: "Strukturalny, dopytuje o kontekst" },
    situation: "Twoja firma wprowadziła wewnętrznego chatbota, który pomaga w pracy strategicznej. Żeby dał dobre rekomendacje, musisz dobrze zbriefować. Dziś chcesz go poprosić o analizę możliwości wejścia na rynek DACH.",
    goal: "Dać chatbotowi kontekst który pozwoli mu odpowiedzieć precyzyjnie. Rozłożyć prośbę na strukturę. Zakończyć konkretnym call-to-action.",
    variants: [
      { label: "Wariant A: Brief creative — kampania marketingowa", npc: "Brief dla generative creative tool" },
      { label: "Wariant B: Brief analytical — analiza konkurencji", npc: "Analityczny research brief" },
    ],
  },
  {
    id: "sc-negocjacja-bartosz", skillId: "s-negocjacja", title: "Negocjacja warunków z dostawcą AI", level: "Trudny", time: "~13 min", turns: 14,
    npc: { name: "Bartosz Nowak", role: "Account Manager · firma AI tools", mood: "Pewny siebie, miękko naciska", tone: "Sales-polished, trudno zejść z ceny" },
    situation: "Bartosz oferuje kontrakt enterprise na 3 lata na platformę AI do waszego zespołu (40 seats). Pierwsza oferta: 120k zł/rok. Masz budget 80k/rok. Vendor jest lider rynku, ale są alternatywy.",
    goal: "Zejść z ceny bez zrywania rozmowy. Wyjść z własnym BATNA, poznać jego. Wymienić ustępstwa, nie oddać bez powodu.",
    variants: [
      { label: "Wariant A: Kontrakt SaaS — agresywny sprzedawca", npc: "Agresywny AE, presja na close" },
      { label: "Wariant B: Kontrakt enterprise — dostawca infrastruktury", npc: "Enterprise AE, procedura przetargowa" },
    ],
  },
  {
    id: "sc-zespol-ewa", skillId: "s-storytelling", title: "Przejęcie zespołu po poprzednim liderze", level: "Trudny", time: "~10 min", turns: 10,
    npc: { name: "Ewa Wierzbicka", role: "Senior Specialist · reprezentuje zespół 8 osób", mood: "W żałobie po poprzednim liderze, ostrożna", tone: "Dystans, obserwuje" },
    situation: "Poprzedni lider zespołu odszedł nagle po 4 latach — relacje były bliskie, zespół w żałobie. Ty przychodzisz z zewnątrz. Pierwsze all-hands za 20 minut. Zespół obserwuje jak się przedstawisz.",
    goal: "Opowiedzieć swoją story tak żeby nie było rewolucji. Pokazać wartości, nie CV. Dać przestrzeń zespołowi na to co czują.",
    variants: [
      { label: "Wariant A: Przejęcie po awansowanym liderze", npc: "Poprzedni lider awansował (delikatniejszy kontekst)" },
      { label: "Wariant B: Przejęcie po restrukturyzacji", npc: "Restrukturyzacja, napięcie polityczne" },
    ],
  },
];
const DEMO_TRANSCRIPT = [
  { who: "system", text: "Rozmowa rozpoczyna się. 1:1, pokój negocjacyjny." },
  { who: "npc", text: "Hej. Mówiłeś że chcesz pogadać. O czym?" },
  { who: "user", text: "Cześć Marek. Dzięki że jesteś. Chciałem pogadać o ostatnich trzech tygodniach. Zauważyłem pięć spóźnień na daily i że piątkowy PR nie został zamknięty — przez co Ania i Tomek byli zablokowani w poniedziałek." },
  { who: "npc", text: "No... rzeczywiście trochę się zdarzało. Ale ten PR to nie była moja wina, bo reviewer siedział dwa dni. Ludzie zawsze coś widzą, co?" },
  { who: "user", text: "Okej, rozumiem że były blockery po drugiej stronie. Ale chciałbym lepiej zrozumieć — bo wcześniej nie było z tym problemu. Coś się zmieniło?" },
  { who: "npc", text: "(pauza) ...córka. Jest chora od miesiąca, chodzę z nią do lekarzy. Żona pracuje rano, więc ja ogarniam. Nie chciałem tego roznosić po zespole." },
];

// HR dashboard data
const HR_PROGRAM = {
  id: "p-lider-ai-q2",
  name: "Liderzy AI Q2",
  assigned: 42,
  active: 27,
  completed: 14,
  overdue: 3,
  avgScore: 74,
  deadline: "15 czerwca",
  series: "firma40",
  skills: 6,
  scenarios: 14,
};

// Multiple programs for the programs list
const HR_PROGRAMS = [
  {
    id: "p-lider-ai-q2", name: "Liderzy AI Q2", status: "live",
    mode: "required", assigned: 42, active: 27, completed: 14, overdue: 3, avgScore: 74,
    deadline: "15 czerwca 2026", deadlineShort: "15 cze", deadlineTs: 20260615, series: "leadership-s4",
    skills: 6, scenarios: 14, createdBy: "Marta Wierzbicka", createdAt: "12 marca 2026", createdTs: 20260312, modifiedAt: 20260418,
    histo: [1, 0, 2, 3, 6, 10, 8, 7, 4, 1],
    desc: "Program dla 42 liderów średniego szczebla. Cel: Q2 2026 wszyscy liderów ma podstawowe kompetencje AI-first w leadership.",
  },
  {
    id: "p-onboarding-pm", name: "Onboarding PM · Feedback & Change",
    status: "live", mode: "required", assigned: 18, active: 12, completed: 4, overdue: 2, avgScore: 68,
    deadline: "30 kwietnia 2026", deadlineShort: "30 kwi", deadlineTs: 20260430, series: "fundamenty-lidera",
    skills: 3, scenarios: 6, createdBy: "Piotr Nowak", createdAt: "5 lutego 2026", createdTs: 20260205, modifiedAt: 20260415,
    histo: [2, 1, 3, 4, 5, 3, 2, 1, 0, 0],
    desc: "Obowiązkowy program dla wszystkich nowych Product Managerów w pierwszych 30 dniach. Trudny feedback, komunikacja zmiany, delegowanie.",
  },
  {
    id: "p-rozwoj-1x1", name: "Rozwój 1:1 · cały tenant",
    status: "live", mode: "suggested", assigned: 124, active: 43, completed: 52, overdue: 0, avgScore: 79,
    deadline: null, deadlineShort: "bez terminu", deadlineTs: null, series: "fundamenty-lidera",
    skills: 2, scenarios: 5, createdBy: "Marta Wierzbicka", createdAt: "8 stycznia 2026", createdTs: 20260108, modifiedAt: 20260402,
    histo: [0, 1, 2, 4, 7, 12, 15, 11, 6, 2],
    desc: "Suggested program dla wszystkich pracowników — umiejętności rozmów 1:1 z przełożonym. Feedback rozwojowy, rozmowa o wynagrodzeniu.",
  },
  {
    id: "p-hr-ai-narzedzia", name: "HR · AI narzędzia w rekrutacji",
    status: "draft", mode: "required", assigned: 0, active: 0, completed: 0, overdue: 0, avgScore: null,
    deadline: "1 lipca 2026", deadlineShort: "1 lip", deadlineTs: 20260701, series: "rozmowy-poglebione",
    skills: 4, scenarios: 9, createdBy: "Marta Wierzbicka", createdAt: "2 dni temu", createdTs: 20260418, modifiedAt: 20260419,
    histo: null,
    desc: "Program w budowie. Cel: przygotować zespół HR do procesu rekrutacji z AI. 4 umiejętności, 9 scenariuszy.",
  },
  {
    id: "p-negocjacje-q1", name: "Negocjacje handlowe · Q1 2026",
    status: "done", mode: "required", assigned: 24, active: 0, completed: 22, overdue: 0, avgScore: 81,
    deadline: "31 marca 2026", deadlineShort: "31 mar", deadlineTs: 20260331, series: "rozmowy-poglebione",
    skills: 2, scenarios: 5, createdBy: "Piotr Nowak", createdAt: "10 stycznia 2026", createdTs: 20260110, modifiedAt: 20260331,
    histo: [0, 0, 0, 1, 3, 4, 6, 8, 5, 3],
    desc: "Zakończony. 92% completion rate, średnia 81%.",
  },
];

// Teams for filters + audience picker
const TEAMS = [
  {id: "eng", name: "Engineering", count: 14},
  {id: "pm", name: "Product", count: 8},
  {id: "mkt", name: "Marketing", count: 6},
  {id: "sales", name: "Sales", count: 9},
  {id: "hr", name: "HR & People Ops", count: 12},
  {id: "ops", name: "Operations", count: 5},
];

// Tenant context — empty by default to trigger the empty state
const HR_CONTEXT = {
  industry: "",
  size: "",
  culture: "",
  situations: "",
  glossary: "",
  updatedAt: null,
  history: [
    {version: 3, date: "12 marca 2026", author: "Marta Wierzbicka", note: "Dodałam glosariusz"},
    {version: 2, date: "28 lutego 2026", author: "Marta Wierzbicka", note: "Uzupełniłam kulturę"},
    {version: 1, date: "15 stycznia 2026", author: "Piotr Nowak", note: "Pierwsza wersja"},
  ],
};

// Example context — do przycisku „Wczytaj przykład” (US-17)
const HR_CONTEXT_EXAMPLE = {
  industry: "SaaS B2B — platforma e-learningowa dla średnich i dużych firm. Klienci głównie w Polsce (85%), ostatnio ekspansja do Czech i Niemiec.",
  size: "180 osób, 2 biura (Warszawa HQ + Kraków), praca hybrydowa 2/3 dni w biurze. Struktura płaska — 3 poziomy: IC, Lead, Director. Tech (60%), Product (15%), Sales & Marketing (15%), Ops (10%).",
  culture: "Szczera komunikacja to nasza wartość numer jeden — ludzie mówią sobie nawzajem trudne rzeczy wprost, bez zawijania w bawełnę. Jednocześnie jesteśmy zespołem wysokiej empatii — rozumiemy że za pracą stoją ludzie. Feedback dajemy często, ale w formule „fakt → wpływ → prośba”. Nie kochamy długich spotkań — preferujemy async-first w komunikacji. Decyzje są przejrzyste: kto decyduje, dlaczego, kiedy można wrócić do tematu. Inicjatywa jest ceniona ale nie wymagana — można być świetnym specjalistą bez bycia leaderem.",
  situations: "Reorganizacje co ~2 lata (ostatnia w Q4 2025). Presja terminu release’ów — co kwartał duży deploy. Klienci w Polsce są dużo bardziej relacyjni niż zachodni — sprzedaż to długofalowa relacja, nie transakcja. Konflikty między tech a sales są standardowe (tech chce refactor, sales chce ficzery dla klienta). Hybrydowość tworzy napięcia — 1/3 pracowników chce w pełni remote, 1/3 w pełni biuro.",
  glossary: "PM = Product Manager (nie Project). PO = Product Owner. Release = deploy na production. Sprint = 2 tygodnie. OKR = cele kwartalne. 1:1 = rozmowa manager-pracownik raz na 2 tygodnie. All-hands = spotkanie całej firmy, co miesiąc. Pipeline = proces sprzedażowy. MRR = monthly recurring revenue. Customer Success = dział obsługi klienta post-sale. „Dojrzały zespół” = zespół który samoorganizuje się bez micromanagementu.",
};

const HR_USERS = [
  { id:"u1",  name: "Katarzyna Wiśniewska", team: "Engineering", email:"katarzyna.wisniewska@firma.pl", lastScore: 82, attempts: 7, trend: "up",   status: "active" },
  { id:"u2",  name: "Tomasz Nowak",          team: "Product",     email:"tomasz.nowak@firma.pl",          lastScore: 71, attempts: 4, trend: "up",   status: "active" },
  { id:"u3",  name: "Aleksandra Zając",      team: "Marketing",   email:"aleksandra.zajac@firma.pl",      lastScore: 64, attempts: 2, trend: "flat", status: "active" },
  { id:"u4",  name: "Michał Lewandowski",    team: "Sales",       email:"michal.lewandowski@firma.pl",    lastScore: 91, attempts: 9, trend: "up",   status: "done" },
  { id:"u5",  name: "Paulina Kamińska",      team: "HR",          email:"paulina.kaminska@firma.pl",      lastScore: 58, attempts: 3, trend: "down", status: "active" },
  { id:"u6",  name: "Jakub Wójcik",          team: "Engineering", email:"jakub.wojcik@firma.pl",          lastScore: null, attempts: 0, trend: null,  status: "overdue" },
  { id:"u7",  name: "Anna Dąbrowska",        team: "Product",     email:"anna.dabrowska@firma.pl",        lastScore: 88, attempts: 5, trend: "up",   status: "done" },
  { id:"u8",  name: "Piotr Kowalczyk",       team: "Operations",  email:"piotr.kowalczyk@firma.pl",       lastScore: 77, attempts: 6, trend: "up",   status: "active" },
  { id:"u9",  name: "Natalia Krzysztofik",   team: "Sales",       email:"natalia.krzysztofik@firma.pl",   lastScore: 73, attempts: 4, trend: "up",   status: "active" },
  { id:"u10", name: "Bartek Michalski",      team: "Engineering", email:"bartek.michalski@firma.pl",      lastScore: 55, attempts: 2, trend: "down", status: "active" },
];

// Extended list for HRIS preview (~42 osoby) — used in program creator audience step
const HRIS_USERS = [
  "Katarzyna Wiśniewska · Engineering",
  "Tomasz Nowak · Product",
  "Aleksandra Zając · Marketing",
  "Michał Lewandowski · Sales",
  "Paulina Kamińska · HR",
  "Jakub Wójcik · Engineering",
  "Anna Dąbrowska · Product",
  "Piotr Kowalczyk · Operations",
  "Magdalena Szymańska · Engineering",
  "Krzysztof Woźniak · Sales",
  "Natalia Kaczmarek · Marketing",
  "Marcin Piotrowski · Engineering",
  "Karolina Grabowska · Product",
  "Łukasz Pawlak · Operations",
  "Joanna Michalska · HR",
  "Adam Król · Sales",
  "Weronika Jankowska · Marketing",
  "Bartłomiej Wojciechowski · Engineering",
  "Ewa Kwiatkowska · Product",
  "Damian Mazur · Operations",
  "Beata Krawczyk · HR",
  "Rafał Zieliński · Sales",
  "Patrycja Szewczyk · Marketing",
  "Grzegorz Olszewski · Engineering",
  "Monika Jabłońska · Product",
  "Sebastian Dudek · Operations",
  "Agnieszka Pawłowska · HR",
  "Dawid Nowakowski · Sales",
  "Justyna Stępień · Marketing",
  "Paweł Walczak · Engineering",
  "Sylwia Szczepańska · Product",
  "Mateusz Górski · Operations",
  "Iwona Baran · HR",
  "Kamil Sikora · Sales",
  "Dominika Rutkowska · Marketing",
  "Robert Chmielewski · Engineering",
  "Emilia Borkowska · Product",
  "Wojciech Adamski · Operations",
  "Małgorzata Laskowska · HR",
  "Filip Zawadzki · Sales",
  "Klaudia Sadowska · Marketing",
  "Przemysław Kubiak · Engineering",
];

// Sessions for drill-down — tied to specific user for demo
const HR_USER_SESSIONS = {
  "u1": [
    {id:"s1-1", scenario:"Trudny feedback korygujący — Marek", skill:"Trudny feedback korygujący", date:"18 kwi 2026", time:"14:22", duration:"9 min", score: 82, endType:"goal-achieved", meetsCriteria:true, source:"program",
     rubric: [
       {title:"Nazwać zachowanie konkretnie",       status:"pass", note:"Podałaś konkretne daty i liczby."},
       {title:"Oddzielić zachowanie od osoby",       status:"pass", note:"Unikałaś etykietowania."},
       {title:"Posłuchać kontekstu",                 status:"partial", note:"Zadałaś dwa pytania otwarte, ale przerwałaś raz."},
       {title:"Uzgodnić konkretną zmianę",           status:"pass", note:"Konkretny deadline i metoda weryfikacji."},
       {title:"Zamknąć na wspierającej nucie",       status:"pass", note:"Podkreśliłaś wartość Marka w zespole."},
     ],
     userComment:"Trudna rozmowa, ale mam poczucie że poszła w dobrym kierunku.",
    },
    {id:"s1-2", scenario:"Komunikacja zmiany w zespole",       skill:"Komunikacja zmiany w zespole",  date:"10 kwi 2026", time:"09:40", duration:"11 min", score: 76, endType:"time-out", meetsCriteria:true, source:"program",
     rubric: [
       {title:"Wyjaśnić cel zmiany",                  status:"pass", note:"Klarownie uzasadniłaś powód."},
       {title:"Zaadresować obawy",                    status:"partial", note:"Zebrałaś obawy, ale nie wszystkie zaadresowałaś."},
       {title:"Pokazać kolejne kroki",                status:"pass", note:"Konkretny plan."},
     ],
     userComment:null,
    },
    {id:"s1-3", scenario:"Delegowanie zadań AI-first",          skill:"Delegowanie zadań AI-first",   date:"3 kwi 2026",  time:"11:15", duration:"7 min",  score: 68, endType:"goal-partial", meetsCriteria:false, source:"self",
     rubric: [
       {title:"Jasno zakomunikować zakres",           status:"partial", note:"Część zakresu została nieuzgodniona."},
       {title:"Ustalić weryfikację",                  status:"fail", note:"Brak jasnego kryterium odbioru."},
       {title:"Pytać o przeszkody",                   status:"pass", note:"Dobrze."},
     ],
     userComment:"Niezgadzam się z oceną kryterium 2 — umówiliśmy się na demo w piątek.",
    },
    {id:"s1-4", scenario:"Rozmowa z oporującym zespołem — wariant", skill:"Rozmowa z oporującym członkiem zespołu", date:"28 mar 2026", time:"16:00", duration:"12 min", score: 58, endType:"escalation", meetsCriteria:false, source:"program",
     rubric: [
       {title:"Aktywne słuchanie",                    status:"fail", note:"Kilka razy przerwałaś."},
       {title:"Nie eskalować emocji",                 status:"partial", note:"Podniesiony ton w środku rozmowy."},
       {title:"Propozycja wspólnego kroku",           status:"partial", note:"Propozycja była, ale ogólna."},
     ],
     userComment:null,
    },
  ],
};

const HISTO = [2, 1, 3, 5, 8, 12, 9, 7, 4, 2]; // 0-10, 10-20, … 90-100

// Helper: pick the right scenario for a given skill.
// Falls back to a synthesized scenario built on top of SCENARIO (rubric, mood tone) when catalog has none.
const getScenarioForSkill = (skillId, overrideTitle) => {
  const found = SCENARIOS.find(s => s.skillId === skillId);
  const base = found || SCENARIOS[0]; // first one is the Marek default
  const skill = SKILLS.find(s => s.id === skillId);
  return {
    // identity
    id: base.id,
    skillId,
    title: overrideTitle || base.title,
    category: skill ? (CATEGORIES.find(c => c.id === skill.cat)?.label || "Trening") : "Trening",
    episode: skill?.ep || SCENARIO.episode,
    level: base.level || SCENARIO.level,
    time: base.time || skill?.time || SCENARIO.time,
    turns: base.turns || SCENARIO.turns,
    // scene
    situation: base.situation,
    goal: base.goal,
    npc: base.npc,
    // rubric: from skill criteria when available, else SCENARIO default
    rubric: (skill?.criteria || []).length >= 3
      ? skill.criteria.map((c, i) => ({ id: `r${i+1}`, title: c.split(":")[0].split("—")[0].trim().slice(0, 60), desc: c }))
      : SCENARIO.rubric,
    variants: base.variants || [],
  };
};

Object.assign(window, {
  CATEGORIES, SERIES, EPISODES, SKILLS, USER_PROGRESS,
  SCENARIO, SCENARIOS, getScenarioForSkill, DEMO_TRANSCRIPT, HR_PROGRAM, HR_PROGRAMS, HR_USERS, HRIS_USERS, HR_USER_SESSIONS, HISTO,
  TEAMS, HR_CONTEXT, HR_CONTEXT_EXAMPLE,
});
