/* ═══════════════════════════════════════════════════════════════════════
   theme-identity.css : le calque ECRIT A LA MAIN.

   C'est CE fichier qu'on retouche. Il est servi tel quel, apres
   `swagger-colors.css` (engendre par scripts/build_theme.py), donc il
   tranche. Editer, recharger la page : rien a reconstruire.

   Il porte ce qu'un remplacement de couleur ne sait pas deduire : la
   gamme, les fontes, la gouttiere, la densite, la forme.

   Piege silencieux : un commentaire mal referme fait avaler la regle
   suivante par le navigateur, sans le moindre message.
   Conception et facon de verifier : docs/dev/THEME_DOCS.md
   ═══════════════════════════════════════════════════════════════════ */


/* ── 1. gamme, fontes ─────────────────────────────────────────────────
   Gamme volontairement OUVERTE : ce sont les paliers qui font le relief.
   La couleur ne sert qu'aux methodes HTTP, et jamais seule : le mot
   GET/POST/DELETE reste le repere. */
:root{
  --ground:#131313; --surface:#1d1d1d; --well:#0e0e0e;
  --line:#383838; --line-soft:#2a2a2a;
  --text:#ececec; --muted:#a5a5a5; --faint:#7a7a7a;
  --get:#8ab4dc; --post:#72b3a2; --del:#e09b78; --put:#d9c07f;
  --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}


/* ── 2. la page ─────────────────────────────────────────────────────── */
html,body{background:var(--ground);}

body{margin:0;}

.swagger-ui{
  font-family:var(--sans); font-size:13.5px; line-height:1.6;
  color:var(--text); background:var(--ground);
  -webkit-font-smoothing:antialiased;
}

.swagger-ui .wrapper{max-width:950px; padding:0 28px;}

.swagger-ui .info{margin:38px 0 0;}


/* ── 3. en-tete ─────────────────────────────────────────────────────── */
/* Le titre devient une RANGEE : « card-api », ses deux pastilles, et le
   logo INRAE pousse a droite par la marge automatique. Il est pose en
   pseudo-element, donc en CSS pur : aucune balise injectee dans le HTML
   de Swagger, et si la regle cesse un jour de s'appliquer, le titre
   redevient un titre au lieu de casser. */
.swagger-ui .info .title{
  font-family:var(--mono); font-size:22px; font-weight:600;
  letter-spacing:-.01em; color:var(--text);
  display:flex; align-items:center; flex-wrap:wrap;
}

/* Le logo est pose en MASQUE, pas en image de fond : le SVG ne sert plus
   que de decoupe, et la couleur vient de `background`, donc de la gamme.
   En image de fond, le blanc pur du fichier restait du blanc pur, plus
   clair que le titre juste a cote ; ici il suit `--text` sans qu'on
   touche au SVG, et une retouche de la gamme l'emmene avec elle.
   Le SVG n'a que sa `viewBox` : la hauteur commande, la largeur suit le
   rapport d'origine. */
.swagger-ui .info .title::after{
  content:""; margin-left:auto;
  width:104px; height:27px; flex:0 0 auto;
  background:var(--text);
  -webkit-mask:url("inrae.svg") no-repeat right center/contain;
  mask:url("inrae.svg") no-repeat right center/contain;
}

/* Pastilles de version et OAS : deux etiquettes, pas deux alertes.
   Swagger dessine une pastille pleine sur le `small` ET un bloc sur le
   `pre` qu'il contient, d'ou un double cadre. Le cadre reste sur le
   `small`, le `pre` redevient du texte. Le selecteur `.version-stamp`
   est indispensable : Swagger le peint en vert avec une specificite
   superieure a celle de `small` seul. */
.swagger-ui .info .title small,
.swagger-ui .info .title small.version-stamp{
  background:none; background-color:transparent;
  border:1px solid var(--line); border-radius:3px;
  font-family:var(--mono); font-size:11px;
  padding:1px 4px; margin-left:12px;
  vertical-align:middle; position:initial;
}

.swagger-ui .info .title small pre,
.swagger-ui .info .title small pre.version{
  background:none; background-color:transparent; border:0;
  margin:0; padding:0;
  color:var(--muted); font-family:var(--mono); font-size:11px;
}

.swagger-ui .info .title small pre.version{font-weight:normal;}

