// Series — Netflix-style list + detail matching Youniversity layout

// Series screen reuses global SERIES/EPISODES/SKILLS from data.jsx.
// Sections map from CATEGORIES; host/role/long copy enriched per series.
const SERIES_CATEGORIES = CATEGORIES.filter(c => c.id !== "negotiation"); // leave all tlhat have series

// Per-series extra presentation data. Core fields come from data.jsx SERIES.
const SERIES_META = {
  "trudne-rozmowy": {
    hostRole: "Dyrektor Operacyjny · BioFeedback Foundation", duration: "43 min", watched: 128, date: "Marzec 2026", hue: "default",
    longDesc: "Empatyczna i asertywna komunikacja to fundament dobrego liderowania. W pięciu odcinkach Joanna Malinowska pokazuje jak prowadzić trudne rozmowy — od udzielania feedbacku po asertywną odmowę — bez naruszania relacji i szacunku.\n\nSerial jest dla liderów, HR-owców i menedżerów, którzy mają za sobą rozmowy które zakończyły się gorzej niż powinny. Poznasz modele (NVC, SOOP), ale też konkretne zwroty i scenariusze.",
    problems: ["Feedback który eskaluje w kłótnię", "Asertywna odmowa bez poczucia winy", "Trudne rozmowy oceniające", "Nazywanie emocji bez etykietowania"],
    shortHook: "Która rozmowa ostatnio skończyła się nie tak, jak chciałeś — i co mógłbyś zrobić inaczej?",
  },
  "leadership-s4": {
    hostRole: "Executive Coach · ICF MCC", duration: "1h 14 min", watched: 210, date: "Luty 2026", hue: "teal",
    longDesc: "Czwarty sezon serii o liderowaniu skupia się na praktycznych narzędziach — delegowaniu, komunikacji, bezpieczeństwie psychologicznym i storytellingu. 10 odcinków, każdy z realnym przypadkiem z pracy z zespołami C-level.\n\nVivek Antonio pokazuje jak wyjść z pułapki mikromenedżmentu, jak budować odpowiedzialność w zespole, i jak komunikować się tak, żeby ludzie nie tylko słyszeli, ale zapamiętywali.",
    problems: ["Zespół który nie bierze odpowiedzialności", "Komunikacja ginąca w Slacku", "Obawy przed mówieniem prawdy w zespole", "Storytelling który brzmi sztucznie"],
    shortHook: "Kiedy ostatnio Twój zespół powiedział Ci coś, czego nie chciałeś usłyszeć?",
  },
  "zarzadzanie-zmiana": {
    hostRole: "Change Management Consultant", duration: "1h 46 min", watched: 94, date: "Styczeń 2026", hue: "amber",
    longDesc: "Zmiana rozkłada zespoły. Tomasz Krajewski prowadzi przez 14 odcinków mapę emocji, typów osobowości i faz transformacji — od Fishera po Tuckmana. Każdy odcinek zakończony konkretną rozmową do przeprowadzenia.\n\nSerial jest dla menedżerów, którzy mają za sobą co najmniej jedną reorganizację i wiedzą, że samo ogłoszenie zmiany to dopiero początek.",
    problems: ["Opór zespołu po ogłoszeniu zmiany", "Zmęczenie kolejną reorganizacją", "Paktowanie z zespołem bez iluzji", "Podważanie autorytetu lidera"],
    shortHook: "Jaka zmiana w Twojej firmie utknęła na fazie oporu — i dlaczego?",
  },
  "rozmowy-poglebione": {
    hostRole: "Dziennikarz · autor wywiadów", duration: "1h 2 min", watched: 64, date: "Grudzień 2025", hue: "default",
    longDesc: "Maciej Orłoś — dziennikarz, który rozmawiał z tysiącami ludzi — pokazuje techniki pogłębionej rozmowy. Jak słuchać, jak pytać, jak wywierać wpływ bez manipulacji. 10 odcinków, w każdym przykład z realnego wywiadu.\n\nSerial dla każdego, kto prowadzi rozmowy, w których stawka jest większa niż small talk — negocjacje, rekrutacja, 1:1, trudne decyzje biznesowe.",
    problems: ["Rozmowa która przeszła obok", "Trudne milczenia podczas spotkań", "Rozmowy o wynagrodzeniu", "Zastrzeżenia których nie umiesz obronić"],
    shortHook: "Która z Twoich ostatnich rozmów naprawdę coś zmieniła?",
  },
  "zwinne-przywodztwo": {
    hostRole: "Leadership Consultant · ex-CPO", duration: "1h 28 min", watched: 41, date: "Listopad 2025", hue: "teal",
    longDesc: "Pięć filarów przywództwa na dziś: pragnienie zmiany, obraz siebie jako lidera, wyposażanie ludzi, koncentracja na wzroście i wartości. Anna Dąbrowska łączy perspektywę executive coacha z doświadczeniem CPO w szybko rosnących firmach.\n\nSerial dla liderów 1-2 poziomu od CEO, którzy chcą wyjść poza role management i budować kulturę odpowiedzialności.",
    problems: ["Lider wypalony mikromenedżmentem", "Brak wzrostu w zespole", "Sukces indywidualny zamiast zespołowego", "Koncentracja na metrykach zamiast wartości"],
    shortHook: "Co robisz codziennie, żeby Twój zespół rósł szybciej niż Ty?",
  },
  "fundamenty-lidera": {
    hostRole: "CEO · autor programów leadership", duration: "1h 57 min", watched: 87, date: "Październik 2025", hue: "default",
    longDesc: "Andrzej Borcz tłumaczy, co faktycznie różni skutecznego CEO od przeciętnego menedżera. 15 odcinków: od oczekiwań pracowników, przez Killerów efektywności, po standard Leadership 734 i trzy kluczowe zadania CEO — Why, How, Who.\n\nSerial dla CEO, COO, i dyrektorów z ambicją wyjścia poza dzienne zarządzanie.",
    problems: ["Silosy „My i Oni” w organizacji", "Opinie mylone z faktami", "Brak fundamentów przywództwa", "Improwizacja zamiast systemu"],
    shortHook: "Co jest dziś Twoim największym Killerem efektywności jako lidera?",
  },
};

