/*
 * INFOGRAPHIES DU SOCLE (shortcodes [sbs_jauges] [sbs_frise] [sbs_tarifs] [sbs_lieu])
 * Le socle émet un balisage neutre (éléments <sbs-*>, classes sbs_*) : le rendu est
 * posé ICI, dans le thème, aux couleurs d'Egypt For All (jamais dans theme/socle/).
 * Chiffres en Fustat (texte), titres en Smooch Sans, palette calcaire / faïence / nuit.
 */

/* ---------- Socle commun : chaque bloc est un objet, jamais du texte en ligne ---------- */
sbs-jauges, sbs-frise, sbs-tarifs, sbs-lieu,
.sbs_jauges, .sbs_frise, .sbs_tarifs, .sbs_lieu{
	display: block; position: relative; margin: 2.2em 0; padding: 28px 28px 22px;
	border-radius: var(--efa-rayon-grand); font-family: var(--efa-texte); line-height: 1.45;
}
sbs-jauge, sbs-etape, sbs-tarif{ display: block; }
.sbs_jauges_titre, .sbs_frise_titre, .sbs_tarifs_titre{
	display: block; font-family: var(--efa-titre); font-weight: 800; text-transform: uppercase;
	font-size: 1.625rem; line-height: 1; letter-spacing: .01em; margin: 0 0 20px; padding-right: 40px;
}
.sbs_source{ display: block; margin-top: 18px; font-size: .75rem; line-height: 1.4; color: var(--efa-gres); font-style: normal; }

