/* ===== Thème arcade propre & CSP-friendly ===== */
:root{
  --bg-1:#0a0c10; --bg-2:#111827; --ink:#e5e7eb; --muted:#9ca3af; --accent:#ff3355;
  --card:#0f1520; --ring:0 18px 40px rgba(0,0,0,.35); --radius:18px;

  --red:#ef4444; --blue:#3b82f6; --yellow:#f59e0b;
  --panel-grad: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
  --panel-border: 1px solid rgba(255,255,255,.09);
}

/* Fond animé néon */
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,"Helvetica Neue",Arial,sans-serif;
  color:var(--ink); background: radial-gradient(1200px 800px at 15% -10%, rgba(255,51,85,.15), transparent 60%),
                     radial-gradient(900px 600px at 100% 0%, rgba(59,130,246,.12), transparent 60%),
                     radial-gradient(900px 600px at 80% 120%, rgba(245,158,11,.12), transparent 60%),
                     linear-gradient(180deg, var(--bg-1), var(--bg-2));
  display:flex; flex-direction:column; overflow-x:hidden;
}
body:before{
  content:""; position:fixed; inset:-40%; background:
    radial-gradient(60% 40% at 50% 50%, rgba(255,255,255,.06), transparent 70%);
  filter:blur(60px); opacity:.5; animation:floatBg 16s ease-in-out infinite alternate;
  pointer-events:none; z-index:0;
}
@keyframes floatBg{ from{transform:translateY(-3%) scale(1)} to{transform:translateY(3%) scale(1.05)} }

/* Header */
.site-header{
  position:sticky; top:0; z-index:10; padding:.85rem 1rem;
  background:linear-gradient(180deg, rgba(255,51,85,.25), rgba(255,51,85,.12));
  backdrop-filter:saturate(140%) blur(6px);
  border-bottom:1px solid rgba(255,255,255,.15);
  box-shadow:0 6px 20px rgba(255,51,85,.12);
}
.wrap{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:1rem;justify-content:space-between}
.site-header h1{font-size:1.15rem;margin:0;font-weight:800;letter-spacing:.2px;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.35)}
.badge{background:rgba(255,255,255,.14);padding:.25rem .6rem;border-radius:999px;font-size:.8rem;color:#fff;border:1px solid rgba(255,255,255,.25)}

/* Bannière top "Perdu" */
.banner{
  position:sticky; top:0; z-index:30;
  padding:.9rem 1rem; text-align:center;
  background:linear-gradient(180deg, rgba(239,68,68,1), rgba(239,68,68,.85));
  color:#fff; font-weight:900; letter-spacing:.3px;
  border-bottom:1px solid rgba(255,255,255,.25);
  box-shadow:0 10px 24px rgba(239,68,68,.3);
  transform:translateY(-110%); opacity:0; transition:.25s ease;
}
.banner.show{ transform:translateY(0); opacity:1; }

/* Layout & panels */
.container{max-width:1100px;margin:1rem auto; padding:1rem; width:100%; flex:1; display:grid; gap:1rem; position:relative; z-index:1}
.panel{
  border-radius:var(--radius);
  background:var(--panel-grad);
  border:var(--panel-border);
  box-shadow:var(--ring);
  padding:1rem;
}
.grid{display:grid; grid-template-columns:repeat(12,1fr); gap:1rem}
.col-9{grid-column:span 9}
.col-3{grid-column:span 3}
@media (max-width:900px){ .col-9,.col-3{grid-column:1 / -1} }

/* Controls + boutons */
.controls{display:flex; flex-wrap:wrap; gap:.6rem; align-items:center}
.controls-row{justify-content:space-between}
button, select{
  appearance:none; border:1px solid rgba(255,255,255,.18); background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.02));
  color:#fff; padding:.6rem .95rem; border-radius:12px; font-weight:700; cursor:pointer; transition:.15s ease;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.15), 0 6px 18px rgba(0,0,0,.25);
}
button:hover{transform:translateY(-1px)}
button.primary{background:linear-gradient(180deg, rgba(255,51,85,.9), rgba(255,51,85,.55)); border-color:rgba(255,51,85,.9)}
button.ghost{background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.03))}
button:disabled{opacity:.45; cursor:not-allowed; transform:none}
select{padding-right:2rem}
.toggle{display:inline-flex; align-items:center; gap:.4rem; user-select:none; color:#fff}

.stats{display:flex; gap:1rem; align-items:center; flex-wrap:wrap; color:var(--muted)}
.stat{background:rgba(255,255,255,.08); padding:.4rem .7rem; border-radius:10px; font-variant-numeric:tabular-nums; border:1px solid rgba(255,255,255,.12)}

.legend{color:var(--muted)}
.list{margin:.6rem 0 0 1rem; line-height:1.6}
.h2-tight{margin:.2rem 0 .6rem 0; font-size:1.05rem; color:#fff}

/* Aire de jeu : 3 colonnes fixes, responsive */
.playfield{
  display:grid;
  grid-template-columns:repeat(3, minmax(220px, 1fr));
  gap:1rem; align-items:stretch; min-height:300px;
}
@media (max-width:900px){ .playfield{ grid-template-columns:repeat(2, minmax(200px, 1fr)); } }
@media (max-width:560px){ .playfield{ grid-template-columns:1fr; } }

/* Cartes (jetons lumineux) */
.cards{display:flex; gap:1rem; align-items:center; flex-wrap:wrap; margin:.4rem 0 1rem 0}
.card-label{font-size:.82rem; color:var(--muted); margin-bottom:.3rem}
.card-current,.card-nexts{display:flex; flex-direction:column; align-items:flex-start}
.card-queue{display:flex; gap:.5rem; align-items:center}
.card-disc{
  width:68px; height:68px; border-radius:50%;
  border:2px solid rgba(255,255,255,.25);
  background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.45), rgba(255,255,255,.12) 35%, transparent 60%), rgba(255,255,255,.06);
  box-shadow:0 8px 20px rgba(0,0,0,.25), 0 0 24px rgba(255,255,255,.06) inset;
}
.card-disc.small{width:32px; height:32px}
.card-disc.red{background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.6), rgba(255,255,255,.15) 35%, transparent 60%), var(--red)}
.card-disc.blue{background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.6), rgba(255,255,255,.15) 35%, transparent 60%), var(--blue)}
.card-disc.yellow{background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.6), rgba(255,255,255,.15) 35%, transparent 60%), var(--yellow)}
.card-disc, .card-disc.small{outline:0;}