// Build extended series list on top of global SERIES
const SERIES_EXT = SERIES.map(s => {
  const meta = SERIES_META[s.id] || {};
  return {
    id: s.id, title: s.title, host: s.host, cat: s.category, episodes: s.episodes,
    hostRole: meta.hostRole || "Ekspert Youniversity", duration: meta.duration || "~1h",
    watched: meta.watched || 0, date: meta.date || "2026", hue: meta.hue || s.hue || "default",
    desc: s.desc, longDesc: meta.longDesc || s.desc,
    problems: meta.problems || [], shortHook: meta.shortHook || "",
  };
});

// Episodes grouped by series id
const SERIES_EPISODES = EPISODES.reduce((acc, ep) => {
  (acc[ep.series] = acc[ep.series] || []).push({ n: ep.n, title: ep.title, duration: ep.duration, skills: ep.skills || [] });
  return acc;
}, {});
const getSeriesEpisodes_OLD = null; // kept to avoid accidental reference; see getSeriesEpisodes below

const getSeriesEpisodes = (sid) => SERIES_EPISODES[sid] || SERIES_EPISODES[SERIES_EXT[0]?.id] || [];

const SeriesList = ({setRoute, setActiveSeries, setActiveScenario}) => {
  const bySection = SERIES_CATEGORIES.map(c => ({...c, items: SERIES_EXT.filter(s=>s.cat===c.id)})).filter(s=>s.items.length);
  // Featured: first series (hero). User navigates to its detail on "Odtwórz" / "Dowiedz się więcej".
  const featured = SERIES_EXT[0];
  return (
    <div style={{padding:"0 0 120px",maxWidth:"none",animation:"fadeIn .4s both"}}>
      {/* HERO */}
      <div style={{position:"relative",height:560,overflow:"hidden",marginBottom:60}}>
        {/* Background layers */}
        <div style={{position:"absolute",inset:0}}>
          {/* Base mesh as hero imagery stand-in */}
          <div className={`mesh ${featured.hue||""}`} style={{position:"absolute",inset:0,transform:"scale(1.15)"}}/>
          {/* Bokeh dots overlay for imagery feel */}
          <div style={{
            position:"absolute",
            inset:0,
            background:
              "radial-gradient(circle at 78% 35%, rgba(255,210,170,.12) 0 3px, transparent 4px)," +
              "radial-gradient(circle at 85% 62%, rgba(200,180,255,.10) 0 2px, transparent 3px)," +
              "radial-gradient(circle at 68% 78%, rgba(255,255,255,.08) 0 4px, transparent 5px)," +
              "radial-gradient(circle at 92% 22%, rgba(255,220,200,.10) 0 3px, transparent 4px)," +
              "radial-gradient(circle at 60% 50%, rgba(255,200,180,.06) 0 3px, transparent 4px)",
            filter:"blur(2px)",
          }}/>
          {/* Darkening from left */}
          <div style={{position:"absolute",inset:0,background:"linear-gradient(90deg, #000 0%, rgba(0,0,0,.92) 25%, rgba(0,0,0,.6) 55%, rgba(0,0,0,.15) 100%)"}}/>
          {/* Fade to bg at bottom */}
          <div style={{position:"absolute",inset:0,background:"linear-gradient(180deg, transparent 70%, var(--bg) 100%)"}}/>
        </div>
        {/* Content */}
        <div style={{position:"relative",maxWidth:1440,margin:"0 auto",height:"100%",padding:"0 64px",display:"flex",alignItems:"center"}}>
          <div style={{maxWidth:560}}>
            <h1 style={{
              fontFamily:"var(--serif)",
              fontSize:68,
              letterSpacing:"-.025em",
              lineHeight:1.05,
              fontWeight:400,
              margin:"0 0 28px",
              color:"#fff",
            }}>
              {featured.title}
            </h1>
            <p style={{
              fontSize:16,
              lineHeight:1.65,
              color:"rgba(255,255,255,.78)",
              margin:"0 0 36px",
              maxWidth:480,
            }}>
              {featured.desc}
            </p>
            <div style={{display:"flex",gap:12,alignItems:"center"}}>
              <button
                onClick={()=>{setActiveSeries(featured.id);setRoute("series-detail");}}
                style={{
                  display:"inline-flex",alignItems:"center",gap:8,
                  padding:"14px 24px",
                  background:"#e11d48",
                  color:"#fff",
                  border:"none",
                  borderRadius:10,
                  fontSize:14,
                  fontWeight:600,
                  cursor:"pointer",
                  transition:"background .15s",
                }}
                onMouseEnter={e=>e.currentTarget.style.background="#f43f5e"}
                onMouseLeave={e=>e.currentTarget.style.background="#e11d48"}>
                <Icon name="play" size={14}/> Odtwórz
              </button>
              <button
                onClick={()=>{setActiveSeries(featured.id);setRoute("series-detail");}}
                style={{
                  padding:"14px 22px",
                  background:"rgba(255,255,255,.1)",
                  color:"#fff",
                  border:"1px solid rgba(255,255,255,.2)",
                  borderRadius:10,
                  fontSize:14,
                  fontWeight:500,
                  cursor:"pointer",
                  backdropFilter:"blur(8px)",
                  transition:".15s",
                }}
                onMouseEnter={e=>{ e.currentTarget.style.background="rgba(255,255,255,.18)"; }}
                onMouseLeave={e=>{ e.currentTarget.style.background="rgba(255,255,255,.1)"; }}>
                Dowiedz się więcej
              </button>
            </div>
          </div>
        </div>
      </div>

      {/* MOJE ZADANIA — continue-watching slider */}
      <MyTasksSlider setRoute={setRoute} setActiveScenario={setActiveScenario}/>

      {bySection.map(sec => (
        <div key={sec.id} style={{marginBottom:44}}>
          <div style={{maxWidth:1440,margin:"0 auto",padding:"0 48px 18px",display:"flex",justifyContent:"space-between",alignItems:"baseline"}}>
            <h2 style={{fontFamily:"var(--serif)",fontSize:28,letterSpacing:"-.01em",fontWeight:400,margin:0}}>{sec.label}</h2>
            <span className="muted" style={{fontSize:12,fontFamily:"var(--mono)",letterSpacing:".06em",textTransform:"uppercase"}}>{sec.items.length} seriali</span>
          </div>
          <div style={{padding:"0 48px",overflowX:"auto",maxWidth:"100vw"}}>
            <div style={{display:"grid",gridAutoFlow:"column",gridAutoColumns:"minmax(320px, 320px)",gap:20,paddingBottom:10}}>
              {sec.items.map(s => {
                const scCount = (SERIES_EPISODES[s.id]||[]).reduce((sum,ep)=>sum + (ep.skills?.length||0), 0);
                return (
                <div key={s.id} className="card hover" onClick={()=>{setActiveSeries(s.id);setRoute("series-detail");}} style={{cursor:"pointer"}}>
                  <div className="thumb">
                    <div className={`mesh ${s.hue||""}`} style={{position:"absolute",inset:0}}/>
                    <div className="meta">
                      <span className="chip mono" style={{background:"rgba(0,0,0,.45)",color:"#fff",backdropFilter:"blur(8px)"}}>{s.episodes} odc.</span>
                      {scCount>0 && <span className="chip mono" style={{background:"rgba(167,139,250,.22)",color:"#fff",backdropFilter:"blur(8px)",border:"1px solid rgba(167,139,250,.35)"}}>● {scCount} scenariusz{scCount===1?"":scCount<5?"e":"y"}</span>}
                    </div>
                    <div className="label">{s.title}</div>
                  </div>
                  <div className="card-body" style={{padding:"14px 18px"}}>
                    <div className="muted" style={{fontSize:12,marginBottom:4}}>{s.host}</div>
                    <div style={{fontSize:12,color:"var(--fg-3)",display:"flex",gap:12}}>
                      <span>{s.duration}</span><span>·</span><span>{s.watched} wyświetleń</span>
                    </div>
                  </div>
                </div>
                );
              })}
            </div>
          </div>
        </div>
      ))}
    </div>
  );
};

