/* =====================================================================
   HUB : compléments de la DA de nuit (chargée APRÈS hub/nuit.css)
   - « Retrouver mes contacts » (hub/copains.js) : taille fixe, la liste défile ;
   - « Copié ! » qui s'envole (rythme des petits textes des Shérafs) ;
   - la radio du camp (hub/radio.js) ;
   - le bouton ⚙️ Réglages de la barre du haut (la fenêtre commune socle/reglages.js).
   Rien ne change de taille quand un texte change.
   ===================================================================== */

/* ---------- Retrouver mes contacts ---------- */
.sheet .copains{display:grid!important;grid-template-columns:340px minmax(0,1fr)!important;grid-template-rows:30px 152px!important;
  gap:10px 22px!important;height:auto;padding:14px 18px 16px!important;position:relative}
.sheet .copains>*{min-width:0}
.sheet .copains>h2{grid-column:1/-1;margin:0;height:30px;line-height:30px;font-size:21px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.copGauche{display:grid;grid-template-rows:40px 38px 32px 22px;gap:6px;align-content:start}
.copMoi{position:relative;display:flex;align-items:center;gap:10px;height:40px}
.copMoi>span{font-size:13px;font-weight:700;color:var(--n-gris)}
.copMonCode{position:relative;height:40px;padding:0 14px;border:1.5px dashed var(--n-trait2);border-radius:12px;background:var(--n-case);cursor:pointer;
  font:400 23px/1 var(--font-display);letter-spacing:.14em;color:var(--n-lant);font-variant-numeric:tabular-nums;white-space:nowrap}
.copMonCode:hover{background:var(--n-case2);border-color:var(--n-lant)}
.copMonCode:active{transform:translateY(1px)}
.copAjout{display:flex;gap:8px;height:38px;margin:0}
.sheet .copAjout input{flex:1;min-width:0;height:38px;padding:0 12px;font-size:14px;letter-spacing:.06em;text-transform:uppercase}
.sheet .copAjout input::placeholder{text-transform:none;letter-spacing:0}
.sheet .copAjout .mid{flex:none;height:38px;padding:0 16px;font-size:14px}
.sheet .copMsg{height:32px;line-height:16px;font-size:12px;font-weight:700;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.copAppareil{height:22px;line-height:22px;font-size:12px;color:var(--n-sourd);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.copLien{border:0;background:none;padding:0;color:var(--n-gris);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.copLien:hover{color:var(--n-creme)}
.sheet .copAmis{position:relative;height:152px;overflow-y:auto;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--n-trait2) transparent}
.sheet .copListe{list-style:none;margin:0;padding:0;display:grid;grid-auto-rows:44px;gap:6px}
.sheet .copListe li{display:grid;grid-template-columns:minmax(0,1fr) auto 32px;gap:8px;align-items:center;height:44px;padding:0 6px 0 12px;
  border:0!important;border-radius:12px}
.copQui{display:flex;flex-direction:column;justify-content:center;min-width:0;height:44px}
.copNom{display:block;max-width:100%;height:22px;padding:0;border:0;background:none;text-align:left;cursor:text;
  font:700 14px/22px var(--font-body);color:var(--n-creme);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.copNom:hover{text-decoration:underline dotted;text-underline-offset:3px}
.copNom.sansNom{font-family:var(--font-display);font-weight:400;letter-spacing:.12em;color:var(--n-lant)}
.sheet .copRenom{width:100%;max-width:220px;height:22px;padding:0 6px;font-size:13px;border-radius:6px}
.sheet .copListe li small{display:block;height:16px;line-height:16px;font-size:11.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:none}
.sheet .copListe .mid{height:30px;padding:0 12px;font-size:12.5px;display:inline-flex;align-items:center;text-decoration:none}
.sheet .copListe .ghost.small{width:32px;height:30px;padding:0;font-size:12px}
.sheet .copVide{position:absolute;inset:0;display:grid;place-items:center;padding:0 16px;border-radius:12px;background:var(--n-case)!important;
  text-align:center;font-size:13px;font-weight:600;line-height:18px}
.sheet .copVide[hidden]{display:none}

/* « Copié ! » : crème, contour sombre net, monte d'environ 30 px en 0,9 s (léger grossissement au départ), puis s'efface */
.copEnvol{position:absolute;left:var(--envol-x,120px);top:-4px;z-index:5;pointer-events:none;white-space:nowrap;
  font:400 18px/1 "Lilita One",var(--font-display),sans-serif;color:#FFF4D6;-webkit-text-stroke:4px #2a1d12;paint-order:stroke fill;
  transform:translate(-50%,0);animation:copEnvol .9s linear forwards}
@keyframes copEnvol{
  0%{transform:translate(-50%,6px) scale(.7);opacity:1}
  14%{transform:translate(-50%,0) scale(1.18);opacity:1}
  26%{transform:translate(-50%,-6px) scale(1);opacity:1}
  60%{opacity:1}
  100%{transform:translate(-50%,-30px) scale(1);opacity:0}}
@media (prefers-reduced-motion:reduce){
  .copEnvol{animation:copEnvolCalme .9s linear forwards}
  @keyframes copEnvolCalme{0%,60%{opacity:1;transform:translate(-50%,-8px)}100%{opacity:0;transform:translate(-50%,-8px)}}
}

/* ---------- la radio du camp ---------- */
.radioLien{position:relative}
.radioLien:hover{background:var(--n-case)}
button.radioRond{border:0;cursor:pointer;padding:0;transition:background .15s}
button.radioRond:hover{background:#D4BB96}
.radioLien.joue button.radioRond{background:var(--n-lant);box-shadow:0 0 0 6px rgba(243,198,107,.14),0 0 22px rgba(243,198,107,.35)}
.radioTx{flex:1;justify-content:center;height:72px}
.radioK{height:16px;line-height:16px;font-size:11px!important;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--n-terre)!important}
.radioTitre{display:block;height:22px;line-height:22px;font-size:16px;font-weight:700;color:var(--n-creme);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.radioTitre:hover{text-decoration:underline;text-underline-offset:3px}
.radioEtat{height:18px;line-height:18px;font-variant-numeric:tabular-nums}
.radioSuiv{flex:none;width:40px;height:40px;border:1.5px solid var(--n-trait2);border-radius:50%;background:transparent;display:grid;place-items:center;cursor:pointer;padding:0}
.radioSuiv:hover{background:var(--n-case2)}
.radioSuiv svg{width:16px;height:16px;fill:var(--n-texte)}
/* les trois barres qui dansent pendant la lecture (dans le rond) */
.radioBarres{display:none;align-items:flex-end;gap:3px;height:18px}
.radioBarres i{width:4px;height:6px;border-radius:2px;background:#10151F;animation:radioB .9s ease-in-out infinite alternate}
.radioBarres i:nth-child(2){animation-delay:-.3s}.radioBarres i:nth-child(3){animation-delay:-.6s}
@keyframes radioB{to{height:18px}}
@media (prefers-reduced-motion:reduce){ .radioBarres i{animation:none;height:12px} }

/* ---------- ⚙️ Réglages (barre du haut) ---------- */
.sheet .salutBtns{flex-direction:row!important}
.salutBtns .reglBtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.reglIc{font-size:18px;line-height:20px}
.reglTx{font-size:12px;line-height:14px}
.sheet .salutBtns .reglBtn.ghost.small{width:78px}

/* ---------- téléphone ---------- */
@media (max-width:860px){
  .sheet .copains{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:30px auto 152px!important;padding:14px 14px 16px!important}
  .copGauche{grid-template-rows:40px 38px 32px 22px}
  .sheet .copAmis{grid-row:3}
}
@media (max-width:700px){
  .sheet .salutBtns .reglBtn.ghost.small{width:52px}
  .reglTx{display:none}
  .reglIc{font-size:20px}
  .radioLien{gap:12px;padding:0 16px}
  .radioTitre{font-size:15px}
}
@media (max-width:400px){
  .sheet .salutBtns .reglBtn.ghost.small{width:44px}
  .copMonCode{font-size:20px;padding:0 10px}
}

/* ---- Tous les jeux : liste repliable (index.html #tousJeux, hub/tous-jeux.js) ---- */
.tousJeux{margin:0;border-radius:16px;background:var(--n-pan,#161D2B)}
.tousJeuxTete{display:flex;align-items:center;gap:12px;height:56px;padding:0 18px;cursor:pointer;list-style:none;border-radius:16px;user-select:none}
.tousJeuxTete::-webkit-details-marker{display:none}
.tousJeuxTete:hover{background:var(--n-case,#1C2433)}
.tousJeuxTete:focus-visible{outline:3px solid var(--n-lant,#F3C66B);outline-offset:2px}
.tousJeuxTete .indexTitre{margin:0!important}
.tousJeuxNb{font-size:13px;font-weight:700;color:var(--n-gris,#A9A4B2);padding:3px 10px;border-radius:999px;background:var(--n-case,#1C2433)}
.tousJeuxFl{margin-left:auto;width:12px;height:12px;border-right:2.5px solid var(--n-terre,#C2A682);border-bottom:2.5px solid var(--n-terre,#C2A682);transform:rotate(45deg) translate(-3px,-3px);transition:transform .2s}
.tousJeux[open] .tousJeuxFl{transform:rotate(225deg) translate(-3px,-3px)}
.tousJeux[open] .tousJeuxTete{border-radius:16px 16px 0 0}
.tousJeux>.jeux{padding:4px 16px 16px}
@media (prefers-reduced-motion:reduce){ .tousJeuxFl{transition:none} }
@media (max-width:620px){ .tousJeuxTete{height:50px;padding:0 14px} .tousJeux>.jeux{padding:4px 10px 12px} }

/* « Bienvenue au camp ! » = lien vers l'accueil, sans changer d'aspect */
.titreAccueil{color:inherit;text-decoration:none}
.titreAccueil:hover{color:var(--n-lant,#F3C66B)}
.titreAccueil:focus-visible{outline:3px solid var(--n-lant,#F3C66B);outline-offset:4px;border-radius:8px}

/* la réplique qui s'envole au-dessus de « Bienvenue au camp ! » (hub/tous-jeux.js) : même style que « Copié ! », plus lente */
h1:has(> .titreAccueil){position:relative}
.titreEnvol{top:-6px;z-index:30;animation-duration:2.2s!important;font-size:19px;white-space:normal!important;width:max-content;max-width:min(520px,calc(100vw - 16px));text-align:center;line-height:1.15!important}
@media (max-width:620px){ .titreEnvol{font-size:17px} }

/* « Retrouver mes contacts » caché pour le moment (index.html : hidden) */
.sheet .copains[hidden],.copains[hidden]{display:none!important}

/* 🔊 le volume de la radio : une bulle posée au-dessus du bouton (taille fixe, rien ne bouge dans la carte) */
.radioVolBtn svg .onde{fill:none;stroke:var(--n-texte);stroke-width:2;stroke-linecap:round}
.radioVolPop{position:absolute;right:12px;bottom:calc(100% + 8px);z-index:5;width:240px;height:52px;display:flex;align-items:center;gap:10px;padding:0 14px;border-radius:14px;background:var(--n-fond,#121a24);border:1.5px solid var(--n-trait2);box-shadow:0 10px 24px rgba(0,0,0,.45);color:var(--n-texte);font-size:13px}
.radioVolPop[hidden]{display:none}
.radioVolPop span{flex:none;font-weight:700}
.radioVolPop input{flex:1;min-width:0;accent-color:var(--n-lant)}
.radioVolPop b{flex:none;width:3ch;text-align:right;font-variant-numeric:tabular-nums}