/* Tuiles cerf-volant */
.kite{
  position:relative; background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.01));
  border:1px solid rgba(255,255,255,.12); border-radius:16px; padding:1rem; box-shadow:var(--ring);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.8rem;
  user-select:none; transition:transform .15s ease, box-shadow .2s ease, border-color .2s ease;
}
.kite:hover{transform:translateY(-2px)}
.kite:active{transform:scale(.985)}
.kite h3{margin:.1rem 0 .25rem 0; font-size:1rem; color:#fff}
.kite .hint{font-size:.86rem; color:var(--muted)}
.tag{padding:.2rem .6rem; border-radius:999px; font-size:.75rem; font-weight:800; letter-spacing:.3px; color:#0b0b0b; background:#fff}
.tag.red{background:linear-gradient(180deg,#ffb3b3,#ef4444); color:#2b0000}
.tag.blue{background:linear-gradient(180deg,#b3d0ff,#3b82f6); color:#00122b}
.tag.yellow{background:linear-gradient(180deg,#ffe1a6,#f59e0b); color:#261200}

.danger{border-color:rgba(239,68,68,.65); box-shadow:0 0 0 3px rgba(239,68,68,.25) inset, var(--ring)}
.warning{box-shadow:0 0 0 3px rgba(245,158,11,.22) inset, var(--ring)}
.locked{opacity:.65; filter:grayscale(.2)}

/* Anneau timer */
.timer{width:170px; height:170px; display:grid; place-items:center; border-radius:50%; position:relative}
.timer canvas{width:170px; height:170px; display:block; filter:drop-shadow(0 8px 20px rgba(0,0,0,.35))}
.time{
  position:absolute; width:122px; height:122px; border-radius:50%;
  display:grid; place-items:center; border:1px solid rgba(255,255,255,.15); background:rgba(17,24,39,.6); color:#fff;
  font-variant-numeric:tabular-nums; font-weight:900; font-size:1.35rem; text-shadow:0 1px 0 rgba(0,0,0,.6);
  backdrop-filter: blur(4px) saturate(120%);
}

/* Effets */
.pulse{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{
  0%{transform:scale(1)} 50%{transform:scale(1.03)} 100%{transform:scale(1)}
}
.pop{animation:pop .22s ease}
@keyframes pop{
  0%{transform:scale(1)} 50%{transform:scale(1.06)} 100%{transform:scale(1)}
}
.shake{animation:shake .4s cubic-bezier(.36,.07,.19,.97) both}
@keyframes shake{
  10%,90%{transform:translateX(-1px)} 20%,80%{transform:translateX(2px)}
  30%,50%,70%{transform:translateX(-4px)} 40%,60%{transform:translateX(4px)}
}

/* Règles compactes (repliables) */
.rules-panel{ padding:.6rem .8rem; }
.rules summary{ cursor:pointer; font-weight:800; color:#fff; list-style:none; }
.rules summary::-webkit-details-marker{ display:none; }
.rules[open] summary{ margin-bottom:.4rem; }
.rules .legend{ font-size:.92rem; }

/* Divers */
.separator{border:none; border-top:1px solid rgba(255,255,255,.12); margin:1rem 0}
.callout{
  background:linear-gradient(180deg, rgba(239,68,68,.18), rgba(239,68,68,.08));
  border:1px solid rgba(239,68,68,.35); color:#ffecec; padding:.9rem 1rem; border-radius:12px;
}
.hidden{display:none !important}
.site-footer{padding:1rem; text-align:center; color:var(--muted); font-size:.9rem}
.nojs{display:block; padding:1rem; color:#ffecec; background:rgba(239,68,68,.08); border:1px solid rgba(239,68,68,.25); margin:1rem}

/* Accessibilité */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