// ———————————————————————————————————————————————————————————
// SeriesDetail — Youniversity-style: hero + two cols + similar rail
// ———————————————————————————————————————————————————————————

const EpisodeRow = ({ep, open, onToggle, host, setActiveScenario, setRoute, last}) => {
  const exs = ep.skills.map(id => SKILLS.find(x=>x.id===id)).filter(Boolean);
  return (
    <div style={{borderBottom:last?"0":"1px solid var(--line)"}}>
      <button onClick={onToggle} style={{width:"100%",display:"flex",alignItems:"center",gap:14,padding:"16px 4px",background:"transparent",border:0,cursor:"pointer",textAlign:"left",color:"var(--fg)"}}>
        <span style={{fontFamily:"var(--mono)",fontSize:12,color:"var(--fg-4)",minWidth:24}}>{String(ep.n).padStart(2,"0")}.</span>
        <span style={{flex:1,fontSize:14,color:"var(--fg)"}}>{ep.title}</span>
        {exs.length>0 && !open && <span style={{fontSize:10,fontFamily:"var(--mono)",color:"var(--accent-3)",letterSpacing:".04em",textTransform:"uppercase"}}>● {exs.length} scen.</span>}
        <span style={{fontSize:11,fontFamily:"var(--mono)",color:"var(--fg-4)"}}>{ep.duration}</span>
        <span style={{display:"grid",placeItems:"center",width:22,height:22,transition:"transform .2s",transform:open?"rotate(180deg)":"none",color:"var(--fg-3)"}}>
          <Icon name="chevron-down" size={14}/>
        </span>
      </button>
      {open && (
        <div style={{padding:"6px 0 22px 38px",animation:"fadeIn .2s"}}>
          {/* Play row */}
          <div style={{display:"flex",alignItems:"center",gap:14,padding:"10px 14px",background:"var(--bg-2)",border:"1px solid var(--line)",borderRadius:10,marginBottom:14}}>
            <button className="btn primary sm"><Icon name="play" size={12}/> Odtwórz odcinek</button>
            <span className="muted" style={{fontSize:12}}>{host}</span>
          </div>
          {/* AI exercises */}
          <div className="eyebrow" style={{marginBottom:10,color:"var(--accent-3)"}}>Scenariusze do przećwiczenia</div>
          <div style={{display:"grid",gap:8}}>
            {exs.map(sk => {
              const prog = USER_PROGRESS[sk.id] || {};
              return (
                <div key={sk.id} style={{display:"grid",gridTemplateColumns:"1fr auto auto",gap:16,alignItems:"center",padding:"12px 14px",background:"var(--bg-2)",border:"1px solid var(--line)",borderRadius:10}}>
                  <div>
                    <div style={{fontSize:13,fontWeight:500,marginBottom:2}}>{sk.name}</div>
                    <div className="muted" style={{fontSize:11}}>{sk.level} · {sk.time}</div>
                  </div>
                  <div style={{minWidth:50,textAlign:"right"}}>
                    {prog.lastScore ? <span style={{fontFamily:"var(--serif)",fontSize:17}}>{prog.lastScore}%</span> : <span className="muted" style={{fontSize:10,fontFamily:"var(--mono)"}}>NOWE</span>}
                  </div>
                  <button className="btn primary sm" onClick={()=>{ setActiveScenario(getScenarioForSkill(sk.id, sk.name)); setRoute("briefing"); }}>
                    {prog.lastScore ? "Powtórz" : "Zacznij"} <Icon name="arrow-right" size={10}/>
                  </button>
                </div>
              );
            })}
          </div>
        </div>
      )}
    </div>
  );
};