.swagger-ui .info .description,
.swagger-ui .info li,
.swagger-ui .info p{color:var(--muted); font-size:13.5px; max-width:74ch;}

/* CE QUE LE CONTRAT PORTE ET QUE LA PAGE NE MONTRE PAS.
   Rien n'est retire d'`openapi.json` : ces champs y servent une machine,
   qui ne lit pas la prose d'une description. C'est leur AFFICHAGE qui
   encombrait la page, chacun dans une presentation differente.

   info__summary   redit la premiere phrase de la description, juste
                   au-dessus d'elle. Un catalogue d'API, lui, l'affiche
                   SEUL : il doit donc exister.
   info__tos       mentions legales : la description porte deja le lien
                   visible, en fin de ligne de contacts.
   info__contact   rendu suivi d'un « - Website » ecrit en dur dans le
                   code de Swagger, qu'aucun selecteur n'atteint.
   info__license   rendu en lien nu.

   Les deux derniers sont repris en fin de description, sous la meme
   forme que les autres liens (cf. main.py). */
.swagger-ui .info .info__summary,
.swagger-ui .info .info__tos,
.swagger-ui .info .info__contact,
.swagger-ui .info .info__license{display:none;}

.swagger-ui .info a,
.swagger-ui a.nostyle,
.swagger-ui .info .base-url{color:var(--get);}

.swagger-ui .info a:hover{color:var(--get);}

.swagger-ui .info .base-url{
  font-family:var(--mono); font-size:12px; color:var(--faint);
}

.swagger-ui .scheme-container{
  background:transparent; box-shadow:none; padding:0; margin:0;
}

/* Adresse du service et cle de priorite, sur une meme rangee. Swagger
   les empile a gauche et pose « Authorize » a droite : on garde la
   rangee, on l'aere. */
.swagger-ui .scheme-container .schemes{align-items:center; gap:16px;}

/* LE SELECTEUR DE SERVEUR, MASQUE. Swagger le rend des qu'un bloc
   `servers` existe, meme avec une seule entree : un menu deroulant qui
   ne selectionne rien et qui repete l'adresse de la page qu'on lit.
   Masque ici plutot que retire du contrat, parce que les deux ne coutent
   pas la meme chose : `servers` est ce qui donne au contrat une adresse
   ABSOLUE, la seule dont dispose un generateur de client, ou quiconque
   lit `openapi.json` ailleurs que sur cette page. Le retirer produirait
   des clients pointant sur `/`, pour gagner trente pixels.
   Ne vaut que tant qu'il n'y a QU'UN serveur : le jour ou une adresse de
   preproduction s'ajoute, ce masque cache un vrai choix, il faut le
   lever. Le bouton « Authorize » vit dans le meme conteneur, d'ou des
   selecteurs qui visent le bloc des serveurs et lui seul. */
.swagger-ui .scheme-container .servers-title,
.swagger-ui .scheme-container .servers{display:none;}

/* « Authorize » est peint en vert par Swagger, cadenas compris, avec une
   specificite superieure a celle de `.btn` : sans ce selecteur a deux
   classes, la regle generale des boutons ne le rattrape pas. La cle est
   FACULTATIVE, ce bouton n'est donc pas l'action principale de la page
   et n'a pas a etre le seul objet colore de l'ecran. */
.swagger-ui .btn.authorize{
  background:transparent; border-color:var(--line); color:var(--text);
  box-shadow:none;
}

.swagger-ui .btn.authorize:hover{border-color:var(--get); color:var(--get);}

.swagger-ui .btn.authorize svg{fill:var(--faint);}

.swagger-ui .btn.authorize:hover svg{fill:var(--get);}


/* ── 4. sections de tag ─────────────────────────────────────────────── */
.swagger-ui .opblock-tag{
  border-bottom:1px solid var(--line-soft);
  font-family:var(--sans); font-size:11px; font-weight:600;
  text-transform:uppercase; letter-spacing:.1em; color:var(--text);
  margin:10px 0; padding:0;
}

/* Swagger surligne le titre de section au survol. On garde le fond plat
   et on signale le repli par un simple retrait d'intensite. */
.swagger-ui .opblock-tag:hover{background:transparent;}

.swagger-ui .opblock-tag small{
  font-size:12.5px; font-weight:400; text-transform:none;
  letter-spacing:0; color:var(--faint); padding-left:14px;
}

