/* Feuille de style de la disposition bureau.
 *
 * Décision de Sfar du 14/09/2026 : Web bureau, Web mobile et mobile natif sont
 * trois cibles séparées, et le bureau ne diffère du Web mobile que par
 * l'affichage. Tout ce qui n'est que placement, mesure ou recadrage vit donc
 * ici, sous `[data-vasco-layout="desktop"]`, plutôt que dans une branche à
 * l'intérieur d'un écran du Web mobile.
 *
 * Les valeurs ne sont pas recopiées : `ui-system-desktop.jsx` publie sur
 * l'élément racine les variables CSS correspondantes, lues dans le contrat
 * visuel. Une mesure change dans `design-system/vasco-design-contract.json`, et
 * elle change ici aussi.
 *
 * `!important` est nécessaire partout où la primitive pose le style en ligne :
 * c'est la même raison qu'ailleurs dans la maquette, et non un raccourci.
 */

/* ------------------------------------------------------------------ */
/* Navigation latérale                                                 */
/* ------------------------------------------------------------------ */

/* Elle n'existe que là où un pointeur précis peut survoler, et ce lot ne lui
   donne volontairement aucun mouvement. Seule la teinte change, l'entrée active
   garde la sienne. */
@media (hover: hover) and (pointer: fine) {
  .vasco-side-nav-item:not([aria-current]):hover { background: rgba(10,10,10,0.04) !important; }
}
.vasco-side-nav-item:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

/* Lignes cliquables des panneaux de bureau : seule la teinte change, et
   seulement là où un pointeur précis peut survoler. Aucun mouvement. */
@media (hover: hover) and (pointer: fine) {
  [data-vasco-panel-row]:hover { background: rgba(10,10,10,0.03) !important; }
}

/* ------------------------------------------------------------------ */
/* Colonne de contenu                                                  */
/* ------------------------------------------------------------------ */

/* Une page dont le contenu gère son propre défilement : les conteneurs que la
   coque et l'écran interposent ne doivent pas grandir au-delà de la hauteur
   offerte. Sans cela, un `min-height: auto` s'étire à la taille de la grille,
   le défilement remonte à la colonne de page, la molette n'a plus de prise et
   les en-têtes de jours s'échappent. La liste est nommée plutôt qu'universelle :
   on sait exactement qui est visé. */
[data-vasco-shell-scroll="inner"] [data-vasco-navigation],
[data-vasco-shell-scroll="inner"] [data-vasco-nav-layer],
[data-vasco-shell-scroll="inner"] [data-vasco-route-screen],
[data-vasco-shell-scroll="inner"] .vasco-scroll { min-height: 0; }

/* Le compte de l'écran figé porte le jour choisi sans le nommer : sur une
   semaine de sept journées il se lit comme un total et trompe. Au bureau il
   s'efface au profit du décompte de la période, écrit au-dessus de la grille.
   La règle ne touche que la route Agenda, et jamais le contenu de la grille,
   qui porte lui aussi du texte à chasse fixe. */
[data-vasco-layout="desktop"] [data-vasco-route-screen="agenda"]
  .mono:not([data-vasco-agenda-desktop] *) { display: none; }

/* ------------------------------------------------------------------ */
/* Feuille de formulaire : dialogue centré sur la fenêtre               */
/* ------------------------------------------------------------------ */

/* Au téléphone, la feuille reste dans la scène. Au bureau, la scène est le
   volet de contenu de la coque : une feuille en `position: absolute` s'y
   enfermerait, voile compris. Elle couvre donc la fenêtre entière. Le cadre
   n'est pas nommé par une classe dans la primitive téléphone ; on le désigne
   par le voile qu'il contient, qui n'existe que là. */
[data-vasco-layout="desktop"] :has(> .vui-form-sheet-backdrop) { position: fixed !important; }

/* Le panneau garde sa hauteur et son mouvement ; seule sa largeur est bornée et
   centrée, à la mesure de dialogue du contrat. */
[data-vasco-layout="desktop"] .vui-form-sheet-panel {
  max-width: var(--vasco-dialog-max-width);
  margin: 0 auto;
}

/* ------------------------------------------------------------------ */
/* Feuille venant du bas : dialogue centré au bureau                    */
/* ------------------------------------------------------------------ */

/* Une feuille ancrée au bas d'un écran de 900 px de haut serait une barre
   lointaine. Au bureau elle devient un dialogue centré, de la même largeur que
   la feuille de formulaire, et entre avec le même mouvement « lift ». */
[data-vasco-layout="desktop"] :has(> .vui-bottom-sheet-backdrop) {
  justify-content: center;
  align-items: center;
  padding: var(--vasco-space-xxxl);
}

/* La zone de rattrapage couvre alors toute la surface plutôt que la seule bande
   au-dessus du panneau : le clic extérieur ferme des quatre côtés. Le panneau
   reste au-dessus d'elle, il est peint après. */
[data-vasco-layout="desktop"] .vui-bottom-sheet-dismiss {
  position: absolute !important;
  inset: 0 !important;
  flex: none !important;
}

[data-vasco-layout="desktop"] .vui-bottom-sheet-panel {
  max-width: var(--vasco-dialog-max-width);
  border-radius: var(--vasco-radius-sheet) !important;
  padding: 10px 16px 18px !important;
  box-shadow: var(--vasco-shadow-large) !important;
  opacity: 0;
  transform: translateY(8px) scale(.975) !important;
  transition:
    opacity var(--vasco-form-exit) var(--vasco-form-ease),
    transform var(--vasco-form-exit) var(--vasco-form-ease) !important;
}

