/* ============================================================
   war-table.css — liste dense « War Table »
   ============================================================
   Remplace la grille de cartes. Chargé APRÈS app.css et
   theme-<version>.css : reprend leurs variables, n'en définit
   aucune de couleur propre, pour que RO reste violet et Zero
   glacier. Le mode clair suit body.light sans règle dédiée.
   ============================================================ */


/* ── PALETTE WAR TABLE ─────────────────────────────────────────
   Surcharge la palette de app.css / theme-<version>.css. Chargée
   après elles, donc elle gagne. La distinction entre les deux
   versions n'est plus portée par la couleur générale mais par
   --wt-signal : liseré de haut de page et halo du titre. Un joueur
   qui a les deux onglets ouverts doit toujours les distinguer.
   ────────────────────────────────────────────────────────────── */
:root{
  --bg:#0f1116; --bg2:#161a21;
  --border:#232830; --border2:#2b313b;
  --text:#e8e3d8; --text2:#8a929d; --text3:#6c7683; --text-dim:#4d545e;
  --card-footer-border:#1c2028; --infobar-b:#6c7683;
  --header-bg:linear-gradient(180deg,#1a1f27,#0f1116);
  --modal-bg:linear-gradient(145deg,#1a1f27,#0f1116);
  --modal-input-bg:#12151b; --modal-border:#c9a227;
  --hint-color:#3a4049; --scrollbar:#2b313b;
  --search-bg:#12151b; --search-border:#2b313b; --search-color:#e8e3d8;
  --badge-bg:#1d1a10; --badge-border:#6d5c22; --badge-color:#c9a227;
  --fbtn-border:#2b313b; --fbtn-color:#6c7683;
  --fbtn-active-bg:#c9a227; --fbtn-active-border:#c9a227; --fbtn-active-color:#1a1408;
  --name-color:#e8e3d8; --loc-color:#6c7683; --range-color:#5b636e; --idle-color:#4d545e;
  --toast-bg:linear-gradient(135deg,#1a1f27,#0f1116); --toast-sub:#6c7683;
  --no-result:#4d545e;
  --spinner-border:#232830; --spinner-top:#c9a227;
  --map-bg:#12151b; --map-grid:#232830; --map-border:#2b313b;
  --map-label:#6c7683; --map-crosshair:#232830;
  --coords-bg:#12151b; --coords-color:#c9a227;
  --accent:#c9a227;
  --wt-signal:#c9a227;
}
body.game-ro  { --wt-signal:#a06bff; }
body.game-roz { --wt-signal:#1fb6d4; }

body.light{
  --bg:#f2f0ea; --bg2:#ffffff;
  --border:#e4e1d9; --border2:#d6d2c8;
  --text:#1f2228; --text2:#4d545e; --text3:#6b7280; --text-dim:#8a9099;
  --card-footer-border:#e8e5dd;
  --header-bg:linear-gradient(180deg,#fbf9f4,#f2f0ea);
  --modal-bg:linear-gradient(145deg,#fff,#f7f5ef);
  --modal-input-bg:#fff; --modal-border:#8a6d10;
  --hint-color:#b8b4aa; --scrollbar:#c9c5ba;
  --search-bg:#fff; --search-border:#d6d2c8; --search-color:#1f2228;
  --badge-bg:#fbf4dc; --badge-border:#c9b578; --badge-color:#8a6d10;
  --fbtn-border:#d6d2c8; --fbtn-color:#6b7280;
  --fbtn-active-bg:#c9a227; --fbtn-active-border:#8a6d10; --fbtn-active-color:#1a1408;
  --name-color:#12141a; --loc-color:#6b7280; --range-color:#8a9099; --idle-color:#b8b4aa;
  --toast-bg:linear-gradient(135deg,#fff,#f7f5ef); --toast-sub:#6b7280;
  --map-bg:#f7f5ef; --map-grid:#e4e1d9; --map-border:#d6d2c8;
  --coords-bg:#fff; --coords-color:#8a6d10;
  --accent:#8a6d10;
}

/* Liseré de version, en haut de page, sur les DEUX versions. */
body.game-ro::before, body.game-roz::before{
  content:"";position:fixed;inset:0 0 auto 0;height:3px;z-index:9999;
  background:linear-gradient(90deg,transparent,var(--wt-signal),transparent);
  pointer-events:none;
}

/* En-tête : filtres sur la même ligne que le titre. */
#header-top{align-items:center;gap:14px}
#controls{flex:1;justify-content:flex-end}

/* ── Barre de filtres de l'en-tête ─────────────────────────── */
#wt-filters{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.wt-group{display:flex;align-items:center;gap:6px}
.wt-group-label{
  font-size:9px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--text3);font-family:'Courier New',monospace;
}
.wt-seg{display:flex;border:1px solid var(--fbtn-border);border-radius:4px;overflow:hidden}
.wt-seg-btn{
  border:0;background:transparent;cursor:pointer;
  font-family:'Courier New',monospace;font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--fbtn-color);padding:5px 10px;
  transition:background .12s,color .12s;
}
.wt-seg-btn:hover{color:var(--text)}
.wt-seg-btn[aria-pressed="true"]{
  background:var(--fbtn-active-bg);color:var(--fbtn-active-color);
  box-shadow:inset 0 -2px 0 var(--fbtn-active-border);
}
.wt-seg-btn[data-value="pvp"]{color:#c8695c}
.wt-seg-btn[data-value="pvp"][aria-pressed="true"]{color:#ff8a72}
.wt-seg-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}


/* ── MISE EN PAGE ──────────────────────────────────────────────
   Trois colonnes 50 / 25 / 25. L'horizon occupe les deux premières
   (75 %), la colonne latérale les deux rangées.
   ────────────────────────────────────────────────────────────── */
#wt-layout{
  display:grid;
  grid-template-columns:2fr 1fr 1fr;
  grid-template-rows:auto minmax(0,1fr);
  gap:12px;padding:12px;align-items:start;
}
#wt-horizon      { grid-column:1 / 3; grid-row:1; margin:0; border-radius:8px; border:1px solid var(--border); }
#wt-side         { grid-column:3;     grid-row:1 / 3; display:flex; flex-direction:column; gap:12px; min-width:0; }
#wt-imminent-col { grid-column:1;     grid-row:2; min-width:0; }
/* Guilde neuve, ou aucun boss en fenetre : Imminent disparait et la liste
   prend sa place. C'est le premier ecran de tout nouvel utilisateur, il ne
   doit pas etre a moitie vide. */
#wt-layout.no-imminent #wt-imminent-col{display:none}
#wt-layout.no-imminent #wt-list-col{grid-column:1 / 3}
#wt-imminent{max-height:min(62vh,720px);overflow-y:auto}
.wt-imminent-grid > .wt-hero{flex:0 0 auto}
#wt-list-col     { grid-column:2;     grid-row:2; min-width:0; }

.wt-panel{
  background:var(--bg2);border:1px solid var(--border);border-radius:8px;
  padding:12px 14px;min-width:0;
}
#wt-list-col, #wt-imminent-col{
  background:var(--bg2);border:1px solid var(--border);border-radius:8px;
  padding:12px 14px;
}
#wt-list-col > .wt-eyebrow, #wt-imminent-col > .wt-eyebrow{display:block;margin-bottom:10px}
#wt-list-col #grid{max-height:min(62vh,720px);overflow-y:auto}
#wt-side .wt-eyebrow{display:block;margin-bottom:10px}
#wt-stats{max-height:44vh;overflow-y:auto;font-size:11px}
#wt-stats .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
#wt-stats .top-table{font-size:10px}
#wt-stats .heat-grid,#wt-stats .heat-labels{overflow-x:auto}

/* Recent kills */
.wt-recent-row{
  display:flex;align-items:baseline;gap:8px;padding:6px 0;
  border-bottom:1px solid var(--card-footer-border);font-size:11px;
}
.wt-recent-row:last-child{border-bottom:none}
.wt-recent-time{font-family:'Courier New',monospace;color:var(--text3);font-size:10px;flex:0 0 auto}
.wt-recent-name{color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wt-recent-by{font-family:'Courier New',monospace;color:var(--badge-color);font-size:10px;flex:0 0 auto}
.wt-recent-empty{font-size:11px;color:var(--text-dim);padding:6px 0}

@media (max-width:1100px){
  #wt-layout{grid-template-columns:1fr;grid-template-rows:none}
  #wt-horizon,#wt-side,#wt-imminent-col,#wt-list-col{grid-column:1;grid-row:auto}
  #wt-layout.no-imminent #wt-list-col{grid-column:1}
  #wt-list-col #grid{max-height:none}
  #wt-stats{max-height:none}
}

/* Telephone : on ne garde que ce sur quoi on agit, Imminent et la liste.
   L'horizon demande de la largeur, Recent kills et Stats sont de la
   consultation — elles n'ont pas leur place sur un ecran qu'on sort en
   courant vers un spot. */
@media (max-width:720px){
  #wt-horizon{display:none}
  #wt-side{display:none}
  #wt-layout{gap:10px;padding:10px}

  /* En-tête réduite au titre et au menu. Sur un téléphone qu'on sort en
     courant vers un spot, filtrer ou chercher n'a pas de sens : on veut
     voir ce qui est ouvert, tout de suite. */
  #wt-filters{display:none}
  #active-badge{display:none}
  #search{display:none}
}

/* ── Horizon ───────────────────────────────────────────────── */
#wt-horizon{
  background:var(--bg2);border-bottom:1px solid var(--border);
  padding:12px 20px 8px;
}
.wt-horizon-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.wt-eyebrow{
  font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--badge-color);font-family:'Courier New',monospace;
}
.wt-eyebrow-sub{font-size:10px;letter-spacing:.1em;color:var(--text3);font-family:'Courier New',monospace}
.wt-horizon-clock{margin-left:auto;font-size:10px;color:var(--text3);font-family:'Courier New',monospace}
#wt-lanes{position:relative;min-height:34px}
.wt-lane{position:relative;height:32px;z-index:1}
.wt-bar-item{
  position:absolute;top:13px;height:8px;border-radius:2px;
  background:var(--border2);min-width:4px;
}
.wt-bar-item[data-state="spawning"]{background:#e8b52e}
.wt-bar-item[data-state="spawned"]{background:#8e2f22}
.wt-bar-item[data-state="urgent"]{background:#d97b2e}
.wt-bar-label{
  position:absolute;top:-2px;font-size:10px;letter-spacing:.05em;
  color:var(--text2);white-space:nowrap;font-family:'Courier New',monospace;
  cursor:pointer;
}
.wt-bar-label[data-zone="pvp"]{color:#c8695c}
.wt-axis{position:relative;height:15px;border-top:1px solid var(--border);margin-top:2px}
.wt-tick{position:absolute;top:2px;font-size:9px;color:var(--text-dim);font-family:'Courier New',monospace}
.wt-nowline{position:absolute;top:0;bottom:0;width:1px;background:#a8291c;opacity:.7;z-index:2}
.wt-maint{
  position:absolute;top:0;bottom:0;z-index:0;pointer-events:none;
  background:repeating-linear-gradient(45deg,
    rgba(128,128,128,.14) 0 6px,transparent 6px 12px);
  border-left:1px solid var(--border);border-right:1px solid var(--border);
}

/* ── Section Imminent ──────────────────────────────────────── */
/* Une carte par ligne : empilees, elles se comparent au coup d'oeil. */
.wt-imminent-grid{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.wt-hero{
  position:relative;overflow:hidden;display:flex;gap:12px;align-items:center;
  background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:12px;
  cursor:pointer;
}
.wt-hero[data-state="spawning"]{border-color:#8a6d10}
.wt-hero[data-state="spawned"]{border-color:#5e2118}
.wt-hero[data-zone="pvp"]{border-left:3px solid #a8291c}
.wt-hero::after{
  content:"";position:absolute;inset:0 0 0 auto;width:170px;
  background-image:var(--mvp-art,none);background-size:96px 96px;
  background-position:center right 12px;background-repeat:no-repeat;
  image-rendering:pixelated;opacity:.30;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 62%);
          mask-image:linear-gradient(90deg,transparent 0%,#000 62%);
}
.wt-hero[data-zone="pvp"]::after{opacity:.18}
body.light .wt-hero::after{opacity:.16}
.wt-hero > *{position:relative;z-index:1}
.wt-hero-body{flex:1;min-width:0}
.wt-hero-right{text-align:right;flex:0 0 auto}
.wt-hero-timer{font-size:19px;font-family:'Courier New',monospace;color:var(--text)}
.wt-hero-label{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);margin-top:3px}

/* ── Claim ─────────────────────────────────────────────────── */
.wt-claim-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px}
.wt-avatars{display:flex}
.wt-av{
  width:21px;height:21px;border-radius:50%;background:var(--badge-bg);
  border:1px solid var(--badge-border);display:flex;align-items:center;
  justify-content:center;font-size:9px;color:var(--badge-color);
  font-family:'Courier New',monospace;margin-right:-6px;
}
.wt-claim-text{
  font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text2);font-family:'Courier New',monospace;padding-left:8px;
}
.wt-claim-text[data-empty="true"]{color:var(--text-dim)}
.wt-actions{margin-left:auto;display:flex;gap:6px}
.wt-btn{
  cursor:pointer;font-family:'Courier New',monospace;font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;padding:6px 11px;border-radius:4px;
  background:transparent;border:1px solid var(--fbtn-border);color:var(--fbtn-color);
  transition:all .13s;
}
.wt-btn:hover{color:var(--text);border-color:var(--fbtn-active-border)}
.wt-btn--primary{background:var(--fbtn-active-bg);border-color:var(--fbtn-active-border);color:var(--fbtn-active-color)}
/* Etat « je suis dessus » : contour accentue et texte accentue.
   Reprendre --fbtn-active-color (encre sombre, prevue pour un fond plein)
   rendait le libelle invisible sur fond transparent. */
.wt-btn--on{
  background:color-mix(in srgb, var(--accent) 14%, transparent);
  border-color:var(--accent);
  color:var(--accent);
  font-weight:700;
}
.wt-btn--on:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);color:var(--accent)}
.wt-btn:disabled{opacity:.4;cursor:not-allowed}

/* ── Liste dense (remplace #grid) ──────────────────────────── */
#grid{display:flex;flex-direction:column;gap:0}
/* Hauteur bornee : une ligne ne doit jamais depasser la moitie d'une carte
   Imminent, sinon la liste cesse d'etre une liste. */
#grid .wt-row{
  display:flex;align-items:center;gap:10px;padding:0 12px;
  /* flex-shrink:0 est indispensable : #grid est un conteneur flex en colonne
     a hauteur bornee, donc ses enfants se compriment par defaut au lieu de
     faire defiler. Avec 70 boss sur RO, les lignes se chevauchaient. */
  height:38px;min-height:38px;flex:0 0 38px;overflow:hidden;
  border-bottom:1px solid var(--card-footer-border);cursor:pointer;
  transition:background .12s;position:relative;
}
#grid .wt-row:hover{background:var(--bg2)}
#grid .wt-row[data-zone="pvp"]{border-left:3px solid #a8291c;padding-left:9px}
#grid .wt-row.spawning{background:rgba(232,181,46,.07)}
#grid .wt-row.spawned{background:rgba(168,41,28,.09)}
/* Le sprite occupe le fond du bandeau, côté droit, fondu vers la gauche :
   même traitement que les cartes Imminent. Pas de vignette. */
#grid .wt-row::after{
  content:"";position:absolute;inset:0 0 0 auto;width:110px;
  background-image:var(--mvp-art,none);background-size:30px 30px;
  background-position:center right 8px;background-repeat:no-repeat;
  image-rendering:pixelated;opacity:.26;pointer-events:none;z-index:0;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 70%);
          mask-image:linear-gradient(90deg,transparent 0%,#000 70%);
}
#grid .wt-row[data-zone="pvp"]::after{opacity:.16}
body.light #grid .wt-row::after{opacity:.14}
#grid .wt-row > *{position:relative;z-index:1}
.wt-main{flex:1;min-width:0}
.wt-name{
  font-size:15px;color:var(--name-color);font-weight:600;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.wt-sub{
  font-size:10px;color:var(--text3);margin-top:2px;
  font-family:'Courier New',monospace;letter-spacing:.04em;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.wt-row-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.wt-row .timer-col{text-align:right;min-width:104px}
.wt-row-btns{display:flex;gap:4px;opacity:0;transition:opacity .12s}
#grid .wt-row:hover .wt-row-btns,#grid .wt-row:focus-within .wt-row-btns{opacity:1}
.wt-claim-mini{
  font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--badge-color);font-family:'Courier New',monospace;
}

/* ── Effet berserk sur les noms PvP (option B) ─────────────── */
.wt-row[data-zone="pvp"] .wt-name-text,
.wt-hero[data-zone="pvp"] .wt-name-text{
  color:#ff6f52;
  animation:wt-berserk 2.6s ease-in-out infinite;
  animation-delay:var(--wt-berserk-delay,0s);
}
@keyframes wt-berserk{
  0%,100%{text-shadow:0 0 3px rgba(255,74,42,.30),0 0 10px rgba(185,25,10,.22)}
  50%    {text-shadow:0 0 7px rgba(255,95,55,.80),0 0 22px rgba(205,30,12,.55)}
}
body.light .wt-row[data-zone="pvp"] .wt-name-text,
body.light .wt-hero[data-zone="pvp"] .wt-name-text{
  color:#c0290f;animation-name:wt-berserk-light;
}
@keyframes wt-berserk-light{
  0%,100%{text-shadow:0 0 3px rgba(192,41,15,.16)}
  50%    {text-shadow:0 0 8px rgba(192,41,15,.42)}
}
@media (prefers-reduced-motion:reduce){
  .wt-row[data-zone="pvp"] .wt-name-text,
  .wt-hero[data-zone="pvp"] .wt-name-text{
    animation:none;text-shadow:0 0 4px rgba(255,74,42,.5),0 0 14px rgba(185,25,10,.38);
  }
}

/* ── Bouton de soutien ─────────────────────────────────────── */
.wt-support{
  display:inline-block;text-decoration:none;cursor:pointer;
  background:var(--badge-bg);border:1px solid var(--badge-border);border-radius:4px;
  padding:7px 13px;color:var(--badge-color);
  font-family:'Courier New',monospace;font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;transition:background .14s,color .14s;white-space:nowrap;
}
.wt-support:hover{background:var(--fbtn-active-bg);color:var(--fbtn-active-color);border-color:var(--fbtn-active-border)}

@media (max-width:720px){
  #wt-filters{width:100%;gap:10px}
  .wt-group{flex:1}
  .wt-seg{flex:1}
  .wt-seg-btn{flex:1;text-align:center;padding:6px 4px}
  .wt-row-btns{opacity:1}
  .wt-row .timer-col{min-width:78px}
  #wt-horizon{padding:10px 12px 6px}

}

/* Le tooltip d'élément est accroché à ce seul tag, pas à toute la ligne :
   sinon il se superposait à la mini-carte de survol. */
.wt-el-tag{
  display:inline-block;padding:1px 6px;border-radius:3px;
  border:1px solid var(--border2);background:var(--bg);
  font-size:9px;letter-spacing:.04em;cursor:help;
}

/* ── Ligne de liste : nom, auteur, compte à rebours ───────────── */
#grid .wt-row .wt-name-text{
  flex:1;min-width:0;font-size:13px;color:var(--name-color);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
#grid .wt-row .wt-row-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}
#grid .wt-row .timer-text{font-size:12px;min-width:74px;text-align:right}
/* renderTick() reaffiche ce span : on le neutralise ici plutôt que dans le
   JS, pour ne pas toucher a la logique d'alerte qui s'en sert. */
#grid .wt-row .timer-elapsed{display:none !important}
.wt-untracked{
  font-family:'Courier New',monospace;font-size:10px;
  letter-spacing:.06em;color:var(--text-dim);white-space:nowrap;
}
/* Repère de hauteur : la carte Imminent fait au moins le double. */
.wt-hero{min-height:96px}

/* ── Reprises de app.css ─────────────────────────────────────
   app.css utilise maintenant les variables du thème : ces règles ne
   corrigent plus que les cas où sa valeur d'origine restait inadaptée
   (élément ciblé par identifiant, ou fond plein sur texte accentué).
   ────────────────────────────────────────────────────────────── */

/* Bouton de contact, en bas à droite. */
#contact-fab{
  background:var(--badge-bg);border:1px solid var(--badge-border);
  color:var(--badge-color);box-shadow:0 4px 16px rgba(0,0,0,.45);
  font-size:18px;
}
#contact-fab:hover{
  background:var(--accent);color:var(--fbtn-active-color);
  box-shadow:0 6px 22px color-mix(in srgb, var(--accent) 40%, transparent);
}

/* Barre de guilde. */
#guild-bar{background:var(--bg2);border-bottom:1px solid var(--border)}
#guild-copy-btn{
  background:var(--badge-bg);border:1px solid var(--badge-border);
  color:var(--badge-color);font-family:'Courier New',monospace;letter-spacing:.06em;
}
#guild-copy-btn:hover{
  background:var(--accent);border-color:var(--accent);color:var(--fbtn-active-color);
}
/* Le bouton de soutien vit dans la barre de guilde, cale a droite avec
   Leave : un lien de don n'a pas sa place dans la barre d'action. */
/* Deux margin-left:auto se partageaient l'espace libre, d'ou le trou entre
   le bouton de soutien et Leave. Une seule marge automatique, portee par le
   premier element du groupe de droite, colle les deux ensemble. */
#guild-bar .wt-support{margin-left:auto;padding:4px 11px;font-size:9px}
#guild-leave-btn{margin-left:0;background:transparent;border:1px solid var(--border2);color:var(--text3)}
#guild-leave-btn:hover{border-color:#8e2f22;color:#ff8a72}

/* ── Toasts ──────────────────────────────────────────────────
   Trois variantes sémantiques. Le fond vient du thème, seule la
   bordure et la couleur du texte changent : c'est ce qui les rend
   lisibles en clair comme en sombre.
   ────────────────────────────────────────────────────────────── */
.toast-msg{font-size:12px;font-weight:700}
.toast-info{border:1px solid var(--badge-border)}
.toast-info .toast-msg{color:var(--badge-color)}
.toast-success{border:1px solid #3f7a52}
.toast-success .toast-msg{color:#7fc898}
.toast-error{border:1px solid #8e2f22}
.toast-error .toast-msg{color:#ff8a72}
body.light .toast-success .toast-msg{color:#2f6b45}
body.light .toast-error .toast-msg{color:#a3301c}

/* Boutons de la modale son : même grammaire que les segments de filtre. */
.sound-toggle{font-family:'Courier New',monospace;letter-spacing:.06em}
.sound-toggle.active{
  background:var(--fbtn-active-bg);border-color:var(--fbtn-active-border);
  color:var(--fbtn-active-color);font-weight:700;
}
/* ON / OFF des déclencheurs : l'état actif doit se voir d'un coup d'œil. */
#tog-spawning:not(.off),#tog-spawned:not(.off){
  background:var(--fbtn-active-bg);border-color:var(--fbtn-active-border);
  color:var(--fbtn-active-color);font-weight:700;
}

/* ── Modale Discord ──────────────────────────────────────────── */
.dc-steps{margin:0 0 14px;padding-left:20px;font-size:12px;color:var(--text2);line-height:1.9}
.dc-row{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.dc-input{
  flex:1;background:var(--modal-input-bg);border:1px solid var(--border2);
  border-radius:4px;padding:7px 10px;color:var(--text);
  font-family:'Courier New',monospace;font-size:11px;
}
.dc-input:focus{outline:none;border-color:var(--accent)}
.dc-hint{font-size:11px;color:var(--text3);margin:8px 0 0;line-height:1.6}
.dc-warn{font-size:11px;color:#e0a13a;margin:8px 0 0}
.dc-broken{
  font-size:11px;color:#ff8a72;background:rgba(142,47,34,.14);
  border:1px solid #8e2f22;border-radius:4px;padding:9px 11px;margin-bottom:12px;line-height:1.6;
}
.dc-field{
  display:flex;align-items:center;gap:10px;padding:9px 0;
  border-top:1px solid var(--card-footer-border);font-size:12px;color:var(--text);
}
.dc-field > span:first-child{flex:1}
.dc-sub{font-size:10px;color:var(--text3);font-weight:400}
.dc-danger{border-color:#8e2f22;color:#ff8a72}
.dc-danger:hover{background:rgba(142,47,34,.16);border-color:#8e2f22;color:#ff8a72}
.dc-watch{
  max-height:46vh;overflow-y:auto;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px;
  border:1px solid var(--border);border-radius:4px;padding:8px;
}
.dc-watch-row{
  display:flex;align-items:center;gap:8px;padding:4px 6px;
  font-size:12px;color:var(--text2);cursor:pointer;border-radius:3px;
}
.dc-watch-row:hover{background:var(--bg2);color:var(--text)}

/* ── Consigne de saisie propre à une version ─────────────────
   Zero compte le respawn depuis le broadcast, pas depuis la mort.
   Affichée sous le champ d'heure de la modale d'édition.
   ────────────────────────────────────────────────────────────── */

.kill-hint{
  margin:7px 0 0;font-size:10.5px;line-height:1.5;
  color:var(--badge-color);
}
.kill-hint::before{content:"\26a0  "}