.swagger-ui .opblock-tag:hover small{filter:opacity(.75);}

/* Le libelle du tag est un lien : il ne doit pas prendre la couleur des
   liens, c'est un titre de section. */
.swagger-ui .opblock-tag a.nostyle,
.swagger-ui .opblock-tag a.nostyle span,
.swagger-ui .opblock-tag>a{color:var(--text);}

.swagger-ui .opblock-tag:hover a.nostyle,
.swagger-ui .opblock-tag:hover a.nostyle span,
.swagger-ui .opblock-tag:hover>a{filter:opacity(.9);}

.swagger-ui .opblock-tag-section{margin-bottom:6px;}


/* ── 5. la barre repliee d'une operation ────────────────────────────── */
.swagger-ui .opblock{
  background:var(--surface); border:1px solid var(--line);
  border-radius:4px; box-shadow:none; margin:0 0 8px;
}

/* Swagger teinte tout le bloc selon la methode (bleu pale, vert pale).
   Sur fond sombre ces aplats font sale et, surtout, la couleur redevient
   le repere principal alors qu'elle ne doit etre qu'un renfort du mot.
   Un seul gris pour tous les blocs. Selecteurs a deux classes : c'est la
   specificite de Swagger, il faut la meme pour passer devant. */
.swagger-ui .opblock.opblock-get,.swagger-ui .opblock.opblock-post,
.swagger-ui .opblock.opblock-put,.swagger-ui .opblock.opblock-delete,
.swagger-ui .opblock.opblock-patch,.swagger-ui .opblock.opblock-head,
.swagger-ui .opblock.opblock-options,.swagger-ui .opblock.opblock-deprecated{
  background:var(--surface); border-color:var(--line); box-shadow:none;
}

.swagger-ui .opblock.opblock-deprecated{opacity:.55;}

.swagger-ui .opblock .opblock-summary{border-bottom:0; padding:0;}

.swagger-ui .opblock.is-open .opblock-summary{
  border-bottom:1px solid var(--line-soft);
}

.swagger-ui .opblock.opblock-get .opblock-summary,
.swagger-ui .opblock.opblock-post .opblock-summary,
.swagger-ui .opblock.opblock-put .opblock-summary,
.swagger-ui .opblock.opblock-delete .opblock-summary,
.swagger-ui .opblock.opblock-patch .opblock-summary,
.swagger-ui .opblock.opblock-deprecated .opblock-summary{
  border-color:var(--line-soft);
}

.swagger-ui .opblock-summary-control{padding:10px 12px;}

.swagger-ui .opblock-summary-control:hover{background:rgba(236,236,236,.03);}

.swagger-ui .opblock-summary-control:focus-visible{
  outline:2px solid var(--get); outline-offset:2px;
}

/* ATTENTION : posee APRES la regle ci-dessus et de meme specificite,
   celle-ci l'emporte, y compris au clavier. Le liseré de focus ne
   s'affiche donc plus du tout. Deliberé ou non, c'est ici que ca se
   decide : la retirer suffit a rendre le focus visible. */
.swagger-ui .opblock-summary-control:focus{outline:none;}

/* Le badge porte la couleur, il n'a pas besoin de porter la masse. */
.swagger-ui .opblock .opblock-summary-method{
  background:var(--m,var(--line)); color:#131313;
  font-family:var(--mono); font-size:10px; font-weight:700;
  letter-spacing:.06em; text-transform:uppercase; text-shadow:none;
  border-radius:3px; padding:4px 0; min-width:60px; margin:0;
}

.swagger-ui .opblock.opblock-get{--m:var(--get);}
.swagger-ui .opblock.opblock-post{--m:var(--post);}
.swagger-ui .opblock.opblock-delete{--m:var(--del);}
.swagger-ui .opblock.opblock-put,
.swagger-ui .opblock.opblock-patch{--m:var(--put);}

.swagger-ui .opblock .opblock-summary-path,
.swagger-ui .opblock .opblock-summary-path__deprecated,
.swagger-ui .opblock .opblock-summary-path a{
  font-family:var(--mono); font-size:14px; font-weight:500;
  color:var(--text);
}

.swagger-ui .opblock .opblock-summary-description{
  font-family:var(--sans); font-size:12.5px; color:var(--faint);
  text-align:right; padding-left:10px;
}

