// app.jsx — Deck orchestrator for "Mediaset Infinity · Building the Next
// European Media Platform" (Brief C · Hybrid Deck handoff). 27 narrative
// slides + 1 appendix. Five slides (14/18/21/24/25) carry the strategic
// weight; three slides (01/26/27) host the dot-cloud morph iframes that are
// the visual signature of this cinematic version.

const SLIDES = [
  // ═════════════════════════════════════════════════════════════════════════
  // 01 · COVER (Mediaset Infinity morph + 4-bucket LongScroll preview)
  // The cover is hybrid: morph iframe + title at top (the brand arrival),
  // then scroll DOWN to reveal the 4 buckets as clickable action cards
  // (v2 pattern). Click any card to jump to its deck slide.
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'MorphScroll', scheme: 'purpleDeep', sectionId: 'open',
    shortLabel: '01 · Cover · 4 Buckets',
    panelColor: 'purpleMid',
    iframeSrc: 'mediaset-morph/index.html?embed=1&state=infinity&color=brand',
    iframeWidth: 1200, iframeHeight: 380,
    iframeTop: 130,
    kicker: 'MFE Group · Documento Interno · Maggio 2026',
    title: 'BUILDING\nTHE NEXT EUROPEAN\nMEDIA PLATFORM',
    subtitle: 'Mediaset Infinity 2026 — 2030 · Quattro shifts, sedici azioni, una piattaforma. Scorri giù per esplorare i 4 bucket, oppure usa ← → per navigare il deck.',
    scrollHint: 'Scorri per i 4 bucket',
    sections: [
      {
        stat: '01', label: 'CONTENT & IP ENGINE', bucketId: 'b1',
        body: 'Produrre storie locali progettate per diventare europee. 4 azioni: European IP Studio, MFE Creator TV, Always-On IP Ecosystems, Vertical First Studio. Clicca su una card per esplorare.',
        thumbs: [
          { actionId: '#01', label: 'European IP Studio',       src: __a('show-drama', 'jpg'),      x: 0.16, y: 0.38, w: 240, h: 300, rotate: -5, slideIdx: 5 },
          { actionId: '#02', label: 'MFE Creator TV',           src: __a('presenter-1', 'jpg'),     x: 0.16, y: 0.62, w: 240, h: 300, rotate: 4,  slideIdx: 6 },
          { actionId: '#03', label: 'Always-On IP Ecosystems',  src: __a('show-young', 'jpg'),      x: 0.84, y: 0.38, w: 240, h: 300, rotate: 5,  slideIdx: 7 },
          { actionId: '#04', label: 'Vertical First Studio',    src: __a('show-male', 'jpg'),       x: 0.84, y: 0.62, w: 240, h: 300, rotate: -4, slideIdx: 8 },
        ],
      },
      {
        stat: '02', label: 'DISCOVERY & EXPERIENCE', bucketId: 'b2',
        body: 'L\'esperienza utente premium come quella social, senza perdere la qualità del premium TV. 4 azioni: Infinity Flow, Device-Native UX, Performance Room, Editorial Promotion.',
        thumbs: [
          { actionId: '#05', label: 'Infinity Flow',         src: __a('presenter-1', 'jpg'),    x: 0.16, y: 0.38, w: 240, h: 300, rotate: 4,  slideIdx: 10 },
          { actionId: '#06', label: 'Device-Native UX',      src: __a('show-tv', 'jpg'),        x: 0.16, y: 0.62, w: 240, h: 300, rotate: -3, slideIdx: 11 },
          { actionId: '#07', label: 'Performance Room',      src: __a('presenter-2', 'jpg'),    x: 0.84, y: 0.38, w: 240, h: 300, rotate: -5, slideIdx: 12 },
          { actionId: '#08', label: 'Editorial Promotion',   src: __a('show-dance', 'jpg'),     x: 0.84, y: 0.62, w: 240, h: 300, rotate: 3,  slideIdx: 13 },
        ],
      },
      {
        stat: '03', label: 'DISTRIBUTION & SCALE', bucketId: 'b3',
        body: 'Infinity, Joyn e Mitele al centro. Tutto il resto è amplificatore. 4 azioni: Owned First, YouTube Embassy, CTV Home Screen, European Identity Layer.',
        thumbs: [
          { actionId: '#09', label: 'Owned First, Distributed 2nd', src: __a('show-couple', 'jpg'),     x: 0.16, y: 0.38, w: 240, h: 300, rotate: -4, slideIdx: 15 },
          { actionId: '#10', label: 'YouTube Embassy',              src: __a('show-young', 'jpg'),      x: 0.16, y: 0.62, w: 240, h: 300, rotate: 3,  slideIdx: 16 },
          { actionId: '#11', label: 'CTV Home Screen War',          src: __a('show-tv', 'jpg'),         x: 0.84, y: 0.38, w: 240, h: 300, rotate: 5,  slideIdx: 17 },
          { actionId: '#12', label: 'European Identity Layer',      src: __a('content-collage', 'jpg'), x: 0.84, y: 0.62, w: 240, h: 300, rotate: -3, slideIdx: 18 },
        ],
      },
      {
        stat: '04', label: 'MONETIZATION & DATA', bucketId: 'b4',
        body: 'AdManager live da 18 mesi. La domanda non è "lanciamo" — è "scaliamo". 4 azioni: AdManager Self-Service, Shoppable + Distributed, Audience Intelligence, ADV mandate cross-MFE.',
        thumbs: [
          { actionId: '#13', label: 'AdManager Self-Service',  src: __a('show-female', 'jpg'),     x: 0.16, y: 0.38, w: 240, h: 300, rotate: -5, slideIdx: 20 },
          { actionId: '#14', label: 'Shoppable + FAST EU',     src: __a('show-dance', 'jpg'),      x: 0.16, y: 0.62, w: 240, h: 300, rotate: 4,  slideIdx: 21 },
          { actionId: '#15', label: 'Audience Intelligence',   src: __a('content-collage', 'jpg'), x: 0.84, y: 0.38, w: 240, h: 300, rotate: 5,  slideIdx: 22 },
          { actionId: '#16', label: 'ADV mandate cross-MFE',   src: __a('show-couple', 'jpg'),     x: 0.84, y: 0.62, w: 240, h: 300, rotate: -4, slideIdx: 22 },
        ],
      },
    ],
    moreStories: [
      { shortLabel: 'Bucket 01 · Content Engine',  thumb: __a('show-drama', 'jpg'),      imagePos: 'center 25%', slideIdx: 4 },
      { shortLabel: 'Bucket 02 · Discovery',        thumb: __a('show-presenters', 'jpg'), imagePos: 'center 25%', slideIdx: 9 },
      { shortLabel: 'Bucket 03 · Distribution',     thumb: __a('show-male', 'jpg'),       imagePos: 'center 25%', slideIdx: 14 },
      { shortLabel: 'Bucket 04 · Monetization',     thumb: __a('show-female', 'jpg'),     imagePos: 'center 30%', slideIdx: 19 },
    ],
    source: 'Mediaset Infinity · Statista GCS · OMDIA · maggio 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 02 · Non siamo più broadcaster italiani · 22-25M MAU
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Claim', scheme: 'nearBlack', sectionId: 'open',
    shortLabel: '02 · Non più broadcaster IT',
    panelColor: 'purpleMid',
    kicker: 'Apertura · Framing storico',
    statement: 'MFE non è più\nun broadcaster italiano.\nÈ un gruppo media europeo.',
    body: 'Mediaset Italia. Mediaset España. ProSiebenSat.1 in Germania e Austria. Partnership con Impresa in Portogallo, TV2 in Ungheria, TF1, Channel 4, Talpa. Per la prima volta l\'audience digitale del gruppo ha scala continentale: 22-25 milioni di utenti attivi al mese. Per dare un riferimento, è più di Netflix + Disney+ + Sky in Italia messi insieme (~14M subs combinati) e supera la popolazione attiva online della Spagna o dell\'Australia.',
    killerNumber: '22-25M',
    killerLabel: 'MAU pan-EU · 6,5× il solo perimetro Italia (Infinity IT 3,4M · Mitele ES 2-3M · Joyn DE 16M) · > Netflix + Disney+ + Sky IT combinati · = popolazione online attiva ES o AU',
    source: 'Statista GCS 2026 · OMDIA Online Video 2026 · Subs IT da press dei vari operatori',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 03 · Lo spazio si sta chiudendo · 9% vs 27%
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Claim', scheme: 'purpleBlue', sectionId: 'open',
    shortLabel: '03 · La finestra si chiude',
    panelColor: 'indigo',
    kicker: 'Setup · Burning platform',
    statement: 'La finestra per costruire\nla piattaforma europea\nè adesso. Domani sarà tardi.',
    body: 'AVOD Italia 9%, UK/DE/FR 27%. Diciotto punti di headroom strutturale. ITV plc FY2025: payback ITVX 4 anni in anticipo sul business plan — prima evidenza pubblica EU che la reorg streaming-first ripaga in 36 mesi.',
    killerNumber: '9% vs 27%',
    killerLabel: 'AVOD Italia vs UK/DE/FR · la distanza è la nostra opportunità (e il nostro orologio)',
    quote: 'AVOD market shares still marginal, reflecting the strength of national mainstream broadcasters, MFE/Mediaset above all.',
    quoteAuthor: 'Augusto Preta · ITMedia Consulting · ott 2025',
    source: 'ITMedia/Preta · ott 2025 · ITV plc FY2025 RNS · 4 mar 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 04 · I 4 Shifts strategici · multi-card
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'D', scheme: 'nearBlack', sectionId: 'open',
    shortLabel: '04 · I 4 Shifts strategici',
    panelColor: 'purpleMid',
    title: 'I 4 SHIFTS\nCHE CI PORTANO LÌ',
    subtitle: 'Da broadcaster nazionale a piattaforma europea. Dal catalogo all\'engagement continuo. Dalla distribuzione all\'orchestrazione IP. Dall\'inventory all\'audience & commerce.',
    cols: 2,
    cards: [
      { panel: 'purpleMid', image: __a('show-drama', 'jpg'),      imagePos: 'center 25%', kicker: 'SHIFT 01', title: 'Broadcaster IT → Piattaforma EU', note: 'Federation IT + ES live · DE Q1 2027', slideIdx: 28 },
      { panel: 'indigo',    image: __a('show-presenters', 'jpg'), imagePos: 'center 25%', kicker: 'SHIFT 02', title: 'Catalogo → Engagement continuo', note: 'Infinity Flow · Always-On · Vertical', slideIdx: 29 },
      { panel: 'navy',      image: __a('show-tv', 'jpg'),         imagePos: 'center 30%', kicker: 'SHIFT 03', title: 'Distribuzione → Orchestrazione IP', note: 'Owned First · YouTube Embassy · CTV rail', slideIdx: 30 },
      { panel: 'pink',      image: __a('show-female', 'jpg'),     imagePos: 'center 25%', kicker: 'SHIFT 04', title: 'Inventory → Audience & Commerce', note: 'AdManager pan-MFE · shoppable lead-gen', slideIdx: 31 },
    ],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 05 · BUCKET 1 INTRO · Content & IP Engine (Globe hero + scrollable 4 actions)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'MorphScroll', scheme: 'navy', sectionId: 'b1',
    shortLabel: '05 · B1 · Content & IP Engine',
    thumb: __a('show-drama', 'jpg'), panelColor: 'purpleMid',
    bucket: 'BUCKET 01',
    storyNum: 1,
    heroType: 'globe',
    kicker: 'BUCKET 01 · CONTENT & IP ENGINE',
    title: 'CONTENT &\nIP ENGINE',
    subtitle: 'Produrre storie locali progettate per diventare europee. Crown Jewels che restano in casa. Creator che diventano partner. Show che non si spengono mai. Contenuti vertical nativi che scalano su Infinity Flow.\n\nEuropean IP Studio · MFE Creator TV · Always-On IP Ecosystems · Vertical First Studio.',
    source: 'Bucket 1 · 4 azioni · 41 evidenze nel dossier',
    heroThumbs: [
      { src: __a('show-drama', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-female', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-presenters', 'jpg'), w: 130, h: 180 },
      { src: __a('show-dance', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-male', 'jpg'),       w: 130, h: 180 },
      { src: __a('show-young', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-couple', 'jpg'),     w: 130, h: 180 },
    ],
    // 4 bucket-action preview pages (clickable jump to each detailed slide)
    sections: [
      {
        type: 'bullet', num: '01 · EUROPEAN IP STUDIO',
        heading: 'EUROPEAN IP STUDIO',
        body: 'I diritti restano in casa. Le storie nascono locali, vivono europee. Crown Jewels come asset strategico, cross-platform native approach, sport rights EU deals, new EU formats, creators collab.\n\n→ Slide 06 per il deep-dive (5 sotto-pagine).',
        image: __a('show-drama', 'jpg'),
        sourceMeta: 'Azione 01 · 5 pillars · vai a slide 06 per dettaglio',
      },
      {
        type: 'bullet', num: '02 · MFE CREATOR TV',
        heading: 'MFE CREATOR TV',
        body: 'Creator premium dentro un ecosistema broadcaster. Non creator economy "grezza". Creator + TV grammar + produzione premium. Modello cantera, OTT-first amplificato dai lineari, multiplier IPA 3,35×.\n\n→ Slide 07 per il deep-dive (4 sotto-pagine).',
        image: __a('presenter-1', 'jpg'),
        sourceMeta: 'Azione 02 · 4 pillars · vai a slide 07 per dettaglio',
      },
      {
        type: 'bullet', num: '03 · ALWAYS-ON IP ECOSYSTEMS',
        heading: 'ALWAYS-ON IP ECOSYSTEMS',
        body: 'Ogni grande show diventa ecosistema continuo. Non più la stagione, l\'IP che vive 12 mesi. Clips, backstage, podcasts, community, fandom, commerce. GF prototipo, 215K membri.\n\n→ Slide 08 per il deep-dive (4 sotto-pagine).',
        image: __a('show-young', 'jpg'),
        sourceMeta: 'Azione 03 · 4 pillars · vai a slide 08 per dettaglio',
      },
      {
        type: 'bullet', num: '04 · VERTICAL FIRST STUDIO',
        heading: 'VERTICAL FIRST STUDIO',
        body: 'Vertical native dentro Infinity Flow. Fascino × Witty TV pilot microdrama "Tutto in una notte" apr 2026. Mediaset Infinity microdrama/verts giugno 2026. YouTube Shorts: 2 mld ore/mese su CTV.\n\n→ Slide 09 per il deep-dive.',
        image: __a('show-male', 'jpg'),
        sourceMeta: 'Azione 04 · vai a slide 09 per dettaglio',
      },
    ],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 06 · EUROPEAN IP STUDIO · MorphScroll carousel · 5 sub-pages
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'MorphScroll', scheme: 'nearBlack', sectionId: 'b1',
    shortLabel: '06 · European IP Studio',
    panelColor: 'purpleMid', thumb: __a('show-drama', 'jpg'),
    kicker: 'Azione 01 · Bucket Content & IP Engine',
    title: 'EUROPEAN\nIP STUDIO',
    subtitle: 'I diritti restano in casa. Le storie nascono locali, vivono europee.',
    sections: [
      {
        type: 'bullet', num: '01 · CROWN JEWELS COME RAISON D\'ÊTRE',
        heading: 'CROWN JEWELS COME RAISON D\'ÊTRE',
        body: 'I crown jewels sono i format identificanti MFE: 30% unscripted, 15% scripted, ad alto potere trasformativo sull\'audience digitale. Non sono solo palinsesto, ma asset strategici di resilienza e sostenibilità. La regola è semplice: chi controlla i diritti controlla la relazione con l\'utente. Disney lo ha dimostrato ritirando Marvel da Netflix nel 2022.',
        image: __a('show-drama', 'jpg'),
        sourceMeta: 'Disney · feb 2022',
      },
      {
        type: 'bullet', num: '02 · CROSS-PLATFORM NATIVE APPROACH',
        heading: 'CROSS-PLATFORM NATIVE APPROACH',
        body: 'Ogni crown jewel nasce con un playbook cross-platform integrato già in sviluppo: prima, durante e dopo, tra owned e third party. Reality, entertainment, factual, scripted e sport seguono ruleset dedicati. Shared rights strategy pan-MFE, metadata cross-border e AI localization riducono il costo di adattamento. Local-first come origine, global-scale come design.',
        image: __a('content-collage', 'jpg'),
        sourceMeta: 'Playbook MFE · 2026',
      },
      {
        type: 'bullet', num: '03 · SPORT RIGHTS EU DEALS',
        heading: 'SPORT RIGHTS EU DEALS',
        body: 'Lo sport è appointment to view: l\'unico contenuto che porta utenti in piattaforma in modo prevedibile e ricorrente. Streamer, YouTube e TikTok lo usano come motore di acquisizione. MFE presidia il mercato EU con diritti di prima e seconda fascia, distribuiti tra country secondo logiche costo/beneficio, facendo della piattaforma il luogo privilegiato per vivere lo sport in modo personale.',
        image: __a('show-male', 'jpg'),
        sourceMeta: 'ATP Finals 2026-2028 signed · feb 2026',
      },
      {
        type: 'bullet', num: '04 · NEW EU CROWN JEWELS FORMATS',
        heading: 'NEW EU CROWN JEWELS FORMATS',
        body: 'MFE diventa una Content Factory europea: progettare, acquistare, incubare e distribuire nuovi scripted ed entertainment format su scala continentale. Mare Fuori dimostra che un IP locale può diventare riferimento culturale europeo. L\'obiettivo è industrializzare questa capacità: meno dipendenza dal singolo successo, più sviluppo sistematico di IP. La piattaforma diventa anche incubatore di nuovi talenti per l\'era Total Video.',
        image: __a('show-young', 'jpg'),
        sourceMeta: 'Benchmark Mare Fuori · 2020-2026',
      },
      {
        type: 'bullet', num: '05 · CREATORS COLLAB',
        heading: 'CREATORS COLLAB',
        body: 'I creator non sono solo distribuzione, ma partner editoriali. La strategia è talent grassrooting: identificare creator premium e portarli in piattaforma con logica cantera. OTT nativo, amplificato dai lineari del gruppo: Cuatro, P7, Italia 1. Il punto chiave è la TV grammar: non contenuti da feed, ma IP premium, brand-safe e inseriti in un ecosistema editoriale ad alto valore adv.',
        image: __a('presenter-1', 'jpg'),
        sourceMeta: 'Cantera model · OTT-first, broadcast-amplified',
      },
    ],
    source: 'European IP Studio · 5 pillars · indirizzo strategico Cardani',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 07 · MFE CREATOR TV · MorphScroll carousel · 4 sub-pages
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'MorphScroll', scheme: 'purpleBlue', sectionId: 'b1',
    shortLabel: '07 · MFE Creator TV',
    panelColor: 'indigo', thumb: __a('presenter-1', 'jpg'),
    kicker: 'Azione 02 · Bucket Content & IP Engine',
    title: 'MFE\nCREATOR TV',
    subtitle: 'Creator premium dentro un ecosistema broadcaster. Non creator economy "grezza". Ma creator + TV grammar + produzione premium.',
    sections: [
      {
        type: 'bullet', num: '01 · CREATOR-FIRST, BROADCAST-READY',
        heading: 'CREATOR-FIRST, BROADCAST-READY',
        body: 'MFE Creator TV non è un canale YouTube brandizzato Mediaset. È un nuovo layer editoriale: creator selezionati su verticali ad alto valore adv (true crime, sport, travel, food, infotainment, culture, documentary) sviluppati con linguaggio televisivo, standard produttivi premium e distribuzione nativa OTT. Il contenuto nasce digitale e, quando scala, viene amplificato sui canali lineari del gruppo.',
        image: __a('presenter-1', 'jpg'),
        sourceMeta: 'Nuovo layer editoriale · OTT-first',
      },
      {
        type: 'bullet', num: '02 · IL MODELLO GIUSTO NON È LA FACTORY',
        heading: 'IL MODELLO GIUSTO NON È LA FACTORY',
        body: 'Le creator factory dei broadcaster hanno quasi sempre distrutto valore: Quibi, France TV Slash, BBC Three separato. Il modello che funziona è un altro: partnership editoriali, revenue-share e IP condivisi. Channel 4 con 4Studio ha costruito crescita e monetizzazione senza centralizzare la produzione. MFE deve agire come embassy dei creator premium, non come content farm.',
        image: __a('show-presenters', 'jpg'),
        sourceMeta: 'Quibi · BBC Three · France TV Slash · case studies 2017-2023',
      },
      {
        type: 'bullet', num: '03 · PREMIUM ADV NATIVO',
        heading: 'PREMIUM ADV NATIVO',
        body: 'Il vantaggio competitivo è il contesto editoriale controllato: brand safety, produzione premium e first-party data. WARC IPA 2025 certifica un multiplier 3,35× per modelli broadcaster + creator + amplification. Non è sperimentazione creator economy: è un nuovo formato media con economics già validati.',
        image: __a('show-female', 'jpg'),
        sourceMeta: 'WARC IPA · 2025 · multiplier 3,35×',
      },
      {
        type: 'bullet', num: '04 · LA CANTERA CHE ALIMENTA IL PALINSESTO',
        heading: 'LA CANTERA CHE ALIMENTA IL PALINSESTO',
        body: 'I creator che performano sulla piattaforma ottengono finestre di visibilità su Cuatro, P7, Italia 1. La cantera digitale alimenta il lineare. Il lineare legittima il creator. Il loop aumenta reach, valore editoriale e monetizzazione su entrambi i lati.',
        image: __a('presenter-2', 'jpg'),
        sourceMeta: 'Modello cantera · OTT-first, broadcast-amplified',
      },
    ],
    source: 'MFE Creator TV · 4 pillars · indirizzo strategico',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 08 · ALWAYS-ON IP ECOSYSTEMS · MorphScroll carousel · 4 sub-pages
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'MorphScroll', scheme: 'magenta', sectionId: 'b1',
    shortLabel: '08 · Always-On IP Ecosystems',
    panelColor: 'pink', thumb: __a('show-young', 'jpg'),
    kicker: 'Azione 03 · Bucket Content & IP Engine',
    title: 'ALWAYS-ON\nIP ECOSYSTEMS',
    subtitle: 'Ogni grande show diventa ecosistema continuo. Non più la stagione, l\'IP che vive 12 mesi.',
    sections: [
      {
        type: 'bullet', num: '01 · DALLA STAGIONE ALL\'IP CHE VIVE 12 MESI',
        heading: 'DALLA STAGIONE ALL\'IP CHE VIVE 12 MESI',
        body: 'La metrica non è più il rating della prima serata, ma il tempo di engagement annuale sull\'IP. Love Island e Drag Race dimostrano che un format può vivere oltre la messa in onda, trasformandosi in community culturale permanente. Cambia l\'unità di misura — e con essa il modo di costruire valore.',
        image: __a('show-female', 'jpg'),
        sourceMeta: 'Love Island ITV · Drag Race franchise · benchmark global',
      },
      {
        type: 'bullet', num: '02 · OGNI SHOW DIVENTA UN ECOSISTEMA',
        heading: 'OGNI SHOW DIVENTA UN ECOSISTEMA',
        body: 'Ogni grande IP sviluppa layer continui di relazione con l\'audience: clips, backstage, podcasts, community, fandom, commerce, social moments. L\'obiettivo non è prolungare il programma, ma mantenere viva la relazione tutto l\'anno. L\'ecosistema è la nuova unità di prodotto.',
        image: __a('show-young', 'jpg'),
        sourceMeta: '7 layer continui · clips · podcasts · community · commerce',
      },
      {
        type: 'bullet', num: '03 · IL MODELLO ESISTE GIÀ DENTRO MFE',
        heading: 'IL MODELLO ESISTE GIÀ DENTRO MFE',
        body: 'Grande Fratello è il prototipo: community attiva (215K membri Infinity), live 24/7, podcast, backstage, clip e fandom social. Anche Amici mostra dinamiche già consolidate. Manca la sistematizzazione pan-MFE: trasformare singoli successi in un framework replicabile su tutto il portfolio IP.',
        image: __a('show-presenters', 'jpg'),
        sourceMeta: 'GF community Infinity · 215K membri attivi · PrimaOnline + Messaggero 2025',
      },
      {
        type: 'bullet', num: '04 · IL VALORE DEL LOOP ALWAYS-ON',
        heading: 'IL VALORE DEL LOOP ALWAYS-ON',
        body: 'Ogni interazione genera first-party data, alimenta il targeting adv e apre layer commerce e sponsorship contestuale. L\'inserzionista non compra più uno spot, ma un ecosistema continuo di touchpoint premium, con audience profilata e brand-safe su scala europea.',
        image: __a('content-collage', 'jpg'),
        sourceMeta: 'Sponsorship contestuale · audience profilata · brand-safe EU scale',
      },
    ],
    source: 'Always-On IP Ecosystems · 4 pillars · indirizzo strategico',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 09 · Vertical Commissioning ⚠ riformulato · 2 mld
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Claim', scheme: 'purpleBlue', sectionId: 'b1',
    shortLabel: '09 · Vertical ⚠ riformulato',
    panelColor: 'indigo',
    kicker: 'Azione 04 · Vertical Commissioning · ⚠ Riformulato',
    statement: 'Vertical native dentro Infinity Flow.\nLa finestra è aperta — e siamo già dentro.',
    body: 'Netflix Clips, Disney Verts, Amazon Prime Clips lanciato mag 2026. Fascino × Witty TV pilot microdrama "Tutto in una notte" apr 2026. Mediaset Infinity microdrama/verts giugno 2026. Il pivot non è ipotesi: è calendario.',
    killerNumber: '2 mld',
    killerSuffix: ' ore/mese',
    killerLabel: 'YouTube Shorts su CTV · la categoria è già massiva, non emergente',
    source: 'Italia Oggi · 12 mag + 16 apr 2026 · OMDIA · ott 2025',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 10 · BUCKET 2 INTRO · Discovery & Experience
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Globe', scheme: 'purpleBlue', sectionId: 'b2',
    shortLabel: '10 · B2 · Discovery & Experience',
    thumb: __a('show-presenters', 'jpg'), panelColor: 'indigo',
    bucket: 'BUCKET 02',
    storyNum: 2,
    title: 'DISCOVERY &\nEXPERIENCE',
    subtitle: 'L\'esperienza utente deve diventare premium come quella social. Senza perdere la qualità del premium TV. Flow · Device-Native UX · Performance Room · Editorial Promotion.',
    source: 'Bucket 2 · 4 azioni · 18 evidenze + 45 cross-Shifts',
    thumbs: [
      { src: __a('presenter-1', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-presenters', 'jpg'), w: 130, h: 180 },
      { src: __a('show-tv', 'jpg'),         w: 130, h: 180 },
      { src: __a('presenter-2', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-male', 'jpg'),       w: 130, h: 180 },
      { src: __a('show-dance', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-young', 'jpg'),      w: 130, h: 180 },
    ],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 11 · Infinity Flow
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'purpleBlue', sectionId: 'b2',
    shortLabel: '11 · Infinity Flow',
    panelColor: 'indigo', thumb: __a('show-dance', 'jpg'),
    kicker: 'Azione 05 · Infinity Flow',
    title: 'LA FACILITÀ DEL SOCIAL,\nLA QUALITÀ DEL PREMIUM',
    blocks: [
      { h: 'Top SVOD globali · validazione', p: 'Netflix Fast Laughs dal 2020. Disney+ For You dal 2021. YouTube Shorts dal 2020. Tutti hanno il feed dentro l\'app principale.' },
      { h: 'Lezione 2024 · Netflix Fast Laughs', p: 'Ridimensionato per cannibalizzazione long-form. Il vertical è hook, non destination. KPI: conversion al long-form.' },
      { h: 'Mediaset Infinity Flow · giugno 2026', p: 'Non parte da zero: commissioning verticale operativo dal lancio microdrama giu 2026 (Fascino × Witty pilot apr 2026).' },
    ],
    image: __a('show-dance', 'jpg'),
    imagePos: 'center 25%',
    figureCaption: 'Infinity Flow · live giugno 2026',
    source: 'Netflix Newsroom · 2024 · Italia Oggi · 12 mag 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 12 · Device-Native UX · 6-8s vs <3s
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Claim', scheme: 'nearBlack', sectionId: 'b2',
    shortLabel: '12 · Device-Native UX',
    panelColor: 'navy',
    kicker: 'Azione 06 · Device-Native UX',
    statement: 'Non la stessa app ovunque.\nTre cantieri misurabili.',
    body: 'Voice-first search. Profile portability + handoff mobile↔TV stile Apple Continuity. HBO Max rebrand fragmentation 2023. Quibi UX premium senza pubblico. Apple Continuity adoption basso fuori ecosistema chiuso. Non c\'è scorciatoia — disciplina di execution.',
    killerNumber: '6-8s',
    killerSuffix: ' vs <3s',
    killerLabel: 'Infinity vs Netflix · launch-to-play (stima). Tempo dal launch al play.',
    source: 'HBO Max rebrand reports · 2023 · Apple Support · 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 13 · Performance Room ⚠ riformulato · €5-15M saving
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'navy', sectionId: 'b2',
    shortLabel: '13 · Performance Room ⚠ riformulato',
    panelColor: 'navy', thumb: __a('show-tv', 'jpg'),
    kicker: 'Azione 07 · Performance Room · ⚠ Riformulato',
    title: 'LA DATA-ROOM\nEDITORIALE CHE MANCA',
    blocks: [
      { h: 'Auditel Total Audience · live da dic 2024', p: 'MFE, RAI, La7 co-firmatari. 51% del tempo TV italiano è già su CTV. La data c\'è — manca il workflow editoriale.' },
      { h: 'Loop chiuso dati → decisione settimanale', p: 'Raccogliamo → Analizziamo → Decidiamo → Agiamo → Misuriamo. Trasforma audience in commissioning/scheduling/promo/pricing.' },
      { h: 'Benchmark Netflix · House of Cards', p: '$100M approvato senza pilot usando binge velocity + behavioral overlap. La data-room non è dashboard, è leva di decisione.' },
      { h: 'Investimento · €1-3M', p: 'Saving annuo €5-15M · payback < 12 mesi. La priorità non è il live interattivo per l\'utente, è il loop interno.' },
    ],
    image: __a('show-tv', 'jpg'),
    imagePos: 'center 35%',
    figureCaption: 'Auditel Total Audience · workflow editoriale',
    source: 'Primaonline + Il Post · dic 2024 · StackAdapt + AdvancedTV · feb 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 14 · EDITORIAL PROMOTION · LongScroll (4 deep-dive sections)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'LongScroll', scheme: 'magenta', sectionId: 'b2',
    shortLabel: '14 Editorial Promotion',
    panelColor: 'pink', thumb: __a('show-female', 'jpg'),
    kicker: 'Azione 08 · Editorial Promotion · Slide chiave',
    storyNum: 8,
    title: 'ABBIAMO GIÀ\nLA PROVA INTERNA',
    subtitle: 'Mediaset ha l\'asset promozionale più potente d\'Europa. E ha già la prova interna, due volte quantificata, che Infinity-as-platform amplifica il lineare. Scorri per i 4 decision-card.',
    image: __a('show-female', 'jpg'),
    imagePos: 'center 30%',
    sections: [
      {
        stat: '+60', suffix: '%',
        label: 'VIOLA COME IL MARE 2 · CANALE 5 vs S1',
        body: 'TESI · La prima evidenza interna che Infinity-as-platform amplifica il lineare. +60% audience Canale 5 vs S1, 12,5M ore on-demand, #1 contenuto on-demand del periodo.   DOMANDA · Trattiamo Infinity come prima finestra o resta accessorio?   ✓ RACCOMANDAZIONE A · First window 2-3 titoli/anno con marketing dedicato ≥€500K. L\'editore deve decidere ora se Infinity è una piattaforma o un\'app companion.   ⚠ RISCHIO · senza decisione formale, ogni first-window dipende dal singolo prodotto. Barbie si ripete ogni 3 mesi.',
        thumbs: [
          { src: __a('show-female', 'jpg'),    x: 0.16, y: 0.22, w: 170, h: 110, rotate: -5, opacity: 0.88 },
          { src: __a('show-drama', 'jpg'),     x: 0.10, y: 0.62, w: 150, h: 95,  rotate: 4,  opacity: 0.75 },
          { src: __a('content-collage', 'jpg'),x: 0.86, y: 0.28, w: 180, h: 115, rotate: 5,  opacity: 0.82 },
          { src: __a('show-presenters', 'jpg'),x: 0.88, y: 0.68, w: 160, h: 100, rotate: -4, opacity: 0.75 },
        ],
      },
      {
        stat: '+33', suffix: '%',
        label: 'LA TALPA 2024 · LIFT MULTIMEDIALE',
        body: 'TESI · Seconda prova quantificata. Totale multimediale 3,065M = 2,3M Canale 5 + 815K Infinity. Format streaming-native parallelo (La Talpa Detection settimanale).   DOMANDA · Drop strategy: binge full season o weekly classico TV?   ✓ RACCOMANDAZIONE A · Binge (modello Mare Fuori/RaiPlay): 8h on-demand + 1 ep/sett lineare. Viola 12,5M ore on-demand IT 2024 (record).   ⚠ RISCHIO · senza format streaming-native parallelo, perdiamo il lift incrementale.',
        thumbs: [
          { src: __a('show-young', 'jpg'),     x: 0.14, y: 0.26, w: 160, h: 100, rotate: 4,  opacity: 0.85 },
          { src: __a('show-male', 'jpg'),      x: 0.10, y: 0.68, w: 150, h: 95,  rotate: -3, opacity: 0.7 },
          { src: __a('show-tv', 'jpg'),        x: 0.86, y: 0.28, w: 170, h: 110, rotate: -5, opacity: 0.82 },
          { src: __a('show-couple', 'jpg'),    x: 0.88, y: 0.68, w: 160, h: 100, rotate: 3,  opacity: 0.75 },
        ],
      },
      {
        stat: '0', suffix: '%',
        label: 'BARBIE 2023 · IL CONTROFATTUALE',
        body: 'TESI · La controprova. Anteprima Infinity 7-10 giorni. Nessuna promozione coordinata. "Nessuno lo sapeva." Soldi spesi a vuoto (CDO call dic 2023).   NUMERI · 0% lift Canale 5 · 0 visibility · 0 sistematizzazione.   ⚠ RISCHIO · Barbie si ripete ogni 3 mesi senza decisione formale. Un blockbuster Warner ci è già scappato di mano — senza doctrina interna, succederà ancora.',
        thumbs: [
          { src: __a('show-drama', 'jpg'),     x: 0.15, y: 0.30, w: 170, h: 110, rotate: -4, opacity: 0.35, blur: 1 },
          { src: __a('content-collage', 'jpg'),x: 0.85, y: 0.30, w: 170, h: 110, rotate: 4,  opacity: 0.30, blur: 1 },
          { src: __a('show-male', 'jpg'),      x: 0.50, y: 0.74, w: 150, h: 95,  rotate: 0,  opacity: 0.35, blur: 1 },
        ],
      },
      {
        stat: '€60-95', suffix: 'M',
        label: 'SISTEMATIZZARE IL PATTERN · REVENUE ADDIZIONALE LOW',
        body: 'TESI · 3 condizioni operative: promozione coordinata C5 ↔ Infinity · early window 7-14 giorni · format streaming-native parallelo.   DOMANDA · Auto-promo cross-canale come format pubblicitario vendibile a terzi?   ✓ RACCOMANDAZIONE A · Sì: brand integration nelle pillole auto-promo ("Viola torna domenica, presented by X"). €60-95M/anno scenario LOW, €212M mid. Nessun broadcaster EU lo fa: first-mover.   ⚠ RISCHIO · promo come "filler" invece che asset commerciale = lasciamo soldi sul tavolo.',
        thumbs: [
          { src: __a('show-female', 'jpg'),    x: 0.16, y: 0.26, w: 160, h: 100, rotate: -4, opacity: 0.85 },
          { src: __a('show-presenters', 'jpg'),x: 0.84, y: 0.30, w: 160, h: 100, rotate: 4,  opacity: 0.8 },
          { src: __a('show-tv', 'jpg'),        x: 0.12, y: 0.70, w: 150, h: 95,  rotate: 3,  opacity: 0.75 },
          { src: __a('show-young', 'jpg'),     x: 0.88, y: 0.70, w: 160, h: 100, rotate: -3, opacity: 0.75 },
        ],
      },
    ],
    moreStories: [
      { shortLabel: 'CTV Home Screen', thumb: __a('show-tv', 'jpg'),    imagePos: 'center 30%', slideIdx: 17 },
      { shortLabel: 'AdManager',       thumb: __a('show-female', 'jpg'),imagePos: 'center 25%', slideIdx: 20 },
      { shortLabel: 'Cosa è già in moto', thumb: __a('show-couple', 'jpg'), imagePos: 'center 25%', slideIdx: 23 },
    ],
    source: 'ANSA + Quotidiano + Sensemakers · mag 2024 · Affari Italiani + Mediaset Infinity press · nov 2024',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 15 · BUCKET 3 INTRO · Distribution & Scale
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Globe', scheme: 'nearBlack', sectionId: 'b3',
    shortLabel: '15 · B3 · Distribution & Scale',
    thumb: __a('show-male', 'jpg'), panelColor: 'navy',
    bucket: 'BUCKET 03',
    storyNum: 3,
    title: 'DISTRIBUTION,\nSCALE & ECOSYSTEM',
    subtitle: 'Infinity, Joyn e Mitele al centro della relazione. Tutto il resto è amplificatore. Owned First · YouTube Embassy · CTV Home Screen S4 · European Identity Layer S1.',
    source: 'Bucket 3 · 4 azioni · 26 evidenze + 66 cross-Shifts',
    thumbs: [
      { src: __a('show-male', 'jpg'),       w: 130, h: 180 },
      { src: __a('show-drama', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-couple', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-tv', 'jpg'),         w: 130, h: 180 },
      { src: __a('show-female', 'jpg'),     w: 130, h: 180 },
      { src: __a('presenter-2', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-young', 'jpg'),      w: 130, h: 180 },
    ],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 16 · Owned First, Distributed Smart · 77% reach
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'navy', sectionId: 'b3',
    shortLabel: '16 · Owned First',
    panelColor: 'navy', thumb: __a('show-couple', 'jpg'),
    kicker: 'Azione 09 · Owned First, Distributed Smart',
    title: 'LA RELAZIONE UTENTE\nNON SI VENDE',
    blocks: [
      { h: 'Dottrina post-2023 · Disney, WBD, Paramount, P7S1', p: 'I library deal del passato hanno estratto cash una-tantum e consegnato la relazione utente al competitor.' },
      { h: 'Anti-pattern MFE · 2018-2022', p: 'Suburra → Netflix. Gomorra → Sky. Cash una-tantum, relazione utente persa.' },
      { h: 'Template MFE · ProSiebenSat.1 sotto Giordani', p: '77% total reach + AVOD +36% YoY consolidando Joyn come destinazione primaria. Lo stesso muscolo si applica a Infinity.' },
      { h: 'Architettura · Owned First, Distributed Smart', p: 'Infinity/Joyn/Mitele al centro. YouTube, Meta, TikTok, aggregator, lineari, internazionali come satelliti — non come destinazioni primarie.' },
    ],
    image: __a('show-couple', 'jpg'),
    imagePos: 'center 25%',
    figureCaption: 'ProSieben 77% reach · template MFE',
    source: 'ProSieben annual report · 2024-2025 · Variety · mar 2025',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 17 · YouTube Embassy · 923K vs 30 canali
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'purpleBlue', sectionId: 'b3',
    shortLabel: '17 · YouTube Embassy',
    panelColor: 'indigo', thumb: __a('show-presenters', 'jpg'),
    kicker: 'Azione 10 · YouTube Embassy',
    title: 'IL CANALE AUTONOMO\nCHE CI MANCA',
    blocks: [
      { h: 'YouTube ≠ funnel · YouTube = canale autonomo', p: 'Non è funnel verso Infinity. È canale di monetizzazione autonomo dove i broadcaster EU stanno già fatturando.' },
      { h: 'Channel 4 · 30 canali tematici', p: 'Team commerciale dedicato. Full-episode views +169% YoY. È un\'asimmetria strutturale.' },
      { h: 'BBC · partnership revenue-share · gen 2026', p: 'BBC e YouTube hanno siglato partnership revenue-share. RaiPlay 915M views/anno. Lega Serie A 10M iscritti.' },
      { h: 'Mediaset Infinity · 1 canale, ~923K iscritti', p: 'KPI non disclosed. La distanza con Channel 4 è 30× sui canali. Non è "se", è "quando".' },
    ],
    image: __a('show-presenters', 'jpg'),
    imagePos: 'center 20%',
    figureCaption: 'Channel 4 4Studio · benchmark EU',
    source: 'Channel 4 annual report · 2025 · BBC press release · gen 2026 · SocialBlade (stima)',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 18 · CTV HOME SCREEN · LongScroll (4 deep-dive sections)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'LongScroll', scheme: 'navy', sectionId: 'b3',
    shortLabel: '18 CTV Home Screen · S4',
    panelColor: 'navy', thumb: __a('show-tv', 'jpg'),
    kicker: 'Azione 11 · S04 · CTV Home Screen · Slide chiave',
    storyNum: 11,
    title: 'L\'UNICA ARMA REGOLATORIA\nCHE NÉ NETFLIX NÉ DISNEY HANNO',
    subtitle: 'AGCOM SIG ottobre 2025 garantisce a Mediaset una posizione di rail home obbligatoria sulle smart TV italiane. Vantaggio strutturale irreplicabile. Tre leve convergono in 12 mesi.',
    image: __a('show-tv', 'jpg'),
    imagePos: 'center 35%',
    sections: [
      {
        stat: 'OTT', suffix: ' 2025',
        label: 'AGCOM SIG · ITALIA · RAIL HOME OBBLIGATORIA',
        body: 'TESI · Rail home obbligatoria su smart TV vendute in IT. RAI/MFE/La7/Sky/WBD inclusi. Né Netflix né Disney+ possono replicarlo.   DOMANDA · Stack addressable: Google primary o multi-vendor?   ✓ RACCOMANDAZIONE A · Google primary + secondary vendor (Magnite/PubMatic) per resilienza. AT&T Xandr $1B write-off + Verizon Oath $4,6B writedown = single-vendor lock-in è anti-pattern.   ⚠ RISCHIO · single-vendor lock-in azzera resilienza commerciale.',
        thumbs: [
          { src: __a('show-tv', 'jpg'),        x: 0.16, y: 0.24, w: 180, h: 115, rotate: -5, opacity: 0.85 },
          { src: __a('show-presenters', 'jpg'),x: 0.10, y: 0.66, w: 150, h: 95,  rotate: 4,  opacity: 0.7 },
          { src: __a('infinity-logo', 'png'),  x: 0.86, y: 0.30, w: 170, h: 108, rotate: 5,  opacity: 0.88 },
          { src: __a('show-couple', 'jpg'),    x: 0.88, y: 0.68, w: 160, h: 100, rotate: -3, opacity: 0.78 },
        ],
      },
      {
        stat: '9', label: 'OFCOM 9-TILE RULE · UK · DIC 2024',
        body: 'TESI · Prominenza PSB obbligatoria su smart TV. Multe a vendor non-compliant. Template eseguibile + replicabile in EU.   IL TEMPLATE · 9 tile PSB obbligatorie · enforcement attivo · vendor lineup pubblico. Cosa funziona, cosa NO, già documentato.   ⚠ RISCHIO · senza replica EU di un meccanismo simile, il vantaggio italiano resta isolato.',
        thumbs: [
          { src: __a('content-collage', 'jpg'),x: 0.50, y: 0.30, w: 220, h: 140, rotate: -3, opacity: 0.85 },
          { src: __a('show-young', 'jpg'),     x: 0.16, y: 0.68, w: 150, h: 95,  rotate: 4,  opacity: 0.75 },
          { src: __a('show-male', 'jpg'),      x: 0.86, y: 0.68, w: 150, h: 95,  rotate: -4, opacity: 0.75 },
        ],
      },
      {
        stat: '23 MAR', suffix: ' 2026',
        label: 'ACT LETTER TO EC · MFE CO-FIRMATARIA',
        body: 'TESI · Lettera ACT/RTL/ProSieben/ITV/France TV alla Commissione UE per includere smart TV OS come gatekeeper DMA. MFE co-firmataria via ACT.   DOMANDA · AVMSD asymmetry vs VSP (YouTube/TikTok/Meta): lobbying attivo?   ✓ RACCOMANDAZIONE A · Lobbying attivo via EBU/ACT per level playing field 2026-2027. Il VSP regulatory gap è il singolo handicap competitivo strutturale dei broadcaster EU.   ⚠ RISCHIO · senza lobbying, smart TV OS resta fuori dal DMA, regole asimmetriche.',
        thumbs: [
          { src: __a('presenter-1', 'jpg'),    x: 0.15, y: 0.28, w: 150, h: 95,  rotate: -3, opacity: 0.8 },
          { src: __a('presenter-2', 'jpg'),    x: 0.50, y: 0.72, w: 160, h: 100, rotate: 3,  opacity: 0.8 },
          { src: __a('show-male', 'jpg'),      x: 0.85, y: 0.30, w: 150, h: 95,  rotate: 4,  opacity: 0.78 },
        ],
      },
      {
        stat: '67', suffix: '%',
        label: 'PERIMETRO · SAMSUNG + LG SMART TV IT',
        body: 'TESI · Samsung 44% + LG 23% = 67% smart TV IT. YouTube 13% CTV viewing. Big Tech (Google + Netflix + Amazon) = 43% concentration CTV ad entro 2030.   DOMANDA · Profilazione minori: come gestiamo DSA Art.28?   ✓ RACCOMANDAZIONE A · Compliance-by-design: feed kids = no profiling, separato. CNIL multa Criteo €44M GDPR + ICO UK 18 multe 2024.   ⚠ RISCHIO · compliance reattiva = multe + reputation hit.',
        thumbs: [
          { src: __a('show-tv', 'jpg'),        x: 0.50, y: 0.30, w: 220, h: 140, rotate: -2, opacity: 0.85 },
          { src: __a('show-female', 'jpg'),    x: 0.15, y: 0.72, w: 150, h: 95,  rotate: -3, opacity: 0.7 },
          { src: __a('show-young', 'jpg'),     x: 0.86, y: 0.72, w: 150, h: 95,  rotate: 3,  opacity: 0.7 },
        ],
      },
    ],
    moreStories: [
      { shortLabel: 'AdManager',         thumb: __a('show-female', 'jpg'), imagePos: 'center 25%', slideIdx: 20 },
      { shortLabel: 'European Identity', thumb: __a('content-collage', 'jpg'), imagePos: 'center',    slideIdx: 18 },
      { shortLabel: 'Cosa è già in moto', thumb: __a('show-couple', 'jpg'), imagePos: 'center 25%', slideIdx: 23 },
    ],
    source: 'AGCOM SIG · ott 2025 · Ofcom · dic 2024 · ACT letter to EC · 23 mar 2026 · Nielsen + OMDIA · 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 19 · European Identity Layer S1 · 22-25M
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'navy', sectionId: 'b3',
    shortLabel: '19 European Identity · S1',
    panelColor: 'purpleMid', thumb: __a('content-collage', 'jpg'),
    kicker: 'Azione 12 · S01 · European Identity Layer',
    title: 'FEDERATION,\nNOT UNIFICATION',
    blocks: [
      { h: 'Stack federato · IT + ES live (mag 2026)', p: 'Stack Infinity IT + Mitele ES front-end e back-end condiviso (confermato Mara, 18 mag 2026). Federation eseguibile in 12-18 mesi.' },
      { h: 'Estensione Joyn DE · Q1 2027', p: 'Joyn DE entra via front-end. La sequenza è phased, non big-bang. 22-25M MAU pan-MFE è il nostro vero peso.' },
      { h: 'Benchmark positivo · RTL Bedrock · apr 2026', p: 'RTL Bedrock: 10M subs / 45M utenti / 6 paesi su unico stack. Federation phased sopravvive ai pattern che hanno ucciso gli altri.' },
      { h: 'Anti-pattern · 3 fallimenti', p: 'Salto FR €135M bruciati su unification governance. Joyn ARD/ZDF Mediathek bloccato LG Köln gen 2025. ACM Netherlands bloccato merger RTL/Talpa mar 2023.' },
    ],
    image: __a('content-collage', 'jpg'),
    imagePos: 'center',
    figureCaption: 'Federation IT + ES · estensione Joyn DE',
    source: 'Risposta Mara · 18 mag 2026 · LG Köln + OLG Köln · gen 2025 · ACM NL · mar 2023 · RTL Group annual report · apr 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 20 · BUCKET 4 INTRO · Monetization
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Globe', scheme: 'magenta', sectionId: 'b4',
    shortLabel: '20 · B4 · Monetization',
    thumb: __a('show-female', 'jpg'), panelColor: 'pink',
    bucket: 'BUCKET 04',
    storyNum: 4,
    title: 'MONETIZATION,\nDATA & ADVERTISING',
    subtitle: 'AdManager è già live da 18 mesi. La domanda al management non è "lanciamo" — è "scaliamo". MFE Total Video · Shoppable · Distributed Monetization · Audience Intelligence AI.',
    source: 'Bucket 4 · 4 azioni · 13 evidenze + 5 INTERNAL primary',
    thumbs: [
      { src: __a('show-female', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-young', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-couple', 'jpg'),     w: 130, h: 180 },
      { src: __a('presenter-1', 'jpg'),     w: 130, h: 180 },
      { src: __a('show-drama', 'jpg'),      w: 130, h: 180 },
      { src: __a('show-tv', 'jpg'),         w: 130, h: 180 },
      { src: __a('show-dance', 'jpg'),      w: 130, h: 180 },
    ],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 21 · ADMANAGER · LongScroll (4 deep-dive sections)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'LongScroll', scheme: 'magenta', sectionId: 'b4',
    shortLabel: '21 AdManager Self-Service',
    panelColor: 'pink', thumb: __a('show-female', 'jpg'),
    kicker: 'Azione 13 · AdManager Self-Service · Slide chiave',
    storyNum: 13,
    title: 'LA MACCHINA PAN-MFE\nÈ GIÀ IN MOTO',
    subtitle: 'Settembre 2024 lancio IT. Marzo 2026 oltre 1.000 PMI attive. Estate 2026 lancio Spagna e Germania sotto framework MFE Advertising. Scorri per i 4 decision-card.',
    image: __a('show-female', 'jpg'),
    imagePos: 'center 30%',
    sections: [
      {
        stat: '1.000', suffix: '+',
        label: 'PMI ATTIVE · MAR 2026 · SCALIAMO O CONSOLIDIAMO?',
        body: 'TESI · 1.000+ PMI attive IT 2026, espansione ES+DE estate 2026. Asset più strategico di MFE come ad-tech leader EU. Decidere se è prodotto core o side-project.   DOMANDA · Scaliamo o consolidiamo?   ✓ RACCOMANDAZIONE A · Scale aggressivo: target 5.000 PMI attive IT + 2.000 ES/DE entro fine 2026. NBCU Peacock SMB +30% net-new 2025, finestra di mercato 12-18 mesi.   ⚠ RISCHIO · se AdManager non diventa il "Shopify of ads EU" in 18 mesi, qualcuno lo costruisce per noi (Magnite ClearLine già si muove).',
        thumbs: [
          { src: __a('show-female', 'jpg'),    x: 0.16, y: 0.24, w: 180, h: 115, rotate: -5, opacity: 0.88 },
          { src: __a('show-drama', 'jpg'),     x: 0.10, y: 0.66, w: 150, h: 95,  rotate: 4,  opacity: 0.75 },
          { src: __a('content-collage', 'jpg'),x: 0.86, y: 0.30, w: 180, h: 115, rotate: 5,  opacity: 0.82 },
          { src: __a('show-presenters', 'jpg'),x: 0.88, y: 0.68, w: 160, h: 100, rotate: -3, opacity: 0.75 },
        ],
      },
      {
        stat: 'API', label: 'OPEN API O CLOSED SYSTEM?',
        body: 'TESI · Ogni canale di acquisto extra = revenue marginale. TUSMA inventory limitata (12 min/h), scarsità da monetizzare.   DOMANDA · Open API o closed system?   ✓ RACCOMANDAZIONE A · Open API → vendor (agenzie SMB, software gestionali) possono integrare ad-buying. Ogni canale di acquisto extra = revenue marginale senza marginal cost di sales.   ⚠ RISCHIO · closed system = single-channel monetization, plateau revenue.',
        thumbs: [
          { src: __a('show-young', 'jpg'),     x: 0.18, y: 0.32, w: 160, h: 100, rotate: -4, opacity: 0.82 },
          { src: __a('presenter-2', 'jpg'),    x: 0.82, y: 0.32, w: 160, h: 100, rotate: 4,  opacity: 0.78 },
          { src: __a('show-couple', 'jpg'),    x: 0.50, y: 0.74, w: 170, h: 110, rotate: -3, opacity: 0.75 },
        ],
      },
      {
        stat: '3', suffix: ' silos',
        label: 'UNIFICARE CRM/SALES CROSS-SILO?',
        body: 'TESI · AdManager × Mediamond × Digitalia = 3 sales force che parlano alla stessa agenzia. Inefficiency strutturale.   DOMANDA · Unificare CRM e sales cross-silo?   ✓ RACCOMANDAZIONE A · Roadmap unificazione 18-24 mesi · commercial layer unico, no platform merger. ITV ha già fatto pivot 2022-24 (-200 linear / +200 digital roles).   ⚠ RISCHIO · reorg dolorosa ma necessaria. Aspettare = peggiorare.',
        thumbs: [
          { src: __a('content-collage', 'jpg'),x: 0.50, y: 0.30, w: 220, h: 140, rotate: -2, opacity: 0.82 },
          { src: __a('show-male', 'jpg'),      x: 0.15, y: 0.72, w: 150, h: 95,  rotate: 4,  opacity: 0.7 },
          { src: __a('show-female', 'jpg'),    x: 0.85, y: 0.72, w: 150, h: 95,  rotate: -3, opacity: 0.7 },
        ],
      },
      {
        stat: '12-18', suffix: ' mesi',
        label: 'ANTICIPO SU NETFLIX SUL TICKET PMI',
        body: 'TESI · La SMB-tier che Netflix sta ancora costruendo è già in production da noi. First-mover advantage EU.   IL VANTAGGIO · MFE AdManager 1.000+ PMI live · Netflix SMB tier annunciato non live · finestra 12-18 mesi. Vendiamo mentre loro costruiscono.   ⚠ RISCHIO · finestra di mercato si chiude. NBCU/Magnite stanno arrivando.',
        thumbs: [
          { src: __a('show-female', 'jpg'),    x: 0.16, y: 0.28, w: 160, h: 100, rotate: -5, opacity: 0.85 },
          { src: __a('show-young', 'jpg'),     x: 0.86, y: 0.28, w: 160, h: 100, rotate: 5,  opacity: 0.8 },
          { src: __a('show-couple', 'jpg'),    x: 0.50, y: 0.74, w: 180, h: 115, rotate: 0,  opacity: 0.82 },
        ],
      },
    ],
    moreStories: [
      { shortLabel: 'Cosa è già in moto', thumb: __a('show-couple', 'jpg'),imagePos: 'center 25%', slideIdx: 23 },
      { shortLabel: 'Cosa solo MFE può fare', thumb: __a('content-collage', 'jpg'), imagePos: 'center', slideIdx: 24 },
      { shortLabel: 'Introducing IN', thumb: __a('infinity-logo', 'png'), imagePos: 'center', slideIdx: 25 },
    ],
    source: 'Brand-News · mar 2026 · Primaonline · 30 set 2024 · Engage · set 2024',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 22 · Shoppable + Distributed Monetization · 71% growth FAST EU
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'nearBlack', sectionId: 'b4',
    shortLabel: '22 · Shoppable + Distributed',
    panelColor: 'pink', thumb: __a('show-dance', 'jpg'),
    kicker: 'Azione 14 · ADV Outside Infinity',
    title: 'SHOPPABLE LEAD-GEN +\nFAST OEM-DRIVEN',
    blocks: [
      { h: 'Shoppable · lead-gen, non transaction', p: 'FreeWheel + Mini hanno format high-intent live su MFE AdManager — CTR + completion sopra media display.' },
      { h: 'USA 2019-2023 · drop-off mobile <2%', p: 'NBCU/Hulu/Roku: in-stream conversion <2%. Lead-gen come priorità, transaction in-stream come capability tecnica secondaria.' },
      { h: 'FAST EU · €630M · +33% YoY', p: '71% del growth è guidato dagli OEM smart TV (Samsung+LG). 3 cantieri MFE: presidio OEM · aggregator controllata · TLC pan-MFE.' },
      { h: 'Distributed · 3 cantieri MFE', p: 'Samsung TV Plus + LG Channels · Prime/Apple TV/set-top · TIM IT, Movistar ES, Deutsche Telekom DE.' },
    ],
    image: __a('show-dance', 'jpg'),
    imagePos: 'center 25%',
    figureCaption: 'FAST EU €630M · +33% YoY',
    source: 'FreeWheel + Mini · 2025 · Industry case histories USA 2019-2023 · Comscore + Nielsen · dic 2025',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 23 · Audience Intelligence + AI Layer · 77% + 36%
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'F', scheme: 'purpleDeep', sectionId: 'b4',
    shortLabel: '23 · Audience Intelligence',
    panelColor: 'purpleMid', thumb: __a('content-collage', 'jpg'),
    kicker: 'Azione 15 · Audience Intelligence + AI Layer',
    title: 'LA CDP È UNICA,\nIL BLOCKER È L\'ATTIVAZIONE',
    blocks: [
      { h: 'CDP Mediaset · già unica', p: 'Il vero blocker non è la data unification — è l\'attivazione cross-channel attraverso i silos Publitalia / Mediamond / Digitalia / RTI.' },
      { h: 'Caveat regolatorio · 3 lezioni', p: 'AT&T Xandr -$600M in 3 anni · Verizon Oath -$4,6B writedown 2018 · Garante IT × 2 sanzioni 24 mesi. Riformulazione: clean-room/federation legale, non unified CDP.' },
      { h: 'Caso positivo · ProSieben sotto Giordani', p: 'Consolidando i silos → 77% total reach + AVOD +36% YoY. RTL Bedrock 10M subs 6 paesi unico stack (apr 2026).' },
      { h: 'ADV mandate cross-MFE · 3 deals', p: 'ADV mandate deals MFE mantengono autonomia dalle negoziazioni content (lesson Disney 2025). 3 opportunità: Disney · WBD / HBO Max · DAZN.' },
    ],
    image: __a('content-collage', 'jpg'),
    imagePos: 'center',
    figureCaption: 'Clean-room federation · 4 silos → 1 platform',
    source: 'ProSieben · 2024-25 · Digiday · dic 2021 · CNBC + Bloomberg · dic 2018 · Garante Privacy IT · 2024',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 24 · COSA È GIÀ IN MOTO · LongScroll (5 proof points)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'LongScroll', scheme: 'purpleDeep', sectionId: 'close',
    shortLabel: '24 Cosa è già in moto',
    panelColor: 'purpleMid', thumb: __a('show-couple', 'jpg'),
    kicker: 'Chiusura · 5 proof point operativi · Slide chiave',
    storyNum: 16,
    title: 'LA PIATTAFORMA EUROPEA\nNON È UN PROGETTO.\nÈ IN COSTRUZIONE.',
    subtitle: 'Cinque proof point operativi, oggi, nel gruppo MFE. Scorri per esplorarli uno a uno.',
    image: __a('show-couple', 'jpg'),
    imagePos: 'center 25%',
    sections: [
      {
        stat: '1.000', suffix: '+',
        label: 'ADMANAGER · LIVE DA 18 MESI',
        body: 'Mediaset AdManager: 1.000+ PMI attive IT a marzo 2026. Settembre 2024 lancio. Ottobre 2025 video aggiunto. Estate 2026: lancio Spagna e Germania sotto framework MFE Advertising. La macchina pan-MFE è già accesa.',
        thumbs: [
          { src: __a('show-female', 'jpg'),    x: 0.18, y: 0.28, w: 170, h: 110, rotate: -4, opacity: 0.85 },
          { src: __a('show-young', 'jpg'),     x: 0.82, y: 0.30, w: 170, h: 110, rotate: 4,  opacity: 0.85 },
          { src: __a('content-collage', 'jpg'),x: 0.50, y: 0.78, w: 200, h: 130, rotate: 0,  opacity: 0.82 },
        ],
      },
      {
        stat: 'IT+ES', suffix: ' live',
        label: 'FEDERATION INFINITY + MITELE · STACK CONDIVISO',
        body: 'Stack Infinity IT + Mitele ES front-end e back-end condiviso, confermato Mara 18 maggio 2026. Estensione Joyn DE via front-end Q1 2027. Federation phased, eseguibile in 12-18 mesi. Benchmark positivo: RTL Bedrock 10M subs / 45M utenti / 6 paesi su unico stack.',
        thumbs: [
          { src: __a('content-collage', 'jpg'),x: 0.50, y: 0.32, w: 240, h: 150, rotate: -2, opacity: 0.85 },
          { src: __a('show-couple', 'jpg'),    x: 0.16, y: 0.72, w: 160, h: 100, rotate: -3, opacity: 0.78 },
          { src: __a('show-male', 'jpg'),      x: 0.84, y: 0.72, w: 160, h: 100, rotate: 3,  opacity: 0.78 },
        ],
      },
      {
        stat: 'GIU', suffix: ' 2026',
        label: 'VERTICAL COMMISSIONING · LIVE PILOT',
        body: 'Fascino × Witty TV pilot microdrama "Tutto in una notte" aprile 2026. Mediaset Infinity microdrama/verts giugno 2026. Il pivot non è ipotesi: è calendario. YouTube Shorts 2 mld ore/mese su CTV — la categoria è già massiva.',
        thumbs: [
          { src: __a('presenter-1', 'jpg'),    x: 0.18, y: 0.30, w: 150, h: 95,  rotate: -4, opacity: 0.78 },
          { src: __a('show-dance', 'jpg'),     x: 0.82, y: 0.30, w: 160, h: 100, rotate: 4,  opacity: 0.82 },
          { src: __a('show-presenters', 'jpg'),x: 0.50, y: 0.76, w: 170, h: 110, rotate: 0,  opacity: 0.8 },
        ],
      },
      {
        stat: '+60', suffix: '% / +33%',
        label: 'EDITORIAL PROMOTION · PROVATO 2×',
        body: 'Viola Come il Mare 2: +60% audience Canale 5 vs S1, 12,5M ore on-demand. La Talpa multimediale: +33% lift Infinity, 3,065M totale = 2,3M C5 + 815K Infinity. La prova interna esiste, due volte quantificata.',
        thumbs: [
          { src: __a('show-female', 'jpg'),    x: 0.20, y: 0.28, w: 180, h: 115, rotate: -3, opacity: 0.85 },
          { src: __a('show-young', 'jpg'),     x: 0.80, y: 0.32, w: 170, h: 110, rotate: 4,  opacity: 0.82 },
          { src: __a('show-drama', 'jpg'),     x: 0.15, y: 0.74, w: 160, h: 100, rotate: -3, opacity: 0.78 },
          { src: __a('show-couple', 'jpg'),    x: 0.85, y: 0.74, w: 160, h: 100, rotate: 4,  opacity: 0.78 },
        ],
      },
      {
        stat: '~€4M', suffix: '/anno',
        label: 'ATP FINALS 2026-2028 · SIGNED FEB 2026',
        body: 'Triennale + opzione 2 anni fino 2030. 1 partita/giorno + finale in chiaro su Mediaset. Prima mossa sport editorial post esclusione Champions League (Sky + Amazon esclusiva 2027-31). ATP è il pivot sport in chiaro: premium ma sostenibile.',
        thumbs: [
          { src: __a('show-male', 'jpg'),      x: 0.18, y: 0.30, w: 170, h: 110, rotate: -4, opacity: 0.85 },
          { src: __a('show-tv', 'jpg'),        x: 0.82, y: 0.32, w: 180, h: 115, rotate: 4,  opacity: 0.85 },
          { src: __a('presenter-2', 'jpg'),    x: 0.50, y: 0.76, w: 150, h: 95,  rotate: 0,  opacity: 0.78 },
        ],
      },
    ],
    moreStories: [
      { shortLabel: 'Cosa solo MFE può fare', thumb: __a('content-collage', 'jpg'), imagePos: 'center', slideIdx: 24 },
      { shortLabel: 'Introducing IN', thumb: __a('infinity-logo', 'png'), imagePos: 'center', slideIdx: 25 },
    ],
    source: 'Proof point da fonti pubbliche · maggio 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 25 · COSA SOLO MFE PUÒ FARE · Claim closer
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Claim', scheme: 'purpleDeep', sectionId: 'close',
    shortLabel: '25 Cosa solo MFE può fare',
    panelColor: 'purpleMid',
    kicker: 'Chiusura · 3 asset unici · Slide chiave',
    statement: 'TRE ASSET CHE NESSUN ALTRO\nPLAYER EUROPEO HA MESSO INSIEME.',
    body: '1 · Vantaggio regolatorio unico Italia — AGCOM SIG ott 2025, rail home obbligatoria smart TV. Né Netflix né Disney+ possono replicarlo.   2 · Scala pan-europea reale — 22-25M MAU IT + ES + DE, 6,5× perimetro Italia, driver Joyn DE 16M.   3 · Federation tech già accesa — stack Infinity + Mitele unificato in produzione, DE entro Q1 2027.',
    killerNumber: '3',
    killerLabel: 'Asset che né Netflix, né Disney, né TF1 possono replicare in Italia. Pan-EU + regolatorio + federation.',
    quote: 'Nessun broadcaster europeo ha questa combinazione.',
    source: 'AGCOM SIG · OMDIA + Statista GCS 2026 · Risposta Mara · 18 mag 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 26 · INTRODUCING IN — Reveal (in-dot-cloud)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Morph', scheme: 'nearBlack', sectionId: 'close',
    shortLabel: '26 · Introducing IN',
    panelColor: 'purpleMid',
    iframeSrc: 'in-dot-cloud/index.html?embed=1&color=brand&motion=auto',
    iframeWidth: 540, iframeHeight: 460,
    iframeTop: 130,
    kicker: 'Reveal · Documento interno · maggio 2026',
    title: 'INTRODUCING\nIN.',
    subtitle: 'Tutto quello che vedete fino a qui è il livello platform di Infinity. Il prossimo livello è IN — l\'app big-tech che porta l\'intero gruppo MFE sotto un\'unica esperienza europea.',
    footerMeta: ['Coming Q3 2026', 'IT · ES · DE', 'Fase 1 → Fase 3'],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 27 · IN feature pillar + roadmap (infinity-dot-cloud callback)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Morph', scheme: 'purpleDeep', sectionId: 'close',
    shortLabel: '27 · IN pillars + roadmap',
    panelColor: 'purpleMid',
    iframeSrc: 'infinity-dot-cloud/index.html?embed=1&color=brand&motion=auto',
    iframeWidth: 1100, iframeHeight: 260,
    iframeTop: 120,
    kicker: 'IN · feature pillar + roadmap',
    title: 'I PILLAR FUNZIONALI\nE IL ROLLOUT',
    bottomCard: (
      <div style={{
        display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 14,
      }}>
        <div style={{
          padding: '20px 22px', borderRadius: 14,
          background: 'rgba(16,185,129,0.10)',
          border: '1px solid rgba(16,185,129,0.40)',
        }}>
          <div style={{ fontFamily: Tokens.fontMono, fontSize: 11, color: '#3DFFA0', letterSpacing: '0.18em', fontWeight: 700, marginBottom: 8 }}>FASE 1 · 2026 H2</div>
          <div style={{ fontFamily: Tokens.fontDisplay, fontSize: 18, fontWeight: 800, color: '#fff', marginBottom: 6, letterSpacing: '-0.01em' }}>IT + ES</div>
          <div style={{ fontSize: 12.5, color: Tokens.inkDim, lineHeight: 1.45 }}>Federation IT+ES già operativa. IN come layer sopra. SSO, recommendation portability.</div>
        </div>
        <div style={{
          padding: '20px 22px', borderRadius: 14,
          background: 'rgba(247,147,26,0.10)',
          border: '1px solid rgba(247,147,26,0.40)',
        }}>
          <div style={{ fontFamily: Tokens.fontMono, fontSize: 11, color: '#F7931A', letterSpacing: '0.18em', fontWeight: 700, marginBottom: 8 }}>FASE 2 · 2027 H1</div>
          <div style={{ fontFamily: Tokens.fontDisplay, fontSize: 18, fontWeight: 800, color: '#fff', marginBottom: 6, letterSpacing: '-0.01em' }}>+ Joyn DE</div>
          <div style={{ fontSize: 12.5, color: Tokens.inkDim, lineHeight: 1.45 }}>Estensione DE via front-end. AI layer trasversale. Wallet portability cross-3-paesi.</div>
        </div>
        <div style={{
          padding: '20px 22px', borderRadius: 14,
          background: 'rgba(201,150,250,0.12)',
          border: '1px solid rgba(201,150,250,0.45)',
        }}>
          <div style={{ fontFamily: Tokens.fontMono, fontSize: 11, color: '#C996FA', letterSpacing: '0.18em', fontWeight: 700, marginBottom: 8 }}>FASE 3 · 2027 H2</div>
          <div style={{ fontFamily: Tokens.fontDisplay, fontSize: 18, fontWeight: 800, color: '#fff', marginBottom: 6, letterSpacing: '-0.01em' }}>+ Impresa PT, TV2 HU</div>
          <div style={{ fontSize: 12.5, color: Tokens.inkDim, lineHeight: 1.45 }}>Partnership EU si aggregano. Performance Room cross-mercato. Federation 5+ paesi.</div>
        </div>
      </div>
    ),
    footerMeta: ['SSO cross-MFE', 'Recommendation', 'Wallet', 'AI layer', 'Performance Room'],
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 28 · APPENDIX · Q aperte (Tier 1, Tier 2, Q chiuse)
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'Appendix', scheme: 'nearBlack', sectionId: 'close',
    shortLabel: 'APP · Q aperte',
    panelColor: 'navy',
    kicker: 'Appendix · 27 maggio 2026',
    title: 'COSA SERVE\nPER CHIUDERE',
    subtitle: 'Tier 1 quantitative · Tier 2 decisioni · Q chiuse confermate.',
    columns: [
      { header: 'Q QUANTITATIVE · 8', color: '#C996FA',
        items: [
          { tag: '01.', title: 'ARPU/CPM Infinity', detail: 'Ferrario' },
          { tag: '02.', title: 'Budget marketing 2026', detail: 'CFO' },
          { tag: '03.', title: 'Deal OEM IT 2025', detail: 'Sara/SB' },
          { tag: '04.', title: 'Anteprima Infinity sistematica 2024-25', detail: 'Direzione Studi' },
          { tag: '05.', title: 'Catalog AI clearance re-voicing', detail: 'Legal' },
          { tag: '06.', title: 'Infinity MAU split per device', detail: 'BI Infinity' },
          { tag: '07.', title: 'Valuation auto-promo Mediaset', detail: 'Publitalia' },
          { tag: '08.', title: 'Content budget 2024/25/26', detail: 'CFO' },
        ]},
      { header: 'Q DECISIONI · 3-4', color: '#F7A1DC',
        items: [
          { tag: '01.', title: 'Piano industriale MFE 2026-2030', detail: 'Massimiliano + Mara' },
          { tag: '02.', title: 'Ad-tier Infinity+ roadmap 2026', detail: 'Massimiliano' },
          { tag: '03.', title: 'Sport women\'s UCL + padel anchor low-cost?', detail: 'apertura' },
        ]},
      { header: 'Q CHIUSE', color: '#3DFFA0', highlight: true,
        items: [
          { tag: '✓', title: 'Mediaset firma DMA letter via ACT', detail: '23 mar 2026' },
          { tag: '✓', title: 'Champions League 2027-31 OUT', detail: 'Sky + Amazon esclusiva' },
        ]},
    ],
    source: 'Appendix · solo PDF · documento interno · maggio 2026',
  },

  // ═════════════════════════════════════════════════════════════════════════
  // 29-32 · SHIFT DEEP-DIVES (S1 / S2 / S3 / S4) · placeholder content
  // Linked from slide 04's 4 cards. Same MorphScroll fade-carousel pattern
  // as the cover. User will fill in real content later.
  // ═════════════════════════════════════════════════════════════════════════
  {
    template: 'MorphScroll', scheme: 'purpleDeep', sectionId: 'shifts',
    shortLabel: '29 · S1 · Broadcaster IT → Piattaforma EU',
    panelColor: 'purpleMid',
    kicker: 'SHIFT 01 · Da broadcaster nazionale a piattaforma europea',
    title: 'BROADCASTER IT\n→ PIATTAFORMA EU',
    subtitle: 'Federation tecnologica IT + ES già operativa. Joyn DE Q1 2027. European Identity Layer come architettura unica. 22-25M MAU pan-MFE.',
    sections: [
      {
        stat: '22-25M', label: 'MAU PAN-EU · GIÀ OGGI',
        body: 'Audience digitale aggregata Mediaset Infinity (IT 3,4M) + Mitele (ES 2-3M) + Joyn (DE 16M). 6,5× il solo perimetro Italia. Driver: Joyn DE.',
      },
      {
        stat: 'Q1 2027', label: 'JOYN DE NELLA FEDERATION',
        body: 'Stack Infinity + Mitele già condiviso front-end e back-end (confermato Mara, maggio 2026). Estensione DE via front-end pianificata Q1 2027. Federation phased, non big-bang.',
      },
      {
        stat: '10M', label: 'BENCHMARK RTL BEDROCK',
        body: 'RTL Bedrock: 10M subs / 45M utenti / 6 paesi su unico stack (apr 2026). Federation phased sopravvive ai pattern che hanno ucciso Salto FR (€135M), Joyn ARD/ZDF (LG Köln), RTL/Talpa (ACM NL).',
      },
    ],
    source: 'Risposta Mara · 18 mag 2026 · RTL Group annual report · apr 2026',
  },

  {
    template: 'MorphScroll', scheme: 'purpleBlue', sectionId: 'shifts',
    shortLabel: '30 · S2 · Catalogo → Engagement continuo',
    panelColor: 'indigo',
    kicker: 'SHIFT 02 · Dal catalogo all\'engagement continuo',
    title: 'CATALOGO\n→ ENGAGEMENT CONTINUO',
    subtitle: 'L\'unità di misura non è più la stagione, è l\'IP che vive 12 mesi. Flow + Always-On + Vertical Commissioning. La community è l\'asset.',
    sections: [
      {
        stat: '215K', label: 'COMMUNITY INFINITY GF · MEMBRI ATTIVI',
        body: 'Grande Fratello come caso quasi perfetto: live 24/7, clip, social, podcast, backstage. Una sola IP che vive tutto l\'anno. Replicabile pan-MFE (GF Italia + Hermano Mayor ES + format Joyn DE).',
      },
      {
        stat: '2 mld', label: 'ORE/MESE YOUTUBE SHORTS SU CTV',
        body: 'La categoria vertical/microdrama è già massiva, non emergente. Fascino × Witty TV pilot apr 2026. Infinity microdrama/verts giu 2026.',
      },
      {
        stat: 'GIU 2026', label: 'INFINITY FLOW · LIVE',
        body: 'Feed vertical dentro l\'app principale, sul modello Netflix Fast Laughs / Disney For You / YouTube Shorts. KPI: conversion al long-form.',
      },
    ],
    source: 'PrimaOnline + Messaggero · 2025 · Italia Oggi · mag 2026 · OMDIA · ott 2025',
  },

  {
    template: 'MorphScroll', scheme: 'navy', sectionId: 'shifts',
    shortLabel: '31 · S3 · Distribuzione → Orchestrazione IP',
    panelColor: 'navy',
    kicker: 'SHIFT 03 · Dalla distribuzione all\'orchestrazione IP',
    title: 'DISTRIBUZIONE\n→ ORCHESTRAZIONE IP',
    subtitle: 'Owned First. La relazione utente non si vende. AGCOM SIG come arma regolatoria unica IT. YouTube come Embassy, non come funnel.',
    sections: [
      {
        stat: 'OTT 2025', label: 'AGCOM SIG · RAIL HOME OBBLIGATORIA',
        body: 'Rail home obbligatoria sulle smart TV vendute in Italia. RAI/MFE/La7/Sky/WBD inclusi. Né Netflix né Disney+ possono replicarlo. Vantaggio strutturale.',
      },
      {
        stat: '77% / 36%', label: 'PROSIEBEN REACH / AVOD YoY · TEMPLATE MFE',
        body: 'ProSiebenSat.1 sotto Giordani consolidando i silos → 77% total reach + AVOD +36% YoY. Joyn come destinazione primaria. Stesso muscolo si applica a Infinity.',
      },
      {
        stat: '30 vs 1', label: 'CHANNEL 4 vs MEDIASET · CANALI YOUTUBE',
        body: 'Channel 4: 30 canali tematici, team commerciale dedicato, full-episode views +169% YoY. Mediaset: 1 canale, ~923K iscritti, KPI non disclosed. YouTube come Embassy autonoma, non funnel.',
      },
    ],
    source: 'AGCOM SIG · ott 2025 · ProSieben annual report · 2024-25 · Channel 4 annual report · 2025',
  },

  {
    template: 'MorphScroll', scheme: 'magenta', sectionId: 'shifts',
    shortLabel: '32 · S4 · Inventory → Audience & Commerce',
    panelColor: 'pink',
    kicker: 'SHIFT 04 · Dall\'inventory all\'audience & commerce',
    title: 'INVENTORY\n→ AUDIENCE & COMMERCE',
    subtitle: 'AdManager live da 18 mesi · 1.000+ PMI attive · estate 2026 ES+DE. Shoppable lead-gen. Clean-room federation. ADV mandate pan-MFE.',
    sections: [
      {
        stat: '1.000+', label: 'PMI ATTIVE · ADMANAGER IT · MAR 2026',
        body: 'Settembre 2024 lancio. Ottobre 2025 + video. Marzo 2026 oltre 1.000 PMI attive. Estate 2026: lancio Spagna + Germania sotto framework MFE Advertising. Anticipo su Netflix sul ticket SMB.',
      },
      {
        stat: '71%', label: 'GROWTH FAST EU · SAMSUNG + LG',
        body: 'FAST EU €630M, +33% YoY. Samsung + LG = 71% del growth. 3 cantieri MFE: presidio OEM, aggregator controllata, TLC pan-MFE (TIM, Movistar, Deutsche Telekom).',
      },
      {
        stat: '3 deals', label: 'ADV MANDATE CROSS-MFE',
        body: 'CDP Mediaset già unica, blocker è attivazione cross-silo. Clean-room federation legale, non unified CDP (lesson Xandr -$1B, Oath -$4,6B). 3 opportunità: Disney · WBD/HBO Max · DAZN su 3 paesi.',
      },
    ],
    source: 'Brand-News · mar 2026 · FreeWheel + Comscore + Nielsen · 2025 · ProSieben + RTL Bedrock · 2024-26',
  },
];

const SECTIONS = [
  { id: 'open',   label: 'Apertura',           color: '#C996FA' },
  { id: 'shifts', label: '4 Shifts',           color: '#B975F9' },
  { id: 'b1',     label: 'B01 · Content',      color: '#8F48D2' },
  { id: 'b2',     label: 'B02 · Discovery',    color: '#6366F1' },
  { id: 'b3',     label: 'B03 · Distribution', color: '#06B6D4' },
  { id: 'b4',     label: 'B04 · Monetization', color: '#E0A8E8' },
  { id: 'close', label: 'Chiusura · IN',      color: '#F3C02F' },
];

// ── App shell ──────────────────────────────────────────────────────────────

function App() {
  const [currentIdx, setCurrentIdx] = React.useState(() => {
    const hash = location.hash.replace('#', '');
    const n = parseInt(hash, 10);
    return isFinite(n) && n >= 1 && n <= SLIDES.length ? n - 1 : 0;
  });
  const [menuOpen, setMenuOpen] = React.useState(false);
  // When the user scrolls through the MorphScroll cover, the active bucket
  // section reports its bucketId here so the bottom StoryCarousel can
  // retarget to that bucket's slides. null = use the current slide's own
  // sectionId (hero / no override).
  const [carouselSectionOverride, setCarouselSectionOverride] = React.useState(null);

  const slide = SLIDES[currentIdx];
  const scheme = SCHEMES[slide.scheme] || SCHEMES.purpleDeep;
  // Effective section for the carousel = MorphScroll override if active,
  // else the current slide's own sectionId.
  const effectiveSectionId = carouselSectionOverride || slide.sectionId;
  const section = SECTIONS.find(s => s.id === effectiveSectionId);

  React.useEffect(() => {
    history.replaceState(null, '', `#${currentIdx + 1}`);
    document.title = `${String(currentIdx + 1).padStart(2, '0')} · ${slide.shortLabel || slide.title}`;
    const root = document.getElementById('root');
    if (root) root.setAttribute('data-screen-label', `${String(currentIdx + 1).padStart(2, '0')} ${slide.shortLabel || slide.title}`);
    // Clear any scroll-driven section override when switching slides.
    setCarouselSectionOverride(null);
  }, [currentIdx, slide]);

  React.useEffect(() => {
    const onKey = (e) => {
      if (menuOpen) { if (e.key === 'Escape') setMenuOpen(false); return; }
      if (e.key === 'ArrowRight' || e.key === ' ') { e.preventDefault(); if (currentIdx < SLIDES.length - 1) setCurrentIdx(currentIdx + 1); }
      else if (e.key === 'ArrowLeft') { if (currentIdx > 0) setCurrentIdx(currentIdx - 1); }
      else if (e.key === 'Escape') { setMenuOpen(true); }
    };
    window.addEventListener('keydown', onKey);
    return () => window.removeEventListener('keydown', onKey);
  }, [currentIdx, menuOpen]);

  const jump = (i) => setCurrentIdx(i);

  const renderSlide = () => {
    switch (slide.template) {
      case 'Hero':       return <TemplateHero slide={slide} scheme={scheme}/>;
      case 'A':          return <TemplateA slide={slide} scheme={scheme}/>;
      case 'B':          return <TemplateB slide={slide} scheme={scheme}/>;
      case 'C':          return <TemplateC slide={slide} scheme={scheme}/>;
      case 'D':          return <TemplateD slide={slide} scheme={scheme} onJump={jump}/>;
      case 'E':          return <TemplateE slide={slide} scheme={scheme}/>;
      case 'F':          return <TemplateF slide={slide} scheme={scheme}/>;
      case 'Nav':        return <TemplateNav slide={slide} scheme={scheme} onJump={jump}/>;
      case 'Idea':       return <TemplateIdea slide={slide} scheme={scheme}/>;
      case 'Evidence':   return <TemplateEvidence slide={slide} scheme={scheme}/>;
      case 'Globe':      return <TemplateGlobe slide={slide} scheme={scheme} onJump={jump}/>;
      case 'Claim':      return <TemplateClaim slide={slide} scheme={scheme}/>;
      case 'LongScroll': return <TemplateLongScroll slide={slide} scheme={scheme} onJump={jump}/>;
      case 'Morph':       return <TemplateMorph slide={slide} scheme={scheme}/>;
      case 'MorphScroll': return <TemplateMorphScroll slide={slide} scheme={scheme} onJump={jump} onSectionChange={setCarouselSectionOverride}/>;
      case 'Appendix':   return <TemplateAppendix slide={slide} scheme={scheme}/>;
      default:           return <TemplateA slide={slide} scheme={scheme}/>;
    }
  };

  return (
    <Stage>
      <div key={currentIdx} style={{ position: 'absolute', inset: 0, animation: `slideIn 600ms ease-out` }}>
        {renderSlide()}
      </div>

      <NavBar
        scheme={scheme}
        slideNum={currentIdx + 1}
        totalSlides={SLIDES.length}
        sectionLabel={section?.label}
        sectionColor={section?.color}
        bucket={slide.bucket}
        onMenuClick={() => setMenuOpen(true)}
      />
      <SideArrows
        canPrev={currentIdx > 0}
        canNext={currentIdx < SLIDES.length - 1}
        onPrev={() => currentIdx > 0 && setCurrentIdx(currentIdx - 1)}
        onNext={() => currentIdx < SLIDES.length - 1 && setCurrentIdx(currentIdx + 1)}
      />
      <StoryCarousel
        slides={SLIDES}
        sections={SECTIONS}
        currentIdx={currentIdx}
        onJump={jump}
        forceSectionId={carouselSectionOverride}
      />
      <MenuOverlay
        slides={SLIDES}
        open={menuOpen}
        onClose={() => setMenuOpen(false)}
        onJump={jump}
      />

      <div style={{
        position: 'absolute', bottom: 20, right: 24,
        fontFamily: Tokens.fontMono, fontSize: 11,
        color: Tokens.inkFaint, letterSpacing: '0.16em',
        textTransform: 'uppercase', zIndex: 30,
      }}>
        ← → keys · Esc = menu
      </div>
    </Stage>
  );
}

// Stage stretches the 1920×1080 canvas to fill the viewport exactly via
// non-uniform scale (scaleX, scaleY independent). Result: zero letterbox,
// zero crop — full window always used. Trade-off: slight distortion when
// the viewport aspect ratio differs from 16:9 (e.g. on a 16:10 window the
// stage is stretched ~11% vertically). For typography this is invisible;
// for circles (e.g. Globe earth) they become slight ellipses, which reads
// fine in a stylized context.
function Stage({ children }) {
  const [scale, setScale] = React.useState({ x: 1, y: 1 });
  const stageRef = React.useRef(null);
  const W = 1920, H = 1080;
  React.useEffect(() => {
    const measure = () => {
      if (!stageRef.current) return;
      const el = stageRef.current.parentElement;
      setScale({
        x: el.clientWidth / W,
        y: el.clientHeight / H,
      });
    };
    measure();
    window.addEventListener('resize', measure);
    return () => window.removeEventListener('resize', measure);
  }, []);
  return (
    <div style={{
      position: 'absolute', inset: 0,
      background: '#000', overflow: 'hidden',
    }}>
      <div ref={stageRef} style={{
        width: W, height: H,
        position: 'absolute',
        left: 0, top: 0,
        transform: `scale(${scale.x}, ${scale.y})`,
        transformOrigin: 'top left',
        background: Tokens.bg,
      }}>
        {children}
      </div>
    </div>
  );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App/>);
