  /* Écran de verrouillage du site (mot de passe) — masque tout le reste du
     site tant qu'il n'est pas déverrouillé, sans avoir à ré-envelopper tout
     le contenu existant dans un nouveau conteneur. */
  body.site-locked > *:not(#site-gate){ display:none !important; }
  #site-gate{ display:none; }
  body.site-locked #site-gate{ display:flex; }
  .site-gate{
    position:fixed;
    inset:0;
    z-index:9999;
    background:#000;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:14px;
    padding:20px;
    text-align:center;
  }
  .site-gate-media-wrap{
    position:relative;
    width:220px;
    height:190px;
    max-width:60vw;
    margin-bottom:6px;
  }
  .site-gate-logo{
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
    filter:drop-shadow(0 0 24px rgba(255,150,40,.25));
  }
  #site-gate-video{
    filter:none; /* l'ombre portée recalculée à chaque image faisait saccader : halo fixe ci-dessous */
    border-radius:8px;
    mask-image:radial-gradient(circle, #000 55%, transparent 78%);
    -webkit-mask-image:radial-gradient(circle, #000 55%, transparent 78%);
  }
  .site-gate-static-logo{
    position:absolute;
    top:0;
    left:0;
    opacity:0;
    transition:opacity 1.2s ease;
    pointer-events:none;
  }
  .site-gate-static-logo.visible{ opacity:1; }
  .site-gate-media-wrap::before{
    content:'';
    position:absolute;
    inset:6%;
    border-radius:50%;
    background:radial-gradient(circle, rgba(255,150,40,.16), transparent 70%);
    pointer-events:none;
    z-index:-1; /* derrière la vidéo et le logo */
  }
  [data-theme="alliance"] .site-gate-media-wrap::before{ display:none; }
  #site-gate-video.fading-out{
    opacity:0;
    transition:opacity 1.2s ease;
  }
  .site-gate-est{
    font-family:'Cinzel', serif;
    color:var(--gold);
    letter-spacing:.08em;
    font-size:14px;
    text-transform:uppercase;
  }
  .site-gate-count{
    font-family:'IBM Plex Mono', monospace;
    color:var(--text-2);
    font-size:13px;
    margin-bottom:18px;
  }
  .site-gate-form{
    display:flex;
    gap:8px;
  }
  .site-gate-input{
    background:var(--ink-1);
    border:1px solid var(--line);
    border-radius:6px;
    color:var(--text-1);
    padding:10px 14px;
    font-size:14px;
    width:220px;
    text-align:center;
  }
  .site-gate-input:focus{ outline:none; border-color:var(--gold); }
  .site-gate-btn{
    background:var(--frost-0);
    border:none;
    border-radius:6px;
    color:#1a0f08;
    font-weight:600;
    padding:10px 20px;
    cursor:pointer;
  }
  .discord-btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin-top:14px;
    padding:9px 16px;
    background:rgba(88,101,242,.16);
    border:1px solid #5865F2;
    border-radius:3px;
    color:#c5cbff;
    font-size:13px;
    text-decoration:none;
    transition:background-color .2s ease;
  }
  .discord-btn:hover{ background:rgba(88,101,242,.3); }
  .discord-btn-icon{ font-size:15px; }
  .rules-discord{ font-size:13px; color:var(--text-2); }
  .rules-discord strong{ color:var(--frost-1); }
  .site-gate-note{
    margin-top:10px;
    max-width:320px;
    font-size:11.5px;
    line-height:1.5;
    color:var(--text-2);
    text-align:center;
  }
  .site-gate-error{
    color:var(--danger);
    font-size:13px;
    min-height:18px;
  }

  :root{
    --ink-0:#0b0705;
    --ink-1:#160e0a;
    --ink-2:#1f130c;
    --line:#3d2415;
    --frost-0:#ff7a3c;
    --frost-1:#ffb37a;
    --gold:#e8a33d;
    --gold-dim:#a06f24;
    --text-0:#f3ece3;
    --text-1:#c9b3a2;
    --text-2:#8a7263;
    --danger:#e05a4a;
    --ok:#7fd67f;
    --ok-2:#7fd996;
    --warn:#e0a030;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  .ambient-bg{
    position:fixed;
    inset:0;
    z-index:-1;
    pointer-events:none;
    background:
      linear-gradient(rgba(8,5,4,.88), rgba(8,5,4,.93)),
      url('bg-lava.webp');
    background-size:cover;
    background-position:center 65%;
    filter:saturate(.65) brightness(.7);
  }
  body{
    background:
      radial-gradient(circle at 50% 0%, rgba(42,20,8,.5) 0%, transparent 55%),
      var(--ink-0);
    color:var(--text-0);
    font-family:'IBM Plex Sans', sans-serif;
    min-height:100vh;
  }

  header{
    padding:0 6vw 32px;
    border-bottom:1px solid var(--line);
  }
  .hero{
    position:relative;
    padding:64px 6vw 40px;
    text-align:center;
    overflow:hidden;
    border-bottom:1px solid var(--line);
  }
  .hero::before{
    content:'';
    position:absolute;
    inset:0;
    background:radial-gradient(ellipse 60% 80% at 50% 30%, rgba(255,122,60,.22) 0%, transparent 70%);
    pointer-events:none;
  }
  .hero-phoenix{
    position:relative;
    width:260px;
    height:260px;
    margin:0 auto 4px;
  }
  .hero-phoenix img{
    width:100%;
    height:100%;
    object-fit:contain;
    filter:drop-shadow(0 0 40px rgba(255,122,60,.5));
  }
  .hero-sub{
    position:relative;
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    letter-spacing:.15em;
    color:var(--frost-1);
    margin-top:6px;
  }

  .page-head{
    padding:20px 6vw 0;
    text-align:center;
  }
  .page-title{
    font-family:'Cinzel', serif;
    font-weight:700;
    font-size:clamp(28px,4vw,42px);
    margin:0;
    color:var(--text-0);
  }
  .status-bar{
    margin-top:0;
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    color:var(--text-2);
    display:flex;
    justify-content:center;
    gap:24px;
    flex-wrap:wrap;
  }
  .status-bar b{ color:var(--frost-1); font-weight:500; }

  main{ padding:36px 0 80px; }

  .tab-bar{
    display:flex;
    justify-content:center;
    gap:4px;
    padding:18px 6vw 0;
    border-bottom:1px solid var(--line);
  }
  .tab-btn{
    background:none;
    border:none;
    color:var(--text-2);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:14px;
    font-weight:600;
    padding:12px 18px;
    cursor:pointer;
    border-bottom:2px solid transparent;
    margin-bottom:-1px;
  }
  .tab-btn{ position:relative; }
  .site-live-banner{ position:fixed; left:50%; bottom:calc(18px + env(safe-area-inset-bottom, 0px)); transform:translateX(-50%); z-index:900; display:flex; align-items:center; gap:10px;
    padding:9px 12px 9px 16px; border:1px solid var(--gold-dim); border-radius:999px; background:var(--ink-1); box-shadow:0 10px 30px rgba(0,0,0,.55); font-size:13px; color:var(--text-0); }
  .site-live-banner[hidden]{ display:none; }
  .site-live-banner button{ border:0; border-radius:999px; padding:6px 12px; font:inherit; font-size:12.5px; font-weight:600; cursor:pointer; background:var(--frost-0); color:var(--ink-0); }
  .site-live-banner #site-live-close{ background:transparent; color:var(--text-2); padding:6px 8px; }
  /* Icône parchemin : ouvre le règlement dans une fenêtre, sur toutes les pages */
  .tab-rules-btn{ display:inline-flex; align-items:center; justify-content:center; align-self:center; width:40px; height:40px; margin-left:4px;
    border:1px solid var(--line); border-radius:8px; background:transparent; color:var(--text-2); cursor:pointer; flex:none; transition:color .15s, border-color .15s }
  .tab-rules-btn:hover{ color:var(--gold); border-color:var(--gold-dim) }
  .tab-rules-btn:focus-visible{ outline:2px solid var(--gold); outline-offset:2px }
  .rules-modal-box{ max-height:88vh; overflow-y:auto }
  .rules-modal-box .rules-header-img{ display:block; max-width:100%; max-height:170px; width:auto; margin:0 auto 14px }
  .rules-modal-box .vh{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap }
  /* Admin : onglet « Saisons TCG » mis en avant (liseré doré + icône de carte) */
  .admin-subtab-btn.admin-subtab-tcg{ display:inline-flex; align-items:center; gap:7px; border-color:var(--gold); color:var(--gold);
    box-shadow:0 0 10px color-mix(in srgb, var(--gold) 25%, transparent) }
  .admin-subtab-btn.admin-subtab-tcg .ico{ display:flex; width:20px; height:20px; align-items:center; justify-content:center; border-radius:4px;
    border:1px solid var(--gold-dim); background:var(--ink-2); color:var(--gold) }
  .admin-subtab-btn.admin-subtab-tcg.active{ background:var(--gold); border-color:var(--gold); color:var(--ink-0) }
  .admin-subtab-btn.admin-subtab-tcg.active .ico{ background:transparent; border-color:var(--ink-0); color:var(--ink-0) }
  .tab-btn:hover{ color:var(--text-1); }
  /* Pastille : boosters Reborn TCG à ouvrir */
  .tab-badge{ position:absolute; top:5px; right:-2px; min-width:18px; height:18px; padding:0 5px; border-radius:999px;
    background:var(--gold); color:var(--ink-0); font-size:11px; font-weight:700; display:flex; align-items:center; justify-content:center;
    box-shadow:0 0 0 2px var(--ink-0); }
  .tab-badge[hidden]{ display:none; }
  .tab-btn.active{ color:var(--frost-0); border-bottom-color:var(--frost-0); }
  .tab-panel{ display:none; }
  .tab-panel.active{ display:block; }

  .subtab-bar{
    display:flex;
    gap:8px;
    padding:24px 6vw 0;
  }
  .subtab-btn{
    background:var(--ink-1);
    border:1px solid var(--line);
    color:var(--text-2);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:13px;
    font-weight:600;
    padding:8px 16px;
    cursor:pointer;
  }
  .subtab-btn:hover{ color:var(--text-1); }
  .subtab-btn.active{ color:var(--ink-0); background:var(--frost-0); border-color:var(--frost-0); }
  .subtab-panel{ display:none; }
  .subtab-panel.active{ display:block; }

  .rosters-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
    gap:20px;
    padding:8px 6vw 40px;
  }
  .roster-col{
    background:var(--ink-1);
    border:1px solid var(--line);
  }
  .roster-col-head{
    padding:16px 18px;
    border-bottom:1px solid var(--line);
    font-family:'Cinzel', serif;
    font-size:17px;
    color:var(--text-0);
  }
  .roster-col-head .roster-type{
    display:block;
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:.08em;
    color:var(--frost-1);
    margin-top:2px;
  }
  .roster-search-wrap{ padding:10px 14px; border-bottom:1px solid var(--line); }
  .roster-col-labels{
    display:flex; justify-content:space-between; align-items:center;
    padding:6px 18px; font-size:9px; color:var(--text-2); text-transform:uppercase; letter-spacing:.04em;
  }
  .roster-col-labels-pts{ display:flex; gap:16px; }
  .roster-col-labels-pts span{ display:inline-block; width:38px; text-align:right; }
  .roster-search-input{
    width:100%;
    background:var(--ink-2);
    border:1px solid var(--line);
    color:var(--text-0);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:13px;
    padding:8px 10px;
    outline:none;
  }
  .roster-search-input:focus{ border-color:var(--frost-0); }
  .roster-search-input::placeholder{ color:var(--text-2); }
  .roster-sort-row{
    display:flex;
    align-items:center;
    gap:6px;
    margin-top:8px;
  }
  .roster-sort-label{ font-size:11px; color:var(--text-2); }
  .roster-sort-toggle{ display:flex; border:1px solid var(--line); border-radius:4px; overflow:hidden; }
  .roster-sort-btn{
    background:var(--ink-2);
    border:none;
    border-right:1px solid var(--line);
    color:var(--text-2);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:11px;
    padding:5px 10px;
    cursor:pointer;
    transition:background .15s ease, color .15s ease;
  }
  .roster-sort-btn:last-child{ border-right:none; }
  .roster-sort-btn:hover{ color:var(--text-0); }
  .roster-sort-btn.active{ color:var(--ink-0); background:var(--frost-0); font-weight:600; }
  .roster-group-header{
    font-family:'Cinzel', serif; font-size:10px; color:var(--text-2); text-transform:uppercase;
    letter-spacing:.05em; padding:14px 18px 6px; border-top:1px solid var(--line);
  }
  .roster-group-header:first-child{ border-top:none; padding-top:4px; }
  .roster-row{
    position:relative;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:10px;
    padding:10px 18px;
    border-bottom:1px solid var(--line);
    font-size:13px;
  }
  .roster-row:last-child{ border-bottom:none; }
  .roster-row.top{ background:linear-gradient(90deg, rgba(232,163,61,.12), transparent); border-left:2px solid var(--gold); padding-left:16px; }
  .roster-row.top .r-mate{ color:var(--gold); }
  .roster-row .r-idx{ color:var(--text-2); font-family:'IBM Plex Mono', monospace; font-size:11px; width:16px; flex:0 0 auto; }
  .roster-row .r-main{ flex:1; min-width:0; }
  .roster-row .r-mate{ color:var(--text-0); font-weight:600; }
  .r-icon-stack{ position:relative; display:inline-block; width:16px; height:16px; vertical-align:middle; margin-right:6px; }
  .r-cls-icon{ width:16px; height:16px; border-radius:3px; display:block; }
  .r-role-badge{
    position:absolute; bottom:-3px; right:-4px; font-size:8px; line-height:1;
    background:var(--ink-1); border-radius:50%; width:11px; height:11px;
    display:flex; align-items:center; justify-content:center;
  }
  .r-pts-blocks{ display:flex; gap:16px; flex:0 0 auto; }
  .r-pts-block{ font-family:'IBM Plex Mono', monospace; font-size:13px; white-space:nowrap; width:38px; text-align:right; color:var(--gold); }
  .r-pts-block.ulduar{ color:#8ec8e8; }
  .r-pts-block.main .r-pts-val{ color:var(--gold); }
  .r-pts-block.ulduar .r-pts-val{ color:#8ec8e8; }
  .roster-row .r-perso{ color:var(--text-2); font-size:12px; }
  .roster-empty{ padding:16px 18px; color:var(--text-2); font-size:13px; }

  /* --- Password gates --- */
  .gate-wrap{
    display:flex;
    justify-content:center;
    padding:60px 6vw;
  }
  .gate-box{
    background:var(--ink-1);
    border:1px solid var(--line);
    padding:32px;
    max-width:340px;
    width:100%;
    text-align:center;
  }
  .gate-title{ font-family:'Cinzel', serif; font-size:20px; color:var(--text-0); margin-bottom:8px; }
  .gate-sub{ font-size:13px; color:var(--text-2); margin:0 0 18px; line-height:1.5; }
  .gate-input{
    width:100%;
    background:var(--ink-2);
    border:1px solid var(--line);
    color:var(--text-0);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:14px;
    padding:10px 12px;
    outline:none;
    margin-bottom:12px;
  }
  .gate-input:focus{ border-color:var(--frost-0); }
  .gate-btn{
    width:100%;
    background:var(--frost-0);
    border:none;
    color:var(--ink-0);
    font-family:'IBM Plex Sans', sans-serif;
    font-weight:700;
    font-size:14px;
    padding:11px;
    cursor:pointer;
  }
  .gate-btn:hover{ background:var(--frost-1); }
  .gate-error{ color:var(--danger); font-size:12px; margin-top:10px; min-height:14px; }

  /* --- Inscriptions form --- */
  .ins-wrap{ max-width:560px; margin:0 auto; padding:32px 6vw 60px; }
  .ins-title{ font-family:'Cinzel', serif; font-size:26px; color:var(--text-0); margin:0 0 8px; text-align:center; }
  .ins-sub{ font-size:13px; color:var(--text-2); text-align:center; margin:0 0 32px; }
  .ins-field{ margin-bottom:20px; }
  .ins-label{ display:block; font-size:13px; font-weight:600; color:var(--text-0); margin-bottom:8px; }
  .ins-sublabel{ display:block; font-size:11px; color:var(--text-2); margin-bottom:6px; }
  .ins-input, .classe-select{
    width:100%;
    background:var(--ink-1);
    border:1px solid var(--line);
    color:var(--text-0);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:14px;
    padding:10px 12px;
    outline:none;
  }
  .ins-input:focus, .classe-select:focus{ border-color:var(--frost-0); }
  .classe-select{ cursor:pointer; }
  .rand-select:disabled{ cursor:default; opacity:.6; }
  /* liste des personnages du joueur (formulaire d'inscription) */
  .ins-char-wrap{ position:relative; }
  .ins-char-wrap .ins-input{ padding-right:38px; }
  .icp-arrow{ position:absolute; right:6px; top:50%; transform:translateY(-50%); width:28px; height:28px; display:grid; place-items:center; border:0; border-radius:4px; background:none; color:var(--text-2); cursor:pointer; transition:transform .2s, color .2s; }
  .icp-arrow:hover{ color:var(--frost-0); }
  .ins-char-wrap.open .icp-arrow{ transform:translateY(-50%) rotate(180deg); color:var(--frost-0); }
  .ins-char-panel{ position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:20; max-height:260px; overflow-y:auto; background:var(--ink-1); border:1px solid var(--frost-0); border-radius:6px; box-shadow:0 12px 28px rgba(0,0,0,.55); padding:4px; }
  .icp-head{ font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-2); padding:6px 8px 4px; }
  .icp-hint{ font-size:12.5px; color:var(--text-2); padding:10px; line-height:1.4; }
  .icp-item{ display:flex; align-items:center; gap:10px; width:100%; padding:7px 8px; border:0; border-left:3px solid var(--k); border-radius:4px; background:none; color:var(--text-0); font:inherit; font-size:13.5px; text-align:left; cursor:pointer; }
  .icp-item + .icp-item{ margin-top:2px; }
  .icp-item:hover, .icp-item.active{ background:color-mix(in srgb, var(--k) 14%, var(--ink-2)); }
  .icp-item.sel{ background:color-mix(in srgb, var(--k) 20%, var(--ink-2)); }
  .icp-item img, .icp-noic{ width:22px; height:22px; border-radius:50%; flex:none; box-shadow:0 0 0 1.5px var(--k); background:var(--ink-2); }
  .icp-name{ font-weight:600; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .icp-cls{ font-size:11.5px; color:var(--k); white-space:nowrap; }
  .icp-ok{ color:var(--ok); font-weight:700; margin-left:4px; }
  .icp-item.off{ opacity:.45; cursor:not-allowed; filter:grayscale(.6); }
  .icp-item.off:hover{ background:none; }
  .icp-item.off .icp-cls{ color:var(--text-2); }
  /* Admin > Snapshot armurerie : synchronisation automatique */
  .snap-auto{ display:flex; flex-direction:column; gap:8px; align-items:flex-start; padding:14px 16px; margin-bottom:16px; background:var(--ink-2); border:1px solid var(--line); border-radius:6px; font-size:13px; }
  .snap-auto-status{ color:var(--text-1); line-height:1.5; }
  .snap-steps{ margin:0; padding-left:20px; display:flex; flex-direction:column; gap:8px; color:var(--text-1); }
  .snap-steps kbd{ font:500 11px 'IBM Plex Mono', monospace; padding:1px 5px; border:1px solid var(--line); border-radius:3px; background:var(--ink-1); }
  .snap-auto-status{ color:var(--text-2); font-size:12px; }
  /* spé jouée (roster / compo) */
  .rh-row select.rh-role-select, #admin-roster-wrap .rh-row select.rh-role-select{ flex:0 0 116px; width:116px; }
  .r-spec-badge{ width:11px; height:11px; border-radius:50%; object-fit:cover; box-shadow:0 0 0 1.5px var(--ink-0); }
  .r-rand{ font-size:11px; color:var(--gold); white-space:nowrap; }
  .insc-rand{ display:inline-block; margin-left:4px; font-size:11px; color:var(--gold); border:1px solid var(--gold-dim); border-radius:3px; padding:0 5px; white-space:nowrap; }

  .perso-block{
    background:var(--ink-1);
    border:1px solid var(--line);
    padding:18px;
    margin-bottom:20px;
  }
  .perso-block > .ins-label{ font-family:'Cinzel', serif; font-size:16px; margin-bottom:12px; }
  .perso-block > .ins-input, .perso-block > .ins-char-wrap{ margin-bottom:16px; }
  .perso-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .perso-row .ins-field:has(.rand-select){ grid-column:1 / -1; }   /* spé de rand : sa propre ligne, sous la classe et le rôle */

  .ins-hint{ color:var(--text-2); font-size:13px; margin:0 0 20px; }
  .day-block{
    border:1px solid var(--frost-0);
    padding:0 0 4px;
    margin-bottom:28px;
  }
  .day-block-title{
    font-family:'Cinzel', serif;
    font-size:18px;
    color:var(--ink-0);
    background:var(--frost-0);
    padding:10px 18px;
    margin:0;
  }
  .day-block-inner{ padding:18px; }

  .multiselect{ position:relative; }
  .multiselect-btn{
    width:100%;
    text-align:left;
    background:var(--ink-2);
    border:1px solid var(--line);
    color:var(--text-1);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:13px;
    padding:10px 12px;
    cursor:pointer;
  }
  .multiselect-btn:hover{ border-color:var(--frost-0); }
  .multiselect-btn.disabled{ cursor:not-allowed; opacity:.5; }
  .multiselect-dropdown{
    position:absolute;
    top:calc(100% + 4px);
    left:0;
    right:0;
    background:var(--ink-1);
    border:1px solid var(--line);
    z-index:10;
    display:none;
  }
  .multiselect-dropdown.open{ display:block; }
  .ms-option{
    display:flex;
    align-items:center;
    gap:8px;
    padding:9px 12px;
    font-size:13px;
    color:var(--text-0);
    cursor:pointer;
  }
  .ms-option:hover{ background:var(--ink-2); }
  .ms-option input[disabled] + span, .ms-option:has(input[disabled]){ color:var(--text-2); cursor:not-allowed; opacity:.5; }

  .ins-submit-btn{
    width:100%;
    background:var(--frost-0);
    border:none;
    color:var(--ink-0);
    font-family:'Cinzel', serif;
    font-weight:700;
    font-size:16px;
    padding:14px;
    cursor:pointer;
    margin-top:8px;
  }
  .ins-submit-btn:hover{ background:var(--frost-1); }
  .ins-success{
    margin-top:16px;
    padding:12px;
    background:rgba(79,191,110,.12);
    border:1px solid rgba(79,191,110,.4);
    color:#7fd996;
    text-align:center;
    font-size:14px;
  }

  /* --- Modals --- */
  .modal-overlay{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(5,3,2,.8);
    z-index:100;
    align-items:center;
    justify-content:center;
    padding:20px;
  }
  .modal-overlay.open{ display:flex; }
  /* Ces deux fenêtres s'ouvrent PAR-DESSUS une autre déjà ouverte (panneau
     Admin pour l'export, fiche joueur pour le comparateur) : sans ça elles
     apparaissent derrière et semblent ne pas s'ouvrir. */
  #compo-export-overlay, #compare-overlay{ z-index:160; }
  .modal-box{
    background:var(--ink-1);
    border:1px solid var(--line);
    padding:28px;
    max-width:420px;
    width:100%;
    position:relative;
  }
  .modal-close-x{
    position:absolute;
    top:12px;
    right:12px;
    background:none;
    border:none;
    color:var(--text-2);
    font-size:22px;
    line-height:1;
    cursor:pointer;
    padding:4px 8px;
  }
  .modal-close-x:hover{ color:var(--text-0); }
  .modal-box-wide{ max-width:960px; max-height:85vh; overflow-y:auto; }
  .modal-box-roster-wide{ max-width:1400px !important; }
  .modal-title{ font-family:'Cinzel', serif; font-size:19px; color:var(--text-0); margin-bottom:16px; text-align:center; }
  .modal-summary{ font-size:13px; color:var(--text-1); line-height:1.7; margin-bottom:20px; }
  .modal-summary b{ color:var(--text-0); }
  .modal-actions{ display:flex; gap:10px; }
  .modal-btn{
    flex:1;
    padding:11px;
    font-family:'IBM Plex Sans', sans-serif;
    font-weight:600;
    font-size:14px;
    border:1px solid var(--line);
    cursor:pointer;
  }
  .modal-btn-secondary{ background:var(--ink-2); color:var(--text-1); }
  .modal-btn-secondary:hover{ border-color:var(--text-1); }
  .modal-btn-primary{ background:var(--frost-0); color:var(--ink-0); border-color:var(--frost-0); font-weight:700; }
  .modal-btn-primary:hover{ background:var(--frost-1); }
  .modal-close{
    display:block;
    margin:18px auto 0;
    background:none;
    border:1px solid var(--line);
    color:var(--text-2);
    font-size:12px;
    padding:7px 16px;
    cursor:pointer;
  }

  /* --- Admin discreet link --- */
  .admin-discreet{ text-align:center; margin-top:14px; display:flex; justify-content:center; gap:18px; }
  #admin-toggle, #presence-toggle{
    background:none;
    border:none;
    color:var(--text-2);
    font-size:11px;
    opacity:.4;
    cursor:pointer;
    letter-spacing:.05em;
    font-family:'IBM Plex Sans', sans-serif;
  }
  #admin-toggle:hover, #presence-toggle:hover{ opacity:.8; color:var(--frost-1); }

  .admin-table{ width:100%; border-collapse:collapse; font-size:12px; }
  /* inscriptions : vue tableau (comme la feuille des officiers) */
  .insc-ou{ display:inline-block; padding:0 5px; border-radius:3px; background:#7a4fb0; color:#fff; font-size:10px; font-weight:700; letter-spacing:.3px; }
  .insc-oui{ color:#6fd08c; font-weight:700; }
  .insc-g-defile{ overflow-x:auto; border:1px solid var(--line); border-radius:4px; }
  .insc-g-table{ width:auto; min-width:100%; white-space:nowrap; }
  .insc-g-table th{ text-align:center; }
  .insc-g-jour, .insc-g-doublon{ text-align:center; }
  .insc-g-doublon span{ color:#ffb347; cursor:help; }
  .insc-g-comm{ white-space:normal; min-width:160px; max-width:260px; font-size:11px; color:var(--text-2); }
  .insc-g-discord{ font-size:10px; color:var(--text-2); }
  .insc-g-dont{ font-weight:400; color:var(--text-2); font-size:10px; }
  .insc-g-sep{ width:6px; padding:0 !important; background:var(--ink-1); }
  .insc-g-spe{ text-align:center; font-size:11px; min-width:58px; }
  .insc-g-spe img{ width:14px; height:14px; vertical-align:-3px; margin-right:4px; border-radius:2px; }
  .admin-table th{
    background:var(--ink-2);
    color:var(--frost-1);
    text-align:left;
    padding:8px 10px;
    border-bottom:1px solid var(--line);
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    white-space:nowrap;
  }
  .admin-table td{
    padding:8px 10px;
    border-bottom:1px solid var(--line);
    color:var(--text-1);
    vertical-align:top;
  }
  .admin-table tr:hover td{ background:var(--ink-2); }

  .admin-subtab-bar{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
  /* Admin en temps réel : indicateur de connexion + bandeau « Actualiser » */
  .admin-live{ display:flex; align-items:center; justify-content:flex-end; gap:6px; font-size:11.5px; color:var(--text-2); margin:-4px 0 8px; }
  .admin-live-dot{ width:8px; height:8px; border-radius:50%; background:var(--text-2); }
  .admin-live.on .admin-live-dot{ background:#5fd068; box-shadow:0 0 6px #5fd068; }
  .admin-live.off .admin-live-dot{ background:var(--danger); }
  .admin-live-banner{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 12px; padding:9px 12px;
    border:1px solid var(--gold-dim); border-radius:6px; background:color-mix(in srgb, var(--gold) 10%, var(--ink-1)); font-size:13px; color:var(--text-0); }
  .admin-live-banner[hidden], .admin-live[hidden]{ display:none; }
  .admin-subtab-btn{
    background:var(--ink-2);
    border:1px solid var(--line);
    color:var(--text-2);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:12px;
    padding:7px 14px;
    cursor:pointer;
  }
  .admin-subtab-btn.active{ color:var(--ink-0); background:var(--frost-0); border-color:var(--frost-0); font-weight:600; }
  .admin-subtab-panel{ display:none; }
  .admin-subtab-panel.active{ display:block; }
  .rh-groups-wrap{ display:grid; grid-template-columns:repeat(6, 1fr); gap:14px; }
  /* Ligne 1 : Groupe 1 & 2 (moitié chacun) — Ligne 2 : Groupe 3, 4 & 5 (tiers
     chacun). Repose sur le fait qu'il y a toujours exactement 5 groupes. */
  .rh-groups-wrap > .rh-group:nth-child(1){ grid-column:1 / 4; }
  .rh-groups-wrap > .rh-group:nth-child(2){ grid-column:4 / 7; }
  .rh-groups-wrap > .rh-group:nth-child(3){ grid-column:1 / 3; }
  .rh-groups-wrap > .rh-group:nth-child(4){ grid-column:3 / 5; }
  .rh-groups-wrap > .rh-group:nth-child(5){ grid-column:5 / 7; }
  .rh-group{ flex:1 1 280px; min-width:250px; background:var(--ink-2); border:1px solid var(--line); padding:10px; }
  .rh-group-head{ font-weight:600; font-size:12px; color:var(--text-2); text-transform:uppercase; letter-spacing:.03em; margin-bottom:8px; }
  .rh-row{ display:flex; align-items:center; gap:6px; padding:5px 6px; background:var(--ink-1); border:1px solid var(--line); margin-bottom:4px; cursor:grab; }
  .rh-row.rh-empty{ color:var(--text-2); font-size:12px; justify-content:center; cursor:default; }
  .rh-row .rh-drag{ color:var(--text-2); font-size:12px; }
  .rh-row .rh-icon{ width:18px; height:18px; border-radius:3px; flex-shrink:0; }
  .rh-row .rh-name{ font-weight:600; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:110px; }
  .rh-row select.rh-spe-select{ flex:1; min-width:70px; background:var(--ink-2); border:1px solid var(--line); color:var(--text-1); font-size:12px; padding:2px 4px; }
  .rh-row select.rh-role-select{ flex:0 0 42px; background:var(--ink-2); border:1px solid var(--line); color:var(--text-1); font-size:12px; padding:2px 1px; }
  .rh-row input.rh-pts-input{ width:52px; background:var(--ink-2); border:1px solid var(--line); color:var(--text-1); font-size:12px; padding:2px 4px; }
  .rh-row .rh-del{ color:var(--danger); background:none; border:none; cursor:pointer; font-size:14px; padding:0 2px; }

  /* --- Admin > Roster : colonne de groupes (case Abs.) + panneau de remplaçants --- */
  .rh-roster-cols{ display:flex; flex-wrap:wrap; gap:16px; align-items:flex-start; }
  #admin-roster-wrap .rh-groups-wrap{ display:flex; flex-direction:column; gap:12px; flex:1 1 780px; max-width:800px; min-width:0; }
  #admin-roster-wrap .rh-group{ flex:none; min-width:0; padding:10px 10px 6px; }
  #admin-roster-wrap .rh-group-head{ display:flex; justify-content:space-between; align-items:baseline; padding:0 6px; }
  .rh-group-count{ font-weight:400; font-size:11.5px; letter-spacing:0; text-transform:none; color:var(--text-2); }
  .rh-cnt-abs{ color:#ff9d8f; } .rh-cnt-malus{ color:#ffb36b; }
  .rh-cols-head{ display:flex; align-items:center; gap:6px; padding:0 7px 4px; font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-2); }
  .rh-cols-head span{ flex:none; }
  .rh-cols-head .c-drag{ width:10px; } .rh-cols-head .c-icon{ width:18px; } .rh-cols-head .c-name{ flex:1; min-width:0; }
  .rh-cols-head .c-role{ width:44px; text-align:center; } .rh-cols-head .c-spe{ width:118px; }
  .rh-cols-head .c-pts{ width:52px; text-align:right; } .rh-cols-head .c-bu{ width:34px; text-align:center; } .rh-cols-head .c-malus{ width:78px; }
  .rh-cols-head .c-abs{ width:40px; text-align:center; } .rh-cols-head .c-del{ width:20px; }
  #admin-roster-wrap .rh-row .rh-drag{ flex:0 0 10px; text-align:center; }
  #admin-roster-wrap .rh-row .rh-main{ flex:1; min-width:0; display:flex; flex-wrap:wrap; align-items:center; gap:2px 8px; }
  .rh-row .rh-id{ display:flex; align-items:baseline; gap:8px; min-width:0; max-width:100%; }
  .rh-row .rh-tags{ display:flex; align-items:center; gap:8px; min-width:0; }
  #admin-roster-wrap .rh-row .rh-name{ max-width:none; flex:0 1 auto; min-width:0; }
  .rh-row .rh-player{ font-size:11.5px; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
  #admin-roster-wrap .rh-row select.rh-role-select{ flex:0 0 44px; }
  #admin-roster-wrap .rh-row select.rh-spe-select{ flex:0 0 118px; min-width:0; }
  #admin-roster-wrap .rh-row input.rh-pts-input{ flex:0 0 52px; width:52px; box-sizing:border-box; }
  .rh-row .rh-abs{ flex:0 0 40px; display:flex; align-items:center; justify-content:center; cursor:pointer; }
  .rh-row .rh-abs input{ width:16px; height:16px; margin:0; accent-color:var(--danger); cursor:pointer; }
  .rh-row .rh-abs input:disabled{ cursor:not-allowed; opacity:.4; }
  .rh-row .rh-bu{ flex:0 0 34px; display:flex; align-items:center; justify-content:center; cursor:pointer; }
  .rh-row .rh-bu input{ width:16px; height:16px; margin:0; accent-color:var(--gold); cursor:pointer; }
  #admin-roster-wrap .rh-row select.rh-malus-select{ flex:0 0 78px; min-width:0; }
  .rh-row select.rh-malus-select.on{ border-color:#7a4313; color:#ffb36b; }
  #admin-roster-wrap .rh-row .rh-del{ flex:0 0 20px; }
  .rh-row.is-bu{ background:#1c1608; border-color:#6b4d17; }
  .rh-row.has-malus{ border-color:#7a4313; }
  .rh-row.is-absent{ background:#1d0f0c; border-color:#5a2a22; }
  .rh-row.is-absent .rh-name{ text-decoration:line-through; opacity:.65; }
  .rh-row.is-absent .rh-icon, .rh-row.is-absent select:not(.rh-malus-select), .rh-row.is-absent .rh-pts-input{ opacity:.45; }
  .rh-pill{ font-size:10px; font-weight:600; letter-spacing:.08em; padding:1px 6px; white-space:nowrap; border:1px solid; }
  .rh-pill-abs{ background:#3a1511; color:#ff9d8f; border-color:#5a2a22; }
  .rh-pill-malus{ background:#2a1608; color:#ffb36b; border-color:#7a4313; }
  .rh-pill-bu{ background:#2a1f0c; color:var(--gold); border-color:#6b4d17; }
  .rh-pill-tr{ background:#0d1d2d; color:#8fd3ff; border-color:#2a4a6a; }
  #admin-roster-wrap .rh-row select.rh-tr-select{ flex:0 0 96px; min-width:0; } .rh-row select.rh-tr-select.on{ border-color:#2a4a6a; color:#8fd3ff; } .rh-row select.rh-tr-select:disabled{ opacity:.35; }
  .rh-cols-head .c-tr{ width:96px; }
  .rc-tr{ display:inline-block; margin-left:5px; padding:0 5px; border-radius:6px; font-size:10px; font-weight:700; color:#8fd3ff; background:#0d1d2d; border:1px solid #2a4a6a; vertical-align:1px; }
  .admin-roster-abs-note{ margin-top:14px; padding:7px 10px; border:1px solid var(--line); border-radius:4px; font-size:12.5px; color:var(--text-1); background:var(--ink-1); }
  .admin-roster-abs-note:empty{ display:none; }
  .rh-repl-panel{ flex:999 1 420px; min-width:0; box-sizing:border-box; display:flex; flex-direction:column; gap:14px; padding:16px; background:var(--ink-2); border:1px solid var(--line); position:sticky; top:12px; }
  .rh-repl-panel h3{ margin:0; font-family:'Cinzel',serif; font-size:15px; letter-spacing:.14em; text-transform:uppercase; color:var(--gold); }
  .rh-repl-panel .rh-repl-sub{ margin:4px 0 0; font-size:12px; color:var(--text-1); }
  .rh-repl-toggle{ display:flex; justify-content:space-between; align-items:center; gap:12px; width:100%; padding:0; background:none; border:0; color:inherit; font:inherit; text-align:left; cursor:pointer; }
  .rh-repl-chev{ color:var(--gold); font-size:16px; transition:transform .2s; }
  .rh-repl-panel.collapsed .rh-repl-chev{ transform:rotate(-90deg); }
  .rh-repl-panel.collapsed{ flex:0 1 300px; position:static; }
  .rh-repl-toggle:hover h3{ text-decoration:underline; text-underline-offset:4px; }
  .rh-repl-hint{ padding:9px 10px; border:1px dashed var(--line); font-size:12.5px; color:var(--text-1); }
  .rh-x-btn{ width:26px; height:26px; flex:none; display:flex; align-items:center; justify-content:center; padding:0; background:none; border:1px solid #5a3a28; color:var(--text-1); cursor:pointer; }
  .rh-repl-search{ position:relative; }
  .rh-repl-search svg{ position:absolute; left:11px; top:11px; }
  .rh-repl-search input{ box-sizing:border-box; width:100%; height:37px; padding:0 12px 0 34px; background:var(--ink-1); border:1px solid var(--line); color:var(--text-0); font-size:13px; }
  .rh-repl-filters{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; }
  .rh-seg{ display:flex; }
  .rh-seg button, .rh-f-rank{ height:30px; padding:0 12px; display:flex; align-items:center; gap:5px; background:var(--ink-1); border:1px solid var(--line); color:var(--text-1); font:inherit; font-size:12.5px; cursor:pointer; }
  .rh-seg button + button{ margin-left:-1px; }
  .rh-seg button.on, .rh-f-rank.on{ background:var(--frost-0); border-color:var(--frost-0); color:var(--ink-0); font-weight:600; }
  .rh-repl-classes{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
  .rh-repl-classes .lbl{ font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-2); margin-right:4px; }
  .rh-f-cls{ width:32px; height:32px; padding:2px; background:var(--ink-1); border:1px solid var(--line); cursor:pointer; }
  .rh-f-cls.on{ border-color:var(--frost-0); box-shadow:0 0 0 1px var(--frost-0); }
  .rh-f-cls img{ width:26px; height:26px; display:block; border-radius:3px; }
  .rh-repl-res-head{ display:flex; justify-content:space-between; align-items:baseline; padding-bottom:8px; border-bottom:1px solid var(--line); margin-bottom:8px; }
  .rh-repl-res-head b{ font-size:12.5px; color:var(--text-0); } .rh-repl-res-head span{ font-size:11.5px; color:var(--text-2); }
  .rh-cand{ display:flex; align-items:center; gap:10px; padding:8px 10px; margin-bottom:6px; background:var(--ink-1); border:1px solid var(--line); }
  .rh-cand img{ width:30px; height:30px; border-radius:4px; flex:none; }
  .rh-cand .c-main{ flex:1; min-width:0; }
  .rh-cand .c-top{ display:flex; align-items:baseline; flex-wrap:wrap; gap:2px 8px; }
  .rh-cand .c-name{ font-weight:600; font-size:13.5px; }
  .rh-cand .c-player{ font-size:11.5px; color:var(--text-2); }
  .rh-cand .c-sub{ display:flex; align-items:center; flex-wrap:wrap; gap:4px 8px; margin-top:3px; font-size:12px; color:var(--text-1); }
  .rh-cand .c-sub .mono{ font-family:'IBM Plex Mono',monospace; }
  .rh-cand .c-sub .roles{ display:inline-flex; align-items:center; gap:4px; }
  .rh-cand .c-tags{ display:flex; gap:4px; flex:none; }
  .rh-tag{ font-size:10px; font-weight:600; letter-spacing:.06em; padding:1px 6px; white-space:nowrap; border:1px solid #5a3a28; color:var(--text-1); }
  .rh-rank{ font-size:10px; font-weight:600; letter-spacing:.06em; padding:1px 7px; background:var(--ink-1); border:1px solid; white-space:nowrap; text-transform:uppercase; }
  .rh-cand-btn{ height:30px; padding:0 12px; flex:none; background:var(--frost-0); border:1px solid var(--frost-0); color:var(--ink-0); font:inherit; font-size:12.5px; font-weight:600; cursor:pointer; }
  .rh-cand-btn:disabled{ background:var(--ink-2); border-color:var(--line); color:var(--text-2); cursor:not-allowed; font-weight:400; }
  .rh-repl-foot{ margin:10px 2px 0; font-size:11.5px; color:var(--text-1); }
  .rh-empty-res{ padding:14px 4px; font-size:12.5px; color:var(--text-2); }
  @media (max-width:640px){
    #admin-roster-wrap .rh-groups-wrap{ flex-basis:100%; max-width:100%; }
    .rh-repl-panel{ position:static; flex-basis:100%; }
    .rh-cols-head{ display:none; }
    #admin-roster-wrap .rh-row{ flex-wrap:wrap; }
    #admin-roster-wrap .rh-row .rh-main{ flex:1 1 100%; }
    #admin-roster-wrap .rh-row select.rh-spe-select{ flex:1 1 90px; }
    .rh-cand{ flex-wrap:wrap; }
  }

  .leg-title{ font-family:'Cinzel',serif; font-size:clamp(24px,4vw,34px); color:var(--gold); text-align:center; margin:26px 0 2px; letter-spacing:.02em; }
  .leg-panel > .deuil-section:first-child{ margin-top:14px; }
  .leg-tabs{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin:18px 0 4px; }
  .leg-tab{ padding:9px 20px; border-radius:999px; border:1px solid var(--line); background:var(--ink-1); color:var(--text-1); font:inherit; font-family:'Cinzel',serif; font-size:15px; cursor:pointer; }
  .leg-tab[aria-selected="true"]{ border-color:var(--gold); color:var(--text-0); background:var(--ink-2); box-shadow:0 0 14px color-mix(in srgb, var(--gold) 30%, transparent); }
  .leg-panel[hidden]{ display:none; }
  .deuil-header{ text-align:center; padding:20px 6vw 0; }
  .deuil-header img{ max-width:100%; height:auto; max-height:340px; }
  .deuil-section{ max-width:900px; margin:0 auto; padding:24px 6vw; }
  .deuil-section-title{
    font-family:'Cinzel', serif;
    font-size:22px;
    color:var(--frost-0);
    text-align:center;
    margin:0 0 18px;
  }
  .deuil-table-wrap{
    background:var(--ink-1);
    border:1px solid var(--line);
  }
  .deuil-table{ width:100%; }
  .deuil-table .no-link{ color:var(--text-2); font-style:italic; }
  .deuil-table a{ color:var(--frost-1); text-decoration:none; }
  .deuil-table a:hover{ text-decoration:underline; color:var(--frost-0); }
  .deuil-bar-wrap{
    display:flex;
    align-items:center;
    gap:10px;
  }
  .deuil-bar-track{
    flex:1;
    height:8px;
    background:var(--ink-2);
    border:1px solid var(--line);
    overflow:hidden;
  }
  .deuil-bar-fill{ height:100%; background:var(--frost-0); transition:width 2.2s cubic-bezier(.2,.8,.2,1); }
  .deuil-bar-fill.complete{ background:#4caf50; }
  .deuil-bar-label{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--gold); white-space:nowrap; }

  .mdc-rank6-chip{
    background:var(--ink-1);
    border:1px solid var(--line);
    padding:8px 10px;
    font-size:12px;
    text-align:center;
  }
  .mdc-rank6-chip a{ color:var(--frost-1); text-decoration:none; }
  .mdc-rank6-chip a:hover{ color:var(--frost-0); text-decoration:underline; }
  .mdc-rank6-chip.no-link{ color:var(--text-2); font-style:italic; }
  .mdc-ambiguous{ color:var(--text-2); font-style:italic; font-size:12px; }

  .pc-clickable{ cursor:pointer; }
  .pc-clickable:hover{ color:var(--frost-0); text-decoration:underline; }

  .pc-section{ margin-bottom:22px; }
  .pc-section-title{
    font-family:'Cinzel', serif;
    font-size:15px;
    color:var(--frost-0);
    margin:0 0 10px;
    padding-bottom:6px;
    border-bottom:1px solid var(--line);
  }
  .pc-stats-row{ display:flex; gap:24px; flex-wrap:wrap; margin-bottom:16px; }
  .pc-stat{ text-align:center; }
  .pc-stat .pc-stat-value{ font-family:'IBM Plex Mono', monospace; font-size:22px; color:var(--frost-1); display:block; }
  .pc-stat .pc-stat-label{ font-size:11px; color:var(--text-2); }
  .pc-char-name{ display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; }
  .pc-char-rank{ font-family:'IBM Plex Mono', ui-monospace, monospace; font-size:11.5px; letter-spacing:.01em; }
  .pc-char-row{
    display:flex;
    align-items:center;
    gap:9px;
    padding:8px 0;
    border-bottom:1px solid var(--line);
  }
  .pc-char-row:last-child{ border-bottom:none; }
  .pc-char-row a{ color:var(--text-0); font-weight:600; text-decoration:none; }
  .pc-char-row a:hover{ color:var(--frost-0); text-decoration:underline; }
  .pc-char-meta{ color:var(--text-2); font-size:12px; margin-left:auto; }
  .pc-mdc-tag{
    display:inline-block;
    background:rgba(255,122,60,.12);
    border:1px solid var(--frost-0);
    color:var(--frost-1);
    font-size:11px;
    padding:3px 9px;
    margin:0 6px 6px 0;
  }
  .pc-empty{ color:var(--text-2); font-size:13px; font-style:italic; }

  .pc-heatmap{
    display:flex;
    flex-wrap:wrap;
    gap:3px;
    padding:3px 0;   /* place pour la case agrandie au survol (avant : hauteur limitée + défilement, d'où des flèches qui apparaissaient) */
  }
  .pc-heat-row{ margin-bottom:12px; }
  .pc-heat-row-label{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    color:var(--frost-1);
    margin-bottom:6px;
  }
  .pc-heat-row-count{ color:var(--text-2); }
  .pc-heat-cell{
    width:12px;
    height:12px;
    border-radius:2px;
    background:var(--ink-2);
    flex:0 0 auto;
    transition:transform .15s ease, filter .15s ease, box-shadow .15s ease;
    position:relative;
  }
  .pc-heat-cell:hover{ filter:brightness(1.3); transform:scale(1.3); z-index:2; box-shadow:0 4px 14px rgba(0,0,0,.4); }
  /* Les carrés de présence ne sont pas redimensionnables ni cliquables :
     on force le curseur du site, pour qu'aucun curseur système (double
     flèche, etc.) ne s'affiche à leur survol. */
  .pc-heatmap, .pc-heat-row, .pc-heat-cell, .pc-heat-row-label, .pc-heat-stats, .pc-heat-stat{ cursor:inherit !important; }
  .pc-heat-cell.present{ background:var(--frost-0); }
  .pc-heat-cell.present.historical{ background:var(--gold-dim); border:1px dashed var(--gold); }
  .pc-heat-cell.absent{ background:#2a1410; box-shadow:inset 0 0 0 2px var(--danger); }
  .pc-heat-cell.out{ background:repeating-linear-gradient(135deg, #2a221c 0 3px, #1a1410 3px 6px); }
  .pc-heat-cell.none{ background:transparent; box-shadow:inset 0 0 0 1px #4a3326; }
  .pc-heat-sub{ font-size:12px; font-weight:600; color:var(--gold); margin:14px 0 8px; }
  .pc-heat-legend{ display:flex; flex-wrap:wrap; gap:6px 18px; margin-top:12px; font-size:12px; color:var(--text-1); }
  .pc-heat-legend span{ display:inline-flex; align-items:center; gap:6px; }
  .pc-heat-legend i{ display:inline-block; }
  .pc-heat-stats{ display:flex; gap:28px; margin-top:16px; flex-wrap:wrap; }
  .pc-heat-stat{ text-align:center; }
  .pc-heat-stat b{ display:block; font-family:'IBM Plex Mono', monospace; font-size:18px; color:var(--frost-1); }
  .pc-heat-stat span{ font-size:11px; color:var(--text-2); }

  .pc-badge{
    display:inline-flex;
    align-items:center;
    gap:6px;
    font-size:12px;
    padding:6px 12px;
    /* Marge un peu plus large que l'agrandissement au survol, pour qu'un
       badge grossi ne vienne jamais mordre sur ses voisins. */
    margin:0 14px 12px 0;
    border-radius:2px;
  }
  .pc-badge.unlocked{ background:rgba(255,122,60,.14); border:1px solid var(--frost-0); color:var(--frost-1); }
  .pc-badge.locked{ background:none; border:1px solid var(--line); color:var(--text-2); opacity:.5; }
  .pc-badge-icon{ font-size:14px; }

  .pc-badges-progress-wrap{ margin-bottom:18px; }
  .pc-badges-progress-label{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:var(--text-2);
    margin-bottom:6px;
  }
  .pc-badges-progress-label #pc-badges-progress-count{ color:var(--frost-1); font-weight:600; }
  .pc-badges-progress-track{
    width:100%;
    height:8px;
    background:var(--ink-2);
    border:1px solid var(--line);
    border-radius:4px;
    overflow:hidden;
  }
  .pc-badges-progress-fill{
    height:100%;
    width:0%;
    background:linear-gradient(90deg, var(--gold-dim), var(--gold));
    transition:width 1.1s cubic-bezier(.2,.8,.2,1);
  }
  .pc-badge-category{ margin-bottom:16px; }
  .pc-badge-category:last-child{ margin-bottom:0; }
  .pc-badge-category-title{
    font-family:'Cinzel', serif;
    font-size:12px;
    letter-spacing:.04em;
    text-transform:uppercase;
    color:var(--gold);
    margin-bottom:8px;
  }
  .pc-badge-category-list{ display:flex; flex-wrap:wrap; }

  .pc-badge-with-progress{
    display:flex;
    flex-direction:column;
    gap:4px;
    margin:0 14px 12px 0;
  }
  .pc-badge-with-progress .pc-badge{ margin:0; }
  .pc-badge-progress-track{
    width:100%;
    height:4px;
    background:var(--ink-2);
    border-radius:2px;
    overflow:hidden;
  }
  .pc-badge-progress-fill{
    height:100%;
    background:var(--frost-0);
  }
  .pc-badge-progress-text{
    font-family:'IBM Plex Mono', monospace;
    font-size:10px;
    color:var(--text-2);
    text-align:right;
  }

  .pc-toggle-row{
    display:flex;
    align-items:center;
    gap:8px;
    font-size:12px;
    color:var(--text-2);
    margin-bottom:12px;
    cursor:pointer;
  }
  .pc-toggle-row input{ accent-color:var(--frost-0); }

  .pc-inline-badges{ font-size:13px; margin-left:6px; letter-spacing:1px; }

  .pc-badge{ cursor:pointer; transition:transform .15s ease, filter .15s ease, box-shadow .15s ease; position:relative; }
  /* --badge-scale est calculé par le script pour que tous les badges
     grandissent de la même largeur (~12 px de chaque côté), qu'ils soient
     courts ou très longs. Le badge survolé passe au-dessus des autres. */
  .pc-badge:hover{
    filter:brightness(1.3);
    transform:scale(var(--badge-scale, 1.08));
    z-index:3;
    box-shadow:0 6px 18px rgba(0,0,0,.5);
  }

  .badge-dropdown{
    position:fixed;
    display:none;
    background:var(--ink-1);
    border:1px solid var(--frost-0);
    box-shadow:0 8px 28px rgba(0,0,0,.6);
    width:260px;
    max-height:320px;
    overflow-y:auto;
    padding:14px;
    z-index:200;
    font-size:13px;
  }
  .badge-dropdown.open{ display:block; }
  .badge-dropdown-title{ font-family:'Cinzel', serif; color:var(--frost-0); font-size:13px; margin-bottom:10px; padding-bottom:8px; border-bottom:1px solid var(--line); }
  .bd-class-row{ display:flex; justify-content:space-between; padding:4px 0; }
  .bd-class-row.missing{ opacity:.4; }
  .bd-summary{ margin-top:10px; padding-top:10px; border-top:1px solid var(--line); color:var(--text-1); font-size:12px; }

  .addons-header{
    text-align:center;
    max-width:720px;
    margin:0 auto 36px;
  }
  .addons-header-img{
    width:180px;
    height:180px;
    object-fit:cover;
    border-radius:12px;
    border:2px solid var(--gold);
    box-shadow:0 0 24px rgba(255,180,60,.25);
    margin-bottom:18px;
  }
  .addons-header-desc{
    color:var(--text-2);
    font-size:14px;
    line-height:1.6;
  }
  .addons-grid{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:40px;
    padding:20px 0 60px;
    max-width:calc(5 * 180px + 4 * 40px); /* force le retour à la ligne après 5 icônes */
    margin:0 auto;
  }
  .addon-card{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    text-decoration:none;
    width:180px;
  }
  .addon-icon{
    width:180px;
    height:180px;
    object-fit:cover;
    border-radius:10px;
    border:2px solid var(--line);
    transition:transform .25s ease, border-color .25s ease, box-shadow .25s ease;
    cursor:pointer;
  }
  .addon-card:hover .addon-icon{
    transform:scale(1.18);
    border-color:var(--gold);
    box-shadow:0 0 20px rgba(255,180,60,.35);
  }
  .addon-tooltip{
    position:absolute;
    bottom:calc(100% + 14px);
    left:50%;
    transform:translateX(-50%) translateY(6px);
    width:240px;
    background:var(--ink-1);
    border:1px solid var(--gold);
    border-radius:8px;
    padding:12px 14px;
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease, transform .2s ease;
    z-index:20;
    box-shadow:0 8px 24px rgba(0,0,0,.5);
  }
  .addon-card:hover .addon-tooltip{
    opacity:1;
    transform:translateX(-50%) translateY(0);
  }
  .addon-tooltip-name{
    font-family:'Cinzel', serif;
    color:var(--gold);
    font-size:13px;
    margin-bottom:6px;
    text-align:center;
  }
  .addon-tooltip-desc{
    color:var(--text-2);
    font-size:12px;
    line-height:1.5;
    text-align:center;
  }

  .pc-char-icons-row{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:10px;
    margin:0 auto 16px;
    max-width:100%;
  }
  .pc-char-icon-card{
    position:relative;
    width:70px;
    height:70px;
    flex:0 0 auto;
  }
  .pc-char-icon-img{
    width:70px;
    height:70px;
    object-fit:cover;
    border-radius:8px;
    border:1px solid var(--line);
    cursor:pointer;
    transition:transform .25s ease, border-color .25s ease, box-shadow .25s ease;
  }
  .pc-char-icon-card:hover .pc-char-icon-img{
    transform:scale(1.18);
    border-color:var(--gold);
    box-shadow:0 0 16px rgba(255,180,60,.35);
    z-index:2;
    position:relative;
  }
  .pc-char-icon-tooltip{
    position:absolute;
    bottom:calc(100% + 10px);
    left:50%;
    transform:translateX(-50%) translateY(6px);
    background:var(--ink-1);
    border:1px solid var(--gold);
    border-radius:6px;
    padding:6px 10px;
    font-size:12px;
    color:var(--gold);
    white-space:nowrap;
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease, transform .2s ease;
    z-index:3;
  }
  .pc-char-icon-card:hover .pc-char-icon-tooltip{
    opacity:1;
    transform:translateX(-50%) translateY(0);
  }

  .rl-podium{
    display:flex;
    align-items:flex-end;
    justify-content:center;
    gap:16px;
    max-width:640px;
    margin:0 auto 40px;
  }
  .rl-pedestal{
    flex:1;
    max-width:180px;
    text-align:center;
    cursor:pointer;
    transition:transform .15s;
  }
  .rl-pedestal:hover{ transform:translateY(-4px); }
  .rl-pedestal-name{ font-family:'Cinzel', serif; font-size:16px; color:var(--text-0); margin-bottom:4px; opacity:0; transition:opacity .4s ease; }
  .rl-pedestal-count{ font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--frost-1); margin-bottom:10px; opacity:0; transition:opacity .4s ease; }
  .rl-pedestal-block{
    background:var(--ink-1);
    border:1px solid var(--frost-0);
    border-bottom:none;
    display:flex;
    align-items:flex-start;
    justify-content:center;
    padding-top:10px;
    font-family:'Cinzel', serif;
    font-weight:700;
    color:var(--ink-0);
    transform:scaleY(0);
    transform-origin:bottom;
    transition:transform .6s cubic-bezier(.2,1.4,.4,1);
    position:relative;
    overflow:hidden;
  }
  .rl-pedestal-block::after{
    content:'';
    position:absolute;
    inset:0;
    background:linear-gradient(180deg, rgba(255,255,255,.25), transparent 60%);
    pointer-events:none;
  }
  .rl-pedestal.rank-1 .rl-pedestal-block{ height:130px; background:#e8c14d; font-size:28px; box-shadow:0 0 24px rgba(232,193,77,.5); }
  .rl-pedestal.rank-2 .rl-pedestal-block{ height:95px; background:#c7ccd6; font-size:24px; transition-delay:.08s; box-shadow:0 0 18px rgba(199,204,214,.35); }
  .rl-pedestal.rank-3 .rl-pedestal-block{ height:65px; background:#cd8a4d; font-size:24px; transition-delay:.16s; box-shadow:0 0 18px rgba(205,138,77,.35); }
  .rl-podium.rl-animate .rl-pedestal-block{ transform:scaleY(1); }
  .rl-podium.rl-animate .rl-pedestal-name,
  .rl-podium.rl-animate .rl-pedestal-count{ opacity:1; transition-delay:.5s; }

  .rl-table-wrap{ max-width:700px; margin:0 auto 40px; background:var(--ink-1); border:1px solid var(--line); }
  .rl-table td:first-child{ font-family:'IBM Plex Mono', monospace; color:var(--text-2); width:40px; }
  .rl-table .rl-name{ cursor:pointer; }
  .rl-table .rl-name:hover{ color:var(--frost-0); text-decoration:underline; }
  .rl-table tbody tr{
    background-image:linear-gradient(90deg, rgba(255,122,60,.22), rgba(255,122,60,.06));
    background-repeat:no-repeat;
    background-position:left center;
    background-size:0% 100%;
    transition:background-size .8s cubic-bezier(.2,1,.3,1);
  }

  .spark-rain{ position:fixed; inset:0; pointer-events:none; z-index:999; overflow:hidden; }
  .spark{
    position:absolute;
    top:-10px;
    width:5px;
    height:5px;
    border-radius:50%;
    background:radial-gradient(circle, #ffd37a, #ff5a1f);
    box-shadow:0 0 8px 2px rgba(255,150,50,.8);
    animation:spark-fall linear forwards;
  }
  @keyframes spark-fall{
    to{ transform:translate(var(--drift), 110vh) rotate(360deg); opacity:0; }
  }

  .mdc-class-group{
    max-width:900px;
    margin:0 auto 10px;
    border:1px solid var(--line);
    background:var(--ink-1);
  }
  .mdc-class-summary{
    padding:12px 16px;
    cursor:pointer;
    font-family:'Cinzel', serif;
    font-size:15px;
    font-weight:700;
    display:flex;
    align-items:center;
    justify-content:space-between;
    list-style:none;
  }
  .mdc-class-summary::-webkit-details-marker{ display:none; }
  .mdc-class-summary .mdc-count{ font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--text-2); font-weight:400; }
  .mdc-class-body{
    padding:12px 16px 16px;
    border-top:1px solid var(--line);
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));
    gap:8px;
  }
  .mdc-class-group[data-empty="true"]{ display:none; }

  .pres-wrap{ max-width:520px; margin:0 auto; padding:32px 6vw 20px; }
  .pres-day-bar{ display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:10px; margin-bottom:24px; }
  .pres-day-btn{
    background:var(--ink-1);
    border:1px solid var(--line);
    color:var(--text-1);
    font-family:'Cinzel', serif;
    font-size:15px;
    padding:16px 10px;
    cursor:pointer;
  }
  .pres-day-btn:hover{ border-color:var(--frost-0); }
  .pres-day-btn.active{ background:var(--frost-0); color:var(--ink-0); border-color:var(--frost-0); font-weight:700; }

  .pres-checklist-head{
    display:flex;
    align-items:center;
    gap:12px;
    margin-bottom:10px;
    flex-wrap:wrap;
  }
  #pres-count-label{ color:var(--frost-1); font-family:'IBM Plex Mono', monospace; font-size:13px; margin-right:auto; }
  .pres-mini-btn{
    background:none;
    border:1px solid var(--line);
    color:var(--text-2);
    font-size:11px;
    padding:6px 10px;
    cursor:pointer;
  }
  .pres-mini-btn:hover{ color:var(--text-0); border-color:var(--text-1); }

  .pres-checklist{
    display:flex;
    flex-direction:column;
    gap:8px;
    margin-bottom:20px;
    max-height:50vh;
    overflow-y:auto;
    border:1px solid var(--line);
    background:var(--ink-1);
    padding:8px;
  }
  .pres-check-row{
    display:flex;
    align-items:center;
    gap:14px;
    padding:14px 12px;
    background:var(--ink-2);
    cursor:pointer;
    user-select:none;
  }
  .pres-check-row input{
    width:22px;
    height:22px;
    accent-color:var(--frost-0);
    flex:0 0 auto;
  }
  .pres-check-row span{ font-size:15px; color:var(--text-0); font-weight:600; }
  .pres-check-row.checked{ background:rgba(255,122,60,.15); border:1px solid var(--frost-0); }

  .pres-section{ max-width:900px; margin:20px auto 0; padding:24px 6vw 60px; border-top:1px solid var(--line); }

  .engagement-chart-wrap{
    margin:0 6vw 32px;
    background:var(--ink-1);
    border:1px solid var(--line);
    padding:20px;
    height:420px;
  }
  .engagement-list{
    margin:0 6vw 40px;
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));
    gap:10px;
  }
  .engagement-row{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:10px;
    background:var(--ink-1);
    border:1px solid var(--line);
    padding:10px 14px;
    font-size:13px;
  }
  .engagement-row .e-name{ color:var(--text-0); font-weight:600; }
  .engagement-row .e-count{ color:var(--frost-0); font-family:'IBM Plex Mono', monospace; font-size:13px; }

  .bdg-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));
    gap:20px;
    padding:8px 6vw 40px;
  }
  .bdg-col{
    background:var(--ink-1);
    border:1px solid var(--line);
  }
  .bdg-col-head{
    padding:16px 18px;
    border-bottom:1px solid var(--line);
    font-family:'Cinzel', serif;
    font-size:17px;
    color:var(--text-0);
  }
  .bdg-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:10px;
    padding:10px 18px;
    border-bottom:1px solid var(--line);
    font-size:13px;
  }
  .bdg-row:last-child{ border-bottom:none; }
  .bdg-row .b-item{ color:var(--text-0); }
  .bdg-badge{
    flex:0 0 auto;
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    font-weight:600;
    padding:4px 10px;
    border-radius:2px;
    white-space:nowrap;
  }
  .bdg-badge.need-high{ background:rgba(224,72,58,.18); color:#ff8a75; border:1px solid rgba(224,72,58,.4); }
  .bdg-badge.need-soon{ background:rgba(255,159,64,.18); color:#ffb870; border:1px solid rgba(255,159,64,.4); }
  .bdg-badge.need-stock{ background:rgba(79,191,110,.15); color:#7fd996; border:1px solid rgba(79,191,110,.4); }
  .bdg-badge.need-other{ background:rgba(160,150,140,.15); color:var(--text-2); border:1px solid var(--line); }

  .search-wrap{
    position:relative;
    margin:0 6vw 28px;
    max-width:420px;
  }
  .search-input{
    width:100%;
    background:var(--ink-1);
    border:1px solid var(--line);
    color:var(--text-0);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:15px;
    padding:13px 16px;
    outline:none;
  }
  .search-input:focus{ border-color:var(--frost-0); }
  .search-input::placeholder{ color:var(--text-2); }
  .search-suggestions{
    position:absolute;
    top:calc(100% + 4px);
    left:0;
    right:0;
    background:var(--ink-1);
    border:1px solid var(--line);
    max-height:280px;
    overflow-y:auto;
    display:none;
    z-index:10;
  }
  .search-suggestions.open{ display:block; }
  .suggestion{
    padding:11px 16px;
    cursor:pointer;
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    font-size:14px;
  }
  .suggestion:hover, .suggestion.active{ background:var(--ink-2); }
  .suggestion .s-name{ color:var(--text-0); font-weight:600; }
  .suggestion .s-pts{ color:var(--text-2); font-family:'IBM Plex Mono', monospace; font-size:12px; }
  .suggestion-empty{ padding:11px 16px; color:var(--text-2); font-size:13px; }

  .card.highlight{
    border-color:var(--frost-0);
    box-shadow:0 0 0 1px var(--frost-0);
    transition:border-color .3s, box-shadow .3s;
  }

  #state-loading, #state-error{
    margin:0 6vw;
    padding:28px;
    border:1px solid var(--line);
    background:var(--ink-1);
  }
  #state-loading{
    display:flex;
    align-items:center;
    gap:18px;
  }
  #state-error{ border-color:#4a2f28; color:#f0b8a4; display:none; }
  #state-error h3{ margin:0 0 8px; font-family:'Cinzel',serif; color:var(--danger); }
  #state-error code{ display:block; margin-top:10px; background:var(--ink-0); padding:10px 12px; font-size:12px; color:var(--text-1); word-break:break-all; }

  .loader-phoenix{
    flex:0 0 auto;
    width:40px;
    height:40px;
    filter:drop-shadow(0 0 10px rgba(255,122,60,.6));
    animation:phoenix-pulse 1.8s ease-in-out infinite;
  }
  @keyframes phoenix-pulse{
    0%, 100%{ transform:scale(1); opacity:.85; }
    50%{ transform:scale(1.08); opacity:1; }
  }
  @media (prefers-reduced-motion: reduce){
    .loader-phoenix{ animation:none; }
  }

  .rail-wrap{ position:relative; isolation:isolate; }   /* les z-index des cartes (effet de profondeur) restent sous les fenêtres */
  .rail-nav{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    z-index:200;
    width:44px;
    height:44px;
    border-radius:50%;
    background:rgba(22,14,10,.55);
    border:1px solid rgba(255,122,60,.35);
    color:var(--frost-1);
    display:flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    opacity:.55;
    transition:opacity .2s, border-color .2s, background .2s;
    backdrop-filter:blur(2px);
  }
  .rail-nav:hover{
    opacity:1;
    border-color:var(--frost-0);
    background:rgba(22,14,10,.8);
  }
  .rail-nav svg{ width:20px; height:20px; }
  .rail-nav-prev{ left:10px; }
  .rail-nav-next{ right:10px; }
  .rail-nav.hidden{ display:none; }
  .rail{
    display:flex;
    gap:8px;
    overflow-x:auto;
    padding:20px calc(50vw - 150px) 28px;
    scroll-snap-type:x mandatory;
  }
  .rail::-webkit-scrollbar{ height:8px; }
  .rail::-webkit-scrollbar-thumb{ background:var(--line); }
  .rail::-webkit-scrollbar-track{ background:transparent; }

  .card{
    flex:0 0 300px;
    scroll-snap-align:center;
    background:var(--ink-1);
    border:1px solid var(--line);
    display:flex;
    flex-direction:column;
    transition:transform .2s ease, box-shadow .2s ease, opacity .5s ease, border-color .2s ease;
  }
  .card:hover{
    transform:translateY(-4px);
    box-shadow:0 10px 24px rgba(0,0,0,.35);
  }
  .card.podium-1{ border-color:#e8c14d; box-shadow:0 0 0 1px #e8c14d, 0 0 16px rgba(232,193,77,.25); }
  .card.podium-2{ border-color:#c7ccd6; box-shadow:0 0 0 1px #c7ccd6, 0 0 14px rgba(199,204,214,.2); }
  .card.podium-3{ border-color:#cd8a4d; box-shadow:0 0 0 1px #cd8a4d, 0 0 14px rgba(205,138,77,.2); }
  .card.podium-1:hover, .card.podium-2:hover, .card.podium-3:hover{ transform:translateY(-4px); }
  .card.card-enter{ opacity:0; transform:translateY(10px); }
  .card.card-enter-active{ opacity:1; transform:translateY(0); }
  .card-top{
    position:relative;
    padding:20px 20px 16px;
    border-bottom:1px solid var(--line);
  }
  .rank{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:var(--text-2);
  }
  .rank.top{ color:var(--gold); }
  .player-name{
    font-family:'Cinzel', serif;
    font-size:22px;
    font-weight:700;
    margin:4px 0 10px;
    color:var(--text-0);
    max-width:calc(100% - 126px); /* laisse la place à l'icône de classe/spé sans jamais passer dessous */
    white-space:nowrap;
    overflow:hidden;
  }
  .points-row{
    display:flex;
    align-items:baseline;
    gap:8px;
  }
  .points-value{
    font-family:'IBM Plex Mono', monospace;
    font-size:19px;
    font-weight:500;
    color:var(--frost-1);
  }
  .points-label{ font-size:11px; color:var(--text-2); }

  .char-list{ padding:14px 20px 20px; display:flex; flex-direction:column; gap:10px; flex:1; }
  .char-extra{ display:none; }
  .char-list.expanded .char-extra{ display:block; }
  .char-toggle{
    background:none;
    border:1px dashed var(--line);
    color:var(--frost-1);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:12px;
    padding:8px;
    cursor:pointer;
    text-align:center;
  }
  .char-toggle:hover{ border-color:var(--frost-0); color:var(--frost-0); }
  .char{
    border:1px solid var(--line);
    background:var(--ink-2);
  }
  .char-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 12px;
    cursor:pointer;
  }
  .char-row:hover{ background:#182231; }
  .char-name{ font-size:14px; font-weight:600; color:var(--text-0); white-space:nowrap; }
  .char-meta{ font-size:12px; color:var(--text-2); margin-top:2px; }
  .char-points{
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    color:var(--gold);
    white-space:nowrap;
  }
  .char-noid{ font-size:11px; color:var(--danger); margin-top:2px; }

  .class-badge{
    flex:0 0 auto;
    width:30px;
    height:30px;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    font-family:'IBM Plex Mono', monospace;
    font-size:10px;
    font-weight:700;
    color:#111;
    letter-spacing:-.02em;
  }

  .char-viewer{ display:none; border-top:1px solid var(--line); }
  .char-viewer.open{ display:block; }
  .char-viewer iframe{
    width:100%;
    height:280px;
    border:0;
    display:block;
    background:#000;
  }
  .char-viewer-footer{
    padding:8px 12px;
    display:flex;
    justify-content:flex-end;
  }
  .char-viewer-footer a{
    font-size:12px;
    color:var(--frost-0);
    text-decoration:none;
    border-bottom:1px solid transparent;
  }
  .char-viewer-footer a:hover{ border-bottom-color:var(--frost-0); }

  footer{
    position:relative;
    padding:24px 6vw 48px;
    color:var(--text-2);
    font-size:12px;
    border-top:1px solid var(--line);
  }

  /* ============================================================
     Portabilité smartphone — priorité aux pages consultées par les
     joueurs (accueil, Joueurs, Roster, Inscriptions, fiche joueur,
     Addons). Le panel admin reste pensé pour un usage bureau (tableaux
     larges, glisser-déposer) : il défile horizontalement plutôt que
     d'être totalement réorganisé, pour rester utilisable sans tout
     casser.
     ============================================================ */
  @media (max-width: 640px){
    .hero{ padding:40px 5vw 28px; }
    .hero-phoenix{ width:170px; height:170px; }
    .page-title{ font-size:26px; }
    .status-bar{ gap:14px; font-size:12px; }

    .tab-bar{
      justify-content:flex-start;
      overflow-x:auto;
      -webkit-overflow-scrolling:touch;
      flex-wrap:nowrap;
      padding:14px 4vw 0;
    }
    .tab-btn{ padding:10px 12px; font-size:13px; white-space:nowrap; flex:0 0 auto; }

    .subtab-bar{ padding:16px 4vw 0; overflow-x:auto; flex-wrap:nowrap; }
    .subtab-btn{ white-space:nowrap; flex:0 0 auto; }

    .search-wrap{ margin:0 4vw 20px; }
    .rail{ padding:8px calc(50vw - 41vw) 20px; gap:14px; }
    .card{ flex:0 0 82vw; }
    .rail-nav{ display:none; } /* le doigt glisse directement sur le rail en tactile */

    .rosters-grid, .bdg-grid{ padding:8px 4vw 32px; grid-template-columns:1fr; }
    .engagement-list{ margin:0 4vw 32px; grid-template-columns:1fr; }
    .engagement-chart-wrap{ margin:0 4vw 24px; padding:14px; height:280px; }

    .ins-wrap{ padding:24px 5vw 48px; }
    .perso-row{ grid-template-columns:1fr; }
    .day-block-inner{ padding:14px; }

    .deuil-header, .pres-wrap, .deuil-section{ padding-left:4vw; padding-right:4vw; }
    .pres-day-bar{ grid-template-columns:1fr 1fr; }

    .modal-box, .modal-box-wide{ max-width:94vw; padding:18px; max-height:90vh; }
    .modal-actions{ flex-direction:column; }

    .pc-stats-row{ gap:14px; }
    .pc-char-icons-row{ gap:8px; }
    .pc-char-icon-card, .pc-char-icon-img{ width:56px; height:56px; }

    .addons-grid{ gap:20px; max-width:100%; }
    .addon-card, .addon-icon{ width:120px; height:120px; }

    /* Panel admin : pas de réagencement, mais on évite au moins que les
       tableaux/groupes larges cassent la mise en page en débordant hors
       de l'écran — ils défilent horizontalement à la place. */
    .admin-table-wrap, #admin-compo-wrap, #admin-roster-wrap, .rh-groups-wrap,
    .admin-table{ max-width:100%; overflow-x:auto; display:block; }
  }

  /* ============================================================
     Skeleton loaders — remplace le texte "Chargement…" par des blocs gris
     avec un effet de brillance qui glisse, à la forme du contenu à venir.
     ============================================================ */
  @keyframes skeleton-shimmer{
    0%{ background-position:-200px 0; }
    100%{ background-position:200px 0; }
  }
  .skeleton{
    background:linear-gradient(90deg, var(--ink-2) 0%, #2a1a10 50%, var(--ink-2) 100%);
    background-size:400px 100%;
    animation:skeleton-shimmer 1.4s ease-in-out infinite;
    border-radius:4px;
    display:inline-block;
  }
  .skeleton-line{ height:12px; display:block; margin-bottom:8px; }
  .skeleton-table-row{ display:flex; gap:14px; padding:10px 0; border-bottom:1px solid var(--line); align-items:center; }
  .skeleton-kpi-card{ background:var(--ink-1); border:1px solid var(--line); border-radius:4px; padding:16px; }

  .gs-kpi-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:16px; }
  @media (max-width:760px){ .gs-kpi-grid{ grid-template-columns:repeat(2, 1fr); } }
  .gs-att-tooltip{
    position:absolute; bottom:100%; left:50%; transform:translateX(-50%);
    margin-bottom:6px; background:var(--ink-2); border:1px solid var(--line);
    color:var(--text-0); font-size:10px; font-family:'IBM Plex Mono', monospace;
    padding:3px 6px; border-radius:3px; white-space:nowrap;
    opacity:0; transition:opacity .15s ease; pointer-events:none;
  }

  /* ============================================================
     INTERRUPTEUR DE FACTION (en haut à gauche du hero)
     Façon interrupteur iPhone (cadre rectangulaire arrondi) : une pastille glisse sous la faction
     active. Horde = thème feu (défaut) · Alliance = Nuit arcane.
     ============================================================ */

  /* ============================================================
     Compte Discord — en haut à droite (répond au sélecteur de faction)
     ============================================================ */
  .account[hidden], .account [hidden]{ display:none !important; }
  .account{ position:absolute; top:12px; right:14px; z-index:60; display:flex; flex-direction:column; align-items:flex-end; gap:8px; text-align:left; }
  .account-btn{ display:flex; align-items:center; gap:10px; min-height:44px; padding:0 14px 0 6px; border:1px solid var(--gold-dim); border-radius:999px;
    background:color-mix(in srgb, var(--ink-1) 88%, transparent); backdrop-filter:blur(3px); color:var(--text-0); font:inherit; font-size:13px; font-weight:600;
    text-decoration:none; cursor:pointer; box-shadow:0 0 18px color-mix(in srgb, var(--gold) 18%, transparent); transition:border-color .2s, box-shadow .2s; }
  .account-btn:hover{ border-color:var(--gold); box-shadow:0 0 22px color-mix(in srgb, var(--gold) 30%, transparent); color:var(--text-0); }
  .account-btn:focus-visible, .account-item:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
  .account-ico{ position:relative; width:32px; height:32px; flex:none; border-radius:50%; background:var(--ink-2); border:1px solid var(--gold); color:var(--gold);
    display:flex; align-items:center; justify-content:center; font-family:'Cinzel', serif; font-size:14px; }
  .account-initial.has-av{ background-size:cover; background-position:center; }
  @media (max-width:760px){ .account-btn .account-ico.has-av{ width:30px; height:30px; border:1px solid var(--gold); background-size:cover; background-position:center; background-repeat:no-repeat; } }
  /* grille des photos de profil : cases fluides (jamais coupées), le menu défile au besoin */
  .account-avatars{ display:grid; grid-template-columns:repeat(6, minmax(0, 1fr)); gap:6px; padding:8px 2px 12px; }
  .account-avatars[hidden]{ display:none; }
  .account-avatars button{ width:100%; aspect-ratio:1; min-width:0; padding:0; border-radius:50%; border:2px solid transparent; background:var(--ink-2); overflow:hidden; cursor:pointer; display:grid; place-items:center; color:var(--gold); font-family:'Cinzel',serif; font-size:13px; }
  .account-avatars button img{ width:100%; height:100%; object-fit:cover; display:block; }
  .account-avatars button:hover{ border-color:var(--gold-dim); }
  .account-avatars button{ border-color:transparent; }
  .account-avatars button[style*="--tc"]{ border-color:color-mix(in srgb, var(--tc) 55%, transparent); }
  .account-avatars button.on{ border-color:var(--gold) !important; box-shadow:0 0 8px color-mix(in srgb, var(--gold) 60%, transparent); }
  .account-avatars .av-msg{ grid-column:1 / -1; margin:0; padding:6px 2px; font-size:12.5px; color:var(--text-2); line-height:1.5; }
  .account-menu{ max-height:calc(100vh - 90px); max-height:calc(100dvh - 90px); overflow-y:auto; overscroll-behavior:contain; }
  .account-initial::after{ content:''; position:absolute; right:-2px; bottom:-2px; width:10px; height:10px; border-radius:50%; background:#5fd068; border:2px solid var(--ink-1); }
  .account-caret{ color:var(--text-1); transition:transform .2s; }
  .account-btn[aria-expanded="true"] .account-caret{ transform:rotate(180deg); }
  .account-menu{ width:260px; box-sizing:border-box; padding:14px; background:var(--ink-1); border:1px solid var(--line); border-radius:8px;
    box-shadow:0 16px 40px rgba(0,0,0,.6); display:flex; flex-direction:column; gap:10px; }
  .account-who{ display:flex; gap:10px; align-items:center; }
  .account-who-t{ display:block; font-size:12px; color:var(--text-2); }
  .account-who-n{ display:block; font-size:13px; color:var(--text-0); word-break:break-word; }
  .account-sep{ height:1px; background:var(--line); }
  .account-bday{ padding:10px; border:1px solid var(--line); border-radius:6px; background:var(--ink-2); font-size:12.5px; color:var(--text-1); }
  .account-bday[hidden]{ display:none; }
  .account-bday b{ color:var(--text-0); }
  .account-bday .row{ display:flex; gap:6px; margin-top:8px; }
  .account-bday select{ flex:1; min-height:34px; border-radius:4px; border:1px solid var(--line); background:var(--ink-0); color:var(--text-0); font:inherit; font-size:13px; }
  .account-bday button{ margin-top:8px; width:100%; min-height:34px; border:0; border-radius:4px; background:var(--frost-0); color:var(--ink-0); font:inherit; font-size:12.5px; font-weight:700; cursor:pointer; }
  .account-bday .msg{ margin-top:6px; color:var(--gold); min-height:1em; }
  .account-item{ display:flex; align-items:center; gap:8px; min-height:40px; padding:0 10px; border-radius:4px; border:1px solid transparent; background:var(--ink-2);
    color:var(--text-0); font:inherit; font-size:13px; text-decoration:none; cursor:pointer; text-align:left; width:100%; box-sizing:border-box; }
  .account-item:hover{ border-color:var(--line); color:var(--text-0); }
  .account-logout{ background:transparent; border-color:color-mix(in srgb, var(--danger) 40%, transparent); color:var(--danger); }
  .account-logout:hover{ border-color:var(--danger); color:var(--danger); background:color-mix(in srgb, var(--danger) 10%, transparent); }
  @media (max-width:640px){
    .account{ top:8px; right:8px; }
    .account-btn{ width:46px; height:46px; min-height:0; padding:0; justify-content:center; border-radius:50%; }
    .account-btn .account-label, .account-btn .account-caret{ display:none; }
    .account-btn .account-ico{ border:0; background:none; width:auto; height:auto; font-size:16px; }
    .account-btn .account-initial::after{ right:-10px; bottom:-8px; }
  }
  .faction-toggle{
    --slot:44px;
    position:absolute;
    top:12px;
    left:14px;
    z-index:2;
    display:flex;
    padding:4px;
    border-radius:12px;
    border:1px solid var(--line);
    background:rgba(22,14,10,.55);
    backdrop-filter:blur(3px);
    cursor:pointer;
    font:inherit;
    -webkit-tap-highlight-color:transparent;
    transition:background-color .35s ease, border-color .35s ease;
  }
  .faction-toggle:focus-visible{ outline:2px solid var(--frost-0); outline-offset:3px; }
  .faction-thumb{
    position:absolute;
    top:4px;
    left:4px;
    width:var(--slot);
    height:calc(100% - 8px);
    border-radius:9px;
    background:linear-gradient(180deg, rgba(230,70,45,.38), rgba(140,25,15,.42));
    border:1px solid rgba(235,80,55,.6);
    box-shadow:0 0 14px rgba(230,50,30,.35), inset 0 1px 0 rgba(255,255,255,.14);
    transform:translateX(0);
    transition:
      transform .5s cubic-bezier(.34,1.45,.55,1),
      width .18s ease,
      background .35s ease,
      border-color .35s ease,
      box-shadow .35s ease;
  }
  /* Appui : la pastille s'étire un peu, comme sur iOS */
  .faction-toggle:active .faction-thumb{ width:calc(var(--slot) + 8px); }
  .faction-slot{
    position:relative;
    width:var(--slot);
    height:36px;
    display:grid;
    place-items:center;
  }
  .faction-slot img{
    display:block;
    height:28px;
    width:auto;
    pointer-events:none;
    transition:transform .4s cubic-bezier(.34,1.45,.55,1), opacity .3s ease, filter .3s ease;
  }
  .faction-slot-horde img{ filter:drop-shadow(0 0 6px rgba(230,50,30,.55)); }
  .faction-slot-alliance img{ opacity:.5; filter:grayscale(.8); transform:scale(.82); }
  .faction-toggle:hover .faction-slot-alliance img{ opacity:.7; filter:grayscale(.3); }

  [data-theme="alliance"] .faction-toggle{ background:rgba(20,18,42,.6); }
  /* ===== Thème Astre Mort (v341) : débloqué en libérant Le Sanctuaire ===== */
  :root[data-theme="astre"]{
    --ink-0:#06090a;
    --ink-1:#0c1412;
    --ink-2:#13201c;
    --line:#243a31;
    --frost-0:#7fe05a;
    --frost-1:#b9f5a0;
    --gold:#d8cfb4;
    --gold-dim:#8a8470;
    --text-0:#e7efe9;
    --text-1:#b3c4bb;
    --text-2:#7f968a;
    --danger:#d8364a;
    --ok:#8cff6a;
    --ok-2:#8cff6a;
    --warn:#d8b060;
  }
  [data-theme="astre"] body{
    background:
      radial-gradient(circle at 50% 0%, rgba(40,110,60,.28) 0%, transparent 55%),
      var(--ink-0);
  }
  [data-theme="astre"] .ambient-bg{ filter:hue-rotate(100deg) saturate(.45) brightness(.5); }
  [data-theme="astre"] .faction-toggle{ background:rgba(8,14,11,.7); }
  [data-theme="astre"] .hero::before{ background:radial-gradient(ellipse 60% 80% at 50% 30%, rgba(120,230,90,.16) 0%, transparent 70%); }
  /* reprises des réglages de l'Alliance, en vert */
  /* ============================================================
     THÈME ALLIANCE « Nuit arcane » — palette tirée du logo Reborn Light :
     indigo profond (lettrage), nacre (disque), pervenche et lavande
     (plumes), bleu glacier (éclairs), or pâle (halo). Fond : salle de
     l'Alliance sous un voile indigo épais.
     ============================================================ */
  :root[data-theme="astre"]{
    --ink-0:#06090a;
    --ink-1:#0c1412;
    --ink-2:#13201c;
    --line:#243a31;
    --frost-0:#7fe05a;
    --frost-1:#b9f5a0;
    --gold:#d8cfb4;
    --gold-dim:#7d6e48;
    --text-0:#e7efe9;
    --text-1:#b3c4bb;
    --text-2:#7f968a;
    --danger:#f07a70;
    --ok:#7fd6a0;
    --ok-2:#7fd6a0;
    --warn:#e8b060;
  }
  /* Portail (mot de passe) */
  [data-theme="astre"] .site-gate{
    background:radial-gradient(circle at 50% 38%, #0f1a16 0%, #06090a 60%, #040607 100%);
  }
  [data-theme="astre"] .site-gate-logo{ filter:drop-shadow(0 0 26px rgba(127,224,90,.35)); }
  /* Fond d'ambiance, hero */
  [data-theme="astre"] body{
    background:
      radial-gradient(circle at 50% 0%, rgba(40,110,60,.35) 0%, transparent 55%),
      var(--ink-0);
  }
  /* Surfaces */
  [data-theme="astre"] .modal-overlay{ background:rgba(6,10,9,.8); }
  [data-theme="astre"] .char-row:hover{ background:#1a2a24; }
  [data-theme="astre"] .skeleton{
    background:linear-gradient(90deg, var(--ink-2) 0%, #1d3029 50%, var(--ink-2) 100%);
    background-size:400px 100%;
  }
  [data-theme="astre"] .rail-nav{
    background:rgba(6,10,9,.6);
    border-color:rgba(127,224,90,.35);
  }
  [data-theme="astre"] .rail-nav:hover{ background:rgba(6,10,9,.85); border-color:var(--frost-0); }
  [data-theme="astre"] #state-error{ border-color:#3a1f22; color:#f0b8c0; }
  /* Accents (anciens oranges translucides) */
  [data-theme="astre"] .hero-sub{ color:var(--frost-1); }
  [data-theme="astre"] .roster-row.top{ background:linear-gradient(90deg, rgba(220,196,142,.10), transparent); }
  [data-theme="astre"] .r-pts-block.ulduar,
  [data-theme="astre"] .r-pts-block.ulduar .r-pts-val{ color:#8fe0b0; }
  [data-theme="astre"] .pc-mdc-tag,
  [data-theme="astre"] .pc-badge.unlocked{ background:rgba(127,224,90,.12); }
  [data-theme="astre"] .pc-badge:hover{ box-shadow:0 6px 18px rgba(6,10,9,.55); }
  [data-theme="astre"] .pres-check-row.checked{ background:rgba(127,224,90,.14); }
  [data-theme="astre"] .rl-table tbody tr{
    background-image:linear-gradient(90deg, rgba(127,224,90,.22), rgba(127,224,90,.05));
  }
  [data-theme="astre"] .addons-header-img{ box-shadow:0 0 24px rgba(127,224,90,.25); }
  [data-theme="astre"] .addon-card:hover .addon-icon{ box-shadow:0 0 20px rgba(127,224,90,.35); }
  [data-theme="astre"] .pc-char-icon-card:hover .pc-char-icon-img{ box-shadow:0 0 16px rgba(127,224,90,.35); }
  [data-theme="astre"] .loader-phoenix{ filter:drop-shadow(0 0 10px rgba(127,224,90,.6)); }
  [data-theme="astre"] #flameGrad2 stop:nth-of-type(1){ stop-color:#2f7a44; }
  [data-theme="astre"] #flameGrad2 stop:nth-of-type(2){ stop-color:#7fe05a; }
  [data-theme="astre"] #flameGrad2 stop:nth-of-type(3){ stop-color:#dcfbd0; }
  /* États */
  [data-theme="astre"] .ins-success{
    background:rgba(127,214,160,.10);
    border-color:rgba(127,214,160,.40);
    color:var(--ok);
  }
  /* Easter egg : éclats de givre au lieu d'étincelles */
  [data-theme="astre"] .spark{
    background:radial-gradient(circle, #ffffff, #8cff6a);
    box-shadow:0 0 8px 2px rgba(140,255,106,.8);
  }
  [data-theme="astre"] .hero-phoenix .hero-logo-horde{
    transform:scale(1);
    filter:hue-rotate(95deg) saturate(.8) brightness(.95) drop-shadow(0 0 40px rgba(140,255,106,.45)) blur(0);
  }
  [data-theme="astre"] .tv-wgrid td.ok{ background:#2f7a44; }
  [data-theme="astre"] .tv-wgrid td.ko{ background:#7a2a36; }
  [data-theme="astre"] .tv-overlay{ background:rgba(6,10,9,.88); }
  [data-theme="astre"] .tgc-stage{ background:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--frost-0) 22%, rgba(6,10,9,.94)), rgba(6,10,9,.97) 70%); }

  /* ===== Thème Courroux (v437) : débloqué en battant le boss final de Wrath of Reborn ===== */
  :root[data-theme="wrath"]{
    --ink-0:#090303;
    --ink-1:#140707;
    --ink-2:#1e0a0a;
    --line:#4a1616;
    --frost-0:#ff3b3b;
    --frost-1:#ff9a8a;
    --gold:#ecc9c2;
    --gold-dim:#8f5a52;
    --text-0:#f6e6e3;
    --text-1:#cfa9a3;
    --text-2:#9a716b;
    --danger:#d8364a;
    --ok:#ff4a4a;
    --ok-2:#ff4a4a;
    --warn:#d8b060;
  }
  [data-theme="wrath"] body{
    background:
      radial-gradient(circle at 50% 0%, rgba(150,10,10,.28) 0%, transparent 55%),
      var(--ink-0);
  }
  [data-theme="wrath"] .ambient-bg{ filter:hue-rotate(-15deg) saturate(1.5) brightness(.42) contrast(1.15); }
  [data-theme="wrath"] .faction-toggle{ background:rgba(8,14,11,.7); }
  [data-theme="wrath"] .hero::before{ background:radial-gradient(ellipse 60% 80% at 50% 30%, rgba(255,40,40,.16) 0%, transparent 70%); }
  /* reprises des réglages de l'Alliance, en vert */
  /* ============================================================
     THÈME ALLIANCE « Nuit arcane » — palette tirée du logo Reborn Light :
     indigo profond (lettrage), nacre (disque), pervenche et lavande
     (plumes), bleu glacier (éclairs), or pâle (halo). Fond : salle de
     l'Alliance sous un voile indigo épais.
     ============================================================ */
  :root[data-theme="wrath"]{
    --ink-0:#090303;
    --ink-1:#140707;
    --ink-2:#1e0a0a;
    --line:#4a1616;
    --frost-0:#ff3b3b;
    --frost-1:#ff9a8a;
    --gold:#ecc9c2;
    --gold-dim:#8f5a52;
    --text-0:#f6e6e3;
    --text-1:#cfa9a3;
    --text-2:#9a716b;
    --danger:#f07a70;
    --ok:#7fd6a0;
    --ok-2:#7fd6a0;
    --warn:#e8b060;
  }
  /* Portail (mot de passe) */
  [data-theme="wrath"] .site-gate{
    background:radial-gradient(circle at 50% 38%, #1a0707 0%, #090303 60%, #050101 100%);
  }
  [data-theme="wrath"] .site-gate-logo{ filter:drop-shadow(0 0 26px rgba(255,59,59,.35)); }
  /* Fond d'ambiance, hero */
  [data-theme="wrath"] body{
    background:
      radial-gradient(circle at 50% 0%, rgba(150,10,10,.35) 0%, transparent 55%),
      var(--ink-0);
  }
  /* Surfaces */
  [data-theme="wrath"] .modal-overlay{ background:rgba(9,3,3,.8); }
  [data-theme="wrath"] .char-row:hover{ background:#2a0e0e; }
  [data-theme="wrath"] .skeleton{
    background:linear-gradient(90deg, var(--ink-2) 0%, #341010 50%, var(--ink-2) 100%);
    background-size:400px 100%;
  }
  [data-theme="wrath"] .rail-nav{
    background:rgba(9,3,3,.6);
    border-color:rgba(255,59,59,.35);
  }
  [data-theme="wrath"] .rail-nav:hover{ background:rgba(9,3,3,.85); border-color:var(--frost-0); }
  [data-theme="wrath"] #state-error{ border-color:#5a1a1a; color:#f0b8c0; }
  /* Accents (anciens oranges translucides) */
  [data-theme="wrath"] .hero-sub{ color:var(--frost-1); }
  [data-theme="wrath"] .roster-row.top{ background:linear-gradient(90deg, rgba(255,120,100,.10), transparent); }
  [data-theme="wrath"] .r-pts-block.ulduar,
  [data-theme="wrath"] .r-pts-block.ulduar .r-pts-val{ color:#ff9a8a; }
  [data-theme="wrath"] .pc-mdc-tag,
  [data-theme="wrath"] .pc-badge.unlocked{ background:rgba(255,59,59,.12); }
  [data-theme="wrath"] .pc-badge:hover{ box-shadow:0 6px 18px rgba(9,3,3,.55); }
  [data-theme="wrath"] .pres-check-row.checked{ background:rgba(255,59,59,.14); }
  [data-theme="wrath"] .rl-table tbody tr{
    background-image:linear-gradient(90deg, rgba(255,59,59,.22), rgba(255,59,59,.05));
  }
  [data-theme="wrath"] .addons-header-img{ box-shadow:0 0 24px rgba(255,59,59,.25); }
  [data-theme="wrath"] .addon-card:hover .addon-icon{ box-shadow:0 0 20px rgba(255,59,59,.35); }
  [data-theme="wrath"] .pc-char-icon-card:hover .pc-char-icon-img{ box-shadow:0 0 16px rgba(255,59,59,.35); }
  [data-theme="wrath"] .loader-phoenix{ filter:drop-shadow(0 0 10px rgba(255,59,59,.6)); }
  [data-theme="wrath"] #flameGrad2 stop:nth-of-type(1){ stop-color:#8a1f1f; }
  [data-theme="wrath"] #flameGrad2 stop:nth-of-type(2){ stop-color:#ff3b3b; }
  [data-theme="wrath"] #flameGrad2 stop:nth-of-type(3){ stop-color:#ffd6cc; }
  /* États */
  [data-theme="wrath"] .ins-success{
    background:rgba(127,214,160,.10);
    border-color:rgba(127,214,160,.40);
    color:var(--ok);
  }
  /* Easter egg : éclats de sang au lieu d’étincelles */
  [data-theme="wrath"] .spark{
    background:radial-gradient(circle, #ffffff, #ff4a4a);
    box-shadow:0 0 8px 2px rgba(255,70,70,.8);
  }
  [data-theme="wrath"] .hero-phoenix .hero-logo-horde{
    transform:scale(1);
    filter:hue-rotate(-20deg) saturate(1.6) brightness(.95) drop-shadow(0 0 40px rgba(255,70,70,.45)) blur(0);
  }
  [data-theme="wrath"] .tv-wgrid td.ok{ background:#8a1f1f; }
  [data-theme="wrath"] .tv-wgrid td.ko{ background:#3a2a2a; }
  [data-theme="wrath"] .tv-overlay{ background:rgba(9,3,3,.88); }
  [data-theme="wrath"] .tgc-stage{ background:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--frost-0) 22%, rgba(9,3,3,.94)), rgba(9,3,3,.97) 70%); }

  /* Courroux : l'interface « bugue » — lignes de balayage, titres qui se dédoublent, logo qui tressaute */
  html[data-theme="wrath"]::after{ content:''; position:fixed; inset:0; z-index:9998; pointer-events:none;
    background:repeating-linear-gradient(0deg, rgba(255,30,30,.045) 0 1px, transparent 1px 3px); animation:wrathScan 9s steps(1) infinite; }
  @keyframes wrathScan{ 0%, 92%, 100%{ opacity:1; transform:none; } 93%{ opacity:.5; transform:translateY(3px); } 94%{ opacity:1; transform:translateX(-4px); } 95%{ transform:none; } }
  [data-theme="wrath"] :is(h1, h2, .tv-title, .page-title){ text-shadow:2px 0 rgba(255,0,60,.5), -2px 0 rgba(0,255,230,.22); animation:wrathGlitch 7s steps(1) infinite; }
  [data-theme="wrath"] :is(h2, .tv-title):nth-of-type(2n){ animation-delay:-3.1s; }
  @keyframes wrathGlitch{
    0%, 88%, 100%{ transform:none; clip-path:none; text-shadow:2px 0 rgba(255,0,60,.5), -2px 0 rgba(0,255,230,.22); }
    89%{ transform:translateX(3px) skewX(-8deg); text-shadow:-5px 0 rgba(255,0,60,.85), 5px 0 rgba(0,255,230,.55); }
    90%{ transform:translateX(-3px); clip-path:inset(15% 0 45% 0); }
    91%{ transform:translateX(2px); clip-path:inset(55% 0 5% 0); }
    92%{ transform:none; clip-path:none; }
  }
  [data-theme="wrath"] .hero-phoenix .hero-logo-horde{ animation:wrathLogo 6s steps(1) infinite; }
  @keyframes wrathLogo{ 0%, 93%, 100%{ translate:0 0; } 94%{ translate:5px -2px; } 95%{ translate:-6px 2px; } 96%{ translate:2px 0; } }
  [data-theme="wrath"] ::selection{ background:#ff3b3b; color:#090303; }
  [data-theme="wrath"] .tv-game-tab.tgc-tab.wor-tab{ animation:wrathGlitch 5s steps(1) infinite; }
  @media (prefers-reduced-motion: reduce){
    html[data-theme="wrath"]::after, [data-theme="wrath"] :is(h1, h2, .tv-title, .page-title), [data-theme="wrath"] .hero-phoenix .hero-logo-horde, [data-theme="wrath"] .tv-game-tab.tgc-tab.wor-tab{ animation:none; }
  }

  /* 3e case du sélecteur : l'œil de l'Astre Mort (visible une fois débloqué) */
  .faction-slot-astre{ display:none; }
  html.astre-on .faction-slot-astre{ display:grid; }
  .faction-slot-astre svg{ width:28px; height:28px; opacity:.5; filter:grayscale(.8); transform:scale(.82); transition:transform .4s cubic-bezier(.34,1.45,.55,1), opacity .3s ease, filter .3s ease; }
  html.astre-on .faction-toggle:hover .faction-slot-astre svg{ opacity:.75; filter:grayscale(.2); }
  [data-theme-target="astre"] .faction-thumb{
    transform:translateX(calc(var(--slot) * 2));
    background:linear-gradient(180deg, rgba(140,255,106,.30), rgba(30,90,40,.45));
    border-color:rgba(140,255,106,.65);
    box-shadow:0 0 14px rgba(140,255,106,.4), inset 0 1px 0 rgba(255,255,255,.14);
  }
  [data-theme-target="astre"] .faction-slot-astre svg{ opacity:1; filter:drop-shadow(0 0 6px rgba(140,255,106,.7)); transform:scale(1); }
  [data-theme-target="astre"] .faction-slot-horde img{ opacity:.55; filter:grayscale(.7); transform:scale(.82); }
  /* ===== Courroux v439 : la mise en page se déstructure ===== */
  /* bruit et bandes de couleur sur le fond */
  html[data-theme="wrath"]::before{ content:''; position:fixed; inset:-20%; z-index:9997; pointer-events:none; opacity:.09; mix-blend-mode:screen;
    background:
      repeating-linear-gradient(90deg, rgba(255,0,40,.9) 0 2px, transparent 2px 97px),
      repeating-linear-gradient(0deg, rgba(0,255,220,.5) 0 1px, transparent 1px 53px);
    animation:wrathDrift 1.6s steps(4) infinite; }
  @keyframes wrathDrift{ 0%{ transform:translate(0,0); } 25%{ transform:translate(-31px,7px); } 50%{ transform:translate(17px,-13px); } 75%{ transform:translate(-9px,21px); } 100%{ transform:translate(0,0); } }
  /* blocs décalés, penchés, comme mal recollés */
  [data-theme="wrath"] :is(.roster-row, .char-row, .addon-card, .pc-badge, .tv-card, .rl-table tbody tr, .tab-panel section, .sanct-board, .tv-game-tab):nth-child(3n){ transform:translateX(5px) rotate(-.45deg); }
  [data-theme="wrath"] :is(.roster-row, .char-row, .addon-card, .pc-badge, .tv-card, .rl-table tbody tr, .tab-panel section, .sanct-board, .tv-game-tab):nth-child(4n+1){ transform:translateX(-7px) skewX(-1.5deg); }
  [data-theme="wrath"] :is(.roster-row, .char-row, .addon-card, .pc-badge, .tv-card, .tab-panel section, .sanct-board):nth-child(5n+2){ transform:translateY(3px) rotate(.6deg); box-shadow:-4px 0 0 rgba(0,255,220,.18), 4px 0 0 rgba(255,0,60,.25); }
  [data-theme="wrath"] :is(.page-title, .tv-title, .hero-sub, h2, h3){ letter-spacing:.06em; }
  [data-theme="wrath"] :is(.page-title, .tv-title, h2):nth-of-type(odd){ transform:translateX(-6px) skewX(-4deg); }
  /* tout le texte bave légèrement en rouge / cyan */
  [data-theme="wrath"] body{ text-shadow:1px 0 rgba(255,0,60,.28), -1px 0 rgba(0,255,220,.14); }
  /* les éléments touchés par le moteur de glitch */
  [data-theme="wrath"] .wr-g1{ transform:translateX(14px) skewX(-12deg) !important; filter:hue-rotate(160deg) saturate(3); }
  [data-theme="wrath"] .wr-g2{ transform:translateX(-18px) !important; clip-path:inset(30% 0 35% 0); text-shadow:-6px 0 #ff003c, 6px 0 #00ffdc !important; }
  [data-theme="wrath"] .wr-g3{ transform:scale(1.04, .92) translateY(-4px) !important; filter:invert(1) hue-rotate(180deg); }
  [data-theme="wrath"] .wr-g4{ opacity:.25; transform:translate(9px, 3px) !important; outline:1px solid #ff003c; }
  .wr-tear{ position:fixed; inset:0; z-index:9999; pointer-events:none; }
  .wr-tear i{ position:absolute; left:0; right:0; display:block; }
  .wr-tear i.a{ backdrop-filter:hue-rotate(170deg) saturate(4) contrast(1.4); -webkit-backdrop-filter:hue-rotate(170deg) saturate(4) contrast(1.4); }
  .wr-tear i.b{ backdrop-filter:invert(1); -webkit-backdrop-filter:invert(1); }
  .wr-tear i.c{ background:rgba(255,0,40,.35); mix-blend-mode:difference; }
  .wr-tear i.d{ backdrop-filter:blur(2px) brightness(1.8); -webkit-backdrop-filter:blur(2px) brightness(1.8); }
  @media (prefers-reduced-motion: reduce){
    html[data-theme="wrath"]::before{ animation:none; }
    [data-theme="wrath"] :is(.wr-g1, .wr-g2, .wr-g3, .wr-g4){ transform:none !important; filter:none; clip-path:none; opacity:1; }
    .wr-tear{ display:none; }
  }

  /* 4e case du sélecteur : l'épée de Wrath of Reborn (visible une fois débloquée) */
  .faction-slot-wrath{ display:none; }
  html.wrath-on .faction-slot-wrath{ display:grid; }
  .faction-slot-wrath svg{ width:26px; height:26px; opacity:.5; filter:grayscale(.8); transform:scale(.82); transition:transform .4s cubic-bezier(.34,1.45,.55,1), opacity .3s ease, filter .3s ease; }
  html.wrath-on .faction-toggle:hover .faction-slot-wrath svg{ opacity:.75; filter:grayscale(.2); }
  [data-theme-target="wrath"] .faction-thumb{
    transform:translateX(calc(var(--slot) * 2));
    background:linear-gradient(180deg, rgba(255,40,40,.36), rgba(90,0,0,.5));
    border-color:rgba(255,70,70,.7);
    box-shadow:0 0 14px rgba(255,40,40,.45), inset 0 1px 0 rgba(255,255,255,.14);
  }
  html.astre-on[data-theme-target="wrath"] .faction-thumb{ transform:translateX(calc(var(--slot) * 3)); }
  [data-theme-target="wrath"] .faction-slot-wrath svg{ opacity:1; filter:drop-shadow(0 0 6px rgba(255,50,50,.8)); transform:scale(1); }
  [data-theme-target="wrath"] .faction-slot-horde img{ opacity:.55; filter:grayscale(.7); transform:scale(.82); }
  .wrath-news{ position:absolute; top:62px; left:14px; z-index:3; max-width:280px; padding:10px 14px; border-radius:12px; background:#1e0a0a; border:1px solid #ff3b3b; color:#f6e6e3; font-size:13.5px; line-height:1.45; box-shadow:0 0 22px rgba(255,40,40,.3); }
  .wrath-news b{ color:#ff4a4a; }
  .wrath-news button{ margin-top:6px; background:none; border:none; color:#cfa9a3; cursor:pointer; font:inherit; font-size:12px; padding:0; text-decoration:underline; }
  .astre-news{ position:absolute; top:62px; left:14px; z-index:3; max-width:280px; padding:10px 14px; border-radius:12px; background:#13201c; border:1px solid #8cff6a; color:#e7efe9; font-size:13.5px; line-height:1.45; box-shadow:0 0 22px rgba(140,255,106,.25); }
  .astre-news b{ color:#8cff6a; }
  .astre-news button{ margin-top:6px; background:none; border:none; color:#b3c4bb; cursor:pointer; font:inherit; font-size:12px; padding:0; text-decoration:underline; }

  [data-theme-target="alliance"] .faction-thumb{
    transform:translateX(var(--slot));
    background:linear-gradient(180deg, rgba(70,150,235,.36), rgba(35,70,160,.42));
    border-color:rgba(90,165,240,.6);
    box-shadow:0 0 14px rgba(60,150,240,.35), inset 0 1px 0 rgba(255,255,255,.16);
  }
  /* Pendant l'appui côté Alliance, la pastille s'étire vers la gauche */
  [data-theme-target="alliance"] .faction-toggle:active .faction-thumb{ transform:translateX(calc(var(--slot) - 8px)); }
  [data-theme-target="alliance"] .faction-slot-horde img{ opacity:.55; filter:grayscale(.7) brightness(1.4); transform:scale(.82); }
  [data-theme-target="alliance"] .faction-toggle:hover .faction-slot-horde img{ opacity:.7; filter:grayscale(.3); }
  [data-theme-target="alliance"] .faction-slot-alliance img{ opacity:1; filter:drop-shadow(0 0 6px rgba(60,160,240,.55)); transform:scale(1); }

  /* La transition globale de changement de thème ne doit pas écraser
     le glissement de la pastille ni le zoom des icônes. */
  html.theme-switching .faction-toggle .faction-thumb{
    transition:
      transform .5s cubic-bezier(.34,1.45,.55,1),
      width .18s ease,
      background .35s ease,
      border-color .35s ease,
      box-shadow .35s ease !important;
  }
  html.theme-switching .faction-toggle .faction-slot img{
    transition:transform .4s cubic-bezier(.34,1.45,.55,1), opacity .3s ease, filter .3s ease !important;
  }
  @media (prefers-reduced-motion: reduce){
    .faction-thumb,
    .faction-slot img,
    html.theme-switching .faction-toggle .faction-thumb,
    html.theme-switching .faction-toggle .faction-slot img{ transition:none !important; }
  }

  /* Visuels doublés : chaque thème n'affiche (et ne charge) que le sien */
  .th-alliance{ display:none !important; }
  [data-theme="alliance"] .th-horde{ display:none !important; }
  [data-theme="alliance"] .th-alliance{ display:block !important; }
  [data-theme="alliance"] img.th-alliance.inline{ display:inline-block !important; }

  /* Transition douce au changement de thème */
  html.theme-switching body,
  html.theme-switching body *{
    transition:background-color .35s ease, color .35s ease, border-color .35s ease, box-shadow .35s ease !important;
  }
  @media (prefers-reduced-motion: reduce){
    html.theme-switching body,
    html.theme-switching body *{ transition:none !important; }
  }

  /* ============================================================
     THÈME ALLIANCE « Nuit arcane » — palette tirée du logo Reborn Light :
     indigo profond (lettrage), nacre (disque), pervenche et lavande
     (plumes), bleu glacier (éclairs), or pâle (halo). Fond : salle de
     l'Alliance sous un voile indigo épais.
     ============================================================ */
  :root[data-theme="alliance"]{
    --ink-0:#14122a;
    --ink-1:#1c1a38;
    --ink-2:#242146;
    --line:#3a3668;
    --frost-0:#8f9ef0;
    --frost-1:#b8b0ee;
    --gold:#dcc48e;
    --gold-dim:#7d6e48;
    --text-0:#eceef8;
    --text-1:#c3c3e0;
    --text-2:#9491bd;
    --danger:#f07a70;
    --ok:#7fd6a0;
    --ok-2:#7fd6a0;
    --warn:#e8b060;
  }

  /* Portail (mot de passe) */
  [data-theme="alliance"] .site-gate{
    background:radial-gradient(circle at 50% 38%, #221f45 0%, #14122a 60%, #0d0c1e 100%);
  }
  [data-theme="alliance"] .site-gate-logo{ filter:drop-shadow(0 0 26px rgba(150,170,250,.35)); }
  [data-theme="alliance"] #site-gate-video,
  [data-theme="alliance"] #site-gate-static-logo{ display:none !important; }

  /* Fond d'ambiance, hero */
  [data-theme="alliance"] body{
    background:
      radial-gradient(circle at 50% 0%, rgba(90,95,180,.35) 0%, transparent 55%),
      var(--ink-0);
  }
  /* Surfaces */
  [data-theme="alliance"] .modal-overlay{ background:rgba(8,7,20,.8); }
  [data-theme="alliance"] .char-row:hover{ background:#2c2952; }
  [data-theme="alliance"] .skeleton{
    background:linear-gradient(90deg, var(--ink-2) 0%, #302c5a 50%, var(--ink-2) 100%);
    background-size:400px 100%;
  }
  [data-theme="alliance"] .rail-nav{
    background:rgba(28,26,56,.6);
    border-color:rgba(143,158,240,.35);
  }
  [data-theme="alliance"] .rail-nav:hover{ background:rgba(28,26,56,.85); border-color:var(--frost-0); }
  [data-theme="alliance"] #state-error{ border-color:#4a2f45; color:#f0b8c0; }

  /* Accents (anciens oranges translucides) */
  [data-theme="alliance"] .hero-sub{ color:var(--frost-1); }
  [data-theme="alliance"] .roster-row.top{ background:linear-gradient(90deg, rgba(220,196,142,.10), transparent); }
  [data-theme="alliance"] .r-pts-block.ulduar,
  [data-theme="alliance"] .r-pts-block.ulduar .r-pts-val{ color:#8fd0f0; }
  [data-theme="alliance"] .pc-mdc-tag,
  [data-theme="alliance"] .pc-badge.unlocked{ background:rgba(143,158,240,.12); }
  [data-theme="alliance"] .pc-badge:hover{ box-shadow:0 6px 18px rgba(8,6,24,.55); }
  [data-theme="alliance"] .pres-check-row.checked{ background:rgba(143,158,240,.14); }
  [data-theme="alliance"] .rl-table tbody tr{
    background-image:linear-gradient(90deg, rgba(143,158,240,.22), rgba(184,176,238,.05));
  }
  [data-theme="alliance"] .addons-header-img{ box-shadow:0 0 24px rgba(150,170,250,.25); }
  [data-theme="alliance"] .addon-card:hover .addon-icon{ box-shadow:0 0 20px rgba(150,170,250,.35); }
  [data-theme="alliance"] .pc-char-icon-card:hover .pc-char-icon-img{ box-shadow:0 0 16px rgba(150,170,250,.35); }
  [data-theme="alliance"] .loader-phoenix{ filter:drop-shadow(0 0 10px rgba(150,170,250,.6)); }
  [data-theme="alliance"] #flameGrad2 stop:nth-of-type(1){ stop-color:#6a55a6; }
  [data-theme="alliance"] #flameGrad2 stop:nth-of-type(2){ stop-color:#8f9ef0; }
  [data-theme="alliance"] #flameGrad2 stop:nth-of-type(3){ stop-color:#d8f0fb; }

  /* États */
  [data-theme="alliance"] .ins-success{
    background:rgba(127,214,160,.10);
    border-color:rgba(127,214,160,.40);
    color:var(--ok);
  }

  /* Easter egg : éclats de givre au lieu d'étincelles */
  [data-theme="alliance"] .spark{
    background:radial-gradient(circle, #ffffff, #8fb4ee);
    box-shadow:0 0 8px 2px rgba(130,170,240,.8);
  }

  /* ============================================================
     TRANSITION ENTRE LES DEUX THÈMES (logo, halo, fond)
     Le logo sortant s'efface en grandissant légèrement et en se
     floutant ; le nouveau renaît en fondu, depuis un peu plus petit.
     Les deux logos sont superposés et chargés dès le départ pour que
     le fondu soit immédiat au premier clic.
     ============================================================ */
  .hero-phoenix{ z-index:1; }
  .hero-sub{ z-index:1; }
  .hero-phoenix img.hero-logo{
    position:absolute;
    inset:0;
  }
  /* Logo visible : il arrive (léger délai pour chevaucher la sortie) */
  .hero-phoenix .hero-logo-horde,
  [data-theme="alliance"] .hero-phoenix .hero-logo-alliance{
    opacity:1;
    transform:scale(1);
    transition:
      opacity .9s cubic-bezier(.2,.8,.2,1) .15s,
      transform 1.1s cubic-bezier(.2,.8,.2,1) .15s,
      filter .9s ease .15s;
  }
  /* Logo masqué : il sort, plus vite */
  .hero-phoenix .hero-logo-alliance,
  [data-theme="alliance"] .hero-phoenix .hero-logo-horde{
    opacity:0;
    pointer-events:none;
    transition:
      opacity .55s ease-in,
      transform .6s ease-in,
      filter .55s ease-in;
  }
  .hero-phoenix .hero-logo-horde{ filter:drop-shadow(0 0 40px rgba(255,122,60,.5)) blur(0); }
  [data-theme="alliance"] .hero-phoenix .hero-logo-horde{
    transform:scale(1.08);
    filter:drop-shadow(0 0 60px rgba(255,122,60,.8)) blur(6px);
  }
  .hero-phoenix .hero-logo-alliance{
    transform:scale(.86);
    filter:drop-shadow(0 0 60px rgba(150,170,250,.8)) blur(6px);
  }
  [data-theme="alliance"] .hero-phoenix .hero-logo-alliance{
    filter:drop-shadow(0 0 36px rgba(150,170,250,.45)) blur(0);
  }

  /* Halos du hero : un calque par thème, en fondu enchaîné */
  .hero::before,
  .hero::after{ transition:opacity .9s ease; }
  .hero::after{
    content:'';
    position:absolute;
    inset:0;
    pointer-events:none;
    opacity:0;
    background:
      radial-gradient(ellipse 45% 70% at 50% 32%, rgba(190,205,250,.22) 0%, transparent 62%),
      radial-gradient(ellipse 65% 85% at 50% 30%, rgba(110,120,220,.25) 0%, transparent 72%);
  }
  [data-theme="alliance"] .hero::before{ opacity:0; }
  [data-theme="alliance"] .hero::after{ opacity:1; }

  /* Fond d'ambiance : la salle de l'Alliance est un calque en fondu
     au-dessus de la grotte de lave */
  .ambient-bg{ transition:filter .9s ease; }
  .ambient-bg::after{
    content:'';
    position:absolute;
    inset:0;
    opacity:0;
    transition:opacity .9s ease;
    background:
      linear-gradient(rgba(14,12,32,.84), rgba(14,12,32,.92)),
      url('/theme/bg-alliance-hall.webp');
    background-size:cover;
    background-position:center 35%;
  }
  [data-theme="alliance"] .ambient-bg{ filter:saturate(.75) brightness(.85); }
  [data-theme="alliance"] .ambient-bg::after{ opacity:1; }

  /* La transition globale de changement de thème (couleurs) ne doit pas
     écraser ces fondus. */
  html.theme-switching .ambient-bg{ transition:filter .9s ease !important; }
  html.theme-switching .hero-phoenix .hero-logo-horde,
  html.theme-switching[data-theme="alliance"] .hero-phoenix .hero-logo-alliance{
    transition:
      opacity .9s cubic-bezier(.2,.8,.2,1) .15s,
      transform 1.1s cubic-bezier(.2,.8,.2,1) .15s,
      filter .9s ease .15s !important;
  }
  html.theme-switching .hero-phoenix .hero-logo-alliance,
  html.theme-switching[data-theme="alliance"] .hero-phoenix .hero-logo-horde{
    transition:
      opacity .55s ease-in,
      transform .6s ease-in,
      filter .55s ease-in !important;
  }
  @media (prefers-reduced-motion: reduce){
    .hero-phoenix img.hero-logo,
    html.theme-switching .hero-phoenix img.hero-logo{
      transform:none !important;
      filter:none !important;
      transition:opacity .2s linear !important;
    }
  }

  /* ============================================================
     ANIMATION DE TRANSFORMATION DU LOGO (Horde ⇄ Alliance)
     Vidéos sans son (/theme/morph-*.mp4), calées au pixel près sur le
     logo fixe. Les bords sont fondus au noir directement dans la vidéo
     (aucun masque CSS, pour un rendu identique dans tous les
     navigateurs) et le mode de fusion « screen » rend ce noir
     transparent sur le fond du site.
     ============================================================ */
  .hero-morph-video{
    position:absolute;
    z-index:1;
    pointer-events:none;
    mix-blend-mode:screen;
    opacity:0;
    transition:opacity .3s ease;
  }
  .hero-morph-video.visible{ opacity:1; }
  html.morph-playing .hero-phoenix img.hero-logo{ opacity:0 !important; transition:opacity .3s ease !important; }
  html.morph-swap .hero-phoenix img.hero-logo{ transition:opacity .45s ease !important; }

  /* ============================================================
     PAGE RÈGLEMENT (après le mot de passe, une seule fois par visiteur)
     ============================================================ */
  body.rules-locked > *:not(#rules-gate){ display:none !important; }
  #rules-gate{ display:none; }
  body.rules-locked #rules-gate{ display:block; }
  .rules-gate{
    position:fixed;
    inset:0;
    z-index:400;
    overflow-y:auto;
    padding:24px 16px 48px;
    background:
      radial-gradient(circle at 50% 0%, rgba(255,122,60,.10) 0%, transparent 55%),
      var(--ink-0);
  }
  .rules-box{ max-width:880px; margin:0 auto; }
  .rules-header-img{
    display:block;
    width:min(100%, 640px);
    height:auto;
    margin:0 auto 10px;
    filter:drop-shadow(0 0 30px rgba(255,122,60,.25));
  }
  .rules-intro{
    text-align:center;
    color:var(--text-2);
    font-size:13px;
    margin:0 0 20px;
  }
  .rules-content{
    background:var(--ink-1);
    border:1px solid var(--line);
    border-radius:4px;
    padding:26px 30px;
    line-height:1.65;
    font-size:14.5px;
    color:var(--text-1);
  }
  .rules-content h3{
    font-family:'Cinzel', serif;
    font-size:19px;
    color:var(--frost-0);
    margin:26px 0 10px;
    padding-bottom:6px;
    border-bottom:1px solid var(--line);
  }
  .rules-content h3:first-child{ margin-top:0; }
  .rules-content p{ margin:0 0 12px; }
  .rules-content ul{ margin:0 0 12px; padding-left:20px; }
  .rules-content li{ margin:0 0 4px; }
  .rules-content strong{ color:var(--text-0); }
  .rules-form{
    background:var(--ink-1);
    border:1px solid var(--frost-0);
    border-radius:4px;
    padding:20px 24px;
    margin-top:18px;
    display:flex;
    flex-direction:column;
    gap:14px;
  }
  .rules-check{
    display:flex;
    align-items:center;
    gap:10px;
    font-size:15px;
    color:var(--text-0);
    cursor:pointer;
  }
  .rules-check input{ width:18px; height:18px; accent-color:var(--frost-0); cursor:pointer; }
  .rules-name-wrap{ position:relative; max-width:340px; }
  .rules-name-input{
    width:100%;
    background:var(--ink-2);
    border:1px solid var(--line);
    border-radius:3px;
    color:var(--text-0);
    font-family:inherit;
    font-size:14px;
    padding:10px 12px;
  }
  .rules-name-input:focus{ outline:none; border-color:var(--frost-0); }
  .rules-name-known{
    font-size:12px;
    color:var(--ok);
    margin-top:6px;
    min-height:16px;
  }
  .rules-suggest{
    position:absolute;
    top:calc(100% + 2px);
    left:0;
    right:0;
    z-index:5;
    background:var(--ink-2);
    border:1px solid var(--line);
    border-radius:3px;
    max-height:190px;
    overflow-y:auto;
    display:none;
  }
  .rules-suggest.open{ display:block; }
  .rules-suggest button{
    display:block;
    width:100%;
    text-align:left;
    background:none;
    border:none;
    color:var(--text-0);
    font-family:inherit;
    font-size:14px;
    padding:8px 12px;
    cursor:pointer;
  }
  .rules-suggest button:hover,
  .rules-suggest button.active{ background:var(--ink-1); color:var(--frost-0); }
  .rules-continue-btn{
    align-self:flex-start;
    background:var(--frost-0);
    color:var(--ink-0);
    border:none;
    border-radius:3px;
    font-family:'Cinzel', serif;
    font-size:15px;
    letter-spacing:.06em;
    padding:11px 24px;
    cursor:pointer;
    transition:opacity .2s ease, filter .2s ease;
  }
  .rules-continue-btn:hover:not(:disabled){ filter:brightness(1.12); }
  .rules-continue-btn:disabled{ opacity:.4; cursor:not-allowed; }
  .rules-status{ font-size:13px; color:var(--text-2); min-height:18px; }
  @media (max-width:640px){
    .rules-gate{ padding:14px 10px 36px; }
    .rules-content{ padding:18px 16px; font-size:14px; }
    .rules-form{ padding:16px; }
  }

  /* ============================================================
     CURSEURS PERSONNALISÉS (thème WoW)
     Gantelet partout par défaut, gantelet lumineux sur tout ce qui est
     cliquable, et une icône dédiée sur certains onglets et boutons.
     Sans effet sur écrans tactiles, qui n'ont pas de curseur.
     ============================================================ */
  :root{
    --cur-gauntlet:image-set(url('/theme/cursors/gauntlet-32.png') 1x, url('/theme/cursors/gauntlet-64.png') 2x) 2 2, auto;
    --cur-interact:image-set(url('/theme/cursors/interact-32.png') 1x, url('/theme/cursors/interact-64.png') 2x) 2 2, pointer;
    --cur-lock:image-set(url('/theme/cursors/lock-32.png') 1x, url('/theme/cursors/lock-64.png') 2x) 2 2, pointer;
    --cur-trainer:image-set(url('/theme/cursors/trainer-32.png') 1x, url('/theme/cursors/trainer-64.png') 2x) 2 2, pointer;
    --cur-quest:image-set(url('/theme/cursors/campaignquest-32.png') 1x, url('/theme/cursors/campaignquest-64.png') 2x) 2 2, pointer;
    --cur-pickup:image-set(url('/theme/cursors/pickup-32.png') 1x, url('/theme/cursors/pickup-64.png') 2x) 2 2, pointer;
  }
  :root{
    --cur-gear:image-set(url('/theme/cursors/gear-32.png') 1x, url('/theme/cursors/gear-64.png') 2x) 2 2, pointer;
  }
  html:not(.no-custom-cursors){ cursor:url('/theme/cursors/gauntlet-32.png') 2 2, auto; cursor:var(--cur-gauntlet); }
  /* Les champs de saisie gardent le curseur texte */
  input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]),
  textarea{ cursor:text; }
  /* Curseur d'interaction : appliqué par le script à tout élément cliquable */
  html:not(.no-custom-cursors) .cur-interact{ cursor:url('/theme/cursors/interact-32.png') 2 2, pointer !important; cursor:var(--cur-interact) !important; }
  /* Curseurs dédiés */
  html:not(.no-custom-cursors) :is(#admin-toggle, #presence-toggle){ cursor:url('/theme/cursors/lock-32.png') 2 2, pointer !important; cursor:var(--cur-lock) !important; }
  html:not(.no-custom-cursors) .tab-btn[data-tab="maitresclasse"]{ cursor:url('/theme/cursors/trainer-32.png') 2 2, pointer !important; cursor:var(--cur-trainer) !important; }
  html:not(.no-custom-cursors) .tab-btn[data-tab="rebornlogs"]{ cursor:url('/theme/cursors/campaignquest-32.png') 2 2, pointer !important; cursor:var(--cur-quest) !important; }
  html:not(.no-custom-cursors) .tab-btn[data-tab="bdg"]{ cursor:url('/theme/cursors/pickup-32.png') 2 2, pointer !important; cursor:var(--cur-pickup) !important; }
  html:not(.no-custom-cursors) .tab-btn[data-tab="addons"]{ cursor:url('/theme/cursors/gear-32.png') 2 2, pointer !important; cursor:var(--cur-gear) !important; }

  /* Petit réglage discret, en bas à gauche */
  .cursor-pref{
    position:absolute;
    left:6vw;
    bottom:16px;
    display:inline-flex;
    align-items:center;
    gap:6px;
    font-size:11px;
    letter-spacing:.02em;
    color:var(--text-2);
    background:color-mix(in srgb, var(--ink-1) 75%, transparent);
    border:1px solid var(--line);
    border-radius:999px;
    padding:5px 11px 5px 9px;
    opacity:.35;
    transition:opacity .2s ease;
    user-select:none;
  }
  .cursor-pref:hover{ opacity:1; }
  .cursor-pref input{ width:13px; height:13px; accent-color:var(--frost-0); margin:0; }
  @media (hover: none){ .cursor-pref{ display:none !important; } }
  @media (max-width:640px){ .cursor-pref{ display:none !important; } }


  @media (max-width:640px){
    .faction-toggle{ --slot:40px; top:8px; left:8px; }
    .faction-slot{ height:32px; }
    .faction-slot img{ height:24px; }
  }



  /* ============================================================
     Reborn TCG — cartes de SAISON (Full Art, Holo, Basique) et
     booster de saison personnalisé. Préfixe ssc- / spk-.
     ============================================================ */
  .ssc{ --cc:#ccc; position:relative; width:100%; aspect-ratio:5/7; border-radius:13px; container-type:inline-size; user-select:none; text-align:left; display:block }
  .ssc .art{ position:absolute; inset:0; background-size:cover; background-position:center top }
  .ssc.basique, .ssc.holo{ padding:2.2%; background:linear-gradient(160deg,#e2e2e2,#9a9a9a 40%,#5d5d5d 75%,#b5b5b5); box-shadow:0 8px 22px rgba(0,0,0,.5) }
  .ssc.basique .in, .ssc.holo .in{ position:relative; height:100%; border-radius:10px; overflow:hidden; background:#140d09; display:flex; flex-direction:column }
  .ssc .pic{ position:relative; flex:1; overflow:hidden }
  .ssc .pic::after{ content:""; position:absolute; inset:0; background:repeating-linear-gradient(135deg,rgba(255,255,255,.04) 0 2px,transparent 2px 9px); pointer-events:none }
  .ssc .num{ position:absolute; top:3.2cqw; left:4cqw; z-index:3; font-size:6cqw; color:rgba(255,255,255,.72); text-shadow:0 1px 3px rgba(0,0,0,.7) }
  .ssc .dot{ position:absolute; top:4cqw; right:4.5cqw; z-index:3; width:5cqw; height:5cqw; border-radius:50%; background:#fff8e8; box-shadow:0 0 3cqw 1cqw rgba(255,240,210,.8) }
  .ssc .logo{ position:absolute; top:2.4cqw; right:3cqw; z-index:3; width:12cqw; filter:drop-shadow(0 0 2cqw rgba(255,120,40,.6)) }
  .ssc .plate{ position:relative; z-index:2; padding:3.6cqw 4.5cqw 3.4cqw; background:linear-gradient(180deg,#2c1d14,#1d130d); border-top:1px solid rgba(255,255,255,.18) }
  .ssc .nm{ font-family:'Cinzel',Georgia,serif; font-weight:700; font-size:8cqw; line-height:1.15; color:#f3ece3; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
  .ssc .meta{ display:flex; justify-content:space-between; gap:3cqw; margin-top:1cqw; font-size:6.2cqw }
  .ssc .cls{ color:var(--cc) } .ssc .rk{ color:#b9b1a8 }
  .ssc.holo{ background:linear-gradient(135deg,#e8e8f5,#b9c7ff 20%,#f5c6ff 40%,#bff5e8 60%,#ffe7b0 80%,#d9d9e8) }
  .ssc.baked{ padding:0; overflow:hidden; background:var(--ink-0) }
  .ssc.baked .art{ border-radius:inherit }
  .ssc.baked.holo{ box-shadow:0 0 0 1px rgba(200,180,255,.45), 0 0 18px rgba(170,130,255,.35), 0 8px 22px rgba(0,0,0,.5) }
  .ssc .foil{ position:absolute; inset:0; z-index:4; pointer-events:none; mix-blend-mode:color-dodge; opacity:.55; border-radius:inherit;
    background:linear-gradient(115deg,transparent 25%,rgba(255,110,200,.4) 38%,rgba(120,210,255,.45) 50%,rgba(170,255,170,.35) 60%,rgba(255,230,120,.4) 70%,transparent 82%);
    background-size:260% 260%; background-position:calc(50% + var(--px,0) * 90%) calc(50% + var(--py,0) * 90%); animation:ssc-hue 6s linear infinite }
  @keyframes ssc-hue{ from{ filter:hue-rotate(0deg) } to{ filter:hue-rotate(360deg) } }
  .ssc.fullart{ overflow:hidden; animation:ssc-glow 3.2s ease-in-out infinite }
  @keyframes ssc-glow{ 0%,100%{ box-shadow:0 0 0 1px rgba(255,200,110,.5), 0 0 22px rgba(255,150,40,.45), 0 10px 26px rgba(0,0,0,.55) }
    50%{ box-shadow:0 0 0 1px rgba(255,230,160,.8), 0 0 42px rgba(255,170,60,.8), 0 10px 26px rgba(0,0,0,.55) } }
  .ssc.fullart .art{ border-radius:inherit }
  .ssc.fullart .frame{ position:absolute; inset:0; z-index:3; border-radius:inherit; padding:3.2cqw; pointer-events:none;
    background:linear-gradient(135deg,#fff1b8,#ffb23c 18%,#b33a06 34%,#ffd06a 50%,#ff6a00 66%,#6d1a02 82%,#ffe3a0); background-size:300% 300%; animation:ssc-blaze 5s ease-in-out infinite alternate;
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude }
  @keyframes ssc-blaze{ from{ background-position:0% 50% } to{ background-position:100% 50% } }
  .ssc.fullart .inner-glow{ position:absolute; inset:3.2cqw; z-index:2; border-radius:9px; pointer-events:none; box-shadow:inset 0 0 6cqw rgba(255,150,40,.55) }
  .ssc.fullart .star{ position:absolute; top:1.2cqw; left:1.2cqw; z-index:6; width:26cqw; filter:drop-shadow(0 0 2.4cqw rgba(255,190,80,.8)) }
  .ssc.fullart .star text{ font-family:'Cinzel',serif; font-weight:700 }
  .ssc.fullart .fname{ position:absolute; right:6cqw; bottom:5.5cqw; z-index:6; font-family:'Kaushan Script',cursive; font-size:15cqw; line-height:1; color:var(--cc); transform:rotate(-8deg);
    -webkit-text-stroke:.5cqw rgba(0,0,0,.55); text-shadow:0 0 2cqw color-mix(in srgb,var(--cc) 90%,transparent), 0 0 5cqw color-mix(in srgb,var(--cc) 60%,transparent) }
  .ssc.fullart .fa-foil{ position:absolute; inset:0; z-index:4; border-radius:inherit; pointer-events:none; mix-blend-mode:color-dodge; opacity:.5;
    background:linear-gradient(120deg,transparent 20%,rgba(255,120,210,.45) 35%,rgba(120,220,255,.5) 47%,rgba(170,255,160,.4) 57%,rgba(255,235,120,.5) 67%,transparent 82%);
    background-size:250% 250%; background-position:calc(50% + var(--px,0) * 110%) calc(50% + var(--py,0) * 110%); animation:ssc-hue 5s linear infinite }
  .ssc.fullart .sweep{ position:absolute; inset:0; z-index:5; border-radius:inherit; pointer-events:none; overflow:hidden }
  .ssc.fullart .sweep::before{ content:""; position:absolute; top:-30%; bottom:-30%; width:28%; left:-40%; background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);
    transform:rotate(18deg); mix-blend-mode:overlay; animation:ssc-sweep 3.4s ease-in-out infinite }
  @keyframes ssc-sweep{ 0%{ left:-45% } 55%,100%{ left:130% } }
  .ssc.fullart .sparkles{ position:absolute; inset:0; z-index:5; border-radius:inherit; pointer-events:none;
    background-image:radial-gradient(circle,rgba(255,255,255,.95) 0 1.1px,transparent 1.6px),radial-gradient(circle,rgba(255,236,170,.9) 0 1px,transparent 1.5px),radial-gradient(circle,rgba(255,255,255,.85) 0 .9px,transparent 1.4px);
    background-size:37px 41px,53px 47px,29px 33px; background-position:0 0,11px 17px,21px 5px; animation:ssc-twinkle 2.4s ease-in-out infinite alternate }
  .ssc.fullart .sparkles.b{ background-position:17px 9px,3px 29px,8px 19px; animation-delay:-1.2s }
  @keyframes ssc-twinkle{ from{ opacity:.15 } to{ opacity:.9 } }
  .ssc .glare{ position:absolute; inset:0; z-index:7; border-radius:inherit; pointer-events:none; mix-blend-mode:soft-light; opacity:0;
    background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.6),rgba(255,255,255,.1) 40%,transparent 64%); transition:opacity .2s }
  .ssc-tilt:hover .ssc .glare, .ssc-tilt.live .ssc .glare, .tgc-zoom-holder.live .ssc .glare{ opacity:1 }
  .ssc .badge{ position:absolute; z-index:8; right:-6px; bottom:-6px; background:var(--ink-0); border:1px solid var(--line); color:var(--gold); font-size:12px; font-weight:700; padding:1px 7px; border-radius:10px }
  /* Full Art et cartes « baked » coupent ce qui dépasse : le badge reste dans le cadre */
  .ssc.fullart .badge, .ssc.baked .badge{ right:6px; bottom:6px; box-shadow:0 2px 6px rgba(0,0,0,.6) }
  .ssc.locked{ padding:2.2%; background:var(--ink-2) }
  .ssc.locked .in{ height:100%; border-radius:10px; background:repeating-linear-gradient(45deg,var(--ink-1) 0 8px,var(--ink-0) 8px 16px); display:grid; place-items:center; font-family:'Cinzel',serif; font-size:22cqw; color:var(--line) }
  .ssc.locked .lnum{ position:absolute; top:4cqw; left:5cqw; font-size:6cqw; color:var(--text-2) }
  .ssc-tilt{ perspective:1000px } .ssc-tilt .ssc{ transform-style:preserve-3d; transition:transform .25s ease-out } .ssc-tilt.live .ssc{ transition:none }
  .tgc-flip.open.t-fullart .ssc{ box-shadow:0 0 50px 10px rgba(255,150,40,.7) }
  .tgc-flip.open.t-holo .ssc{ box-shadow:0 0 34px 6px rgba(180,130,255,.6) }
  .tgc-flip .face .ssc{ height:100% }
  .t-fullart{ color:#ff9a2e } .t-holo{ color:#b784ff } .t-basique{ color:#b8b8b8 }
  /* booster de saison : booster vierge teinté + logo Reborn jamais teinté */
  .spk{ --hue:245deg; --sat:1.4; --tagc:#d9c6ff; position:relative; display:inline-block; line-height:0 }
  .spk > img.body{ display:block; filter:hue-rotate(var(--hue)) saturate(var(--sat)) drop-shadow(0 6px 10px rgba(0,0,0,.55)) drop-shadow(0 0 10px color-mix(in srgb,var(--tagc) 55%,transparent)) }
  /* illustration posée sur le booster, entre les deux bords sertis */
  .spk > .part{ position:absolute; left:8.5%; top:11%; width:83%; height:73%; border-radius:5px; overflow:hidden; pointer-events:none;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.18), inset 0 0 18px rgba(0,0,0,.55), 0 0 0 1px rgba(0,0,0,.35); }
  .spk > .part img{ width:100% !important; height:100% !important; max-width:none; object-fit:cover; display:block; filter:none !important; transform:none !important; }
  .spk > .part::after{ content:''; position:absolute; inset:0; background:linear-gradient(115deg, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 28%, rgba(255,255,255,0) 60%, rgba(255,255,255,.12) 78%, rgba(255,255,255,0) 100%); mix-blend-mode:screen; }
  /* impression sur tout le booster : l'illustration prend la forme du sachet,
     puis le relief (plis, reflets) et les bords sertis sont posés par-dessus */
  .spk > .pfull{ position:absolute; inset:0; pointer-events:none;
    -webkit-mask:var(--pmask) center / 100% 100% no-repeat; mask:var(--pmask) center / 100% 100% no-repeat; }
  .spk > .pfull img{ width:100% !important; height:100% !important; max-width:none; object-fit:cover; display:block; filter:none !important; transform:none !important; }
  .spk > img.pshade{ position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none; pointer-events:none;
    filter:grayscale(1) contrast(1.35) brightness(1.1) !important; mix-blend-mode:soft-light; opacity:.85; transform:none !important; }
  .spk > img.pcrimp{ position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none; pointer-events:none; transform:none !important;
    filter:hue-rotate(var(--hue)) saturate(var(--sat)) !important;
    -webkit-mask:linear-gradient(180deg,#000 0,#000 8.5%,transparent 10.5%,transparent 89.5%,#000 91.5%,#000 100%); mask:linear-gradient(180deg,#000 0,#000 8.5%,transparent 10.5%,transparent 89.5%,#000 91.5%,#000 100%); }
  .spk > img.plogo{ position:absolute; left:7%; top:24.9%; width:86% !important; height:auto !important; max-width:none; filter:none !important; transform:none !important; pointer-events:none }
  .spk .ptag{ position:absolute; left:50%; bottom:9%; transform:translateX(-50%); background:rgba(14,8,20,.88); border:1px solid var(--tagc); color:var(--tagc); line-height:1.4;
    font-family:'Cinzel',serif; font-size:10px; font-weight:700; letter-spacing:.06em; padding:1px 6px; border-radius:3px; white-space:nowrap; max-width:92%; overflow:hidden; text-overflow:ellipsis;
    text-shadow:0 0 6px color-mix(in srgb,var(--tagc) 70%,transparent) }
  @media (prefers-reduced-motion:reduce){ .ssc .foil,.ssc.fullart,.ssc.fullart .frame,.ssc.fullart .fa-foil,.ssc.fullart .sweep::before,.ssc.fullart .sparkles{ animation:none } }

  /* Reborn TCG — saisons côté joueur */
  .tgc-colltabs{ display:inline-flex; gap:4px; padding:4px; border:1px solid var(--line); border-radius:10px; background:var(--ink-1); margin-bottom:14px }
  .tgc-colltabs button{ border:0; background:transparent; padding:8px 14px; border-radius:7px; font:inherit; font-size:13px; font-weight:600; color:var(--text-1); cursor:pointer }
  .tgc-colltabs button[aria-pressed="true"]{ background:var(--ink-2); color:var(--text-0); box-shadow:inset 0 0 0 1px var(--gold-dim) }
  .tgc-sbadges{ display:flex; gap:10px; flex-wrap:wrap; margin:0 0 16px }
  .tgc-sbadge{ display:flex; align-items:center; gap:10px; padding:8px 12px; border:1px solid var(--line); border-radius:8px; background:var(--ink-1); font-size:12.5px; color:var(--text-2) }
  .tgc-sbadge b{ display:block; color:var(--text-1); font-size:13px }
  .tgc-sbadge.done{ border-color:var(--gold); color:var(--gold) } .tgc-sbadge.done b{ color:var(--text-0) }
  .tgc-sgroup{ margin-bottom:26px }
  .tgc-sgroup-head{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; border-bottom:1px solid var(--line); padding-bottom:8px; margin-bottom:14px }
  .tgc-sgroup-head h3{ margin:0; font-family:'Cinzel',serif; font-size:17px; color:var(--text-0) } .tgc-sgroup-head h3 span{ color:var(--text-2); font-weight:500; font-size:13px; margin-left:6px }
  .tgc-sslot{ border:0; background:none; padding:0; cursor:pointer } .tgc-sslot:disabled{ cursor:default }
  .tgc-claim .alt{ width:100%; margin-top:8px }
  /* Classement de la semaine */
  .rkw-head{ font-size:13px; color:var(--text-2); margin:0 0 12px }
  .rkw-head b{ color:var(--text-0) }
  .rkw-slam{ display:flex; align-items:center; gap:16px; padding:14px 18px; border-radius:10px; border:1px solid var(--gold); margin-bottom:12px;
    background:linear-gradient(90deg,var(--ink-2),var(--ink-1)); box-shadow:0 0 18px color-mix(in srgb,var(--gold) 20%,transparent) }
  .rkw-slam img{ height:70px; flex:none }
  .rkw-slam .t{ font-family:'Cinzel',serif; font-size:17px; color:var(--gold); font-weight:700 }
  .rkw-slam p b{ color:var(--text-0) }
  .rkw-slam p{ margin:3px 0 0; font-size:13px; color:var(--text-1) }
  .rkw-games{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin-bottom:14px }
  .rkw-game{ background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:12px; display:flex; flex-direction:column; gap:5px; min-width:0 }
  .rkw-game .g{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--text-2) }
  .rkw-game .w{ font-family:'Cinzel',serif; font-size:16px; color:var(--text-0); overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
  .rkw-game .v{ font-size:12.5px; color:var(--text-1) }
  .rkw-game .r{ align-self:flex-start; font-size:11.5px; font-weight:700; color:#c9a7ff; border:1px solid rgba(180,130,255,.5); border-radius:999px; padding:1px 8px }
  .rkw-last{ font-size:12.5px; color:var(--text-2); margin:0 0 14px }
  @media (max-width:760px){ .rkw-games{ grid-template-columns:1fr 1fr } .rkw-slam img{ height:52px } }
  .tgc-streak{ margin-top:10px; padding:10px 12px; border-radius:8px; border:1px solid var(--gold-dim); background:linear-gradient(180deg,var(--ink-2),var(--ink-1)); text-align:left; }
  .tgc-streak[hidden]{ display:none }
  .tgc-streak .top{ display:flex; align-items:center; gap:8px }
  .tgc-streak .fl{ display:flex; color:#ff9a4a }
  .tgc-streak b{ font-family:'Cinzel',serif; font-size:16px; color:var(--text-0) }
  .tgc-streak .dots{ display:flex; flex-wrap:wrap; gap:4px; margin:8px 0 6px }
  .tgc-streak .dots span{ width:8px; height:8px; border-radius:50%; background:var(--line) }
  .tgc-streak .dots span.on{ background:var(--frost-0) }
  .tgc-streak .dots span.m7{ box-shadow:0 0 0 2px #c0c0c8; width:11px; height:11px }
  .tgc-streak .dots span.m30{ box-shadow:0 0 0 2px var(--gold); width:11px; height:11px }
  .tgc-streak p{ margin:0; font-size:12.5px; color:var(--text-1) }
  .tgc-streak.warn{ border-color:var(--danger) } .tgc-streak.warn .fl{ color:var(--danger) }
  .tgc-claim select{ width:100%; margin-top:6px }
  .tgc-pack .spk > img.body{ width:78px }
  .tgc-shop-item .spk > img.body{ width:auto; height:100px }
  .tgc-claim .pic .spk > img.body{ height:130px; width:auto }
  .tgc-bigpack .bwrap{ position:relative }
  .tgc-bigpack .spk-over{ position:absolute; inset:0; pointer-events:none; clip-path:inset(14% 0 0 0) }
  .tgc-bigpack .spk-over .ptag{ font-size:14px }


  /* ============================================================
     Duel de cartes (Reborn TCG)
     ============================================================ */
  .cd-modes{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin:14px 0 }
  .cd-modes button{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:16px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1); cursor:pointer; text-align:left; font:inherit; color:var(--text-0) }
  .cd-modes button:hover{ border-color:var(--gold) }
  .cd-modes b{ font-family:'Cinzel',serif; font-size:17px } .cd-modes span{ font-size:12.5px; color:var(--text-2); line-height:1.5 }
  .cd-deckline{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:13px; color:var(--text-1); padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:var(--ink-1) }
  .cd-deckline b{ color:var(--text-0) }
  .cd-table{ position:relative; border:1px solid var(--line); border-radius:14px; padding:12px; background:radial-gradient(ellipse at 50% 50%, rgba(120,55,20,.25), transparent 70%), linear-gradient(180deg,#140c08,#0e0805) }
  .cd-hero{ position:relative; display:flex; align-items:center; gap:12px; padding:8px 12px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1) }
  .cd-hero .face{ width:48px; height:48px; border-radius:50%; border:2px solid var(--gold-dim); display:grid; place-items:center; font-family:'Cinzel',serif; font-weight:900; font-size:20px; background:var(--ink-2); flex:none; color:var(--danger) }
  .cd-hero .who{ flex:1; min-width:0 } .cd-hero .who b{ display:block; font-family:'Cinzel',serif; font-size:15px } .cd-hero .who span{ font-size:12px; color:var(--text-2) }
  .cd-hero .hpbar{ height:7px; border-radius:4px; background:#3a1a12; overflow:hidden; margin-top:5px; max-width:240px } .cd-hero .hpbar i{ display:block; height:100%; background:linear-gradient(90deg,#b8321f,#ff6a3c); transition:width .4s }
  .cd-hero .hpnum{ font-family:'Cinzel',serif; font-weight:900; font-size:22px; color:#ff8a6a; min-width:44px; text-align:right }
  .cd-hero.target{ cursor:crosshair; border-color:var(--danger); box-shadow:0 0 0 2px rgba(224,90,74,.35), 0 0 22px rgba(224,90,74,.35) }
  .cd-hero .flash{ position:absolute; inset:0; border-radius:10px; background:rgba(255,60,40,.35); pointer-events:none; animation:cdflash .5s forwards }
  @keyframes cdflash{ to{ opacity:0 } }
  .cd-mana{ display:flex; gap:3px } .cd-mana i{ width:11px; height:11px; transform:rotate(45deg); border:1px solid #3a6bd6; border-radius:2px } .cd-mana i.full{ background:linear-gradient(135deg,#9cc4ff,#2f6fe0); box-shadow:0 0 6px rgba(80,140,255,.8) }
  .cd-ophand{ display:flex; gap:3px } .cd-ophand span{ width:22px; height:30px; border-radius:4px; border:1px solid #6c3a1c; background:repeating-linear-gradient(45deg,#2a150b 0 5px,#231109 5px 10px) }
  .cd-row{ display:flex; gap:10px; justify-content:center; min-height:172px; align-items:center; padding:8px 0 }
  .cd-row.me{ border-top:1px dashed rgba(255,255,255,.06) }
  .cd-slot{ width:116px; height:156px; border-radius:10px; border:1px dashed rgba(255,255,255,.07) }
  .cd-mid{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:4px }
  .cd-log{ font-size:12.5px; color:var(--text-1); min-height:1.4em; flex:1 }
  .cd-endw{ display:flex; flex-direction:column; align-items:flex-end; gap:3px }
  .cd-timer{ height:4px; width:150px; border-radius:2px; background:var(--line); overflow:hidden } .cd-timer i{ display:block; height:100%; background:var(--gold); transition:width 1s linear }
  .cd-hand{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin-top:12px; min-height:156px }
  .cd-under{ display:flex; justify-content:space-between; gap:10px; margin-top:10px }
  .cd-over{ position:absolute; inset:0; z-index:20; display:grid; place-items:center; background:rgba(8,5,3,.8); border-radius:14px }
  .cd-over .box{ text-align:center; padding:24px 28px; border:1px solid var(--gold); border-radius:12px; background:var(--ink-1); max-width:400px }
  .cd-over h2{ font-family:'Cinzel',serif; font-size:28px; margin:0 0 6px; color:var(--gold) } .cd-over p{ color:var(--text-1); font-size:14px; margin:0 0 16px }
  .cd-fxl{ position:absolute; inset:0; pointer-events:none; z-index:15 }
  .cd-rules{ margin-top:14px; background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:12px 16px }
  .cd-rules summary{ cursor:pointer; font-family:'Cinzel',serif; font-size:15px; color:var(--text-0) }
  .cd-rules ul{ margin:10px 0; padding-left:18px; font-size:13px; color:var(--text-1); line-height:1.65 }
  .cd-rules table{ border-collapse:collapse; font-size:12.5px; margin-top:10px; width:100% }
  .cd-rules td, .cd-rules th{ padding:5px 8px; border-bottom:1px solid var(--line); text-align:left } .cd-rules th{ color:var(--text-2); font-weight:500 }
  .cd-rules .grid2{ display:grid; grid-template-columns:1fr 1fr; gap:16px } @media (max-width:700px){ .cd-rules .grid2{ grid-template-columns:1fr } }
  /* carte de duel */
  .cdc{ --tc:var(--t-membre); --cc:#888; position:relative; width:116px; height:156px; border-radius:10px; padding:3px; flex:none; border:0; text-align:left; font:inherit; color:var(--text-0);
    background:linear-gradient(160deg,color-mix(in srgb,var(--tc) 60%,#fff) 0%,var(--tc) 30%,color-mix(in srgb,var(--tc) 50%,#000) 100%); box-shadow:0 6px 14px rgba(0,0,0,.5); transition:transform .15s, box-shadow .15s }
  .cdc[data-t="etincelle"]{ --tc:var(--t-etincelle) } .cdc[data-t="braise"]{ --tc:var(--t-braise) } .cdc[data-t="immortel"]{ --tc:var(--t-immortel) }
  .cdc[data-t="dev"]{ --tc:var(--t-dev) } .cdc[data-t="alar"]{ --tc:var(--t-alar) } .cdc[data-t="phenix"]{ --tc:var(--t-phenix) } .cdc[data-t="recrue"]{ --tc:#6b5a4a }
  .cdc .in{ height:100%; border-radius:7px; background:#140c08; overflow:hidden; display:flex; flex-direction:column; position:relative }
  .cdc .art{ position:relative; height:74px; display:grid; place-items:center; overflow:hidden; background:radial-gradient(circle at 50% 55%, color-mix(in srgb,var(--cc) 55%,transparent), #140c08 72%) }
  .cdc .art img{ width:50px; height:50px; border-radius:50%; object-fit:cover; border:2px solid var(--cc); box-shadow:0 0 12px color-mix(in srgb,var(--cc) 60%,transparent) }
  .cdc .art.full{ background-size:cover; background-position:center top }
  .cdc .nm{ font-family:'Cinzel',serif; font-weight:700; font-size:12px; padding:3px 6px 0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
  .cdc .ab{ font-size:10.5px; color:var(--gold); padding:1px 6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-weight:600 }
  .cdc .stats{ margin-top:auto; display:flex; justify-content:space-between; padding:0 5px 5px }
  .cdc .atk, .cdc .hp{ display:inline-flex; align-items:center; gap:3px; height:23px; padding:0 7px 0 5px; border-radius:12px; background:#0b0705; font-family:'Cinzel',serif; font-weight:900; font-size:13.5px; line-height:1 }
  .cdc .atk{ border:1.5px solid #e8a33d; color:#ffd27a } .cdc .atk svg{ color:#e8a33d }
  .cdc .hp{ border:1.5px solid #d8452c; color:#fff } .cdc .hp svg{ color:#ff5a3c }
  .cdc .hp.mid{ color:#ffd35a; border-color:#e0a020 } .cdc .hp.low{ color:#ff3b2f; border-color:#ff3b2f; box-shadow:0 0 8px rgba(255,59,47,.6) }
  .cdc .cost{ position:absolute; top:-8px; left:-8px; height:23px; padding:0 7px 0 5px; border-radius:12px; display:inline-flex; align-items:center; gap:2px; z-index:5;
    background:linear-gradient(135deg,#9cc4ff,#2f6fe0); border:2px solid #0b0705; font-family:'Cinzel',serif; font-weight:900; font-size:13px; color:#fff }
  .cdc .rk{ position:absolute; top:4px; right:6px; z-index:4; font-size:9px; font-weight:700; color:var(--tc); text-transform:uppercase; letter-spacing:.04em; text-shadow:0 1px 2px #000 }
  .cdc .sz{ position:absolute; top:4px; left:6px; z-index:4; font-size:9px; font-weight:700; color:#d9c6ff; text-shadow:0 1px 2px #000 }
  .cdc.taunt{ box-shadow:0 0 0 3px #7c8a99, 0 6px 14px rgba(0,0,0,.5) }
  .cdc .tico{ display:inline-flex; vertical-align:-1px; margin-right:3px; color:#b9c4d0 }
  .cdc .shield{ position:absolute; inset:-4px; border-radius:12px; border:2px solid rgba(255,230,140,.9); box-shadow:0 0 14px rgba(255,220,120,.7), inset 0 0 14px rgba(255,220,120,.4); pointer-events:none; z-index:6 }
  .cdc.playable{ cursor:pointer; box-shadow:0 0 0 2px var(--ok), 0 0 16px rgba(111,207,111,.45) } .cdc.playable:hover{ transform:translateY(-8px) }
  .cdc.ready{ cursor:pointer; box-shadow:0 0 0 2px var(--ok), 0 0 16px rgba(111,207,111,.5) }
  .cdc.sel{ transform:translateY(-10px); box-shadow:0 0 0 3px var(--gold), 0 0 22px rgba(232,163,61,.6) }
  .cdc.target{ cursor:crosshair; box-shadow:0 0 0 3px var(--danger), 0 0 20px rgba(224,90,74,.6) }
  .cdc.dying{ animation:cddie .45s forwards } @keyframes cddie{ to{ transform:scale(.6) rotate(-8deg); opacity:0 } }
  .cdc .float{ position:absolute; left:50%; top:40%; transform:translateX(-50%); font-family:'Cinzel',serif; font-weight:900; font-size:24px; color:#ff5a3c; text-shadow:0 2px 0 #000; animation:cdfloat .8s forwards; z-index:9; pointer-events:none }
  .cdc .float.heal{ color:#6fe07a } @keyframes cdfloat{ to{ transform:translate(-50%,-34px); opacity:0 } }
  /* brillance selon la rareté (cadre et illustration seulement) */
  .cdc .art::after{ content:""; position:absolute; inset:0; pointer-events:none; opacity:0 }
  .cdc[data-t="immortel"] .art::after{ opacity:1; background:linear-gradient(115deg,transparent 35%,rgba(255,240,190,.35) 48%,transparent 60%); background-size:250% 100%; animation:cdsheen 4.5s linear infinite }
  .cdc[data-t="dev"] .art::after{ opacity:1; background:linear-gradient(115deg,transparent 30%,rgba(140,200,255,.45) 47%,transparent 62%); background-size:250% 100%; animation:cdsheen 3.6s linear infinite }
  .cdc[data-t="alar"] .art::after{ opacity:.75; mix-blend-mode:color-dodge; background:linear-gradient(115deg,transparent 20%,rgba(255,120,210,.5) 38%,rgba(120,220,255,.55) 50%,rgba(170,255,160,.45) 60%,transparent 78%); background-size:260% 100%; animation:cdsheen 3.2s linear infinite }
  .cdc[data-t="phenix"] .art::after{ opacity:1; background-image:radial-gradient(circle,rgba(255,255,255,.95) 0 1px,transparent 1.6px),radial-gradient(circle,rgba(255,220,140,.9) 0 1px,transparent 1.5px); background-size:23px 27px,31px 29px; background-position:0 0,9px 13px; animation:cdtwinkle 1.8s ease-in-out infinite alternate }
  .cdc[data-t="alar"]{ filter:drop-shadow(0 0 5px rgba(166,77,240,.55)) }
  .cdc[data-t="phenix"]{ filter:drop-shadow(0 0 8px rgba(255,140,40,.75)); background:linear-gradient(135deg,#fff1b8,#ffb23c 18%,#b33a06 34%,#ffd06a 50%,#ff6a00 66%,#6d1a02 82%,#ffe3a0); background-size:300% 300%; animation:cdblaze 4s ease-in-out infinite alternate }
  @keyframes cdsheen{ from{ background-position:130% 0 } to{ background-position:-130% 0 } }
  @keyframes cdtwinkle{ from{ opacity:.2 } to{ opacity:1 } }
  @keyframes cdblaze{ from{ background-position:0% 50% } to{ background-position:100% 50% } }
  /* effets */
  .cd-proj{ position:absolute; width:26px; height:26px; margin:-13px 0 0 -13px; border-radius:50% }
  .cd-proj.fire{ background:radial-gradient(circle,#fff6c8 0 20%,#ffb13c 45%,#ff4a12 70%,transparent 72%); box-shadow:0 0 18px 8px rgba(255,110,30,.7) }
  .cd-proj.arrow{ width:44px; height:4px; margin:-2px 0 0 -22px; border-radius:2px; background:linear-gradient(90deg,transparent,#d7c08a 30%,#fff 100%); box-shadow:0 0 8px rgba(255,240,200,.8) }
  .cd-proj.shadow{ background:radial-gradient(circle,#e6d4ff 0 18%,#8a4dff 50%,transparent 72%); box-shadow:0 0 18px 8px rgba(140,80,255,.6) }
  .cd-burst{ position:absolute; width:116px; height:116px; margin:-58px 0 0 -58px; border-radius:50%; opacity:0 }
  .cd-burst.impact{ border:6px solid #ffb13c; box-shadow:0 0 30px #ff7a3c, inset 0 0 24px #ff7a3c } .cd-burst.frost{ border:6px solid #9fdcff; box-shadow:0 0 30px #5ab8ff, inset 0 0 24px #5ab8ff }
  .cd-burst.fire{ background:radial-gradient(circle,rgba(255,240,180,.95) 0 15%,rgba(255,140,40,.85) 40%,rgba(255,60,10,.4) 62%,transparent 70%) }
  .cd-burst.shadow{ background:radial-gradient(circle,rgba(220,190,255,.9) 0 12%,rgba(140,70,255,.7) 42%,transparent 70%) }
  .cd-burst.holy{ border:4px solid #ffe38a; background:radial-gradient(circle,rgba(255,240,170,.55),transparent 65%); box-shadow:0 0 34px #ffd35a }
  .cd-burst.heal{ background:radial-gradient(circle,rgba(190,255,190,.8) 0 15%,rgba(90,220,110,.45) 45%,transparent 70%) }
  .cd-burst.nature{ background:radial-gradient(circle,rgba(210,255,170,.75) 0 15%,rgba(120,200,60,.45) 45%,transparent 70%) }
  .cd-burst.storm{ border:5px solid #6fb3ff; background:radial-gradient(circle,rgba(160,210,255,.5),transparent 65%); box-shadow:0 0 28px #3a8dff }
  .cd-slash{ position:absolute; width:116px; height:5px; margin:-2px 0 0 -58px; border-radius:3px; background:linear-gradient(90deg,transparent,#fff 45%,#ffe680 55%,transparent); box-shadow:0 0 10px #fff27a; opacity:0 }
  .cd-table.quake{ animation:cdquake .4s } @keyframes cdquake{ 20%{ translate:-5px 2px } 40%{ translate:5px -2px } 60%{ translate:-3px 1px } 80%{ translate:2px 0 } }
  .cd-tip{ position:absolute; z-index:950; max-width:230px; padding:8px 10px; border-radius:8px; background:#0b0705; border:1px solid var(--gold-dim); box-shadow:0 8px 24px rgba(0,0,0,.6); font-size:12.5px; line-height:1.45; color:var(--text-1); pointer-events:none }
  .cd-tip b{ color:var(--text-0) } .cd-tip .t{ display:block; font-family:'Cinzel',serif; font-size:13.5px; color:var(--text-0); margin-bottom:3px }
  .cd-tuto{ position:absolute; z-index:960; width:250px; padding:12px 14px; border-radius:10px; background:var(--ink-1); border:1px solid var(--gold); box-shadow:0 10px 30px rgba(0,0,0,.6); font-size:13px; line-height:1.5; color:var(--text-1) }
  .cd-tuto b{ color:var(--text-0) } .cd-tuto .n{ font-size:11px; color:var(--text-2); display:block; margin-bottom:4px } .cd-tuto .act{ display:flex; justify-content:space-between; gap:8px; margin-top:10px }
  .cd-hl{ box-shadow:0 0 0 3px var(--gold), 0 0 20px rgba(232,163,61,.7) !important; border-radius:12px }
  /* éditeur de deck */
  .cd-dk{ display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:16px; align-items:start }
  .cd-dk-cls .tv-chip{ display:inline-flex; align-items:center; gap:6px; }
  .cd-dk-cls .tv-chip i{ width:9px; height:9px; border-radius:50%; flex:none; }
  .cd-dk-sort{ display:flex; align-items:center; gap:6px; font-size:12.5px; color:var(--text-2); }
  .cd-dk-sort button{ padding:4px 12px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--text-1); font:inherit; font-size:12.5px; cursor:pointer; }
  .cd-dk-sort button[aria-pressed="true"]{ border-color:var(--gold); color:var(--text-0); background:var(--ink-2); }
  .cd-dk-coll{ display:grid; grid-template-columns:repeat(auto-fill,minmax(116px,1fr)); gap:14px 10px; justify-items:center }
  .cd-dk-coll .wrap{ position:relative } .cd-dk-coll .n{ position:absolute; right:-6px; bottom:-6px; z-index:7; background:var(--ink-0); border:1px solid var(--line); color:var(--gold); font-size:12px; font-weight:700; padding:1px 7px; border-radius:10px }
  .cd-dk-coll .cdc{ cursor:pointer } .cd-dk-coll .cdc.full{ opacity:.35; cursor:default }
  .cd-dk-side{ position:sticky; top:12px; background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:14px; display:flex; flex-direction:column; gap:10px }
  .cd-dk-slots{ display:flex; gap:4px } .cd-dk-slots button{ flex:1; padding:6px; border-radius:6px; border:1px solid var(--line); background:transparent; font:inherit; font-size:12.5px; cursor:pointer; color:var(--text-1) }
  .cd-dk-slots button[aria-pressed="true"]{ border-color:var(--gold); color:var(--text-0); background:var(--ink-2) }
  .cd-dk-list{ list-style:none; margin:0; padding:0; max-height:320px; overflow-y:auto }
  .cd-dk-list li{ display:flex; align-items:center; gap:8px; padding:5px 6px; border-radius:5px; font-size:13px; cursor:pointer }
  .cd-dk-list li:hover{ background:var(--ink-2) } .cd-dk-list .c{ min-width:22px; height:20px; border-radius:10px; background:linear-gradient(135deg,#9cc4ff,#2f6fe0); color:#fff; font-weight:800; font-size:11.5px; display:grid; place-items:center }
  .cd-dk-list .x{ margin-left:auto; color:var(--text-2); font-size:12px }
  .cd-curve{ display:flex; align-items:flex-end; gap:5px; height:60px; padding-top:4px }
  .cd-curve div{ flex:1; display:flex; flex-direction:column; align-items:center; gap:2px; font-size:10.5px; color:var(--text-2) }
  .cd-curve i{ display:block; width:100%; background:linear-gradient(180deg,#9cc4ff,#2f6fe0); border-radius:3px 3px 0 0; min-height:2px }
  .cd-lobby li{ display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--line); font-size:14px }
  .cd-lobby .dot{ width:9px; height:9px; border-radius:50%; background:var(--ok); box-shadow:0 0 6px var(--ok) } .cd-lobby .dot.busy{ background:var(--gold); box-shadow:none }
  .cd-lobby .nm{ flex:1 } .cd-lobby small{ color:var(--text-2); font-size:12px }
  @media (max-width:860px){ .cd-dk{ grid-template-columns:1fr } .cd-dk-side{ position:static } }
  @media (max-width:640px){
    .cdc{ width:88px; height:128px } .cdc .art{ height:50px } .cdc .art img{ width:38px; height:38px } .cdc .nm{ font-size:11px } .cdc .ab{ font-size:9.5px }
    .cdc .atk, .cdc .hp{ height:20px; font-size:12px; padding:0 5px 0 4px } .cd-slot{ width:88px; height:128px } .cd-row{ gap:5px; min-height:140px } .cd-hand{ gap:5px }
  }
  @media (prefers-reduced-motion:reduce){ .cdc, .cdc *, .cdc .art::after{ animation:none !important; transition:none !important } }
  /* invitation reçue (toutes les pages) */
  .duel-invite{ position:fixed; left:50%; bottom:calc(18px + env(safe-area-inset-bottom, 0px)); transform:translateX(-50%); z-index:1000; width:min(420px, calc(100vw - 24px));
    padding:14px 16px; border-radius:12px; border:1px solid var(--gold); background:var(--ink-1); box-shadow:0 14px 40px rgba(0,0,0,.6) }
  .duel-invite[hidden]{ display:none }
  .duel-invite b.t{ font-family:'Cinzel',serif; font-size:16px; color:var(--text-0) } .duel-invite p{ margin:4px 0 10px; font-size:13px; color:var(--text-1) }
  .duel-invite .row{ display:flex; gap:8px } .duel-invite .row button{ flex:1; min-height:40px; border-radius:6px; border:1px solid var(--line); background:var(--ink-2); color:var(--text-0); font:inherit; font-weight:700; cursor:pointer }
  .duel-invite .row button.ok{ background:var(--frost-0); border-color:var(--frost-0); color:var(--ink-0) }
  .duel-invite .bar{ height:4px; border-radius:2px; background:var(--line); overflow:hidden; margin-top:10px } .duel-invite .bar i{ display:block; height:100%; background:var(--gold); width:100%; transition:width 30s linear }

  /* Duel : visibilité du tour */
  .cd-turnbar{ display:flex; align-items:center; justify-content:center; gap:10px; margin:4px auto; padding:6px 18px; border-radius:999px; width:max-content; max-width:100%;
    font-family:'Cinzel',serif; font-weight:700; font-size:14.5px; transition:background .3s, color .3s }
  .cd-turnbar.me{ background:linear-gradient(180deg,#f0b24a,#c9860c); color:#1a0d06; box-shadow:0 0 18px rgba(232,163,61,.55) }
  .cd-turnbar.op{ background:var(--ink-2); color:var(--text-2); border:1px solid var(--line) }
  .cd-turnbar .dots i{ display:inline-block; width:5px; height:5px; margin:0 2px; border-radius:50%; background:currentColor; animation:cdtdot 1.2s infinite ease-in-out }
  .cd-turnbar .dots i:nth-child(2){ animation-delay:.2s } .cd-turnbar .dots i:nth-child(3){ animation-delay:.4s }
  @keyframes cdtdot{ 0%,80%,100%{ opacity:.25; transform:translateY(0) } 40%{ opacity:1; transform:translateY(-3px) } }
  .cd-table .cd-row, .cd-table .cd-hero{ transition:box-shadow .35s, background .35s, filter .35s }
  .cd-table.my-turn #cd-me-hero{ box-shadow:0 0 0 1px var(--gold), 0 0 26px rgba(232,163,61,.45) }
  .cd-table.my-turn #cd-me-board{ background:radial-gradient(ellipse at 50% 60%, rgba(232,163,61,.12), transparent 70%); border-radius:12px }
  .cd-table.my-turn #cd-op-board, .cd-table.my-turn #cd-op-hero{ filter:saturate(.7) brightness(.8) }
  .cd-table.op-turn #cd-op-hero{ box-shadow:0 0 0 1px var(--danger), 0 0 26px rgba(224,90,74,.4) }
  .cd-table.op-turn #cd-op-board{ background:radial-gradient(ellipse at 50% 40%, rgba(224,90,74,.1), transparent 70%); border-radius:12px }
  .cd-table.op-turn #cd-me-board, .cd-table.op-turn #cd-me-hero{ filter:saturate(.7) brightness(.8) }
  .cd-hand .cdc{ transition:filter .3s, transform .3s } .cd-hand.op-turn .cdc{ filter:grayscale(.6) brightness(.65); transform:scale(.96) }
  .cd-bigturn{ position:absolute; left:0; right:0; top:50%; z-index:18; transform:translateY(-50%); display:flex; justify-content:center; pointer-events:none }
  .cd-bigturn span{ font-family:'Cinzel',serif; font-weight:900; font-size:clamp(24px,5vw,42px); color:#fff3d6; padding:12px 44px;
    background:linear-gradient(90deg,transparent,rgba(120,50,10,.9) 20%,rgba(160,70,15,.95) 50%,rgba(120,50,10,.9) 80%,transparent); text-shadow:0 0 18px rgba(255,170,60,.9), 0 2px 0 #000 }
  #cd-end.pulse{ animation:cdendpulse 1.4s ease-in-out infinite }
  @keyframes cdendpulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,122,60,.6) } 50%{ box-shadow:0 0 0 8px rgba(255,122,60,0) } }
  .cd-timerw{ display:flex; align-items:center; gap:6px } .cd-timer{ height:7px !important; width:190px !important }
  .cd-timer.warn i{ background:#ff9a2e } .cd-timer.crit i{ background:var(--danger) }
  .cd-tsec{ font-size:12px; font-weight:700; color:var(--text-1); min-width:32px; text-align:right } .cd-tsec.crit{ color:var(--danger) }
  /* Duel : animations */
  .cdx-shard, .cdx-gshard{ position:absolute; pointer-events:none; width:10px; height:14px; clip-path:polygon(50% 0,100% 60%,40% 100%,0 40%) }
  .cdx-shard{ background:linear-gradient(135deg,#fff,#c9d4e0) } .cdx-gshard{ width:9px; height:12px; background:linear-gradient(135deg,#fff7c8,#e8a33d) }
  .cdx-ash{ position:absolute; pointer-events:none; width:5px; height:5px; border-radius:50%; background:#ffb13c; box-shadow:0 0 6px #ff7a3c }
  .cdx-leaf{ position:absolute; pointer-events:none; width:10px; height:6px; border-radius:0 80% 0 80%; background:#7fd35a; box-shadow:0 0 4px #b6ff8a }
  .cdx-portal{ position:absolute; width:150px; height:150px; margin:-75px 0 0 -75px; border-radius:50%; pointer-events:none;
    background:conic-gradient(from 0deg,#a64df0,#5a1b9a,#d9a6ff,#6a2bd0,#a64df0); -webkit-mask:radial-gradient(circle,transparent 42%,#000 45%,#000 60%,transparent 63%); mask:radial-gradient(circle,transparent 42%,#000 45%,#000 60%,transparent 63%) }
  .cdx-pillar{ position:absolute; width:60px; height:190px; margin:-150px 0 0 -30px; pointer-events:none; background:linear-gradient(180deg,rgba(255,250,210,0),rgba(255,245,190,.85) 70%,rgba(255,240,170,0)); filter:blur(2px) }
  .cdx-wisp{ position:absolute; pointer-events:none; width:12px; height:12px; margin:-6px 0 0 -6px; border-radius:50%; background:radial-gradient(circle,#ffe0e8,#c41e3a 55%,transparent 70%); box-shadow:0 0 10px #ff4a6a }
  .cdx-block{ position:absolute; width:70px; height:80px; margin:-40px 0 0 -35px; pointer-events:none }
  .cdc .fatal{ position:absolute; left:50%; top:26%; transform:translateX(-50%); z-index:9; pointer-events:none; font-family:'Cinzel',serif; font-weight:900; font-size:16px; color:#ffd35a; white-space:nowrap; text-shadow:0 0 10px #ff7a3c, 0 2px 0 #000; animation:cdfloat 1.1s forwards }
  .cdc .float.big{ font-size:32px; color:#ff3b1f; animation:cdfloatbig .9s forwards }
  @keyframes cdfloatbig{ 0%{ transform:translate(-50%,0) scale(1.4) } 15%{ transform:translate(-50%,-4px) rotate(-4deg) } 30%{ transform:translate(-50%,-6px) rotate(4deg) } to{ transform:translate(-50%,-40px); opacity:0 } }
  /* box-shadow plutôt que drop-shadow : bien moins coûteux à animer */
  .cdc.enraged{ animation:cdrage 1.4s ease-in-out infinite }
  @keyframes cdrage{ 0%,100%{ box-shadow:0 0 4px rgba(255,40,20,.45) } 50%{ box-shadow:0 0 14px rgba(255,40,20,.9) } }
  .cdc.ready:not(.sel){ animation:cdbreathe 2.4s ease-in-out infinite }
  .cdc.ready.enraged:not(.sel){ animation:cdbreathe 2.4s ease-in-out infinite, cdrage 1.1s ease-in-out infinite }
  @keyframes cdbreathe{ 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(-3px) } }
  .cd-hero .face{ position:relative; overflow:hidden } .cd-hero .face svg.crack{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; opacity:0; transition:opacity .4s }
  .cd-hero.danger .face{ animation:cdheart 1s ease-in-out infinite; border-color:var(--danger) } .cd-hero.danger{ box-shadow:inset 0 0 0 1px rgba(224,90,74,.6) }
  @keyframes cdheart{ 0%,100%{ transform:scale(1) } 12%{ transform:scale(1.14) } 24%{ transform:scale(1) } 36%{ transform:scale(1.1) } 48%{ transform:scale(1) } }
  .cd-aim, .cd-links{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible }
  .cd-aim{ z-index:14 } .cd-links{ z-index:13 }
  .cd-aim path{ fill:none; stroke:#ffd35a; stroke-width:5; stroke-linecap:round; stroke-dasharray:2 10; filter:drop-shadow(0 0 6px rgba(255,190,80,.9)); animation:cdmarch .6s linear infinite }
  .cd-aim polygon{ fill:#ffd35a } .cd-links line{ stroke:#6fb3ff; stroke-width:2.5; stroke-dasharray:6 5; filter:drop-shadow(0 0 5px #3a8dff); animation:cdmarch .8s linear infinite }
  @keyframes cdmarch{ to{ stroke-dashoffset:-24 } }
  .cd-mana i.pop{ animation:cdmanapop .35s ease-out } .cd-mana i.spent{ animation:cdmanaspent .4s ease-out }
  @keyframes cdmanapop{ 0%{ transform:rotate(45deg) scale(.2) } 70%{ transform:rotate(45deg) scale(1.35) } to{ transform:rotate(45deg) scale(1) } }
  @keyframes cdmanaspent{ 0%{ background:#fff; box-shadow:0 0 12px #9cc4ff } to{ background:transparent } }
  .cd-over.win{ background:radial-gradient(circle at 50% 60%, rgba(120,45,10,.85), rgba(8,5,3,.9) 70%) } .cd-over.lose{ background:rgba(4,3,2,.92) }
  .cd-over .box{ position:relative; z-index:2 } .cd-phoenix{ position:absolute; left:50%; bottom:-20px; width:220px; margin-left:-110px; z-index:1; pointer-events:none; filter:drop-shadow(0 0 22px #ff8a2a) }
  @media (prefers-reduced-motion:reduce){ .cdc.ready, .cdc.enraged, .cd-hero.danger .face, .cd-aim path, .cd-links line, .cd-turnbar .dots i, #cd-end.pulse{ animation:none !important } }
  /* onglet en arrière-plan : plus rien ne tourne */
  body.page-hidden *, body.page-hidden *::before, body.page-hidden *::after{ animation-play-state:paused !important; transition:none !important }

  /* ===== Mini-jeux : habillage (v147) ===== */
  /* règles repliables */
  .tv-howto{ margin:0 0 14px; background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:10px 14px; }
  .tv-howto > summary{ cursor:pointer; list-style:none; display:flex; align-items:center; gap:10px; font-family:'Cinzel',serif; font-size:15px; color:var(--text-0); }
  .tv-howto > summary::-webkit-details-marker{ display:none; }
  .tv-howto > summary::before{ content:''; width:7px; height:7px; border-right:2px solid var(--text-2); border-bottom:2px solid var(--text-2); transform:rotate(-45deg); transition:transform .2s; }
  .tv-howto[open] > summary::before{ transform:rotate(45deg); }
  .tv-howto > summary span{ font-family:'IBM Plex Sans',sans-serif; font-size:12.5px; color:var(--text-2); }
  .tv-howto > .tv-intro{ margin:10px 0 0; }
  /* statistiques en pastilles */
  .tv-meta > span{ display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:999px; background:var(--ink-1); border:1px solid var(--line); }
  .tv-meta > span b{ color:var(--text-0); font-family:'IBM Plex Mono',monospace; }
  /* écrans de départ / fin illustrés */
  .tv-overlay{ background:radial-gradient(circle at 50% 38%, rgba(255,122,60,.22), transparent 60%), rgba(10,6,4,.9) !important; }
  .tv-ov-ico, .tv-ov-rec{ display:grid; place-items:center; width:92px; height:92px; border-radius:50%; border:3px solid var(--gold); background:var(--ink-2); color:var(--gold); box-shadow:0 0 30px color-mix(in srgb, var(--gold) 45%, transparent); }
  .tv-ov-rec{ display:none; color:#ff9a2e; border-color:#ff9a2e; }
  .tv-overlay.record .tv-ov-ico{ display:none; } .tv-overlay.record .tv-ov-rec{ display:grid; }
  .tv-overlay.record{ background:radial-gradient(circle at 50% 100%, rgba(255,110,30,.45), transparent 60%), rgba(10,6,4,.9) !important; box-shadow:inset 0 0 0 2px var(--gold); }
  .tv-overlay.record .big{ color:#ffd27a; font-size:30px; }
  /* ----- Wowdle ----- */
  #tv-w-rows td{ transition:none; }
  #tv-w-rows tr.new td{ animation:wflip .5s ease both; animation-delay:calc(var(--i, 0) * 90ms); }
  @keyframes wflip{ 0%{ transform:rotateX(90deg); opacity:.2 } 100%{ transform:none; opacity:1 } }
  #tv-w-rows tr.ph td{ height:40px; border:1px dashed var(--line) !important; background:var(--ink-0) !important; }
  #tv-w-rows td.name .bico{ display:inline-flex; vertical-align:-3px; margin-right:7px; color:var(--gold); }
  .tv-w-count{ font-family:'Cinzel',serif; font-size:15px; color:var(--text-1); margin-left:auto; } .tv-w-count b{ color:var(--gold); }
  .tv-w-win{ margin-top:16px; display:flex; flex-direction:column; align-items:center; gap:10px; text-align:center; padding:18px; border:1px solid var(--gold); border-radius:12px; background:radial-gradient(circle at 50% 0%, rgba(232,163,61,.14), transparent 70%), var(--ink-1); }
  .tv-w-win[hidden]{ display:none; }
  .tv-w-win .lab{ font-size:12px; font-weight:700; letter-spacing:.08em; color:var(--ok); }
  .tv-w-win .lab.lost{ color:var(--danger); }
  .tv-w-win b.nm{ font-family:'Cinzel',serif; font-size:24px; color:var(--text-0); }
  .tv-w-win .det{ font-size:13px; color:var(--text-1); }
  .tv-w-win .grid{ display:flex; flex-direction:column; gap:3px; }
  .tv-w-win .grid div{ display:flex; gap:3px; } .tv-w-win .grid i{ width:15px; height:15px; border-radius:3px; }
  .tv-w-win .grid i.ok{ background:#2f7d3a } .tv-w-win .grid i.ko{ background:#8e2a1e }
  /* ----- Tenir le tank ----- */
  .tv-bossframe{ display:flex; gap:12px; align-items:center; padding:10px; border-radius:10px; border:1px solid #4a2c18; background:linear-gradient(180deg,#1d120c,#120a07); margin-bottom:12px; }
  .tv-bossframe .por{ flex:none; width:58px; height:58px; border-radius:50%; border:2px solid var(--danger); display:grid; place-items:center; color:#ff8a6a; background:#2a0f0a; }
  .tv-bossframe .tv-boss{ margin:0 0 6px; }
  .tv-bossframe > div:last-child{ flex:1; min-width:0; }
  .tv-unitframe{ display:flex; gap:12px; align-items:center; padding:10px; border-radius:10px; border:1px solid #4a2c18; background:linear-gradient(180deg,#1d120c,#120a07); margin-top:12px; position:relative; }
  .tv-unitframe img.por{ width:58px; height:58px; border-radius:50%; border:2px solid var(--gold); object-fit:cover; flex:none; }
  .tv-unitframe .tv-unit{ flex:1; margin:0; }
  .tv-debuff{ display:inline-flex !important; align-items:center; gap:5px; padding:2px 8px; border-radius:5px; border:1px solid #3fa34d; background:#0f2a12; color:#7fe08a; font-size:12px; }
  .tv-debuff[hidden]{ display:none !important; }
  #tv-t-hpbar .fill{ background:linear-gradient(180deg,#4cc05a,#1f6a2a) !important; }
  #tv-t-hpbar .fill.low{ background:linear-gradient(180deg,#e05a4a,#8e1e12) !important; }
  #tv-t-shield{ background:repeating-linear-gradient(45deg,rgba(255,255,255,.75) 0 4px,rgba(255,255,255,.4) 4px 8px) !important; }
  .tv-stage.low-hp{ box-shadow:inset 0 0 60px rgba(220,30,20,.55); }
  .tv-spells{ gap:12px; }
  .tv-spell{ display:flex; flex-direction:column; align-items:center; text-align:center !important; gap:3px; padding:10px 6px 8px !important; }
  .tv-spell .sico{ position:relative; width:56px; height:56px; border-radius:8px; border:1px solid #6a4020; background:radial-gradient(circle at 40% 35%, #3a2412, #1a0e08); display:grid; place-items:center; overflow:hidden; }
  .tv-spell .sico .sweep{ position:absolute; inset:0; background:conic-gradient(rgba(0,0,0,.72) 0 calc(var(--cd, 0) * 100%), transparent calc(var(--cd, 0) * 100%) 100%); pointer-events:none; }
  .tv-spell .key{ position:absolute; top:4px; right:6px; z-index:2; }
  .tv-spell .cd{ display:none !important; }
  .tv-spell .sname{ font-weight:700; font-size:13px; } .tv-spell .scost{ font-size:11.5px; color:var(--text-2); }
  .tv-hfloat{ position:absolute; z-index:5; pointer-events:none; font-family:'Cinzel',serif; font-weight:900; font-size:20px; text-shadow:0 2px 0 #000; animation:tvfloat .9s forwards; }
  @keyframes tvfloat{ from{ transform:translateY(0); opacity:1 } to{ transform:translateY(-36px); opacity:0 } }
  /* ----- Duel (classique) ----- */
  .tv-duel-top .streak{ display:inline-flex; align-items:center; gap:6px; color:#ff9a2e; }
  .tv-versus{ position:relative; }
  .tv-vs{ font-size:34px !important; font-weight:900; color:var(--gold) !important; text-shadow:0 0 18px rgba(232,163,61,.5); }
  .tv-fighter{ background:radial-gradient(ellipse at 50% 0%, rgba(255,122,60,.12), transparent 70%), var(--ink-1) !important; }
  .tv-fighter-head{ flex-direction:column; text-align:center; }
  .tv-fighter-head img, .tv-fighter-head .cls-ico{ width:84px !important; height:84px !important; border-radius:50%; box-shadow:0 0 22px rgba(255,150,60,.35); }
  .tv-fighter.turn{ box-shadow:0 0 0 1px var(--gold), 0 0 22px rgba(232,163,61,.35); }
  /* ----- Ne reste pas dans le feu ----- */
  .tv-feu-opt{ display:inline-flex; align-items:center; gap:8px; margin:6px 0 10px; font-size:13px; color:var(--text-1); cursor:pointer; }
  .tv-goal-wrap .marks{ position:relative; height:16px; font-size:11px; }
  .tv-goal-wrap .marks span{ position:absolute; top:2px; transform:translateX(-50%); white-space:nowrap; }
  .tv-goal-wrap .marks span.b{ color:#ffd35a } .tv-goal-wrap .marks span.e{ color:#ff7a5c; transform:translateX(-100%); }
  .tv-goal-wrap .tv-bar.goal{ position:relative; overflow:visible; }
  .tv-goal-wrap .tv-bar.goal .tick{ position:absolute; top:-4px; bottom:-4px; width:2px; }
  /* ----- Rotation parfaite ----- */
  /* Rotation parfaite : détail des jugements, et compteurs de largeur fixe (évite que la ligne change de hauteur) */
  .tv-r-judges{ flex-basis:100%; display:flex; flex-wrap:wrap; justify-content:center; gap:6px 16px; font-size:13.5px; }
  .tv-r-judges b{ font-size:16px; margin-right:3px; }
  #tv-g-rot .tv-meta b{ font-variant-numeric:tabular-nums; display:inline-block; min-width:3.2em; text-align:left; }

  .tv-r-restart{ margin-left:auto; display:inline-flex; align-items:center; gap:7px; min-height:34px; padding:0 14px; border-radius:999px; border:1px solid var(--gold-dim); background:var(--ink-2); color:var(--gold); font:inherit; font-size:13px; font-weight:700; cursor:pointer; }
  .tv-r-restart:hover{ border-color:var(--gold); }
  .tv-r-restart kbd{ font-size:11px; color:var(--text-2); border:1px solid var(--line); border-radius:4px; padding:0 5px; font-family:'IBM Plex Mono',monospace; background:none; }
  @media (hover:none){ .tv-r-restart kbd{ display:none; } }
  .tv-rot-panel{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px; margin-top:14px; }
  .tv-rot-spells{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .tv-rot-spell{ display:flex; gap:10px; align-items:center; padding:8px 10px; border-radius:8px; background:var(--ink-1); border:1px solid var(--line); }
  .tv-rot-spell .ic{ position:relative; flex:none; width:44px; height:44px; border-radius:8px; border:1px solid #6a4020; display:grid; place-items:center; background:radial-gradient(circle at 40% 35%, #3a2412, #1a0e08); }
  .tv-rot-spell.proc .ic{ box-shadow:0 0 0 2px #ffd35a, 0 0 14px rgba(255,211,90,.8); }
  .tv-rot-spell .ic kbd{ position:absolute; top:1px; right:3px; font-size:10px; font-weight:700; color:var(--text-0); background:none; border:0; padding:0; }
  .tv-rot-spell b{ display:block; font-size:13px; } .tv-rot-spell small{ color:var(--text-2); font-size:11.5px; }
  .tv-rot-meter{ background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:10px 12px; display:flex; flex-direction:column; gap:6px; }
  .tv-rot-meter .hd{ display:flex; align-items:center; gap:8px; font-family:'Cinzel',serif; font-size:14px; color:var(--text-0); }
  .tv-rot-meter .row{ position:relative; height:22px; border-radius:4px; background:var(--ink-0); overflow:hidden; font-size:12px; }
  .tv-rot-meter .row i{ position:absolute; inset:0 auto 0 0; opacity:.75; transition:width .3s; }
  .tv-rot-meter .row span{ position:absolute; left:8px; top:3px; text-shadow:0 1px 2px #000; font-weight:600; }
  .tv-rot-meter .row em{ position:absolute; right:8px; top:3px; font-style:normal; font-family:'IBM Plex Mono',monospace; }
  @media (max-width:760px){ .tv-rot-panel{ grid-template-columns:1fr; } }

  /* ----- Classement : en-tête + colonne latérale (option 2) ----- */
  .tv-rk-head{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:10px; }
  .tv-rk-head .ico{ display:flex; width:38px; height:38px; align-items:center; justify-content:center; border-radius:8px; border:1px solid var(--gold-dim); background:var(--ink-2); color:var(--gold); }
  .tv-rk-head h2{ margin:0; font-family:'Cinzel',serif; font-size:24px; color:var(--text-0); }
  .tv-rk-period{ margin-left:auto; display:inline-flex; gap:3px; padding:4px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1); }
  .tv-rk-period button{ padding:7px 14px; border:0; border-radius:7px; background:transparent; color:var(--text-1); font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
  .tv-rk-period button span{ color:var(--text-2); font-weight:400; }
  .tv-rk-period button[aria-pressed="true"]{ background:linear-gradient(180deg,#f08a3a,#c9531a); color:#1a0d06; }
  .tv-rk-period button[aria-pressed="true"] span{ color:#3a1a08; }
  .tv-rk-layout{ display:grid; grid-template-columns:290px minmax(0,1fr); gap:20px; align-items:start; }
  .tv-rk-side{ display:flex; flex-direction:column; gap:2px; padding:8px; border-radius:12px; border:1px solid var(--line); background:var(--ink-1); position:sticky; top:12px; }
  .tv-rk-side .lab{ font-size:11px; font-weight:700; letter-spacing:.08em; color:var(--text-2); padding:6px 10px; text-transform:uppercase; }
  #tv-rk-games{ display:flex; flex-direction:column; gap:2px; }
  #tv-rk-games .sep{ height:1px; background:var(--line); margin:4px 10px; }
  .tv-rk-g{ display:flex; align-items:center; gap:11px; padding:10px 10px; border:0; border-radius:8px; background:transparent; color:var(--text-0); font:inherit; text-align:left; width:100%; cursor:pointer; }
  .tv-rk-g:hover{ background:var(--ink-2); }
  .tv-rk-g[aria-pressed="true"]{ background:linear-gradient(90deg, color-mix(in srgb, var(--gold) 18%, transparent), transparent); box-shadow:inset 3px 0 0 var(--gold); }
  .tv-rk-g .gi{ display:flex; color:var(--text-2); flex:none; } .tv-rk-g.cards .gi, .tv-rk-g[aria-pressed="true"] .gi{ color:var(--gold); }
  .tv-rk-g .gt{ flex:1; min-width:0; } .tv-rk-g .gt b{ display:block; font-size:13.5px; } .tv-rk-g .gt small{ font-size:11.5px; color:var(--text-2); font-family:'IBM Plex Mono',monospace; }
  .tv-rk-g .gr{ font-size:12.5px; font-weight:700; color:var(--gold); white-space:nowrap; } .tv-rk-g .gr.none{ color:var(--text-2); font-weight:500; }
  .tv-rk-g[hidden]{ display:none; }
  .tv-rk-main{ min-width:0; padding:16px; border-radius:12px; border:1px solid var(--line); background:var(--ink-1); }
  .tv-rk-specs{ display:inline-flex; gap:3px; padding:4px; border-radius:10px; border:1px solid var(--line); background:var(--ink-0); margin-bottom:12px; flex-wrap:wrap; }
  .tv-rk-specs[hidden]{ display:none; }
  .tv-rk-specs button{ display:inline-flex; align-items:center; gap:7px; padding:6px 12px; border:0; border-radius:7px; background:transparent; color:var(--text-2); font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
  .tv-rk-specs button i{ width:10px; height:10px; border-radius:50%; }
  .tv-rk-specs button[aria-pressed="true"]{ background:var(--ink-2); color:var(--text-0); box-shadow:inset 0 0 0 1px var(--gold-dim); }
  .tv-rk-title{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
  .tv-rk-title b{ font-family:'Cinzel',serif; font-size:18px; color:var(--text-0); }
  .tv-rk-title .pill{ padding:2px 9px; border-radius:999px; border:1px solid var(--line); font-size:12px; color:var(--text-2); }
  .tv-rk-title .pill:empty{ display:none; }
  @media (max-width:760px){
    .tv-rk-period{ margin-left:0; width:100%; } .tv-rk-period button{ flex:1; }
    .tv-rk-layout{ display:block; }
    .tv-rk-side{ position:static; padding:0; border:0; background:none; margin-bottom:12px; }
    .tv-rk-side .lab{ display:none; }
    #tv-rk-games{ flex-direction:row; overflow-x:auto; gap:8px; padding-bottom:6px; scroll-snap-type:x mandatory; }
    #tv-rk-games .sep{ display:none; }
    .tv-rk-g{ flex:none; width:128px; flex-direction:column; align-items:flex-start; gap:4px; padding:10px; border:1px solid var(--line); background:var(--ink-1); scroll-snap-align:start; }
    .tv-rk-g[aria-pressed="true"]{ border-color:var(--gold); background:var(--ink-2); box-shadow:none; }
    .tv-rk-main{ padding:12px; }
  }
  /* ----- Classement : podium ----- */
  .tv-podium{ display:flex; align-items:flex-end; justify-content:center; gap:14px; margin:6px 0 18px; }
  .tv-podium[hidden]{ display:none; }
  .tv-podium .p{ display:flex; flex-direction:column; align-items:center; gap:6px; width:150px; }
  .tv-podium .av{ width:60px; height:60px; border-radius:50%; display:grid; place-items:center; font-family:'Cinzel',serif; font-weight:900; font-size:24px; background:var(--ink-2); border:3px solid; }
  .tv-podium .nm{ font-family:'Cinzel',serif; font-size:15px; color:var(--text-0); max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .tv-podium .sc{ font-family:'IBM Plex Mono',monospace; font-size:13px; color:var(--text-1); }
  .tv-podium .st{ width:100%; border-radius:8px 8px 0 0; display:grid; place-items:start center; padding-top:8px; box-sizing:border-box; font-family:'Cinzel',serif; font-weight:900; font-size:26px; color:#1a0d06; }
  @media (prefers-reduced-motion:reduce){ #tv-w-rows tr.new td, .tv-hfloat{ animation:none } }

  /* Bandeau « nouvelle version du site » */
  .site-update{ position:fixed; left:50%; bottom:18px; transform:translateX(-50%); z-index:9000; display:flex; align-items:center; gap:12px;
    padding:11px 14px; border-radius:10px; border:1px solid var(--gold); background:var(--ink-1); box-shadow:0 10px 30px rgba(0,0,0,.6); font-size:13.5px; color:var(--text-0); max-width:92vw; }
  .site-update .go{ min-height:34px; padding:0 14px; border-radius:8px; border:1px solid var(--frost-0); background:var(--frost-0); color:#1a0d06; font:inherit; font-size:13px; font-weight:700; cursor:pointer; }
  .site-update .x{ border:0; background:none; color:var(--text-2); font-size:16px; cursor:pointer; }
  @media (max-width:600px){ .site-update{ left:10px; right:10px; transform:none; } .site-update span{ flex:1; } }
  /* Niveau de Taverne : fiche joueur et classement */
  .pc-tav{ position:relative; }
  .pc-tav-bar{ display:block; height:4px; border-radius:2px; background:#2a140c; overflow:hidden; margin-top:6px; }
  .pc-tav-bar i{ display:block; height:100%; background:linear-gradient(90deg,#c9531a,#ffd27a); }
  .pc-tav-title{ display:block; margin-top:4px; font-size:11.5px; font-style:italic; color:#ffd27a; }
  .tv-rk .lvl{ display:inline-block; margin-left:6px; padding:0 6px; border-radius:999px; border:1px solid var(--gold-dim); font-size:10.5px; font-weight:700; color:var(--gold); vertical-align:1px; }

  /* Duel entre joueurs : discussion en direct, à gauche du plateau */
  .cd-play{ display:flex; gap:14px; align-items:stretch; }
  .cd-play > .cd-table{ flex:1; min-width:0; }
  .cd-chat{ width:290px; flex:none; display:flex; flex-direction:column; border:1px solid var(--line); border-radius:14px; background:var(--ink-0); overflow:hidden; }
  .cd-chat[hidden]{ display:none; }
  .cd-chat .hd{ display:flex; align-items:center; gap:8px; padding:10px 12px; border-bottom:1px solid var(--line); color:var(--gold); }
  .cd-chat .hd b{ font-family:'Cinzel',serif; font-size:15px; color:var(--text-0); }
  .cd-chat .hd .with{ font-size:11.5px; color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .cd-chat .hd .mute{ margin-left:auto; padding:3px 9px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--text-2); font:inherit; font-size:11.5px; cursor:pointer; }
  .cd-chat .hd .mute[aria-pressed="true"]{ border-color:var(--danger); color:var(--danger); }
  .cd-chat .hd .x{ display:none; border:0; background:none; color:var(--text-2); font-size:16px; cursor:pointer; }
  .cd-chat .msgs{ flex:1; min-height:120px; max-height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:12px; }
  .cd-chat .m{ display:flex; flex-direction:column; gap:2px; align-items:flex-start; }
  .cd-chat .m.me{ align-items:flex-end; }
  .cd-chat .m span.n{ font-size:11px; color:var(--gold); }
  .cd-chat .m p{ margin:0; max-width:88%; padding:7px 10px; border-radius:10px; background:var(--ink-1); border:1px solid var(--line); font-size:13px; line-height:1.45; word-break:break-word; }
  .cd-chat .m.me p{ background:var(--ink-2); }
  .cd-chat .empty{ margin:auto; font-size:12.5px; color:var(--text-2); text-align:center; }
  .cd-chat .quick{ display:flex; flex-wrap:wrap; gap:6px; padding:0 12px 8px; }
  .cd-chat .quick button{ padding:5px 10px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--text-1); font:inherit; font-size:12px; cursor:pointer; }
  .cd-chat .quick button:hover{ border-color:var(--gold-dim); }
  .cd-chat .send{ display:flex; gap:8px; padding:10px 12px; border-top:1px solid var(--line); }
  .cd-chat .send input{ flex:1; min-width:0; padding:9px 10px; border-radius:8px; border:1px solid var(--line); background:var(--ink-1); color:var(--text-0); font:inherit; font-size:13px; }
  .cd-chat .send button{ width:38px; height:38px; border-radius:8px; border:1px solid var(--frost-0); background:var(--frost-0); color:#1a0d06; display:grid; place-items:center; cursor:pointer; }
  .cd-chat-open{ display:flex; align-items:center; gap:8px; margin-bottom:10px; padding:8px 12px; border-radius:8px; border:1px solid var(--gold-dim); background:var(--ink-2); color:var(--gold); font:inherit; font-size:13px; cursor:pointer; }
  .cd-chat-open[hidden]{ display:none; }
  .cd-chat-open .unread{ margin-left:auto; min-width:18px; height:18px; border-radius:999px; background:var(--frost-0); color:#1a0d06; font-size:11px; font-weight:700; display:grid; place-items:center; padding:0 5px; }
  @media (max-width:900px){
    .cd-play{ display:block; }
    .cd-chat-open{ width:100%; box-sizing:border-box; }
    .cd-chat{ width:auto; margin-bottom:10px; } .cd-chat .hd .x{ display:block; }
    .cd-chat .msgs{ max-height:220px; }
  }

  /* Discussion générale de la Taverne (volet flottant) */
  .tv-chat{ position:fixed; right:16px; bottom:16px; z-index:800; display:flex; flex-direction:column; align-items:flex-end; gap:8px; }
  .tv-chat[hidden]{ display:none; }
  .tv-chat-tab{ display:inline-flex; align-items:center; gap:8px; padding:9px 14px; border-radius:999px; border:1px solid var(--gold-dim); background:var(--ink-2); color:var(--gold); font:inherit; font-size:13px; cursor:pointer; box-shadow:0 8px 24px rgba(0,0,0,.5); }
  .tv-chat-tab .on{ font-size:11.5px; color:var(--text-2); } .tv-chat-tab .unread{ min-width:18px; height:18px; border-radius:999px; background:var(--frost-0); color:#1a0d06; font-size:11px; font-weight:700; display:grid; place-items:center; padding:0 5px; }
  .tv-chat-box{ width:300px; max-width:calc(100vw - 32px); display:flex; flex-direction:column; border:1px solid var(--gold-dim); border-radius:12px; background:var(--ink-0); box-shadow:0 14px 40px rgba(0,0,0,.6); overflow:hidden; }
  .tv-chat-box[hidden]{ display:none; }
  .tv-chat-box .hd{ display:flex; align-items:center; gap:8px; padding:9px 12px; border-bottom:1px solid var(--line); color:var(--gold); }
  .tv-chat-box .hd b{ font-family:'Cinzel',serif; font-size:14px; color:var(--text-0); } .tv-chat-box .hd .on2{ font-size:11.5px; color:var(--text-2); }
  .tv-chat-box .hd .mute{ margin-left:auto; padding:3px 9px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--text-2); font:inherit; font-size:11.5px; cursor:pointer; }
  .tv-chat-box .hd .mute[aria-pressed="true"]{ border-color:var(--danger); color:var(--danger); }
  .tv-chat-box .hd .x{ border:0; background:none; color:var(--text-2); font-size:16px; cursor:pointer; }
  .tv-chat-box .msgs{ max-height:300px; min-height:120px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:12px; }
  .tv-chat-box .m{ display:flex; flex-direction:column; gap:2px; align-items:flex-start; } .tv-chat-box .m.me{ align-items:flex-end; }
  .tv-chat-box .m span.n{ font-size:11px; color:var(--gold); }
  .tv-chat-box .m p{ margin:0; max-width:88%; padding:7px 10px; border-radius:10px; background:var(--ink-1); border:1px solid var(--line); font-size:13px; line-height:1.45; word-break:break-word; position:relative; }
  .tv-chat-box .m time{ margin-left:8px; font-size:10.5px; color:var(--text-2); white-space:nowrap; vertical-align:1px; }
  .tv-chat-box .day{ align-self:center; margin:4px 0 2px; padding:2px 10px; border-radius:999px; background:var(--ink-1); border:1px solid var(--line); font-size:11px; color:var(--text-2); }
  .tv-chat-box .m.me p{ background:var(--ink-2); }
  .tv-chat-box .m .del{ margin-left:6px; border:0; background:none; color:var(--text-2); font-size:11px; cursor:pointer; }
  .tv-chat-box .empty{ margin:auto; font-size:12.5px; color:var(--text-2); text-align:center; }
  .tv-chat-box .send{ display:flex; gap:8px; padding:10px 12px; border-top:1px solid var(--line); }
  .tv-chat-box .send input{ flex:1; min-width:0; padding:9px 10px; border-radius:8px; border:1px solid var(--line); background:var(--ink-1); color:var(--text-0); font:inherit; font-size:13px; }
  .tv-chat-box .send button{ width:38px; height:38px; border-radius:8px; border:1px solid var(--frost-0); background:var(--frost-0); color:#1a0d06; display:grid; place-items:center; cursor:pointer; }
  @media (max-width:760px){ .tv-chat{ right:10px; bottom:76px; } .tv-chat-box{ width:calc(100vw - 20px); } .tv-chat-box .msgs{ max-height:45vh; } }
  /* ===== Accueil de la Taverne ===== */
  .th-welcome{ display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:10px; border:1px solid #3a6bd6; background:rgba(58,107,214,.12); margin-bottom:14px; }
  .th-welcome[hidden], .th-event[hidden], .th-box[hidden]{ display:none; }
  .th-welcome .i{ width:24px; height:24px; border-radius:50%; border:2px solid #9cc4ff; color:#9cc4ff; display:grid; place-items:center; font-weight:700; font-size:13px; flex:none; }
  .th-welcome .t{ flex:1; font-size:13.5px; } .th-x{ border:0; background:none; color:var(--text-2); font-size:18px; cursor:pointer; }
  .th-quick{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
  .th-q{ display:flex; flex-direction:column; gap:4px; padding:12px; border-radius:10px; background:var(--ink-1); border:1px solid var(--line); }
  .th-q b{ font-family:'Cinzel',serif; font-size:22px; color:var(--text-0); } .th-q span{ font-size:12px; color:var(--text-2); } .th-q svg{ color:var(--gold); }
  .th-q.gemq{ border-color:rgba(183,132,255,.5); } .th-q.gemq .gem{ display:flex; } .th-q.gemq .gem svg{ color:#b784ff; } .th-q.gemq b{ color:#e9d9ff; }
  .th-event{ display:flex; align-items:center; gap:14px; padding:14px 16px; border-radius:12px; border:1px solid #c9531a; background:linear-gradient(90deg,#2a1208,var(--ink-1)); margin-bottom:14px; }
  .th-event .ic{ width:58px; height:58px; border-radius:12px; display:grid; place-items:center; background:linear-gradient(135deg,#c9531a,#6d1a02); color:#ffe3a0; flex:none; }
  .th-event .k{ font-size:11px; font-weight:700; letter-spacing:.08em; color:#ff9a2e; } .th-event b{ display:block; font-family:'Cinzel',serif; font-size:19px; color:var(--text-0); }
  .th-event .d{ font-size:13px; color:var(--text-1); } .th-event > div{ flex:1; }
  .th-grid{ display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:16px; align-items:start; }
  .th-col{ display:flex; flex-direction:column; gap:16px; }
  .th-box{ background:var(--ink-1); border:1px solid var(--line); border-radius:12px; padding:16px; display:flex; flex-direction:column; gap:12px; }
  .th-h{ display:flex; align-items:center; gap:10px; } .th-h b{ font-family:'Cinzel',serif; font-size:17px; color:var(--text-0); } .th-h svg{ color:var(--gold); } .th-h small{ margin-left:auto; font-size:12px; color:var(--text-2); }
  .th-m{ display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:10px; background:var(--ink-0); border:1px solid var(--line); }
  .th-m .mt{ flex:1; display:flex; flex-direction:column; gap:5px; min-width:0; } .th-m .mt div{ display:flex; justify-content:space-between; gap:8px; font-size:13.5px; } .th-m .mt span{ color:var(--text-2); }
  .th-bar{ height:6px; border-radius:3px; background:#2a140c; overflow:hidden; } .th-bar i{ display:block; height:100%; background:linear-gradient(90deg,#c9531a,#ffb13c); }
  .th-m.done .th-bar i{ background:linear-gradient(90deg,#2f7d3a,#6fcf6f); }
  .th-gem{ display:inline-flex; align-items:center; gap:4px; font-weight:700; color:#c9a7ff; font-size:13px; white-space:nowrap; }
  .th-ok{ width:28px; height:28px; border-radius:50%; display:grid; place-items:center; background:var(--ink-2); border:1px solid var(--line); color:#fff; flex:none; }
  .th-m.done .th-ok{ background:#2f7d3a; border-color:#6fcf6f; }
  .th-m .go{ padding:5px 10px; font-size:12px; }
  .th-bonus{ display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:10px; border:1px dashed var(--gold-dim); font-size:13px; color:var(--text-1); }
  .th-chest{ display:flex; align-items:center; gap:16px; }
  .th-chest .ic{ width:92px; height:78px; border-radius:10px; display:grid; place-items:center; background:radial-gradient(circle, rgba(232,163,61,.35), transparent 70%), var(--ink-2); color:#ffd27a; box-shadow:0 0 22px rgba(232,163,61,.4); flex:none; }
  .th-chest .ic.open{ box-shadow:none; opacity:.55; }
  .th-lv{ display:flex; align-items:center; gap:14px; }
  .th-lv .n{ width:56px; height:56px; border-radius:50%; display:grid; place-items:center; border:3px solid var(--gold); font-family:'Cinzel',serif; font-weight:900; font-size:22px; color:var(--gold); background:var(--ink-2); flex:none; }
  .th-lv .t{ flex:1; display:flex; flex-direction:column; gap:6px; } .th-lv .t div{ display:flex; justify-content:space-between; font-size:13px; } .th-lv small{ font-size:12px; color:var(--text-2); }
  .th-lv .th-bar{ height:10px; border-radius:5px; } .th-lv .th-bar i{ background:linear-gradient(90deg,#c9531a,#ffd27a); }
  .th-feedbox{ margin-top:16px; }
  .th-f{ display:flex; gap:12px; align-items:flex-start; padding:9px 0; border-bottom:1px solid var(--line); }
  .th-f:last-child{ border-bottom:0; }
  .th-f .av{ width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:var(--ink-2); border:1px solid var(--line); flex:none; }
  .th-f .tx{ flex:1; font-size:13.5px; line-height:1.5; } .th-f .tx small{ display:block; font-size:11.5px; color:var(--text-2); }
  .th-f.fresh{ animation:thfresh 1.2s ease-out; } @keyframes thfresh{ from{ background:rgba(232,163,61,.22) } to{ background:transparent } }
  .th-goal-t{ font-size:15px; font-weight:700; color:var(--text-0); }
  .th-goal .th-bar{ height:14px; border-radius:7px; } .th-goal .th-bar i{ background:linear-gradient(90deg,#c9531a,#ffd27a); }
  .th-goal-row{ display:flex; justify-content:space-between; gap:8px; font-size:13px; color:var(--text-1); flex-wrap:wrap; }
  .th-xp{ border-top:1px solid var(--line); padding-top:10px; }
  .th-xp > summary{ cursor:pointer; list-style:none; display:flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:var(--text-1); }
  .th-xp > summary::-webkit-details-marker{ display:none; }
  .th-xp > summary::before{ content:''; width:6px; height:6px; border-right:2px solid var(--text-2); border-bottom:2px solid var(--text-2); transform:rotate(-45deg); transition:transform .2s; }
  .th-xp[open] > summary::before{ transform:rotate(45deg); }
  .th-xp table{ width:100%; border-collapse:collapse; margin-top:8px; font-size:12.5px; }
  .th-xp td{ padding:5px 4px; border-bottom:1px solid var(--line); color:var(--text-1); } .th-xp td:last-child{ text-align:right; color:var(--gold); font-weight:600; white-space:nowrap; }
  .th-xp p{ margin:8px 0 0; font-size:12.5px; color:var(--text-2); line-height:1.55; }
  .tv-game-tab .tv-new{ margin-left:6px; font-size:9.5px; font-weight:700; padding:1px 6px; border-radius:999px; background:#3a6bd6; color:#fff; vertical-align:2px; letter-spacing:.03em; }
  @media (max-width:760px){ .th-quick{ grid-template-columns:repeat(2,minmax(0,1fr)); } .th-grid{ grid-template-columns:1fr; } .th-welcome{ flex-wrap:wrap; } }




  /* Confort mobile : plein écran, invitation à tourner l'écran, commandes plus grosses */
  .tv-fs{ display:none; position:absolute; top:8px; right:8px; z-index:12; width:38px; height:38px; border-radius:9px; border:1px solid var(--gold-dim); background:rgba(20,12,7,.85); color:var(--gold); align-items:center; justify-content:center; cursor:pointer; }
  .tv-rotate{ display:none; position:absolute; inset:0; z-index:14; flex-direction:column; align-items:center; justify-content:center; gap:10px; text-align:center; padding:20px; background:rgba(10,6,4,.92); color:var(--text-1); }
  .tv-rotate b{ font-family:'Cinzel',serif; font-size:19px; color:var(--text-0); } .tv-rotate span{ font-size:13px; max-width:280px; } .tv-rotate svg{ color:var(--gold); }
  @media (hover:none) and (max-width:900px){
    .tv-fs{ display:flex; }
    .tv-rotate:not([hidden]){ display:flex; }
    .tv-spell{ min-height:96px; padding:12px 6px 10px !important; }
    .tv-spell .sico{ width:66px; height:66px; }
    .tv-spell .sname{ font-size:14px; }
    .tv-pads button{ min-height:78px; font-size:15px; }
    #cd-hand .cdc, #cd-me-board .cdc{ touch-action:manipulation; }
    .tv-stage:fullscreen, .tv-stage:-webkit-full-screen{ padding:0; border-radius:0; display:flex; flex-direction:column; justify-content:center; background:var(--ink-0); }
  }
  .tv-stage:fullscreen{ display:flex; flex-direction:column; justify-content:center; align-items:stretch; overflow:auto; }
  .tv-stage:fullscreen .tv-canvas{ display:block; margin:0 auto; }
  /* Mode difficile */
  .tv-diff{ display:inline-flex; gap:3px; padding:4px; border-radius:10px; border:1px solid var(--line); background:var(--ink-0); }
  .tv-diff button{ padding:6px 14px; border:0; border-radius:7px; background:transparent; color:var(--text-2); font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
  .tv-diff button[aria-pressed="true"]{ background:var(--ink-2); color:var(--text-0); box-shadow:inset 0 0 0 1px var(--gold-dim); }
  .tv-diff button[data-d="1"][aria-pressed="true"]{ background:#3a0f0a; color:#ff8a6a; box-shadow:inset 0 0 0 1px #ff5a3c; }
  /* Accueil : extensions */
  .th-notes{ display:flex; flex-direction:column; gap:6px; margin-bottom:14px; }
  .th-note{ display:flex; gap:10px; align-items:center; padding:10px 14px; border-radius:10px; border:1px solid var(--gold-dim); background:rgba(232,163,61,.1); font-size:13.5px; }
  .th-note button{ margin-left:auto; }
  .th-titles{ display:flex; flex-direction:column; gap:6px; }
  .th-ti{ display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; background:var(--ink-0); border:1px solid var(--line); font-size:13px; }
  .th-ti.on{ border-color:var(--gold); } .th-ti b{ flex:1; } .th-ti.lock{ opacity:.55; } .th-ti small{ color:var(--text-2); }
  .th-shop{ display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:10px; }
  .th-it{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:12px; border-radius:10px; background:var(--ink-0); border:1px solid var(--line); text-align:center; }
  .th-it.eq{ border-color:var(--gold); box-shadow:0 0 12px rgba(232,163,61,.3); }
  .th-it .pv{ width:60px; height:80px; border-radius:8px; }
  .th-it b{ font-size:13px; } .th-it small{ font-size:11.5px; color:var(--text-2); }
  .th-it button{ padding:5px 10px; font-size:12px; }
  .th-tr{ display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--line); font-size:13.5px; } .th-tr:last-child{ border-bottom:0; }
  .th-tr .r{ width:24px; color:var(--text-2); } .th-tr b{ flex:1; } .th-tr span{ font-family:'IBM Plex Mono',monospace; }
  .th-hist-tabs{ display:flex; gap:6px; flex-wrap:wrap; }
  .th-hist-tabs button{ padding:5px 10px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--text-1); font:inherit; font-size:12px; cursor:pointer; }
  .th-hist-tabs button[aria-pressed="true"]{ border-color:var(--gold); color:var(--text-0); }
  .th-hist > svg{ width:100%; height:auto; }
  .th-row2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:16px; }
  @media (max-width:760px){ .th-row2{ grid-template-columns:1fr; } }
  /* Classement : titres et défi */
  .tv-rk .ttl{ margin-left:6px; font-size:11.5px; font-style:italic; color:#ffd27a; font-weight:400; }
  .tv-rk .beat{ margin-left:8px; padding:2px 8px; border-radius:999px; border:1px solid var(--gold-dim); background:transparent; color:var(--gold); font:inherit; font-size:11px; font-weight:700; cursor:pointer; }
  .tv-rk .beat:hover{ border-color:var(--gold); }
  /* Admin — Offrir des boosters */
  .gift-grid{ display:grid; grid-template-columns:minmax(0,480px) minmax(0,1fr); gap:16px; align-items:start }
  .gift-box{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:16px; display:flex; flex-direction:column; gap:14px }
  .gift-box h3{ margin:0; font-family:'Cinzel',serif; font-size:16px; color:var(--text-0) }
  .gift-box .l{ display:block; font-size:12px; color:var(--text-2); margin:0 0 5px }
  .gift-sugg{ display:flex; flex-wrap:wrap; gap:5px; margin-top:6px }
  .gift-sugg button, .gift-chip{ font:inherit; font-size:12.5px; border-radius:999px; padding:3px 10px; border:1px solid var(--line); background:transparent; color:var(--text-1); cursor:pointer }
  .gift-chip{ background:var(--ink-2); border-color:var(--gold-dim); color:var(--text-0) }
  .gift-packs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(88px,1fr)); gap:8px }
  .gift-packs button{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:8px 4px; border-radius:8px; border:1px solid var(--line); background:var(--ink-0); color:var(--text-0); font:inherit; font-size:12px; cursor:pointer }
  .gift-packs button[aria-pressed="true"]{ border-color:var(--gold); background:var(--ink-2) }
  .gift-packs img{ height:56px } .gift-packs .spk > img.body{ height:56px; width:auto }
  .gift-sum{ padding:10px; border-radius:6px; border:1px dashed var(--line); background:var(--ink-0); font-size:13px; color:var(--text-1) }
  .gift-hist td, .gift-hist th{ white-space:nowrap } .gift-hist td.m{ white-space:normal; color:var(--text-1) }
  .gift-st{ font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; padding:2px 7px; border-radius:3px; border:1px solid var(--line); color:var(--text-2) }
  .gift-st.on{ color:var(--ok); border-color:color-mix(in srgb,var(--ok) 50%,transparent) } .gift-st.off{ color:var(--danger); border-color:color-mix(in srgb,var(--danger) 50%,transparent) }
  @media (max-width:900px){ .gift-grid{ grid-template-columns:1fr } }
  /* Admin — rang Cendre */
  .cendre-dot{ display:inline-block; width:9px; height:9px; border-radius:50%; background:#a64df0; box-shadow:0 0 6px rgba(166,77,240,.8); margin-right:6px; vertical-align:1px; }
  .admin-cendre{ margin-top:26px; padding-top:18px; border-top:1px solid var(--line); }
  .admin-cendre h3{ font-family:'Cinzel',serif; font-size:17px; color:var(--text-0); margin:0 0 6px; }
  .admin-cendre .hint{ font-size:12.5px; color:var(--text-2); margin:0 0 10px; max-width:700px; line-height:1.55; }
  .admin-cendre-list{ display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:4px 12px; max-height:280px; overflow-y:auto; padding-right:6px; }
  .admin-cendre-list label{ display:flex; align-items:center; gap:8px; font-size:13.5px; color:var(--text-1); }
  .admin-cendre-list label[hidden]{ display:none; }
  .admin-cendre-st{ display:inline-block; margin-top:8px; font-size:12px; }
  /* Admin — Personnage de la carte TCG */
  .admin-tcgmain{ margin-top:30px; padding-top:20px; border-top:1px solid var(--line); }
  .admin-tcgmain h3{ font-family:'Cinzel',serif; font-size:18px; color:var(--text-0); margin:0 0 6px; }
  .admin-tcgmain .hint{ font-size:13px; color:var(--text-2); max-width:760px; margin:0 0 12px; line-height:1.55; }
  .admin-tcgmain-t{ border-collapse:collapse; min-width:560px; font-size:13.5px; }
  .admin-tcgmain-t th{ text-align:left; font-size:12px; color:var(--text-2); font-weight:500; padding:6px 10px; }
  .admin-tcgmain-t td{ padding:6px 10px; border-top:1px solid var(--line); }
  .admin-tcgmain-t select{ background:var(--ink-1); color:var(--text-0); border:1px solid var(--line); border-radius:6px; padding:6px 8px; font:inherit; min-width:280px; }
  .admin-tcgmain-t .st{ font-size:12px; white-space:nowrap; }

  /* Duel : sorts des full art */
  .cdc .pw{ position:absolute; top:-7px; right:-7px; min-width:22px; height:22px; padding:0 4px; box-sizing:border-box; border-radius:11px; background:#1a1410; border:1.5px solid #8a7a5a; color:#d8c8a8; font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center; z-index:3; }
  /* ===== Duel de cartes V4 (v393) : relief, éventail, effets, décors ===== */
  #cd-table .cdc, #cd-hand .cdc{ transform-style:preserve-3d; --rx:0deg; --ry:0deg; --mx:50%; --my:50%; }
  #cd-table .cdc .in, #cd-hand .cdc .in{ transform:perspective(600px) rotateX(var(--rx)) rotateY(var(--ry)); transition:transform .18s ease-out; }
  .cdc .in .shine{ position:absolute; inset:0; z-index:3; pointer-events:none; opacity:0; transition:opacity .2s; mix-blend-mode:overlay; background:radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.5), transparent 55%); }
  .cdc:hover .in .shine{ opacity:1; }
  .cdc .art img{ transition:transform .18s ease-out; }
  #cd-table .cdc:hover .art img, #cd-hand .cdc:hover .art img{ transform:scale(1.08) translate(calc((50% - var(--mx)) * .06), calc((50% - var(--my)) * .06)); }
  .cdc > .stats{ position:absolute; left:-7px; right:-7px; bottom:-9px; margin:0; display:flex; justify-content:space-between; padding:0; z-index:6; transform:translateZ(30px); pointer-events:none; }
  .cdc > .stats .atk, .cdc > .stats .hp{ height:25px; min-width:25px; justify-content:center; border-width:2px; box-shadow:0 3px 8px rgba(0,0,0,.65); }
  .cdc > .stats .atk{ background:radial-gradient(circle at 35% 30%, #4a3008, #120a02); }
  .cdc > .stats .hp{ background:radial-gradient(circle at 35% 30%, #4a0d08, #120302); }
  .cdc .in{ padding-bottom:14px; box-sizing:border-box; }
  .cdc .cost, .cdc .pw{ transform:translateZ(30px); }
  .cdc .tt{ position:absolute; top:-12px; left:-10px; width:30px; height:33px; z-index:7; pointer-events:none; transform:translateZ(30px); filter:drop-shadow(0 2px 3px #000); }
  .cdc .tt svg{ width:100%; height:100%; display:block; }
  .cdc .tt b{ position:absolute; left:0; right:0; top:50%; transform:translateY(-50%); text-align:center; font:900 13px Inter, system-ui, sans-serif; color:#1a1208; text-shadow:0 1px 0 rgba(255,255,255,.5); }
  .cdc .tt.last svg path:first-child{ fill:#d0763a; } .cdc .tt.last{ animation:cdttlast 1s ease-in-out infinite; }
  @keyframes cdttlast{ 50%{ filter:drop-shadow(0 0 7px #ff7a2a); } }
  /* main en éventail */
  #cd-hand{ flex-wrap:nowrap; gap:0; padding-top:20px; }
  #cd-hand .cdc{ margin:0 -12px; transform:translateY(var(--y,0px)) rotate(var(--r,0deg)); transition:transform .25s cubic-bezier(.2,.9,.25,1.15), filter .3s; }
  #cd-hand .cdc:hover, #cd-hand .cdc:focus-visible{ transform:translateY(-28px) rotate(0deg) scale(1.12); z-index:40 !important; }
  #cd-hand.op-turn .cdc{ transform:translateY(var(--y,0px)) rotate(var(--r,0deg)) scale(.96); }
  @media (max-width:700px){ #cd-hand .cdc{ margin:0 -18px; } #cd-hand .cdc:hover{ transform:translateY(-18px) scale(1.06); } }
  /* effets */
  .cd-cfx{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:16; border-radius:14px; }
  .cd-spot{ position:absolute; inset:0; pointer-events:none; z-index:12; border-radius:14px; opacity:0; background:radial-gradient(150px circle at var(--hx) var(--hy), transparent 0, rgba(0,0,0,.8) 100%); }
  .cd-sweep{ position:absolute; top:0; bottom:0; width:240px; left:-280px; pointer-events:none; z-index:17; background:linear-gradient(90deg, transparent, rgba(255,210,140,.16), transparent); transform:skewX(-18deg); }
  .cd-bigturn span{ color:#ffe1a0; background:linear-gradient(90deg, transparent, rgba(10,5,2,.9) 20%, rgba(10,5,2,.9) 80%, transparent); border-top:2px solid; border-bottom:2px solid; border-image:linear-gradient(90deg, transparent, #ffcf6a, transparent) 1; text-shadow:0 0 18px rgba(255,170,60,.85), 0 3px 0 #3a1404; letter-spacing:.04em; }
  /* plateaux peints */
  .cd-table[data-decor]:not([data-decor=""]) .cd-hero{ background:rgba(12,7,4,.78); }
  .cd-table[data-decor]:not([data-decor=""]) .cd-slot{ background:rgba(0,0,0,.25); border-color:rgba(255,255,255,.12); }
  /* dos de cartes (main adverse et boutique) */
  .bkx{ position:relative; overflow:hidden; }
  [data-back="back-phenix"] #cd-op-hand .bkx, .bkx[data-back="back-phenix"]{ border-color:#ffb13c; background:radial-gradient(circle at 50% 42%, #ffcf6a 0, #ff7a1a 22%, #6d1a02 62%, #2a0a02 100%); box-shadow:inset 0 0 0 2px #2a0a02, inset 0 0 0 3px #ffcf6a; }
  [data-back="back-givre"] #cd-op-hand .bkx, .bkx[data-back="back-givre"]{ border-color:#bfe6ff; background:repeating-conic-gradient(from 0deg at 50% 45%, rgba(190,230,255,.22) 0deg 8deg, transparent 8deg 30deg), radial-gradient(circle at 50% 45%, #9fdcff 0, #2a6a9a 35%, #0b2238 75%); box-shadow:inset 0 0 0 2px #0b2238, inset 0 0 0 3px #bfe6ff; }
  [data-back="back-ombre"] #cd-op-hand .bkx, .bkx[data-back="back-ombre"]{ border-color:#b784ff; background:conic-gradient(from 0deg at 50% 45%, #2a0f4a, #6a3ab0, #12051f, #8a5ad8, #2a0f4a); box-shadow:inset 0 0 0 2px #12051f, inset 0 0 0 3px #b784ff, inset 0 0 18px #000; }
  /* cadres de portrait */
  [data-frame="frame-or"] #cd-me-hero .face, .frx[data-frame="frame-or"]{ border-color:#ffd35a; box-shadow:0 0 0 3px #3a2404, 0 0 0 5px #ffd35a, 0 0 18px rgba(255,211,90,.55); }
  [data-frame="frame-feu"] #cd-me-hero .face, .frx[data-frame="frame-feu"]{ border-color:#ff7a2a; animation:cdfirefr 1.4s ease-in-out infinite; }
  @keyframes cdfirefr{ 0%,100%{ box-shadow:0 0 0 2px #2a0802, 0 0 16px 3px rgba(255,90,26,.7); } 50%{ box-shadow:0 0 0 2px #2a0802, 0 0 26px 7px rgba(255,140,40,.85); } }
  /* boutique de cristaux */
  .th-it{ transition:transform .22s cubic-bezier(.2,.9,.3,1.2), border-color .2s, box-shadow .22s; }
  .th-it:hover{ transform:translateY(-4px); border-color:#6a4426; box-shadow:0 10px 22px rgba(0,0,0,.45); }
  .th-it .pv.pvb{ width:128px; height:80px; border-radius:8px; background-size:cover; background-position:center; box-shadow:inset 0 0 0 1px rgba(255,255,255,.12), 0 6px 14px rgba(0,0,0,.5); }
  .th-it .pv.bkx{ width:56px; height:78px; border-radius:7px; border:2px solid #8a5426; background:radial-gradient(circle at 50% 45%, #4a220e, #170a04 70%); transition:transform .3s cubic-bezier(.2,.9,.3,1.2); }
  .th-it:hover .pv.bkx{ transform:rotate(-6deg) translateY(-3px); }
  .th-it .pv.frx{ width:64px; height:64px; border-radius:50%; overflow:hidden; border:2px solid var(--gold-dim); }
  .th-it .pv.frx img{ width:100%; height:100%; object-fit:cover; display:block; }
  @media (prefers-reduced-motion:reduce){ #cd-table .cdc .in, #cd-hand .cdc, .cdc .tt.last, [data-frame="frame-feu"] #cd-me-hero .face, .frx[data-frame="frame-feu"]{ transition:none !important; animation:none !important; } }
  /* ===== Table V4 (v394) : mise en page de la maquette ===== */
  .cd-table.v4{ padding-bottom:20px; }
  .cd-table.v4 .cd-hand{ padding-bottom:16px; }
  .cd-table.v4 .cd-mana{ flex-wrap:nowrap; }
  .cd-table.v4 #cd-me-hero .who{ min-width:150px; }
  .cd-table.v4 .cd-mana i{ width:13px !important; height:13px !important; }
  .cd-table.v4 .cd-mana{ gap:5px; }
  .cd-table.v4 #cd-me-hero{ align-items:flex-end; }
  .cd-table.v4[data-decor] .cd-hero{ background:none; }
  .cd-table.v4 .cd-hero .who{ padding:6px 10px; border-radius:10px; background:linear-gradient(90deg, rgba(10,6,3,.72), rgba(10,6,3,0)); }
  .cd-table.v4 .cdc .art, .cd-table.v4 ~ * .cdc .art{ margin:17px 6px 0; height:70px; border-radius:6px; }
  #cd-table .cdc .art img, #cd-hand .cdc .art img{ width:100%; height:100%; border-radius:6px; border:0; object-fit:cover; box-shadow:inset 0 0 0 1px rgba(0,0,0,.4); }
  #cd-table .cdc .art::before{ content:''; position:absolute; inset:0; z-index:1; pointer-events:none; border-radius:6px; box-shadow:inset 0 -16px 16px rgba(0,0,0,.45), inset 0 0 0 1px color-mix(in srgb, var(--cc) 55%, #000); }
  #cd-table .cdc .rk{ left:0; right:0; top:3px; text-align:center; font-size:8.5px; letter-spacing:.14em; }
  #cd-table .cdc .nm{ text-align:center; padding-top:4px; } #cd-table .cdc .ab{ text-align:center; }
  .cd-table.v4{ display:flex; flex-direction:column; gap:4px; padding:14px 16px 8px; overflow:hidden; border-color:#3a2414;
    background:radial-gradient(ellipse 60% 40% at 50% 50%, rgba(255,120,40,.10), transparent 70%), radial-gradient(ellipse at 50% 55%, #2e170b 0%, #1a0d07 45%, #080403 100%); box-shadow:inset 0 0 120px rgba(0,0,0,.85); }
  .cd-rune{ position:absolute; left:50%; top:50%; width:min(560px,90%); aspect-ratio:1; transform:translate(-50%,-50%); opacity:.1; pointer-events:none; z-index:0; animation:cdrune 120s linear infinite; }
  @keyframes cdrune{ to{ transform:translate(-50%,-50%) rotate(360deg); } }
  .cd-table[data-decor]:not([data-decor=""]) .cd-rune{ display:none; }
  .cd-light{ position:absolute; inset:0; pointer-events:none; z-index:1; background:radial-gradient(380px circle at var(--lx,50%) var(--ly,50%), rgba(255,170,90,.12), transparent 70%); }
  .cd-table.v4 .cd-top, .cd-table.v4 .cd-row, .cd-table.v4 .cd-mid, .cd-table.v4 .cd-bottom{ position:relative; z-index:3; }
  .cd-top{ display:flex; justify-content:center; }
  /* héros : portrait rond, anneau de moral, pastille de moral */
  .cd-table.v4 .cd-hero{ background:none; border:0; padding:0; gap:14px; box-shadow:none !important; filter:none; }
  .cd-table.v4 .cd-hero .face{ position:relative; overflow:visible; width:78px; height:78px; border:0; font-size:30px; color:#f3e6d6; background:none; flex:none; }
  .cd-table.v4 .cd-hero .face .por{ position:absolute; inset:7px; border-radius:50%; display:grid; place-items:center; background:radial-gradient(circle at 35% 30%, #4a2a14, #140a05 75%); box-shadow:0 0 0 2px #0b0705, 0 8px 20px rgba(0,0,0,.6); }
  .cd-table.v4 #cd-me-hero .face .por{ color:var(--gold); }
  .cd-hero .face .ring{ position:absolute; inset:0; width:100%; height:100%; transform:rotate(-90deg); pointer-events:none; }
  .cd-hero .face .ring circle{ fill:none; stroke:rgba(255,255,255,.08); stroke-width:5; }
  .cd-hero .face .ring .hpr{ stroke:#e8433a; stroke-dasharray:276.5; stroke-dashoffset:0; stroke-linecap:round; transition:stroke-dashoffset .5s ease-out; }
  .cd-table.v4 #cd-me-hero .ring .hpr{ stroke:#e8a33d; }
  .cd-table.v4 .cd-hero .face svg.crack{ inset:7px; width:calc(100% - 14px); height:calc(100% - 14px); left:7px; top:7px; }
  .cd-table.v4 .cd-hero .hpnum{ position:absolute; left:50%; bottom:-10px; transform:translateX(-50%); min-width:40px; padding:2px 8px; border-radius:12px; text-align:center; font:800 15px Inter, system-ui, sans-serif; color:#fff; text-shadow:0 1px 2px #000; background:radial-gradient(circle at 35% 30%, #ff8f7a, #b3231a 60%, #4a0905); border:2px solid #0b0705; z-index:2; }
  .cd-table.v4 .cd-hero .hpbar{ display:none; }
  .cd-table.v4 .cd-hero .who b{ font-size:15px; text-shadow:0 1px 3px #000; } .cd-table.v4 .cd-hero .who span{ text-shadow:0 1px 2px #000; }
  .cd-table.v4 .cd-hero .flash{ inset:7px auto auto 7px; width:64px; height:64px; border-radius:50%; }
  .cd-table.v4 .cd-hero.target{ border:0; box-shadow:none; }
  .cd-table.v4 .cd-hero.target .face .por{ box-shadow:0 0 0 3px rgba(255,90,60,.9), 0 0 26px rgba(255,60,40,.75); cursor:crosshair; }
  .cd-table.v4.my-turn #cd-me-hero .face .por{ box-shadow:0 0 0 2px #e8a33d, 0 0 24px rgba(232,163,61,.55); }
  .cd-table.v4.op-turn #cd-op-hero .face .por{ box-shadow:0 0 0 2px #e05a4a, 0 0 24px rgba(224,90,74,.5); }
  .cd-table.v4.my-turn #cd-op-board, .cd-table.v4.my-turn #cd-op-hero, .cd-table.v4.op-turn #cd-me-board, .cd-table.v4.op-turn #cd-me-hero{ filter:saturate(.85) brightness(.9); }
  .cd-table.v4.my-turn #cd-me-board, .cd-table.v4.op-turn #cd-op-board{ background:none; }
  .cd-table.v4 .cd-ophand{ align-self:flex-start; margin-top:6px; } .cd-table.v4 .cd-ophand span{ width:30px; height:42px; margin-left:-10px; border-radius:5px; border:1.5px solid #8a5426; box-shadow:0 4px 10px rgba(0,0,0,.6); background:radial-gradient(circle at 50% 45%, #4a220e, #170a04 70%); }
  .cd-table.v4 .cd-ophand span:nth-child(odd){ transform:rotate(-4deg); } .cd-table.v4 .cd-ophand span:nth-child(even){ transform:rotate(4deg); }
  /* plateaux et ligne centrale */
  .cd-table.v4 .cd-row{ min-height:176px; gap:16px; border:0; }
  .cd-table.v4 .cd-slot{ background:rgba(0,0,0,.2); border:0; box-shadow:inset 0 0 0 1px rgba(255,190,120,.09); border-radius:11px; }
  .cd-table.v4 .cd-mid{ padding:6px 4px; gap:12px; }
  .cd-table.v4 .cd-mid::before{ content:''; position:absolute; left:8%; right:8%; top:50%; height:2px; background:linear-gradient(90deg, transparent, rgba(255,170,90,.55), transparent); box-shadow:0 0 18px rgba(255,140,60,.5); pointer-events:none; }
  .cd-table.v4 .cd-turnbar{ margin:0; position:relative; z-index:1; flex:none; }
  .cd-table.v4 .cd-log{ position:relative; z-index:1; text-align:center; text-shadow:0 1px 3px #000; }
  .cd-table.v4 .cd-endw{ position:relative; z-index:1; }
  .cd-table.v4 #cd-end{ font:800 13px Inter, system-ui, sans-serif; letter-spacing:.05em; text-transform:uppercase; color:#1a0c04; padding:10px 20px; border-radius:22px; border:2px solid #0b0705; background:linear-gradient(180deg, #ffd27a, #e08a2a); box-shadow:0 6px 16px rgba(0,0,0,.5); transition:transform .15s, filter .2s; }
  .cd-table.v4 #cd-end:hover:not(:disabled){ transform:translateY(-2px); }
  .cd-table.v4 #cd-end.pulse{ background:linear-gradient(180deg, #8dffaa, #2fbf5a); animation:cdendgo 1.4s ease-in-out infinite; }
  @keyframes cdendgo{ 50%{ box-shadow:0 0 0 4px rgba(93,255,138,.25), 0 0 26px rgba(93,255,138,.7); } }
  .cd-table.v4 #cd-end:disabled{ filter:grayscale(1) brightness(.6); }
  /* bas : héros, main, pioche */
  .cd-bottom{ display:grid; grid-template-columns:minmax(170px, auto) 1fr 80px; align-items:end; gap:10px; margin-top:4px; }
  .cd-table.v4 .cd-hand{ margin:0; min-height:178px; padding-top:30px; align-items:flex-end; }
  .cd-table.v4 .cd-mana{ margin-top:7px; gap:6px; flex-wrap:wrap; }
  .cd-table.v4 .cd-mana i{ width:15px; height:15px; border-radius:3px; border:0; background:#13202f; box-shadow:inset 0 0 0 1px #2d4a6a; }
  .cd-table.v4 .cd-mana i.full{ background:radial-gradient(circle at 35% 30%, #d6efff, #3a8df0 55%, #0d2c66); box-shadow:0 0 10px rgba(80,160,255,.75), inset 0 0 0 1px #9fd0ff; }
  .cd-deck{ position:relative; width:62px; height:86px; justify-self:end; margin-bottom:22px; }
  .cd-deck span{ position:absolute; inset:0; border-radius:7px; border:1.5px solid #8a5426; background:radial-gradient(circle at 50% 45%, #4a220e, #170a04 70%); box-shadow:0 4px 10px rgba(0,0,0,.5); }
  .cd-deck span:nth-child(1){ transform:translate(4px,4px); } .cd-deck span:nth-child(2){ transform:translate(2px,2px); }
  .cd-deck b{ position:absolute; left:-10px; right:-10px; bottom:-20px; text-align:center; font:600 11px Inter, system-ui, sans-serif; color:var(--text-2); }
  [data-back="back-phenix"] .cd-deck .bkx{ border-color:#ffb13c; background:radial-gradient(circle at 50% 42%, #ffcf6a 0, #ff7a1a 22%, #6d1a02 62%, #2a0a02 100%); }
  [data-back="back-givre"] .cd-deck .bkx{ border-color:#bfe6ff; background:repeating-conic-gradient(from 0deg at 50% 45%, rgba(190,230,255,.22) 0deg 8deg, transparent 8deg 30deg), radial-gradient(circle at 50% 45%, #9fdcff 0, #2a6a9a 35%, #0b2238 75%); }
  [data-back="back-ombre"] .cd-deck .bkx{ border-color:#b784ff; background:conic-gradient(from 0deg at 50% 45%, #2a0f4a, #6a3ab0, #12051f, #8a5ad8, #2a0f4a); }
  /* cartes posées qui respirent */
  #cd-op-board .cdc, #cd-me-board .cdc{ animation:cdbreathe 4.2s ease-in-out infinite; }
  #cd-op-board .cdc.enraged, #cd-me-board .cdc.enraged{ animation:cdrage 1.4s ease-in-out infinite, cdbreathe 4.2s ease-in-out infinite; }
  #cd-op-board .cdc:nth-child(2), #cd-me-board .cdc:nth-child(2){ animation-delay:-1s; } #cd-op-board .cdc:nth-child(3), #cd-me-board .cdc:nth-child(3){ animation-delay:-2s; } #cd-op-board .cdc:nth-child(4), #cd-me-board .cdc:nth-child(4){ animation-delay:-3s; }
  #cd-me-board .cdc.sel{ animation:none; }
  /* glisser-déposer */
  #cd-hand .cdc.drag{ transition:none; transform:translate(var(--dx,0px), var(--dy,0px)) rotate(var(--dr,0deg)) scale(1.1) !important; z-index:60 !important; }
  #cd-me-board.drop .cd-slot{ box-shadow:inset 0 0 0 1px rgba(93,255,138,.45), 0 0 18px rgba(93,255,138,.2); background:rgba(93,255,138,.07); }
  .cd-fly{ position:absolute; z-index:19; pointer-events:none; margin:0; }
  .cd-scorch{ position:absolute; z-index:2; pointer-events:none; border-radius:11px; background:radial-gradient(ellipse at 50% 60%, rgba(20,8,2,.9), rgba(60,20,5,.55) 45%, transparent 75%); box-shadow:inset 0 0 22px rgba(255,110,30,.35); }
  /* écran de fin */
  .cd-table.v4 .cd-over{ overflow:hidden; }
  .cd-table.v4 .cd-over::before{ content:''; position:absolute; left:50%; top:50%; width:1400px; height:1400px; margin:-700px 0 0 -700px; opacity:.32; pointer-events:none; animation:cdrune 30s linear infinite;
    background:repeating-conic-gradient(from 0deg, rgba(255,190,90,.5) 0deg 6deg, transparent 6deg 18deg); -webkit-mask:radial-gradient(circle, #000 0, transparent 55%); mask:radial-gradient(circle, #000 0, transparent 55%); }
  .cd-table.v4 .cd-over.lose::before{ display:none; }
  .cd-table.v4 .cd-over .box{ background:none; border:0; }
  .cd-table.v4 .cd-over h2{ font:900 clamp(40px,7vw,68px) Cinzel, serif; background:linear-gradient(180deg, #fff6d8, #ffcf6a 45%, #e0791e); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 4px 0 #3a1404) drop-shadow(0 0 26px rgba(255,170,60,.6)); }
  .cd-table.v4 .cd-over.lose h2{ background:linear-gradient(180deg, #e8e0d8, #9a8a7a); -webkit-background-clip:text; background-clip:text; filter:drop-shadow(0 4px 0 #1a0a04); }
  @media (max-width:760px){
    .cd-bottom{ grid-template-columns:1fr; } .cd-deck{ display:none; }
    .cd-table.v4{ padding:10px 6px 6px; }
    .cd-table.v4 .cd-hero .face{ width:60px; height:60px; font-size:22px; } .cd-table.v4 .cd-hero .face .por{ inset:6px; }
    .cd-table.v4 .cd-row{ min-height:140px; gap:8px; } .cd-table.v4 .cd-hand{ min-height:150px; }
    .cd-table.v4 .cd-mid{ flex-wrap:wrap; justify-content:center; }
  }
  @media (prefers-reduced-motion:reduce){ .cd-rune, #cd-op-board .cdc, #cd-me-board .cdc, .cd-table.v4 .cd-over::before, .cd-table.v4 #cd-end.pulse{ animation:none !important; } }
  .cd-table.v4 .cd-bottom{ grid-template-columns:minmax(230px, auto) 1fr 80px; }
  @media (max-width:1100px){ .cd-table.v4 .cd-bottom{ grid-template-columns:minmax(220px, auto) 1fr; } .cd-table.v4 .cd-deck{ display:none; } }
  @media (max-width:760px){ .cd-table.v4 .cd-bottom{ grid-template-columns:1fr; } }
  /* ===== Duel V4 (v395) : plein écran à l'échelle, animations de la maquette ===== */
  .cd-play > .cd-stage{ flex:1; min-width:0; position:relative; }
  @media (min-width:761px){
    #cd-game.cd-full{ position:relative; }
    #cd-game.cd-full .cd-play{ display:flex; gap:12px; }
    #cd-game.cd-full .cd-chat{ align-self:stretch; max-height:var(--h,760px); }
    #cd-game.cd-full .cd-stage{ flex:1; min-width:0; height:var(--h,760px); }
    #cd-game.cd-full .cd-table.v4{ position:relative; width:1080px; height:760px; margin:0 auto; zoom:var(--k,1); justify-content:space-between; }
    #cd-game.cd-full .cd-under{ flex:none; margin:0; }
    #cd-game.cd-full .cd-rules{ display:none; }
    #cd-game.cd-full .cd-chat-open{ position:absolute; top:12px; left:16px; z-index:5; }
  }
  /* carte de saison : l'illustration occupe toute la carte, nom et pouvoir en bandeau */
  .cdc.sfull .in > .art.full{ position:absolute; inset:0; margin:0 !important; height:auto !important; border-radius:7px; background-size:100% 100%; background-position:center; }
  .cdc.sfull .in > .art.full::before{ border-radius:7px !important; box-shadow:inset 0 -46px 26px -8px rgba(0,0,0,.85) !important; }
  .cdc.sfull .in{ justify-content:flex-end; } .cdc.sfull .in > .rk{ display:none; }
  .cdc.sfull .in > .nm, .cdc.sfull .in > .ab{ position:relative; z-index:2; text-shadow:0 1px 3px #000; } .cdc.sfull .in > .ab{ padding-bottom:16px; } .cdc.sfull.baked .in > .nm{ display:none; }
  body.cd-fullon .tv-wrap{ max-width:min(1500px, 100%); }
  body.cd-fullon .cd-tip, body.cd-fullon .cd-tuto{ z-index:9000; }
  /* ===== Duel : accueil (v401) ===== */
  .cdh-hero{ position:relative; border-radius:20px; overflow:hidden; min-height:290px; display:grid; grid-template-columns:1.1fr 1fr; align-items:center; border:1px solid #4a2c16;
    background:linear-gradient(90deg, rgba(10,6,3,.95) 0%, rgba(10,6,3,.75) 45%, rgba(10,6,3,.1) 100%), url('/theme/duel/crepuscule.webp') center/cover; }
  .cdh-hero::after{ content:''; position:absolute; inset:0; pointer-events:none; box-shadow:inset 0 0 80px rgba(0,0,0,.8); }
  .cdh-hero .txt{ padding:32px 36px; position:relative; z-index:2; }
  .cdh-hero .kick{ font-size:12px; letter-spacing:.3em; text-transform:uppercase; color:#ff7a2a; font-weight:700; }
  .cdh-hero h2{ font-family:'Cinzel',serif; font-size:34px; line-height:1.05; margin:8px 0 12px; background:linear-gradient(180deg,#fff2d0,#f2c46d 60%,#b8792a); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 3px 10px rgba(0,0,0,.7)); }
  .cdh-hero p{ color:#d6c6b6; max-width:460px; font-size:14px; }
  .cdh-hero .row{ display:flex; gap:10px; margin-top:18px; flex-wrap:wrap; }
  .cdh-fan{ position:relative; height:250px; z-index:2; cursor:pointer; }
  .cdh-fan .f{ position:absolute; left:50%; bottom:22px; width:104px; margin-left:-52px; transform-origin:50% 100%; transform:translateX(calc(var(--i) * 58px)) rotate(calc(var(--i) * 7deg)) translateY(calc(var(--i) * var(--i) * 6px)); transition:transform .45s cubic-bezier(.2,.9,.3,1.2); }
  .cdh-fan:hover .f{ transform:translateX(calc(var(--i) * 70px)) rotate(calc(var(--i) * 9deg)) translateY(calc(var(--i) * var(--i) * 7px - 14px)); }
  .cdh-fan .f .cdc{ width:104px; height:140px; pointer-events:none; } .cdh-fan .f .cdc .cost{ display:none; }
  .cdh-fan .lbl{ position:absolute; right:26px; top:16px; text-align:right; font-size:12px; color:var(--text-2); }
  .cdh-fan .lbl b{ display:block; font-family:'Cinzel',serif; color:#f2c46d; font-size:16px; }
  .cdh-modes{ display:grid; grid-template-columns:1.35fr 1fr 1fr; gap:14px; margin-top:14px; }
  .cdh-mode{ position:relative; overflow:hidden; border-radius:16px; padding:20px; min-height:190px; display:flex; flex-direction:column; justify-content:flex-end; border:1px solid var(--line); cursor:pointer;
    background:linear-gradient(180deg, rgba(12,7,4,.15), rgba(12,7,4,.95) 70%), var(--img) center/cover; transition:transform .25s, box-shadow .25s, border-color .25s; }
  .cdh-mode:hover, .cdh-mode:focus-visible{ transform:translateY(-4px); border-color:#8a5a2a; box-shadow:0 18px 40px -14px rgba(255,122,42,.45); outline:none; }
  .cdh-mode > *{ position:relative; z-index:1; }
  .cdh-mode h3{ font-family:'Cinzel',serif; font-size:20px; color:#fff1d6; margin:0; } .cdh-mode p{ font-size:13px; color:#cbb9a8; margin:4px 0 0; }
  .cdh-mode .ico{ position:absolute; top:16px; left:18px; width:44px; height:44px; border-radius:12px; display:grid; place-items:center; background:rgba(10,6,3,.7); border:1px solid #6a4320; color:#f2c46d; }
  .cdh-mode .tags{ display:flex; gap:6px; margin-top:12px; flex-wrap:wrap; }
  .cdh-mode.main{ border-color:#7a3f16; box-shadow:0 0 0 1px rgba(255,122,42,.25), 0 20px 50px -20px rgba(255,122,42,.5); }
  .cdh-mode.main::before{ content:''; position:absolute; inset:-40%; background:conic-gradient(from 0deg, transparent 0 70%, rgba(255,150,60,.25) 80%, transparent 90%); animation:cdhSpin 7s linear infinite; z-index:0; pointer-events:none; }
  @keyframes cdhSpin{ to{ transform:rotate(1turn); } }
  .cdh-mode .live{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:#cfe9d4; margin-top:10px; min-height:24px; }
  .cdh-mode .live > i{ width:8px; height:8px; border-radius:50%; background:#5fd18a; box-shadow:0 0 10px #5fd18a; animation:cdhPulse 1.6s infinite; } .cdh-mode .live > i.off{ background:#7a6a5e; box-shadow:none; animation:none; }
  @keyframes cdhPulse{ 50%{ opacity:.35; } }
  .cdh-mode .avs{ display:flex; margin-left:4px; } .cdh-mode .avs span{ width:24px; height:24px; border-radius:50%; margin-left:-6px; border:2px solid #120a06; background:#3a2616 center/cover; display:grid; place-items:center; font-size:11px; font-weight:700; }
  .cdh-mode .decks{ display:flex; gap:8px; margin-top:12px; } .cdh-mode .decks div{ flex:1; min-width:0; padding:7px 6px; border-radius:10px; background:rgba(10,6,3,.75); border:1px solid #4a3020; font-size:11.5px; text-align:center; color:var(--text-1); }
  .cdh-mode .decks div.on{ border-color:#f2c46d; box-shadow:0 0 14px -4px #f2c46d; } .cdh-mode .decks b{ display:block; font-family:'Cinzel',serif; font-size:12.5px; color:var(--text-0); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cdh-grid{ display:grid; grid-template-columns:1fr 1.2fr; gap:14px; margin-top:14px; }
  .cdh-panel{ background:linear-gradient(180deg,#1d120b,#150d08); border:1px solid var(--line); border-radius:16px; }
  .cdh-panel h3{ font-family:'Cinzel',serif; font-size:17px; margin:0; }
  .cdh-reward{ padding:18px 20px; display:flex; gap:18px; align-items:center; }
  .cdh-reward p{ font-size:13px; color:var(--text-2); margin:4px 0 10px; } .cdh-reward b.g{ color:#f2c46d; } .cdh-reward b.c{ color:#dcc6ff; }
  .cdh-reward .ring{ --p:0; width:104px; height:104px; border-radius:50%; flex:none; display:grid; place-items:center; position:relative; background:conic-gradient(#f2c46d calc(var(--p) * 1%), #2a1b10 0); box-shadow:0 0 30px -8px rgba(242,196,109,.5); }
  .cdh-reward .ring::before{ content:''; position:absolute; inset:9px; border-radius:50%; background:radial-gradient(circle,#24170e,#120a06); }
  .cdh-reward .ring span{ position:relative; text-align:center; font-family:'Cinzel',serif; font-weight:900; font-size:26px; line-height:1; } .cdh-reward .ring small{ display:block; font:600 11px 'Inter',sans-serif; color:var(--text-2); }
  .cdh-reward .stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; } .cdh-reward .stats div{ background:#120a06; border:1px solid var(--line); border-radius:10px; padding:7px 10px; }
  .cdh-reward .stats b{ display:block; font:900 19px 'Cinzel',serif; color:#f2c46d; } .cdh-reward .stats small{ font-size:11px; color:var(--text-2); }
  .cdh-hist{ padding:16px 20px; } .cdh-hist h3{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px; } .cdh-hist h3 small{ font:500 12px 'Inter',sans-serif; color:var(--text-2); }
  .cdh-hist ul{ list-style:none; margin:0; padding:0; } .cdh-hist li{ display:grid; grid-template-columns:34px 1fr auto; gap:12px; align-items:center; padding:8px 0; border-top:1px solid #2a1b10; } .cdh-hist li:first-child{ border-top:0; }
  .cdh-hist li.none{ display:block; color:var(--text-2); font-size:13px; }
  .cdh-hist .res{ width:34px; height:34px; border-radius:9px; display:grid; place-items:center; font:900 14px 'Cinzel',serif; } .cdh-hist .res.w{ background:linear-gradient(180deg,#3b7a3f,#1d4421); color:#d8ffd9; } .cdh-hist .res.l{ background:linear-gradient(180deg,#7a2e2a,#3f1715); color:#ffd6d2; }
  .cdh-hist .who b{ font-family:'Cinzel',serif; } .cdh-hist .who small{ display:block; color:var(--text-2); font-size:12px; } .cdh-hist time{ font-size:12px; color:var(--text-2); }
  .cdh-howto{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:14px; padding:16px 18px; }
  .cdh-howto .step{ display:flex; gap:12px; align-items:flex-start; } .cdh-howto .step i{ flex:none; width:34px; height:34px; border-radius:50%; display:grid; place-items:center; font:900 15px 'Cinzel',serif; font-style:normal; color:#1a0a03; background:linear-gradient(180deg,#ffd27a,#d98a1a); }
  .cdh-howto b{ display:block; font-size:13.5px; } .cdh-howto span{ font-size:12.5px; color:var(--text-2); }
  #cd-home > .cd-rules{ margin-top:12px; }
  @media (max-width:900px){ .cdh-hero{ grid-template-columns:1fr; } .cdh-hero .txt{ padding:24px 20px 0; } .cdh-hero h2{ font-size:30px; } .cdh-fan{ height:210px; } .cdh-modes, .cdh-grid{ grid-template-columns:1fr; } .cdh-howto{ grid-template-columns:1fr 1fr; } }
  @media (max-width:520px){ .cdh-howto{ grid-template-columns:1fr; } .cdh-reward{ flex-direction:column; text-align:center; }
    .cdh-fan .f{ transform:translateX(calc(var(--i) * 40px)) rotate(calc(var(--i) * 7deg)) translateY(calc(var(--i) * var(--i) * 5px)); } .cdh-fan:hover .f{ transform:translateX(calc(var(--i) * 44px)) rotate(calc(var(--i) * 8deg)) translateY(calc(var(--i) * var(--i) * 6px - 10px)); } }
  #mk-tabs{ scrollbar-width:none; } #mk-tabs::-webkit-scrollbar{ display:none; }
  @media (prefers-reduced-motion:reduce){ .cdh-mode.main::before, .cdh-mode .live > i{ animation:none; } }
  /* ===== Duel : construction du deck (v401) ===== */
  .dkb-slots{ display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; }
  .dkb-slot{ position:relative; display:flex; gap:10px; align-items:center; padding:8px 14px 8px 8px; border-radius:13px; background:#130b07; border:1px solid var(--line); text-align:left; min-width:190px; color:var(--text-0); font:inherit; cursor:pointer; transition:border-color .2s, box-shadow .2s; }
  .dkb-slot .box{ width:40px; height:52px; border-radius:6px; flex:none; background:#2a1b10 center/cover; border:2px solid #6a4320; box-shadow:3px 3px 0 #2a1b10, 5px 5px 0 #1a100a; }
  .dkb-slot b{ display:block; font-family:'Cinzel',serif; max-width:150px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .dkb-slot small{ color:var(--text-2); font-size:12px; }
  .dkb-slot[aria-pressed="true"]{ border-color:#f2c46d; box-shadow:0 0 22px -8px #f2c46d; }
  .dkb-slot em{ position:absolute; top:-8px; right:10px; font:800 9.5px 'Inter',sans-serif; font-style:normal; letter-spacing:.12em; padding:1px 7px; border-radius:6px; background:#f2c46d; color:#1a0a03; }
  .dkb-slot.new{ border-style:dashed; color:var(--text-2); justify-content:center; cursor:not-allowed; opacity:.6; }
  .dkb{ display:grid; grid-template-columns:minmax(0,1fr) 330px; gap:16px; align-items:start; }
  .dkb-filters{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
  .dkb-search{ position:relative; flex:1; min-width:180px; max-width:260px; } .dkb-search::before{ content:'⌕'; position:absolute; left:11px; top:50%; transform:translateY(-52%); color:var(--text-2); font-size:17px; pointer-events:none; }
  .dkb-search input{ width:100%; box-sizing:border-box; padding:9px 12px 9px 32px; border-radius:11px; background:#120a06; border:1px solid var(--line); color:var(--text-0); font:inherit; outline:0; } .dkb-search input:focus{ border-color:#8a5a2a; }
  .dkb-cls{ display:flex; gap:3px; padding:4px; border-radius:12px; background:#120a06; border:1px solid var(--line); flex-wrap:wrap; }
  .dkb-cls button{ width:34px; height:34px; border-radius:9px; padding:2px; opacity:.45; border:0; background:none; cursor:pointer; color:var(--text-2); font:inherit; transition:opacity .15s, box-shadow .15s; }
  .dkb-cls button img{ width:100%; height:100%; border-radius:7px; object-fit:cover; display:block; }
  .dkb-cls button:hover{ opacity:.85; } .dkb-cls button[aria-pressed="true"]{ opacity:1; box-shadow:0 0 0 2px var(--c, #f2c46d); }
  .dkb-cls button[data-c="all"]{ width:auto; padding:0 10px; font-size:12.5px; font-weight:700; } .dkb-cls button[data-c="all"][aria-pressed="true"]{ color:#ffdf9a; }
  .dkb-cost{ display:flex; gap:4px; }
  .dkb-cost button{ width:31px; height:31px; border:0; display:grid; place-items:center; font:900 12.5px 'Cinzel',serif; color:#e3eeff; opacity:.45; cursor:pointer;
    background:radial-gradient(circle at 35% 30%,#7aa8ff,#1f4ea8 70%); clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%); transition:transform .15s, opacity .15s; }
  .dkb-cost button:hover{ opacity:.75; } .dkb-cost button[aria-pressed="true"]{ opacity:1; transform:scale(1.14); }
  .dkb-seg{ display:flex; padding:3px; border-radius:11px; background:#120a06; border:1px solid var(--line); }
  .dkb-seg button{ padding:6px 11px; border-radius:8px; font:600 13px 'Inter',sans-serif; color:var(--text-2); background:none; border:0; cursor:pointer; }
  .dkb-seg button[aria-pressed="true"]{ background:#2a1b10; color:#ffdf9a; box-shadow:inset 0 0 0 1px #6a4320; }
  .dkb-sel{ padding:7px 10px; border-radius:10px; background:#120a06; border:1px solid var(--line); color:var(--text-1); font:inherit; font-size:13px; }
  .dkb-toggle{ display:flex; align-items:center; gap:7px; font-size:13px; color:var(--text-2); cursor:pointer; user-select:none; } .dkb-toggle input{ accent-color:#ff7a2a; width:16px; height:16px; }
  .dkb-coll{ display:grid; grid-template-columns:repeat(auto-fill, 124px); gap:24px 14px; padding:12px 4px 4px; justify-content:start; }
  .dkb-ci{ position:relative; cursor:pointer; width:124px; display:flex; flex-direction:column; align-items:center; }
  .dkb-ci .cdc{ transition:transform .25s cubic-bezier(.2,.9,.3,1.2), box-shadow .25s, filter .25s; }
  .dkb-ci:not(.max):hover .cdc{ transform:translateY(-6px); box-shadow:0 18px 30px -10px #000, 0 0 24px -4px color-mix(in srgb, var(--tc) 70%, transparent); }
  .dkb-ci:not(.max):hover .cdc::after{ content:'+'; position:absolute; inset:0; z-index:9; display:grid; place-items:center; font:900 52px 'Cinzel',serif; color:rgba(255,255,255,.92); text-shadow:0 0 20px #ff7a2a; background:rgba(0,0,0,.25); border-radius:10px; }
  .dkb-ci.max{ cursor:not-allowed; } .dkb-ci.max .cdc{ filter:grayscale(.75) brightness(.5); } .dkb-ci.max.soft .cdc{ filter:brightness(.7); }
  .dkb-ci.added .cdc{ animation:dkbBump .35s; } @keyframes dkbBump{ 40%{ transform:scale(.92); } }
  .dkb-ci .why{ position:absolute; left:6px; right:6px; top:58%; z-index:10; text-align:center; font-size:10.5px; font-weight:700; padding:3px 6px; border-radius:7px; background:rgba(10,6,3,.92); color:#ffb4a0; border:1px solid #6a2a1a; }
  .dkb-ci .pips{ display:flex; justify-content:center; gap:5px; margin-top:12px; min-height:9px; } .dkb-ci .pips i{ width:9px; height:9px; border-radius:50%; background:#2a1b10; border:1px solid #5a3a20; }
  .dkb-ci .pips i.on{ background:#f2c46d; border-color:#f2c46d; box-shadow:0 0 8px #f2c46d; }
  .dkb-side{ position:sticky; top:12px; padding:16px; display:flex; flex-direction:column; gap:11px; max-height:calc(100vh - 24px); box-sizing:border-box; background:linear-gradient(180deg,#1d120b,#150d08); border:1px solid var(--line); border-radius:16px; }
  .dkb-side .hd{ display:flex; gap:10px; align-items:center; }
  .dkb-side .hd input{ flex:1; min-width:0; font:700 18px 'Cinzel',serif; color:var(--text-0); background:transparent; border:0; border-bottom:1px dashed #5a3a20; padding:2px 0; outline:0; } .dkb-side .hd input:focus{ border-bottom-color:#f2c46d; }
  .dkb-side .cnt{ --p:0; width:54px; height:54px; border-radius:50%; flex:none; background:conic-gradient(#f2c46d calc(var(--p) * 1%), #2a1b10 0); display:grid; place-items:center; position:relative; }
  .dkb-side .cnt.full{ background:conic-gradient(#5fd18a calc(var(--p) * 1%), #2a1b10 0); }
  .dkb-side .cnt::before{ content:''; position:absolute; inset:5px; border-radius:50%; background:#140c08; } .dkb-side .cnt span{ position:relative; font:900 16px 'Cinzel',serif; line-height:1; text-align:center; } .dkb-side .cnt small{ display:block; font:600 9px 'Inter',sans-serif; color:var(--text-2); }
  .dkb-side .curve{ display:flex; gap:6px; align-items:flex-end; height:84px; padding:14px 2px 0; }
  .dkb-side .curve div{ flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; height:100%; justify-content:flex-end; }
  .dkb-side .curve i{ width:100%; border-radius:5px 5px 2px 2px; background:linear-gradient(180deg,#7aa8ff,#2a62d8); min-height:3px; position:relative; transition:height .35s cubic-bezier(.2,.9,.3,1.2); }
  .dkb-side .curve i::before{ content:attr(data-n); position:absolute; top:-16px; left:0; right:0; text-align:center; font:700 11px 'Inter',sans-serif; color:var(--text-0); }
  .dkb-side .curve b{ font:900 12px 'Cinzel',serif; color:#9cc2ff; }
  .dkb-side .syn{ display:flex; flex-wrap:wrap; gap:5px; } .dkb-side .syn span{ display:inline-flex; gap:5px; align-items:center; font-size:11.5px; font-weight:600; padding:3px 8px; border-radius:12px; background:#1f140d; border:1px solid #4a3020; color:var(--text-1); }
  .dkb-side .syn span i{ width:8px; height:8px; border-radius:50%; background:var(--c); }
  .dkb-side .list{ overflow-y:auto; display:flex; flex-direction:column; gap:4px; padding-right:4px; flex:1; min-height:120px; }
  .dkb-side .strip{ --tc:#8a8f99; position:relative; display:grid; grid-template-columns:28px 1fr auto; align-items:center; gap:8px; height:40px; flex:none; padding:0 8px 0 4px; border-radius:8px; overflow:hidden; text-align:left; cursor:pointer; color:var(--text-0); font:inherit;
    background:linear-gradient(90deg,#1a100a 30%,transparent 78%), var(--img) right 30% / 62% auto no-repeat, #1a100a; border:1px solid #3a2616; border-left:3px solid var(--tc); animation:dkbIn .3s cubic-bezier(.2,.9,.3,1.2); }
  @keyframes dkbIn{ from{ transform:translateX(30px); opacity:0; } }
  .dkb-side .strip[data-t="etincelle"]{ --tc:#5fd18a; } .dkb-side .strip[data-t="braise"]{ --tc:#e8b85a; } .dkb-side .strip[data-t="immortel"]{ --tc:#e9d27a; } .dkb-side .strip[data-t="dev"]{ --tc:#4ea3ff; } .dkb-side .strip[data-t="alar"]{ --tc:#b46cff; } .dkb-side .strip[data-t="phenix"]{ --tc:#ff7a2a; } .dkb-side .strip[data-t="saison"]{ --tc:#ff5fa8; }
  .dkb-side .strip .c{ width:26px; height:26px; display:grid; place-items:center; font:900 13px 'Cinzel',serif; color:#fff; background:radial-gradient(circle at 35% 30%,#9cc2ff,#2a62d8 70%); clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%); }
  .dkb-side .strip .nm{ font:700 13.5px 'Cinzel',serif; text-shadow:0 1px 3px #000; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .dkb-side .strip .nm small{ display:block; font:600 10.5px 'Inter',sans-serif; color:#f2c46d; }
  .dkb-side .strip .q{ font:800 12px 'Inter',sans-serif; color:#ffdf9a; background:rgba(10,6,3,.85); padding:2px 7px; border-radius:7px; border:1px solid #5a3a20; }
  .dkb-side .strip:hover{ border-color:#a83a2a; } .dkb-side .strip:hover .q{ background:#7a1d14; color:#fff; border-color:#ff6a50; } .dkb-side .strip:hover .q::before{ content:'− '; }
  .dkb-side .strip.empty{ border:1px dashed #3a2616; border-left:3px dashed #3a2616; background:none; color:var(--text-2); font-size:12.5px; cursor:default; animation:none; grid-template-columns:28px 1fr; } .dkb-side .strip.empty .nm{ font:500 12.5px 'Inter',sans-serif; text-shadow:none; }
  .dkb-side .strip.empty .c{ background:#2a1b10; color:var(--text-2); }
  .dkb-side .warn{ font-size:12px; padding:8px 10px; border-radius:9px; background:#2a1a0a; border:1px solid #6a4a1a; color:#ffd9a0; } .dkb-side .warn.ok{ background:#0f2414; border-color:#2a6a3a; color:#b8f0c4; }
  .dkb-side .dirty{ font-size:12px; color:#ffb37a; text-align:center; }
  .dkb-side .acts{ display:grid; grid-template-columns:1fr 1fr; gap:8px; } .dkb-side .acts .tv-btn{ padding:8px 10px; font-size:13px; } .dkb-side .acts #cd-dk-play{ grid-column:1/-1; }
  .dkb-side #cd-dk-msg{ margin:0; min-height:0; }
  @media (max-width:980px){ .dkb{ grid-template-columns:1fr; } .dkb-side{ position:relative; max-height:none; } }
  @media (max-width:560px){ .dkb-coll{ grid-template-columns:repeat(auto-fill, minmax(96px,1fr)); gap:20px 10px; } .dkb-ci{ width:auto; } .dkb-ci .cdc{ width:96px; height:130px; } .dkb-slot{ min-width:0; flex:1; } }
  /* ===== Reborn TCG (v401) ===== */
  .tgc{ --t-saison:#ff5fa8; } .tgc-t-saison{ color:var(--t-saison); }
  .tgx-head{ display:flex; align-items:center; gap:14px; padding:16px 20px; border-radius:18px; flex-wrap:wrap; background:linear-gradient(90deg,#1e120a,#140c07 60%,#1d0f1f); border:1px solid var(--line); margin-bottom:12px; }
  .tgx-head .logo{ font:900 28px 'Cinzel',serif; line-height:1.1; background:linear-gradient(180deg,#fff2d0,#f2c46d 60%,#b8792a); -webkit-background-clip:text; background-clip:text; color:transparent; }
  .tgx-head .logo small{ display:block; font:600 11px 'Inter',sans-serif; letter-spacing:.3em; -webkit-text-fill-color:var(--text-2); text-transform:uppercase; }
  .tgx-head .sp{ flex:1; }
  .tgx-head .pill{ display:flex; align-items:center; gap:10px; padding:8px 14px; border-radius:12px; background:#120a06; border:1px solid var(--line); color:var(--text-0); font:inherit; text-align:left; }
  .tgx-head .pill b{ font:900 19px 'Cinzel',serif; } .tgx-head .pill small{ font-size:11.5px; color:var(--text-2); display:block; line-height:1.1; }
  .tgx-head .pill .fl{ display:flex; color:#ff9a4a; }
  .tgx-head .pill.cr{ border-color:#4b2f7a; background:linear-gradient(180deg,#1f1430,#140d20); cursor:pointer; transition:transform .15s, box-shadow .2s; } .tgx-head .pill.cr b{ color:#dcc6ff; }
  .tgx-head .pill.cr:hover{ transform:translateY(-1px); box-shadow:0 0 22px -8px #8a4dff; } .tgx-head .pill.cr.pop{ animation:tgxPop .5s; } @keyframes tgxPop{ 40%{ transform:scale(1.08); box-shadow:0 0 26px -4px #b48aff; } }
  .tgx-head .ring{ --p:0; width:46px; height:46px; border-radius:50%; flex:none; background:conic-gradient(#f2c46d calc(var(--p) * 1%), #2a1b10 0); display:grid; place-items:center; position:relative; }
  .tgx-head .ring::before{ content:''; position:absolute; inset:5px; border-radius:50%; background:#120a06; } .tgx-head .ring span{ position:relative; font:700 10.5px 'Inter',sans-serif; }
  .tgx-today{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
  .tgx-task{ display:flex; gap:12px; align-items:center; padding:11px 13px; border-radius:13px; background:#130b07; border:1px solid var(--line); text-align:left; color:var(--text-0); font:inherit; cursor:pointer; transition:border-color .2s, transform .2s; min-width:0; }
  .tgx-task:hover{ border-color:#8a5a2a; transform:translateY(-2px); }
  .tgx-task .ic{ width:40px; height:40px; border-radius:11px; flex:none; display:grid; place-items:center; font-size:19px; background:#21150c; border:1px solid #4a3020; } .tgx-task .ic .gem-ico{ width:18px; height:18px; }
  .tgx-task b{ display:block; font-size:13.5px; } .tgx-task small{ color:var(--text-2); font-size:12px; display:block; }
  .tgx-task.hot{ border-color:#a8501c; background:linear-gradient(180deg,#2a140a,#160b06); box-shadow:0 0 24px -10px #ff7a2a; } .tgx-task.hot .ic{ background:radial-gradient(circle,#ffb066,#a8401a); border-color:#ffb066; }
  .tgx-task.warm{ border-color:#6a4320; } .tgx-task.done{ opacity:.6; }
  .tgx-tabs{ display:flex; gap:4px; margin:20px 0 14px; border-bottom:1px solid var(--line); overflow-x:auto; overflow-y:hidden; scrollbar-width:none; }
  .tgx-tabs button{ position:relative; padding:11px 15px 13px; font-family:'Cinzel',serif; font-weight:700; font-size:15.5px; color:var(--text-2); display:flex; align-items:center; gap:8px; white-space:nowrap; background:none; border:0; cursor:pointer; }
  .tgx-tabs button:hover{ color:var(--text-0); }
  .tgx-tabs button .c{ font:700 11px 'Inter',sans-serif; padding:1px 8px; border-radius:10px; background:#24170e; color:var(--text-2); } .tgx-tabs button .c:empty{ display:none; } .tgx-tabs button .c.hot{ background:#2f9e52; color:#fff; }
  .tgx-tabs button[aria-selected="true"]{ color:#ffdf9a; } .tgx-tabs button[aria-selected="true"]::after{ content:''; position:absolute; left:10px; right:10px; bottom:-1px; height:3px; border-radius:3px; background:linear-gradient(90deg,#e2621f,#ffd27a); box-shadow:0 0 12px #ff7a2a; }
  .tgx-tabs button[aria-selected="true"] .c{ background:#e2621f; color:#fff; }
  /* booster du jour sur piédestal, série en chemin, étagère en bois */
  .tgx-pedestal{ position:relative; height:200px; display:grid; place-items:center; margin:2px 0 8px; }
  .tgx-pedestal::before{ content:''; position:absolute; width:230px; height:230px; border-radius:50%; background:conic-gradient(from 0deg, transparent, rgba(255,140,50,.16), transparent 30%, rgba(255,140,50,.16), transparent 60%, rgba(255,140,50,.16), transparent 90%); animation:tgxSpin 14s linear infinite; }
  .tgx-pedestal::after{ content:''; position:absolute; bottom:8px; width:150px; height:22px; border-radius:50%; background:radial-gradient(ellipse, rgba(255,140,50,.55), transparent 70%); filter:blur(4px); }
  @keyframes tgxSpin{ to{ transform:rotate(1turn); } }
  .tgx-pedestal .pic{ position:relative; z-index:2; height:auto !important; margin:0 !important; animation:tgxFloat 3.6s ease-in-out infinite; }
  .tgx-pedestal .pic img{ height:160px !important; filter:drop-shadow(0 18px 22px rgba(0,0,0,.8)) drop-shadow(0 0 22px rgba(255,140,50,.45)); }
  .tgx-pedestal .pic img.mystery{ filter:brightness(.2) drop-shadow(0 0 22px rgba(255,140,50,.7)); }
  @keyframes tgxFloat{ 50%{ transform:translateY(-9px) rotate(1.5deg); } }
  .tgc-streak .top .rec{ margin-left:auto; font-size:11.5px; color:var(--text-2); }
  .tgx-path{ display:flex; align-items:center; margin:12px 2px 8px; }
  .tgx-path i{ width:22px; height:22px; border-radius:50%; flex:none; background:#2a1b10; border:2px solid #3a2616; display:grid; place-items:center; font-style:normal; font-size:9.5px; font-weight:700; color:var(--text-2); }
  .tgx-path i.on{ background:radial-gradient(circle,#ffd27a,#e2621f); border-color:#ffb066; box-shadow:0 0 12px -2px #ff7a2a; color:#1a0a03; }
  .tgx-path i.goal{ width:32px; height:32px; border-radius:9px; background:#1f1830 center/72% no-repeat; border-color:#8a8fa8; } .tgx-path i.goal.on{ border-color:#ffd27a; box-shadow:0 0 16px -2px #ffd27a; }
  .tgx-path u{ flex:1; height:3px; background:#2a1b10; text-decoration:none; } .tgx-path u.on{ background:linear-gradient(90deg,#e2621f,#ffb066); }
  .tgx-shelfbox{ display:flex; flex-direction:column; } .tgx-shelfbox h3{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; } .tgx-shelfbox h3 small{ font:500 12.5px 'Inter',sans-serif; color:var(--text-2); }
  .tgx-plank{ margin-top:auto; position:relative; padding:12px 16px 24px; }
  .tgx-plank::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:18px; border-radius:4px; background:linear-gradient(180deg,#6a4320,#3a2412 60%,#24160b); box-shadow:0 10px 18px rgba(0,0,0,.7), inset 0 1px 0 rgba(255,220,160,.25); }
  .tgx-plank .tgc-shelf{ min-height:170px; gap:20px; align-items:flex-end; }
  .tgx-plank .tgc-pack{ width:96px; transition:transform .25s; } .tgx-plank .tgc-pack img{ width:96px; } .tgx-plank .tgc-pack .spk > img.body{ width:96px; }   /* v441 : les boosters de saison avaient 78 px, plus petits que les autres */ .tgx-plank .tgc-pack:hover{ transform:translateY(-12px) rotate(-2deg); }
  .tgx-plank .tgc-pack:hover img{ filter:drop-shadow(0 10px 12px rgba(0,0,0,.7)) drop-shadow(0 0 16px rgba(255,180,90,.6)); }
  .tgx-plank .tgc-empty{ align-self:center; margin:auto; }
  #tv-c-boostview .tgc-top{ grid-template-columns:320px 1fr; margin-bottom:30px; }
  #tv-c-boostview .tgc-box{ border-radius:16px; background:linear-gradient(180deg,#1d120b,#150d08); }
  /* collection : outils, rangs, album */
  .tgx-tools, .mkx-filters, .dsx-tools{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
  .tgx-search{ position:relative; flex:1; min-width:190px; } .tgx-search::before{ content:'⌕'; position:absolute; left:12px; top:50%; transform:translateY(-52%); color:var(--text-2); font-size:18px; pointer-events:none; }
  .tgx-search input{ width:100%; box-sizing:border-box; padding:9px 12px 9px 34px; border-radius:11px; background:#120a06; border:1px solid var(--line); color:var(--text-0); font:inherit; outline:0; } .tgx-search input:focus{ border-color:#8a5a2a; }
  .tgx-seg{ display:flex; padding:3px; border-radius:11px; background:#120a06; border:1px solid var(--line); flex-wrap:wrap; }
  .tgx-seg button{ padding:7px 12px; border-radius:8px; font:600 13px 'Inter',sans-serif; color:var(--text-2); background:none; border:0; cursor:pointer; }
  .tgx-seg button[aria-pressed="true"]{ background:#2a1b10; color:#ffdf9a; box-shadow:inset 0 0 0 1px #6a4320; }
  .tgx-toggle{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-2); cursor:pointer; user-select:none; } .tgx-toggle input{ accent-color:#ff7a2a; width:16px; height:16px; }
  .tgx-rar{ display:grid; grid-template-columns:repeat(7,1fr); gap:8px; margin-bottom:16px; }
  .tgx-rar button{ text-align:left; padding:8px 10px; border-radius:11px; background:#120a06; border:1px solid var(--line); cursor:pointer; font:inherit; transition:border-color .2s, box-shadow .2s; }
  .tgx-rar button:hover, .tgx-rar button[aria-pressed="true"]{ border-color:currentColor; box-shadow:0 0 16px -6px currentColor; }
  .tgx-rar b{ font-family:'Cinzel',serif; font-size:13px; display:block; } .tgx-rar small{ font-size:11.5px; color:var(--text-2); display:block; }
  .tgx-rar .bar{ display:block; height:4px; border-radius:2px; background:#2a1b10; margin-top:6px; overflow:hidden; } .tgx-rar .bar i{ display:block; height:100%; background:currentColor; }
  .tgx-slot{ position:relative; cursor:pointer; --rx:0deg; --ry:0deg; } .tgx-slot .tgc-card, .tgx-slot .tgx-foil{ transition:transform .3s cubic-bezier(.2,.9,.3,1.2), box-shadow .3s; }
  .tgx-slot:hover .tgc-card, .tgx-slot:hover .tgx-foil{ transform:perspective(800px) translateY(-5px) rotateX(var(--rx)) rotateY(var(--ry)) scale(1.03); } .tgx-slot:hover .tgc-card{ box-shadow:0 18px 30px -12px #000, 0 0 22px -6px var(--tc); }
  .tgx-foil{ position:absolute; inset:4px; z-index:2; border-radius:6px; pointer-events:none; mix-blend-mode:color-dodge; opacity:.2;
    background:linear-gradient(115deg, transparent 38%, rgba(255,120,240,.45) 46%, rgba(120,220,255,.45) 50%, rgba(255,240,140,.45) 54%, transparent 62%); background-size:250% 250%; animation:tgxFoil 5s ease-in-out infinite; }
  @keyframes tgxFoil{ 0%,100%{ background-position:100% 0; } 50%{ background-position:0 100%; } }
  .tgx-new{ position:absolute; top:-8px; left:50%; transform:translateX(-50%); z-index:4; padding:1px 8px; border-radius:8px; background:#5fd18a; color:#04170b; font:800 10px 'Inter',sans-serif; letter-spacing:.08em; box-shadow:0 0 12px -2px #5fd18a; }
  .th-champ{ margin:10px 0 0; padding:8px 12px; border:1px solid var(--gold); border-radius:10px; color:var(--gold); font-size:13.5px; text-align:center; }
  .tgc-opened{ margin:8px 0 0; text-align:center; font-size:13px; color:var(--text-2); } .tgc-opened b{ color:var(--gold); font-size:15px; }
  .tgc-pack.ghost{ opacity:.16; filter:grayscale(1); cursor:default; pointer-events:none; }
  .tgx-wishmark{ position:absolute; top:-7px; left:-6px; z-index:4; width:24px; height:24px; border-radius:50%; display:grid; place-items:center; font-size:13px; background:#123a1c; color:#9fe0b0; border:1px solid #2f6a3c; box-shadow:0 0 12px -2px #5fd18a; }
  .tgc-sslot{ position:relative; }
  .tgx-album{ display:grid; grid-template-columns:1fr; border-radius:16px; overflow:hidden; border:1px solid #4a2e18; background:linear-gradient(90deg,#1a100a,#1f140c); box-shadow:0 30px 60px -30px #000, inset 0 0 60px rgba(0,0,0,.6); }
  .tgx-album.two{ grid-template-columns:1fr 1fr; background:linear-gradient(90deg,#1a100a 0%,#1f140c 48%,#0e0805 50%,#1f140c 52%,#1a100a 100%); }
  .tgx-album .page{ padding:20px 22px 24px; }
  .tgx-album .page h4{ margin:0 0 14px; font:700 12.5px 'Cinzel',serif; color:var(--text-2); letter-spacing:.12em; display:flex; justify-content:space-between; } .tgx-album .page h4 b{ color:#f2c46d; }
  .tgx-album .cards{ display:grid; grid-template-columns:repeat(3, minmax(0, 150px)); justify-content:center; gap:16px; }
  .tgx-pager{ display:flex; justify-content:center; align-items:center; gap:14px; margin-top:12px; color:var(--text-2); font-size:13px; } .tgx-pager b{ color:var(--text-0); }
  .tgx-pager button{ width:36px; height:36px; border-radius:50%; background:#1f140d; border:0; color:var(--text-0); font-size:20px; cursor:pointer; box-shadow:inset 0 0 0 1px #5a3a20; } .tgx-pager button:disabled{ opacity:.35; cursor:default; }
  /* fiche de carte */
  .tgx-sheet{ display:flex; gap:28px; align-items:center; max-width:780px; width:100%; justify-content:center; flex-wrap:wrap; }
  .tgx-info{ flex:1; min-width:260px; max-width:400px; text-align:left; display:flex; flex-direction:column; gap:12px; }
  .tgx-info .tgc-zoom-cap{ margin:0; text-align:left; display:flex; flex-direction:column; gap:2px; } .tgx-info .tgc-zoom-cap .tier{ font:700 11.5px 'Inter',sans-serif; letter-spacing:.14em; text-transform:uppercase; }
  .tgx-info .tgc-zoom-cap b{ font:700 28px 'Cinzel',serif; color:var(--text-0); } .tgx-info .tgc-zoom-cap .sub{ color:var(--text-2); font-size:13px; }
  .tgx-info .kv{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; } .tgx-info .kv div{ background:#120a06; border:1px solid var(--line); border-radius:10px; padding:8px; text-align:center; }
  .tgx-info .kv b{ display:block; font:900 22px 'Cinzel',serif; } .tgx-info .kv b.m{ color:#9cc2ff; } .tgx-info .kv b.a{ color:#ffd27a; } .tgx-info .kv b.h{ color:#ff8a7a; } .tgx-info .kv small{ font-size:11px; color:var(--text-2); }
  .tgx-info .pow{ padding:11px 12px; border-radius:11px; background:#1a120a; border:1px solid #4a3020; font-size:13px; color:var(--text-1); line-height:1.45; } .tgx-info .pow b{ color:#f2c46d; display:block; } .tgx-info .pow span{ display:block; } .tgx-info .pow span + b{ margin-top:6px; }
  .tgx-info .meta{ font-size:12.5px; color:var(--text-2); margin:0; } .tgx-info .meta b{ color:var(--text-0); }
  .tgx-info .acts{ display:flex; gap:8px; flex-wrap:wrap; } .tgx-info .acts > span{ display:contents; } .tgx-info .acts .tv-btn{ font-size:13px; padding:8px 12px; }
  /* ouverture : les rares brillent avant d'être retournées, résumé à la fin */
  /* la lueur est sur le dos de la carte : l'animation d'entrée de .tgc-flip (qui la rend visible) reste intacte */
  .tgc-flip.t-alar:not(.open) .tgc-back, .tgc-flip.t-phenix:not(.open) .tgc-back, .tgc-flip.t-fullart:not(.open) .tgc-back{ animation:tgxTease 1.2s ease-in-out .45s infinite; }
  .tgc-flip.t-dev:not(.open) .tgc-back, .tgc-flip.t-holo:not(.open) .tgc-back{ animation:tgxTease2 1.4s ease-in-out .45s infinite; }
  .tgc-flip.t-alar{ --glow:#b46cff; } .tgc-flip.t-phenix{ --glow:#ff7a2a; } .tgc-flip.t-fullart{ --glow:#ff5fa8; } .tgc-flip.t-dev{ --glow:#4ea3ff; } .tgc-flip.t-holo{ --glow:#c38bff; }
  @keyframes tgxTease{ 50%{ filter:drop-shadow(0 0 22px var(--glow)) drop-shadow(0 0 8px var(--glow)); } } @keyframes tgxTease2{ 50%{ filter:drop-shadow(0 0 12px var(--glow)); } }
  .tgx-sum{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; justify-content:center; animation:tgxUp .35s cubic-bezier(.2,.9,.3,1.2); }
  .tgx-sum .chip{ padding:6px 12px; border-radius:20px; background:rgba(10,6,3,.85); border:1px solid #5a3a20; font-size:13px; color:var(--text-0); display:inline-flex; align-items:center; gap:4px; }
  @keyframes tgxUp{ from{ transform:translateY(16px); opacity:0; } }
  /* marché */
  .mkx-top{ display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap; margin-bottom:12px; } .mkx-top .lead{ flex:1; min-width:260px; }
  .mkx-top h3{ font:700 24px 'Cinzel',serif; margin:0 0 2px; color:var(--text-0); } .mkx-top p{ margin:0; color:var(--text-2); font-size:13.5px; }
  .mkx-wish{ margin-bottom:12px; } .mk .tgc-msg:empty, #tv-c-dustview .tgc-msg:empty{ display:none; }
  .mkx-wish .bar{ display:flex; gap:12px; align-items:center; padding:10px 14px; border-radius:14px; background:#120a06; border:1px solid var(--line); flex-wrap:wrap; }
  .mkx-wish .bar.hit{ background:linear-gradient(90deg,#10220f,#120d07 70%); border-color:#2a5a32; } .mkx-wish .bar.hit b{ color:#b8f0c4; }
  .mkx-wish .t{ flex:1; min-width:220px; } .mkx-wish small{ display:block; color:var(--text-2); font-size:12.5px; }
  .mkx-wish .mini{ display:flex; } .mkx-wish .mini .tgc-mini{ width:38px; margin-left:-12px; } .mkx-wish .mini .tgc-mini:first-child{ margin-left:0; } .mkx-wish .mini .tgc-card .plate, .mkx-wish .mini .tgc-card .num{ display:none; }
  .mkx-wishgrid{ margin-top:10px; padding:12px; border-radius:12px; border:1px dashed #2f6a3c; background:#0d140c; } .mkx-wishgrid .mk-pick.sel{ box-shadow:0 0 0 2px #0b0705, 0 0 0 4px #5fd18a; }
  .mk-badge.ok{ background:#2f9e52; } .mk-badge.n{ background:#3a2616; color:var(--text-1); }
  .mk-offer.mkx{ display:grid; grid-template-columns:150px minmax(0,1fr) 230px; gap:16px; align-items:center; padding:14px 16px; border-radius:14px; background:linear-gradient(180deg,#1d120b,#150d08); transition:border-color .2s; }
  .mk-offer.mkx:hover{ border-color:#6a4320; } .mk-offer.mkx.hot{ border-color:#2f6a3c; box-shadow:0 14px 34px -20px rgba(95,209,138,.5); } .mk-offer.mkx.wish{ border-color:#3a8a4a; }
  .mk-offer.mkx .mk-who{ width:auto; flex-direction:row; align-items:center; gap:10px; flex-wrap:wrap; } .mk-offer.mkx .mk-who > span:not(.av):not(.mk-tag){ display:flex; flex-direction:column; min-width:0; }
  .mk-offer.mkx .mk-who b{ font-family:'Cinzel',serif; } .mk-offer .av{ width:40px; height:40px; border-radius:50%; flex:none; background:#3a2616 center/cover; border:2px solid #6a4320; display:grid; place-items:center; font-weight:700; }
  .mk-tag.wish{ background:#5fd18a; }
  .mkx-deal{ display:grid; grid-template-columns:minmax(0,1fr) 40px minmax(0,1fr); align-items:center; gap:6px; }
  .mk-offer.mkx .mk-side .lbl{ font:700 10.5px 'Inter',sans-serif; letter-spacing:.12em; text-transform:uppercase; } .mk-offer.mkx .mk-side.get .lbl{ color:#9fe0b0; }
  .mk-offer.mkx .mk-arrow{ width:38px; height:38px; border-radius:50%; display:grid; place-items:center; background:#1f140d; border:1px solid #5a3a20; color:#f2c46d; transition:transform .5s; } .mk-offer.mkx:hover .mk-arrow{ transform:rotate(180deg); }
  .mkx-c{ position:relative; padding-bottom:10px; } .mkx-flag{ position:absolute; left:50%; bottom:0; transform:translateX(-50%); white-space:nowrap; font:800 9px 'Inter',sans-serif; letter-spacing:.05em; padding:2px 6px; border-radius:7px; z-index:3; }
  .mkx-flag.new{ background:#5fd18a; color:#04170b; box-shadow:0 0 10px -2px #5fd18a; } .mkx-flag.wish{ background:#ffd27a; color:#2a1600; box-shadow:0 0 10px -2px #ffd27a; } .mkx-flag.have{ background:#2a1b10; color:var(--text-2); border:1px solid #4a3020; }
  .mk-offer.mkx .mk-act{ min-width:0; align-items:stretch; margin:0; } .mk-offer.mkx .mk-act .tv-btn{ width:100%; } .mk-offer.mkx .mk-act .row{ justify-content:stretch; } .mk-offer.mkx .mk-act .row .tv-btn{ flex:1; width:auto; }
  .mk-offer.mkx .mk-act small.why{ text-align:center; max-width:none; color:#ffb4a0; }
  .mk-offer.mkx .mk-note{ grid-column:1/-1; margin:0; }
  .tv-btn.ok{ background:linear-gradient(180deg,#7fe39a,#2f9e52); color:#04170b; } .tv-btn.ok:disabled{ background:#2a1b10; color:var(--text-2); }
  .mkx-val{ display:flex; flex-direction:column; align-items:stretch; gap:4px; width:100%; max-width:230px; }
  .mkx-val svg{ width:100%; height:56px; overflow:visible; } .mkx-val .beam{ transition:transform .6s cubic-bezier(.3,1.5,.5,1); }
  .mkx-val .nums{ display:flex; justify-content:space-between; font-size:11.5px; color:var(--text-2); } .mkx-val .nums b{ color:var(--text-0); }
  .mkx-val .tag{ align-self:center; font:800 11.5px 'Inter',sans-serif; padding:3px 10px; border-radius:12px; } .mkx-val .unit{ text-align:center; font-size:10.5px; color:var(--text-2); }
  .mkx-val .tag.eq{ background:#0f2414; color:#9fe0b0; border:1px solid #2a6a3a; } .mkx-val .tag.good{ background:#0d1d2d; color:#9fd0ff; border:1px solid #2a4a6a; } .mkx-val .tag.bad{ background:#2a140c; color:#ffb48a; border:1px solid #6a3a1a; }
  .mkx-steps{ display:flex; gap:8px; } .mkx-steps span{ flex:1; padding:8px 10px; border-radius:10px; background:#120a06; border:1px solid var(--line); font-size:12.5px; color:var(--text-2); display:flex; gap:8px; align-items:center; }
  .mkx-steps i{ width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font:800 11px 'Inter',sans-serif; background:#2a1b10; font-style:normal; }
  .mkx-steps .on{ border-color:#f2c46d; color:var(--text-0); } .mkx-steps .on i{ background:#f2c46d; color:#1a0a03; } .mkx-steps .done i{ background:#5fd18a; color:#04170b; }
  .mkx-wizbody{ display:grid; grid-template-columns:minmax(0,1fr) 290px; gap:18px; align-items:start; }
  .mkx-prev{ position:sticky; top:12px; padding:14px; border-radius:14px; background:#120a06; border:1px solid var(--line); display:flex; flex-direction:column; gap:10px; }
  .mkx-prev h4{ margin:0; font:700 14px 'Cinzel',serif; } .mkx-prev .tgc-mini{ width:56px; } .mkx-prev .mk-wild{ transform:scale(.85); transform-origin:left top; }
  .mkx-prev .row{ display:flex; gap:8px; flex-wrap:wrap; } .mkx-prev .row .tv-btn{ flex:1; padding:8px 10px; font-size:13px; }
  .mkx-ready{ text-align:center; padding:26px 10px; } .mkx-ready .ic{ font-size:40px; } .mkx-ready h4{ font:700 22px 'Cinzel',serif; margin:6px 0; } .mkx-ready p{ color:var(--text-2); font-size:13.5px; max-width:420px; margin:6px auto; }
  /* désenchanter */
  .dsx-top{ display:grid; grid-template-columns:290px 1fr; gap:14px; margin-bottom:18px; }
  .dsx-top .tgc-box{ border-radius:16px; }
  .dsx-purse{ text-align:center; overflow:hidden; background:radial-gradient(ellipse at 50% 28%, #2a1840, #140d20 70%) !important; border-color:#4b2f7a !important; display:flex; flex-direction:column; align-items:center; gap:2px; }
  .dsx-purse .orb{ width:100px; height:100px; margin:4px auto 6px; position:relative; display:grid; place-items:center; }
  .dsx-purse .orb::before{ content:''; position:absolute; inset:-18px; border-radius:50%; background:radial-gradient(circle, rgba(170,120,255,.45), transparent 65%); animation:dsxBreathe 3s ease-in-out infinite; }
  .dsx-purse .orb .gem-ico{ width:72px; height:72px; position:relative; animation:dsxFloat 3.5s ease-in-out infinite; } .dsx-purse .orb .gem-ico.pop{ animation:dsxPopG .6s; }
  @keyframes dsxBreathe{ 50%{ transform:scale(1.15); opacity:.6; } } @keyframes dsxFloat{ 50%{ transform:translateY(-6px) rotate(4deg); } } @keyframes dsxPopG{ 40%{ transform:scale(1.25); filter:brightness(1.6) drop-shadow(0 0 20px #c9a6ff); } }
  .dsx-purse .val{ font:900 36px 'Cinzel',serif; color:#e9dbff; text-shadow:0 0 20px rgba(170,120,255,.6); font-variant-numeric:tabular-nums; } .dsx-purse > small{ color:#b8a6d8; font-size:12.5px; }
  .dsx-purse .pot{ margin:10px 0; padding:9px; border-radius:11px; background:rgba(10,6,20,.6); border:1px dashed #6a4aa0; font-size:12.5px; color:#cdbcef; width:100%; box-sizing:border-box; } .dsx-purse .pot b{ color:#fff; }
  .dsx-purse .tv-btn{ width:100%; }
  .dsx-shop h3{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:12px !important; } .dsx-shop h3 small{ font:500 12.5px 'Inter',sans-serif; color:var(--text-2); }
  .dsx-shop .tgc-shop{ display:grid; grid-template-columns:repeat(auto-fill, minmax(130px,1fr)); gap:12px; }
  .dsx-prod{ position:relative; padding:12px; border-radius:13px; background:#120a06; border:1px solid var(--line); display:flex; flex-direction:column; gap:7px; align-items:center; text-align:center; transition:border-color .2s, transform .2s; }
  .dsx-prod:hover{ border-color:#6a4aa0; transform:translateY(-3px); } .tgc-shop .dsx-prod img{ height:92px; width:auto; max-width:100%; object-fit:contain; filter:drop-shadow(0 10px 12px rgba(0,0,0,.7)); } .dsx-prod b{ font-family:'Cinzel',serif; font-size:13px; }
  .dsx-prod .spk{ transform:scale(.8); transform-origin:center top; margin-bottom:-18px; }
  .dsx-prod .tv-btn{ width:100%; padding:7px 10px; background:linear-gradient(180deg,#d6b8ff,#7b45e0); color:#14082a; } .dsx-prod .tv-btn:disabled{ background:#2a1b10; color:var(--text-2); }
  .dsx-prod .pb{ display:block; width:100%; height:5px; border-radius:3px; background:#2a1b10; overflow:hidden; } .dsx-prod .pb i{ display:block; height:100%; background:linear-gradient(90deg,#8a4dff,#d6b8ff); } .dsx-prod small{ font-size:11px; color:var(--text-2); }
  .dsx-prod.hl{ border-color:#7a4ad0; box-shadow:0 0 30px -12px #8a4dff; } .dsx-prod.hl::before{ content:'NOUVELLE SAISON'; position:absolute; top:-9px; left:50%; transform:translateX(-50%); font:800 9.5px 'Inter',sans-serif; letter-spacing:.1em; padding:2px 8px; border-radius:7px; background:#ff5fa8; color:#2a0516; white-space:nowrap; }
  .dsx-cos{ display:flex; gap:12px; align-items:center; margin-top:12px; padding:10px 12px; border-radius:12px; background:#120a06; border:1px dashed #5a3a20; font-size:13px; color:var(--text-2); flex-wrap:wrap; }
  .dsx-cos .sw{ display:flex; } .dsx-cos .sw span{ width:30px; height:42px; border-radius:5px; margin-left:-8px; border:2px solid #6a4320; background:#2a1b10 center/cover; } .dsx-cos .sw span:first-child{ margin-left:0; }
  .dsx-cos .t{ flex:1; min-width:200px; } .dsx-cos b{ color:#c9a6ff; }
  .dsx-tools h3{ margin:0 auto 0 0; font:700 19px 'Cinzel',serif; color:var(--text-0); }
  .dsx-group{ margin-bottom:18px; } .dsx-group h4{ font:700 13px 'Cinzel',serif; letter-spacing:.1em; display:flex; gap:10px; align-items:center; margin:0 0 12px; }
  .dsx-group h4 small{ font:600 11.5px 'Inter',sans-serif; letter-spacing:0; color:var(--text-2); } .dsx-group h4::after{ content:''; flex:1; height:1px; background:linear-gradient(90deg, currentColor, transparent); opacity:.4; }
  .dsx-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(124px,1fr)); gap:20px 14px; }
  .dsx-dc{ position:relative; display:flex; flex-direction:column; gap:8px; align-items:center; color:var(--text-0); }
  .dsx-dc .stack{ position:relative; width:100%; padding:0 6px 6px 0; box-sizing:border-box; }
  .dsx-dc .stack::before, .dsx-dc .stack::after{ content:''; position:absolute; inset:6px 0 0 6px; border-radius:9px; background:#2a1b10; border:1px solid #4a3020; } .dsx-dc .stack::after{ inset:3px 3px 3px 3px; background:#3a2616; }
  .dsx-dc .stack > *{ position:relative; z-index:1; }
  .dsx-dc .keep{ position:absolute; top:-8px; left:-2px; z-index:5; font:700 9.5px 'Inter',sans-serif; padding:2px 7px; border-radius:8px; background:#0d1d2d; color:#9fd0ff; border:1px solid #2a4a6a; }
  .dsx-dc .ctl{ display:flex; align-items:center; gap:6px; padding:3px; border-radius:10px; background:#120a06; border:1px solid var(--line); }
  .dsx-dc .ctl button{ width:28px; height:28px; border-radius:7px; background:#2a1b10; border:0; color:var(--text-0); font-weight:900; cursor:pointer; } .dsx-dc .ctl button:disabled{ opacity:.3; cursor:default; }
  .dsx-dc .ctl output{ min-width:18px; text-align:center; font:800 14px 'Inter',sans-serif; }
  .dsx-dc .gain{ font-size:12px; color:#c9a6ff; font-weight:700; display:flex; gap:2px; align-items:center; }
  .dsx-dc.sel .tgc-card, .dsx-dc.sel .ssc{ box-shadow:0 0 0 2px #9a6bff, 0 0 22px -4px #9a6bff; }
  .dsx-dc.poof .stack{ animation:dsxPoof .7s forwards; } @keyframes dsxPoof{ 40%{ filter:brightness(2) saturate(0); } 100%{ transform:translateY(-30px) scale(.6); opacity:0; filter:blur(4px) brightness(2); } }
  .dsx-mote{ position:fixed; z-index:9600; width:10px; height:10px; pointer-events:none; background:linear-gradient(135deg,#f0e0ff,#8a4dff); clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%); filter:drop-shadow(0 0 6px #b48aff); }
  .dsx-vals{ display:flex; gap:6px; flex-wrap:wrap; margin-top:14px; } .dsx-vals span{ font-size:12px; padding:4px 10px; border-radius:12px; background:#120a06; border:1px solid var(--line); color:var(--text-1); } .dsx-vals b{ color:inherit; }
  .dsx-vals span[class^="tgc-t-"] b{ color:currentColor; } .dsx-vals span{ color:var(--text-1); } .dsx-vals span.tgc-t-membre b{ color:var(--t-membre); }
  .dsx-bar{ position:sticky; bottom:16px; z-index:40; margin:18px auto 0; width:min(760px, 100%); box-sizing:border-box; display:flex; gap:12px; align-items:center; padding:12px 14px 12px 18px; border-radius:16px;
    background:rgba(24,14,36,.95); backdrop-filter:blur(8px); border:1px solid #6a4aa0; box-shadow:0 20px 50px -14px #000, 0 0 40px -18px #8a4dff; animation:tgxUp .3s cubic-bezier(.2,.9,.3,1.2); }
  .dsx-bar .t{ flex:1; min-width:0; } .dsx-bar b{ font:900 20px 'Cinzel',serif; color:#e9dbff; } .dsx-bar small{ display:block; font-size:12px; color:#b8a6d8; }
  .dsx-bar .dsx-go{ background:linear-gradient(180deg,#d6b8ff,#7b45e0); color:#14082a; }
  @media (max-width:980px){ .tgx-today{ grid-template-columns:1fr 1fr; } .tgx-rar{ grid-template-columns:repeat(4,1fr); } .mk-offer.mkx{ grid-template-columns:1fr; } .mkx-wizbody, .dsx-top, #tv-c-boostview .tgc-top{ grid-template-columns:1fr; } .mkx-prev{ position:relative; } }
  @media (max-width:600px){ .tgx-today{ grid-template-columns:1fr; } .tgx-rar{ grid-template-columns:repeat(2,1fr); } .tgx-album .cards{ grid-template-columns:repeat(2, minmax(0,1fr)); } .mkx-deal{ grid-template-columns:1fr; justify-items:start; } .mk-offer.mkx .mk-arrow{ transform:rotate(90deg); }
    .mkx-steps span{ font-size:0; gap:0; justify-content:center; } .mkx-steps i{ font-size:11px; } .dsx-grid{ grid-template-columns:repeat(2,1fr); } .tgx-head .logo{ font-size:22px; } .tgx-head .pill{ flex:1; } }
  @media (prefers-reduced-motion:reduce){ .tgx-pedestal::before, .tgx-pedestal .pic, .dsx-purse .orb::before, .dsx-purse .orb .gem-ico, .tgc-flip:not(.open) .tgc-back, .tgx-foil{ animation:none !important; } }
  /* grands chiffres de dégâts et de soins */
  .cdc .float.pop, .cd-hero .float{ font:900 32px Cinzel, serif; color:#fff; -webkit-text-stroke:1px #4a0603; text-shadow:0 0 2px #000, 0 2px 0 #7a0d06, 0 0 14px rgba(255,60,30,.9); animation:cdpop .98s cubic-bezier(.2,.8,.3,1) forwards; top:40%; z-index:12; white-space:nowrap; }
  .cdc .float.pop.big, .cd-hero .float.big{ font-size:40px; }
  .cdc .float.pop.heal, .cd-hero .float.heal{ color:#d9ffe0; -webkit-text-stroke:1px #063a12; text-shadow:0 0 2px #000, 0 2px 0 #0d5a1e, 0 0 14px rgba(60,255,120,.9); }
  .cdc .float.info{ font:800 13px Inter, system-ui, sans-serif; color:#ffe6a8; white-space:nowrap; -webkit-text-stroke:0; text-shadow:0 1px 3px #000, 0 0 10px rgba(255,190,80,.8); animation:cdfloat 1.1s forwards; z-index:12; }
  @keyframes cdpop{ 0%{ transform:translate(-50%,-50%) scale(0); opacity:0 } 18%{ transform:translate(-50%,-50%) scale(1.55); opacity:1 } 32%{ transform:translate(-50%,-50%) scale(1); opacity:1 } 100%{ transform:translate(-50%,-170%) scale(1); opacity:0 } }
  .cd-hero .face .float{ position:absolute; left:50%; pointer-events:none; }
  .cd-vign{ position:absolute; inset:0; z-index:18; pointer-events:none; border-radius:14px; box-shadow:inset 0 0 160px rgba(255,0,0,.55); }
  /* bannière de tour adverse et de légendaire */
  .cd-bigturn.op span{ color:#ffd0c8; border-image:linear-gradient(90deg, transparent, #ff7a5a, transparent) 1; text-shadow:0 0 18px rgba(255,90,60,.8), 0 3px 0 #3a0804; }
  .cd-bigturn.leg span{ color:#fff1b8; border-image:linear-gradient(90deg, transparent, #ffb13c, transparent) 1; text-shadow:0 0 24px rgba(255,150,40,.95), 0 3px 0 #3a1404; }
  /* réticule de visée */
  .cd-aim .ret{ fill:none; stroke:#ff5a2a; stroke-width:2.5; transform-box:fill-box; transform-origin:center; animation:cdret 1.6s linear infinite; filter:drop-shadow(0 0 6px rgba(255,90,40,.9)); }
  @keyframes cdret{ to{ rotate:360deg; } }
  /* aperçu agrandi dans l'info-bulle */
  .cd-tip.peek{ max-width:none; width:420px; display:flex; gap:14px; align-items:flex-start; padding:12px; }
  .cd-tip.peek .pk{ flex:none; width:152px; margin:0; }
  .cd-tip.peek .tx{ flex:1; min-width:0; }
  @media (max-width:520px){ .cd-tip.peek{ width:auto; max-width:calc(100vw - 16px); } .cd-tip.peek .pk{ display:none; } }
  .cd-tip .pk{ display:flex; justify-content:center; height:206px; margin:2px 0 8px; pointer-events:none; }
  .cd-tip .pk .cdc{ transform:scale(1.3); transform-origin:top center; animation:none !important; }
  /* écran de fin : titre, récompenses, braises */
  .cd-chips{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin:0 0 16px; }
  .cd-chips:empty{ display:none; }
  .cd-chips span{ padding:7px 13px; border-radius:20px; background:rgba(255,200,120,.1); border:1px solid rgba(255,200,120,.35); font:700 12.5px Inter, system-ui, sans-serif; color:#ffe6a8; }
  .cd-table.v4.ended .cd-cfx{ z-index:21; }
  @media (prefers-reduced-motion:reduce){ .cd-aim .ret, .cdc .float.pop, .cd-hero .float{ animation:none !important; } }
  .cdc .pw.on{ border-color:#ffd35a; color:#ffd35a; box-shadow:0 0 10px rgba(255,211,90,.7); }
  .cdc .pw.used{ opacity:.45; }
  .cdc .stx{ position:absolute; left:4px; right:4px; bottom:-9px; font-size:9.5px; line-height:1.2; text-align:center; color:#fff; background:rgba(40,20,60,.85); border-radius:6px; padding:1px 3px; z-index:3; }
  .cdc.stunned{ filter:grayscale(.6) brightness(.8); }
  .cd-pow{ display:flex; gap:8px; align-items:center; justify-content:center; flex-wrap:wrap; margin:6px 0 0; font-size:13px; }
  .cd-pow .pt{ font-size:12px; color:var(--text-2); max-width:360px; }
  .cd-tip .pwt{ display:block; margin-top:6px; color:#ffd35a; }
  .cd-tip .pwt br + *{ color:inherit; }
  /* Admin — Saisons TCG */
  .tcgadm-seasons{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px }
  .tcgadm-seasons button{ display:flex; align-items:center; gap:8px; padding:8px 14px; border:1px solid var(--line); border-radius:8px; background:var(--ink-1); cursor:pointer; font:inherit; font-size:13px; font-weight:600; color:var(--text-1) }
  .tcgadm-seasons button[aria-pressed="true"]{ border-color:var(--gold); color:var(--text-0) }
  .tcgadm-tag{ font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; padding:1px 6px; border-radius:3px }
  .tcgadm-tag.on{ color:var(--ok); border:1px solid color-mix(in srgb,var(--ok) 50%,transparent) } .tcgadm-tag.off{ color:var(--text-2); border:1px solid var(--line) }
  .tcgadm-box{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:16px; margin-bottom:16px }
  .tcgadm-row{ display:grid; grid-template-columns:160px 1fr auto auto auto; gap:10px; align-items:end }
  .tcgadm-box label.l{ display:block; font-size:12px; color:var(--text-2); margin:0 0 4px }
  .tcgadm-box input[type=text], .tcgadm-box select{ width:100%; box-sizing:border-box }
  .tcgadm-pack{ display:grid; grid-template-columns:170px 1fr; gap:18px; margin-top:16px; padding-top:14px; border-top:1px solid var(--line) }
  .tcgadm-pack .pv{ display:flex; justify-content:center; align-items:center; padding:14px; border-radius:8px; background:var(--ink-0) }
  .tcgadm-pack .pv .spk > img.body{ width:130px } .tcgadm-pack .pv .ptag{ font-size:12px }
  .tcgadm-sw{ display:flex; gap:6px; flex-wrap:wrap; margin-top:6px }
  .tcgadm-sw button{ width:24px; height:24px; border-radius:50%; border:2px solid var(--ink-0); box-shadow:0 0 0 1px var(--line); cursor:pointer }
  .tcgadm-cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); gap:10px; margin-top:10px }
  .tcgadm-cards button{ border:1px solid transparent; border-radius:10px; background:none; padding:3px; cursor:pointer }
  .tcgadm-cards button[aria-current="true"]{ border-color:var(--gold) }
  .tcgadm-cards .add{ aspect-ratio:5/7; border:1px dashed var(--line); border-radius:10px; display:grid; place-items:center; color:var(--text-2); font-size:13px }
  .tcgadm-main{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:18px; align-items:start }
  .tcgadm-types{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px }
  .tcgadm-types button{ padding:9px 6px; border:1px solid var(--line); border-radius:6px; background:var(--ink-0); cursor:pointer; font:inherit; font-size:13px; font-weight:600 }
  .tcgadm-types button[aria-pressed="true"]{ border-color:currentColor; background:var(--ink-2) }
  .tcgadm-prev{ display:flex; flex-direction:column; align-items:center; gap:8px; position:sticky; top:16px }
  .tcgadm-prev .ssc-tilt{ width:min(300px,100%) }
  .tcgadm-msg{ font-size:13px; color:var(--gold); min-height:1.3em; margin-top:8px }
  @media (max-width:860px){ .tcgadm-main, .tcgadm-pack{ grid-template-columns:1fr } .tcgadm-row{ grid-template-columns:1fr } .tcgadm-prev{ position:static } }

  /* Addons : section « Obligatoires pour raider » */
  .addons-section{ max-width:1120px; margin:0 auto; }
  .addons-section-head{ display:flex; align-items:baseline; justify-content:space-between; gap:8px 16px; flex-wrap:wrap; border-bottom:1px solid var(--line); padding-bottom:10px; margin-bottom:18px; }
  .addons-section-head h2{ margin:0; font-family:'Cinzel', serif; font-size:24px; font-weight:700; color:var(--gold); letter-spacing:.04em; }
  .addons-section-head p{ margin:0; font-size:13px; color:var(--text-1); }
  .addons-section-head.minor h2{ font-size:20px; font-weight:500; color:var(--text-1); }
  .addons-section-head.minor p{ color:var(--text-2); }
  .addons-required{ display:grid; grid-template-columns:repeat(auto-fit, minmax(420px, 1fr)); gap:24px; margin-bottom:48px; }
  .addon-req{ display:flex; gap:22px; align-items:flex-start; padding:22px; background:var(--ink-1); border:1px solid var(--gold-dim); border-radius:10px; box-shadow:0 0 0 1px color-mix(in srgb, var(--gold) 12%, transparent), 0 10px 30px rgba(0,0,0,.45); }
  .addon-req-icon{ width:120px; height:120px; flex:none; object-fit:cover; border-radius:10px; border:2px solid var(--gold); box-shadow:0 0 20px color-mix(in srgb, var(--gold) 30%, transparent); background:var(--ink-2); cursor:pointer; }
  .addon-req-body{ display:flex; flex-direction:column; gap:10px; min-width:0; flex:1; }
  .addon-req-top{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .addon-req-top h3{ margin:0; font-family:'Cinzel', serif; font-size:20px; color:var(--text-0); }
  .addon-req-tag{ display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600; letter-spacing:.04em; color:var(--ink-0); background:var(--gold); border-radius:3px; padding:2px 8px; }
  .addon-req-sub{ margin:0; font-size:13px; color:var(--text-2); }
  .addon-req-desc{ margin:0; font-size:14px; line-height:1.55; color:var(--text-1); }
  .addon-req-btn{ align-self:flex-start; margin-top:4px; background:var(--frost-0); color:var(--ink-0); border:0; border-radius:4px; min-height:40px; padding:0 16px; font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
  .addon-req-btn:hover{ filter:brightness(1.1); }
  .addon-req-btn:focus-visible, .addon-req-icon:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
  @media (max-width:640px){
    .addons-required{ grid-template-columns:1fr; }
    .addon-req{ flex-direction:column; padding:16px; gap:12px; }
    .addon-req-icon{ width:72px; height:72px; }
    .addon-req-btn{ align-self:stretch; min-height:44px; }
    .addons-section-head h2{ font-size:20px; }
  }

  /* Contenu des guides d'addons (modal public + éditeur admin) */
  .addon-guide-content h3{ font-family:'Cinzel', serif; color:var(--frost-0); font-size:15px; margin:14px 0 8px; }
  .addon-guide-content h3:first-child{ margin-top:0; }
  .addon-guide-content b, .addon-guide-content strong{ color:var(--text-0); }
  .addon-guide-content ul, .addon-guide-content ol{ margin:0 0 12px; padding-left:20px; }
  .addon-guide-content a{ color:var(--frost-0); }
  .addon-guide-content .guide-note{ background:var(--ink-2); border:1px solid var(--line); border-radius:4px; padding:8px 12px; margin:14px 0; font-family:'IBM Plex Mono', monospace; font-size:12px; }
  .addon-guide-content code{ font-family:'IBM Plex Mono', monospace; font-size:12px; background:var(--ink-2); border:1px solid var(--line); border-radius:3px; padding:0 4px; color:var(--text-0); }

  /* Admin : éditeur de guide */
  .guide-editor-toolbar{ display:flex; flex-wrap:wrap; gap:6px; margin:12px 0 8px; }
  .guide-editor-toolbar button{ background:var(--ink-2); border:1px solid var(--line); border-radius:4px; color:var(--text-0); font:inherit; font-size:12px; padding:5px 10px; cursor:pointer; }
  .guide-editor-toolbar button:hover{ border-color:var(--frost-0); }
  .guide-editor-area{ min-height:320px; max-height:52vh; overflow-y:auto; background:var(--ink-1); border:1px solid var(--line); border-radius:4px; padding:14px 16px; font-size:13px; color:var(--text-1); line-height:1.7; outline:none; }
  .guide-editor-area:focus{ border-color:var(--frost-0); }
  .guide-editor-actions{ display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; margin-top:14px; align-items:center; }
  .guide-editor-actions .status{ margin-right:auto; font-size:12px; color:var(--text-2); }

  /* ============================================================
     La Taverne — mini-jeux
     ============================================================ */
  .tv-wrap{ max-width:980px; margin:0 auto; }
  #tab-taverne [hidden]{ display:none !important; }
  .tv-head{ text-align:center; margin:6px 0 22px; }
  .tv-title{ font-family:'Cinzel', serif; font-size:30px; font-weight:700; color:var(--gold); margin:0 0 6px; letter-spacing:.04em; }
  .tv-desc{ color:var(--text-1); margin:0 auto; max-width:60ch; font-size:14px; line-height:1.6; }
  .tv-muted{ color:var(--text-1); font-size:14px; line-height:1.6; margin:0 0 6px; }
  .tv-gate{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:26px; text-align:center; max-width:560px; margin:0 auto; }
  .tv-gate-title{ font-family:'Cinzel', serif; font-size:18px; color:var(--frost-1); margin:0 0 8px; }
  .tv-gate .tv-btn{ margin-top:14px; }

  .tv-btn{ background:var(--frost-0); color:var(--ink-0); border:0; border-radius:4px; padding:9px 16px; font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
  .tv-btn:hover{ filter:brightness(1.1); }
  .tv-btn:disabled{ opacity:.5; cursor:default; }
  .tv-btn.ghost{ background:transparent; color:var(--text-0); border:1px solid var(--line); }
  .tv-chip{ background:var(--ink-1); border:1px solid var(--line); border-radius:999px; padding:5px 14px; color:var(--text-1); font:inherit; font-size:13px; cursor:pointer; }
  .tv-chip[aria-pressed="true"]{ border-color:var(--frost-0); color:var(--text-0); }
  select.tv-chip{ appearance:auto; }
  :is(.tv-btn, .tv-chip, .tv-spell, .tv-cls, .tv-ability, .tv-game-tab):focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }

  .tv-me{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:14px 16px; margin-bottom:18px; }
  .tv-me-who{ margin:0; font-size:13px; color:var(--text-1); }
  .tv-me-det > summary{ cursor:pointer; list-style:none; display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; }
  .tv-me-det > summary::-webkit-details-marker{ display:none; }
  .tv-me-det > summary::before{ content:''; width:7px; height:7px; border-right:2px solid var(--text-2); border-bottom:2px solid var(--text-2); transform:rotate(-45deg); transition:transform .2s; flex:none; }
  .tv-me-det[open] > summary::before{ transform:rotate(45deg); }
  .tv-me-det[open] > summary{ margin-bottom:10px; }
  .tv-me-det > summary:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:3px; }
  .tv-me-count{ margin-left:auto; font-size:12px; color:var(--text-2); }
  .tv-me-who strong{ color:var(--text-0); }
  .tv-me-badges{ display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:8px; }
  .tv-me-badge{ display:flex; gap:10px; align-items:flex-start; padding:8px 10px; border:1px solid var(--line); border-radius:4px; opacity:.6; }
  .tv-me-badge.on{ opacity:1; border-color:var(--frost-0); background:color-mix(in srgb, var(--frost-0) 10%, transparent); }
  .tv-me-badge-icon{ font-size:18px; line-height:1.2; }
  .tv-me-badge b{ display:block; font-size:13px; color:var(--text-0); }
  .tv-me-badge small{ display:block; font-size:12px; color:var(--text-2); line-height:1.4; }

  /* Défilement horizontal seulement (petits écrans), sans barre visible ;
     la ligne du bas est une ombre interne pour que rien ne déborde en hauteur. */
  /* Les onglets passent à la ligne plutôt que d'être coupés ; sur petit
     écran ils défilent, avec un dégradé qui montre qu'il reste des onglets. */
  .tv-game-tabs{ display:flex; flex-wrap:wrap; gap:2px 4px; box-shadow:inset 0 -1px 0 var(--line); margin-bottom:16px; }
  .tv-game-tabs::-webkit-scrollbar{ display:none; }
  .tv-game-tab{ background:none; border:0; border-bottom:2px solid transparent; padding:9px 12px; font-family:'Cinzel', serif; font-size:15px; color:var(--text-2); cursor:pointer; white-space:nowrap; }
  .tv-game-tab[aria-selected="true"]{ color:var(--text-0); border-bottom-color:var(--frost-0); }
  .tv-intro{ color:var(--text-1); font-size:14px; line-height:1.6; margin:0 0 14px; max-width:70ch; }
  /* Wowdle : liste déroulante de tous les boss (remplace le datalist natif,
     peu fiable sur mobile). Seuls les noms sont affichés, jamais l'extension. */
  .tv-combo{ position:relative; flex:1; min-width:0; }
  .tv-combo .gate-input{ width:100%; padding-right:76px; box-sizing:border-box; }
  .tv-combo-clear{ position:absolute; right:38px; top:50%; transform:translateY(-50%); width:34px; height:34px; border:0; background:none;
    color:var(--text-2); cursor:pointer; display:flex; align-items:center; justify-content:center; border-radius:4px; }
  .tv-combo-clear[hidden]{ display:none; }
  .tv-combo-clear:hover{ color:var(--text-0); background:var(--ink-2); }
  .tv-combo-toggle{ position:absolute; right:4px; top:50%; transform:translateY(-50%); width:34px; height:34px; border:0; background:none;
    color:var(--text-2); cursor:pointer; display:flex; align-items:center; justify-content:center; border-radius:4px; }
  .tv-combo-toggle:hover{ color:var(--text-0); }
  .tv-combo-list{ position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:30; margin:0; padding:4px; list-style:none;
    max-height:min(320px, 50vh); overflow-y:auto; overscroll-behavior:contain; background:var(--ink-1); border:1px solid var(--line);
    border-radius:6px; box-shadow:0 14px 36px rgba(0,0,0,.55); }
  .tv-combo-list[hidden]{ display:none; }
  .tv-combo-list li{ padding:9px 12px; border-radius:4px; font-size:14px; color:var(--text-1); cursor:pointer; display:flex; justify-content:space-between; gap:10px; }
  .tv-combo-list li[aria-selected="true"], .tv-combo-list li:hover{ background:var(--ink-2); color:var(--text-0); }
  .tv-combo-list li.used{ color:var(--text-2); cursor:default; }
  .tv-combo-list li.used small{ font-size:11px; }
  .tv-combo-list li mark{ background:none; color:var(--gold); font-weight:600; }
  .tv-combo-list .empty{ color:var(--text-2); cursor:default; font-style:italic; }
  .tv-combo-count{ padding:6px 12px 4px; font-size:11px; color:var(--text-2); text-transform:uppercase; letter-spacing:.06em; cursor:default; }
  @media (max-width:640px){
    .tv-combo .gate-input{ font-size:16px; }
    .tv-combo-list li{ padding:12px 12px; font-size:15px; }
  }
  /* Reborn TCG : onglet mis en avant (icône, halo, étiquette des boosters
     à ouvrir) et séparé du reste des mini-jeux. */
  .tv-game-tab.tgc-tab{ display:flex; align-items:center; gap:8px; font-size:16px; color:var(--text-1); text-shadow:0 0 16px color-mix(in srgb, var(--frost-0) 45%, transparent); margin-right:12px; position:relative; }
  .tv-game-tab.tgc-tab::after{ content:''; position:absolute; right:-12px; top:50%; transform:translateY(-50%); width:1px; height:22px; background:var(--line); }
  /* Reborn TCG et Duel de cartes forment un groupe : un seul séparateur, après le duel */
  .tv-game-tab.tgc-tab:not(.cduel-tab){ margin-right:2px; } .tv-game-tab.tgc-tab:not(.cduel-tab)::after{ display:none; }
  .tv-game-tab.tgc-tab .ico{ display:flex; width:26px; height:26px; align-items:center; justify-content:center; border-radius:6px; border:1px solid var(--gold-dim); background:var(--ink-2); color:var(--gold); }
  .tv-game-tab.tgc-tab[aria-selected="true"]{ color:var(--text-0); }
  /* icônes simples des autres mini-jeux (orange quand l'onglet est ouvert) */
  .tv-game-tab .gico{ display:inline-flex; vertical-align:-3px; margin-right:7px; color:var(--text-2); transition:color .15s; }
  .tv-game-tab:hover .gico{ color:var(--text-1); }
  .tv-game-tab[aria-selected="true"] .gico{ color:var(--frost-0); }


  /* La Citadelle : plein écran et joystick (v233) */
  .icc-fsbtn{ position:absolute; top:8px; right:8px; z-index:6; display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:9px; border:1px solid rgba(255,255,255,.25); background:rgba(11,7,5,.55); color:#f3ece3; cursor:pointer; }
  .icc-fsbtn:hover{ background:rgba(11,7,5,.8); }


  /* Sanctuaire : classement, fenêtre de booster, sceau d'Aeluria */
  .sanct-board{ margin:14px 0 0; padding:16px 18px; border:1px solid #2f261f; border-radius:14px; background:#120e0b; }
  .sanct-board h3{ margin:0; font-family:Cinzel, Georgia, serif; font-size:18px; color:#e8c060; }
  .sanct-board-sub{ margin:4px 0 12px; font-size:13px; color:var(--text-2); }
  .sanct-board-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
  .sanct-board-list li{ display:grid; grid-template-columns:34px 1fr auto 96px; gap:10px; align-items:center; padding:8px 4px; border-bottom:1px solid #2a211a; font-size:14px; }
  .sanct-board-list li:last-child{ border-bottom:none; }
  .sanct-board-list .rk{ font-family:'IBM Plex Mono', monospace; color:var(--text-2); }
  .sanct-board-list li.top .rk{ color:#e8c060; font-weight:700; }
  .sanct-board-list .nm{ font-weight:600; color:var(--text-0); }
  .sanct-board-list .tm{ font-family:'IBM Plex Mono', monospace; color:#9dff6a; font-variant-numeric:tabular-nums; }
  .sanct-board-list .dt{ font-size:12px; color:var(--text-2); text-align:right; }
  .sanct-board-empty{ display:block !important; color:var(--text-2); font-size:13px; }
  #sanct-prize-cta{ margin:0 0 12px; }
  .sanct-modal{ position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; padding:16px; background:rgba(5,3,2,.78); }
  .sanct-modal-box{ width:min(520px, 100%); padding:22px 24px; border-radius:16px; border:1px solid #5fd08a; background:#120e0b; box-shadow:0 0 40px rgba(95,208,138,.18); display:flex; flex-direction:column; gap:12px; text-align:center; }
  .sanct-modal-box h3{ margin:0; font-family:Cinzel, Georgia, serif; font-size:20px; color:#e8c060; }
  .sanct-modal-box p{ margin:0; font-size:14px; color:var(--text-1); line-height:1.5; }
  .sanct-prize-opts{ display:flex; flex-direction:column; gap:8px; }
  .sanct-prize-opt{ padding:12px 14px; border-radius:10px; border:1px solid #6a4a24; background:#1c130d; color:var(--text-0); font:600 15px 'IBM Plex Sans', sans-serif; cursor:pointer; }
  .sanct-prize-opt:hover{ border-color:#e8c060; }
  .sanct-prize-opt.k-bronze{ border-color:#a86b3c; } .sanct-prize-opt.k-argent{ border-color:#b8c4cc; } .sanct-prize-opt.k-or{ border-color:#e8c060; } .sanct-prize-opt.k-season{ border-color:#5fd08a; }
  .sanct-toast{ position:fixed; left:50%; bottom:28px; transform:translateX(-50%); z-index:9999; padding:10px 16px; border-radius:10px; background:#1c130d; border:1px solid #e8c060; color:#e8c060; font-weight:700; }
  /* Sanctuaire : encadré « Commandes » (clavier dessiné / commandes tactiles) */
  .sanct-cmds{ margin:12px 0 0; border:1px solid #2f261f; border-radius:14px; background:#120e0b; }
  .sanct-cmds > summary{ cursor:pointer; list-style:none; padding:12px 18px; font-family:Cinzel, Georgia, serif; font-size:18px; font-weight:700; color:#e8c060; display:flex; align-items:center; gap:10px; }
  .sanct-cmds > summary::-webkit-details-marker{ display:none; }
  .sanct-cmds > summary::before{ content:'▸'; font-size:14px; color:#b3a795; transition:transform .15s; }
  .sanct-cmds[open] > summary::before{ transform:rotate(90deg); }
  .sanct-cmd-svg{ display:block; width:100%; height:auto; }
  .sanct-cmd-kb, .sanct-cmd-touch{ padding:0 12px 14px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .sanct-cmd-kb .sanct-cmd-svg{ min-width:720px; }
  .sanct-cmd-touch .sanct-cmd-svg{ min-width:640px; }
  .sanct-cmd-touch{ display:none; }
  #tv-g-sanct.icc-touch .sanct-cmd-touch{ display:block; }
  #tv-g-sanct.icc-touch .sanct-cmd-kb{ display:none; }
  .sanct-cmd-extra{ display:flex; flex-wrap:wrap; gap:8px 14px; justify-content:center; margin:6px 0 0; font-size:14px; color:#d9cfbf; }
  .sanct-cmd-extra span{ padding:6px 12px; border:1px solid #3a3029; border-radius:999px; background:#1a1410; }
  /* bouton Pause (téléphone) à côté du plein écran */
  .icc-pausebtn{ display:none; position:absolute; top:56px; right:8px; z-index:6; width:40px; height:40px; border-radius:9px; border:1px solid rgba(255,255,255,.25); background:rgba(11,7,5,.55); color:#f3ece3; font-weight:700; font-size:14px; cursor:pointer; }
  .icc-touch .sanct-stage .icc-pausebtn{ display:flex; align-items:center; justify-content:center; }
  .icc-stage.icc-fs{ position:fixed; inset:0; z-index:9999; width:100vw; height:100vh; height:100dvh; margin:0; background:#000; display:flex; align-items:center; justify-content:center;
    padding:env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px); box-sizing:border-box; }
  .icc-stage.icc-fs canvas{ width:min(100%, calc((100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)) * 1.6)); height:auto; max-height:100%; border:0; border-radius:0; box-shadow:none; }
  .icc-stage.icc-fs .icc-overlay{ border-radius:0; }
  body.icc-lock{ overflow:hidden; overscroll-behavior:none; }
  .icc-rotate{ display:none; position:absolute; top:calc(env(safe-area-inset-top, 0px) + 10px); left:50%; transform:translateX(-50%); z-index:7; padding:7px 14px; border-radius:999px; background:rgba(11,7,5,.8); border:1px solid #8fd3ff; color:#dff4ff; font-size:13px; white-space:nowrap; }
  @media (orientation:portrait){ .icc-stage.icc-fs .icc-rotate{ display:block; } }
  .icc-stick{ position:absolute; bottom:calc(14px + env(safe-area-inset-bottom, 0px)); right:calc(14px + env(safe-area-inset-right, 0px)); z-index:5; width:124px; height:124px; border-radius:50%;
    background:rgba(255,255,255,.06); border:2px solid rgba(255,255,255,.22); touch-action:none; -webkit-user-select:none; user-select:none; display:none; }
  .icc-stage.stick-left .icc-stick{ right:auto; left:calc(14px + env(safe-area-inset-left, 0px)); }
  .icc-stick i{ position:absolute; left:50%; top:50%; width:54px; height:54px; margin:-27px 0 0 -27px; border-radius:50%; background:rgba(255,255,255,.18); border:2px solid rgba(255,255,255,.4); pointer-events:none; }
  .icc-stick.on{ background:rgba(255,255,255,.1); }
  .icc-touch .icc-stick{ display:block; }
  .icc-stage.icc-fs .icc-stick{ width:140px; height:140px; }
  .icc-sidebtn{ background:none; border:0; padding:0; color:var(--gold); font:inherit; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
  /* Duel de cartes : La Pièce (v229) */
  .cdc.cd-coin{ --cc:#e8c060; }
  .cdc.cd-coin .art{ display:flex; align-items:center; justify-content:center; background:radial-gradient(circle at 40% 35%, #fff3b0, #e8a33d 55%, #7a5a24); }
  .cd-coin-face{ width:58%; aspect-ratio:1; border-radius:50%; display:flex; align-items:center; justify-content:center; border:3px solid #7a5a24; background:radial-gradient(circle at 40% 35%, #ffe9a0, #d8a040); color:#3a2408; font-family:'Cinzel', serif; font-weight:700; font-size:22px; box-shadow:0 2px 8px rgba(0,0,0,.45); }
  /* ===== Marché v2 (v222) ===== */
  .mk{ display:flex; flex-direction:column; gap:14px; }
  .mk-top{ display:flex; align-items:flex-end; justify-content:space-between; gap:14px; flex-wrap:wrap; }
  .mk-top .tv-intro{ margin:0; max-width:70ch; }
  .mk-btns{ display:flex; gap:8px; flex-wrap:wrap; }
  .mk-tabs{ display:flex; gap:4px; padding:4px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1); width:max-content; max-width:100%; overflow-x:auto; }
  .mk-tabs button{ display:flex; align-items:center; gap:6px; padding:8px 14px; min-height:38px; border:0; border-radius:7px; background:transparent; color:var(--text-1); font:inherit; font-size:13.5px; font-weight:600; cursor:pointer; white-space:nowrap; }
  .mk-tabs button[aria-selected="true"]{ background:#2a1a0c; color:#ffd35a; box-shadow:inset 0 0 0 1px var(--gold-dim); }
  .mk-badge{ min-width:18px; height:18px; padding:0 5px; box-sizing:border-box; border-radius:999px; background:#e03050; color:#fff; font-size:11px; display:inline-flex; align-items:center; justify-content:center; }
  .mk-badge[hidden]{ display:none; }
  .mk-list{ display:flex; flex-direction:column; gap:10px; }
  .mk-offer{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:12px 14px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1); }
  .mk-offer.hot{ border-color:var(--gold-dim); }
  .mk-who{ display:flex; flex-direction:column; gap:3px; width:120px; flex:none; }
  .mk-who b{ color:var(--text-0); } .mk-who small{ color:var(--text-2); font-size:12px; }
  .mk-tag{ align-self:flex-start; font-size:10.5px; font-weight:700; letter-spacing:.04em; color:#0b0705; background:#8fd3ff; border-radius:3px; padding:1px 6px; }
  .mk-side{ display:flex; flex-direction:column; gap:4px; }
  .mk-side .lbl{ font-size:11px; color:var(--text-2); }
  .mk-cards{ display:flex; gap:6px; flex-wrap:wrap; }
  .mk-arrow{ color:var(--gold); font-size:20px; }
  .mk-act{ display:flex; flex-direction:column; align-items:flex-end; gap:8px; margin-left:auto; min-width:200px; }
  .mk-act small{ font-size:11.5px; color:var(--text-2); text-align:right; max-width:28ch; }
  .mk-act .row{ display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
  .mk-note{ width:100%; margin:0; padding:7px 10px; border-radius:7px; background:var(--ink-0); font-size:13px; font-style:italic; color:var(--text-1); }
  .mk-wild{ width:74px; aspect-ratio:5/7; box-sizing:border-box; border-radius:7px; border:2px dashed var(--tc); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; text-align:center; padding:4px; }
  .mk-wild b{ font-family:'Cinzel', serif; font-size:20px; color:var(--tc); } .mk-wild span{ font-size:11px; font-weight:700; color:var(--tc); } .mk-wild small{ font-size:9.5px; color:var(--text-2); line-height:1.2; }
  .mk-val{ display:flex; flex-direction:column; gap:5px; width:200px; }
  .mk-val .nums{ display:flex; justify-content:space-between; font-size:11.5px; color:var(--text-2); } .mk-val .nums b{ color:var(--text-0); }
  .mk-val .bar{ position:relative; height:7px; border-radius:4px; background:#2a1a10; overflow:hidden; }
  .mk-val .bar i{ position:absolute; inset:0 auto 0 0; background:#6b4a2a; } .mk-val .bar em{ position:absolute; top:0; bottom:0; width:2px; background:var(--vc); }
  .mk-val .v{ display:flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--vc); } .mk-val .v::before{ content:""; width:8px; height:8px; border-radius:50%; background:var(--vc); }
  .mk-pick{ cursor:pointer; border-radius:8px; border:0; padding:0; background:none; font:inherit; color:inherit; text-align:left; position:relative; }
  .mk-pick.sel{ box-shadow:0 0 0 2px var(--ink-0), 0 0 0 4px #ffd35a; }
  .mk-pick[disabled]{ opacity:.3; cursor:not-allowed; }
  .mk-pick .miss{ position:absolute; left:4px; top:4px; z-index:2; font-size:9px; font-weight:700; color:#0b0705; background:#7fd67f; border-radius:3px; padding:0 4px; }
  .mk-panel{ display:flex; flex-direction:column; gap:14px; padding:16px; border-radius:10px; border:1px solid var(--gold-dim); background:var(--ink-1); }
  .mk-panel h3{ margin:0; font-family:'Cinzel', serif; font-size:19px; color:var(--text-0); }
  .mk-cols{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .mk-box{ display:flex; flex-direction:column; gap:10px; padding:12px; border-radius:9px; border:1px solid var(--line); background:var(--ink-0); min-width:0; }
  .mk-box .hd{ display:flex; justify-content:space-between; gap:8px; font-size:13.5px; color:var(--text-0); font-weight:600; } .mk-box .hd span{ font-weight:400; color:var(--text-2); }
  .mk-grid{ display:flex; gap:8px; flex-wrap:wrap; max-height:340px; overflow:auto; padding:4px; }
  .mk-seg{ display:inline-flex; gap:3px; padding:3px; border-radius:8px; border:1px solid var(--line); width:max-content; }
  .mk-seg button{ padding:6px 12px; border:0; border-radius:6px; background:transparent; color:var(--text-1); font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
  .mk-seg button[aria-pressed="true"]{ background:#2a1a0c; color:#ffd35a; box-shadow:inset 0 0 0 1px var(--gold-dim); }
  .mk-tiers{ display:flex; flex-direction:column; gap:6px; }
  .mk-tier{ display:flex; align-items:center; gap:10px; font-size:13.5px; }
  .mk-tier button{ width:28px; height:28px; border-radius:6px; border:1px solid var(--line); background:var(--ink-1); color:var(--text-0); cursor:pointer; font:inherit; }
  .mk-tier b{ width:20px; text-align:center; }
  .mk-foot{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; padding-top:4px; }
  .mk-foot .row{ display:flex; gap:8px; }
  .mk-check{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-1); }
  .mk-note-in{ flex:1 1 220px; min-height:38px; padding:0 10px; border-radius:7px; border:1px solid var(--line); background:var(--ink-0); color:var(--text-0); font:inherit; }
  .mk-sub{ font-size:12px; color:var(--text-2); margin:0; }
  .mk-status{ font-size:13px; font-weight:600; }
  @media (max-width:760px){ .mk-cols{ grid-template-columns:1fr; } .mk-act{ margin-left:0; align-items:flex-start; } .mk-who{ width:auto; } }

  /* ===== Onglet Wrath of Reborn — v411 ===== */
  .tv-game-tab.tgc-tab.wor-tab{ margin-left:12px; color:#ff2a2a; font-weight:800; text-shadow:0 0 14px rgba(255,40,40,.65); }
  .tv-game-tab.tgc-tab.wor-tab .ico{ border-color:#ff3b3b; background:#240909; color:#ff4a3a; box-shadow:0 0 12px rgba(255,59,59,.3); }
  .tv-game-tab.wor-tab[aria-selected="true"]{ border-bottom-color:#ff3b3b; }
  .sanct-lock.wor-lock{ border-color:#5a1a1a; background:radial-gradient(ellipse at center, #2a0c0c, #0b0505 70%); }
  .wor-lock .tv-btn{ background:#d0302a; border-color:#ff5a4a; color:#fff; }
  .wor-lock .sanct-sigil{ border-color:#ff3b3b; color:#ff5a4a; box-shadow:0 0 30px rgba(255,59,59,.3), inset 0 0 20px rgba(255,59,59,.15); animation:worPulse 3.2s ease-in-out infinite; }
  @keyframes worPulse{ 50%{ box-shadow:0 0 44px rgba(255,59,59,.5), inset 0 0 26px rgba(255,59,59,.25); } }
  .wor-lock .sanct-riddle{ color:#f2c0b8; }
  .wor-lock .sanct-input{ border-color:#5a1a1a; background:#120606; color:#ffe4de; }
  .wor-lock .sanct-input:focus{ border-color:#ff5a4a; box-shadow:0 0 0 3px rgba(255,59,59,.2); }
  .wor-game[hidden]{ display:none; }
  .wor-stage{ position:relative; width:100%; height:min(78vh, 760px); min-height:420px; border:1px solid #5a1a1a; border-radius:12px; overflow:hidden; background:#000; }
  .wor-stage:fullscreen{ height:100%; border:0; border-radius:0; }
  /* v442 : « plein écran » de secours (iPhone) : le jeu couvre tout l'écran visible, la page ne défile plus */
  .wor-stage.wor-pseudo-fs{ position:fixed; inset:0; z-index:10000; width:100vw; height:100dvh !important; min-height:0; border:0; border-radius:0; }
  html.wor-noscroll, html.wor-noscroll body{ overflow:hidden; overscroll-behavior:none; }
  /* v443 : pendant une partie de Wrath of Reborn, la page ne s’anime plus (un seul effet CSS pouvait prendre 28 % du processeur d’un téléphone) */
  html.wor-playing *, html.wor-playing *::before, html.wor-playing *::after{ animation-play-state:paused !important; }
  html.wor-playing::before, html.wor-playing::after{ display:none !important; }
  html.wor-noscroll *:has(.wor-pseudo-fs){ transform:none !important; translate:none !important; filter:none !important; contain:none !important; }   /* un parent transformé (thème Courroux) casserait le position:fixed */
  /* téléphone (v441) : le jeu prend la hauteur visible de l’écran, sans déborder */
  @media (pointer:coarse) and (max-width:900px){ .wor-stage{ height:calc(100svh - 96px); min-height:280px; touch-action:none; } }
  .wor-stage iframe{ display:block; width:100%; height:100%; border:0; }
  #tv-g-wor .wor-bar .tv-btn#wor-fs{ background:#d0302a; border:1px solid #ff5a4a; color:#fff; font-weight:800; box-shadow:0 0 14px rgba(255,59,59,.45); }
  #tv-g-wor .wor-bar .tv-btn#wor-fs:hover{ background:#ff3b3b; }
  .wor-bar{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-top:10px; font-size:13px; color:var(--text-2); }
  @media (prefers-reduced-motion: reduce){ .wor-lock .sanct-sigil{ animation:none; } }

  /* ===== Onglet ??? (le Sanctuaire, scellé) ===== */
  .tv-game-tab.tgc-tab.sanct-tab{ margin-right:12px; color:#8fe0a0; text-shadow:0 0 16px rgba(110,210,140,.55); }
  .tv-game-tab.tgc-tab.sanct-tab .ico{ border-color:#5fd08a; background:#0f1f16; color:#8fe0a0; box-shadow:0 0 12px rgba(95,208,138,.25); }
  .tv-game-tab.sanct-tab[aria-selected="true"]{ border-bottom-color:#5fd08a; }
  .sanct-lock{ display:flex; flex-direction:column; align-items:center; gap:14px; padding:42px 18px; border-radius:14px; border:1px solid #2f5a3c;
    background:radial-gradient(ellipse at center, #13251a, #0b0705 70%); text-align:center; }
  .sanct-lock[hidden], .sanct-game[hidden]{ display:none; }
  .sanct-sigil{ display:flex; width:84px; height:84px; align-items:center; justify-content:center; border-radius:50%; border:1px solid #5fd08a; color:#8fe0a0;
    box-shadow:0 0 30px rgba(95,208,138,.25), inset 0 0 20px rgba(95,208,138,.15); animation:sanctPulse 3.2s ease-in-out infinite; }
  @keyframes sanctPulse{ 50%{ box-shadow:0 0 44px rgba(95,208,138,.45), inset 0 0 26px rgba(95,208,138,.25); } }
  .sanct-riddle{ margin:0; font-family:'Pixelify Sans', 'Courier New', monospace; font-size:17px; line-height:1.5; color:#bfe8c8; }
  .sanct-form{ display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
  .sanct-input{ min-width:220px; min-height:40px; padding:0 12px; border-radius:8px; border:1px solid #2f5a3c; background:#07100b; color:#dff7e5; font:inherit; font-size:15px; letter-spacing:.08em; }
  .sanct-input:focus{ outline:none; border-color:#8fe0a0; box-shadow:0 0 0 3px rgba(95,208,138,.2); }
  .sanct-msg{ margin:0; min-height:20px; font-size:13.5px; color:#8a9a8a; font-family:'Pixelify Sans', 'Courier New', monospace; }
  .sanct-msg.bad{ color:#e08a8a; }
  .sanct-lock.shake{ animation:sanctShake .4s; }
  @keyframes sanctShake{ 20%, 60%{ transform:translateX(-6px); } 40%, 80%{ transform:translateX(6px); } }
  @media (prefers-reduced-motion: reduce){ .sanct-sigil, .sanct-lock.shake{ animation:none; } }
  .sanct-touch{ display:none; position:absolute; z-index:5; bottom:calc(14px + env(safe-area-inset-bottom, 0px)); left:calc(14px + env(safe-area-inset-left, 0px));
    grid-template-columns:repeat(2, 58px); gap:8px; }
  .icc-touch .sanct-touch{ display:grid; }
  .icc-stage.stick-left .sanct-touch{ left:auto; right:calc(14px + env(safe-area-inset-right, 0px)); }
  .sanct-touch button{ width:58px; height:58px; border-radius:50%; border:2px solid rgba(143,224,160,.45); background:rgba(8,20,12,.45); color:#dff7e5;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:0; touch-action:none; -webkit-user-select:none; user-select:none; font:inherit; }
  .sanct-touch button b{ font-size:19px; line-height:1; }
  .sanct-touch button small{ font-size:8.5px; opacity:.8; }
  .sanct-touch button:active{ background:rgba(95,208,138,.35); }
  .sanct-touch button[data-a="ult"]{ grid-column:1 / span 2; justify-self:center; border-color:rgba(229,138,74,.5); color:#f3c9a8; }
  .sanct-touch button[data-a="ult"].ready{ border-color:#e58a4a; box-shadow:0 0 12px rgba(229,138,74,.55); }
  .icc-stage.icc-fs .sanct-touch{ grid-template-columns:repeat(2, 64px); }
  .icc-stage.icc-fs .sanct-touch button{ width:64px; height:64px; }
  /* ===== La Citadelle (v204) ===== */
  .tv-game-tab.tgc-tab.icc-tab{ margin-left:12px; margin-right:12px; color:#8fd3ff; text-shadow:0 0 16px rgba(143,211,255,.55); }
  .tv-game-tab.tgc-tab.icc-tab::after{ display:block; }
  .tv-game-tab.tgc-tab.icc-tab .ico{ border-color:#8fd3ff; background:#0f1a24; box-shadow:0 0 12px rgba(143,211,255,.25); }
  .tv-game-tab.tgc-tab.icc-tab .ico img{ width:22px; height:22px; display:block; }
  .tv-game-tab.icc-tab[aria-selected="true"]{ border-bottom-color:#8fd3ff; }
  .tv-game-tab.tgc-tab.icc-tab[aria-selected="true"] .ico{ border-color:#dff4ff; }
  .tv-game-tab .tv-new.ice{ background:#8fd3ff; color:#0b0705; }
  #tv-g-icc .icc-head{ display:flex; align-items:center; gap:14px; margin-bottom:12px; }
  #tv-g-icc .icc-head .tv-intro{ margin:0; }
  #tv-g-icc .icc-logo{ display:flex; flex:none; width:52px; height:52px; align-items:center; justify-content:center; border-radius:10px; border:1px solid #8fd3ff; background:#0f1a24; box-shadow:0 0 22px rgba(143,211,255,.25); }
  .icc-stage{ position:relative; width:100%; }
  .icc-stage[hidden]{ display:none; }
  .icc-modes{ display:inline-flex; gap:4px; padding:4px; margin-bottom:12px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1); }
  .icc-modes button{ padding:8px 18px; min-height:40px; border:0; border-radius:7px; background:transparent; color:var(--text-1); font-family:'Cinzel', serif; font-size:15px; cursor:pointer; }
  .icc-modes button small{ font-family:'IBM Plex Sans', sans-serif; font-size:11px; color:var(--text-2); margin-left:4px; }
  .icc-modes button[aria-selected="true"]{ background:#0f1a24; color:#dff4ff; box-shadow:inset 0 0 0 1px #8fd3ff; }
  .icc-help[hidden]{ display:none; }
  .icc-stage canvas{ display:block; width:100%; height:auto; aspect-ratio:16 / 10; border-radius:12px; border:3px solid #7a5a24; box-shadow:0 0 0 1px #1b1109, 0 10px 30px rgba(0,0,0,.5); background:#0e1520; touch-action:none; }
  .icc-overlay{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:safe center; gap:14px; padding:20px;
    background:radial-gradient(ellipse at 50% 30%, rgba(40,26,14,.9), rgba(8,5,3,.94)); border-radius:12px; text-align:center; overflow:auto; }
  .icc-overlay[hidden]{ display:none; }
  .icc-overlay h2{ margin:0; font-family:'Cinzel', serif; font-size:clamp(20px,3.2vw,32px); color:#ffd35a; text-shadow:0 2px 0 #1b1109, 0 0 18px rgba(255,180,60,.35); }
  .icc-overlay p{ margin:0; color:var(--text-1); max-width:56ch; }
  .icc-overlay .icc-muted{ color:var(--text-2); }
  .icc-overlay .icc-big{ font-family:'Cinzel', serif; font-size:44px; color:#ffd35a; line-height:1; }
  .icc-cards{ display:grid; grid-template-columns:repeat(3, minmax(0,210px)); gap:12px; }
  .icc-cards.icc-classes{ grid-template-columns:repeat(5, minmax(0,1fr)); gap:8px; width:100%; max-width:900px; }
  .icc-card{ text-align:left; display:flex; flex-direction:column; gap:6px; padding:14px; border-radius:10px; cursor:pointer;
    background:linear-gradient(180deg,#2e2012,#171008); border:2px solid #7a5a24; box-shadow:inset 0 0 0 1px rgba(0,0,0,.6); color:var(--text-0); font:inherit; }
  .icc-card:hover, .icc-card:focus-visible{ border-color:#ffd35a; box-shadow:inset 0 0 0 1px rgba(0,0,0,.6), 0 0 14px rgba(255,200,80,.35); outline:none; }
  .icc-card b{ font-family:'Cinzel', serif; font-size:16px; }
  .icc-card small{ color:#d8c8a8; font-size:13px; line-height:1.45; }
  .icc-card.icc-cls{ padding:10px; gap:4px; } .icc-card.icc-cls b{ font-size:14px; }
  .icc-k{ font-size:12px; color:#e8c060; } .icc-sp{ font-size:10.5px; color:#b8a888; line-height:1.35; }
  .icc-key{ align-self:flex-start; font-size:11px; border:1px solid #7a5a24; border-radius:4px; padding:0 6px; color:#d8c8a8; }
  .icc-diff{ display:inline-flex; gap:3px; padding:4px; border-radius:10px; border:1px solid #7a5a24; background:#140e08; }
  .icc-diff button{ padding:6px 16px; border:0; border-radius:7px; background:transparent; color:#d8c8a8; font:inherit; font-size:13.5px; font-weight:600; cursor:pointer; }
  .icc-diff button[aria-checked="true"]{ background:#3a2812; color:#ffd35a; box-shadow:inset 0 0 0 1px #e8c060; }
  .icc-bosslist{ display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:8px; width:100%; max-width:820px; }
  .icc-bosslist button{ text-align:left; padding:9px 12px; border-radius:8px; cursor:pointer; background:#1e150c; border:1px solid #7a5a24; color:var(--text-0); font:inherit; font-size:13.5px; }
  .icc-bosslist button small{ display:block; color:#b8a888; font-size:11.5px; }
  .icc-linkbtn{ background:none; border:0; color:#8fd3ff; font:inherit; font-size:13.5px; cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
  .icc-route{ display:flex; flex-wrap:wrap; gap:4px; justify-content:center; max-width:640px; }
  .icc-route span{ width:22px; height:6px; border-radius:3px; background:#243246; }
  .icc-route span.icc-done{ background:#e8c060; } .icc-route span.icc-boss{ background:#5a4a2a; } .icc-route span.icc-boss.icc-done{ background:#ffd35a; }
  .icc-hudline{ display:flex; flex-wrap:wrap; gap:8px 18px; justify-content:space-between; align-items:center; margin-top:10px; }
  .icc-talents{ display:flex; flex-wrap:wrap; gap:6px; }
  .icc-talents span{ font-size:12px; padding:2px 9px; border-radius:999px; border:1px solid #7a5a24; color:#e8d8b8; background:#1e150c; }
  .icc-help{ font-size:12.5px; color:var(--text-2); line-height:1.6; margin:8px 0 16px; }
  .icc-cards-row{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) 260px; gap:16px; }
  .icc-box{ display:flex; flex-direction:column; gap:10px; padding:16px; border-radius:10px; border:1px solid var(--line); background:var(--ink-1); }
  .icc-box h3{ margin:0; font-family:'Cinzel', serif; font-size:16px; color:var(--text-0); }
  .icc-box p{ margin:0; font-size:13px; line-height:1.5; color:var(--text-1); }
  .icc-line{ display:flex; justify-content:space-between; gap:12px; font-size:14px; color:var(--text-1); }
  .icc-line b{ color:#8fd3ff; font-variant-numeric:tabular-nums; }
  .icc-hcls{ display:flex; flex-wrap:wrap; gap:4px; }
  .icc-hcls span{ font-size:11px; padding:1px 7px; border-radius:999px; border:1px solid var(--line); color:var(--text-2); }
  .icc-hcls span.on{ border-color:var(--c); color:var(--c); background:color-mix(in srgb, var(--c) 12%, transparent); }
  .icc-rw{ display:flex; align-items:center; gap:10px; font-size:13.5px; color:var(--text-1); }
  .icc-rw img{ flex:none; } .icc-rw b{ color:var(--text-0); }
  .icc-sun{ display:flex; color:#ffd35a; flex:none; } .icc-star{ display:flex; color:var(--gold); flex:none; }
  .icc-rank{ justify-content:center; }
  .tv-me-badge-icon img, .pc-badge-icon img, .icc-bicon{ width:1.25em; height:1.25em; vertical-align:-.25em; }
  @media (max-width:900px){
    .icc-cards-row{ grid-template-columns:1fr; }
    .icc-cards.icc-classes{ grid-template-columns:repeat(2, minmax(0,1fr)); }
    .icc-cards{ grid-template-columns:1fr; width:100%; max-width:320px; }
  }
  /* Classement : cadre doré, séparé des jeux par un trait */
  .tv-game-tab.rank-tab{ margin-left:14px; }
  .tv-game-tab.rank-tab::before{ content:''; position:absolute; left:-14px; top:50%; transform:translateY(-50%); width:1px; height:22px; background:var(--line); }
  .tv-game-tab.tgc-tab[aria-selected="true"] .ico{ border-color:var(--gold); }
  .tgc-tab-badge{ font-family:'IBM Plex Sans', sans-serif; font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
    color:var(--ink-0); background:var(--gold); border-radius:3px; padding:1px 6px; }
  .tgc-tab-badge[hidden]{ display:none; }
  @media (max-width:640px){
    .tv-game-tab.tgc-tab{ font-size:15px; }
    .tv-game-tab.tgc-tab .ico{ width:22px; height:22px; }
    .tv-game-tabs{ flex-wrap:nowrap; overflow-x:auto; overflow-y:hidden; scrollbar-width:none;
      -webkit-mask-image:linear-gradient(90deg, #000 86%, transparent); mask-image:linear-gradient(90deg, #000 86%, transparent); }
    .tv-game-tab{ padding:9px 10px; font-size:14px; }
  }

  /* Wowdle */
  .tv-modes{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
  .tv-guess{ display:flex; gap:8px; max-width:560px; }
  .tv-guess input{ flex:1; min-width:0; }
  .tv-status{ min-height:1.5em; margin:10px 0; color:var(--gold); font-size:14px; }
  .tv-wgrid-wrap{ overflow-x:auto; }
  .tv-wgrid{ border-collapse:separate; border-spacing:4px; min-width:760px; width:100%; }
  .tv-wgrid th{ font-weight:500; color:var(--text-2); font-size:12px; text-align:left; padding:0 6px; }
  .tv-wgrid td{ background:var(--ink-1); border-radius:4px; padding:8px; font-size:13px; }
  .tv-wgrid td.name{ font-weight:600; background:var(--ink-2); color:var(--text-0); }
  .tv-wgrid td.ok{ background:#2f7a3a; color:#fff; }
  .tv-wgrid td.ko{ background:#8a2e22; color:#fff; }
  [data-theme="alliance"] .tv-wgrid td.ok{ background:#2e7a66; }
  [data-theme="alliance"] .tv-wgrid td.ko{ background:#8a3552; }
  .tv-wgrid tr.new td{ animation:tv-flip .45s ease both; }
  .tv-wgrid tr.new td:nth-child(2){ animation-delay:.07s; } .tv-wgrid tr.new td:nth-child(3){ animation-delay:.14s; }
  .tv-wgrid tr.new td:nth-child(4){ animation-delay:.21s; } .tv-wgrid tr.new td:nth-child(5){ animation-delay:.28s; }
  .tv-wgrid tr.new td:nth-child(6){ animation-delay:.35s; } .tv-wgrid tr.new td:nth-child(7){ animation-delay:.42s; }
  @keyframes tv-flip{ from{ transform:rotateX(90deg); opacity:0; } to{ transform:none; opacity:1; } }
  .tv-legend{ color:var(--text-2); font-size:12px; margin-top:10px; line-height:1.5; }

  /* Tenir le tank */
  .tv-stage{ position:relative; background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:20px; overflow:hidden; }
  .tv-boss{ font-family:'Cinzel', serif; font-size:18px; color:var(--text-0); margin-bottom:8px; }
  .tv-castbar{ position:relative; height:42px; background:var(--ink-0); border:1px solid var(--line); border-radius:4px; overflow:hidden; }
  .tv-castbar .fill{ position:absolute; inset:0 auto 0 0; width:0; background:linear-gradient(90deg, var(--frost-0), var(--gold)); box-shadow:0 0 18px color-mix(in srgb, var(--frost-0) 50%, transparent); }
  .tv-castbar .lbl{ position:absolute; inset:0; display:flex; align-items:center; justify-content:space-between; padding:0 14px; font-weight:600; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.8); }
  .tv-castbar.idle .lbl{ color:var(--text-2); font-weight:400; text-shadow:none; }
  .tv-unit{ margin-top:16px; }
  .tv-unit-head{ display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:5px; font-size:13px; color:var(--text-1); }
  .tv-debuff{ background:#6fae3c; color:#10200a; border-radius:3px; padding:1px 8px; font-size:12px; font-weight:600; }
  .tv-bar{ position:relative; height:24px; background:var(--ink-0); border:1px solid var(--line); border-radius:4px; overflow:hidden; }
  .tv-bar .fill{ position:absolute; inset:0 auto 0 0; background:var(--ok); }
  .tv-bar.mana .fill{ background:#3f78d8; }
  .tv-bar.pcast .fill{ background:var(--gold); }
  .tv-bar.goal{ height:8px; }
  .tv-bar.goal .fill{ background:var(--gold); }
  .tv-bar .shield{ position:absolute; top:0; bottom:0; background:#e9d58a; opacity:.75; }
  .tv-bar .txt{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:600; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.85); }
  .tv-bar.pcast{ height:16px; margin-top:10px; visibility:hidden; }
  .tv-bar.pcast.on{ visibility:visible; }
  .tv-spells{ display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; margin-top:14px; }
  .tv-spell{ position:relative; background:var(--ink-2); border:1px solid var(--line); border-radius:6px; padding:10px 8px 8px; text-align:left; overflow:hidden; min-height:74px; color:var(--text-0); font:inherit; cursor:pointer; }
  .tv-spell .key{ position:absolute; top:6px; right:8px; color:var(--text-2); font-size:11px; }
  .tv-spell .sname{ display:block; font-weight:600; font-size:13px; line-height:1.2; padding-right:14px; }
  .tv-spell .scost{ display:block; color:var(--text-2); font-size:11px; margin-top:3px; }
  .tv-spell .cd{ position:absolute; left:0; right:0; bottom:0; height:0; background:rgba(0,0,0,.55); }
  .tv-spell.nomana{ opacity:.5; }
  .tv-spell.pressed{ border-color:var(--gold); }
  .tv-meta{ display:flex; gap:22px; flex-wrap:wrap; margin-top:14px; color:var(--text-1); font-size:13px; }
  .tv-meta b{ color:var(--text-0); }
  .tv-goal-wrap{ margin-top:10px; }
  .tv-goal-wrap small{ display:block; color:var(--text-2); font-size:11px; margin-bottom:4px; }
  .tv-overlay{ position:absolute; inset:0; background:rgba(10,6,4,.86); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; text-align:center; padding:20px; }
  [data-theme="alliance"] .tv-overlay{ background:rgba(12,11,30,.88); }
  .tv-overlay[hidden]{ display:none; }
  .tv-overlay p{ margin:0; max-width:46ch; color:var(--text-1); font-size:14px; }
  .tv-overlay .big{ font-family:'Cinzel', serif; font-size:22px; color:var(--gold); }
  .tv-log{ list-style:none; padding:0; margin:14px 0 0; font-size:13px; color:var(--text-2); }
  .tv-log li{ padding:3px 0; border-bottom:1px solid color-mix(in srgb, var(--line) 60%, transparent); }
  .tv-log li:first-child{ color:var(--text-0); }
  .tv-hit{ animation:tv-hitf .3s; }
  @keyframes tv-hitf{ 0%{ box-shadow:inset 0 0 0 999px rgba(200,40,20,.4); } 100%{ box-shadow:none; } }

  /* Duel */
  .tv-cls-icon{ width:40px; height:40px; border-radius:6px; object-fit:cover; flex:none; border:2px solid var(--cc); box-shadow:0 0 12px 1px color-mix(in srgb, var(--cc) 50%, transparent); background:var(--ink-2); display:inline-block; }
  .tv-cls-icon.lg{ width:54px; height:54px; }
  .tv-classes{ display:grid; grid-template-columns:repeat(auto-fit, minmax(210px, 1fr)); gap:10px; }
  .tv-cls{ display:flex; gap:12px; align-items:center; background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:12px; text-align:left; color:var(--text-0); font:inherit; cursor:pointer; }
  .tv-cls:hover{ border-color:var(--frost-0); }
  .tv-cls b{ display:block; font-family:'Cinzel', serif; font-size:15px; }
  .tv-cls small{ display:block; color:var(--text-2); font-size:12px; line-height:1.4; margin-top:2px; }
  .tv-duel-top{ display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:12px; color:var(--text-1); font-size:13px; }
  .tv-duel-top b{ color:var(--text-0); }
  .tv-versus{ display:grid; grid-template-columns:1fr auto 1fr; gap:12px; align-items:stretch; }
  .tv-vs{ align-self:center; font-family:'Cinzel', serif; color:var(--text-2); }
  .tv-fighter{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:14px; min-height:110px; }
  .tv-fighter.turn{ border-color:var(--frost-0); }
  .tv-fighter-head{ display:flex; gap:10px; align-items:center; margin-bottom:10px; }
  .tv-fighter-head h3{ font-family:'Cinzel', serif; font-size:15px; margin:0; color:var(--text-0); }
  .tv-tags{ display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; min-height:22px; }
  .tv-tag{ font-size:11px; border-radius:3px; padding:1px 7px; border:1px solid var(--line); color:var(--text-1); }
  .tv-tag.dot{ border-color:#6fae3c; color:#8fd05a; }
  .tv-tag.stun{ border-color:var(--warn); color:var(--warn); }
  .tv-tag.def{ border-color:#e9d58a; color:#e9d58a; }
  .tv-abilities{ display:grid; grid-template-columns:repeat(2, 1fr); gap:8px; margin-top:14px; }
  .tv-ability{ background:var(--ink-2); border:1px solid var(--line); border-radius:6px; padding:10px 12px; text-align:left; color:var(--text-0); font:inherit; cursor:pointer; }
  .tv-ability:hover:not(:disabled){ border-color:var(--frost-0); }
  .tv-ability:disabled{ opacity:.45; cursor:default; }
  .tv-ability b{ display:block; font-size:13px; }
  .tv-ability small{ color:var(--text-2); font-size:12px; }
  .tv-result{ margin-top:14px; background:var(--ink-1); border:1px solid var(--frost-0); border-radius:6px; padding:14px 16px; display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
  .tv-result p{ margin:0; flex:1 1 240px; color:var(--text-1); font-size:14px; }
  .tv-result .big{ display:block; font-family:'Cinzel', serif; font-size:19px; color:var(--gold); }


  /* Duel : effets de sorts (éléments en position fixe au-dessus de la page) */
  .tv-fx{ position:fixed; z-index:9000; pointer-events:none; transform:translate(-50%,-50%); }
  .tv-fx-bolt{ width:18px; height:18px; border-radius:50%; background:radial-gradient(circle, #fff 0%, var(--c1) 35%, var(--c2) 75%, transparent 100%); box-shadow:0 0 14px 5px var(--c2), -14px 0 18px -4px var(--c2); }
  .tv-fx-bolt.big{ width:28px; height:28px; box-shadow:0 0 22px 8px var(--c2), -22px 0 26px -4px var(--c2); }
  .tv-fx-arrow{ width:38px; height:3px; border-radius:2px; background:linear-gradient(90deg, transparent, var(--c2) 40%, var(--c1)); box-shadow:0 0 8px var(--c2); }
  .tv-fx-burst{ width:60px; height:60px; border-radius:50%; border:3px solid var(--c1); background:radial-gradient(circle, color-mix(in srgb, var(--c1) 60%, transparent), transparent 70%); box-shadow:0 0 18px var(--c2); }
  .tv-fx-burst.big{ width:90px; height:90px; }
  .tv-fx-slash{ width:84px; height:5px; border-radius:50%; background:linear-gradient(90deg, transparent, var(--c1) 30%, #fff 50%, var(--c1) 70%, transparent); box-shadow:0 0 12px var(--c2); }
  .tv-fx-slash.big{ width:110px; height:7px; }
  .tv-fx-beam{ width:26px; height:180px; transform-origin:50% 100%; background:linear-gradient(180deg, transparent, var(--c1) 40%, #fff); border-radius:13px; box-shadow:0 0 22px 6px var(--c2); }
  .tv-fx-aura{ width:78px; height:78px; border-radius:50%; border:3px solid var(--c1); box-shadow:0 0 20px 4px var(--c2), inset 0 0 16px var(--c2); }
  .tv-fx-healring{ width:78px; height:78px; border-radius:50%; background:radial-gradient(circle, transparent 45%, color-mix(in srgb, var(--c1) 70%, transparent) 60%, transparent 72%); box-shadow:0 0 26px 6px var(--c2); }
  .tv-fx-float{ font-family:'Cinzel', serif; font-weight:700; font-size:18px; white-space:nowrap; text-shadow:0 2px 4px rgba(0,0,0,.9); }
  .tv-fx-float.dmg{ color:#ff5a45; font-size:20px; }
  .tv-fx-float.dot{ color:#a8e060; }
  .tv-fx-float.heal{ color:#7dffa0; font-size:20px; }
  .tv-fx-float.stun{ color:#ffd24a; }
  .tv-fx-float.info{ color:#f3ecd0; font-size:14px; }
  .tv-cls-icon.tv-shake{ animation:tv-shake .42s ease; }
  @keyframes tv-shake{
    0%,100%{ transform:translate(0,0) rotate(0); }
    15%{ transform:translate(-5px,1px) rotate(-4deg); filter:brightness(1.6) sepia(.4) hue-rotate(-30deg) saturate(2); } 30%{ transform:translate(5px,-1px) rotate(3deg); }
    45%{ transform:translate(-4px,0) rotate(-2deg); } 60%{ transform:translate(3px,1px) rotate(2deg); }
    80%{ transform:translate(-2px,0) rotate(-1deg); }
  }
  .tv-cls-icon.tv-heal-glow{ animation:tv-heal-glow .9s ease; }
  @keyframes tv-heal-glow{
    0%{ box-shadow:0 0 12px 1px color-mix(in srgb, var(--cc) 50%, transparent); }
    35%{ box-shadow:0 0 18px 8px rgba(125,255,160,.75), 0 0 36px 14px rgba(242,194,48,.35); transform:scale(1.08); }
    100%{ box-shadow:0 0 12px 1px color-mix(in srgb, var(--cc) 50%, transparent); transform:scale(1); }
  }



  /* La Taverne : classement */
  .tv-rk-wrap{ overflow-x:auto; margin-bottom:12px; }
  .tv-rk{ width:100%; min-width:420px; border-collapse:collapse; font-size:14px; }
  .tv-rk th{ text-align:left; font-weight:500; font-size:12px; color:var(--text-2); padding:6px 10px; border-bottom:1px solid var(--line); }
  .tv-rk td{ padding:9px 10px; border-bottom:1px solid color-mix(in srgb, var(--line) 60%, transparent); color:var(--text-1); }
  .tv-rk td.rk, .tv-rk th.rk{ width:64px; text-align:center; }
  .tv-rk td.rk{ font-family:'IBM Plex Mono', monospace; color:var(--text-2); }
  .tv-rk td.name{ color:var(--text-0); font-weight:600; }
  .tv-rk td.score{ font-family:'IBM Plex Mono', monospace; color:var(--frost-1); }
  .tv-rk td.bdg, .tv-rk th.bdg{ width:70px; text-align:center; }
  .tv-rk td.bdg{ color:var(--ok); }
  .tv-rk tr.top td.rk{ font-size:18px; }
  .tv-rk tr.me td{ background:color-mix(in srgb, var(--frost-0) 12%, transparent); }
  .tv-rk tr.me td.name::after{ content:' (toi)'; font-weight:400; color:var(--text-2); }
  .tv-rk-empty{ text-align:center; color:var(--text-2); padding:22px 10px !important; }

  /* La Taverne : Ne reste pas dans le feu & Rotation parfaite */
  .tv-stage.tv-flush{ padding:0; }
  .tv-canvas{ display:block; width:100%; touch-action:none; }
  .tv-kbd{ font-family:'IBM Plex Mono', monospace; font-size:11px; background:var(--ink-2); border:1px solid var(--line); border-radius:3px; padding:0 5px; color:var(--text-0); }
  .tv-feu-hud{ align-items:center; }
  .tv-hpbar{ flex:1 1 200px; height:14px; background:var(--ink-0); border:1px solid var(--line); border-radius:3px; overflow:hidden; position:relative; }
  .tv-hpbar .fill{ position:absolute; inset:0 auto 0 0; width:100%; background:var(--ok); transition:width .12s linear; }
  .tv-stats{ display:flex; gap:22px; justify-content:center; flex-wrap:wrap; margin:4px 0; }
  .tv-stats[hidden]{ display:none; }
  .tv-stats div{ text-align:center; }
  .tv-stats b{ display:block; font-family:'IBM Plex Mono', monospace; font-size:21px; color:var(--frost-1); font-weight:500; }
  .tv-stats span{ font-size:11px; color:var(--text-2); }
  .tv-legend{ display:flex; gap:16px; flex-wrap:wrap; margin-top:10px; font-size:12px; color:var(--text-2); }
  .tv-legend i{ display:inline-block; width:11px; height:11px; border-radius:50%; vertical-align:-1px; margin-right:5px; }
  .tv-pads{ display:grid; grid-template-columns:repeat(4, 1fr); gap:6px; margin-top:8px; }
  .tv-pads button{ background:var(--ink-2); border:1px solid var(--line); border-radius:6px; padding:12px 4px; font:inherit; font-size:12px; color:var(--text-1); line-height:1.3; touch-action:manipulation; }
  .tv-pads button.hit{ border-color:var(--gold); color:var(--text-0); }
  .tv-pads small{ display:block; font-family:'IBM Plex Mono', monospace; color:var(--text-2); font-size:11px; }
  @media (hover:hover) and (pointer:fine){ .tv-pads{ display:none; } }

  .tv-toasts{ position:fixed; left:50%; bottom:28px; transform:translateX(-50%); z-index:10000; display:flex; flex-direction:column-reverse; align-items:center; gap:8px; max-width:min(92vw, 520px); pointer-events:none; }
  .tv-toast{ position:relative; left:auto; bottom:auto; transform:none; z-index:10000; background:var(--ink-2); color:var(--text-0); border:1px solid var(--gold); border-radius:6px; padding:12px 18px; font-size:14px; box-shadow:0 10px 30px rgba(0,0,0,.5); animation:tv-toast-in .35s ease; transition:opacity .5s ease; }
  .tv-toast.out{ opacity:0; }
  @media (max-width:600px){ .tv-toasts{ left:10px; right:10px; transform:none; max-width:none; } }
  @keyframes tv-toast-in{ from{ transform:translate(-50%, 16px); opacity:0; } to{ transform:translateX(-50%); opacity:1; } }

  @media (max-width:640px){
    .tv-spells{ grid-template-columns:repeat(2, 1fr); }
    .tv-versus{ grid-template-columns:1fr; }
    .tv-vs{ display:none; }
    .tv-abilities{ grid-template-columns:1fr; }
  }
  @media (prefers-reduced-motion:reduce){
    .tv-wgrid tr.new td, .tv-hit, .tv-toast, .tv-cls-icon.tv-shake, .tv-cls-icon.tv-heal-glow{ animation:none; }
  }


  /* La Taverne : Reborn TCG */
  .tgc{ --t-membre:#9d9d9d; --t-etincelle:#e8e8e8; --t-braise:#3fcf4a; --t-immortel:#e6cc80; --t-dev:#2f8fe8; --t-alar:#a64df0; --t-phenix:#ff8000; }
  .tgc-top{ display:grid; grid-template-columns:260px 1fr; gap:14px; margin-bottom:22px; }
  .tgc-box{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:14px 16px; }
  .tgc-box h3{ font-family:'Cinzel', serif; font-size:16px; color:var(--text-0); margin:0 0 2px; }
  .tgc-box .sub{ color:var(--text-2); font-size:13px; margin:0 0 12px; }
  .tgc-claim{ display:flex; flex-direction:column; text-align:center; }
  .tgc-claim .pic{ height:130px; display:grid; place-items:center; margin-bottom:10px; }
  .tgc-claim .pic img{ height:130px; filter:drop-shadow(0 8px 14px rgba(0,0,0,.55)); }
  .tgc-claim .pic img.mystery{ filter:brightness(.18) drop-shadow(0 0 16px color-mix(in srgb, var(--frost-0) 60%, transparent)); }
  .tgc-claim .tv-btn{ margin-top:auto; width:100%; }
  .tgc-when{ font-size:12px; color:var(--text-2); margin-top:6px; min-height:1.4em; }
  .tgc-shelf{ display:flex; gap:14px; flex-wrap:wrap; align-items:flex-end; align-content:flex-start; min-height:140px; }
  .tgc-pack{ background:none; border:0; padding:0; cursor:pointer; width:78px; text-align:center; font:inherit; color:var(--text-2); }
  .tgc-pack img{ width:78px; display:block; filter:drop-shadow(0 6px 10px rgba(0,0,0,.55)); transition:transform .2s; }
  .tgc-pack:hover img{ transform:translateY(-5px) rotate(-2deg); }
  .tgc-pack span{ display:block; font-size:12px; margin-top:4px; }
  .tgc-pack .src{ display:block; font-size:10.5px; color:var(--gold); margin-top:1px; }
  .tgc-pack:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:4px; }
  .tgc-empty{ color:var(--text-2); font-size:14px; font-style:italic; align-self:center; margin:0; }

  .tgc-bar-head{ display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center; justify-content:space-between; margin-bottom:12px; }
  .tgc-count{ font-size:13px; color:var(--text-1); min-width:200px; }
  .tgc-count b{ font-family:'Cinzel', serif; font-size:20px; color:var(--gold); }
  .tgc-count .tv-bar{ margin-top:5px; }
  /* Barre segmentée : navigation principale du jeu, volontairement
     différente des filtres par rang (petites pilules) juste en dessous. */
  .tgc-gem{ margin-left:auto; display:inline-flex; align-items:center; gap:8px; padding:7px 14px; border-radius:999px; border:1px solid #7a53c0; background:linear-gradient(180deg,#2a1a40,#1a1028); color:#e9d9ff; font:inherit; font-size:13.5px; cursor:pointer; }
  .tgc-gem svg{ color:#b784ff; } .tgc-gem b{ font-family:'IBM Plex Mono',monospace; font-size:14.5px; } .tgc-gem span{ font-size:12px; color:#b9a6d8; }
  .tgc-gem:hover{ border-color:#b784ff; }
  .tgc-gem.pop{ animation:gempop .5s ease-out; }
  @keyframes gempop{ 0%{ transform:scale(1) } 40%{ transform:scale(1.09); box-shadow:0 0 16px rgba(183,132,255,.6) } 100%{ transform:scale(1) } }
  @media (max-width:760px){ .tgc-gem{ margin-left:0; } .tgc-gem span{ display:none; } }
  .tgc-views{ display:inline-flex; gap:4px; padding:5px; border:1px solid var(--line); border-radius:11px; background:var(--ink-1); }
  .tgc-view-btn{ display:flex; align-items:center; gap:9px; padding:10px 16px; border:0; border-radius:8px; background:transparent;
    font:inherit; font-size:14px; font-weight:600; color:var(--text-1); cursor:pointer; white-space:nowrap; transition:background .15s, color .15s; }
  .tgc-view-btn .ico{ display:flex; color:var(--text-2); }
  .tgc-view-btn .meta{ font-size:11.5px; font-weight:500; padding:1px 7px; border-radius:999px; background:var(--ink-2); color:var(--text-2); }
  .tgc-view-btn:hover{ color:var(--text-0); background:var(--ink-2); }
  .tgc-view-btn[aria-pressed="true"]{ background:linear-gradient(180deg, var(--frost-0), color-mix(in srgb, var(--frost-0) 65%, #000));
    color:#1a0d06; box-shadow:0 4px 14px color-mix(in srgb, var(--frost-0) 35%, transparent); }
  .tgc-view-btn[aria-pressed="true"] .ico{ color:#1a0d06; }
  .tgc-view-btn[aria-pressed="true"] .meta{ background:rgba(26,13,6,.22); color:#3a1c08; }
  .tgc-view-btn:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
  @media (max-width:640px){
    .tgc-views{ width:100%; overflow-x:auto; }
    .tgc-view-btn{ padding:9px 12px; font-size:13px; }
    .tgc-view-btn .meta{ display:none; }
  }
  .tgc-filters{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:14px; }
  .tgc-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(128px, 1fr)); gap:14px; }

  .tgc-card{ --tc:var(--t-membre); --cc:#888; position:relative; aspect-ratio:5/7; border-radius:9px; padding:4px;
    background:linear-gradient(160deg, color-mix(in srgb, var(--tc) 60%, #fff) 0%, var(--tc) 30%, color-mix(in srgb, var(--tc) 50%, #000) 100%);
    box-shadow:0 6px 16px rgba(0,0,0,.5); }
  .tgc-card[data-tier="etincelle"]{ --tc:var(--t-etincelle); }
  .tgc-card[data-tier="braise"]{ --tc:var(--t-braise); }
  .tgc-card[data-tier="immortel"]{ --tc:var(--t-immortel); }
  .tgc-card[data-tier="dev"]{ --tc:var(--t-dev); }
  .tgc-card[data-tier="alar"]{ --tc:var(--t-alar); }
  .tgc-card[data-tier="phenix"]{ --tc:var(--t-phenix); }
  .tgc-card .in{ position:relative; height:100%; border-radius:6px; overflow:hidden; background:var(--ink-0); display:flex; flex-direction:column; }
  .tgc-card .art{ flex:1; position:relative; display:grid; place-items:center; overflow:hidden;
    background:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--cc) 55%, transparent) 0%, color-mix(in srgb, var(--cc) 14%, var(--ink-0)) 58%, var(--ink-0) 100%); }
  .tgc-card .art::after{ content:""; position:absolute; inset:0; background:repeating-linear-gradient(135deg, rgba(255,255,255,.035) 0 2px, transparent 2px 7px); pointer-events:none; }
  .tgc-card .art img{ width:56%; aspect-ratio:1; object-fit:cover; border-radius:50%; border:2px solid var(--cc); box-shadow:0 0 18px 2px color-mix(in srgb, var(--cc) 60%, transparent); position:relative; z-index:1; }
  .tgc-card .art .glyph{ font-family:'Cinzel', serif; font-weight:700; font-size:40px; color:#fff; text-shadow:0 0 18px var(--cc); position:relative; z-index:1; }
  .tgc-card .num{ position:absolute; top:5px; left:7px; font-size:10px; color:rgba(255,255,255,.65); z-index:2; font-family:'IBM Plex Mono', monospace; }
  .tgc-card .gem{ position:absolute; top:6px; right:7px; width:8px; height:8px; border-radius:50%; background:var(--tc); box-shadow:0 0 7px var(--tc); z-index:2; }
  .tgc-card .plate{ padding:6px 7px 7px; background:var(--ink-2); border-top:1px solid color-mix(in srgb, var(--tc) 55%, #000); }
  .tgc-card .name{ font-family:'Cinzel', serif; font-weight:700; font-size:13.5px; color:var(--text-0); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .tgc-card .meta{ display:flex; justify-content:space-between; gap:4px; font-size:11px; color:var(--text-2); }
  .tgc-card .meta .rk{ color:var(--tc); font-weight:600; }
  .tgc-card .dup{ position:absolute; right:-7px; bottom:-7px; z-index:3; background:var(--ink-0); border:1px solid var(--line); color:var(--gold); font-size:12px; font-weight:600; padding:1px 7px; border-radius:10px; }
  .tgc-card[data-tier="phenix"] .in::before, .tgc-card[data-tier="alar"] .in::before{ content:""; position:absolute; inset:0; z-index:4; pointer-events:none; background-size:250% 250%; animation:tgc-foil 4s linear infinite; }
  .tgc-card[data-tier="phenix"] .in::before{ mix-blend-mode:color-dodge; background-image:linear-gradient(115deg, transparent 30%, rgba(255,200,120,.45) 45%, rgba(255,120,200,.25) 50%, rgba(120,220,255,.3) 55%, transparent 70%); }
  .tgc-card[data-tier="alar"] .in::before{ mix-blend-mode:screen; animation-duration:5.5s; background-image:linear-gradient(115deg, transparent 38%, rgba(190,140,255,.25) 50%, transparent 62%); }
  @keyframes tgc-foil{ from{ background-position:120% 0; } to{ background-position:-120% 0; } }
  .tgc-card.locked{ background:var(--ink-2); }
  .tgc-card.locked .in{ background:repeating-linear-gradient(45deg, var(--ink-1) 0 8px, var(--ink-0) 8px 16px); }
  .tgc-card.locked .in::before{ display:none; }
  .tgc-card.locked .art{ background:none; }
  .tgc-card.locked .glyph{ color:var(--line); text-shadow:none; }
  .tgc-card.locked .name{ color:var(--text-2); opacity:.5; }
  .tgc-card.locked .meta span:first-child{ visibility:hidden; }

  /* Marché */
  .tgc-market{ display:grid; grid-template-columns:1fr 300px; gap:14px; align-items:start; }
  .tgc-offers{ display:flex; flex-direction:column; gap:10px; }
  .tgc-offer{ display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:center; background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:10px 14px; }
  .tgc-offer .who{ font-size:12px; color:var(--text-2); min-width:96px; }
  .tgc-offer .who b{ display:block; font-family:'Cinzel', serif; font-size:15px; color:var(--text-0); }
  .tgc-swap{ display:flex; align-items:center; gap:10px; }
  .tgc-swap .lbl{ font-size:11px; color:var(--text-2); text-align:center; margin-bottom:3px; }
  .tgc-swap .arrow{ color:var(--gold); font-size:20px; }
  .tgc-mini{ width:74px; }
  .tgc-mini .tgc-card{ padding:3px; border-radius:6px; }
  .tgc-mini .tgc-card .in{ border-radius:4px; }
  .tgc-mini .tgc-card .name{ font-size:10.5px; }
  .tgc-mini .tgc-card .meta{ font-size:9.5px; justify-content:flex-end; }
  .tgc-mini .tgc-card .meta span:first-child{ display:none; }
  .tgc-mini .tgc-card .num{ font-size:8px; top:3px; left:4px; }
  .tgc-mini .tgc-card .gem{ width:6px; height:6px; top:4px; right:4px; }
  .tgc-mini .tgc-card .plate{ padding:3px 4px 4px; }
  .tgc-own{ font-size:11px; color:var(--text-2); text-align:center; margin-top:3px; }
  .tgc-own.ok{ color:var(--ok); }
  .tgc-offer .act{ display:flex; flex-direction:column; align-items:flex-end; gap:4px; max-width:160px; }
  .tgc-offer .act small{ font-size:12px; color:var(--text-2); text-align:right; }
  .tgc-side{ display:flex; flex-direction:column; gap:12px; }
  .tgc-side label{ display:block; font-size:12px; color:var(--text-2); margin:8px 0 4px; }
  .tgc-side select{ width:100%; }
  .tgc-side .tv-btn{ width:100%; margin-top:12px; }
  .tgc-msg{ font-size:12px; color:var(--gold); margin-top:6px; min-height:1.3em; }
  .tgc-list{ list-style:none; margin:0; padding:0; font-size:13px; color:var(--text-1); }
  .tgc-list li{ display:flex; justify-content:space-between; align-items:center; gap:8px; padding:6px 0; border-bottom:1px solid color-mix(in srgb, var(--line) 60%, transparent); }
  .tgc-list li:last-child{ border-bottom:0; }
  .tgc-side .tgc-list .tv-btn{ width:auto; margin-top:0; flex:none; padding:4px 10px; font-size:12px; }
  .tgc-t-membre{ color:var(--t-membre); } .tgc-t-etincelle{ color:var(--t-etincelle); } .tgc-t-braise{ color:var(--t-braise); } .tgc-t-immortel{ color:var(--t-immortel); } .tgc-t-dev{ color:var(--t-dev); } .tgc-t-alar{ color:var(--t-alar); } .tgc-t-phenix{ color:var(--t-phenix); }

  /* Taux */
  .tgc-rates{ margin-top:26px; }
  .tgc-rates summary{ cursor:pointer; font-family:'Cinzel', serif; font-size:16px; color:var(--text-0); }
  .tgc-rates-grid{ display:grid; grid-template-columns:1fr 1.3fr; gap:14px; margin-top:12px; }
  .tgc-rates .tv-rk{ min-width:0; }
  .tgc-rates .tv-rk td, .tgc-rates .tv-rk th{ text-align:right; }
  .tgc-rates .tv-rk td:first-child, .tgc-rates .tv-rk th:first-child{ text-align:left; }
  .tgc-note{ font-size:12px; color:var(--text-2); margin:8px 0 0; line-height:1.5; }

  /* Ouverture d'un booster */
  .tgc-stage{ position:fixed; inset:0; z-index:9500; display:none; flex-direction:column; align-items:center; justify-content:center; gap:20px; padding:24px;
    background:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--frost-0) 22%, rgba(8,5,3,.94)), rgba(8,5,3,.97) 70%); }
  [data-theme="alliance"] .tgc-stage{ background:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--frost-0) 22%, rgba(10,9,26,.94)), rgba(10,9,26,.97) 70%); }
  .tgc-stage.show{ display:flex; }
  .tgc-hint{ font-family:'Cinzel', serif; font-size:17px; color:var(--gold); text-align:center; min-height:1.5em; margin:0; }
  .tgc-bigpack{ position:relative; width:min(220px, 55vw); border:0; background:none; padding:0; cursor:pointer; }
  .tgc-bigpack img{ width:100%; display:block; filter:drop-shadow(0 18px 36px rgba(0,0,0,.7)) drop-shadow(0 0 26px color-mix(in srgb, var(--frost-0) 45%, transparent)); }
  .tgc-bigpack .top{ position:absolute; inset:0; clip-path:inset(0 0 86% 0); }
  .tgc-bigpack .bottom{ clip-path:inset(14% 0 0 0); }
  .tgc-bigpack.shake{ animation:tgc-shake .5s ease-in-out; }
  .tgc-bigpack.torn .top{ animation:tgc-tear .6s forwards ease-in; }
  .tgc-bigpack.torn .bwrap{ animation:tgc-sink .7s .35s forwards ease-in; }
  @keyframes tgc-shake{ 0%,100%{ transform:rotate(0); } 20%{ transform:rotate(-4deg); } 40%{ transform:rotate(4deg); } 60%{ transform:rotate(-3deg); } 80%{ transform:rotate(2deg); } }
  @keyframes tgc-tear{ to{ transform:translate(60px, -120px) rotate(28deg); opacity:0; } }
  @keyframes tgc-sink{ to{ transform:translateY(80px) scale(.9); opacity:0; } }
  .tgc-reveal{ display:none; gap:12px; justify-content:center; flex-wrap:wrap; max-width:880px; }
  .tgc-reveal.show{ display:flex; }
  .tgc-flip{ position:relative; width:clamp(112px, 15vw, 150px); aspect-ratio:5/7; perspective:900px; border:0; background:none; padding:0; cursor:pointer; opacity:0; transform:translateY(36px); animation:tgc-deal .45s forwards; }
  @keyframes tgc-deal{ to{ opacity:1; transform:none; } }
  .tgc-flip .inner{ position:relative; width:100%; height:100%; transition:transform .6s cubic-bezier(.3,.7,.3,1); transform-style:preserve-3d; }
  .tgc-flip.open .inner{ transform:rotateY(180deg); }
  .tgc-flip .face{ position:absolute; inset:0; backface-visibility:hidden; -webkit-backface-visibility:hidden; }
  .tgc-flip .face.front{ transform:rotateY(180deg); }
  .tgc-flip .face .tgc-card{ height:100%; transition:box-shadow .4s .45s; }
  .tgc-flip.open.t-braise .tgc-card{ box-shadow:0 0 14px 1px var(--t-braise); }
  .tgc-flip.open.t-immortel .tgc-card{ box-shadow:0 0 18px 2px var(--t-immortel); }
  .tgc-flip.open.t-dev .tgc-card{ box-shadow:0 0 22px 2px var(--t-dev); }
  .tgc-flip.open.t-alar .tgc-card{ box-shadow:0 0 30px 4px var(--t-alar); }
  .tgc-flip.open.t-phenix .tgc-card{ box-shadow:0 0 44px 8px var(--t-phenix); }
  .tgc-back{ height:100%; border-radius:9px; border:4px solid color-mix(in srgb, var(--frost-0) 55%, #000); display:grid; place-items:center;
    background:radial-gradient(circle, color-mix(in srgb, var(--frost-0) 30%, transparent), transparent 58%), repeating-linear-gradient(45deg, var(--ink-2) 0 10px, var(--ink-1) 10px 20px); box-shadow:0 6px 16px rgba(0,0,0,.5); }
  .tgc-back b{ font-family:'Cinzel', serif; font-size:48px; color:var(--frost-0); text-shadow:0 0 16px var(--frost-0); }
  .tgc-new{ position:absolute; top:-9px; left:50%; transform:translateX(-50%); z-index:5; background:var(--gold); color:var(--ink-0); font-size:11px; font-weight:700; padding:1px 8px; border-radius:9px; opacity:0; transition:opacity .3s .5s; }
  .tgc-flip.open .tgc-new{ opacity:1; }
  .tgc-actions{ display:flex; gap:10px; }


  .tgc-intro{ max-width:720px; margin:0 0 20px; }
  .tgc-guide{ background:var(--ink-1); border:1px solid var(--line); border-radius:6px; padding:12px 16px; max-width:none; }
  .tgc-guide > summary{ cursor:pointer; list-style:none; display:flex; align-items:center; flex-wrap:wrap; gap:6px 12px; font-family:'Cinzel',serif; font-size:15px; color:var(--text-0); }
  .tgc-guide > summary::-webkit-details-marker{ display:none; }
  .tgc-guide > summary::before{ content:''; width:7px; height:7px; border-right:2px solid var(--text-2); border-bottom:2px solid var(--text-2); transform:rotate(-45deg); transition:transform .2s; flex:none; }
  .tgc-guide[open] > summary::before{ transform:rotate(45deg); }
  .tgc-guide[open] > summary{ margin-bottom:12px; }
  .tgc-guide > summary span{ font-family:'IBM Plex Sans',sans-serif; font-size:12.5px; color:var(--text-2); }
  .tgc-guide > summary:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:3px; }
  .tgc-intro .lead{ margin:0 0 12px; color:var(--text-1); font-size:14px; line-height:1.65; }
  .tgc-intro .lead b{ color:var(--gold); font-weight:600; }
  .tgc-intro ul{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:6px 24px; }
  .tgc-intro li{ position:relative; padding-left:14px; font-size:13.5px; line-height:1.6; color:var(--text-2); }
  .tgc-intro li::before{ content:''; position:absolute; left:0; top:9px; width:5px; height:5px; border-radius:50%; background:var(--gold); }
  .tgc-intro li b{ color:var(--text-0); font-weight:600; }
  /* Carte agrandie (clic sur une carte de la collection) */
  .tgc-zoom-holder{ perspective:1100px; width:min(340px, 74vw); }
  .tgc-zoom-holder .tgc-card{ transform-style:preserve-3d; will-change:transform; transition:transform .25s ease-out, box-shadow .25s; }
  .tgc-zoom-holder.live .tgc-card{ transition:none; }
  .tgc-zoom-holder .tgc-card .in{ transform-style:preserve-3d; }
  .tgc-zoom-holder .tgc-card .art img{ transform:translateZ(26px); }
  .tgc-zoom-holder .tgc-card .plate{ transform:translateZ(14px); }
  .tgc-zoom-holder .tgc-card .name{ font-size:22px; }
  .tgc-zoom-holder .tgc-card .meta{ font-size:15px; }
  .tgc-zoom-holder .tgc-card .num{ font-size:14px; top:10px; left:14px; }
  .tgc-zoom-holder .tgc-card .gem{ width:13px; height:13px; top:11px; right:14px; }
  .tgc-zoom-holder .tgc-card .dup{ font-size:14px; padding:2px 10px; right:-9px; bottom:-9px; }
  .tgc-glare, .tgc-foil{ position:absolute; inset:0; z-index:5; pointer-events:none; }
  .tgc-glare{ mix-blend-mode:soft-light;
    background:radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.55), rgba(255,255,255,.12) 38%, transparent 62%); }
  .tgc-foil{ opacity:.4; mix-blend-mode:color-dodge; background-size:200% 200%;
    background-image:linear-gradient(115deg, transparent 28%, rgba(255,200,120,.35) 42%, rgba(255,120,200,.28) 50%, rgba(120,220,255,.32) 58%, transparent 72%);
    background-position:calc(50% + var(--px,0) * 60%) calc(50% + var(--py,0) * 60%); }
  .tgc-zoom-holder .tgc-card[data-tier="phenix"] .tgc-foil{ opacity:.85; }
  .tgc-zoom-holder .tgc-card[data-tier="alar"] .tgc-foil{ opacity:.7; }
  .tgc-zoom-holder .tgc-card[data-tier="membre"] .tgc-foil,
  .tgc-zoom-holder .tgc-card[data-tier="etincelle"] .tgc-foil{ opacity:.22; }
  .tgc-zoom-cap{ margin:0; text-align:center; font-size:14px; color:var(--text-1); }
  .tgc-zoom-cap b{ font-family:'Cinzel', serif; font-size:20px; color:var(--text-0); display:block; margin-bottom:3px; }
  .tgc-grid .tgc-card{ cursor:pointer; }
  .tgc-grid .tgc-card.locked{ cursor:default; }
  @media (prefers-reduced-motion:reduce){ .tgc-zoom-holder .tgc-card{ transition:none !important; } }

  /* Désenchanter */
  .tgc-dust-top{ display:grid; grid-template-columns:300px 1fr; gap:14px; margin-bottom:20px; }
  .tgc-wallet .tv-btn{ width:100%; margin-top:6px; }
  .tgc-crystals{ display:flex; align-items:center; gap:10px; margin:6px 0 8px; }
  .tgc-crystals b{ font-family:'Cinzel', serif; font-size:30px; color:#b58cff; text-shadow:0 0 14px rgba(160,110,255,.5); }
  .gem-ico{ width:22px; height:22px; flex:none; background:linear-gradient(135deg, #e4d4ff, #8a4dff 55%, #3b1a7a); clip-path:polygon(50% 0, 100% 38%, 50% 100%, 0 38%); filter:drop-shadow(0 0 6px rgba(160,110,255,.7)); }
  .gem-ico.sm{ width:13px; height:13px; display:inline-block; vertical-align:-1px; margin-right:3px; }
  .tgc-shop{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; }
  .tgc-shop-item{ display:flex; flex-direction:column; align-items:center; gap:8px; text-align:center; }
  .tgc-shop-item img{ width:72px; filter:drop-shadow(0 6px 10px rgba(0,0,0,.55)); }
  .tgc-shop-item .price{ font-size:13px; color:var(--text-0); font-weight:600; }
  .tgc-shop-item .tv-btn{ width:100%; padding:7px 8px; font-size:12px; }
  .tgc-grid .tgc-empty{ grid-column:1 / -1; }
  .tgc-history{ list-style:none; margin:0; padding:0; background:var(--ink-1); border:1px solid var(--line); border-radius:6px; max-height:360px; overflow-y:auto; }
  .tgc-history li{ display:flex; justify-content:space-between; gap:12px; padding:8px 14px; border-bottom:1px solid color-mix(in srgb, var(--line) 60%, transparent); font-size:13px; color:var(--text-1); }
  .tgc-history li:last-child{ border-bottom:0; }
  .tgc-history b{ color:var(--text-0); font-weight:600; }
  .tgc-history time{ flex:none; font-size:11.5px; color:var(--text-2); white-space:nowrap; }
  .tgc-dust-h{ font-family:'Cinzel', serif; font-size:16px; color:var(--text-0); margin:0 0 10px; }
  .tgc-dustcard{ display:flex; flex-direction:column; gap:6px; }
  .tgc-dustcard .tv-btn{ width:100%; padding:6px 8px; font-size:12px; }
  @media (max-width:640px){ .tgc-dust-top{ grid-template-columns:1fr; } .tgc-shop{ gap:8px; } .tgc-shop-item img{ width:56px; } }
  @media (max-width:860px){ .tgc-market{ grid-template-columns:1fr; } }
  @media (max-width:640px){
    .tgc-top{ grid-template-columns:1fr; }
    .tgc-rates-grid{ grid-template-columns:1fr; }
    .tgc-grid{ grid-template-columns:repeat(auto-fill, minmax(104px, 1fr)); gap:10px; }
    .tgc-offer{ grid-template-columns:1fr; }
    .tgc-offer .act{ align-items:stretch; max-width:none; }
    .tgc-offer .act small{ text-align:left; }
  }
  @media (prefers-reduced-motion:reduce){
    .tgc-card .in::before, .tgc-bigpack, .tgc-bigpack .top, .tgc-bigpack .bwrap, .tgc-flip{ animation:none !important; opacity:1; transform:none; }
    .tgc-flip .inner{ transition:none; }
  }

  /* Pastilles de rôle : Phénix (maître de guilde), Al'ar (officier), Dev */
  .role-tag{ display:inline-block; font-family:'IBM Plex Mono', monospace; font-size:11px; font-weight:500; letter-spacing:.04em; color:var(--gold); border:1px solid var(--gold); border-radius:3px; padding:1px 6px; line-height:1.5; white-space:nowrap; }
  .role-tags-line{ display:flex; flex-wrap:wrap; gap:6px; margin:-6px 0 10px; max-width:calc(100% - 126px); }
  .pc-title-row{ display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:10px; margin-bottom:16px; }
  .pc-title-row .modal-title{ margin-bottom:0; }
  .pc-title-tags{ display:inline-flex; gap:6px; }
  .pc-title-tags:empty{ display:none; }

  .pc-heat-note{ font-size:12px; color:var(--text-2); margin:0 0 10px; line-height:1.5; }

  /* ===== Menu de la Taverne sur ordinateur (v433) : deux lignes, les grands jeux puis l'accueil, les petits jeux et le classement ===== */
  .tv-game-tabs .tv-tab-break{ display:none; }
  @media (min-width:821px), (hover:hover) and (min-width:641px){
    .tv-game-tabs{ justify-content:center; gap:2px 2px; }
    .tv-game-tabs .tv-tab-break{ display:block; order:2; flex-basis:100%; height:1px; margin:6px 0; background:linear-gradient(90deg, transparent, var(--line) 20%, var(--line) 80%, transparent); }
    .tv-game-tabs .tv-game-tab{ order:4; padding:8px 7px; font-size:13.5px; }
    .tv-game-tabs .tv-game-tab.tgc-tab{ order:1; margin:0 3px !important; padding:9px 7px; font-size:15px; gap:6px; }
    .tv-game-tabs .tv-game-tab.tgc-tab::after, .tv-game-tabs .tv-game-tab.rank-tab::before{ display:none !important; }
    .tv-game-tabs .tv-game-tab[data-g="home"]{ order:3; position:relative; margin-right:9px; }
    .tv-game-tabs .tv-game-tab.tgc-tab.rank-tab{ order:5; margin:0 0 0 9px !important; padding:8px 7px; font-size:13.5px; }
    .tv-game-tabs .tv-game-tab.rank-tab .ico{ width:22px; height:22px; }
    .tv-game-tabs .tv-game-tab[data-g="home"]::after, .tv-game-tabs .tv-game-tab.tgc-tab.rank-tab::after{ content:''; display:block !important; position:absolute; top:50%; transform:translateY(-50%); width:1px; height:20px; background:var(--line); }
    .tv-game-tabs .tv-game-tab[data-g="home"]::after{ right:-6px; }
    .tv-game-tabs .tv-game-tab.tgc-tab.rank-tab::after{ left:-6px; right:auto; }
  }

  /* ===== Mobile : ces règles passent en dernier pour l'emporter ===== */
  /* Jeux de la Taverne sur téléphone : grille en trois blocs, repliée en jeu */
  .tv-back{ display:none; }
  @media (hover:none) and (max-width:820px){
    .tv-game-tabs{ display:grid; grid-template-columns:repeat(6, 1fr); gap:8px; box-shadow:none; margin-bottom:14px; }
    .tv-game-tabs .tv-tab-sep{ display:none; }
    .tv-game-tab{ grid-column:span 2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px;
      height:74px; padding:6px 4px; border:1px solid var(--line); border-bottom:1px solid var(--line); border-radius:12px;
      background:var(--ink-1); font-size:11px; line-height:1.15; text-align:center; white-space:normal; }
    .tv-game-tab[data-g="home"], .tv-game-tab[data-g="rank"]{ grid-column:span 6; flex-direction:row; height:54px; }
    .tv-game-tab[data-g="tgc"], .tv-game-tab[data-g="cduel"]{ grid-column:span 3; }
    .tv-game-tab[data-g="wor"]{ grid-column:span 6; flex-direction:row; height:54px; margin:0; border-color:#ff3b3b; }
    .tv-game-tab[data-g="icc"]{ grid-column:span 6; flex-direction:row; height:54px; margin:0; border-color:#8fd3ff; }
    .tv-game-tab[data-g="sanct"]{ grid-column:span 6; flex-direction:row; height:54px; margin:0; border-color:#5fd08a; }
    .tv-game-tab.tgc-tab.icc-tab::after{ display:none; }
    .tv-game-tab.tgc-tab{ border-color:var(--gold-dim); background:var(--ink-2); }
    .tv-game-tab[aria-selected="true"]{ border-color:var(--gold); color:var(--text-0); background:var(--ink-2); }
    .tv-game-tab .gico, .tv-game-tab .ico{ display:flex; }
    .tv-game-tab{ position:relative; }
    .tv-game-tab .tv-new{ position:absolute; top:4px; right:4px; margin:0; font-size:8.5px; padding:1px 5px; }
    .tv-game-tab .tgc-badge{ position:absolute; top:4px; right:4px; margin:0; font-size:8.5px; padding:1px 5px; }
    .tv-game-tabs.collapsed{ display:none; }
    .tv-game-tabs .tv-game-tab.tgc-tab{ margin:0 !important; }   /* v433 : les marges du menu ordinateur décalaient ces boutons hors de la grille */
    .tv-back{ display:flex; align-items:center; gap:9px; width:100%; margin-bottom:12px; padding:10px 12px; border-radius:10px;
      border:1px solid var(--line); background:var(--ink-1); color:var(--text-1); font:inherit; font-size:13.5px; cursor:pointer; }
    .tv-back .ar{ display:flex; color:var(--gold); } .tv-back .sep{ color:var(--text-2); } .tv-back b{ color:var(--text-0); font-size:14px; }
    .tv-back[hidden]{ display:none; }
  }
  /* ===== Navigation mobile (barre du bas + menu « Plus ») ===== */
  .mnav, .msheet{ display:none; }
  @media (hover:none) and (max-width:820px){
    .tab-bar{ display:none !important; }
    body{ padding-bottom:calc(66px + env(safe-area-inset-bottom, 0px)); }
    .mnav{ position:fixed; left:0; right:0; bottom:0; z-index:900; display:flex; align-items:center;
      padding:6px 2px calc(8px + env(safe-area-inset-bottom, 0px)); background:rgba(14,9,6,.97); border-top:1px solid var(--line); backdrop-filter:blur(8px); }
    .mnav button{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; gap:3px; padding:6px 2px; border:0; background:none; color:var(--text-2); font:inherit; font-size:10px; cursor:pointer; position:relative; }
    .mnav button .ico{ display:flex; }
    .mnav button[aria-current="true"]{ color:var(--text-0); }
    .mnav button[aria-current="true"] .ico{ color:var(--gold); }
    .mnav .dot{ position:absolute; top:2px; right:calc(50% - 18px); min-width:16px; height:16px; padding:0 4px; border-radius:999px; background:var(--frost-0); color:#1a0d06; font-size:10px; font-weight:700; display:grid; place-items:center; }
    .msheet{ position:fixed; inset:0; z-index:950; display:block; background:rgba(8,5,3,.72); }
    .msheet[hidden]{ display:none; }
    .msheet-in{ position:absolute; left:0; right:0; bottom:0; max-height:80vh; overflow-y:auto; background:var(--ink-1); border-top:1px solid var(--gold-dim); border-radius:16px 16px 0 0; padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px)); }
    .msheet-in .hd{ display:flex; align-items:center; padding:14px 16px; border-bottom:1px solid var(--line); }
    .msheet-in .hd b{ font-family:'Cinzel',serif; font-size:17px; color:var(--gold); }
    .msheet-in .hd .x{ margin-left:auto; border:0; background:none; color:var(--text-2); font-size:18px; cursor:pointer; }
    .msheet-in .list button{ width:100%; display:flex; align-items:center; gap:12px; padding:14px 16px; border:0; border-bottom:1px solid var(--line); background:none; color:var(--text-1); font:inherit; font-size:15px; text-align:left; cursor:pointer; }
    .msheet-in .list button[aria-current="true"]{ color:var(--text-0); }
    /* le volet de discussion reste au-dessus de la barre, collé à droite */
    .tv-chat{ right:10px; bottom:calc(76px + env(safe-area-inset-bottom, 0px)); }
    /* en-tête plus compact : on voit le contenu tout de suite */
    .hero{ padding:18px 5vw 14px; }
    .hero .logo, .hero img.logo{ max-width:120px; }
  }

  /* ===== Retouches visuelles (v352) ===== */
  /* En-tête compact sur tous les onglets sauf Joueurs (body[data-tab] posé par activateTab) */
  .hero{ transition:padding .3s ease; }
  .hero-phoenix{ transition:width .3s ease, height .3s ease; }
  body[data-tab]:not([data-tab="points"]) .hero{ padding:14px 6vw 12px; }
  body[data-tab]:not([data-tab="points"]) .hero-phoenix{ width:96px; height:96px; margin-bottom:0; }
  body[data-tab]:not([data-tab="points"]) .hero-sub,
  body[data-tab]:not([data-tab="points"]) header{ display:none; }
  @media (max-width:640px){ body[data-tab]:not([data-tab="points"]) .hero-phoenix{ width:72px; height:72px; } }
  /* Lien vers l'armurerie : petite icône au lieu du texte */
  .char-ext{ display:inline-block; vertical-align:1px; margin-left:4px; color:var(--text-2); }
  .char-row:hover .char-ext{ color:var(--frost-0); }
  /* Onglets : un libellé ne se coupe plus ; ce sont les boutons qui passent à la ligne */
  @media (min-width:641px){ .tab-bar{ flex-wrap:wrap; } .tab-btn{ white-space:nowrap; } }
  @media (min-width:641px) and (max-width:1440px){ .tab-btn{ padding:12px 11px; font-size:13.5px; } }
  .status-bar span{ white-space:nowrap; }
  /* Le bouton du chat ne passe plus devant les fenêtres (admin, fiche joueur…) */
  body:has(.modal-overlay.open) .tv-chat{ display:none !important; }
  /* Admin : onglets regroupés par thème, barre fixe en haut, fenêtre plus grande */
  #admin-modal-overlay .modal-box-wide{ max-width:min(1400px, 96vw); max-height:94vh; }
  .admin-subtab-bar{ flex-direction:column; flex-wrap:nowrap; gap:6px; }
  .admin-subtab-group{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
  .admin-subtab-group[hidden]{ display:none; }
  .admin-subtab-label{ width:76px; flex:none; font-family:'Cinzel', serif; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--gold); }
  @media (min-width:900px) and (min-height:900px){   /* barre fixe seulement sur les grands écrans : elle fait ~200 px de haut */
    .admin-subtab-bar{ position:sticky; top:-28px; z-index:6; margin:0 -28px 16px; padding:10px 28px; background:var(--ink-1); border-bottom:1px solid var(--line); }
  }
  /* Reborn TCG : réserve de boosters vide, message centré dans le cadre */
  .tgc-top > .tgc-box:not(.tgc-claim){ display:flex; flex-direction:column; }
  .tgc-top > .tgc-box:not(.tgc-claim) .tgc-shelf{ flex:1; }
  .tgc-shelf:has(> .tgc-empty){ justify-content:center; align-items:center; align-content:center; text-align:center; }
  /* Taverne : le texte d'intro n'apparaît que sur l'accueil (data-g posé par showGame) */
  .tv-wrap[data-g]:not([data-g="home"]) .tv-desc{ display:none; }
  .tv-wrap[data-g]:not([data-g="home"]) .tv-head{ margin-bottom:14px; }
  /* Carrousel : pendant le défilement, la taille des cartes suit le rail sans transition (sinon elles traînent) */
  .rail.scrolling .card{ transition:opacity .5s ease, border-color .2s ease; }

  /* ===== Clarté visuelle (v355) ===== */
  /* Joueurs : zéros en retrait, flèches lisibles */
  .search-wrap{ margin-bottom:12px; }
  .rail::-webkit-scrollbar-track{ background:rgba(255,255,255,.04); margin:0 6vw; }
  .rail-nav{ opacity:.9; background:rgba(14,9,6,.92); backdrop-filter:none; }   /* fond opaque : le flou recalculé à chaque image du défilement ne servait plus */
  .zero, .points-value.zero{ color:var(--text-2) !important; opacity:.6; }
  .char-meta{ white-space:nowrap; }
  /* Taverne */
  .th-row2{ align-items:start; }
  .th-f{ align-items:center; padding:6px 0; }
  .th-f .av{ width:26px; height:26px; }
  .th-f .av svg{ width:14px; height:14px; }
  .th-f .tx small{ float:right; margin-left:10px; }
  .th-f .tx small{ display:inline; white-space:nowrap; }
  .th-locked summary{ cursor:pointer; font-size:13px; color:var(--text-2); padding:6px 2px; }
  .th-locked[open] summary{ margin-bottom:6px; }
  .th-locked .th-ti + .th-ti{ margin-top:6px; }
  .th-ti b{ white-space:nowrap; }
  .th-ti small{ text-align:right; }
  .th-m .th-ok{ margin:0 12px; }
  .th-m .go{ min-width:52px; }
  .th-shop{ display:flex; flex-wrap:wrap; justify-content:center; }
  .th-shop > .th-it{ flex:0 1 calc((100% - 20px) / 3); box-sizing:border-box; }
  /* Admin */
  #admin-points-table thead th{ position:sticky; top:0; z-index:1; }
  .admin-table input[type="number"]{ background:var(--ink-0); color:var(--text-0); border:1px solid var(--line); border-radius:3px; padding:4px 6px; font:inherit; }
  #admin-bdg-wrap .admin-table td{ vertical-align:middle; }
  .admin-subtab-btn .ico{ display:inline-flex; vertical-align:-2px; margin-right:6px; }

  /* ===== Cartes joueurs (v364) : couleur de classe, médaillon, total, colonnes alignées ===== */
  .rail{ padding-top:46px; }
  .rail .card{ --cc:var(--gold-dim); border-radius:10px; border:1px solid color-mix(in srgb, var(--cc) 30%, var(--line)); border-top:3px solid var(--cc);
    background:linear-gradient(180deg, color-mix(in srgb, var(--cc) 10%, var(--ink-1)) 0%, var(--ink-1) 38%); }
  .rail .card.is-center{ box-shadow:0 18px 50px -12px color-mix(in srgb, var(--cc) 55%, transparent), 0 0 0 1px color-mix(in srgb, var(--cc) 40%, transparent); }
  .rail .card.inactive{ opacity:.6; }
  .rail .card.inactive .player-spec-icon-slot{ filter:grayscale(.7); }
  .rail .card.podium-1, .rail .card.podium-2, .rail .card.podium-3{ border-color:color-mix(in srgb, var(--cc) 30%, var(--line)); border-top-color:var(--cc); }
  .rail .card.podium-1:not(.is-center), .rail .card.podium-2:not(.is-center), .rail .card.podium-3:not(.is-center){ box-shadow:none; }
  .rail .card.podium-1::before, .rail .card.podium-2::before, .rail .card.podium-3::before{ position:absolute; top:-3px; left:16px; z-index:2; font-family:'Cinzel', serif; font-weight:700; font-size:13px; color:#1a0f05; padding:3px 11px 4px; border-radius:0 0 6px 6px; box-shadow:0 4px 10px rgba(0,0,0,.4); }
  .rail .card.podium-1::before{ content:'1'; background:linear-gradient(#ffe08a,#c99a2e); }
  .rail .card.podium-2::before{ content:'2'; background:linear-gradient(#f1f3f7,#9ea6b3); }
  .rail .card.podium-3::before{ content:'3'; background:linear-gradient(#f0b47e,#a8642e); }
  .rail .card{ position:relative; }
  .rail .card-top{ padding:18px 18px 14px; border-bottom:1px solid color-mix(in srgb, var(--cc) 22%, var(--line)); }
  .rail .player-spec-icon-slot{ position:absolute; top:-34px; right:16px; width:84px; height:84px; z-index:1; }
  .rail .player-name{ max-width:calc(100% - 96px); }
  .rail .role-tags-line{ max-width:calc(100% - 96px); margin:-6px 0 0; }
  .rank-tag{ display:inline-flex; align-items:center; gap:5px; }
  .rank-tag i{ width:7px; height:7px; border-radius:50%; background:currentColor; }
  .pc-stats{ display:flex; align-items:flex-end; gap:14px; margin-top:14px; }
  .pc-total{ font-family:'IBM Plex Mono', monospace; font-size:32px; line-height:1; color:var(--gold); }
  .pc-total small{ display:block; font-family:'IBM Plex Sans', sans-serif; font-size:11px; color:var(--text-2); margin-top:4px; }
  .pc-split{ flex:1; min-width:0; font-size:11px; color:var(--text-2); }
  .pc-bar{ display:flex; height:6px; border-radius:3px; overflow:hidden; background:#2a1a10; margin:4px 0 5px; }
  .pc-bar .icc{ background:#7fb8ff; } .pc-bar .hal{ background:#ff9a3c; }
  .pc-split .k{ display:flex; justify-content:space-between; font-family:'IBM Plex Mono', monospace; }
  .pc-split .k + .k{ margin-top:2px; }
  .pc-split .k b{ font-weight:500; color:var(--text-1); }
  .rail .card-badge-teaser{ display:flex; align-items:center; gap:6px; margin-top:12px; font-size:11px; color:var(--text-2); font-family:'IBM Plex Mono', monospace; min-height:22px; }
  .bt-i{ width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font-size:12px; background:var(--ink-2); border:1px solid var(--line); }
  .bt-ring{ width:22px; height:22px; border-radius:50%; background:conic-gradient(var(--gold) calc(var(--p) * 1%), #2a1a10 0); display:grid; place-items:center; margin-left:4px; }
  .bt-ring::after{ content:''; width:14px; height:14px; border-radius:50%; background:var(--ink-1); }
  .rail .char-list{ padding:6px 14px 12px; gap:0; }
  .char-head, .rail .char-row{ display:grid; grid-template-columns:minmax(0,1fr) 42px 52px; align-items:center; gap:6px; }
  .char-head{ font-family:'IBM Plex Mono', monospace; font-size:10px; color:var(--text-2); text-transform:uppercase; letter-spacing:.06em; padding:6px 0 4px 12px; }
  .char-head span:not(:first-child), .rail .char-points{ text-align:right; }
  .rail .char{ border:0; background:none; border-bottom:1px solid rgba(61,36,21,.55); }
  .rail .char-row{ padding:7px 0 7px 9px; border-left:3px solid var(--k, var(--line)); }
  .rail .char-name{ font-size:13.5px; }
  .rail .char-meta{ font-size:11px; }
  .rail .char-toggle{ margin-top:8px; }

  /* ===== Fiche joueur (v365) : en-tête aux couleurs de la classe, tuiles, deux colonnes, badges en tuiles ===== */
  #player-card-overlay .pc-box{ --cc:var(--gold-dim); --pad:28px; max-width:min(1100px, 96vw); padding-top:0; border-color:color-mix(in srgb, var(--cc) 35%, var(--line)); }
  @media (max-width:640px){ #player-card-overlay .pc-box{ --pad:18px; } }
  .pc-hero{ display:flex; align-items:center; gap:20px; margin:0 calc(-1 * var(--pad)); padding:24px var(--pad) 20px; border-top:4px solid var(--cc);
    background:linear-gradient(120deg, color-mix(in srgb, var(--cc) 22%, var(--ink-1)) 0%, var(--ink-1) 60%); }
  .pc-medal{ width:96px; height:96px; flex:none; border-radius:50%; overflow:hidden; border:3px solid var(--ink-0); box-shadow:0 0 0 3px var(--cc), 0 0 26px 2px color-mix(in srgb, var(--cc) 60%, transparent); background:var(--ink-2); }
  .pc-medal:empty{ display:none; }
  .pc-medal img{ width:100%; height:100%; object-fit:cover; display:block; }
  .pc-who{ flex:1; min-width:0; }
  .pc-box .pc-title-row{ justify-content:flex-start; align-items:baseline; margin-bottom:6px; }
  .pc-box .pc-title-row .modal-title{ font-size:30px; text-align:left; }
  .pc-title-sub{ font-style:italic; font-size:15px; color:var(--gold); font-weight:500; }
  .pc-title-sub:empty{ display:none; }
  .pc-box .pc-char-icons-row{ justify-content:flex-start; gap:6px; margin:10px 0 0; }
  .pc-box .pc-char-icon-card, .pc-box .pc-char-icon-img{ width:30px; height:30px; }
  .pc-box .pc-char-icon-img{ border-radius:50%; border:2px solid var(--line); }
  .pc-box .pc-char-icon-card:hover .pc-char-icon-img{ transform:scale(1.25); border-color:var(--cc); box-shadow:0 0 10px color-mix(in srgb, var(--cc) 60%, transparent); }
  .pc-hero-act{ align-self:flex-start; margin-right:28px; }
  .rank-tag-dot i, .pc-box .rank-tag i{ width:7px; height:7px; border-radius:50%; background:currentColor; }
  .pc-nav{ position:sticky; top:0; z-index:5; display:flex; gap:4px; flex-wrap:wrap; margin:0 calc(-1 * var(--pad)) 18px; padding:8px var(--pad); background:var(--ink-1); border-bottom:1px solid var(--line); }
  .pc-nav button{ background:none; border:0; font:inherit; font-size:13px; color:var(--text-1); padding:6px 12px; border-radius:20px; cursor:pointer; }
  .pc-nav button:hover, .pc-nav button.on{ background:color-mix(in srgb, var(--cc) 18%, var(--ink-2)); color:var(--text-0); box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cc) 45%, transparent); }
  .pc-box .pc-section{ scroll-margin-top:60px; }
  .pc-tiles{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:12px; margin-bottom:22px; }
  .pc-tile{ background:var(--ink-2); border:1px solid var(--line); border-radius:10px; padding:14px 16px; display:flex; align-items:center; gap:14px; min-width:0; }
  .pc-tile b.t{ display:block; color:var(--text-0); font-weight:600; font-size:14px; }
  .pc-tile .cap{ display:block; font-size:11px; color:var(--text-2); margin-top:4px; }
  .pc-ring{ --p:0; --c:var(--gold); width:56px; height:56px; flex:none; border-radius:50%; background:conic-gradient(var(--c) calc(var(--p) * 1%), #2a1a10 0); display:grid; place-items:center; }
  .pc-ring span{ width:44px; height:44px; border-radius:50%; background:var(--ink-2); display:grid; place-items:center; font:500 14px 'IBM Plex Mono', monospace; color:var(--text-0); }
  .pc-tile .pc-total{ font-size:34px; }
  .pc-cols{ display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:28px; align-items:start; }
  @media (max-width:900px){ .pc-tiles{ grid-template-columns:1fr 1fr; } .pc-tiles > .pc-tile:first-child{ grid-column:1 / -1; } .pc-cols{ grid-template-columns:1fr; } .pc-hero-act{ display:none; } }
  .pc-box .pc-heat-legend{ margin-bottom:8px; }
  @media (max-width:640px){ .pc-hero{ gap:14px; } .pc-medal{ width:68px; height:68px; } .pc-box .pc-title-row .modal-title{ font-size:24px; } }
  .pc-box .pc-section-title{ display:flex; justify-content:space-between; align-items:baseline; }
  .pc-box .pc-section-title small{ font:500 12px 'IBM Plex Mono', monospace; color:var(--text-2); }
  .pc-box .pc-badge-category-title{ display:flex; justify-content:space-between; }
  .pc-box .pc-badge-category-title span{ font-family:'IBM Plex Mono', monospace; letter-spacing:0; color:var(--text-2); }
  .pc-box .pc-badge-category-list{ display:grid; grid-template-columns:repeat(auto-fill, minmax(86px, 1fr)); gap:8px; }
  .pc-badge.tile{ display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:6px; margin:0; padding:10px 4px 8px; border-radius:9px; text-align:center; background:var(--ink-2); border:1px solid var(--line); color:var(--text-1); white-space:normal; }
  .pc-badge.tile .pc-badge-icon{ font-size:24px; line-height:1; }
  .pc-badge.tile .pc-badge-name{ font-size:11px; line-height:1.25; }
  .pc-badge.tile.unlocked{ border-color:color-mix(in srgb, var(--gold) 70%, var(--line)); background:linear-gradient(180deg, rgba(232,163,61,.14), var(--ink-2)); color:var(--text-0); opacity:1; }
  .pc-badge.tile.locked{ opacity:.45; filter:grayscale(1); }
  .pc-badge.tile.locked::after{ content:'🔒'; position:absolute; top:4px; right:5px; font-size:10px; }
  .pc-badge.tile.near{ opacity:1; filter:none; border:1px dashed var(--frost-0); }
  .pc-badge.tile.near::after{ content:none; }
  .pc-near{ position:absolute; top:-8px; left:50%; transform:translateX(-50%); background:var(--frost-0); color:#1a0f05; font-weight:700; font-size:9.5px; padding:1px 6px; border-radius:8px; white-space:nowrap; }
  .pc-badge-pr{ display:block; width:calc(100% - 12px); height:3px; border-radius:2px; background:#2a1a10; overflow:hidden; }
  .pc-badge-pr i{ display:block; height:100%; background:var(--frost-0); }
  .pc-badge-prt{ font:500 10px 'IBM Plex Mono', monospace; color:var(--text-2); margin-top:-3px; }
  .pc-crank{ font-size:11.5px; color:var(--text-2); margin:-4px 0 8px; }
  .pc-ctable .char-head{ padding-left:13px; }
  .pc-crow{ display:grid; grid-template-columns:minmax(0,1fr) 44px 56px; gap:6px; align-items:center; padding:8px 0 8px 10px; border-left:3px solid var(--k, var(--line)); border-bottom:1px solid rgba(61,36,21,.6); }
  .pc-crow .w{ display:flex; gap:9px; align-items:center; min-width:0; }
  .pc-crow .cn a, .pc-crow .cn span{ color:var(--text-0); font-weight:600; font-size:14px; text-decoration:none; }
  .pc-crow .cn a:hover{ color:var(--frost-0); }
  .pc-crow .cm{ font-size:11px; color:var(--text-2); }
  .pc-crow .v{ text-align:right; font:500 13px 'IBM Plex Mono', monospace; color:var(--gold); }
  .pc-crow .v.zero{ color:var(--text-2); opacity:.55; }
  .pc-box .pc-mdc-tag{ border-color:var(--k, var(--frost-0)); color:var(--k, var(--frost-1)); background:color-mix(in srgb, var(--k, var(--frost-0)) 10%, transparent); }
  .pc-heat-pct{ color:#7fd67f; margin-left:6px; }

  /* ===== Onglets (v367) : couleurs de classe, médaillons, tuiles ===== */
  .mate-medal, .rl-medal, .rl-mini, .mdc-medal{ display:inline-block; border-radius:50%; object-fit:cover; border:2px solid var(--ink-0); box-shadow:0 0 0 2px var(--k, var(--line)); background:var(--ink-2); vertical-align:middle; }
  /* Roster */
  .roster-compo{ display:flex; gap:6px; margin:0 14px 8px; }
  .roster-compo span{ flex:1; text-align:center; font-size:11px; color:var(--text-2); padding:5px 0; border-radius:6px; background:var(--ink-2); border:1px solid var(--line); }
  .roster-compo b{ display:block; font:500 15px 'IBM Plex Mono', monospace; color:var(--text-0); }
  .roster-clsbar{ display:flex; height:5px; margin:0 14px 10px; border-radius:3px; overflow:hidden; }
  .roster-clsbar i{ display:block; height:100%; }
  .roster-row{ border-left:3px solid var(--k, transparent); }
  .roster-row.top{ border-left:3px solid var(--k, var(--gold)); background:linear-gradient(90deg, rgba(232,163,61,.16), transparent); }
  .roster-row.top .r-mate{ color:var(--text-0); }
  .roster-row.top .r-mate::after{ content:' ★'; color:var(--gold); }
  .r-cls-icon{ border-radius:50%; box-shadow:0 0 0 1.5px var(--k, transparent); }
  .r-pts-block.zero{ color:var(--text-2); opacity:.55; }
  .roster-legend{ text-align:center; font-size:12px; color:var(--text-2); margin:4px 6vw 24px; }
  /* Roster public : sélecteur de raid + cadres de groupes */
  #rosters-grid{ display:block; max-width:1400px; margin:0 auto; }
  .rdays{ display:grid; grid-template-columns:repeat(4, 1fr); gap:10px; margin:10px 0 14px; }
  .rday{ position:relative; text-align:left; background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:12px 14px; color:var(--text-0); cursor:pointer; font:inherit; transition:border-color .15s, transform .15s; }
  .rday:hover{ transform:translateY(-2px); border-color:var(--text-2); }
  .rday.on{ border-color:var(--frost-0); box-shadow:0 0 0 1px var(--frost-0) inset, 0 6px 24px -12px var(--frost-0); background:linear-gradient(180deg, color-mix(in srgb, var(--frost-0) 12%, var(--ink-1)), var(--ink-1)); }
  .rday-name{ font-weight:700; font-size:15px; }
  .rday-type{ font:600 10px 'IBM Plex Mono', monospace; letter-spacing:1px; color:var(--text-2); margin-left:6px; }
  .rday-meta{ display:flex; gap:10px; margin-top:6px; font:12px 'IBM Plex Mono', monospace; color:var(--text-1); }
  .rday-meta b{ color:var(--text-0); font-weight:500; }
  .rday-bar{ display:flex; gap:1px; height:3px; border-radius:2px; overflow:hidden; margin-top:9px; }
  .rday-bar i{ display:block; }
  .rday-next{ position:absolute; top:-9px; right:10px; background:var(--frost-0); color:var(--ink-0); font:700 10px 'IBM Plex Mono', monospace; text-transform:uppercase; padding:2px 7px; border-radius:10px; letter-spacing:.5px; }
  .rday-me{ position:absolute; top:10px; right:12px; font-size:11px; font-weight:600; color:var(--gold); }
  .rday-me i, .rmine i{ display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--gold); box-shadow:0 0 6px var(--gold); margin-right:4px; vertical-align:1px; }
  .rtools{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
  .rtools .roster-search-input{ flex:1 1 220px; width:auto; }
  .rtools .roster-sort-btn{ padding:7px 12px; }
  .rmine{ display:flex; align-items:center; gap:6px; white-space:nowrap; font-size:12.5px; color:var(--text-1); cursor:pointer; }
  .rmine input{ accent-color:var(--gold); }
  .rwhere{ min-height:22px; margin:8px 0; font-size:12.5px; color:var(--text-1); display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
  .rwhere b{ color:var(--gold); }
  .rwhere-chip{ font:inherit; font-size:12px; color:var(--text-1); background:var(--ink-1); border:1px solid var(--line); border-radius:10px; padding:1px 9px; cursor:pointer; }
  .rwhere-chip:hover, .rwhere-chip.on{ border-color:var(--gold); color:var(--text-0); }
  .rframes{ display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:10px; }
  .rgrp{ background:var(--ink-1); border:1px solid var(--line); border-radius:8px; padding:8px; }
  .rgrp-h{ font:600 10.5px 'IBM Plex Mono', monospace; letter-spacing:1px; text-transform:uppercase; color:var(--text-2); padding:2px 4px 8px; }
  .rcell{ display:grid; grid-template-columns:28px minmax(0, 1fr) auto; gap:8px; align-items:center; padding:6px 8px 6px 9px; margin-bottom:5px; border-radius:5px; border-left:3px solid var(--k); background:linear-gradient(90deg, color-mix(in srgb, var(--k) 15%, transparent), transparent 75%), var(--ink-2); cursor:pointer; transition:transform .12s, opacity .15s, box-shadow .15s; }
  .rcell:last-child{ margin-bottom:0; }
  .rcell:hover{ transform:translateX(2px); box-shadow:0 0 0 1px color-mix(in srgb, var(--k) 55%, transparent); }
  .rc-ic{ position:relative; width:28px; height:28px; }
  .rc-ic img{ width:28px; height:28px; border-radius:5px; display:block; box-shadow:0 0 0 1px rgba(0,0,0,.6); }
  .rc-ic b{ position:absolute; right:-4px; bottom:-3px; font-size:9px; line-height:1; filter:drop-shadow(0 0 2px #000); }
  .rc-ic em{ position:absolute; top:-6px; right:-7px; font-style:normal; font-size:9px; line-height:13px; padding:0 3px; background:var(--ink-0); border:1px solid color-mix(in srgb, var(--gold) 45%, transparent); border-radius:7px; }
  .rc-txt{ min-width:0; display:flex; flex-direction:column; line-height:1.25; }
  .rc-mate{ font-weight:600; font-size:13px; color:var(--text-0); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .rc-perso{ font-size:11.5px; color:var(--k); opacity:.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .rcell.top .rc-mate::after{ content:' ★'; color:var(--gold); font-size:11px; }
  .rc-pts{ text-align:right; font:600 14px 'IBM Plex Mono', monospace; color:var(--gold); line-height:1.1; }
  .rc-pts small{ display:block; font-size:10px; font-weight:400; color:var(--text-2); }
  .rc-pts.zero{ color:var(--text-2); opacity:.6; }
  .admin-season-box{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:10px 14px; margin:0 0 16px; background:var(--ink-1); border:1px solid var(--line); border-left:3px solid var(--gold); border-radius:6px; }
  .admin-season-box label{ font-family:'Cinzel', serif; color:var(--gold); font-size:14px; }
  .admin-season-box input{ width:76px; text-align:center; font:600 15px 'IBM Plex Mono', monospace; }
  .admin-season-hint{ font-size:12.5px; color:var(--text-2); }
  .admin-season-hint b{ color:var(--text-0); }
  .admin-season-status{ font-size:12.5px; }
  .rc-tag{ display:inline-block; vertical-align:2px; margin-right:6px; padding:1px 5px; border-radius:4px; font:600 9.5px 'IBM Plex Mono', monospace; letter-spacing:.3px; color:var(--text-1); border:1px solid var(--line); background:var(--ink-1); white-space:nowrap; }
  .rc-tag.bu{ color:#8ec8e8; border-color:color-mix(in srgb, #8ec8e8 40%, transparent); }
  .rc-idx{ font:11px 'IBM Plex Mono', monospace; color:var(--text-2); text-align:right; }
  .rlist{ columns:3 300px; column-gap:10px; }
  .rlist .rcell{ break-inside:avoid; grid-template-columns:20px 28px minmax(0, 1fr) auto; }
  .rcell.me{ box-shadow:0 0 0 1.5px var(--gold), 0 0 14px -5px var(--gold); }
  #roster-board.dim .rcell:not(.hit){ opacity:.22; }
  .rcell.hit{ box-shadow:0 0 0 1.5px var(--frost-0), 0 0 16px -5px var(--frost-0); }
  @media (max-width:1100px){ .rframes{ grid-template-columns:repeat(3, minmax(0, 1fr)); } }
  @media (max-width:760px){
    .rdays{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; padding-top:10px; margin-top:0; }
    .rday{ flex:0 0 72%; scroll-snap-align:start; }
    .rframes{ grid-template-columns:1fr; }
  }
  /* Reborn Logs */
  .rl-medal{ width:64px; height:64px; margin:0 auto 8px; display:block; border-width:3px; box-shadow:0 0 0 2.5px var(--k, var(--line)), 0 0 16px color-mix(in srgb, var(--k, #000) 55%, transparent); }
  .rl-pedestal.rank-1 .rl-medal{ width:80px; height:80px; }
  .rl-medal.empty{ visibility:hidden; }
  .rl-mini{ width:20px; height:20px; margin-right:8px; border-width:1.5px; box-shadow:0 0 0 1.5px var(--k, var(--line)); }
  .rl-table tbody tr td:first-child{ border-left:3px solid var(--k, transparent); }
  .gs-ico{ display:inline-grid; place-items:center; width:24px; height:24px; border-radius:7px; margin-right:8px; vertical-align:middle; font-size:13px; background:rgba(255,122,60,.12); border:1px solid rgba(255,122,60,.3); }
  .gs-trend{ font-size:11.5px; color:#7fd67f; margin-top:6px; min-height:15px; }
  .gs-trend.down{ color:#e8a33d; }
  #tab-rebornlogs .engagement-chart-wrap{ display:none; }
  .engagement-list:has(.eng-bar){ display:block; max-width:900px; margin:0 auto 40px; }
  .engagement-row.eng-bar{ display:grid; grid-template-columns:140px 1fr 34px; gap:10px; align-items:center; background:none; border:0; padding:3px 0; }
  .eng-bar .e-bar{ height:12px; border-radius:3px; background:#2a1a10; overflow:hidden; }
  .eng-bar .e-bar i{ display:block; height:100%; background:var(--k); opacity:.85; }
  .eng-bar .e-count{ text-align:right; }
  @media (max-width:640px){ .engagement-row.eng-bar{ grid-template-columns:100px 1fr 30px; } }
  /* Liste Légendaire */
  .leg-panel:not([hidden]){ display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); gap:0 8px; max-width:1240px; margin:0 auto; align-items:start; }
  .leg-panel > .deuil-section{ max-width:none; padding:20px 2vw; margin:0; min-width:0; }   /* margin:auto faisait rétrécir la section dans la grille */
  .deuil-table-wrap:has(.lg-done){ background:none; border:0; }
  .leg-panel > .deuil-section:first-child{ grid-row:span 2; }
  @media (max-width:900px){ .leg-panel:not([hidden]){ grid-template-columns:1fr; } .leg-panel > .deuil-section:first-child{ grid-row:auto; } }
  .deuil-table tbody tr td:first-child{ border-left:3px solid var(--k, transparent); }
  .lg-ci{ width:18px; height:18px; border-radius:50%; vertical-align:-4px; margin-right:7px; box-shadow:0 0 0 1.5px var(--k, transparent); }
  .lg-done{ display:grid; grid-template-columns:repeat(auto-fill, minmax(120px, 1fr)); gap:10px; }
  .lg-dn{ display:flex; flex-direction:column; align-items:center; gap:2px; text-align:center; padding:12px 6px; border-radius:9px; border:1px solid color-mix(in srgb, var(--k) 45%, var(--line)); background:linear-gradient(180deg, color-mix(in srgb, var(--k) 14%, var(--ink-2)), var(--ink-2)); font-size:12px; }
  .lg-dn .ck{ width:28px; height:28px; border-radius:50%; display:grid; place-items:center; background:var(--gold); color:#1a0f05; font-weight:700; margin-bottom:4px; }
  .lg-dn b a, .lg-dn b{ color:var(--text-0); font-size:13px; text-decoration:none; }
  .lg-dn .pc-clickable{ color:var(--text-1); }
  .lg-dn small{ color:var(--k); font-size:11px; }
  /* Maîtres de classe */
  .deuil-table-wrap:has(.mdc-cards){ background:none; border:0; }
  .deuil-section:has(.mdc-cards){ max-width:1200px; }
  .mdc-cards{ display:grid; grid-template-columns:repeat(auto-fill, minmax(330px, 1fr)); gap:14px; }
  .mdc-card{ border:1px solid var(--line); border-top:3px solid var(--k); border-radius:10px; background:linear-gradient(180deg, color-mix(in srgb, var(--k) 12%, var(--ink-1)), var(--ink-1) 55%); }
  .mdc-card h4{ margin:0; padding:12px 14px 8px; display:flex; gap:10px; align-items:center; font-family:'Cinzel', serif; color:var(--k); font-size:16px; }
  .mdc-card h4 img{ width:28px; height:28px; border-radius:50%; border:1.5px solid var(--k); }
  .mdc-spe{ display:grid; grid-template-columns:96px 1fr; gap:8px; align-items:center; padding:8px 14px; border-top:1px solid rgba(61,36,21,.5); }
  .mdc-spe .sp{ font-size:12.5px; color:var(--text-0); font-weight:600; }
  .mdc-spe .who{ display:flex; gap:8px; flex-wrap:wrap; }
  .mdc-chip{ display:flex; align-items:center; gap:7px; padding:3px 10px 3px 3px; border-radius:20px; background:var(--ink-2); border:1px solid var(--line); font-size:12px; }
  .mdc-chip b{ color:var(--text-0); font-weight:600; cursor:pointer; display:block; line-height:1.15; }
  .mdc-chip small{ display:block; font-size:10.5px; line-height:1.15; } .mdc-chip small a{ color:var(--text-2); text-decoration:none; } .mdc-chip small a:hover{ color:var(--frost-0); }
  .mdc-medal{ width:26px; height:26px; cursor:pointer; }
  /* Inventaire BDG */
  .bdg-grid{ display:block; columns:4 280px; column-gap:20px; }
  .bdg-col{ break-inside:avoid; margin-bottom:20px; border-radius:8px; }
  .bdg-col-head{ display:flex; justify-content:space-between; align-items:baseline; }
  .bdg-col-head span{ font:500 11px 'IBM Plex Mono', monospace; color:var(--text-2); }
  .bdg-row{ justify-content:flex-start; }
  .bdg-row a{ text-decoration:none !important; }
  .bdg-row a:hover{ text-decoration:underline !important; }
  .bdg-dot{ flex:none; display:inline-block; width:9px; height:9px; border-radius:50%; background:var(--text-2); }
  .bdg-dot.need-high{ background:#e05a4a; box-shadow:0 0 6px #e05a4a; } .bdg-dot.need-soon{ background:#e8a33d; } .bdg-dot.need-stock{ background:#4caf50; }
  .bdg-filter{ display:inline-flex; flex-wrap:wrap; gap:4px; padding:4px; border:1px solid var(--line); border-radius:20px; background:var(--ink-1); margin:0 6vw 12px; }
  .bdg-filter button{ display:flex; align-items:center; gap:6px; background:none; border:0; font:inherit; font-size:12.5px; color:var(--text-1); padding:5px 12px; border-radius:16px; cursor:pointer; }
  .bdg-filter button.on{ background:var(--ink-2); color:var(--text-0); box-shadow:inset 0 0 0 1px var(--gold); }
  /* Admin plus dense : boutons, lignes de tableau et champs plus petits */
  .admin-subtab-btn{ padding:5px 11px; }
  .admin-subtab-bar{ gap:4px; }
  #admin-modal-overlay .admin-table td{ padding:4px 8px; vertical-align:middle; }
  #admin-modal-overlay .admin-table th{ padding:6px 8px; }
  #admin-modal-overlay .gate-input{ padding:7px 10px; font-size:13px; }
  #admin-modal-overlay .admin-table .gate-input{ padding:4px 8px; font-size:12.5px; margin-bottom:0; }
  #admin-modal-overlay .admin-table input[type="number"]{ padding:3px 6px; }
  /* Reborn TCG : la carte se soulève au survol dans la collection */
  .tgc-grid .tgc-card{ transition:transform .18s ease, box-shadow .18s ease; }
  /* cartes de saison (toutes les saisons, présentes et futures) : on soulève l’emplacement pour garder les reflets propres à chaque carte */
  .tgc-sslot{ transition:transform .18s ease, filter .18s ease; }
  .tgc-sslot:not(:disabled):hover, .tgc-sslot:not(:disabled):focus-visible{ transform:translateY(-6px); filter:drop-shadow(0 12px 14px rgba(0,0,0,.55)); }
  .tgc-grid .tgc-card:not(.locked):hover{ transform:translateY(-6px); box-shadow:0 14px 26px rgba(0,0,0,.6), 0 0 14px color-mix(in srgb, var(--tc) 35%, transparent); }