/* Cadenas de fin de ligne : retire. Swagger en pose un sur CHAQUE
   operation des qu'un schema de securite est declare, et la cle de
   priorite en est un, facultatif, valable partout. Quinze cadenas
   identiques ne distinguent donc rien, et leur presence suggere le
   contraire de la verite : que ces operations seraient fermees. Le
   bouton « Authorize » de l'en-tete suffit a dire qu'une cle existe. */
.swagger-ui .opblock-summary .authorization__btn{display:none;}

/* Chevrons et bouton « copier le lien » : retires. Le chevron d'une
   operation porte deja `tabindex="-1"` et double `.opblock-summary-
   control`, qui couvre toute la barre ; celui d'une section double le
   lien du titre. Aucune commande n'est perdue. */
.swagger-ui .opblock-control-arrow,
.swagger-ui button.expand-operation,
.swagger-ui .opblock .opblock-summary .view-line-link{display:none;}


/* ── 6. corps deplie ────────────────────────────────────────────────── */
.swagger-ui .opblock .opblock-section-header{
  background:transparent; box-shadow:none;
  border-bottom:1px solid var(--line-soft);
  min-height:0; padding:12px 0; margin:0 12px;
}

.swagger-ui .opblock-body,.swagger-ui .opblock-description-wrapper,
.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{
  background:var(--ground); color:var(--muted); font-size:13px;
  margin:0; padding:6px 20px;
}

/* Swagger pose sous « Parameters » un trait de 4 px de haut et 120 % de
   large, colore selon la methode. C'est la grosse barre bleue. */
.swagger-ui .opblock .tab-header .tab-item.active h4 span:after{
  display:none; content:none;
}

/* Titres de section et en-tetes de tableau : meme typographie. Seul
   l'en-tete de tableau porte un filet ; en mettre un sur les titres
   doublait celui du conteneur, a un cheveu de distance. */
.swagger-ui .opblock .opblock-section-header h4,
.swagger-ui .tab li,
.swagger-ui table thead tr td,
.swagger-ui table thead tr th,
.swagger-ui .opblock-body h4,
.swagger-ui .responses-inner h4,
.swagger-ui .responses-inner h5{
  font-family:var(--sans); font-size:10.5px; font-weight:600;
  text-transform:uppercase; letter-spacing:.1em; color:var(--muted);
}

.swagger-ui .response-col_description a{
    color: var(--get);
    text-decoration: none;
    font-family: monospace;
    font-size: 16px;
    font-weight: normal;
    text-transform: uppercase;
}

.swagger-ui .response-col_description a:hover{
    filter:opacity(0.8);
}

.swagger-ui table thead tr td,
.swagger-ui table thead tr th{border-bottom:1px solid var(--line-soft);}

.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock-title_normal p,
.swagger-ui .opblock-external-docs-wrapper p{color:var(--muted);}

.swagger-ui .renderedMarkdown code{
  background:rgba(236,236,236,.05); color:var(--muted); padding:1px 5px;
}


/* ── 7. tableaux, parametres, reponses ──────────────────────────────── */
.swagger-ui .parameter__name{
  font-family:var(--mono); font-size:12.5px; font-weight:500;
  color:var(--text);
}

.swagger-ui .parameter__type,.swagger-ui .parameter__in,
.swagger-ui .prop-format{
  font-family:var(--mono); font-size:11.5px; color:var(--faint);
}

.swagger-ui .parameter__in{font-weight:400;}

/* Swagger marque un parametre obligatoire deux fois : une etoile rouge
   collee au nom, et la mention « required » posee en absolu sous lui.
   On garde la mention, en pile sous le nom, et on retire l'etoile. */
.swagger-ui .parameter__name.required{display:flex; flex-direction:column;}

.swagger-ui .parameter__name.required span{display:none;}

.swagger-ui .parameter__name.required:after{
  color:var(--del); font-size:10.5px; font-weight:400;
  position:static; padding:0; text-transform:uppercase;
}

.swagger-ui table tbody tr td{
  border-bottom:1px solid var(--line-soft); padding:10px 12px 10px 0;
}

.swagger-ui .response-col_status{
  font-family:var(--mono); font-weight:600; color:var(--post);
}

/* Colonne « Links » : Swagger l'affiche toujours, et elle dit « No links »
   sur toutes nos reponses. On la range au fond de la gamme plutot que de
   la masquer, la table gardant ainsi ses trois colonnes. */