const SeriesDetail = ({setRoute, seriesId, setActiveScenario, setActiveSeries}) => {
  const s = SERIES_EXT.find(x=>x.id===seriesId) || SERIES_EXT[0];
  const eps = getSeriesEpisodes(s.id);
  const [openN, setOpenN] = React.useState(eps[0]?.n);
  const [saved, setSaved] = React.useState(false);
  const similar = SERIES_EXT.filter(x => x.id!==s.id && x.cat===s.cat).concat(SERIES_EXT.filter(x=>x.id!==s.id && x.cat!==s.cat)).slice(0,4);

  const initials = s.host.split(" ").map(w=>w[0]).slice(0,2).join("");

  return (
    <div style={{animation:"fadeIn .4s both",paddingBottom:80}}>
      {/* Back */}
      <div style={{maxWidth:1320,margin:"0 auto",padding:"24px 48px 0"}}>
        <button className="btn link" onClick={()=>setRoute("series")}>
          <Icon name="arrow-left" size={14}/> Wszystkie seriale
        </button>
      </div>

      {/* HERO */}
      <div style={{position:"relative",marginTop:20,overflow:"hidden"}}>
        <div style={{position:"absolute",inset:0}}>
          <div className={`mesh ${s.hue||""}`} style={{position:"absolute",inset:0,transform:"scale(1.1)"}}/>
          <div style={{position:"absolute",inset:0,background:"linear-gradient(90deg, var(--bg) 0%, rgba(10,10,16,.85) 35%, rgba(10,10,16,.3) 65%, transparent 100%)"}}/>
          <div style={{position:"absolute",inset:0,background:"linear-gradient(180deg, transparent 60%, var(--bg) 100%)"}}/>
        </div>
        <div style={{position:"relative",maxWidth:1320,margin:"0 auto",padding:"80px 48px 80px",minHeight:420,display:"flex",alignItems:"flex-end"}}>
          <div style={{maxWidth:620}}>
            {/* host */}
            <div style={{display:"flex",alignItems:"center",gap:12,marginBottom:28}}>
              <div style={{width:40,height:40,borderRadius:"50%",background:"linear-gradient(135deg,var(--accent),var(--accent-2))",display:"grid",placeItems:"center",fontFamily:"var(--serif)",fontSize:16,color:"#fff"}}>{initials}</div>
              <div>
                <div style={{fontSize:14,color:"var(--fg)",fontWeight:500}}>{s.host}</div>
                <div style={{fontSize:11,color:"var(--fg-3)",fontFamily:"var(--mono)",letterSpacing:".04em"}}>{s.hostRole}</div>
              </div>
            </div>
            {/* title */}
            <h1 style={{fontFamily:"var(--serif)",fontSize:56,letterSpacing:"-.025em",lineHeight:1.05,margin:"0 0 20px",fontWeight:400}}>{s.title}</h1>
            <p style={{fontSize:16,lineHeight:1.6,color:"var(--fg-2)",margin:"0 0 28px",maxWidth:560}}>{s.desc}</p>
            {/* meta chips */}
            <div style={{display:"flex",gap:10,marginBottom:28,flexWrap:"wrap"}}>
              <span style={{display:"inline-flex",alignItems:"center",gap:6,padding:"8px 14px",border:"1px solid var(--line)",borderRadius:999,background:"rgba(20,20,30,.6)",backdropFilter:"blur(8px)",fontSize:12,color:"var(--fg-2)"}}>
                <Icon name="calendar" size={12}/> {s.date}
              </span>
              <button onClick={()=>setSaved(v=>!v)} style={{display:"inline-flex",alignItems:"center",gap:6,padding:"8px 14px",border:"1px solid var(--line)",borderRadius:999,background:"rgba(20,20,30,.6)",backdropFilter:"blur(8px)",fontSize:12,color:"var(--fg-2)",cursor:"pointer"}}>
                <Icon name={saved?"check":"plus"} size={12}/> {saved?"Dodano do listy":"Dodaj do mojej listy"}
              </button>
            </div>
            {/* CTA */}
            <button className="btn primary" style={{padding:"14px 26px",fontSize:14}} onClick={()=>setOpenN(eps[0]?.n)}>
              <Icon name="play" size={14}/> Odtwórz
            </button>
          </div>
        </div>
      </div>

      {/* TWO COLS */}
      <div style={{maxWidth:1320,margin:"0 auto",padding:"40px 48px",display:"grid",gridTemplateColumns:"minmax(0,1.15fr) minmax(0,1fr)",gap:56}}>
        {/* Episodes */}
        <div>
          <div style={{fontSize:13,color:"var(--fg-3)",fontFamily:"var(--mono)",letterSpacing:".08em",textTransform:"uppercase",marginBottom:18}}>Odcinki z tej serii</div>
          <div>
            {eps.map((ep,i) => (
              <EpisodeRow
                key={ep.n}
                ep={ep}
                host={s.host}
                open={openN===ep.n}
                onToggle={()=>setOpenN(openN===ep.n ? null : ep.n)}
                setActiveScenario={setActiveScenario}
                setRoute={setRoute}
                last={i===eps.length-1}
              />
            ))}
          </div>
        </div>

        {/* Right col — description */}
        <div>
          <div style={{fontSize:13,color:"var(--fg-3)",fontFamily:"var(--mono)",letterSpacing:".08em",textTransform:"uppercase",marginBottom:18}}>Opis serii</div>
          <div style={{fontSize:14,lineHeight:1.7,color:"var(--fg-2)",whiteSpace:"pre-line",marginBottom:32}}>{s.longDesc}</div>
          <div style={{padding:"22px 24px",background:"var(--bg-2)",border:"1px solid var(--line)",borderRadius:14,marginBottom:28}}>
            <div style={{fontFamily:"var(--serif)",fontSize:18,letterSpacing:"-.01em",marginBottom:6,fontStyle:"italic",color:"var(--fg)"}}>„{s.shortHook}”</div>
          </div>
          <div style={{fontSize:13,color:"var(--fg),",fontWeight:500,marginBottom:12}}>Jakie problemy rozwiązuje</div>
          <div style={{display:"grid",gap:8}}>
            {s.problems.map((p,i)=>(
              <div key={i} style={{display:"flex",gap:10,alignItems:"flex-start",fontSize:13,color:"var(--fg-2)",lineHeight:1.55}}>
                <span style={{color:"var(--accent-3)",marginTop:6,width:4,height:4,borderRadius:"50%",background:"var(--accent-3)",flexShrink:0}}/>
                <span>{p}</span>
              </div>
            ))}
          </div>
        </div>
      </div>

      {/* SIMILAR */}
      <div style={{maxWidth:1320,margin:"0 auto",padding:"40px 48px 0"}}>
        <div style={{fontSize:13,color:"var(--fg-3)",fontFamily:"var(--mono)",letterSpacing:".08em",textTransform:"uppercase",marginBottom:18}}>Podobne serie</div>
        <div style={{display:"grid",gridTemplateColumns:"repeat(4, minmax(0,1fr))",gap:20}}>
          {similar.map(x => {
            const scCount = (SERIES_EPISODES[x.id]||[]).reduce((sum,ep)=>sum + (ep.skills?.length||0), 0);
            return (
            <div key={x.id} className="card hover" onClick={()=>{setActiveSeries(x.id);window.scrollTo({top:0,behavior:"smooth"});}} style={{cursor:"pointer"}}>
              <div className="thumb" style={{aspectRatio:"16/10"}}>
                <div className={`mesh ${x.hue||""}`} style={{position:"absolute",inset:0}}/>
                <div className="meta">
                  <span className="chip mono" style={{background:"rgba(0,0,0,.45)",color:"#fff",backdropFilter:"blur(8px)"}}>{x.episodes} odc.</span>
                  {scCount>0 && <span className="chip mono" style={{background:"rgba(167,139,250,.22)",color:"#fff",backdropFilter:"blur(8px)",border:"1px solid rgba(167,139,250,.35)",fontSize:10}}>● {scCount} scen.</span>}
                </div>
                <div className="label">{x.title}</div>
              </div>
              <div className="card-body" style={{padding:"12px 16px"}}>
                <div className="muted" style={{fontSize:12}}>{x.host}</div>
              </div>
            </div>
            );
          })}
        </div>
      </div>
    </div>
  );
};

