/* Dialogue CV : tiroir à droite au bureau, plein écran sur mobile. Fond opaque : les accents peuvent y être du texte. */
dialog#cv {
  position: fixed; inset: 0 0 0 auto; margin: 0; padding: 0; border: 0;
  width: min(760px, calc(100vw - 64px)); max-width: none; height: 100%; max-height: none;
  background: var(--surface); color: var(--texte); border-left: 1px solid var(--ligne);
  box-shadow: -24px 0 60px rgba(8, 10, 40, .5); overflow: hidden;
}
dialog#cv[open] { display: flex; flex-direction: column; animation: cv-tiroir .3s var(--courbe); }
dialog#cv::backdrop { background: rgba(14, 17, 48, .5); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
@keyframes cv-tiroir { from { transform: translateX(40px); opacity: 0; } }

.cv-tete { flex: none; padding: calc(14px + env(safe-area-inset-top, 0px)) 22px 0; background: var(--surface); border-bottom: 1px solid var(--ligne); }
.cv-ligne1 { display: flex; align-items: flex-start; gap: 12px; }
.cv-titres { flex: 1; min-width: 0; }
.cv-ligne1 h2 { margin: 0; font: 800 20px/1.2 var(--police-titre); font-stretch: 125%; }
.cv-visee { margin: 2px 0 0; font: 500 12px var(--police-mono); letter-spacing: .06em; color: var(--data); }
.cv-actions { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 10px; }
.cv-actions .btn { min-height: 34px; font-size: 11px; padding: 0 11px; }
.cv-onglets { display: flex; gap: 2px; }
.cv-onglet {
  min-height: 44px; padding: 0 14px; border: 0; border-bottom: 3px solid transparent; background: none; cursor: pointer;
  font: 600 12px var(--police-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--texte-2);
}
.cv-onglet[aria-selected="true"] { color: var(--texte); border-bottom-color: var(--or); }
.cv-onglet:hover { color: var(--texte); }

.cv-avert, .cv-bandeau { flex: none; margin: 0; padding: 9px 22px; font-size: 13px; border-bottom: 1px solid var(--ligne); }
.cv-avert { background: rgba(255, 184, 107, .12); color: #FFD7A8; }
.cv-bandeau { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; background: var(--panneau); color: var(--texte-2); }
.cv-bandeau .btn { min-height: 32px; font-size: 11px; }

.cv-doc { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 22px 40px; scroll-behavior: smooth; }
.cv-doc:focus-visible { outline: 2px solid #FFE08A; outline-offset: -4px; }
.cv-section { position: relative; padding: 18px 0 18px 16px; border-bottom: 1px solid var(--ligne); scroll-margin-top: 8px; }
.cv-section::before { content: ""; position: absolute; left: 0; top: 22px; bottom: 22px; width: 3px; border-radius: 2px; background: var(--acc, rgba(160, 170, 255, .45)); }
.cv-section.cv-cible { background: linear-gradient(90deg, rgba(255, 209, 102, .09), transparent); }
.cv-section h3 { margin: 0 0 6px; font: 800 17px/1.25 var(--police-titre); font-stretch: 112%; color: var(--acc, var(--texte)); }
.cv-identite h3, .cv-en_bref h3 { color: var(--texte); }
.cv-etat-bloc { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 8px; }
.cv-etat {
  display: inline-flex; align-items: center; min-height: 24px; padding: 0 8px; border-radius: 8px;
  font: 500 10.5px var(--police-mono); letter-spacing: .08em; text-transform: uppercase;
  color: var(--texte-2); border: 1px solid var(--ligne);
}
.cv-etat.joue { color: var(--ok); border-color: rgba(111, 207, 142, .55); }
.cv-partie { flex-basis: 100%; margin: 0; font-size: 13px; color: var(--data); }
.cv-nom { margin: 0; font: 800 22px var(--police-titre); font-stretch: 125%; }
.cv-poste { margin: 0; font-weight: 700; font-size: 15px; }
.cv-meta { margin: 2px 0 0; font: 500 12px var(--police-mono); letter-spacing: .03em; color: var(--texte-2); }
.cv-texte { margin: 8px 0 0; line-height: 1.62; max-width: 70ch; }
.cv-garde { margin: 10px 0 0; padding-left: 10px; border-left: 2px solid var(--ligne); color: var(--texte-2); line-height: 1.55; }
.cv-garde strong { color: var(--texte); font-weight: 600; }
.cv-liens { margin: 8px 0 0; }
.cv-lien { color: var(--data); text-underline-offset: 3px; }
.cv-liste { margin: 6px 0 0; padding-left: 18px; line-height: 1.6; }
.cv-liste li { margin: 2px 0; }
.cv-mise { margin-top: 4px; padding: 12px 14px; border: 1px dashed var(--acc); border-radius: 10px; background: rgba(255, 111, 216, .06); }
.cv-mise-titre { margin: 0 0 6px; font: 600 11px var(--police-mono); letter-spacing: .12em; text-transform: uppercase; color: #FF9EE8; }

.cv-verrou .cv-glyphes { display: grid; gap: 3px; margin: 10px 0 8px; overflow: hidden; }
.cv-glyphes span {
  font: 500 13px/1.3 var(--police-mono); letter-spacing: .12em; white-space: nowrap; overflow: hidden;
  color: transparent; background: linear-gradient(90deg, rgba(185, 192, 232, .3), color-mix(in srgb, var(--acc) 70%, #fff), rgba(185, 192, 232, .3));
  background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; animation: cv-balayage 3.2s linear infinite;
}
.cv-glyphes span:nth-child(2) { animation-delay: -1s; }
.cv-glyphes span:nth-child(3) { animation-delay: -2s; }
@keyframes cv-balayage { to { background-position: -200% 0; } }
.cv-manque { margin: 0 0 8px; font: 500 12px var(--police-mono); color: var(--texte-2); }
.cv-verrou-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.cv-pied { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 12px 22px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--ligne); background: var(--surface); }
.cv-pied .btn { min-height: 34px; font-size: 11px; }
@media (pointer: coarse) { .cv-actions .btn, .cv-bandeau .btn, .cv-pied .btn { min-height: 44px; } }
.cv-note { font-size: 12px; color: var(--texte-2); }

@media (max-width: 760px) {
  dialog#cv { width: 100vw; border-left: 0; }
  .cv-tete { padding: calc(10px + env(safe-area-inset-top, 0px)) 16px 0; }
  .cv-ligne1 h2 { font-size: 17px; }
  .cv-actions { margin: 8px 0 6px; }
  .cv-actions .secondaire { display: none; }
  .cv-doc { padding: 0 16px 32px; }
  .cv-avert, .cv-bandeau, .cv-pied { padding-left: 16px; padding-right: 16px; }
  .cv-glyphes span { font-size: 11px; }
}