.swagger-ui .response-col_links{color:var(--faint);}

.swagger-ui .responses-inner{padding:16px 12px;}

/* `border-color:green` est ecrit en toutes lettres dans le CSS de
   Swagger : il echappe au remplacement mecanique, qui ne lit que les
   notations # et rgb(). */
.swagger-ui .response-control-media-type--accept-controller select{
  border-color:var(--line);
}

.swagger-ui .response-control-media-type__title,
.swagger-ui .response-control-media-type__accept-message{color:var(--faint);}


/* ── 8. champs et boutons ───────────────────────────────────────────── */
.swagger-ui input[type=email],.swagger-ui input[type=file],
.swagger-ui input[type=password],.swagger-ui input[type=search],
.swagger-ui input[type=text],.swagger-ui textarea,.swagger-ui select{
  background:var(--well); color:var(--text);
  border:1px solid var(--line); border-radius:3px;
  font-family:var(--mono); font-size:12.5px; padding:7px 9px;
  box-shadow:none;
}

.swagger-ui input:focus-visible,.swagger-ui textarea:focus-visible,
.swagger-ui select:focus-visible{outline:none; border-color:var(--get);}

/* Le chevron du <select> est une image de fond sombre : illisible sur
   fond sombre, on la redessine claire. */
.swagger-ui select{
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='%23a3a3a3' d='M5 8l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 8px center;
  background-size:16px; padding-right:28px; appearance:none;
}

.swagger-ui .btn{
  background:transparent; color:var(--text);
  border:1px solid var(--line); border-radius:3px; box-shadow:none;
  font-family:var(--sans); font-size:12.5px; font-weight:500;
  text-transform:none; letter-spacing:0;
}

.swagger-ui .btn:hover{
  border-color:var(--get); color:var(--get); box-shadow:none;
}

.swagger-ui .btn:focus-visible{outline:2px solid var(--get); outline-offset:2px;}

.swagger-ui .btn.execute{
  background:transparent; border-color:var(--get); color:var(--get);
}

.swagger-ui .btn.execute:hover{background:rgba(138,180,220,.10);}

.swagger-ui .btn.cancel{
  border-color:var(--del); color:var(--del); background:transparent;
}

.swagger-ui .try-out__btn{font-size:12px;}

/* Swagger etire Execute sur toute la largeur et centre son conteneur a
   droite. On le ramene a la taille de Cancel, a gauche. La gouttiere de
   `.btn-group` (Clear) est alignee sur celle d'Execute, les deux rangees
   se suivant. */
.swagger-ui .execute-wrapper{text-align:left; padding:16px 12px;}

.swagger-ui .btn-group{padding:16px 12px;}

.swagger-ui .execute-wrapper .btn{
  width:auto; font-size:12px; padding:5px 23px;
}


/* ── 9. blocs de code ───────────────────────────────────────────────── */
.swagger-ui .highlight-code>.microlight,.swagger-ui .microlight,
.swagger-ui pre,.swagger-ui .body-param__example,.swagger-ui .example{
  border:1px solid var(--line-soft); border-radius:3px;
  font-family:var(--mono); font-size:12.5px; line-height:1.55;
}

/* Les blocs de code de Swagger sont deja sombres (#333) et laisses tels
   quels par le generateur ; on les aligne sur le creux de la gamme, pour
   qu'ils ne flottent pas a un gris intermediaire. */
.swagger-ui .opblock-body pre.microlight{
  background:var(--well)!important; border:1px solid var(--line-soft);
}

.swagger-ui .request-url pre.microlight{color:var(--text);}

/* Swagger passe TOUTE reponse au coloriseur, meme du texte brut. Sur la
   fiche dessinee de `/v1/cards/{id}/figure`, il prend les nombres pour
   des litteraux et barbouille la barre de calendrier. Le <code> d'une
   reponse coloree porte sa langue (`language-json`) ; celui d'un texte
   brut n'a pas de classe, d'ou ce ciblage. Les couleurs du coloriseur
   sont en style inline : il faut !important. */
.swagger-ui .highlight-code pre.microlight>code:not([class]) span{
  color:inherit!important; background:transparent!important;
  font-weight:inherit!important;
}

