<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>JukeBox Blind Test — Montserrat</title>

<link rel="preconnect" href="https://fonts.googleapis.com">

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;800;900&amp;display=swap" rel="stylesheet">


<style>

  :root{

    --frame2: url("https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Juke%20Box%20Pdf.png");

    --win2-top: 42%; --win2-w: 43%; --win2-h: 7.2%;

    --spk2-top: 57%; --spk2-w: 59.5%; --spk2-h: 32.5%;

    --accent2:#ffd34d; --text2:#fff;


    /* Vitre */

    --win2-glass-idle: linear-gradient(180deg,#0006,#0004), #0004;

    --win2-glass-play: linear-gradient(180deg,#000c,#0009), #0009;


    /* Rideau (blind test) */

    --curtain2-safe-left: 3px;

    --curtain2-safe-right: 52px;

    --curtain2-safe-bottom: 3px;

    --curtain2-pleat-amp: 0.7deg;

    --curtain2-duration: 5s;


    /* UI Blind test (près du losange) */

    --bt-top: 20%;

    --bt-right: 30%;


    /* Align score dans le caisson bas */

    --score2-offset: -1.6%;


    /* Palette CHROME (argent brossé) */

    --ch-hi:#f7f7f7;

    --ch-mid1:#e0e0e0;

    --ch-mid2:#c9c9c9;

    --ch-dark:#9a9a9a;

    --ch-edge:#7a7a7a;

    --ch-border:#8c8c8c;


    /* Font */

    --font-main: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  }


  *{box-sizing:border-box}

  html, body{ height:100%; }

  body{ margin:0; font-family:var(--font-main); }

  .wrap2{ max-width:1100px; margin:0 auto; padding:18px; color:var(--text2); font-family:var(--font-main); }

  .jukebox2{ position:relative; width:100%; aspect-ratio:3/4; background:var(--frame2) center/contain no-repeat #222; border-radius:18px; overflow:hidden; box-shadow:0 22px 60px #0008, 0 6px 20px #000a; }


  /* VITRE */

  .window2{

    position:absolute; top:var(--win2-top); left:50%; transform:translateX(-50%);

    width:var(--win2-w); height:var(--win2-h);

    border-radius:12px; padding:8px;

    background: var(--win2-glass-idle);

    box-shadow: inset 0 0 0 2px #ffffff1a, inset 0 0 30px #0008;

    display:flex; align-items:center; justify-content:center; overflow:hidden;

    transition: background .25s ease, box-shadow .25s ease, filter .25s ease;

    font-family:var(--font-main);

  }

  .window2::after{

    content:""; position:absolute; left:50%; transform:translateX(-50%);

    bottom:-10px; width:120%; height:34px; pointer-events:none;

    background: radial-gradient(60% 100% at 50% 0%, #ffd34d80 0%, #ffd34d33 45%, transparent 70%);

    filter: blur(10px); opacity:0; transition: opacity .25s ease;

  }

  .window2.playing{ background: var(--win2-glass-play); animation: neon2Cycle 3.5s linear infinite; filter: saturate(1.15); }

  .window2.playing::after{ opacity:1; }

  @keyframes neon2Cycle{

    0%{box-shadow:0 0 18px #ff007a,0 0 40px #ff007a,0 0 70px #ff007a,inset 0 0 0 2px #ffffff22,inset 0 0 30px #000a}

    25%{box-shadow:0 0 18px #ff8c00,0 0 40px #ff8c00,0 0 70px #ff8c00,inset 0 0 0 2px #ffffff22,inset 0 0 30px #000a}

    50%{box-shadow:0 0 18px #40e0d0,0 0 40px #40e0d0,0 0 70px #40e0d0,inset 0 0 0 2px #ffffff22,inset 0 0 30px #000a}

    75%{box-shadow:0 0 18px #8a2be2,0 0 40px #8a2be2,0 0 70px #8a2be2,inset 0 0 0 2px #ffffff22,inset 0 0 30px #000a}

    100%{box-shadow:0 0 18px #ff007a,0 0 40px #ff007a,0 0 70px #ff007a,inset 0 0 0 2px #ffffff22,inset 0 0 30px #000a}

  }


  /* Zones */

  .win2-embed, .win2-idle{ width:100%; height:100%; border-radius:8px; overflow:hidden; }

  .win2-embed{ position:relative; z-index:1; }

  .win2-idle{ position:relative; z-index:1; }


  /* Carrousel 3D (plein cadre) */

  .scene2{ position:absolute; inset:0; perspective: 1400px; perspective-origin: 50% 50%; }

  .ring2{ position:absolute; inset:0; transform-style: preserve-3d; transition: transform 900ms cubic-bezier(.2,.8,.2,1); will-change: transform; }

  .item2{

    position:absolute; top:50%; left:50%;

    width:min(24%,120px); aspect-ratio:1/1;

    transform-style:preserve-3d; transform-origin:50% 50%;

    cursor:pointer; filter: drop-shadow(0 10px 20px rgba(0,0,0,.45));

    transition: transform 600ms cubic-bezier(.2,.8,.2,1), filter 280ms, scale 200ms;

    border-radius:12px; overflow:hidden; outline:none; border:none; background:transparent;

    font-family:var(--font-main);

  }

  .item2 img{ width:100%; height:100%; object-fit:cover; display:block; }

  .item2:hover{ scale:1.04; filter: drop-shadow(0 14px 26px rgba(0,0,0,.5)); }

  .label2{ position:absolute; bottom:6px; left:50%; transform:translateX(-50%); background:#000a; color:#fff; font-size:10px; padding:3px 6px; border-radius:8px; white-space:nowrap; border:1px solid #ffffff22; font-family:var(--font-main); }

  .status2{ position:absolute; bottom:6px; right:8px; font-size:11px; color:#a7a7a7; display:none !important; font-family:var(--font-main); }


  /* Hotspots rotation sur pleine largeur */

  .hotspot2{

    position:absolute; top:0; bottom:0; width:22%; z-index:3; cursor:pointer;

    opacity:0; transition:opacity .2s ease;

  }

  .hotspot2:hover{ opacity:.8; }

  .hotspot2.left{ left:0; background:linear-gradient(90deg, #0007, transparent); }

  .hotspot2.right{ right:0; background:linear-gradient(270deg, #0007, transparent); }

  .hotspot2.left::after,

  .hotspot2.right::after{

    content:""; position:absolute; top:50%; width:22px; height:22px; border:3px solid #fff; border-left:none; border-bottom:none; opacity:.8;

    transform-origin:center; filter:drop-shadow(0 2px 4px #0008);

  }

  .hotspot2.left::after{ left:12px; transform:translateY(-50%) rotate(-135deg); }

  .hotspot2.right::after{ right:12px; transform:translateY(-50%) rotate(45deg); }


  /* Grille 6x2 (bas) */

  .speaker2-pad{

    position:absolute; top:calc(var(--spk2-top) + var(--score2-offset)); left:50%; transform:translateX(-50%);

    width:var(--spk2-w); height:var(--spk2-h);

    display:grid; grid-template-columns:repeat(6,1fr); grid-auto-rows:1fr; gap:8px; padding:8px;

    background:linear-gradient(180deg,#00000040,#00000030);

    border-radius:14px; box-shadow:inset 0 0 0 1px #ffffff12, inset 0 0 24px #0009; backdrop-filter: blur(1px);

    transition: opacity .28s ease, filter .28s ease, transform .32s ease;

    font-family:var(--font-main);

  }

  .speaker2-pad.is-hidden{ opacity:0; filter:blur(2px); transform:translateY(6px); pointer-events:none; }

  .flip2{ position:relative; perspective:900px; border-radius:10px; overflow:hidden; border:0; background:none; padding:0; cursor:pointer; }

  .flip2-inner{ position:absolute; inset:0; transform-style:preserve-3d; transition: transform .7s cubic-bezier(.63,-0.14,.32,1.19); }

  .flip2:hover .flip2-inner, .flip2:focus-within .flip2-inner{ transform: rotateY(180deg); }

  .face2{ position:absolute; inset:0; backface-visibility:hidden; border-radius:10px; overflow:hidden; box-shadow: 0 6px 14px #0008; }

  .face2.front img{ width:100%; height:100%; object-fit:cover; display:block; }

  .face2.back{ transform:rotateY(180deg); background:linear-gradient(180deg,#fff8bf,#ffd34d); color:#111; display:flex; align-items:center; justify-content:center; text-align:center; padding:8px; font-family:var(--font-main); }

  .face2.back .meta2{ display:flex; flex-direction:column; gap:6px; align-items:center; justify-content:center; }

  .num2{ font-weight:900; font-size:24px; line-height:1; letter-spacing:.08em; background:#00000014; padding:6px 10px; border-radius:10px; box-shadow: inset 0 -2px 0 #caa200; font-family:var(--font-main); }

  .title2{ font-weight:700; font-size:12px; line-height:1.2; max-width:96%; font-family:var(--font-main); }


  /* Rideau (bas -> haut) */

  .curtain2{

    position:absolute; z-index:10;

    top:0; left:var(--curtain2-safe-left); right:var(--curtain2-safe-right); bottom:var(--curtain2-safe-bottom);

    background:

      radial-gradient(140% 60% at 50% -10%, rgba(0,0,0,.45), transparent 60%),

      url("https://upload.wikimedia.org/wikipedia/commons/0/0e/Red_theatre_curtain.jpg") center/cover no-repeat;

    background-color:#7a0015;

    transform: translateY(0%); transform-origin: bottom center;

    pointer-events:auto; will-change: transform;

  }

  .curtain2::before{

    content:""; position:absolute; inset:-3% -6% -3% -6%;

    background: repeating-linear-gradient(90deg, rgba(0,0,0,.28) 0px, rgba(0,0,0,.28) 6px, rgba(255,255,255,.10) 6px, rgba(255,255,255,.10) 12px, rgba(0,0,0,.22) 12px, rgba(0,0,0,.22) 18px, rgba(0,0,0,0) 18px, rgba(0,0,0,0) 28px);

    mix-blend-mode:multiply; opacity:.7; will-change: transform, background-position;

  }

  .curtain2.up{ animation: curtain2Up var(--curtain2-duration) linear forwards; }

  .curtain2.up::before{ animation: curtain2Pleats var(--curtain2-duration) ease-in-out 1 both, curtain2Sway var(--curtain2-duration) ease-in-out 1 both; }

  @keyframes curtain2Up{ from{transform:translateY(0%);} to{transform:translateY(-100%);} }

  @keyframes curtain2Pleats{

    0%{background-position: 0px 0px;}

    25%{background-position: 10px -6px;}

    50%{background-position: 0px -12px;}

    75%{background-position: -8px -18px;}

    100%{background-position: 0px -24px;}

  }

  @keyframes curtain2Sway{

    0%{transform:translateY(0%) skewX(0deg);}

    20%{transform:translateY(-20%) skewX(var(--curtain2-pleat-amp));}

    40%{transform:translateY(-40%) skewX(calc(var(--curtain2-pleat-amp) * -1));}

    60%{transform:translateY(-60%) skewX(var(--curtain2-pleat-amp));}

    80%{transform:translateY(-80%) skewX(calc(var(--curtain2-pleat-amp) * -1));}

    100%{transform:translateY(-100%) skewX(0deg);}

  }


  /* --- Skins CHROME (argent brossé) pour toutes les commandes --- */

  .chrome-surface{

    position:relative; border:1px solid var(--ch-border); border-radius:20px;

    background:

      linear-gradient(180deg, var(--ch-hi), var(--ch-mid1) 42%, var(--ch-mid2) 58%, var(--ch-dark)),

      radial-gradient(120% 180% at 50% -40%, #ffffffcc 0%, transparent 60%);

    box-shadow:

      inset 0 2px 2px #ffffffc0,

      inset 0 -2px 4px #00000070,

      0 6px 16px #00000070;

    overflow:hidden;

    color:#111;

    font-family:var(--font-main);

  }

  .chrome-surface::before{

    content:""; position:absolute; inset:0; pointer-events:none; border-radius:inherit;

    background:repeating-linear-gradient(-12deg, rgba(255,255,255,.16) 0 1px, rgba(0,0,0,.08) 1px 2px);

    mix-blend-mode:overlay; opacity:.42;

  }

  .chrome-surface::after{

    content:""; position:absolute; inset:-1px; border-radius:inherit; pointer-events:none;

    background:linear-gradient(180deg, #ffffffaa 0, transparent 20%, transparent 80%, #4a4a4a 100%);

  }


  .blind-ui{

    position:absolute; z-index:30; top:var(--bt-top); right:var(--bt-right);

    display:flex; align-items:center; gap:10px; user-select:none; font-family:var(--font-main);

  }

  .chrome-toggle{ width:108px; height:34px; display:inline-flex; align-items:center; justify-content:center; padding:0; border-radius:20px; }

  .chrome-toggle input{ position:absolute; inset:0; opacity:0; cursor:pointer; }

  .chrome-toggle .knob{

    position:absolute; top:3px; left:calc(50% + 3px);

    width:calc(50% - 6px); height:calc(100% - 6px); border-radius:16px;

    background:

      linear-gradient(180deg, var(--ch-hi), var(--ch-mid1) 42%, var(--ch-mid2) 58%, var(--ch-dark)),

      radial-gradient(120% 160% at 50% -40%, #ffffffaa, transparent 60%);

    box-shadow:0 2px 8px #0006, inset 0 1px 0 #fff8, inset 0 -1px 0 #0003;

    transition:left .22s ease; overflow:hidden;

  }

  .chrome-toggle .knob::before{

    content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;

    background: repeating-linear-gradient(-12deg, rgba(255,255,255,.16) 0 1px, rgba(0,0,0,.08) 1px 2px);

    mix-blend-mode:overlay; opacity:.36;

  }

  .chrome-toggle .txt{

    position:absolute; inset:0; display:flex; align-items:center; justify-content:space-between;

    padding:0 10px; font-size:11px; color:#111 !important; text-shadow:none; font-weight:900; letter-spacing:.06em; font-family:var(--font-main);

  }

  .chrome-toggle .txt .on, .chrome-toggle .txt .off{ opacity:.55; }

  .chrome-toggle input:checked ~ .txt .on{ opacity:1; }

  .chrome-toggle input:not(:checked) ~ .txt .off{ opacity:1; }

  .chrome-toggle input:checked ~ .knob{ left:3px; }


  .bt-delay{ display:flex; align-items:center; gap:6px; font-size:12px; font-weight:900; padding:6px 8px; border-radius:14px; color:#111 !important; font-family:var(--font-main); }

  .bt-delay .unit{ opacity:.9; color:#111 !important; }

  .bt-delay input{

    width:32px; padding:3px 4px; border-radius:8px; border:0;

    background:

      linear-gradient(180deg, var(--ch-hi), var(--ch-mid1) 42%, var(--ch-mid2) 58%, var(--ch-dark)),

      radial-gradient(120% 160% at 50% -40%, #ffffffaa, transparent 60%);

    color:#111; text-align:right; font-weight:900;

    box-shadow: inset 0 1px 0 #fff8, inset 0 -1px 0 #0002, inset 0 0 0 1px #9a9a9a66;

    -moz-appearance:textfield; font-family:var(--font-main);

  }

  .bt-delay input::-webkit-outer-spin-button,

  .bt-delay input::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0; }


  /* SCOREBOARD */

  .scoreboard2{

    position:absolute;

    top: calc(var(--spk2-top) + var(--score2-offset));

    left:50%; transform:translateX(-50%);

    width:var(--spk2-w); height:var(--spk2-h);

    display:none; align-items:center; justify-content:space-between; gap:10px;

    padding:10px; border-radius:14px;

    background:linear-gradient(180deg,#00000055,#00000040);

    box-shadow: inset 0 0 0 1px #ffffff18, inset 0 0 24px #0009;

    font-family:var(--font-main);

  }

  .scoreboard2.show{ display:flex; }

  .team2{ flex:1 1 33%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; }

  .logo2{ width:72px; height:72px; border-radius:50%; position:relative; box-shadow: inset 0 2px 2px #ffffff55, inset 0 -2px 4px #00000070, 0 6px 14px #0009; }

  .logo-blue{

    background:

      radial-gradient(60% 60% at 35% 30%, #ffffff88 0%, transparent 55%),

      radial-gradient(120% 120% at 50% 50%, #2a6dff 0%, #0b43c9 60%, #062a7d 100%);

  }

  .logo-red{

    background:

      radial-gradient(60% 60% at 35% 30%, #ffffff88 0%, transparent 55%),

      radial-gradient(120% 120% at 50% 50%, #ff3b3b 0%, #c91515 60%, #7d0909 100%);

  }

  .team2 .name2{

    font-weight:900; font-size:14px; letter-spacing:.08em; text-transform:uppercase; text-align:center;

    background:#00000050; padding:4px 8px; border-radius:10px; border:1px solid #ffffff22;

  }

  .score2{ flex:0 0 34%; height:100%; display:flex; align-items:center; justify-content:center; gap:10px; position:relative; }

  .score2 .digit{

    font-weight:900; font-size:min(15vw, 92px); line-height:1; letter-spacing:0.04em;

    padding:0 12px; border-radius:12px; background:#00000055; border:1px solid #ffffff22;

    box-shadow: inset 0 -2px 0 #caa20055; cursor:pointer; user-select:none;

    font-variant-numeric: tabular-nums;

    font-family:var(--font-main);

  }

  .score2 .sep{ font-weight:900; font-size:min(10vw, 68px); opacity:.9; }


  .score-btns{ display:flex; gap:8px; position:absolute; bottom:8px; left:50%; transform:translateX(-50%); }

  .btn-chrome{

    min-width:38px; height:34px; padding:0 10px; border-radius:10px; border:1px solid var(--ch-border);

    display:inline-flex; align-items:center; justify-content:center; font-weight:900; color:#111 !important; cursor:pointer;

    background:

      linear-gradient(180deg, var(--ch-hi), var(--ch-mid1) 42%, var(--ch-mid2) 58%, var(--ch-dark)),

      radial-gradient(120% 160% at 50% -40%, #ffffffaa 0%, transparent 60%);

    box-shadow: inset 0 2px 2px #ffffffa0, inset 0 -2px 4px #00000088, 0 4px 12px #0008;

    text-shadow:none; font-family:var(--font-main);

  }

  .btn-chrome:active{ transform:translateY(1px); }


  /* Setup modal */

  .setup2-backdrop{ position:absolute; inset:0; background:#0008; display:none; align-items:center; justify-content:center; z-index:40; }

  .setup2-backdrop.show{ display:flex; }

  .setup2-box{ width:min(92%, 540px); padding:16px; border-radius:14px; color:#111; }

  .setup2-box h3{ margin:0 0 10px; font-size:18px; font-family:var(--font-main); }

  .setup2-row{ display:flex; gap:10px; margin:8px 0; align-items:center; }

  .setup2-row label{ min-width:88px; font-weight:800; color:#111; font-family:var(--font-main); }

  .setup2-row input{ flex:1; padding:8px 10px; border-radius:8px; border:1px solid var(--ch-border); font-weight:800; background:#fff; color:#111; font-family:var(--font-main); }

  .setup2-actions{ display:flex; gap:10px; justify-content:flex-end; margin-top:12px; }

  .toast2{ position:absolute; top:10px; left:50%; transform:translateX(-50%); background:#000c; color:#fff; padding:8px 12px; border-radius:10px; border:1px solid #ffffff33; display:none; font-family:var(--font-main); }

  .toast2.show{ display:block; }


  /* Winner */

  .winner2{ position:absolute; inset:0; display:none; align-items:center; justify-content:center; z-index:50; background: radial-gradient(80% 80% at 50% 40%, #0009, #000c); }

  .winner2.show{ display:flex; }

  .winner2 .panel{ padding:18px 22px; border-radius:14px; text-align:center; color:#111; font-family:var(--font-main); }


  /* Confettis */

  .confetti2{ position:absolute; inset:0; z-index:55; display:none; pointer-events:none; }


  @media (max-width:980px){ .speaker2-pad{ grid-template-columns:repeat(4,1fr); } }

  @media (max-width:720px){

    .speaker2-pad{ grid-template-columns:repeat(3,1fr); }

    .window2{ --win2-w: 90%; --win2-h: 34%; --win2-top: 15%; }

    :root{ --curtain2-safe-right: 30px; --curtain2-safe-bottom: 8px; --curtain2-safe-left: 10px; }

  }

  @media (max-width:420px){

    .window2{ --win2-w: 94%; --win2-h: 42%; --win2-top: 12%; }

    :root{ --curtain2-safe-right: 26px; --curtain2-safe-bottom: 6px; --curtain2-safe-left: 8px; }

  }

</style>




<div class="wrap2">

  <div class="jukebox2" id="jb2-box">

    <!-- === ON/OFF Blind test + durée === -->

    <div class="blind-ui" id="jb2-blindui" title="Blind test">

      <label class="chrome-toggle chrome-surface" aria-label="Activer le blind test">

        <input type="checkbox" id="bt-enable">

        <span class="knob"></span>

        <span class="txt"><span class="on">BLIND</span><span class="off">OFF</span></span>

      </label>

      <label class="bt-delay chrome-surface" for="bt-delay" title="Durée avant lever du rideau">

        <span>Rideau</span>

        <input type="number" id="bt-delay" min="0" max="99" step="1" value="25" inputmode="numeric">

        <span class="unit">s</span>

      </label>

    </div>


    <div class="window2" id="jb2-window">

      <!-- MODE IDLE : carrousel -->

      <div class="win2-idle" id="jb2-idle" aria-label="Carrousel des playlists">

        <div class="scene2"><div class="ring2" id="jb2-ring"></div></div>

        <div class="hotspot2 left" id="jb2-left" aria-label="Tourner vers la gauche"></div>

        <div class="hotspot2 right" id="jb2-right" aria-label="Tourner vers la droite"></div>

        <div class="status2"><span id="jb2-status">Rotation : active (cliquez pour pause)</span></div>

      </div>


      <!-- LECTEUR SPOTIFY -->

      <div class="win2-embed" id="jb2-embed" style="display:none;">

        <div class="curtain2" id="jb2-curtain" aria-hidden="true"></div>

        <div id="jb2-spot" style="position:absolute; inset:0; width:100%; height:100%"></div>

      </div>

    </div>


    <!-- SCOREBOARD -->

    <div class="scoreboard2" id="jb2-score">

      <div class="team2">

        <div class="logo2 logo-blue"></div>

        <div class="name2" id="teamAName">The Beatles</div>

      </div>

      <div class="score2">

        <div class="digit" id="scoreA" title="Cliquer pour modifier">0</div>

        <div class="sep">:</div>

        <div class="digit" id="scoreB" title="Cliquer pour modifier">0</div>

        <div class="score-btns">

          <button class="btn-chrome" id="btnAminus">−</button>

          <button class="btn-chrome" id="btnAplus">+1</button>

          <button class="btn-chrome" id="btnReset">Reset</button>

          <button class="btn-chrome" id="btnBplus">+1</button>

          <button class="btn-chrome" id="btnBminus">−</button>

        </div>

      </div>

      <div class="team2">

        <div class="logo2 logo-red"></div>

        <div class="name2" id="teamBName">The Stones</div>

      </div>

    </div>


    <!-- MODAL SETUP EQUIPES -->

    <div class="setup2-backdrop" id="setupBack">

      <div class="setup2-box chrome-surface">

        <div class="toast2" id="setupToast">Noms mis à jour</div>

        <h3>Équipes du blind test</h3>

        <div class="setup2-row">

<label for="inpA">Équipe A</label><input id="inpA" type="text" placeholder="The Beatles">

</div>

        <div class="setup2-row">

<label for="inpB">Équipe B</label><input id="inpB" type="text" placeholder="The Stones">

</div>

        <div class="setup2-actions">

          <button class="btn-chrome" id="btnCancel">Annuler</button>

          <button class="btn-chrome" id="btnSave">Valider</button>

        </div>

      </div>

    </div>


    <!-- WINNER -->

    <div class="winner2" id="winner">

      <div class="panel chrome-surface">

        <div class="title" id="winTitle" style="font-size:22px;font-weight:900;margin-bottom:8px;">Bravo !</div>

        <div class="msg" id="winMsg" style="font-size:16px;">L’équipe A a gagné 🎉</div>

        <div style="margin-top:12px;">

          <button class="btn-chrome" id="btnCloseWin">Fermer</button>

        </div>

      </div>

    </div>


    <!-- CONFETTIS -->

    <canvas id="jb2-confetti" class="confetti2"></canvas>


    <div class="speaker2-pad" id="jb2-grid"></div>

  </div>

</div>


<!-- Spotify iFrame API -->

<script src="https://open.spotify.com/embed/iframe-api/v1" async></script>


<script>

document.addEventListener('DOMContentLoaded', function(){

  /* === Playlists === */

  const lists2 = [   


{"code":"01","id":"5NwoNJQ12fgrXdrb1PyUIg","title":"50's Swing & Rock","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/50%27s%20swing%20%26%20rock.png"},

  {"code":"02","id":"6bARwsThMhqYmJauG24rdN","title":"60's Jazz","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/60%27s%20Jazz.png"},

  {"code":"03","id":"0qGPEtJgt4ikTmc8uCHoUw","title":"Sixties forever","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Sixties%20for%20ever.png"},

  {"code":"04","id":"3n3y1UdyyhunBmkDA1sms9","title":"70's Freedom","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/70%27s%20freedom.png"},

  {"code":"05","id":"5iGgWjlWmUdkFFW3U6syJ7","title":"80's New Wave","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/80%27s.png"},

  {"code":"06","id":"4nKhV4lz55dYSQnnbhJ7S5","title":"Joueurs de Blues","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Joueurs%20de%20blues.png"},

  {"code":"07","id":"4Qxklh0Tlwgnmvfr8dSPXL","title":"Hard Bop","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Hard%20Bop.png"},

  {"code":"08","id":"7GcUHqbZN9tA4CKcQjHy0p","title":"Rock'n roll","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Rock%20%27n%20roll.png"},

  {"code":"09","id":"7GNN0lU9UJJfpcltKldxzl","title":"Jazz & Soul","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Jazz%20%26%20Soul.png"},

  {"code":"10","id":"3PukTS5CwYH6lPh1inWyR0","title":"Musique cool","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Musique%20cool.png"},

  {"code":"11","id":"0YysxwBlT7YP80JtvfMKVI","title":"Funky music","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Funky%20music.png"},

  {"code":"12","id":"3YZbTPaL8Eh0baNmVHmcWp","title":"Musique classique","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Musique%20classique.png"},

  {"code":"13","id":"37i9dQZF1DXcBWIGoYBM5M","title":"Today's Top Hits","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Today%27s%20top%20hits.png"},

  {"code":"14","id":"37i9dQZEVXbMDoHDwVN2tF","title":"Top 50 Global","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Top%2050%20Global.png"},

  {"code":"15","id":"37i9dQZF1DX0XUsuxWHRQd","title":"RapCaviar","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/RapCaviar.png"},

  {"code":"16","id":"37i9dQZF1DX10zKzsJ2jva","title":"Viva Latino","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Viva%20Latino.png"},

  {"code":"17","id":"37i9dQZF1DX4o1oenSJRJd","title":"All Out 2000s","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/All%20out%202000%27s.png"},

  {"code":"18","id":"37i9dQZF1DX5Ejj0EkURtP","title":"All Out 2010s","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/All%20out%202010%27s.png"},

  {"code":"19","id":"37i9dQZF1DWXRqgorJj26U","title":"Rock Classics","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Rock%20classics.png"},

  {"code":"20","id":"37i9dQZF1DXaXB8fQg7xif","title":"Dance Party","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Dance%20Party.png"},

  {"code":"21","id":"37i9dQZF1DWWMOmoXKqHTD","title":"Songs to Sing in the Car","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Songs%20to%20sing%20in%20the%20car.png"},

  {"code":"22","id":"37i9dQZF1DX76Wlfdnj7AP","title":"Beast Mode","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Beast%20Mode.png"},

  {"code":"23","id":"37i9dQZF1DWY7IeIP1cdjF","title":"Baila Reggaeton","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Baila%20Reggaeton.png"},

  {"code":"24","id":"37i9dQZF1DWWY64wDtewQt","title":"phonk","cover":"https://pub-8b096f0830f04097a7597b4aba1de717.r2.dev/Phonk.png"}

];


  /* === Sélecteurs === */

  const box2   = document.getElementById('jb2-box');

  const win2   = document.getElementById('jb2-window');

  const idle2  = document.getElementById('jb2-idle');

  const embed2 = document.getElementById('jb2-embed');

  const spot2  = document.getElementById('jb2-spot');

  const ring2  = document.getElementById('jb2-ring');

  const grid2  = document.getElementById('jb2-grid');

  const status2= document.getElementById('jb2-status');

  const curtain2 = document.getElementById('jb2-curtain');

  const leftHot = document.getElementById('jb2-left');

  const rightHot= document.getElementById('jb2-right');


  /* === SCOREBOARD elements === */

  const scoreWrap = document.getElementById('jb2-score');

  const scoreAEl  = document.getElementById('scoreA');

  const scoreBEl  = document.getElementById('scoreB');

  const teamANameEl = document.getElementById('teamAName');

  const teamBNameEl = document.getElementById('teamBName');


  const btnAminus = document.getElementById('btnAminus');

  const btnAplus  = document.getElementById('btnAplus');

  const btnBminus = document.getElementById('btnBminus');

  const btnBplus  = document.getElementById('btnBplus');

  const btnReset  = document.getElementById('btnReset');


  /* === SETUP modal === */

  const setupBack = document.getElementById('setupBack');

  const inpA = document.getElementById('inpA');

  const inpB = document.getElementById('inpB');

  const btnSave = document.getElementById('btnSave');

  const btnCancel = document.getElementById('btnCancel');

  const setupToast = document.getElementById('setupToast');


  /* === WINNER === */

  const winner = document.getElementById('winner');

  const winTitle = document.getElementById('winTitle');

  const winMsg = document.getElementById('winMsg');

  const btnCloseWin = document.getElementById('btnCloseWin');


  /* === CONFETTIS === */

  const confettiCanvas = document.getElementById('jb2-confetti');


  /* === Blind test UI state === */

  const enableEl = document.getElementById('bt-enable');

  const delayEl  = document.getElementById('bt-delay');

  const savedEnabled = localStorage.getItem('jb2_blind_enabled');

  const savedDelay   = localStorage.getItem('jb2_blind_delay');


  let blindTestEnabled = savedEnabled ? savedEnabled === '1' : false;

  let blindDelayMs = (savedDelay ? parseInt(savedDelay,10) : 25) * 1000;


  enableEl.checked = blindTestEnabled;

  delayEl.value = Math.max(0, Math.round(blindDelayMs/1000));


  /* === Scores & équipes === */

  const WIN_SCORE = 10;

  let teamAName = localStorage.getItem('jb2_teamA_name') || 'The Beatles';

  let teamBName = localStorage.getItem('jb2_teamB_name') || 'The Stones';

  let scoreA = parseInt(localStorage.getItem('jb2_scoreA')||'0',10);

  let scoreB = parseInt(localStorage.getItem('jb2_scoreB')||'0',10);


  function renderScore(){

    teamANameEl.textContent = teamAName;

    teamBNameEl.textContent = teamBName;

    scoreAEl.textContent = Math.max(0, scoreA);

    scoreBEl.textContent = Math.max(0, scoreB);

  }

  function saveScore(){

    localStorage.setItem('jb2_teamA_name', teamAName);

    localStorage.setItem('jb2_teamB_name', teamBName);

    localStorage.setItem('jb2_scoreA', String(scoreA));

    localStorage.setItem('jb2_scoreB', String(scoreB));

  }

  function setScoreboardVisible(v){

    scoreWrap.classList.toggle('show', !!v);

    grid2.classList.toggle('is-hidden', !!v);

  }


  /* === Carrousel 3D === */

  let angle2 = 0, autoSpin2 = true, selected2 = -1, radius2 = 260;

  const N2 = lists2.length, step2 = 360 / N2;


  function computeRadius2(){

    const rect = idle2.getBoundingClientRect();

    const base = Math.min(rect.width, rect.height);

    radius2 = Math.max(140, base * 0.40);

  }

  function positionItems2(){

    computeRadius2();

    [...ring2.children].forEach((el, i)=>{

      const a = i * step2;

      el.style.transform = `translate(-50%, -50%) rotateY(${a}deg) translateZ(${radius2}px)`;

    });

    applyAngle2(true);

  }

  function applyAngle2(immediate){

    const t = `translateZ(-1px) rotateY(${angle2}deg)`;

    if(immediate){

      ring2.style.transition='none';

      ring2.style.transform = t;

      ring2.getBoundingClientRect();

      ring2.style.transition='';

    }else{

      ring2.style.transform = t;

    }

  }

  function tick2(){

    if(autoSpin2 && selected2 === -1){

      angle2 -= 0.8;

      ring2.style.transform = `translateZ(-1px) rotateY(${angle2}deg)`;

    }

    requestAnimationFrame(tick2);

  }

  function buildCarousel2(){

    ring2.innerHTML = '';

    lists2.forEach((p, i) => {

      const btn = document.createElement('button');

      btn.className = 'item2'; btn.type='button'; btn.dataset.index = i;

      btn.innerHTML = `<img src="${p.cover}" alt="${p.title}"><span class="label2">${p.title}</span>`;

      btn.addEventListener('click', (e)=>{ e.stopPropagation(); playClickClack(); selectIndex2(i); });

      ring2.appendChild(btn);

    });

    requestAnimationFrame(positionItems2);

  }


  /* === Hotspots rotation === */

  leftHot?.addEventListener('click', (e)=>{ e.stopPropagation(); autoSpin2=false; angle2 += step2; applyAngle2(false); });

  rightHot?.addEventListener('click',(e)=>{ e.stopPropagation(); autoSpin2=false; angle2 -= step2; applyAngle2(false); });


  /* ===== Son “clic” intégré ===== */

  const CLICK_URL = "data:audio/mpeg;base64,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//u0BO2ABF5wSDnmHcKLzgkHPMO4UYVlKbWFgAowrKU2sLABryVnlWtu21mJAPTs8ibLufZzTYedMsfLj6hSq2+Kuvk5XV3T2MUh9q/1Wg6+1EFkqmY5vnbHO7qf7fU823vriId/9u/rOKF2PP9bX9sa87j31v0ZBoAAKigEVCK2wUAEgCADAAwKMGS7nm+skxpGYmAMTHkCmRkjInYNPCMkGTkIjBjh5QcvGDSmM6cYAEytUseCHvyg2IBiujqJ9QxSsSyy+CailTEfU4ZHnygRYa+rhpjS17QarRL4DduPx2269LautfcuLy2zSytyXVnoKi1vCGLtd23bZw4j+UevkdIypwmUuLzWv///B92twOuxnD8P2sV9mdUcafZr1399//3zX5YU9u3YqYU9PSy2rvuO7OVN/d/+H5V5urvluxY/8OW7dqxdme67W/WOMouzOFe9vuP402f6lPP/////////////62FfsrjdT6WGHYfj/////////////+zNx+NRaHr1WcrU0BQAAVFAIqEVtgoAJAEAGABgUYMl3PN9ZJjSMxMAYmPIFMjJGROwaeEZIMnIRGDHDyg5eMGlMZ04wAJlapY8EPflBsQDFdHUT6hilYlll8E1FKmI+pwyPPlAiw19XDTGlr2g1WiXwG7cfjtt16W1da+5cXltmllbkurPQVFreEMXa7tu2zhxH8o9fI6RlThMpcXmtf//+D7tbgddjOH4ftYr7M6o40+zXrv77//vmvywp7duxUwp//u0BOOACI2FyG5rAAERsLkNzWAAEDUFL720gCIGoKX3tpAE6elltXfcd2cqb+7/8PyrzdXfLdix/4ct27Vi7M912t+scZRdmcK97fcfxps/1Kef/////////////1sK/ZXG6n0sMOw/H/////////////9mbj8ai0PXqs5WpoCFtxSIRLZajIycnWmAcKCMEbAgJbgX8SpeClZmyxhLD3103MmHxJRQ1JPF0gXoyw9lbBjwa2tuUJ4u6/S9nZ2+K1X6qBNBe2vvnbwJsmQC7cZRaYpV85wY+zt7EZ+Ef04eqtO9zx1a6/m9bz0yJrTLa7Qm1r0vQ3UWAMAhtXvaOtuWLbikQiWy1GRk5OtMA4UEYI2BAS3Av4lS8FKzNljCWHvrpuZMPiSihqSeLpAvRlh7K2DHg1tbcoTxd1+l7Ozt8Vqv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";


  const _clickPool = Array.from({length: 4}, () => {

    const a = new Audio(CLICK_URL);

    a.preload = 'auto';

    a.volume = 0.9;

    a.crossOrigin = 'anonymous';

    return a;

  });

  let _clickIndex = 0;


  function playClickClack(){

    try{

      const a = _clickPool[_clickIndex = (_clickIndex + 1) % _clickPool.length].cloneNode();

      a.volume = 0.9;

      a.currentTime = 0;

      a.play().catch(()=>{});

    }catch(e){}

  }


  /* ===== Son de victoire + applaudissements ===== */

  let audioCtx = null;

  function playVictory(){

    try{

      audioCtx = audioCtx || new (window.AudioContext||window.webkitAudioContext)();

      const now = audioCtx.currentTime;

      const master = audioCtx.createGain(); master.gain.value = 0.9;

      const comp = audioCtx.createDynamicsCompressor();

      comp.threshold.value = -20; comp.ratio.value = 6; comp.attack.value = 0.003; comp.release.value = 0.18;

      master.connect(comp); comp.connect(audioCtx.destination);


      const notes = [523.25, 659.25, 783.99, 1046.5];

      notes.forEach((f,i)=>{

        const o = audioCtx.createOscillator(); o.type='sawtooth';

        const filt = audioCtx.createBiquadFilter(); filt.type='lowpass'; filt.frequency.value = 2400;

        const g = audioCtx.createGain();

        o.frequency.setValueAtTime(f, now + i*0.06);

        g.gain.setValueAtTime(0.0001, now + i*0.06);

        g.gain.exponentialRampToValueAtTime(0.35, now + i*0.06 + 0.05);

        g.gain.exponentialRampToValueAtTime(0.0001, now + 0.95);

        o.connect(filt); filt.connect(g); g.connect(master);

        o.start(now + i*0.06); o.stop(now + 0.96);

      });


      const nLen = Math.floor(audioCtx.sampleRate * 0.4);

      const nBuf = audioCtx.createBuffer(1, nLen, audioCtx.sampleRate);

      const nData = nBuf.getChannelData(0);

      for(let i=0;i<nLen;i++){ nData[i] = (Math.random()*2-1) * Math.pow(1 - i/nLen, 2); }

      const nSrc = audioCtx.createBufferSource(); nSrc.buffer = nBuf;

      const hp = audioCtx.createBiquadFilter(); hp.type='highpass'; hp.frequency.value = 2000;

      const ng = audioCtx.createGain(); ng.gain.setValueAtTime(0.0001, now + 0.05);

      ng.gain.exponentialRampToValueAtTime(0.15, now + 0.12);

      ng.gain.exponentialRampToValueAtTime(0.0001, now + 0.5);

      nSrc.connect(hp); hp.connect(ng); ng.connect(master);

      nSrc.start(now + 0.05); nSrc.stop(now + 0.5);

    }catch(e){}

  }

  function playApplause(duration=2.2){

    try{

      audioCtx = audioCtx || new (window.AudioContext||window.webkitAudioContext)();

      const now = audioCtx.currentTime;

      const out = audioCtx.createGain(); out.gain.value = 0.8;

      const comp = audioCtx.createDynamicsCompressor();

      comp.threshold.value = -26; comp.ratio.value = 6; comp.attack.value = 0.004; comp.release.value = 0.18;

      out.connect(comp); comp.connect(audioCtx.destination);


      const baseLen = Math.floor(audioCtx.sampleRate * duration);

      const baseBuf = audioCtx.createBuffer(1, baseLen, audioCtx.sampleRate);

      const baseData = baseBuf.getChannelData(0);

      for(let i=0;i<baseLen;i++){ const t = i/baseLen; const env = Math.min(1, t*3) * Math.pow(1 - Math.max(0,t-0.1)/(1-0.1), 0.8); baseData[i] = (Math.random()*2-1) * 0.6 * env; }

      const baseSrc = audioCtx.createBufferSource(); baseSrc.buffer = baseBuf;

      const bp = audioCtx.createBiquadFilter(); bp.type='bandpass'; bp.frequency.value = 1400; bp.Q.value = 0.6;

      const gBase = audioCtx.createGain(); gBase.gain.value = 0.25;

      baseSrc.connect(bp); bp.connect(gBase); gBase.connect(out);

      baseSrc.start(now); baseSrc.stop(now + duration + 0.05);


      const clapCount = 22;

      for(let k=0;k<clapCount;k++){ const t0 = now + 0.15 + Math.random()*(duration-0.2);

        const len = Math.floor(audioCtx.sampleRate * 0.035);

        const buf = audioCtx.createBuffer(1, len, audioCtx.sampleRate);

        const d = buf.getChannelData(0);

        for(let i=0;i<len;i++){ const x = i/len; const env = Math.exp(-20*x); d[i] = (Math.random()*2-1) * env; }

        const src = audioCtx.createBufferSource(); src.buffer = buf;

        const hp = audioCtx.createBiquadFilter(); hp.type='highpass'; hp.frequency.value = 1800;

        const g = audioCtx.createGain(); g.gain.value = 0.35 + Math.random()*0.15;

        src.connect(hp); hp.connect(g); g.connect(out);

        src.start(t0);

      }

      setTimeout(()=>{ try{ out.disconnect(); comp.disconnect(); }catch(_ ){} }, (duration+0.5)*1000);

    }catch(e){}

  }


  /* ===== Confettis ===== */

  let confettiRAF = 0, confettiRunning = false, particles = [];

  const confettiColors = ['#ffd34d','#ff007a','#40e0d0','#8a2be2','#ff8c00','#ffffff'];


  function sizeConfetti(){

    const dpr = window.devicePixelRatio || 1;

    const rect = box2.getBoundingClientRect();

    confettiCanvas.width = rect.width * dpr;

    confettiCanvas.height = rect.height * dpr;

    confettiCanvas.style.width = rect.width + 'px';

    confettiCanvas.style.height = rect.height + 'px';

    const ctx = confettiCanvas.getContext('2d');

    ctx.setTransform(dpr,0,0,dpr,0,0);

  }

  function makeParticles(count){

    particles = [];

    const rect = box2.getBoundingClientRect();

    for(let i=0;i<count;i++){ particles.push({

        x: Math.random()*rect.width, y: -20 - Math.random()*80, w: 6 + Math.random()*10, h: 8 + Math.random()*14,

        vx: -1 + Math.random()*2, vy: 1 + Math.random()*2, rot: Math.random()*Math.PI*2, vr: (-0.2 + Math.random()*0.4),

        color: confettiColors[Math.floor(Math.random()*confettiColors.length)],

      }); }

  }

  function startConfetti(durationMs=6000){

    if(!confettiCanvas) return;

    sizeConfetti();

    confettiCanvas.style.display='block';

    makeParticles(140);

    confettiRunning = true;

    const ctx = confettiCanvas.getContext('2d');

    const gravity = 0.04;

    const endAt = performance.now() + durationMs;

    function loop(){

      if(!confettiRunning) return;

      const rect = box2.getBoundingClientRect();

      ctx.clearRect(0,0,rect.width,rect.height);

      particles.forEach(p=>{

        p.vy += gravity; p.x += p.vx; p.y += p.vy; p.rot += p.vr;

        if(p.y > rect.height + 16){ p.y = -20; p.vy = 1+Math.random()*2; p.x = Math.random()*rect.width; }

        ctx.save(); ctx.translate(p.x, p.y); ctx.rotate(p.rot);

        ctx.fillStyle = p.color; ctx.fillRect(-p.w/2, -p.h/2, p.w, p.h); ctx.restore();

      });

      if(performance.now() < endAt){ confettiRAF = requestAnimationFrame(loop); }

      else{ stopConfetti(); }

    }

    confettiRAF = requestAnimationFrame(loop);

  }

  function stopConfetti(){

    confettiRunning = false;

    if(confettiRAF) cancelAnimationFrame(confettiRAF);

    confettiCanvas.style.display='none';

    const ctx = confettiCanvas.getContext('2d');

    const rect = box2.getBoundingClientRect();

    ctx.clearRect(0,0,rect.width,rect.height);

  }

  window.addEventListener('resize', ()=>{ if(confettiRunning) sizeConfetti(); });


  /* ===== Helpers ===== */

  const isPlayerVisible = () => embed2.style.display !== 'none';

  function setGridVisible(v){ grid2.classList.toggle('is-hidden', !v); }


  /* ===== Spotify iFrame API + AutoReturn ===== */

  const AUTO_RETURN_MS = 10000;

  let spotifyController2 = null;

  let lastActiveAt2 = 0;

  let autoReturnTick2 = null;


  function startAutoReturnWatcher2(){

    stopAutoReturnWatcher2();

    lastActiveAt2 = Date.now();

    autoReturnTick2 = setInterval(()=>{

      if(embed2.style.display !== 'none' && Date.now() - lastActiveAt2 > AUTO_RETURN_MS){

        showIdle2();

      }

    }, 1000);

  }

  function stopAutoReturnWatcher2(){ if(autoReturnTick2){ clearInterval(autoReturnTick2); autoReturnTick2 = null; } }


  /* ===== Rideau ===== */

  const CURTAIN_LIFT_MS  = 5000;

  let curtainTimer = null;

  let lastTrackUri = null;

  let lastPositionMs = 0;


  function startCurtain2(){

    if(!curtain2) return;

    curtain2.classList.remove('up');

    curtain2.style.removeProperty('display');

    curtain2.style.setProperty('--curtain2-duration', (CURTAIN_LIFT_MS/1000)+'s');

    void curtain2.offsetWidth;

    curtain2.classList.add('up');

  }

  function resetCurtain2(){ if(!curtain2) return; curtain2.classList.remove('up'); curtain2.style.transform='translateY(0%)'; }

  function instantlyOpenCurtain2(){ if(!curtain2) return; curtain2.classList.remove('up'); curtain2.style.transform='translateY(-100%)'; }

  function clearCurtainTimer(){ if(curtainTimer){ clearTimeout(curtainTimer); curtainTimer = null; } }

  function scheduleCurtain2(){

    clearCurtainTimer();

    if(!blindTestEnabled || !isPlayerVisible()){ instantlyOpenCurtain2(); return; }

    curtain2.style.display = '';

    resetCurtain2();

    curtainTimer = setTimeout(()=>{ startCurtain2(); }, blindDelayMs);

  }


  /* ===== Spotify wiring ===== */

  function attachSpotifyListeners2(ctrl){

    if(ctrl._jb2_bound) return; ctrl._jb2_bound = true;

    ctrl.addListener('ready', ()=>{});

    ctrl.addListener('playback_started', ()=>{

      lastActiveAt2 = Date.now();

      if(isPlayerVisible()){

        setGridVisible(false);

        setScoreboardVisible(blindTestEnabled);

      }

    });

    ctrl.addListener('playback_update', (e)=>{

      const d = e && e.data ? e.data : {};

      const uri = d?.track?.uri || d?.metadata?.currentTrack?.uri || d?.trackUri || d?.uri || null;

      const pos = d?.position || d?.currentPosition || d?.seekPositionMs || d?.progressMs || 0;

      const isPlaying = (d.isPaused === false && d.isBuffering === false);


      if(isPlayerVisible()){

        setGridVisible(!isPlaying);

        setScoreboardVisible(isPlaying && blindTestEnabled);

      }


      const trackChanged = uri && uri !== lastTrackUri;

      const restarted = pos < 1500 && lastPositionMs > 5000;

      if(trackChanged || restarted){

        lastTrackUri = uri || lastTrackUri;

        if(blindTestEnabled) scheduleCurtain2();

        else { clearCurtainTimer(); instantlyOpenCurtain2(); }

      }

      if(isPlaying){ lastActiveAt2 = Date.now(); }

      lastPositionMs = pos || lastPositionMs;

    });

  }


  function openWithSpotifyAPI2(playlistId){

    const uri = `spotify:playlist:${playlistId}`;

    const boot = (IFrameAPI)=>{

      if(!spotifyController2){

        IFrameAPI.createController(spot2, { uri, width:'100%', height:'100%' }, (ctrl)=>{

          spotifyController2 = ctrl;

          attachSpotifyListeners2(ctrl);

          setGridVisible(true);

          setScoreboardVisible(false);

          if(blindTestEnabled) scheduleCurtain2(); else { instantlyOpenCurtain2(); curtain2.style.display='none'; }

        });

      }else{

        spotifyController2.loadUri(uri);

        setGridVisible(true);

        setScoreboardVisible(false);

        if(blindTestEnabled) scheduleCurtain2(); else { instantlyOpenCurtain2(); curtain2.style.display='none'; }

      }

    };

    if(window._IFrameAPI){ boot(window._IFrameAPI); }

    else{

      const prev = window.onSpotifyIframeApiReady;

      window.onSpotifyIframeApiReady = (IFrameAPI)=>{

        window._IFrameAPI = IFrameAPI;

        try{ if(typeof prev === 'function') prev(IFrameAPI); }catch(e){}

        boot(IFrameAPI);

      };

    }

  }


  function fallbackIframe2(playlistId){

    spot2.innerHTML = `<iframe src="https://open.spotify.com/embed/playlist/${playlistId}?theme=0"

      allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"

      loading="lazy" title="Spotify player"

      style="position:absolute; inset:0; width:100%; height:100%; border:0; border-radius:8px"></iframe>`;

    setGridVisible(true);

    setScoreboardVisible(false);

    if(blindTestEnabled) scheduleCurtain2(); else { instantlyOpenCurtain2(); curtain2.style.display='none'; }

  }


  /* ===== États vitre ===== */

  function showPlayer2(playlistId){

    idle2.style.display = 'none';

    embed2.style.display = 'block';

    win2.classList.add('playing');

    spot2.innerHTML = '';


    setGridVisible(true);

    setScoreboardVisible(false);


    clearCurtainTimer();

    if(blindTestEnabled){ curtain2.style.display = ''; resetCurtain2(); } else { instantlyOpenCurtain2(); curtain2.style.display='none'; }


    let apiTimedOut = false;

    const t = setTimeout(()=>{ apiTimedOut = true; fallbackIframe2(playlistId); }, 1500);

    try{ openWithSpotifyAPI2(playlistId); }catch(e){ apiTimedOut = true; }


    startAutoReturnWatcher2();

    const checkReady = setInterval(()=>{

      if(window._IFrameAPI || apiTimedOut){ clearInterval(checkReady); clearTimeout(t); }

    }, 50);

  }


  function showIdle2(){

    win2.classList.remove('playing');

    embed2.style.display = 'none';

    spot2.innerHTML = '';

    idle2.style.display = 'block';

    selected2 = -1; autoSpin2 = true; status2.textContent = `Rotation : active (cliquez pour pause)`;

    stopAutoReturnWatcher2();

    clearCurtainTimer();

    resetCurtain2();

    setGridVisible(true);

    setScoreboardVisible(false);

    stopConfetti();

    winner.classList.remove('show');

  }


  /* Grille 6x2 (bas) */

  grid2.innerHTML = lists2.map((p, i) => `

    <button class="flip2" data-id="${p.id}" data-index="${i}" aria-label="${p.title}">

      <div class="flip2-inner">

        <div class="face2 front"><img src="${p.cover}" alt="${p.title}"></div>

        <div class="face2 back"><div class="meta2"><span class="num2">${p.code}</span><span class="title2">${p.title}</span></div></div>

      </div>

    </button>

  `).join('');


  function selectIndex2(i){

    selected2 = i; autoSpin2 = false; status2.textContent = `Rotation : en pause (cliquez pour reprendre)`;

    const target = -i * (360/lists2.length);

    const current = ((angle2 % 360)+360)%360;

    let delta = ((target - current + 540) % 360) - 180;

    angle2 += delta; applyAngle2(false);

    showPlayer2(lists2[i].id);

  }


  grid2.addEventListener('click', (e)=>{

    const btn = e.target.closest('.flip2');

    if(btn){ e.stopPropagation(); playClickClack(); selectIndex2(parseInt(btn.dataset.index,10)); }

  });


  document.addEventListener('click', (e)=>{

    if(!box2.contains(e.target)){ showIdle2(); }

    else if(embed2.style.display === 'none' && idle2.contains(e.target)){

      if(e.target.closest('.hotspot2') || e.target.closest('.item2')) return;

      if(selected2 !== -1) selected2 = -1;

      autoSpin2 = !autoSpin2;

      status2.textContent = `Rotation : ${autoSpin2 ? 'active' : 'en pause'} (cliquez pour ${autoSpin2 ? 'pause' : 'reprendre'})`;

    }

  });


  window.addEventListener('keydown', (e)=>{

    if(isPlayerVisible()) return;

    const step2 = 360/lists2.length;

    if(e.key==='ArrowRight'){ e.preventDefault(); autoSpin2=false; angle2 -= step2; applyAngle2(false); }

    if(e.key==='ArrowLeft'){  e.preventDefault(); autoSpin2=false; angle2 += step2; applyAngle2(false); }

    if(e.key==='Enter'){

      e.preventDefault();

      const a = ((-angle2 % 360)+360)%360; const front = Math.round(a/step2)%lists2.length; selectIndex2(front);

    }

  });

  window.addEventListener('resize', positionItems2);


  /* ===== Toggle + durée ===== */

  enableEl.addEventListener('change', ()=>{

    playClickClack();

    blindTestEnabled = enableEl.checked;

    localStorage.setItem('jb2_blind_enabled', blindTestEnabled ? '1':'0');

    if(blindTestEnabled){

      openSetup();

      if(isPlayerVisible()){ curtain2.style.display=''; scheduleCurtain2(); setScoreboardVisible(true); }

    }else{

      if(isPlayerVisible()){ clearCurtainTimer(); instantlyOpenCurtain2(); curtain2.style.display='none'; }

      setScoreboardVisible(false);

      stopConfetti();

      winner.classList.remove('show');

    }

  });

  delayEl.addEventListener('change', ()=>{

    const v = Math.max(0, parseInt(delayEl.value||'0',10));

    delayEl.value = Math.min(99, v);

    const vv = parseInt(delayEl.value,10);

    blindDelayMs = vv*1000;

    localStorage.setItem('jb2_blind_delay', vv.toString());

    if(isPlayerVisible() && blindTestEnabled) scheduleCurtain2();

  });


  /* ===== Setup équipes ===== */

  function openSetup(){

    inpA.value = teamAName || 'The Beatles';

    inpB.value = teamBName || 'The Stones';

    setupBack.classList.add('show');

  }

  btnCancel.addEventListener('click', ()=>{ setupBack.classList.remove('show'); });

  btnSave.addEventListener('click', ()=>{

    teamAName = (inpA.value || 'The Beatles').trim();

    teamBName = (inpB.value || 'The Stones').trim();

    scoreA = 0; scoreB = 0;

    saveScore(); renderScore();

    showToast('Noms & scores initialisés');

    setupBack.classList.remove('show');

  });

  function showToast(msg){

    setupToast.textContent = msg;

    setupToast.classList.add('show');

    setTimeout(()=> setupToast.classList.remove('show'), 1200);

  }


  /* ===== Contrôles de score ===== */

  function clampScore(v){ v = parseInt(v||0,10); if(isNaN(v)) v=0; return Math.max(0, Math.min(99, v)); }

  function checkWinner(){

    if(scoreA >= 10 || scoreB >= 10){

      const winnerName = scoreA >= 10 ? teamAName : teamBName;

      winTitle.textContent = 'Bravo !';

      winMsg.textContent = `${winnerName} a gagné, félicitations ! 🎉`;

      winner.classList.add('show');

      playVictory();

      playApplause(2.4);

      startConfetti(6500);

    }

  }

  function bumpA(d){ scoreA = clampScore(scoreA + d); renderScore(); saveScore(); checkWinner(); playClickClack(); }

  function bumpB(d){ scoreB = clampScore(scoreB + d); renderScore(); saveScore(); checkWinner(); playClickClack(); }


  btnAplus.addEventListener('click', ()=>bumpA(1));

  btnAminus.addEventListener('click', ()=>bumpA(-1));

  btnBplus.addEventListener('click', ()=>bumpB(1));

  btnBminus.addEventListener('click', ()=>bumpB(-1));

  btnReset.addEventListener('click', ()=>{

    scoreA=0; scoreB=0; renderScore(); saveScore(); playClickClack();

    winner.classList.remove('show'); stopConfetti();

  });


  scoreAEl.addEventListener('click', ()=>{

    const v = prompt('Score '+teamAName, String(scoreA));

    if(v===null) return;

    scoreA = clampScore(v); renderScore(); saveScore(); checkWinner();

  });

  scoreBEl.addEventListener('click', ()=>{

    const v = prompt('Score '+teamBName, String(scoreB));

    if(v===null) return;

    scoreB = clampScore(v); renderScore(); saveScore(); checkWinner();

  });

  btnCloseWin.addEventListener('click', ()=>{ winner.classList.remove('show'); stopConfetti(); });


  /* ===== Init ===== */

  function setInitialUI(){

    renderScore();

    buildCarousel2();

    tick2();

    positionItems2();

    setScoreboardVisible(false);

    stopConfetti();

  }

  setInitialUI();


});

</script>