/* L'état visible est déjà publié par la primitive sur le cadre : `aria-hidden`
   y vaut `false` pendant que la feuille est montrée. On s'y accroche plutôt que
   d'ajouter un attribut à la cible téléphone. */
[data-vasco-layout="desktop"] [aria-hidden="false"] > .vui-bottom-sheet-panel {
  opacity: 1;
  transform: translateY(0) scale(1) !important;
  transition-duration: var(--vasco-form-enter), var(--vasco-form-enter) !important;
}

/* La poignée annonce un glissement depuis le bas : au bureau, le dialogue est
   centré et ne se tire pas. C'est le premier enfant décoratif du panneau. */
[data-vasco-layout="desktop"] .vui-bottom-sheet-panel > [aria-hidden="true"]:first-child {
  display: none;
}

/* La primitive porte déjà sa règle de mouvement réduit, mais avec une
   spécificité plus faible que les deux règles ci-dessus : on la redit ici, à la
   même spécificité et après elles, sinon le bureau perdrait la préférence
   système que le téléphone respecte. */
@media (prefers-reduced-motion: reduce) {
  [data-vasco-layout="desktop"] .vui-bottom-sheet-panel,
  [data-vasco-layout="desktop"] [aria-hidden="false"] > .vui-bottom-sheet-panel {
    transition-duration: 1ms !important;
  }
}

/* ------------------------------------------------------------------ */
/* Assistant : en-tête du volet de conversation                        */
/* ------------------------------------------------------------------ */

/* Au bureau, le titre, le nombre de conversations et « Nouvelle conversation »
   sont portés par l'en-tête de page, et l'historique est déjà déplié dans le
   volet de gauche. Il ne reste dans le fil que le lien entre la conversation et
   son patient : les deux commandes et le mot-marque s'effacent, et la réserve
   d'encoche du téléphone n'a plus lieu d'être. */
[data-vasco-assistant-desktop] [data-vasco-split-detail] > div > div:first-child {
  padding: 14px 20px 10px !important;
  justify-content: flex-start !important;
  text-align: left;
}
[data-vasco-assistant-desktop] button[aria-label="Ouvrir l’historique"],
[data-vasco-assistant-desktop] button[aria-label="Nouvelle conversation"] {
  display: none !important;
}
/* Le mot-marque est le premier enfant du bloc central de cet en-tete ; les deux
   commandes qui l'encadrent sont des boutons, pas des div. */
[data-vasco-assistant-desktop] [data-vasco-split-detail] > div > div:first-child
  > div > div:first-child {
  display: none;
}

/* ------------------------------------------------------------------ */
/* Patients : l'ecran du repertoire dans le volet de gauche            */
/* ------------------------------------------------------------------ */

/* L'ecran du repertoire est monte tel quel dans le volet. Sa barre de recherche
   et son voile sont poses en absolu : sans bloc conteneur, ils se calent sur la
   page entiere et debordent sur le dossier. On rend donc a l'ecran le role de
   bloc conteneur qu'il a quand il occupe la scene. */
[data-vasco-patients-desktop] [data-vasco-split-list] > div {
  position: relative;
  height: 100%;
}

/* L'encoche iOS n'existe pas dans un volet : l'en-tete du repertoire reprend la
   reserve haute d'un en-tete de volet. */
[data-vasco-patients-desktop] [data-vasco-split-list] > div > div:first-child {
  padding-top: 16px !important;
}

/* Les compteurs historiques de la V5 sont deja retires sur la route repertoire
   par la feuille commune, qui les designe par l'enveloppe que la coque pose.
   Cette enveloppe n'existe pas sur la route dossier : on les retire des deux
   cotes, sur la page de bureau. */
[data-vasco-patients-desktop] [data-vasco-split-list]
  > div > div:first-child > div:first-child > span { display: none !important; }

/* ------------------------------------------------------------------ */
/* Compte : la coque de rubrique dans le volet de droite               */
/* ------------------------------------------------------------------ */

/* Le retour vers l'accueil est le volet de gauche, toujours visible : la coque
   de rubrique garde son geste, mais sa commande n'a plus rien a designer. Le
   titre, lui, n'est plus un titre d'ecran mais celui d'un volet : il reprend la
   mesure d'un en-tete de volet, et sa reserve haute n'a plus d'encoche a
   contourner. On nomme cet en-tete par la commande qu'il contient, qui n'existe
   que la. */
[data-vasco-account-desktop] button[aria-label="Retour à Compte"] {
  display: none !important;
}
[data-vasco-account-desktop] header:has(> button[aria-label="Retour à Compte"]) {
  padding: 18px 20px 8px !important;
}
[data-vasco-account-desktop] header:has(> button[aria-label="Retour à Compte"]) > h1 {
  font-size: 18px !important;
}

/* ------------------------------------------------------------------ */
/* Dictée : la carte de prise remplit la colonne de travail             */
/* ------------------------------------------------------------------ */

/* Le cadre de bureau borne déjà la colonne ; la carte de prise n'a plus besoin
   de la largeur d'un téléphone, qui la laisserait flotter au milieu. */
[data-vasco-dictation-column] [data-dict-flow="1"] [style*="max-width: 330px"] {
  max-width: 100% !important;
}