Object.assign(window, { SeriesList, SeriesDetail });

// ————————————————————————————————————————————————————————
// MyTasksSlider — "Continue watching" styled task row under hero
// ————————————————————————————————————————————————————————

const MT_TASKS = [
  {id:"t1", skill:"s-feedback-trudny", program:"Liderzy AI Q2", hr:"Marta W.",    deadline:"28 kwi", days:7,  mode:"required",  status:"in-progress", progress:40, hue:"default"},
  {id:"t3", skill:"s-change-opor",     program:"Liderzy AI Q2", hr:"Marta W.",    deadline:"28 kwi", days:7,  mode:"required",  status:"in-progress", progress:25, hue:"amber"},
  {id:"t4", skill:"s-change-kom",      program:"Onboarding PM", hr:"Piotr N.",    deadline:"12 kwi", days:-2, mode:"required",  status:"overdue",     progress:60, hue:"teal"},
  {id:"t2", skill:"s-struktura",       program:"Liderzy AI Q2", hr:"Marta W.",    deadline:"5 maj",  days:14, mode:"required",  status:"new",         progress:0,  hue:"default"},
  {id:"t6", skill:"s-delegacja",       program:"Rozwój 1:1",    hr:"Marta W.",    deadline:null,     days:null,mode:"suggested", status:"new",         progress:0,  hue:"teal"},
];

