/* Outil · Visionneuse 3D (3D viewer) : seulement ce qui lui est propre (le reste vient de app/kit.css).
   Préfixe des classes : vw-
   À gauche : la zone fixe du modèle (le canvas WebGL ; vide : le message et Ouvrir un modèle ; l'état : chargement,
   erreur), le nom du fichier, les exports GLB, OBJ, STL. À droite : ouvrir un autre modèle, les 8 chiffres du modèle,
   l'affichage, le fond, trois bascules, recentrer. Sans modèle : tout est là, grisé. */
.vw .outil-fixe { align-items: stretch; }
.vw-zone { position: relative; height: 480px; border-radius: 16px; overflow: hidden; box-shadow: inset 0 0 0 1px var(--filet-doux); background: rgba(0, 0, 0, .18); }
.vw-zone.survol { box-shadow: inset 0 0 0 1.5px var(--orange); }
.vw-toile, .vw-toile canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; touch-action: none; }
.vw-vide { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 24px; text-align: center; }
.vw-vide[hidden] { display: none; }
.vw-vide p { margin: 0; font: 600 16px/1.3 var(--corps); color: var(--papier); }
.vw-vide > span { font: 500 11px/1.4 var(--mono); letter-spacing: .04em; color: var(--texte2); }
.vw-vide .pastille { margin-top: 8px; cursor: pointer; }
.vw-etat { position: absolute; left: 16px; right: 16px; bottom: 12px; margin: 0; height: 2lh; display: flex; align-items: flex-end; justify-content: center; text-align: center; text-wrap: balance;
  font: 500 12px/1.4 var(--mono); letter-spacing: .03em; color: var(--peche); pointer-events: none; }
.vw-info { flex: none; height: 1lh; margin: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.vw-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.vw-actions .pastille, .vw-autre, .vw-ligne .pastille { cursor: pointer; }
.vw-actions .pastille:hover, .vw-autre:hover, .vw-ligne .pastille:hover { translate: none; }
.vw .pastille:disabled { opacity: .3; cursor: default; }
.vw-autre { align-self: flex-start; }
.vw-stat { height: 40px; cursor: default; }
.vw-stat .val { color: var(--papier); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vw-sans .vw-stat .val { color: var(--texte2); }
.vw-bascules { display: flex; flex-direction: column; }
.vw-eteint { opacity: .3; pointer-events: none; }
.vw-ligne { display: flex; }
@media (max-width: 959px) {
  .vw-zone { height: 340px; }
  .vw-autre { order: 1; }
}
