/* PRISME — Bus entre les campus. Jetons --prisme-* partagés (suit fêtes, Octobre, Noël). Texte à gauche, 14 px minimum,
   cibles tactiles >= 48 px, aucune animation, la couleur ne porte jamais seule l'information. */
@font-face { font-family: "Lexend PRISME"; font-weight: 400; src: url("../fonts/lexend-v26-latin-regular.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Lexend PRISME"; font-weight: 600; src: url("../fonts/lexend-v26-latin-600.woff2") format("woff2"); font-display: swap; }
.prisme-bus { font-family: var(--prisme-font, "Lexend PRISME", sans-serif); color: var(--prisme-texte, #FFFFFF); max-width: 760px; margin: 24px auto 96px; padding: 0 16px; display: grid; gap: 24px; text-align: left; overflow-wrap: anywhere; line-height: 1.6; }
.prisme-bus p, .prisme-bus ul, .prisme-bus ol { margin: 0; }
.prisme-bus h2 { font-size: var(--prisme-t-xl, 1.75rem); font-weight: 600; margin: 8px 0 0; line-height: 1.25; }
.prisme-bus h3 { font-size: var(--prisme-t-l, 1.25rem); font-weight: 600; margin: 0; }
.prisme-bus-intro, .prisme-bus-etape-choix, .prisme-bus-carte, .prisme-bus-vide { padding: 24px; }
.prisme-bus-intro { display: grid; gap: 16px; }
.prisme-bus-rassure { list-style: none; padding: 0; display: grid; gap: 8px; }
.prisme-bus-rassure li { padding-left: 24px; position: relative; color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-rassure li::before { content: "✓"; position: absolute; left: 0; color: var(--prisme-vert, #2ECC71); }
.prisme-bus-etat-global:empty { display: none; }
.prisme-bus-etat-global { padding: 12px 16px; border: 1px dashed var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); color: var(--prisme-texte-att, #A9A9B4); }

/* Étapes 1-2-3 : fieldset */
.prisme-bus-etape-choix { border: 1px solid var(--prisme-bordure, #34333B); display: grid; gap: 16px; margin: 0; min-width: 0; }
.prisme-bus-etape-choix legend { padding: 0 8px; font-size: var(--prisme-t-l, 1.25rem); font-weight: 600; display: flex; align-items: center; gap: 12px; }
.prisme-bus-num { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; border-radius: 50%; border: 2px solid var(--prisme-or, #F5A623); color: var(--prisme-or, #F5A623); font-size: var(--prisme-t-m, 1rem); }
.prisme-bus-choix-liste { display: grid; gap: 8px; }
.prisme-bus-choix { position: relative; }
.prisme-bus-choix input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.prisme-bus-choix label { display: grid; align-content: center; gap: 4px; min-height: 48px; padding: 12px 16px 12px 52px; border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); cursor: pointer; position: relative; background: transparent; }
.prisme-bus-choix label::before { content: ""; position: absolute; left: 16px; top: 50%; width: 20px; height: 20px; margin-top: -10px; border: 2px solid var(--prisme-texte-att, #A9A9B4); border-radius: 50%; }
.prisme-bus-choix input:checked + label { border-color: var(--prisme-or, #F5A623); border-width: 2px; padding: 11px 15px 11px 51px; }
.prisme-bus-choix input:checked + label::before { background: radial-gradient(circle, var(--prisme-or, #F5A623) 0 45%, transparent 50%); border-color: var(--prisme-or, #F5A623); }
.prisme-bus-choix input:disabled + label { opacity: 0.6; cursor: not-allowed; border-style: dashed; }
.prisme-bus-choix input:focus-visible + label { outline: 3px solid var(--prisme-or, #F5A623); outline-offset: 2px; }
.prisme-bus-choix-detail { font-size: var(--prisme-t-xs, 0.875rem); color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-heure { display: grid; gap: 8px; }
.prisme-bus-heure[hidden] { display: none; }
.prisme-bus-heure input { min-height: 48px; font: inherit; padding: 8px 16px; color: inherit; background: transparent; border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); width: fit-content; color-scheme: dark; }
.prisme-bus-secondaire { min-height: 48px; width: fit-content; cursor: pointer; }
.prisme-bus-go { min-height: 56px; cursor: pointer; font-size: var(--prisme-t-m, 1rem); }
.prisme-bus-go:disabled { opacity: 0.6; cursor: not-allowed; }

/* Résultat */
.prisme-bus-resultat { display: grid; gap: 24px; }
.prisme-bus-resultat:empty { display: none; }
.prisme-bus-recap { color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-notice { padding: 12px 16px; border: 2px solid var(--prisme-or, #F5A623); border-radius: var(--prisme-radius-s, 14px); }
.prisme-bus-source, .prisme-bus-maj { font-size: var(--prisme-t-xs, 0.875rem); color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-carte { display: grid; gap: 16px; }
.prisme-bus-carte-tete { display: grid; gap: 8px; padding-bottom: 16px; border-bottom: 1px solid var(--prisme-bordure, #34333B); }
.prisme-bus-resume strong, .prisme-bus-partir strong { font-size: var(--prisme-t-l, 1.25rem); }
.prisme-bus-etapes { list-style: none; padding: 0; display: grid; gap: 16px; }
.prisme-bus-etape { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 16px; align-items: start; }
.prisme-bus-etape-n { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; border-radius: 50%; border: 2px solid var(--prisme-texte-att, #A9A9B4); font-weight: 600; }
.prisme-bus-etape-corps { display: grid; gap: 8px; }
.prisme-bus-etape-titre { font-weight: 600; }
.prisme-bus-detail { color: var(--prisme-texte-att, #A9A9B4); font-size: var(--prisme-t-xs, 0.875rem); }
.prisme-bus-ligne { display: inline-block; min-width: 2em; text-align: center; padding: 0 8px; margin: 0 4px; border: 2px solid var(--prisme-texte, #FFFFFF); border-radius: 8px; font-weight: 600; }
.prisme-bus-etat { display: inline-block; padding: 0 12px; font-size: var(--prisme-t-xs, 0.875rem); font-weight: 600; border: 1px solid var(--prisme-bordure, #34333B); border-radius: 999px; }
.prisme-bus-etat--ok { border-color: var(--prisme-vert, #2ECC71); }
.prisme-bus-etat--ok::before { content: "● "; color: var(--prisme-vert, #2ECC71); }
.prisme-bus-etat--retard { border-color: var(--prisme-or, #F5A623); }
.prisme-bus-etat--retard::before { content: "▲ "; color: var(--prisme-or, #F5A623); }
.prisme-bus-etat--prevu { border-style: dotted; }
.prisme-bus-etat--prevu::before { content: "○ "; }
.prisme-bus-lien { min-height: 48px; display: inline-flex; align-items: center; padding: 8px 24px; width: fit-content; max-width: 100%; box-sizing: border-box; }
@media (max-width: 640px) { .prisme-bus-lien, .prisme-bus-secondaire { width: 100%; } .prisme-bus-intro, .prisme-bus-etape-choix, .prisme-bus-carte, .prisme-bus-vide { padding: 16px; } }

/* ---- « Vous partez d'Amiens ? » (0.3.0) ---- */
.prisme-bus-amiens { display: grid; gap: var(--prisme-e4, 16px); }
.prisme-bus-amiens-zone { display: grid; gap: var(--prisme-e4, 16px); }
.prisme-bus-alerte { border: 2px solid var(--prisme-or, #F5A623); border-radius: var(--prisme-radius-s, 14px); padding: var(--prisme-e4, 16px); }
.prisme-bus-alerte p { margin: 0 0 var(--prisme-e2, 8px); }
.prisme-bus-alerte p:last-child { margin-bottom: 0; }
.prisme-bus-alerte a { display: inline-block; min-height: 44px; line-height: 44px; }
.prisme-bus-amiens-filtres { display: flex; flex-wrap: wrap; gap: var(--prisme-e2, 8px); }
.prisme-bus-amiens-filtre { min-height: 44px; cursor: pointer; }
.prisme-bus-amiens-filtre[aria-pressed="true"] { background: var(--prisme-action-fond, #FFFFFF); color: var(--prisme-action-texte, #17171A); }
.prisme-bus-amiens-liste { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--prisme-e3, 12px); }
.prisme-bus-amiens-jour { font-weight: 600; padding-top: var(--prisme-e3, 12px); }
.prisme-bus-amiens-ligne { display: grid; grid-template-columns: minmax(0, 7.5rem) minmax(0, 1fr); gap: var(--prisme-e3, 12px); align-items: start; border-top: 1px solid rgba(255,255,255,.12); padding-top: var(--prisme-e3, 12px); }
.prisme-bus-amiens-ligne.est-supprime .prisme-bus-amiens-heure { text-decoration: line-through; }
.prisme-bus-amiens-heure { font-size: var(--prisme-t-l, 1.25rem); }
.prisme-bus-amiens-quoi p { margin: 0 0 var(--prisme-e1, 4px); }
@media (max-width: 480px) { .prisme-bus-amiens-ligne { grid-template-columns: 1fr; } }

/* ---- Boutons : texte >= 14 px (le navigateur impose 13,3 px par défaut), cibles >= 44 px ---- */
.prisme-bus button { font-family: inherit; font-size: var(--prisme-t-s, 1rem); line-height: 1.3; min-height: 44px; }
.prisme-bus-amiens-filtre { min-width: 56px; padding-inline: var(--prisme-e4, 16px); }
.prisme-bus-dest strong, .prisme-bus-dest small { overflow-wrap: anywhere; }
.prisme-bus-autres summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 600; }
.prisme-bus-autres[open] summary { margin-bottom: var(--prisme-e3, 12px); }

/* ================= PRISME Transports : cartes (0.4.0) =================
   L'élégance vient des composants (rayon unique, filet, reflet, survol), jamais des couleurs : aucune couleur nouvelle. */
.prisme-bus-mode { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.prisme-bus-mode-carte { display: grid; grid-template-columns: 56px minmax(0, 1fr) 16px; gap: 16px; align-items: center; padding: 24px; text-align: left; cursor: pointer; font: inherit; min-height: 96px; position: relative; transition: transform .2s ease, border-color .2s ease; }
.prisme-bus-mode-carte::after { content: "›"; font-size: var(--prisme-t-xl, 1.75rem); line-height: 1; color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-mode-carte:hover { transform: translateY(-2px); border-color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-mode-icone { display: inline-flex; width: 56px; height: 56px; align-items: center; justify-content: center; border-radius: var(--prisme-radius-s, 14px); border: 1px solid var(--prisme-bordure, #34333B); background: var(--prisme-fond, #17171A); }
.prisme-bus-mode-texte { display: grid; gap: 4px; min-width: 0; }
.prisme-bus-mode-titre { font-size: var(--prisme-t-m, 1.125rem); font-weight: 600; line-height: 1.3; }
.prisme-bus-mode-aide { font-size: var(--prisme-t-xs, 0.875rem); font-weight: 400; color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-mode-carte[aria-pressed="true"] { border: 2px solid var(--prisme-or, #F5A623); padding: 23px; }
.prisme-bus-mode-carte[aria-pressed="true"]::after { content: "✓"; color: var(--prisme-or, #F5A623); font-size: var(--prisme-t-m, 1.125rem); }

.prisme-bus-vue[hidden] { display: none; }
.prisme-bus-vue { display: grid; gap: 24px; }
.prisme-bus-amiens, .prisme-bus-amiens-zone { display: grid; gap: 24px; }
.prisme-bus-amiens-titre { margin: 0; font-size: var(--prisme-t-xl, 1.75rem); font-weight: 600; line-height: 1.25; }

/* Destinations : une carte par ville */
.prisme-bus-dest-liste { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); }
.prisme-bus-dest { display: grid; gap: 4px; align-content: center; min-height: 88px; padding: 24px; text-align: left; cursor: pointer; font: inherit; position: relative; transition: transform .2s ease, border-color .2s ease; }
.prisme-bus-dest::after { content: "›"; position: absolute; right: 24px; top: 50%; margin-top: -14px; font-size: var(--prisme-t-xl, 1.75rem); line-height: 1; color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-dest:hover { transform: translateY(-2px); border-color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-dest-nom { font-size: var(--prisme-t-l, 1.375rem); font-weight: 600; line-height: 1.2; padding-right: 24px; overflow-wrap: anywhere; }
.prisme-bus-dest small { font-size: var(--prisme-t-xs, 0.875rem); color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-autres summary { min-height: 48px; display: flex; align-items: center; cursor: pointer; font-weight: 600; }
.prisme-bus-autres[open] summary { margin-bottom: 16px; }

/* Liens d'action discrets (retour, voir plus) */
.prisme-bus-retour { width: fit-content; min-height: 48px; padding: 0 24px; background: transparent; color: var(--prisme-texte, #FFFFFF); border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-pill, 999px); font: inherit; font-weight: 600; cursor: pointer; transition: border-color .2s ease; }
.prisme-bus-retour:hover { border-color: var(--prisme-texte-att, #A9A9B4); }

/* Filtres : un seul bloc segmenté */
.prisme-bus-amiens-filtres { display: inline-flex; width: fit-content; max-width: 100%; padding: 4px; gap: 4px; border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-pill, 999px); background: var(--prisme-fond-carte, #201F24); }
.prisme-bus-amiens-filtre { min-height: 44px; min-width: 64px; padding: 0 16px; border: 0; border-radius: var(--prisme-radius-pill, 999px); background: transparent; color: var(--prisme-texte, #FFFFFF); font: inherit; font-weight: 600; cursor: pointer; }
.prisme-bus-amiens-filtre[aria-pressed="true"] { background: var(--prisme-action-fond, #FFFFFF); color: var(--prisme-action-texte, #17171A); }

/* Départs : une carte par départ, l'heure en grand */
.prisme-bus-amiens-liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.prisme-bus-amiens-jour { font-size: var(--prisme-t-xs, 0.875rem); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--prisme-texte-att, #A9A9B4); padding: 16px 8px 0; }
.prisme-bus-amiens-ligne { display: grid; grid-template-columns: minmax(0, 7rem) minmax(0, 1fr); gap: 24px; align-items: center; padding: 24px; border-top: 1px solid var(--prisme-bordure, #34333B); }
.prisme-bus-amiens-heure { display: block; font-size: var(--prisme-t-xl, 1.75rem); font-weight: 600; line-height: 1.1; font-variant-numeric: tabular-nums; }
.prisme-bus-amiens-ligne.est-supprime .prisme-bus-amiens-heure { text-decoration: line-through; color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-amiens-quoi { display: grid; gap: 8px; justify-items: start; min-width: 0; }
.prisme-bus-amiens-quoi p { margin: 0; }
.prisme-bus-amiens-vers { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.prisme-bus-amiens-vers .prisme-bus-ligne { margin: 0; }
.prisme-bus-amiens-nom { font-size: var(--prisme-t-m, 1.125rem); font-weight: 600; line-height: 1.3; }
.prisme-bus-amiens-ou { font-size: var(--prisme-t-xs, 0.875rem); color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-amiens .prisme-bus-etat { padding: 4px 16px; }
@media (max-width: 480px) { .prisme-bus-amiens-ligne { grid-template-columns: 1fr; gap: 8px; padding: 16px 24px 24px; } .prisme-bus-mode-carte { grid-template-columns: 48px minmax(0, 1fr) 16px; padding: 16px; } .prisme-bus-mode-carte[aria-pressed="true"] { padding: 15px; } .prisme-bus-mode-icone { width: 48px; height: 48px; } }
@media (prefers-reduced-motion: reduce) { .prisme-bus-mode-carte, .prisme-bus-dest, .prisme-bus-retour { transition: none; } .prisme-bus-mode-carte:hover, .prisme-bus-dest:hover { transform: none; } }
/* Titre d'étape rangé à l'intérieur de la carte (et non à cheval sur le filet) */
.prisme-bus-etape-choix legend { float: left; width: 100%; padding: 0; margin-bottom: 16px; }
.prisme-bus-etape-choix legend + * { clear: both; }

/* ---- Les bus près de moi (0.5.0) ---- */
.prisme-bus-autour, .prisme-bus-autour-zone { display: grid; gap: 24px; }
.prisme-bus-autour-arret { padding: 24px; display: grid; gap: 16px; }
.prisme-bus-autour-tete { display: grid; gap: 4px; padding-bottom: 16px; border-bottom: 1px solid var(--prisme-bordure, #34333B); }
.prisme-bus-autour-liste { list-style: none; padding: 0; margin: 0; display: grid; gap: 16px; }
.prisme-bus-autour-passage { display: grid; grid-template-columns: minmax(0, 7rem) minmax(0, 1fr); gap: 16px; align-items: start; }
.prisme-bus-autour-quand { display: grid; gap: 4px; }
.prisme-bus-autour-quand strong { font-size: var(--prisme-t-l, 1.375rem); font-weight: 600; line-height: 1.15; }
.prisme-bus-autour-quoi { display: grid; gap: 8px; justify-items: start; min-width: 0; }
.prisme-bus-autour-passage.est-trop-tot .prisme-bus-autour-quand strong { color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-autour-arret .prisme-bus-retour { display: inline-flex; align-items: center; text-decoration: none; }
@media (max-width: 480px) { .prisme-bus-autour-passage { grid-template-columns: 1fr; gap: 8px; } .prisme-bus-autour-arret { padding: 24px 16px; } }

/* Trains et cars : deux parties séparées */
.prisme-bus-amiens-section { display: grid; gap: 16px; }
.prisme-bus-amiens-section-tete { display: grid; gap: 4px; }
.prisme-bus-amiens-section-tete h3 { margin: 0; font-size: var(--prisme-t-l, 1.375rem); font-weight: 600; }
.prisme-bus-amiens-section .prisme-bus-vide { padding: 24px; }

/* Grand écran (ordinateur, iPad en paysage) : la page profite de la largeur disponible */
@media (min-width: 1024px) {
	.prisme-bus { max-width: none; }
}

/* ================= Bento (voir le script bento.js du thème) =================
   Le choix du mode, les destinations et les arrêts proches sont des grilles de cartes : la première (la plus utile) est la grande.
   Les étapes « Où es-tu ? / Où vas-tu ? / Quand ? » se posent côte à côte. Téléphone : une colonne, rien ne change. */
.prisme-bus-mode, .prisme-bus-dest-liste, .prisme-bus-autour-zone { grid-auto-flow: dense; }
.prisme-bus-mode > *, .prisme-bus-dest-liste > *, .prisme-bus-autour-zone > * { min-width: 0; box-sizing: border-box; }
@media (min-width: 640px) {
	.prisme-bus-mode, .prisme-bus-dest-liste, .prisme-bus-autour-zone { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
}
@media (min-width: 1024px) {
	.prisme-bus-mode, .prisme-bus-dest-liste, .prisme-bus-autour-zone { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.prisme-bus-mode > .prisme-bus-mode-carte, .prisme-bus-dest-liste > .prisme-bus-dest, .prisme-bus-autour-zone > .prisme-bus-autour-arret { height: 100%; }

/* Titre et note de source d'une grille créée par le script : sur toute la largeur */
.prisme-bus-autour-zone > h2, .prisme-bus-autour-zone > p { grid-column: 1 / -1; }

/* La grande carte du choix de mode : l'icône au-dessus, le titre en grand */
.prisme-bus-mode > .prisme-bus-mode-carte.prisme-bento-grand { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; align-content: end; padding: 40px; gap: 24px; }
.prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-icone { width: 80px; height: 80px; border-radius: 22px; }
.prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-icone svg { width: 40px; height: 40px; }
.prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-texte { align-self: end; }
.prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-titre { font-size: clamp(1.5rem, 2.4vw, 2.25rem); line-height: 1.15; }
.prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-aide { font-size: var(--prisme-t-m, 1.125rem); }
.prisme-bus-mode-carte.prisme-bento-grand::after { position: absolute; right: 32px; top: 32px; }
.prisme-bus-dest.prisme-bento-grand { padding: 40px; align-content: end; }
.prisme-bus-dest.prisme-bento-grand .prisme-bus-dest-nom { font-size: clamp(1.75rem, 3vw, 2.5rem); }

/* Départs d'Amiens : deux cartes par ligne, le titre du jour sur toute la largeur */
@media (min-width: 768px) {
	.prisme-bus-amiens-liste { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.prisme-bus-amiens-liste > .prisme-bus-amiens-jour { grid-column: 1 / -1; }
}
@media (min-width: 1280px) { .prisme-bus-amiens-liste { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Aller d'un site à l'autre : introduction, puis les trois étapes côte à côte, puis le bouton et le résultat */
@media (min-width: 1024px) {
	.prisme-bus-vue[data-bus-vue="campus"] { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
	.prisme-bus-vue[data-bus-vue="campus"] > * { grid-column: 1 / -1; min-width: 0; }
	.prisme-bus-vue[data-bus-vue="campus"] > .prisme-bus-etape-choix { grid-column: auto; }
}

/* Glace : notices et alertes (bandeaux d'information) */
.prisme-bus-notice, .prisme-bus-alerte { background: linear-gradient(color-mix(in srgb, var(--prisme-or, #F5A623) 8%, transparent), color-mix(in srgb, var(--prisme-or, #F5A623) 8%, transparent)), color-mix(in srgb, var(--prisme-fond-carte, #201F24) 85%, transparent); -webkit-backdrop-filter: blur(20px) saturate(150%); backdrop-filter: blur(20px) saturate(150%); }
@media (prefers-reduced-transparency: reduce) {
	.prisme-bus-notice, .prisme-bus-alerte { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* ---- Animation « ligne de bus » : orange = moins de 2 min, vert = monte, rouge (corail de la charte) = parti ---- */
.prisme-bus-anim { display: grid; gap: var(--prisme-e2, 8px); margin: var(--prisme-e2, 8px) 0 0; --anim-couleur: var(--prisme-bordure, #34333B); text-align: left; }
.prisme-bus-anim.est-bientot { --anim-couleur: var(--prisme-or, #F5A623); }
.prisme-bus-anim.est-monter { --anim-couleur: var(--prisme-vert, #2ECC71); }
.prisme-bus-anim.est-parti { --anim-couleur: var(--prisme-corail, #F0653C); }
.prisme-bus-anim-voie { position: relative; height: 32px; }
.prisme-bus-anim-ligne { position: absolute; left: 0; right: 0; top: 50%; height: 6px; margin-top: -3px; border-radius: 3px; background: var(--anim-couleur); transition: background 0.4s; }
.prisme-bus-anim.est-bientot .prisme-bus-anim-ligne { background: repeating-linear-gradient(90deg, var(--anim-couleur) 0 16px, transparent 16px 24px); animation: prisme-bus-defile 0.8s linear infinite; }
.prisme-bus-anim-arret { position: absolute; top: 2px; bottom: 2px; left: calc(0.82 * (100% - 28px) + 12px); width: 4px; border-radius: 2px; background: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-anim-bus { position: absolute; top: 2px; left: calc(var(--p, 0) * (100% - 28px)); display: grid; place-items: center; width: 28px; height: 28px; color: var(--prisme-fond, #17171A); background: var(--anim-couleur); border-radius: 8px; transition: left 1s linear, opacity 0.6s, background 0.4s; }
.prisme-bus-anim.est-parti .prisme-bus-anim-bus { opacity: 0.55; transition: left 12s ease-in, opacity 12s ease-in, background 0.4s; } /* le bus quitte l’arrêt en 12 s : on le voit partir */
.prisme-bus-anim.est-monter .prisme-bus-anim-ligne { box-shadow: 0 0 0 0 var(--anim-couleur); animation: prisme-bus-pouls 1.6s ease-out infinite; }
.prisme-bus-anim-texte { font-size: var(--prisme-t-xs, 0.875rem); font-weight: 600; line-height: 1.3; color: var(--prisme-texte, #FFFFFF); }
.prisme-bus-anim.est-bientot .prisme-bus-anim-texte::before { content: "● "; color: var(--anim-couleur); }
.prisme-bus-anim.est-monter .prisme-bus-anim-texte::before { content: "✓ "; color: var(--anim-couleur); }
.prisme-bus-anim.est-parti .prisme-bus-anim-texte::before { content: "▲ "; color: var(--anim-couleur); }
.prisme-bus-anim.est-loin .prisme-bus-anim-texte { color: var(--prisme-texte-att, #A9A9B4); font-weight: 400; }
@keyframes prisme-bus-defile { to { background-position: 24px 0; } }
@keyframes prisme-bus-pouls { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--anim-couleur) 55%, transparent); } 100% { box-shadow: 0 0 0 10px transparent; } }
@media (prefers-reduced-motion: reduce) {
	.prisme-bus-anim-bus, .prisme-bus-anim-ligne { transition: none; }
	.prisme-bus-anim.est-bientot .prisme-bus-anim-ligne, .prisme-bus-anim.est-monter .prisme-bus-anim-ligne { animation: none; }
}

/* ---- Passages en sous-bento : une sous-carte par bus, avec sa ligne animée (bloc final : il complète les règles plus haut) ---- */
.prisme-bus-autour-liste { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: var(--prisme-e3, 16px); }
.prisme-bus-sous-carte {
	position: relative;
	box-sizing: border-box;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--prisme-e2, 8px);
	min-width: 0;
	padding: var(--prisme-e3, 16px);
	border: 1px solid var(--prisme-bordure, #34333B);
	border-radius: var(--prisme-radius-s, 14px);
	background: color-mix(in srgb, var(--prisme-rubrique, var(--prisme-bleu, #2F8FE0)) 7%, var(--prisme-fond-carte, #201F24));
	overflow: hidden;
}
.prisme-bus-sous-carte::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--prisme-rubrique, var(--prisme-bleu, #2F8FE0)); }
.prisme-bus-sous-carte.prisme-bento-grand { padding: var(--prisme-e4, 24px); }
.prisme-bus-sous-carte.prisme-bento-grand .prisme-bus-dans { font-size: var(--prisme-t-xl, 1.75rem); }
.prisme-bus-sous-carte .prisme-bus-autour-quand { gap: var(--prisme-e1, 4px); }
@media (max-width: 480px) { .prisme-bus-sous-carte { padding: var(--prisme-e3, 16px); } }

/* ================= Ordinateur et iPad : la page prend la largeur, les bentos s'agrandissent (bloc final) =================
   Seuils de la charte : 768 (iPad portrait), 1024 (iPad paysage, ordinateur), 1536 (grand écran). Téléphone : rien ne change. */
@media (min-width: 768px) {
	.prisme-bus { max-width: none; padding: 0 var(--prisme-e4, 24px); gap: var(--prisme-e5, 32px); }

	/* « Je me déplace dans Amiens » : les trois étapes côte à côte dès l'iPad portrait */
	.prisme-bus-vue[data-bus-vue="campus"] { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--prisme-e3, 16px); align-items: stretch; }
	.prisme-bus-vue[data-bus-vue="campus"] > * { grid-column: 1 / -1; min-width: 0; }
	.prisme-bus-vue[data-bus-vue="campus"] > .prisme-bus-etape-choix { grid-column: auto; }

	/* Résultat du trajet : la proposition la plus rapide en grande carte (toute la largeur), les autres côte à côte, sans trou */
	.prisme-bus-resultat { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--prisme-e3, 16px); align-items: stretch; }
	.prisme-bus-resultat > * { min-width: 0; margin: 0; }
	.prisme-bus-resultat > :not(.prisme-bus-carte) { grid-column: 1 / -1; }
	.prisme-bus-resultat > .prisme-bus-carte:first-of-type { grid-column: 1 / -1; padding: var(--prisme-e5, 32px); }
	.prisme-bus-resultat > .prisme-bus-carte:first-of-type .prisme-bus-carte-tete h3 { font-size: var(--prisme-t-xl, 1.75rem); }
	/* Les étapes de la grande carte forment elles-mêmes un sous-bento (marche, bus, descente…) */
	.prisme-bus-resultat > .prisme-bus-carte:first-of-type .prisme-bus-etapes { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: var(--prisme-e3, 16px); }
	.prisme-bus-resultat > .prisme-bus-carte:first-of-type .prisme-bus-etape { padding: var(--prisme-e3, 16px); border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); background: color-mix(in srgb, var(--prisme-rubrique, var(--prisme-bleu, #2F8FE0)) 6%, var(--prisme-fond-carte, #201F24)); }
}

@media (min-width: 1024px) {
	/* « Je quitte Amiens » : trains et cars côte à côte ; tout le reste (titre, retour, destinations, source) sur toute la largeur */
	.prisme-bus-amiens-zone { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--prisme-e4, 24px); align-items: start; }
	.prisme-bus-amiens-zone > * { min-width: 0; margin: 0; }
	.prisme-bus-amiens-zone > :not(.prisme-bus-amiens-section) { grid-column: 1 / -1; }
	.prisme-bus-amiens-section .prisme-bus-amiens-liste { grid-template-columns: minmax(0, 1fr); }
	.prisme-bus-dest-liste { gap: var(--prisme-e3, 16px); }

	/* Résultat : les propositions suivantes se partagent la ligne, plus de place pour les étapes */
	.prisme-bus-resultat { gap: var(--prisme-e4, 24px); }
}

@media (min-width: 1536px) {
	.prisme-bus-amiens-section .prisme-bus-amiens-liste { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---- « Les bus près de moi » : la carte d'un arrêt ne s'étire plus (correctif de mise en page) ----
   Dans une grande carte du bento (2 lignes), les rangées de la carte se partageaient la hauteur en trop : grands vides entre
   l'en-tête, les bus et le lien. Maintenant : l'en-tête et le lien gardent leur taille, la liste des bus prend la place restante
   et reste calée en haut ; chaque sous-carte garde sa hauteur. */
.prisme-bus-autour-arret { grid-template-rows: none; align-content: start; }
.prisme-bus-autour-tete { align-self: start; }
.prisme-bus-autour-liste { align-content: start; align-items: start; grid-auto-rows: max-content; }
.prisme-bus-sous-carte { align-content: start; align-self: start; }
.prisme-bus-autour-arret > .prisme-bus-retour { align-self: end; justify-self: start; }

/* Les arrêts ont le MÊME poids (au plus 3, de hauteur variable) : pas de « grande carte » 2×2 qui s'étire et laisse des vides.
   2 colonnes dès 640 px, 3 colonnes dès 1024 px (iPad paysage, ordinateur) : les 3 arrêts tiennent sur une ligne.
   Les passages de chaque arrêt restent, eux, en sous-bento. */
.prisme-bus-autour-zone > .prisme-bus-autour-arret.prisme-bento-grand,
.prisme-bus-autour-zone > .prisme-bus-autour-arret.prisme-bento-large { grid-column: auto !important; grid-row: auto !important; }
.prisme-bus-autour-zone { align-items: start; }
@media (min-width: 1024px) { .prisme-bus-autour-zone { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* iPad portrait (2 colonnes) : le troisième arrêt, seul sur sa ligne, prend toute la largeur (aucun vide) */
@media (min-width: 640px) and (max-width: 1023px) {
	.prisme-bus-autour-zone > .prisme-bus-autour-arret:last-of-type:nth-of-type(odd) { grid-column: 1 / -1 !important; }
}

/* Une direction = un sous-bento dans la carte de l'arrêt (titre de direction, puis les bus de cette direction) */
.prisme-bus-autour-sens { display: grid; gap: var(--prisme-e3, 16px); align-content: start; min-width: 0; }
.prisme-bus-autour-sens + .prisme-bus-autour-sens { padding-top: var(--prisme-e3, 16px); border-top: 1px solid var(--prisme-bordure, #34333B); }
.prisme-bus-autour-direction { margin: 0; font-size: var(--prisme-t-m, 1.125rem); font-weight: 600; line-height: 1.3; }
.prisme-bus-autour-direction::before { content: "→ "; color: var(--prisme-rubrique, var(--prisme-bleu, #2F8FE0)); }
.prisme-bus-autour-sens > .prisme-bus-retour { justify-self: start; }

/* ---------- État du réseau Ametis (jauge de retard) ---------- */
.prisme-bus-reseau { margin-bottom: var(--prisme-e4, 16px); }
.prisme-bus-reseau-titre { margin: 0 0 var(--prisme-e1, 4px); font-weight: 600; font-size: var(--prisme-t-lg, 1.125rem); }
.prisme-bus-reseau--ok .prisme-bus-reseau-titre::before { content: "● "; color: var(--prisme-vert, #2ECC71); }
.prisme-bus-reseau--moyen .prisme-bus-reseau-titre::before { content: "▲ "; color: var(--prisme-or, #F5A623); }
.prisme-bus-reseau--fort .prisme-bus-reseau-titre::before { content: "■ "; color: var(--prisme-corail, #FF6B5B); }
.prisme-bus-reseau-phrase { margin: 0 0 var(--prisme-e3, 12px); }
.prisme-bus-jauge { display: flex; height: 16px; gap: 2px; border-radius: 8px; overflow: hidden; }
.prisme-bus-jauge-part { flex-basis: 0; min-width: 6px; }
.prisme-bus-jauge-part--ok { background: var(--prisme-vert, #2ECC71); }
.prisme-bus-jauge-part--leger { background: repeating-linear-gradient(45deg, var(--prisme-or, #F5A623) 0 4px, transparent 4px 7px); }
.prisme-bus-jauge-part--retard { background: var(--prisme-or, #F5A623); }
.prisme-bus-jauge-part--supprime { background: repeating-linear-gradient(90deg, var(--prisme-corail, #FF6B5B) 0 3px, transparent 3px 6px); }
.prisme-bus-jauge-legende { list-style: none; margin: var(--prisme-e2, 8px) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--prisme-e1, 4px) var(--prisme-e4, 16px); font-size: var(--prisme-t-sm, 0.875rem); }
.prisme-bus-jauge-legende li::before { margin-right: 6px; }
.prisme-bus-jauge-ok::before { content: "●"; color: var(--prisme-vert, #2ECC71); }
.prisme-bus-jauge-leger::before { content: "◐"; color: var(--prisme-or, #F5A623); }
.prisme-bus-jauge-retard::before { content: "▲"; color: var(--prisme-or, #F5A623); }
.prisme-bus-jauge-supprime::before { content: "✕"; color: var(--prisme-corail, #FF6B5B); }
.prisme-bus-reseau-note { margin: var(--prisme-e2, 8px) 0 0; font-size: var(--prisme-t-sm, 0.875rem); opacity: .85; }

/* ---------- Barre d'attente des données + animation « le retard a changé » ---------- */
.prisme-bus-attente { margin-top: var(--prisme-e3, 12px); }
.prisme-bus-attente-texte { margin: 0 0 var(--prisme-e1, 4px); font-size: var(--prisme-t-sm, 0.875rem); font-variant-numeric: tabular-nums; }
.prisme-bus-attente-piste { height: 6px; border-radius: 3px; overflow: hidden; background: color-mix(in srgb, var(--prisme-texte, #fff) 14%, transparent); }
.prisme-bus-attente-barre { display: block; height: 100%; width: 100%; transform-origin: left; transform: scaleX(0); background: var(--prisme-bleu, #4FA3FF); transition: transform 1s linear; }
.prisme-bus-attente-barre--neuf { transition: none; background: var(--prisme-vert, #2ECC71); }
[data-attente] .prisme-bus-attente-barre { animation: prisme-bus-attente 1.2s ease-in-out infinite; }
@keyframes prisme-bus-attente { 50% { opacity: .35; } }

.prisme-bus-change { position: relative; border-radius: 8px; animation: prisme-bus-change 2.4s ease-out; }
.prisme-bus-change--plus { --prisme-bus-ton: var(--prisme-corail, #FF6B5B); }
.prisme-bus-change--moins { --prisme-bus-ton: var(--prisme-vert, #2ECC71); }
.prisme-bus-change--plus::after { content: " ▲ plus de retard"; }
.prisme-bus-change--moins::after { content: " ▼ moins de retard"; }
.prisme-bus-change::after { font-size: var(--prisme-t-sm, 0.875rem); font-weight: 600; color: var(--prisme-bus-ton); }
strong.prisme-bus-change { display: inline-block; }
@keyframes prisme-bus-change {
	0% { transform: scale(1.12); box-shadow: 0 0 0 0 var(--prisme-bus-ton); background: color-mix(in srgb, var(--prisme-bus-ton) 35%, transparent); }
	30% { transform: scale(1); box-shadow: 0 0 0 8px transparent; }
	100% { background: transparent; }
}
.prisme-bus-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (prefers-reduced-motion: reduce) {
	.prisme-bus-attente-barre { transition: none; }
	[data-attente] .prisme-bus-attente-barre { animation: none; }
	.prisme-bus-change { animation: none; background: color-mix(in srgb, var(--prisme-bus-ton) 25%, transparent); }
}

/* ---------- Directions : un sous-bento par sens dans la carte de l'arrêt, avec un repère connu ---------- */
.prisme-bus-autour-sens-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: var(--prisme-e3, 16px); }
.prisme-bus-sens-carte { position: relative; overflow: hidden; padding: var(--prisme-e4, 24px); border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); background: color-mix(in srgb, var(--prisme-rubrique, var(--prisme-bleu, #2F8FE0)) 7%, transparent); align-content: start; }
.prisme-bus-sens-carte::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--prisme-rubrique, var(--prisme-bleu, #2F8FE0)); }
.prisme-bus-autour-sens + .prisme-bus-autour-sens { padding-top: var(--prisme-e4, 24px); border-top: 1px solid var(--prisme-bordure, #34333B); }
.prisme-bus-reperes { margin: calc(-1 * var(--prisme-e1, 4px)) 0 0; font-size: var(--prisme-t-sm, 0.875rem); }
.prisme-bus-reperes::before { content: "👀 "; }
.prisme-bus-reperes strong { font-weight: 600; }
@media (max-width: 480px) { .prisme-bus-sens-carte { padding: var(--prisme-e3, 16px); } }

/* Barre d'attente seule (sans carte), et entrée en fondu du bus qui prend la place du précédent */
.prisme-bus-reseau { margin-bottom: var(--prisme-e4, 16px); }
.prisme-bus-reseau .prisme-bus-attente { margin-top: 0; }
.prisme-bus-entree { animation: prisme-bus-entree .7s ease-out both; }
@keyframes prisme-bus-entree { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .prisme-bus-entree { animation: none; } }


/* ---------- Liaison satellite -> site web : la barre de récupération des données, dans chaque direction ---------- */
.prisme-bus-liaison { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--prisme-e2, 8px); color: var(--prisme-vert, #2ECC71); }
.prisme-bus-liaison svg { display: block; }
.prisme-bus-liaison-piste { height: 6px; border-radius: 3px; overflow: hidden; background: color-mix(in srgb, var(--prisme-vert, #2ECC71) 22%, transparent); }
.prisme-bus-liaison-remplit { display: block; width: 100%; height: 100%; background: var(--prisme-vert, #2ECC71); transform-origin: left; transform: scaleX(0); transition: transform 1s linear; }
.prisme-bus-liaison-texte { grid-column: 1 / -1; font-size: var(--prisme-t-sm, 0.875rem); font-variant-numeric: tabular-nums; color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-liaison[data-attente] .prisme-bus-liaison-remplit { animation: prisme-bus-attente 1.2s ease-in-out infinite; }
.prisme-bus-recu .prisme-bus-liaison-remplit { transition: none; }
.prisme-bus-recu .prisme-bus-liaison-site { animation: prisme-bus-site .5s ease-out; }
.prisme-bus-recu .prisme-bus-liaison-sat { animation: prisme-bus-site .4s ease-out; }
@keyframes prisme-bus-site { 50% { transform: scale(1.2); } }
@media (prefers-reduced-motion: reduce) { .prisme-bus-liaison-remplit { transition: none; animation: none !important; } .prisme-bus-recu .prisme-bus-liaison-site, .prisme-bus-recu .prisme-bus-liaison-sat { animation: none; } }

/* Fondu enchaîné : le bus qui part s'efface (6 s) pendant que le suivant apparaît, dans la même case */
.prisme-bus-autour-liste.prisme-bus-fondu { list-style: none; padding: 0; margin: 0; display: grid !important; grid-template-columns: minmax(0, 1fr) !important; }
.prisme-bus-fondu > li { grid-area: 1 / 1 !important; grid-column: 1 !important; grid-row: 1 !important; }
.prisme-bus-sortant { animation: prisme-bus-sort 14s ease-in-out forwards; pointer-events: none; } /* 14 s : plein pendant ~8,4 s (on voit le bus partir), puis fondu */
.prisme-bus-arrivant { animation: prisme-bus-arrive 14s ease-in-out both; }
@keyframes prisme-bus-sort { 0%, 60% { opacity: 1; } 100% { opacity: 0; } }
@keyframes prisme-bus-arrive { 0%, 40% { opacity: 0; } 100% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .prisme-bus-sortant { animation: none; display: none; } .prisme-bus-arrivant { animation: none; } }

/* ---------- Boussole vers l'arrêt ---------- */
.prisme-bus-autour-tete { position: relative; }
.prisme-bus-boussole { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--prisme-e3, 12px); margin-top: var(--prisme-e2, 8px); }
.prisme-bus-boussole-rond { display: block; width: 88px; height: 88px; color: var(--prisme-bleu, #4FA3FF); transition: color .25s; }
.prisme-bus-boussole.est-droit .prisme-bus-boussole-rond { color: var(--prisme-vert, #2ECC71); }
.prisme-bus-boussole-texte { font-size: var(--prisme-t-base, 1rem); font-weight: 600; line-height: 1.4; }
.prisme-bus-boussole-fleche { transform-origin: 32px 32px; transition: transform .25s ease-out; }
.prisme-bus-boussole-bouton { grid-column: 1 / -1; justify-self: start; }
@media (prefers-reduced-motion: reduce) { .prisme-bus-boussole-fleche { transition: none; } }

.prisme-bus-presentation { display: grid; gap: var(--prisme-e3, 12px); justify-items: start; margin-bottom: var(--prisme-e4, 16px); }
.prisme-bus-presentation h3 { margin: 0; }
.prisme-bus-presentation ul { margin: 0; padding-left: 1.2em; display: grid; gap: var(--prisme-e1, 4px); }

.prisme-bus-manque { margin: 0; padding: var(--prisme-e3, 12px) var(--prisme-e4, 16px); border: 1px dashed var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); }

/* ---------- Pas de saut de page : les textes d'état occupent toujours la même place ---------- */
.prisme-bus-autour-quand { min-height: 4.5rem; align-content: start; }
.prisme-bus-autour-quand strong, .prisme-bus-dans { white-space: nowrap; }
.prisme-bus-autour-quoi .prisme-bus-etat { white-space: nowrap; min-height: 28px; }
.prisme-bus-reserve.est-cache { visibility: hidden; }
.prisme-bus-liaison-texte { min-height: 1.5em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prisme-bus-boussole-texte { min-height: 3.2em; }
.prisme-bus-autour-liste, .prisme-bus-manque { min-height: 8.5rem; }
.prisme-bus-manque { display: flex; align-items: center; box-sizing: border-box; }
.prisme-bus-autour-zone { overflow-anchor: none; }

/* Ligne d'état de la page : une seule ligne, toujours réservée (elle ne pousse plus le contenu quand son texte change) */
.prisme-bus-etat-global { min-height: 1.6em; margin: 0 0 var(--prisme-e3, 12px); }

.prisme-bus-boussole[hidden] { display: none; }

/* Bannière « bus fortement perturbés » (avec lien vers Courrier Picard) */
.prisme-bus-perturbation { display: grid; gap: var(--prisme-e3, 12px); justify-items: start; margin-bottom: var(--prisme-e4, 16px); border: 2px solid var(--prisme-or, #F5A623) !important; }
.prisme-bus-perturbation[hidden] { display: none; }
.prisme-bus-perturbation p { margin: 0; }
.prisme-bus-perturbation-titre { font-size: var(--prisme-t-l, 1.375rem); font-weight: 600; line-height: 1.3; }
.prisme-bus-perturbation-titre span { color: var(--prisme-or, #F5A623); }

/* Catégories de destinations (lieux d'étude, commerces, monuments) */
.prisme-bus-cats { display: grid; gap: var(--prisme-e3, 12px); margin-bottom: var(--prisme-e3, 12px); }
.prisme-bus-cats .prisme-segment { display: flex; flex-wrap: wrap; gap: 8px; }
.prisme-bus-recherche { min-height: 48px; width: 100%; box-sizing: border-box; padding: 8px 16px; font: inherit; color: inherit; border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); background: transparent; }
.prisme-bus-choix-detail.est-ouvert { color: var(--prisme-vert, #2ECC71); }
.prisme-bus-choix-detail.est-ferme { color: var(--prisme-corail, #F0653C); }

/* Boutons de catégories : des pilules séparées qui passent à la ligne (le style « segment » du cœur est fait pour UNE seule ligne) */
.prisme-bus-cats-barre { display: flex; flex-wrap: wrap; gap: var(--prisme-e2, 8px); }
.prisme-bus-cat { min-height: 44px; padding: 8px 14px; font-size: 0.9375rem; border: 1px solid var(--prisme-bordure, #34333B); border-radius: 999px; background: transparent; color: var(--prisme-texte, #fff); font: inherit; font-weight: 600; cursor: pointer; text-align: left; line-height: 1.25; }
.prisme-bus-cat:hover { border-color: var(--prisme-texte-att, #A9A9B4); }
.prisme-bus-cat[aria-pressed="true"] { background: var(--prisme-action-fond, #fff); color: var(--prisme-action-texte, #17171A); border-color: var(--prisme-action-fond, #fff); }

/* Interface 0.61.0 : une fois un mode choisi, les trois cartes se resserrent en barre de mode (le contenu apparaît tout de suite, sans défiler) ;
   mentions et sources repliées. `:has()` : sans lui (anciens navigateurs), les cartes gardent leur taille d'origine. */
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode > .prisme-bus-mode-carte { grid-column: auto !important; grid-row: auto !important; grid-template-columns: 32px minmax(0, 1fr); grid-template-rows: auto; gap: 12px; padding: 8px 16px; min-height: 56px; height: 100%; align-content: center; }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode-carte .prisme-bus-mode-icone { width: 32px; height: 32px; border-radius: 10px; }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode-carte .prisme-bus-mode-icone svg { width: 20px; height: 20px; }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode-carte .prisme-bus-mode-aide,
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode-carte::after { display: none; }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode-carte .prisme-bus-mode-titre { font-size: var(--prisme-t-xs, 0.875rem); line-height: 1.25; }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode-carte[aria-pressed="true"] { padding: 7px 15px; background: color-mix(in srgb, var(--prisme-or, #F5A623) 14%, transparent); }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode > .prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-titre { font-size: var(--prisme-t-xs, 0.875rem); }
.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode > .prisme-bus-mode-carte.prisme-bento-grand .prisme-bus-mode-icone { width: 32px; height: 32px; }
@media (max-width: 640px) {
	.prisme-bus:has(.prisme-bus-mode-carte[aria-pressed="true"]) .prisme-bus-mode { grid-template-columns: minmax(0, 1fr); gap: 8px; }
}
.prisme-bus-mentions { margin-top: 24px; }
.prisme-bus-mentions > summary { display: flex; align-items: center; min-height: 44px; cursor: pointer; font-weight: 600; font-size: var(--prisme-t-xs, 0.875rem); }
.prisme-bus-mentions > .prisme-bus-source { margin-top: 12px; }

/* Interface 0.62.0 : planificateur, « Les bus près de moi », « Je quitte Amiens ». */
.prisme-bus-dest[hidden], .prisme-bus-recap[hidden] { display: none; }
.prisme-bus-intro > p { margin: 0 0 12px; }
.prisme-bus-intro > .prisme-bus-rassure-ligne { margin: 0; color: var(--prisme-texte-att, #A9A9B4); padding-left: 24px; position: relative; }
.prisme-bus-rassure-ligne::before { content: "✓"; position: absolute; left: 0; color: var(--prisme-vert, #2ECC71); }
/* Récapitulatif des choix, collé sous l'en-tête pendant qu'on choisit */
.prisme-bus-recap { margin: 0; padding: 12px 16px; border: 1px solid var(--prisme-bordure, #34333B); border-radius: var(--prisme-radius-s, 14px); font-weight: 600; font-size: var(--prisme-t-xs, 0.875rem); background: color-mix(in srgb, var(--prisme-or, #F5A623) 10%, transparent); position: sticky; top: 80px; z-index: 3; }
/* Une étape terminée se remplit : le rond numéroté passe à l'or plein (la forme plein/vide s'ajoute à la couleur) */
.prisme-bus-etape-choix:has(input:checked) .prisme-bus-num { background: var(--prisme-or, #F5A623); color: var(--prisme-fond, #17171A); }
/* Les décomptes changent chaque seconde : chiffres de même largeur, pas de tremblement de la ligne */
.prisme-bus-autour-quand strong, .prisme-bus-amiens-dans, .prisme-bus-amiens-heure { font-variant-numeric: tabular-nums; }
.prisme-bus-amiens-dans { display: block; min-height: 1.5em; }
/* Lignes de départ et de passage : cible tactile confortable, repère de couleur à gauche selon l'état (le texte porte toujours l'information) */
.prisme-bus-amiens-ligne, .prisme-bus-autour-passage { min-height: 56px; }
.prisme-bus-amiens-ligne.est-supprime { border-left: 4px solid var(--prisme-corail, #FF6B5B); }
.prisme-bus-autour-passage.est-trop-tot { opacity: .8; }
.prisme-bus-autour-arret { transition: border-color .2s ease; }
.prisme-bus-autour-arret:focus-within, .prisme-bus-autour-arret:hover { border-color: var(--prisme-texte-att, #A9A9B4); }
/* Recherche de destination (Je quitte Amiens) */
.prisme-bus-amiens > .prisme-bus-recherche, .prisme-bus-amiens-zone > .prisme-bus-recherche { width: 100%; min-height: 48px; }
@media (max-width: 640px) { .prisme-bus-recap { top: 72px; } }
@media (prefers-reduced-motion: reduce) { .prisme-bus-autour-arret { transition: none; } }


/* Thème clair (thème PRISME >= 1.90.0) */
:root[data-theme="clair"] .prisme-bus-amiens-ligne { border-top-color: var(--prisme-bordure, #D6D6DE); }
:root[data-theme="clair"] .prisme-bus-recap { background: color-mix(in srgb, var(--prisme-or, #8F5B00) 8%, #FFFFFF); }