const MyTasksSlider = ({setRoute, setActiveScenario}) => {
  const tasks = MT_TASKS;
  return (
    <div style={{marginBottom:56}}>
      <div style={{maxWidth:1440,margin:"0 auto",padding:"0 64px 16px",display:"flex",justifyContent:"space-between",alignItems:"baseline"}}>
        <div>
          <h2 style={{fontFamily:"var(--serif)",fontSize:26,letterSpacing:"-.01em",fontWeight:400,margin:0}}>Moje <em style={{fontStyle:"italic",color:"var(--accent-3)"}}>zadania</em></h2>
          <div style={{fontSize:12,color:"var(--fg-3)",marginTop:4}}>Przypisane przez HR · wróć do tego, co zacząłeś</div>
        </div>
        <button className="btn link" onClick={()=>setRoute("my-tasks")} style={{fontSize:12}}>
          Zobacz wszystkie ({tasks.length}) <Icon name="arrow-right" size={11}/>
        </button>
      </div>
      <div style={{padding:"0 64px",overflowX:"auto",maxWidth:"100vw"}}>
        <div style={{display:"grid",gridAutoFlow:"column",gridAutoColumns:"minmax(300px, 300px)",gap:14,paddingBottom:10}}>
          {tasks.map(t => {
            const s = SKILLS.find(x=>x.id===t.skill);
            const isOverdue = t.status==="overdue";
            const isInProgress = t.status==="in-progress";
            const badgeColor = isOverdue ? "#ef4444" : t.mode==="required" ? "#a78bfa" : "#64748b";
            const badgeLabel = isOverdue ? "PRZETERMINOWANE" : t.mode==="required" ? "OBOWIĄZKOWE" : "SUGEROWANE";
            return (
              <div key={t.id}
                onClick={()=>{ setActiveScenario(getScenarioForSkill(t.skill, s.name)); setRoute("briefing"); }}
                style={{
                  cursor:"pointer",
                  background:"#151521",
                  border:"1px solid rgba(255,255,255,.06)",
                  borderRadius:10,
                  overflow:"hidden",
                  display:"flex",flexDirection:"column",
                  transition:"border-color .15s, transform .15s",
                }}
                onMouseEnter={e=>{ e.currentTarget.style.borderColor="rgba(255,255,255,.15)"; e.currentTarget.style.transform="translateY(-2px)"; }}
                onMouseLeave={e=>{ e.currentTarget.style.borderColor="rgba(255,255,255,.06)"; e.currentTarget.style.transform="none"; }}>
                {/* Thumb strip */}
                <div style={{position:"relative",height:100,overflow:"hidden"}}>
                  <div className={`mesh ${t.hue}`} style={{position:"absolute",inset:0}}/>
                  <div style={{position:"absolute",inset:0,background:"linear-gradient(180deg, rgba(0,0,0,.1) 0%, rgba(0,0,0,.75) 100%)"}}/>
                  {/* Play overlay on hover could go here */}
                  <div style={{position:"absolute",top:10,left:10,display:"flex",gap:6}}>
                    <span style={{
                      fontSize:9,letterSpacing:".08em",fontFamily:"var(--mono)",
                      padding:"3px 7px",borderRadius:4,
                      background:`${badgeColor}22`,color:badgeColor,
                      border:`1px solid ${badgeColor}55`,
                      backdropFilter:"blur(6px)",
                    }}>{badgeLabel}</span>
                  </div>
                  {/* Progress bar (if in progress) */}
                  {t.progress > 0 && (
                    <div style={{position:"absolute",left:0,right:0,bottom:0,height:3,background:"rgba(255,255,255,.1)"}}>
                      <div style={{height:"100%",width:`${t.progress}%`,background:isOverdue?"#ef4444":"#e11d48"}}/>
                    </div>
                  )}
                </div>
                {/* Body */}
                <div style={{padding:"12px 14px 14px",display:"flex",flexDirection:"column",gap:6,flex:1}}>
                  <div style={{fontSize:14,color:"#fff",lineHeight:1.35,fontWeight:500,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}}>
                    {s?.name || t.skill}
                  </div>
                  <div style={{fontSize:11,color:"rgba(255,255,255,.5)",fontFamily:"var(--mono)",letterSpacing:".03em"}}>
                    {t.program} · od {t.hr}
                  </div>
                  <div style={{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:4,paddingTop:8,borderTop:"1px solid rgba(255,255,255,.05)"}}>
                    <div style={{fontSize:11,color:isOverdue?"#ef4444":"rgba(255,255,255,.65)"}}>
                      {t.deadline ? (
                        t.days < 0 ? `${Math.abs(t.days)} dni po terminie` :
                        t.days === 0 ? "dziś" :
                        `za ${t.days} dni`
                      ) : "bez terminu"}
                    </div>
                    <div style={{fontSize:11,color:"#a78bfa",display:"inline-flex",alignItems:"center",gap:4}}>
                      {isInProgress ? "Kontynuuj" : "Zacznij"} <Icon name="arrow-right" size={10}/>
                    </div>
                  </div>
                </div>
              </div>
            );
          })}
        </div>
      </div>
    </div>
  );
};
