/* L'onglet Sessions de boss : cartes de groupe, rapports, archive.

   Sortie du <style> d'index.html. L'ordre de chargement est fixe par
   index.html et verifie par tests/css-ordre.test.js. */

/* ---------- Sessions de boss ---------- */
.boss-weekhead{margin-top:18px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;
  background:linear-gradient(180deg,rgba(217,164,65,.07),var(--obsidian-2))}
.boss-weekboss{font-family:var(--display);font-size:20px;font-weight:600;color:var(--gold-bright);letter-spacing:.02em}
.boss-weeksub{font-size:12.5px;color:var(--muted);margin-top:3px}
.boss-recommendation{margin-top:14px;padding:16px;border:1px solid rgba(217,164,65,.34);
  border-radius:12px;background:linear-gradient(145deg,rgba(217,164,65,.08),var(--obsidian-2))}
.boss-reco-head{display:flex;align-items:center;justify-content:space-between;gap:14px}
.boss-reco-head h2{margin:2px 0 0;font-family:var(--display);font-size:17px;color:var(--parchment)}
.boss-reco-kicker{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-bright)}
.boss-reco-note,.boss-reco-week,.boss-reco-status,.boss-reco-error,.boss-reco-summary,.boss-reco-warning{
  margin:10px 0 0;font-size:12.5px;line-height:1.45;color:var(--muted)}
.boss-reco-week{color:var(--parchment)}
.boss-reco-error,.boss-reco-warning{color:#e9a0a0}
.boss-reco-slots{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}
.boss-reco-slot{min-height:40px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;
  background:var(--obsidian-2);color:var(--muted);font:600 11px var(--ui);cursor:pointer}
.boss-reco-slot:hover,.boss-reco-slot:focus-visible,.boss-reco-slot.active{
  border-color:var(--gold-deep);color:var(--gold-bright);background:rgba(217,164,65,.1)}
.boss-reco-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;margin-top:12px}
.boss-reco-group{min-width:0;padding:12px;border:1px solid var(--line-soft);border-radius:10px;
  background:rgba(11,9,16,.52)}
.boss-reco-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  padding-bottom:8px;border-bottom:1px solid var(--line-soft)}
.boss-reco-group-head h3{margin:0;font-family:var(--display);font-size:14px;color:var(--gold-bright)}
.boss-reco-group-head span{font-size:10px;color:var(--muted);text-align:right}
.boss-reco-members{display:flex;flex-direction:column;gap:7px;margin:9px 0 0;padding:0;list-style:none}
.boss-reco-members li{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;min-width:0}
.boss-reco-member-name{font-size:12px;font-weight:700;color:var(--parchment);overflow-wrap:anywhere}
.boss-reco-member-meta{font-size:10.5px;line-height:1.35;color:var(--muted);text-align:right}
.boss-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:16px}
.boss-card{min-width:0;display:flex;flex-direction:column;gap:10px;
  background:linear-gradient(180deg,var(--panel),var(--obsidian-2));
  border:1px solid var(--line);border-radius:12px;padding:14px;transition:.16s}
@media(max-width:560px){
  .boss-reco-head,.boss-reco-group-head{align-items:stretch;flex-direction:column}
  .boss-reco-head .btn{width:100%;justify-content:center}
  .boss-reco-group-head span,.boss-reco-member-meta{text-align:left}
  .boss-reco-members li{flex-direction:column;gap:2px}
}
.boss-card.mine{border-color:var(--gold-deep);box-shadow:inset 0 0 0 1px rgba(217,164,65,.18)}
.boss-card-head{display:flex;align-items:center;gap:8px;justify-content:space-between}
.boss-card-title{font-family:var(--display);font-weight:600;font-size:17px;color:var(--parchment);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.boss-membercount{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--muted);flex:none;
  padding:2px 9px;border-radius:999px;border:1px solid var(--line)}
.boss-members{display:flex;flex-direction:column;gap:7px;flex:1;min-height:26px}
.boss-member{min-width:0;padding:8px;border:1px solid var(--line-soft);border-radius:9px;
  background:rgba(11,9,16,.46)}