/* Copier / Telecharger : deux boutons poses SUR un bloc de code, que
   Swagger laisse se chevaucher. On decale Copier vers la gauche de la
   largeur de Telecharger. */
.swagger-ui .copy-to-clipboard,.swagger-ui .download-contents{
  background:#2c2c2c; color:var(--text); border:1px solid var(--line);
  border-radius:3px; font-family:var(--sans); font-size:11.5px;
  font-weight:500;
}

/* Les DEUX boutons d'un bloc de code sont couples : « Telecharger » est
   pose a droite par Swagger, « Copier » se cale a cote par ce decalage en
   dur, choisi pour la largeur du premier. Retoucher l'un demande donc de
   verifier l'autre, et la verification est une capture d'ecran : rien
   dans le CSS ne signale un chevauchement. */
.swagger-ui .copy-to-clipboard{right:85px;}

.swagger-ui .copy-to-clipboard:active{background:#3a3a3a;}

.swagger-ui .copy-to-clipboard button{filter:opacity(.85);}


/* ── 10. icones, selection, ascenseur ───────────────────────────────── */
.swagger-ui svg.arrow,.swagger-ui .expand-methods svg,
.swagger-ui section.models h4 svg{fill:var(--faint);}

.swagger-ui .opblock-summary:hover svg.arrow{fill:var(--text);}

.swagger-ui .loading-container .loading:after{color:var(--muted);}

::selection{background:rgba(138,180,220,.28);}

::-webkit-scrollbar{width:11px; height:11px;}
::-webkit-scrollbar-track{background:var(--ground);}
::-webkit-scrollbar-thumb{
  background:#2f2f2f; border-radius:6px; border:2px solid var(--ground);
}
::-webkit-scrollbar-thumb:hover{background:#3d3d3d;}


/* ── 11. etats d'erreur ─────────────────────────────────────────────────
   Swagger signale un champ invalide par un aplat rose clair : transpose
   mecaniquement, il vire au saumon et devient la chose la plus voyante
   de la page. Le champ garde donc son fond, c'est le filet qui alerte. */
.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,
.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,
.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid,
.swagger-ui select.invalid,.swagger-ui button.invalid{
  background:var(--well); border-color:var(--del); color:var(--text);
}

.swagger-ui .errors-wrapper{background:var(--surface); border-color:var(--del);}

.swagger-ui .errors-wrapper .errors h4,
.swagger-ui .errors-wrapper hgroup h4{color:var(--del);}

.swagger-ui .errors-wrapper .errors small,
.swagger-ui .errors-wrapper .error-wrapper{color:var(--muted);}


/* ── 12. petits ecrans ──────────────────────────────────────────────────
   Seuil en largeur de fenetre, pas en appareil : un navigateur de bureau
   retreci passe par la aussi, et c'est voulu. La page /docs porte bien
   son <meta viewport> (engendre par FastAPI), sans quoi un telephone
   simulerait 980 px et la regle ne se declencherait jamais. */
@media (max-width:640px){
  .swagger-ui .opblock .opblock-summary-description{padding-left:0;}

  /* Le logo passe AU-DESSUS du titre : `order` le met en tete de la
     rangee, `flex-basis:100%` lui donne sa propre ligne. Passer le
     conteneur en `column-reverse` aurait aussi retourne les pastilles
     de version, qui suivent le titre et doivent y rester. */
  .swagger-ui .info .title::after{
    order:-1; flex-basis:100%; margin:0 0 14px;
    -webkit-mask-position:left; mask-position:left;
  }
}


/* ── mis de cote ────────────────────────────────────────────────────────
   Barre de couleur en bord gauche d'un bloc : essayee puis ecartee, elle
   rendait mal etiree sur toute la hauteur d'un bloc deplie. Le badge de
   methode suffit a porter la couleur. Conservee ici au cas ou on veuille
   la reessayer courte et detachee (variante testee : left:9px,
   top/bottom:13px, width:3px).

.swagger-ui .opblock{position:relative; overflow:hidden;}
.swagger-ui .opblock::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--m,var(--line));
}
.swagger-ui .opblock.opblock-get{--m:var(--get);}
.swagger-ui .opblock.opblock-post{--m:var(--post);}
.swagger-ui .opblock.opblock-delete{--m:var(--del);}
.swagger-ui .opblock.opblock-put{--m:var(--put);}
*/   