/* ---------- Jauges / chiffres-clés : grille de tuiles, chiffre géant ---------- */
.sbs_jauges{ background: var(--efa-nuit); color: #fff; box-shadow: var(--efa-ombre); overflow: hidden; }
.sbs_jauges::after{ /* fil du Nil en filigrane, coin haut-droit */
	content: ""; position: absolute; top: -30px; right: -30px; width: 140px; height: 140px; border-radius: 50%;
	border: 2px solid rgba(95,216,200,.35); box-shadow: 0 0 0 14px rgba(95,216,200,.08); pointer-events: none;
}
.sbs_jauges .sbs_jauges_titre{ color: var(--efa-turquoise); }
.sbs_jauges{ display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.sbs_jauges > .sbs_jauges_titre, .sbs_jauges > .sbs_source{ grid-column: 1 / -1; }
.sbs_jauges > .sbs_jauges_titre{ margin-bottom: 8px; }
.sbs_jauges > .sbs_source{ margin-top: 6px; color: rgba(255,255,255,.7); }
.sbs_jauge{
	display: flex; flex-direction: column; justify-content: flex-start; gap: 4px; min-width: 0;
	background: rgba(255,255,255,.06); border: 1px solid rgba(95,216,200,.28); border-top: 4px solid var(--efa-turquoise);
	border-radius: 16px; padding: 16px 16px 18px;
}
.sbs_jauge_valeur{
	order: 1; font-family: var(--efa-texte); font-weight: 800; font-size: clamp(2.125rem, 1.6rem + 1.6vw, 3rem);
	line-height: 1; color: #fff; font-variant-numeric: tabular-nums; letter-spacing: -.02em; word-spacing: -.18em; white-space: nowrap;
}
.sbs_jauge_valeur.efa-valeur-longue{ font-size: clamp(1.625rem, 1.3rem + .9vw, 2.125rem); white-space: normal; }
.sbs_jauge_unite{ order: 2; font-size: .8125rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--efa-turquoise); }
.sbs_jauge_libelle{ order: 3; margin-top: 6px; font-size: .9375rem; line-height: 1.35; color: rgba(255,255,255,.88); }

/* ---------- Frise / étapes : colonne verticale, pastille « Jour N », filet turquoise ---------- */
.sbs_frise{ background: var(--efa-calcaire); border: 1px solid var(--efa-filet); }
.sbs_frise .sbs_frise_titre{ color: var(--efa-nuit); }
.sbs_etape{
	position: relative; display: grid; grid-template-columns: 96px minmax(0, 1fr); column-gap: 18px;
	padding: 0 0 20px;
}
.sbs_etape::before{ /* filet qui relie les étapes, sous la pastille */
	content: ""; position: absolute; left: 47px; top: 30px; bottom: -2px; width: 3px; border-radius: 3px;
	background: var(--efa-turquoise);
}
.sbs_etape:last-of-type{ padding-bottom: 0; }
.sbs_etape:last-of-type::before{ display: none; }
.sbs_etape_date{
	grid-column: 1; grid-row: 1 / span 2; align-self: start; position: relative; z-index: 1;
	display: flex; align-items: center; justify-content: center; text-align: center; min-height: 32px;
	padding: 5px 8px; border-radius: var(--efa-rayon-pilule); background: var(--efa-faience); color: #fff;
	font-weight: 800; font-size: .8125rem; line-height: 1.15; letter-spacing: .02em; white-space: normal;
	box-shadow: 0 0 0 4px var(--efa-calcaire);
}
.sbs_etape_titre{ grid-column: 2; display: block; font-weight: 700; font-size: 1.0625rem; line-height: 1.3; color: var(--efa-granit); padding-top: 5px; }
.sbs_etape_desc{ grid-column: 2; display: block; margin-top: 3px; font-size: .9375rem; line-height: 1.5; color: var(--efa-gres); }

/* ---------- Grille tarifaire : libellé · barre · prix ---------- */
.sbs_tarifs{ background: var(--efa-calcaire); border: 1px solid var(--efa-filet); }
.sbs_tarifs .sbs_tarifs_titre{ color: var(--efa-nuit); font-size: 1.375rem; }
.sbs_tarif{
	display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto; align-items: center; column-gap: 14px;
	padding: 10px 0; border-bottom: 1px dashed #D6CFC0;
}
.sbs_tarif:last-of-type{ border-bottom: 0; }
.sbs_tarif_libelle{ font-size: .9375rem; font-weight: 600; color: var(--efa-granit); }
.sbs_tarif_barre{
	-webkit-appearance: none; appearance: none; width: 100%; height: 12px; border: 0; border-radius: 999px;
	background: #E2DACB; overflow: hidden; display: block;
}
.sbs_tarif_barre::-webkit-meter-bar{ background: #E2DACB; border: 0; border-radius: 999px; height: 12px; }
.sbs_tarif_barre::-webkit-meter-optimum-value,
.sbs_tarif_barre::-webkit-meter-suboptimum-value,
.sbs_tarif_barre::-webkit-meter-even-less-good-value{ background: linear-gradient(90deg, var(--efa-faience), var(--efa-turquoise)); border-radius: 999px; }
.sbs_tarif_barre::-moz-meter-bar{ background: linear-gradient(90deg, var(--efa-faience), var(--efa-turquoise)); border-radius: 999px; }
.efa-tarif-prix{ font-family: var(--efa-texte); font-weight: 800; font-size: 1rem; color: var(--efa-faience); white-space: nowrap; text-align: right; min-width: 4.5em; font-variant-numeric: tabular-nums; word-spacing: -.18em; }
.sbs_tarifs_notes{ display: block; margin-top: 12px; font-size: .8125rem; color: var(--efa-gres); }

/* ---------- Fiche-lieu : carte avec repère ---------- */
.sbs_lieu{
	background: var(--efa-blanc); border: 1px solid var(--efa-filet); border-left: 6px solid var(--efa-faience);
	box-shadow: var(--efa-ombre); padding: 22px 24px 20px 26px;
	display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 18px; row-gap: 4px; align-items: start;
}
.sbs_lieu > *{ grid-column: 1; }
.sbs_lieu_nom{ display: block; font-family: var(--efa-titre); font-weight: 800; font-size: 1.5rem; line-height: 1.05; text-transform: uppercase; color: var(--efa-nuit); }
.sbs_lieu_adresse{ display: block; font-style: normal; font-weight: 600; font-size: .9375rem; color: var(--efa-granit); }
.sbs_lieu_acces{ display: block; font-size: .875rem; line-height: 1.5; color: var(--efa-gres); }
.sbs_lieu .sbs_lieu_carte{
	grid-column: 2; grid-row: 1 / span 3; align-self: center;
	display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border-radius: var(--efa-rayon-pilule);
	background: var(--efa-eau); color: var(--efa-faience); font-weight: 700; font-size: .875rem; text-decoration: none; white-space: nowrap;
}
.sbs_lieu .sbs_lieu_carte:hover{ background: var(--efa-faience); color: #fff; }
.sbs_icone_repere{ width: 20px; height: 20px; fill: currentColor; flex-shrink: 0; }
.sbs_lieu .sbs_source{ margin-top: 8px; }

/* ---------- Mobile ---------- */
@media (max-width: 600px){
	sbs-jauges, sbs-frise, sbs-tarifs, sbs-lieu,
	.sbs_jauges, .sbs_frise, .sbs_tarifs, .sbs_lieu{ padding: 22px 16px 18px; margin: 1.8em 0; border-radius: 18px; }
	.sbs_jauges_titre, .sbs_frise_titre, .sbs_tarifs_titre{ font-size: 1.375rem; }
	.sbs_jauges{ grid-template-columns: 1fr 1fr; gap: 8px; }
	.sbs_jauge{ padding: 12px 12px 14px; }
	.sbs_jauge_valeur{ font-size: 1.875rem; white-space: normal; }
	.sbs_jauge_libelle{ font-size: .8125rem; }
	.sbs_jauge_unite{ letter-spacing: .02em; font-size: .75rem; }
	.sbs_jauge_valeur.efa-valeur-longue{ font-size: 1.5rem; }
	.sbs_etape{ grid-template-columns: 74px minmax(0, 1fr); column-gap: 12px; }
	.sbs_etape::before{ left: 36px; }
	.sbs_etape_date{ font-size: .75rem; padding: 5px 6px; }
	.sbs_tarif{ grid-template-columns: minmax(0, 1fr) auto; row-gap: 6px; }
	.sbs_tarif_barre{ grid-column: 1 / -1; grid-row: 2; }
	.sbs_lieu{ grid-template-columns: minmax(0, 1fr); border-left-width: 5px; }
	.sbs_lieu .sbs_lieu_carte{ grid-column: 1; grid-row: auto; justify-self: start; margin-top: 10px; }
}