.boss-member.me{border-color:var(--gold-deep);background:rgba(217,164,65,.06)}
.boss-member-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.boss-member-name{font-size:12px;font-weight:700;color:var(--parchment);
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.boss-member.me .boss-member-name{color:var(--gold-bright)}
.boss-team-state{display:inline-flex;align-items:center;gap:5px;flex:none;font-size:10px;
  font-weight:700;letter-spacing:.03em;color:var(--muted)}
.boss-team-state::before{content:"";width:6px;height:6px;border-radius:50%;
  background:var(--muted-2)}
.boss-team-state.ready{color:var(--gold-bright)}
.boss-team-state.ready::before{background:var(--gold);box-shadow:0 0 7px rgba(217,164,65,.55)}
.boss-member-team-preview{appearance:none;width:100%;min-width:0;margin-top:7px;padding:6px;
  border:1px solid var(--line);border-radius:8px;background:var(--obsidian-2);
  color:var(--parchment);cursor:pointer;text-align:left}
.boss-member-team-preview:hover{border-color:var(--gold-deep)}
.boss-team-banner{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;min-width:0}
.boss-team-banner-hero{min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px}
.boss-team-banner-portrait{width:100%;aspect-ratio:1;border-radius:6px;overflow:hidden;
  display:grid;place-items:center;background:var(--vignette-fond,#0b0910);border:1px solid var(--line-soft);
  color:var(--muted-2);font-size:10px}
.boss-team-banner-portrait img{width:100%;height:100%;object-fit:cover}
.boss-team-banner-name{width:100%;font-size:9px;text-align:center;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.boss-member-team-action{width:100%;justify-content:center;margin-top:7px;padding:8px 10px;font-size:12px}
.boss-none{font-size:12px;color:var(--muted-2);font-style:italic}
.boss-over-capacity{margin:0;padding:8px 10px;border:1px solid rgba(161,44,44,.65);
  border-radius:8px;background:rgba(161,44,44,.13);color:#f0aaaa;font-size:12px;
  font-weight:700;line-height:1.35;overflow-wrap:anywhere}
.boss-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.boss-actions .btn{min-width:0;width:100%;justify-content:center}
.boss-secondary-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.boss-secondary-actions .btn{min-width:0;min-height:44px;width:100%;justify-content:center;
  overflow-wrap:anywhere;text-align:center}
.boss-analyse-link[aria-disabled="true"]{pointer-events:none;opacity:.48;cursor:not-allowed}
.boss-route-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:16px;padding:12px 14px;border:1px solid rgba(217,164,65,.45);
  border-radius:10px;background:rgba(217,164,65,.08)}
.boss-route-notice p{margin:0;min-width:0;overflow-wrap:anywhere}
.boss-route-notice .btn{min-height:44px;flex:none}
@media(max-width:480px){
  .boss-secondary-actions{grid-template-columns:1fr}
  .boss-route-notice{align-items:stretch;flex-direction:column}
  .boss-route-notice .btn{width:100%;justify-content:center}
}
.modal.boss-team-modal{width:min(720px,100%)}
.modal-head{display:flex;align-items:center;gap:12px;padding:16px 18px;
  border-bottom:1px solid var(--line)}
.modal-head h2{margin:0 auto 0 0;font-family:var(--display);font-size:18px;
  font-weight:600;letter-spacing:.05em;color:var(--parchment)}
.boss-team-list{display:flex;flex-direction:column;gap:10px;padding:16px;overflow-y:auto;overflow-x:hidden;min-width:0}
.boss-team-choice{appearance:none;width:100%;min-width:0;padding:10px;border:1px solid var(--line);
  border-radius:10px;background:linear-gradient(165deg,var(--panel-2),var(--obsidian-2));
  color:var(--parchment);cursor:pointer;text-align:left}
.boss-team-choice:hover,.boss-team-choice:focus-visible{border-color:var(--gold-deep)}
.boss-team-choice:disabled{opacity:.55;cursor:wait}
.boss-team-choice-heroes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.boss-team-choice-hero{min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr);
  gap:7px;align-items:center}
.boss-team-choice-portrait{width:42px;height:42px;border:1px solid var(--line-soft);
  border-radius:7px;overflow:hidden;display:grid;place-items:center;background:var(--vignette-fond,#0b0910);
  color:var(--muted-2);font-size:11px}
.boss-team-choice-portrait img{width:100%;height:100%;object-fit:cover}
.boss-team-choice-name{min-width:0;font-size:11px;font-weight:600;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.boss-team-choice-date{display:block;margin-top:8px;padding-top:7px;border-top:1px solid var(--line-soft);
  color:var(--muted);font-size:11px}
.boss-team-choice-title{
  display:block;margin-bottom:8px;font-family:var(--display);font-weight:600;
  font-size:14px;color:var(--gold-bright);overflow-wrap:anywhere
}
/* Sa propre classe, et non celle du choix d'equipe : une liste de pseudos n'a
   pas besoin des 720 px qu'il faut a quatre portraits. Les confondre avait un
   second cout, moins visible — un parcours qui visait `.boss-team-modal` en
   trouvait soudain deux et s'arretait net. */
.modal.boss-member-modal{width:min(460px,100%)}

/* LES GESTES D'ADMINISTRATION SUR UN GROUPE.

   Le choix d'un membre reprend le cadre de `.boss-team-choice` — meme modale,
   meme liste — mais ne montre qu'un pseudo la ou une equipe deploie quatre
   portraits. D'ou la hauteur minimale : sans elle, la ligne tombait sous la
   cible tactile de 44 px que le parcours d'accessibilite mesure. */
.boss-member-choice{
  min-height:44px;display:flex;align-items:center;
  font-weight:600;font-size:14px
}
/* « Retirer » suit « Choisir son équipe » dans la ligne du membre : meme
   largeur pleine, pour que les deux gestes s'empilent au lieu de se disputer
   la place sur un ecran etroit. */
.boss-member-remove{
  width:100%;justify-content:center;margin-top:7px;
  min-height:44px;padding:8px 10px;font-size:12px
}
.boss-team-empty{text-align:center;padding:28px 16px;color:var(--muted)}
.boss-team-empty p{margin:0 0 14px;line-height:1.45}
.boss-team-empty .btn{justify-content:center}
.modal.boss-report-modal{width:min(620px,100%)}
.boss-report-body{
  min-width:0;padding:18px;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:12px
}
.boss-report-members{
  display:flex;flex-direction:column;gap:7px;padding:10px;
  border:1px solid var(--line-soft);border-radius:10px;background:var(--obsidian-2)
}
.boss-report-member{
  min-width:0;display:flex;align-items:center;justify-content:space-between;gap:10px;
  color:var(--parchment);font-size:13px
}
.boss-report-member-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.boss-report-member-state{flex:none;color:var(--gold-bright);font-size:11px}
.boss-report-member-state.missing{color:#e98d8d}
/* Les champs d'une modale de run — rapport de boss ou entrainement. Ils
   etaient attaches aux identifiants du seul rapport de boss ; l'entrainement
   s'est donc ouvert avec des libelles en texte courant et, surtout, un
   `<textarea>` sans hauteur : la note facultative tenait sur un filet de
   deux pixels. Des classes partagees, une seule mise en page. */
.modal-field-label{
  font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)
}
.modal-score-field,.modal-note-field,.modal-date-field{
  width:100%;min-width:0;font-family:var(--ui);color:var(--parchment);
  background:var(--obsidian-2);border:1px solid var(--line);border-radius:9px
}
.modal-date-field{min-height:44px;padding:8px 12px}
.modal-score-field{
  min-height:52px;padding:8px 12px;text-align:center;
  font-family:var(--display);font-size:clamp(24px,7vw,34px);font-weight:700;
  letter-spacing:.04em;color:var(--gold-bright);border-color:var(--gold-deep);
  box-shadow:inset 0 0 22px rgba(217,164,65,.06)
}
.modal-score-field[aria-invalid="true"]{border-color:var(--crimson)}
.modal-note-field{min-height:104px;padding:11px 12px;resize:vertical;line-height:1.45}
.modal-note-count{margin-top:-7px;text-align:right;color:var(--muted-2);font-size:11px}
.modal-form-error{min-height:20px;margin:0;color:#e98d8d;font-size:12.5px;line-height:1.45}
#bossReportSubmit{min-height:44px;justify-content:center}
.boss-stats{
  margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:12px;
  background:linear-gradient(180deg,var(--panel),var(--obsidian-2))
}
.boss-stats-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding-bottom:10px;border-bottom:1px solid var(--line-soft)
}
.boss-stats-hint{font-size:11px;color:var(--muted-2);text-align:right}
.boss-stats-title{
  margin:0;font-family:var(--display);font-size:14px;font-weight:600;
  letter-spacing:.05em;color:var(--parchment)
}

/* ============ Entraînement du boss ============ */
.training-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.training-subviews{display:flex;flex-wrap:wrap;gap:6px}
.training-subviews [aria-pressed="true"]{color:var(--gold-bright);border-color:var(--gold-bright)}
.training-subviews .btn,#trainingAdd{min-height:44px}
/* Les cartes de run viennent de `.boss-run-card` (css/suivi.css) : voir le
   commentaire qui s'y trouve. Il ne reste ici que ce qui appartient en
   propre a l'entrainement. */
.training-panel{margin-top:16px}
.training-edit{flex:none;min-height:44px;margin-left:auto}
.modal.training-modal{width:min(620px,100%)}
.training-form{display:grid;gap:8px;min-width:0;min-height:0;flex:1 1 auto;padding:18px;overflow-y:auto;overflow-x:hidden}
.training-members{border:1px solid var(--line-soft);border-radius:10px;padding:8px 10px 10px;min-width:0}
.training-members>legend{
  padding:0 6px;font-size:11px;font-weight:700;letter-spacing:.15em;
  text-transform:uppercase;color:var(--muted)
}
#trainingMembers{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:4px}
.training-member{display:flex;gap:8px;align-items:center;min-height:44px;cursor:pointer}
.training-member input{width:20px;height:20px}
.training-member span{font-size:13px;color:var(--parchment)}
.training-teams{display:grid;gap:8px}
.training-team-field{display:grid;gap:4px}
.training-team-field>label{
  font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)
}
.training-team-field select{
  min-height:44px;padding:8px 12px;font-family:var(--ui);color:var(--parchment);
  background:var(--obsidian-2);border:1px solid var(--line);border-radius:9px
}
.training-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.training-actions .btn{min-height:44px}
.training-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}
.training-filter select{min-height:44px;max-width:100%}
/* La courbe de scores, partagee par l'entrainement et par la progression
   hebdomadaire du boss de guilde (voir traceCourbeScores dans
   js/vues/courbe-scores.js). Son viewBox epouse la largeur du cadre : une
   unite vaut un pixel, donc le texte garde son corps a toutes les tailles
   d'ecran. */
.score-chart-wrap{position:relative;margin:4px 0 14px;min-height:200px}
/* `pointer-events:all` est une precaution, pas un correctif : la valeur
   initiale `visiblePainted` ne vise une forme que la ou elle est peinte, si
   bien qu'un moteur strict ignorerait le vide au-dessus de la courbe et
   l'infobulle n'y suivrait pas le pointeur. Chromium, lui, teste deja toute
   la boite de l'element racine — le parcours Playwright ne peut donc PAS
   prouver que cette ligne sert. Ne pas la retirer sur la foi d'un test vert :
   il faudrait d'abord verifier Safari et Firefox a la main. */
.score-chart{width:100%;height:auto;display:block;overflow:visible;
  pointer-events:all}
.score-chart-grid{stroke:var(--line-soft);stroke-width:1}
.score-chart-axis-label{
  fill:var(--muted-2);font-family:var(--ui);font-size:11px;letter-spacing:.02em
}
.score-chart-area-haut{stop-color:var(--gold);stop-opacity:.30}
.score-chart-area-bas{stop-color:var(--gold);stop-opacity:0}
.score-chart-area{stroke:none}
.score-chart-line{
  fill:none;stroke:var(--gold-bright);stroke-width:2.5;
  stroke-linecap:round;stroke-linejoin:round;
  filter:drop-shadow(0 0 6px rgba(217,164,65,.35))
}
.score-chart-dot{fill:var(--obsidian-2);stroke:var(--gold-bright);stroke-width:2}
.score-chart-dot.is-best{fill:var(--gold-bright)}
.score-chart-dot.is-active{fill:var(--gold-bright);stroke-width:2.5}
.score-chart-guide{stroke:var(--gold-deep);stroke-width:1;stroke-dasharray:3 3}
/* L'etiquette de survol est en HTML : un <text> SVG ne revient pas a la
   ligne et ne porterait ni fond arrondi ni police du site. */
.score-chart-tip{
  position:absolute;z-index:2;transform:translate(-50%,-140%);
  padding:6px 10px;border:1px solid var(--gold-deep);border-radius:8px;
  background:var(--obsidian);box-shadow:0 6px 18px rgba(0,0,0,.45);
  pointer-events:none;opacity:0;transition:opacity .12s;
  display:flex;flex-direction:column;align-items:center;gap:1px;white-space:nowrap
}
.score-chart-tip.on{opacity:1}
.score-chart-tip strong{
  font-family:var(--display);font-size:15px;font-weight:700;color:var(--gold-bright)
}
.score-chart-tip span{font-size:10.5px;color:var(--muted)}
.score-chart-summary{margin:0 0 8px;color:var(--parchment);font-size:.92rem}
.score-chart-points{columns:2 14rem;color:var(--muted);font-size:.9rem}
.training-subtitle{
  margin:18px 0 8px;font-family:var(--display);font-size:14px;font-weight:600;
  letter-spacing:.05em;color:var(--parchment)
}
.training-subtitle:first-child{margin-top:0}
.training-compare-caveat{color:var(--muted);font-size:.85rem}
.training-compare-wrap{overflow-x:auto;max-width:100%}
.training-compare{border-collapse:collapse;width:100%;min-width:0}
.training-compare th,.training-compare td{padding:8px;border-bottom:1px solid var(--line-soft);text-align:left;overflow-wrap:anywhere}
