/*
Theme Name: Baliturismo
Theme URI: https://baliturismo.com
Author: Baliturismo
Description: Le guide francophone de Bali — itinéraires, budget, formalités et circuits avec chauffeur privé. Thème de code pur, écrit pour baliturismo.com.
Version: 1.0.0
Requires PHP: 8.0
Text Domain: baliturismo
*/

/* ==========================================================================
   0. JETONS DE DESIGN
   -- sb-* : variables exposées par les blocs figés (theme/blocs/), valeurs
      alignées sur DIRECTION-ARTISTIQUE.md §2. --sb-titre et --sb-texte sont
      utilisées EXCLUSIVEMENT comme familles de police dans les blocs figés
      (jamais comme couleur) : on leur donne donc les piles Kalnia/Mulish ;
      les couleurs de titre/texte courant vivent dans --sb-encre/--bt-corps.
   -- bt-* : jetons propres au site (hors blocs figés).
   ========================================================================== */
:root{
	/* blocs figés --sb-* (DA §2) */
	--sb-accent:        #C8154F;  /* hibiscus */
	--sb-accent-clair:  #FFB21A;  /* souci — aplats seulement */
	--sb-encre:         #1A221E;  /* pierre de lave */
	--sb-titre:         'Kalnia', serif;           /* police titraille des blocs figés */
	--sb-texte:         'Mulish', system-ui, sans-serif; /* police lecture des blocs figés */
	--sb-doux:          #56605A;  /* cendre */
	--sb-filet:         #D3D9C8;
	--sb-fond-carte:    #FFFFFF;
	--sb-surf:          #F3F5EC;  /* janur */
	--sb-fonce:         #16201B;  /* basalte */
	--sb-sur-fonce:     #F3F5EC;
	--sb-rayon:         2px;
	--sb-rayon-grand:   6px;
	--sb-ombre:         0 1px 0 #D3D9C8;
	--sb-ombre-forte:   0 14px 32px -18px rgba(22,32,27,.45);
	--sb-conteneur:     1320px;
	--sb-lecture:       700px;
	--sb-rail:          320px;
	--sb-gouttiere:     clamp(16px, 3vw, 40px);

	/* jetons propres au site */
	--bt-corps:         #2B332E;  /* lave fondue — texte courant */
	--bt-riz:           #2E7238;  /* saison sèche */
	--bt-mousson:       #1E5A86; /* saison des pluies */
	--bt-jalak:         #1D6FD8; /* masque de l'oiseau — jamais couleur d'interface */
	--bt-doux-fonce:    #AEB8B0; /* texte secondaire sur basalte */
	--bt-accent-fonce:  #FF7A9C; /* lien sur basalte */
	--bt-police-titre:  'Kalnia', serif;
	--bt-police-texte:  'Mulish', system-ui, sans-serif;
	--bt-police-orne:   'Noto Sans Balinese', serif;
}

/* ==========================================================================
   1. RESET SOBRE
   ========================================================================== */
*, *::before, *::after{ box-sizing: border-box; }
html{ -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
html, body{ overflow-x: clip; } /* jamais hidden : ne tue pas position:sticky */
body{
	margin: 0; background: var(--sb-surf); color: var(--bt-corps);
	font-family: var(--bt-police-texte); font-size: 18px; line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}
img, svg{ max-width: 100%; height: auto; display: block; }
a{ color: inherit; }
button{ font: inherit; }
ul{ margin: 0; padding: 0; }
h1,h2,h3,h4,h5,h6{ font-family: var(--bt-police-titre); color: var(--sb-encre); margin: 0 0 .5em; font-weight: 600; }
h1{ font-size: clamp(2.375rem, 1.6rem + 3vw, 4rem); line-height: 1.08; letter-spacing: -.01em; }
h2{ font-size: clamp(1.75rem, 1.4rem + 1.4vw, 2.5rem); line-height: 1.12; }
h3{ font-size: clamp(1.3125rem, 1.2rem + .4vw, 1.5rem); font-weight: 500; }
p{ margin: 0 0 1em; }
:focus-visible{ outline: 2px solid var(--sb-accent); outline-offset: 2px; }
.bt-skip{ position: absolute; left: -999px; top: 0; background: var(--sb-fonce); color: #fff; padding: 10px 16px; z-index: 200; }
.bt-skip:focus{ left: 8px; top: 8px; }

/* ==========================================================================
   2. MISE EN PAGE GÉNÉRALE
   ========================================================================== */
.bt-conteneur{ max-width: var(--sb-conteneur); margin-inline: auto; padding-inline: var(--sb-gouttiere); }
.bt-bande{ padding-block: 72px; }
@media (max-width: 760px){ .bt-bande{ padding-block: 48px; } }
.bt-bande--blanc{ background: var(--sb-fond-carte); }
.bt-bande--janur{ background: var(--sb-surf); }
.bt-bande--basalte{ background: var(--sb-fonce); color: var(--sb-sur-fonce); }
.bt-bande--basalte a{ color: var(--bt-accent-fonce); }
.bt-bande--souci{ background: var(--sb-accent-clair); color: var(--sb-encre); padding-block: 40px; }

/* Filigrane de courbes de niveau, très léger, sur les bandes janur (4.) */
.bt-bande--courbes{
	background-image: repeating-radial-gradient(circle at 92% 8%, transparent 0 46px, var(--sb-filet) 47px 48px, transparent 49px 94px);
	background-repeat: no-repeat; background-size: 640px 640px; background-position: 100% 0%;
}

/* ---- Procédé 1 : terrasses de subak — filet en trois marches sous les titres de section ---- */
.bt-terrasses{ position: relative; margin: 0 0 28px; padding-top: 22px; }
.bt-terrasses::before{
	content: ""; position: absolute; top: 0; left: 0; width: 60px; height: 1px; background: var(--sb-accent);
	box-shadow: 4px 8px 0 -0.5px var(--sb-filet), 8px 16px 0 -0.5px var(--sb-filet);
}
.bt-bande--basalte .bt-terrasses::before{ background: var(--sb-accent-clair); box-shadow: 4px 8px 0 -0.5px var(--bt-doux-fonce), 8px 16px 0 -0.5px var(--bt-doux-fonce); }
.bt-surtitre{
	display: block; font-family: var(--bt-police-texte); font-weight: 800; font-size: .75rem;
	text-transform: uppercase; letter-spacing: .12em; color: var(--sb-accent); margin-bottom: 10px;
}
.bt-bande--basalte .bt-surtitre{ color: var(--sb-accent-clair); }
.bt-entete-section{ display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: 36px; }
.bt-entete-section h2{ max-width: 46ch; }
.bt-tout-voir{ font-family: var(--bt-police-texte); font-weight: 800; font-size: .875rem; text-transform: uppercase; letter-spacing: .04em; color: var(--sb-accent); text-decoration: none; white-space: nowrap; }
.bt-tout-voir:hover{ text-decoration: underline; }

/* ---- Filets verticaux entre colonnes (grille à la Monocle) ---- */
.bt-filets{ display: grid; }
.bt-filets > *{ border-left: 1px solid var(--sb-filet); padding-left: var(--sb-gouttiere); }
.bt-filets > *:first-child{ border-left: 0; padding-left: 0; }
@media (max-width: 760px){
	.bt-filets > *{ border-left: 0; padding-left: 0; border-top: 1px solid var(--sb-filet); padding-top: 28px; margin-top: 28px; }
	.bt-filets > *:first-child{ border-top: 0; padding-top: 0; margin-top: 0; }
}

/* ---- Procédé 2 : chiffre balinais en filigrane ---- */
.bt-chiffre-bali{ font-family: var(--bt-police-orne); color: var(--sb-filet); font-weight: 400; margin-left: .3em; }
.bt-bande--basalte .bt-chiffre-bali{ color: var(--bt-doux-fonce); }
[aria-hidden="true"].bt-chiffre-bali{ user-select: none; }

/* ---- Procédé 3 : pastille-boussole du canang ---- */
.bt-boussole{ display: inline-flex; align-items: center; gap: 8px; font-family: var(--bt-police-texte); font-weight: 800; font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; }
.bt-boussole svg{ width: 28px; height: 28px; flex-shrink: 0; }
.bt-boussole-quadrant{ fill: rgba(255,255,255,.75); stroke: var(--sb-fonce); stroke-width: 1.4; }
.bt-boussole-quadrant.est-actif{ fill: var(--sb-accent-clair); }
.bt-boussole-losange{ fill: var(--sb-accent-clair); stroke: var(--sb-fonce); stroke-width: 1.4; }

/* ---- Procédé 4 : lisière endek (max. 2 par page) ---- */
.bt-lisiere{
	height: 14px;
	background-image:
		repeating-linear-gradient(90deg, var(--sb-accent) 0 6px, var(--sb-accent-clair) 6px 10px, var(--sb-fonce) 10px 16px, var(--sb-surf) 16px 20px);
	clip-path: polygon(0 0,2% 100%,4% 0,6% 100%,8% 0,10% 100%,12% 0,14% 100%,16% 0,18% 100%,20% 0,22% 100%,24% 0,26% 100%,28% 0,30% 100%,32% 0,34% 100%,36% 0,38% 100%,40% 0,42% 100%,44% 0,46% 100%,48% 0,50% 100%,52% 0,54% 100%,56% 0,58% 100%,60% 0,62% 100%,64% 0,66% 100%,68% 0,70% 100%,72% 0,74% 100%,76% 0,78% 100%,80% 0,82% 100%,84% 0,86% 100%,88% 0,90% 100%,92% 0,94% 100%,96% 0,98% 100%,100% 0,100% 100%,0 100%);
}

/* ---- Procédé 5 : porte fendue (candi bentar) — coins hauts en 3 marches ---- */
.bt-porte-fendue{
	clip-path: polygon(0 18px,14% 18px,14% 9px,20% 9px,20% 0,80% 0,80% 9px,86% 9px,86% 18px,100% 18px,100% 100%,0 100%);
}

/* ---- Boutons ---- */
.sbt-btn{ font-family: var(--bt-police-texte); }
.bt-btn-souci{
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 13px 26px; border-radius: 999px; font-weight: 800; font-size: .9375rem;
	background: var(--sb-accent-clair); color: var(--sb-encre); text-decoration: none; border: 0; cursor: pointer;
}
.bt-btn-fantome-clair{
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 12px 24px; border-radius: 999px; font-weight: 700; font-size: .9375rem;
	background: transparent; color: var(--sb-sur-fonce); text-decoration: none; border: 1.5px solid rgba(243,245,236,.4);
}

/* ==========================================================================
   3. EN-TÊTE / NAVIGATION (P-004 : flex, sans puces)
   ========================================================================== */
.bt-header{
	position: sticky; top: 0; z-index: 60; background: var(--sb-fond-carte);
	border-bottom: 1px solid var(--sb-filet); transition: padding .2s ease;
}
.bt-header-inner{ max-width: var(--sb-conteneur); margin-inline: auto; padding: 16px var(--sb-gouttiere); display: flex; align-items: center; gap: 32px; }
.bt-logo{ display: flex; align-items: center; gap: 10px; text-decoration: none; flex-shrink: 0; }
.bt-logo svg, .bt-logo img{ height: 38px; width: auto; }
.bt-nav{ display: flex; align-items: center; gap: 28px; flex: 1; list-style: none; }
.bt-nav a{ font-weight: 600; font-size: .9375rem; text-decoration: none; color: var(--sb-encre); white-space: nowrap; }
.bt-nav a:hover, .bt-nav a[aria-current="page"]{ color: var(--sb-accent); }
.bt-header-actions{ display: flex; align-items: center; gap: 14px; margin-left: auto; }
.bt-burger{ display: none; background: none; border: 0; cursor: pointer; padding: 8px; }
.bt-burger span, .bt-burger span::before, .bt-burger span::after{ content: ""; display: block; width: 22px; height: 2px; background: var(--sb-encre); position: relative; transition: transform .2s; }
.bt-burger span::before{ position: absolute; top: -7px; }
.bt-burger span::after{ position: absolute; top: 7px; }

.bt-drawer{ position: fixed; inset: 0; z-index: 90; background: var(--sb-fonce); color: var(--sb-sur-fonce); display: none; overflow-y: auto; padding: 24px var(--sb-gouttiere) 40px; }
.bt-drawer.est-ouvert{ display: block; }
.bt-drawer-haut{ display: flex; justify-content: space-between; align-items: center; margin-bottom: 32px; }
.bt-drawer-fermer{ background: none; border: 0; color: #fff; width: 40px; height: 40px; cursor: pointer; }
.bt-drawer-liste{ list-style: none; display: flex; flex-direction: column; gap: 4px; }
.bt-drawer-item{ display: flex; align-items: center; gap: 16px; padding: 14px 0; border-bottom: 1px solid rgba(243,245,236,.12); text-decoration: none; color: inherit; }
.bt-drawer-item img{ width: 56px; height: 56px; object-fit: cover; border-radius: var(--sb-rayon); flex-shrink: 0; }
.bt-drawer-item span{ font-family: var(--bt-police-titre); font-size: 2rem; }
.bt-drawer .sbt-btn{ margin-top: 20px; width: 100%; justify-content: center; }

@media (max-width: 900px){
	.bt-nav{ display: none; }
	.bt-header-actions .bt-btn-devis-entete{ display: none; }
	.bt-burger{ display: block; }
}

/* ==========================================================================
   4. ACCUEIL — §6 DA
   ========================================================================== */

/* 6.1 — La « une » */
.bt-hero{ padding-block: 56px 72px; }
.bt-hero-grille{ display: grid; grid-template-columns: 5fr 4fr 3fr; gap: 0; align-items: stretch; }
.bt-hero-a{ padding-right: var(--sb-gouttiere); display: flex; flex-direction: column; }
.bt-hero-a h1{ margin-top: 14px; }
.bt-hero-chapo{ font-size: clamp(1.0625rem, 1rem + .3vw, 1.3125rem); color: var(--bt-corps); max-width: 42ch; margin: 18px 0 24px; }
.bt-preuves{ display: flex; flex-wrap: wrap; gap: 22px; margin-bottom: 26px; list-style: none; }
.bt-preuve{ display: flex; align-items: center; gap: 8px; font-size: .875rem; color: var(--sb-doux); }
.bt-preuve svg{ width: 18px; height: 18px; color: var(--sb-accent); flex-shrink: 0; }
.bt-preuve b{ color: var(--sb-encre); font-family: var(--bt-police-titre); font-weight: 600; }

.bt-mini-devis{
	background: var(--sb-fond-carte); border-radius: var(--sb-rayon-grand); box-shadow: var(--sb-ombre-forte);
	padding: 22px; margin-top: auto;
}
.bt-mini-devis-grille{ display: flex; flex-wrap: wrap; gap: 12px; }
.bt-champ{ display: flex; flex-direction: column; gap: 6px; flex: 1 1 140px; min-width: 0; }
.bt-champ label{ font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--sb-doux); }
.bt-champ input, .bt-champ select, .bt-champ textarea{
	border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); padding: 11px 12px;
	font-family: var(--bt-police-texte); font-size: .9375rem; background: var(--sb-fond-carte); color: var(--sb-encre); width: 100%;
}
.bt-champ input:focus, .bt-champ select:focus, .bt-champ textarea:focus{ border-color: var(--sb-accent); }
.bt-mini-devis .sbt-btn{ width: 100%; margin-top: 14px; justify-content: center; }
.sbt-rail-carte .bt-mini-devis{ box-shadow: none; padding: 0; margin-top: 4px; }
.bt-carte-devis-pleine .bt-mini-devis{ box-shadow: none; padding: 16px; }
.bt-carte-devis-pleine .bt-mini-devis .bt-rgpd{ color: var(--bt-doux-fonce); }
.bt-carte-devis-pleine .bt-mini-devis .bt-rgpd a{ color: var(--bt-accent-fonce); }

.bt-hero-b{ padding-inline: var(--sb-gouttiere); border-left: 1px solid var(--sb-filet); border-right: 1px solid var(--sb-filet); display: flex; flex-direction: column; }
.bt-hero-photo{ position: relative; aspect-ratio: 4/5; overflow: hidden; border-radius: var(--sb-rayon); }
.bt-hero-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-hero-photo .bt-boussole{ position: absolute; top: 14px; left: 14px; background: var(--sb-fonce); color: #fff; padding: 6px 10px; border-radius: var(--sb-rayon); }
.bt-hero-legende{ font-size: .8125rem; color: var(--sb-doux); margin-top: 10px; }

.bt-fil-bali{ background: var(--sb-fonce); color: var(--sb-sur-fonce); padding: 22px; border-radius: var(--sb-rayon); display: flex; flex-direction: column; gap: 16px; margin-left: var(--sb-gouttiere); }
.bt-fil-bali-titre{ font-family: var(--bt-police-texte); font-weight: 800; text-transform: uppercase; font-size: .8125rem; letter-spacing: .08em; color: var(--sb-accent-clair); margin: 0; }
.bt-fil-item{ display: flex; gap: 12px; text-decoration: none; color: inherit; align-items: flex-start; }
.bt-fil-item img{ width: 64px; height: 36px; object-fit: cover; border-radius: var(--sb-rayon); flex-shrink: 0; }
.bt-fil-sur{ display: block; font-size: .6875rem; text-transform: uppercase; letter-spacing: .06em; color: var(--sb-accent-clair); margin-bottom: 3px; }
.bt-fil-titre{ font-size: .9375rem; font-weight: 600; line-height: 1.3; margin: 0; }
.bt-fil-date{ font-size: .75rem; color: var(--bt-doux-fonce); }
.bt-fil-bali .bt-tout-voir{ color: var(--sb-accent-clair); }

@media (max-width: 1080px){
	.bt-hero-grille{ grid-template-columns: 1fr; }
	.bt-hero-b{ border: 0; padding-inline: 0; margin-top: 28px; }
	.bt-fil-bali{ margin-left: 0; margin-top: 28px; }
}

/* 6.2 — Chiffres de l'île */
.bt-chiffres-grille{ display: grid; grid-template-columns: repeat(4, 1fr); }
.bt-chiffre{ padding: 8px var(--sb-gouttiere) 8px 0; text-decoration: none; color: inherit; display: block; }
.bt-chiffre-valeur{ font-family: var(--bt-police-titre); font-weight: 200; font-stretch: 125%; font-size: clamp(3.5rem, 2.6rem + 3vw, 6rem); line-height: 1; border-bottom: 6px solid var(--sb-accent-clair); display: inline-block; padding-bottom: 4px; color: var(--sb-encre); }
.bt-chiffre-unite{ display: block; margin-top: 10px; font-family: var(--bt-police-texte); font-weight: 800; text-transform: uppercase; font-size: .75rem; letter-spacing: .06em; color: var(--sb-doux); }
.bt-chiffre-explication{ font-size: .875rem; color: var(--sb-doux); margin-top: 6px; }
@media (max-width: 760px){ .bt-chiffres-grille{ grid-template-columns: repeat(2, 1fr); gap: 28px 0; } }

/* 6.3 — Bali par région, carte en relief (procédé 6) */
.bt-regions-grille{ display: grid; grid-template-columns: 7fr 5fr; gap: var(--sb-gouttiere); align-items: start; }
.bt-carte-relief{ position: relative; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon-grand); padding: 12px; }
.bt-carte-relief svg{ width: 100%; height: auto; }
.bt-carte-relief .bt-releve{ fill: none; stroke: var(--sb-filet); stroke-width: 1; }
.bt-carte-relief .bt-cote{ fill: var(--sb-surf); stroke: var(--sb-doux); stroke-width: 1.5; }
.bt-carte-relief .bt-volcan{ fill: var(--sb-accent); }
.bt-etiquette{ position: absolute; transform: translate(-50%, -50%); background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: 999px; padding: 5px 10px 5px 5px; display: flex; align-items: center; gap: 6px; text-decoration: none; color: var(--sb-encre); font-size: .75rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; box-shadow: var(--sb-ombre); cursor: pointer; }
.bt-etiquette svg{ width: 18px; height: 18px; }
.bt-etiquette:hover, .bt-etiquette:focus-visible, .bt-etiquette[aria-current="true"]{ border-color: var(--sb-accent); color: var(--sb-accent); }

.bt-region-panneau{ background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon-grand); overflow: hidden; }
.bt-region-panneau img{ aspect-ratio: 3/2; object-fit: cover; width: 100%; }
.bt-region-panneau-corps{ padding: 20px; }
.bt-region-panneau-corps p{ font-size: .9375rem; color: var(--sb-doux); margin: 10px 0 14px; }
.bt-region-panneau-corps a{ font-weight: 800; color: var(--sb-accent); text-decoration: none; font-size: .875rem; }

.bt-regions-liste-mobile{ display: none; list-style: none; margin-top: 20px; flex-direction: column; gap: 10px; }
.bt-regions-liste-mobile a{ display: flex; align-items: center; gap: 14px; text-decoration: none; color: inherit; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); padding: 10px; }
.bt-regions-liste-mobile img{ width: 88px; height: 88px; object-fit: cover; border-radius: var(--sb-rayon); flex-shrink: 0; }
.bt-regions-liste-mobile strong{ display: block; font-family: var(--bt-police-titre); font-size: 1.0625rem; }
.bt-regions-liste-mobile small{ color: var(--sb-doux); }

@media (max-width: 820px){
	.bt-regions-grille{ grid-template-columns: 1fr; }
	.bt-region-panneau{ display: none; }
	.bt-regions-liste-mobile{ display: flex; }
}
.bt-aussi-lombok{ margin-top: 18px; display: flex; align-items: center; gap: 14px; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); padding: 12px; text-decoration: none; color: inherit; }
.bt-aussi-lombok img{ width: 72px; height: 54px; object-fit: cover; border-radius: var(--sb-rayon); }
.bt-aussi-lombok span{ font-size: .875rem; color: var(--sb-doux); }
.bt-aussi-lombok b{ display: block; color: var(--sb-encre); font-family: var(--bt-police-titre); }

/* 6.4 — Itinéraires */
.bt-itineraires-grille{ display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sb-gouttiere); }
.bt-carte-itineraire{ display: block; text-decoration: none; color: inherit; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); overflow: hidden; }
.bt-carte-itineraire-photo{ position: relative; aspect-ratio: 3/2; overflow: hidden; }
.bt-carte-itineraire-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-carte-itineraire-photo .bt-boussole{ position: absolute; top: 10px; left: 10px; background: var(--sb-fonce); color: #fff; padding: 5px 9px; border-radius: var(--sb-rayon); }
.bt-carte-itineraire-corps{ padding: 18px; }
.bt-duree{ font-family: var(--bt-police-titre); font-weight: 200; font-stretch: 125%; font-size: 2.5rem; color: var(--sb-encre); line-height: 1; }
.bt-duree-unite{ font-family: var(--bt-police-texte); font-size: .75rem; font-weight: 800; text-transform: uppercase; color: var(--sb-doux); margin-left: 4px; }
.bt-etapes-ligne{ display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin: 10px 0 12px; font-size: .78125rem; color: var(--sb-doux); }
.bt-etapes-ligne span:not(:last-child)::after{ content: "—"; margin-left: 4px; color: var(--sb-filet); }
.bt-carte-itineraire-corps > a{ font-size: .8125rem; font-weight: 800; color: var(--sb-accent); text-decoration: none; }
@media (max-width: 1080px){ .bt-itineraires-grille{ grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px){ .bt-itineraires-grille{ grid-template-columns: 1fr; } }

/* 6.5 — Bloc devis basalte */
.bt-devis-bloc{ display: grid; grid-template-columns: 6fr 6fr; gap: 48px; align-items: center; }
.bt-devis-texte svg{ width: 96px; height: 96px; margin-bottom: 18px; }
.bt-devis-texte h2{ color: var(--sb-sur-fonce); }
.bt-devis-etapes{ list-style: none; margin: 24px 0 0; display: flex; flex-direction: column; gap: 16px; }
.bt-devis-etapes li{ display: flex; align-items: baseline; gap: 12px; font-size: .9375rem; color: var(--bt-doux-fonce); }
.bt-devis-etapes b{ font-family: var(--bt-police-titre); font-weight: 600; font-size: 1.25rem; color: var(--sb-accent-clair); flex-shrink: 0; }
.bt-devis-carte{ background: var(--sb-fond-carte); border-radius: var(--sb-rayon-grand); padding: 28px; color: var(--sb-encre); }
.bt-devis-carte h3{ margin-bottom: 4px; }
.bt-devis-cases{ display: flex; flex-wrap: wrap; gap: 8px; }
.bt-case{ display: flex; align-items: center; gap: 6px; font-size: .8125rem; background: var(--sb-surf); border: 1px solid var(--sb-filet); border-radius: 999px; padding: 6px 12px; cursor: pointer; }
.bt-case input{ accent-color: var(--sb-accent); }
.bt-devis-carte .bt-btn-souci{ width: 100%; margin-top: 16px; }
.bt-rgpd{ font-size: .75rem; color: var(--sb-doux); margin-top: 10px; }
.bt-rgpd a{ color: var(--sb-accent); }
@media (max-width: 900px){ .bt-devis-bloc{ grid-template-columns: 1fr; } .bt-devis-texte svg{ width: 72px; height: 72px; } }

/* 6.6 — Quand partir, frise des 12 mois */
.bt-frise-mois{ list-style: none; display: grid; grid-template-columns: repeat(12, 1fr); gap: 6px; margin: 0 0 36px; }
.bt-mois{ aspect-ratio: 1/1.15; border-radius: var(--sb-rayon); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: #fff; text-align: center; }
.bt-mois--sec{ background: var(--bt-riz); }
.bt-mois--pluie{ background: var(--bt-mousson); }
.bt-mois-initiale{ font-family: var(--bt-police-titre); font-weight: 200; font-stretch: 125%; font-size: 1.75rem; }
.bt-mois-nom{ font-size: .625rem; text-transform: uppercase; letter-spacing: .04em; opacity: .9; }
.bt-mois-fete{ width: 14px; height: 14px; }
.bt-legende-saisons{ display: flex; gap: 20px; font-size: .8125rem; color: var(--sb-doux); margin: -24px 0 36px; flex-wrap: wrap; }
.bt-legende-saisons span{ display: inline-flex; align-items: center; gap: 6px; }
.bt-pastille-saison{ width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.bt-encarts-saisons{ display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sb-gouttiere); }
.bt-encart-saison{ background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); padding: 20px; }
.bt-encart-saison img{ aspect-ratio: 1/1; object-fit: cover; border-radius: var(--sb-rayon); margin-bottom: 12px; }
@media (max-width: 760px){ .bt-frise-mois{ grid-template-columns: repeat(6, 1fr); grid-template-rows: repeat(2, 1fr); } .bt-encarts-saisons{ grid-template-columns: 1fr; } }

/* 6.7 — Budget en barres */
.bt-budget-grille{ display: grid; grid-template-columns: repeat(3, 1fr); }
.bt-budget-col h3{ margin-bottom: 6px; }
.bt-budget-montant{ font-family: var(--bt-police-titre); font-weight: 200; font-stretch: 125%; font-size: 2.75rem; color: var(--sb-accent); font-variant-numeric: tabular-nums; }
.bt-budget-montant small{ font-family: var(--bt-police-texte); font-size: .8125rem; font-weight: 700; color: var(--sb-doux); }
.bt-postes{ list-style: none; margin: 20px 0 16px; display: flex; flex-direction: column; gap: 10px; }
.bt-poste{ display: grid; grid-template-columns: 90px 1fr; align-items: center; gap: 10px; font-size: .8125rem; color: var(--sb-doux); }
.bt-poste-barre{ height: 8px; border-radius: 4px; background: var(--sb-surf); overflow: hidden; }
.bt-poste-barre span{ display: block; height: 100%; background: var(--sb-accent-clair); border-radius: 4px; }
.bt-budget-col > a{ font-size: .8125rem; font-weight: 800; color: var(--sb-accent); text-decoration: none; }
@media (max-width: 760px){ .bt-budget-grille{ grid-template-columns: 1fr; gap: 32px; } }

/* 6.8 — Bande citation souci */
.bt-citation{ max-width: 860px; margin-inline: auto; text-align: center; }
.bt-citation blockquote{ font-family: var(--bt-police-titre); font-weight: 600; font-size: clamp(1.375rem, 1.1rem + 1vw, 2.25rem); margin: 0 0 20px; line-height: 1.3; }
.bt-citation-auteur{ display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: var(--sb-encre); }
.bt-citation-auteur img{ width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.bt-citation-auteur span{ font-weight: 700; font-size: .9375rem; }

/* 6.9 — Culture, rangée façon Monocle */
.bt-culture-grille{ display: grid; grid-template-columns: 6fr 6fr; gap: var(--sb-gouttiere); }
.bt-culture-une{ display: block; text-decoration: none; color: inherit; }
.bt-culture-une-photo{ aspect-ratio: 3/2; overflow: hidden; border-radius: var(--sb-rayon); margin-bottom: 14px; }
.bt-culture-une-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-culture-petites{ display: flex; flex-direction: column; gap: 18px; }
.bt-culture-petite{ display: grid; grid-template-columns: 96px 1fr; gap: 14px; text-decoration: none; color: inherit; align-items: center; }
.bt-culture-petite img{ aspect-ratio: 4/3; object-fit: cover; border-radius: var(--sb-rayon); width: 96px; }
.bt-culture-petite h3{ font-size: 1.0625rem; margin: 0; }
@media (max-width: 820px){ .bt-culture-grille{ grid-template-columns: 1fr; } }

/* 6.10 — Auteurs */
.bt-auteurs-rangee{ display: flex; gap: var(--sb-gouttiere); flex-wrap: wrap; }
.bt-carte-auteur{ display: flex; flex-direction: column; align-items: center; text-align: center; text-decoration: none; color: inherit; flex: 1 1 200px; }
.bt-carte-auteur img{ width: 120px; height: 120px; border-radius: 50%; object-fit: cover; margin-bottom: 14px; }
.bt-carte-auteur strong{ font-family: var(--bt-police-titre); font-size: 1.125rem; }
.bt-carte-auteur span{ display: block; font-size: .8125rem; color: var(--sb-doux); margin-top: 2px; }

/* ==========================================================================
   5. PAGE RUBRIQUE — §7 DA
   ========================================================================== */
.bt-rubrique-entete{ display: grid; grid-template-columns: 7fr 5fr; gap: var(--sb-gouttiere); align-items: center; }
.bt-rubrique-entete-photo{ border-radius: var(--sb-rayon); overflow: hidden; aspect-ratio: 3/2; position: relative; }
.bt-rubrique-entete-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-compteur{ font-size: .875rem; color: var(--sb-doux); margin-top: 10px; }
.bt-filtres{ display: flex; flex-wrap: wrap; gap: 10px; margin: 36px 0; list-style: none; }
.bt-filtre{ border: 1px solid var(--sb-filet); border-radius: 999px; padding: 9px 18px; font-size: .8125rem; font-weight: 600; background: var(--sb-fond-carte); color: var(--sb-encre); cursor: pointer; }
.bt-filtre[aria-pressed="true"]{ background: var(--sb-accent); border-color: var(--sb-accent); color: #fff; }
.bt-a-la-une{ display: grid; grid-template-columns: 7fr 5fr; gap: var(--sb-gouttiere); background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); overflow: hidden; margin-bottom: 48px; text-decoration: none; color: inherit; }
.bt-a-la-une-photo{ aspect-ratio: 16/9; overflow: hidden; }
.bt-a-la-une-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-a-la-une-corps{ padding: 28px var(--sb-gouttiere) 28px 0; display: flex; flex-direction: column; justify-content: center; }
.bt-grille-rubrique{ display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sb-gouttiere); }
.bt-carte-article{ display: block; text-decoration: none; color: inherit; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); overflow: hidden; }
.bt-carte-article-photo{ position: relative; aspect-ratio: 3/2; overflow: hidden; }
.bt-carte-article-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-carte-article-photo .bt-boussole{ position: absolute; top: 10px; left: 10px; background: var(--sb-fonce); color: #fff; padding: 5px 9px; border-radius: var(--sb-rayon); }
.bt-carte-article-corps{ padding: 18px; }
.bt-carte-article-corps h3{ font-size: 1.25rem; margin: 10px 0 8px; }
.bt-carte-article-chapo{ font-size: .875rem; color: var(--sb-doux); margin-bottom: 10px; }
.bt-carte-article-meta{ font-size: .75rem; color: var(--sb-doux); display: flex; gap: 6px; align-items: center; }
.bt-carte-devis-pleine{ grid-column: 1 / -1; background: var(--sb-fonce); color: var(--sb-sur-fonce); border-radius: var(--sb-rayon); padding: 28px; display: flex; align-items: center; gap: 24px; flex-wrap: wrap; justify-content: space-between; }
.bt-carte-devis-pleine svg{ width: 56px; height: 56px; flex-shrink: 0; }
.bt-carte-devis-pleine p{ margin: 0; flex: 1; min-width: 200px; }
.bt-afficher-plus{ display: block; margin: 40px auto 0; background: var(--sb-fond-carte); border: 1.5px solid var(--sb-filet); border-radius: 999px; padding: 13px 32px; font-weight: 700; cursor: pointer; }
.bt-pied-rubrique{ margin-top: 64px; }
.bt-tuiles-rubriques{ display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; }
.bt-tuile-rubrique{ position: relative; aspect-ratio: 4/3; border-radius: var(--sb-rayon); overflow: hidden; text-decoration: none; }
.bt-tuile-rubrique img{ width: 100%; height: 100%; object-fit: cover; }
.bt-tuile-rubrique span{ position: absolute; inset: auto 0 0 0; padding: 14px; background: linear-gradient(0deg, rgba(22,32,27,.85), transparent); color: #fff; font-family: var(--bt-police-titre); font-weight: 600; }

@media (max-width: 980px){ .bt-rubrique-entete, .bt-a-la-une{ grid-template-columns: 1fr; } .bt-grille-rubrique{ grid-template-columns: repeat(2,1fr); } .bt-tuiles-rubriques{ grid-template-columns: repeat(3,1fr); } }
@media (max-width: 600px){ .bt-grille-rubrique{ grid-template-columns: 1fr; } .bt-tuiles-rubriques{ grid-template-columns: repeat(2,1fr); } }

/* ==========================================================================
   6. INFOGRAPHIES DU SOCLE (sbs_*) — habillage thématique
   ========================================================================== */
sbs-lieu, .sbs_lieu{ display: block; background: var(--sb-surf); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon-grand); padding: 18px 20px; margin: 1.6em 0; }
.sbs_lieu_nom{ display: block; font-family: var(--bt-police-titre); font-size: 1.125rem; margin-bottom: 6px; }
.sbs_lieu_adresse{ display: block; font-style: normal; color: var(--sb-doux); font-size: .9375rem; margin-bottom: 4px; }
.sbs_lieu_acces{ display: block; color: var(--sb-doux); margin-bottom: 8px; }
.sbs_lieu_carte{ display: inline-flex; align-items: center; gap: 6px; color: var(--sb-accent); font-weight: 700; font-size: .875rem; text-decoration: none; }
.sbs_icone_repere{ fill: var(--sb-accent); }

sbs-tarifs, .sbs_tarifs{ display: block; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon-grand); padding: 22px 24px; margin: 1.8em 0; }
.sbs_tarifs_titre{ display: block; font-family: var(--bt-police-titre); font-size: 1.0625rem; margin-bottom: 14px; }
sbs-tarif, .sbs_tarif{ display: block; margin-bottom: 14px; }
.sbs_tarif_libelle{ display: block; font-size: .875rem; color: var(--sb-doux); margin-bottom: 4px; }
.sbs_tarif_barre{ width: 100%; height: 10px; accent-color: var(--sb-accent-clair); }
.sbs_tarif_barre::-webkit-meter-bar{ background: var(--sb-surf); border-radius: 6px; border: 0; }
.sbs_tarif_barre::-webkit-meter-optimum-value{ background: var(--sb-accent-clair); border-radius: 6px; }
.sbs_tarifs_notes{ display: block; margin-top: 10px; color: var(--sb-doux); font-size: .8125rem; }

sbs-frise, .sbs_frise{ display: block; margin: 1.8em 0; border-left: 2px solid var(--sb-filet); padding-left: 24px; }
.sbs_frise_titre{ display: block; font-family: var(--bt-police-titre); font-size: 1.0625rem; margin-bottom: 16px; }
sbs-etape, .sbs_etape{ display: block; position: relative; padding-bottom: 20px; }
sbs-etape::before, .sbs_etape::before{ content: ""; position: absolute; left: -29px; top: 4px; width: 10px; height: 10px; border-radius: 50%; background: var(--sb-accent); }
.sbs_etape_date{ display: block; font-weight: 800; font-size: .8125rem; color: var(--sb-accent); text-transform: uppercase; letter-spacing: .04em; }
.sbs_etape_titre{ display: block; font-family: var(--bt-police-titre); margin: 2px 0; }
.sbs_etape_desc{ display: block; color: var(--sb-doux); font-size: .9375rem; }

sbs-jauges, .sbs_jauges{ display: grid; grid-template-columns: repeat(auto-fit, minmax(140px,1fr)); gap: 18px; margin: 1.8em 0; }
.sbs_jauges_titre{ grid-column: 1/-1; display: block; font-family: var(--bt-police-titre); font-size: 1.0625rem; }
sbs-jauge, .sbs_jauge{ display: block; background: var(--sb-surf); border-radius: var(--sb-rayon); padding: 16px; text-align: center; }
.sbs_jauge_valeur{ display: block; font-family: var(--bt-police-titre); font-weight: 200; font-stretch: 125%; font-size: 2rem; color: var(--sb-accent); }
.sbs_jauge_unite{ display: inline; font-size: .8125rem; margin-left: 2px; color: var(--sb-doux); }
.sbs_jauge_libelle{ display: block; font-size: .78125rem; color: var(--sb-doux); margin-top: 4px; }
.sbs_source{ display: block; margin-top: 10px; font-size: .75rem; color: var(--sb-doux); }

/* ==========================================================================
   7. HABILLAGE FIN DES BLOCS FIGÉS (via classes réelles, structure intacte)
   ========================================================================== */
.sbt-article-corps{ color: var(--bt-corps); }
.sbt-article-corps h2{ position: relative; padding-top: 20px; }
.sbt-article-corps h2::before{ content: ""; position: absolute; top: 0; left: 0; width: 44px; height: 1px; background: var(--sb-accent); box-shadow: 4px 6px 0 -0.5px var(--sb-filet), 8px 12px 0 -0.5px var(--sb-filet); }
.sbt-encadre--retenir{ border-left: 4px solid var(--sb-accent-clair); }
.sbt-sommaire-num{ font-family: var(--bt-police-orne); }

/* ==========================================================================
   8. PAGES ANNEXES
   ========================================================================== */
.bt-lecture{ max-width: var(--sb-lecture); margin-inline: auto; padding-block: 56px 80px; }
.bt-lecture h1{ margin-bottom: 8px; }
.bt-lecture .bt-maj{ color: var(--sb-doux); font-size: .875rem; margin-bottom: 32px; }
.bt-lecture-corps{ font-size: 1.0625rem; line-height: 1.75; }
.bt-lecture-corps h2{ margin-top: 2.2em; position: relative; padding-top: 20px; }
.bt-lecture-corps h2::before{ content: ""; position: absolute; top: 0; left: 0; width: 44px; height: 1px; background: var(--sb-accent); box-shadow: 4px 6px 0 -0.5px var(--sb-filet), 8px 12px 0 -0.5px var(--sb-filet); }

/* Contact (CO-007 : tient dans 1440) */
.bt-contact-entete{ padding-block: 44px; }
.bt-contact-entete svg{ width: 64px; height: 64px; margin-bottom: 12px; }
.bt-contact-grille{ display: grid; grid-template-columns: 8fr 4fr; gap: var(--sb-gouttiere); padding-block: 48px 64px; }
.bt-contact-colonne-droite{ display: flex; flex-direction: column; gap: 24px; }
.bt-comment-ca-se-passe{ list-style: none; display: flex; flex-direction: column; gap: 14px; background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); padding: 20px; }
.bt-comment-ca-se-passe li{ display: flex; gap: 12px; font-size: .9375rem; }
.bt-comment-ca-se-passe b{ font-family: var(--bt-police-titre); font-weight: 600; color: var(--sb-accent); flex-shrink: 0; }
.bt-contact-photo{ border-radius: var(--sb-rayon); overflow: hidden; aspect-ratio: 3/2; }
.bt-contact-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-contact-form{ background: var(--sb-fond-carte); border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon-grand); padding: 28px; }
.bt-contact-form .bt-champ{ margin-bottom: 16px; }
@media (max-width: 900px){ .bt-contact-grille{ grid-template-columns: 1fr; } }

/* Devis multi-étapes */
.bt-devis-entete{ padding-block: 48px; text-align: center; }
.bt-devis-entete svg{ width: 72px; height: 72px; margin: 0 auto 14px; }
.bt-progression{ display: flex; justify-content: center; gap: 0; margin: 28px auto 0; max-width: 460px; }
.bt-progression li{ flex: 1; text-align: center; list-style: none; position: relative; }
.bt-progression li:not(:last-child)::after{ content: ""; position: absolute; top: 15px; left: 55%; width: 90%; height: 1px; background: rgba(243,245,236,.3); }
.bt-progression-num{ width: 30px; height: 30px; border-radius: 50%; background: rgba(243,245,236,.15); display: flex; align-items: center; justify-content: center; margin: 0 auto 6px; font-family: var(--bt-police-orne); position: relative; z-index: 1; }
.bt-progression li[aria-current="step"] .bt-progression-num, .bt-progression li.est-fait .bt-progression-num{ background: var(--sb-accent-clair); color: var(--sb-encre); }
.bt-progression span{ font-size: .75rem; }

.bt-devis-page{ padding-block: 48px 72px; }
.bt-devis-form{ max-width: 760px; margin: 0 auto; background: var(--sb-fond-carte); border-radius: var(--sb-rayon-grand); box-shadow: var(--sb-ombre-forte); padding: 36px; }
.bt-etape-form{ margin-bottom: 36px; padding-bottom: 32px; border-bottom: 1px solid var(--sb-filet); }
.bt-etape-form:last-of-type{ border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
.bt-etape-form h2{ display: flex; align-items: baseline; gap: 10px; font-size: 1.375rem; }
.bt-etape-form .bt-ligne-champs{ display: flex; flex-wrap: wrap; gap: 16px; margin-top: 18px; }
.bt-etape-form .bt-champ{ flex: 1 1 200px; }
.bt-devis-form .bt-devis-cases{ margin-top: 8px; }
.bt-confirmation{ max-width: 640px; margin: 0 auto; text-align: center; background: var(--sb-fond-carte); border-radius: var(--sb-rayon-grand); box-shadow: var(--sb-ombre-forte); padding: 48px 36px; }
.bt-confirmation svg{ width: 96px; height: 96px; margin: 0 auto 16px; }
.bt-recap{ text-align: left; list-style: none; background: var(--sb-surf); border-radius: var(--sb-rayon); padding: 18px 22px; margin: 20px 0; display: flex; flex-direction: column; gap: 8px; font-size: .9375rem; }
.bt-recap b{ color: var(--sb-doux); font-weight: 700; margin-right: 6px; }

/* À propos */
.bt-apropos-entete{ display: grid; grid-template-columns: 6fr 6fr; gap: var(--sb-gouttiere); align-items: center; padding-block: 56px; }
.bt-apropos-entete img{ border-radius: var(--sb-rayon); aspect-ratio: 4/3; object-fit: cover; }
.bt-apropos-colonnes{ display: grid; grid-template-columns: repeat(3,1fr); gap: var(--sb-gouttiere); padding-block: 56px; }
@media (max-width: 900px){ .bt-apropos-entete{ grid-template-columns: 1fr; } .bt-apropos-colonnes{ grid-template-columns: 1fr; } }

/* Page auteur */
.bt-auteur-entete{ display: grid; grid-template-columns: 4fr 8fr; gap: var(--sb-gouttiere); padding-block: 56px; align-items: start; }
.bt-auteur-entete-photo{ aspect-ratio: 3/4; overflow: hidden; border-radius: var(--sb-rayon); }
.bt-auteur-entete-photo img{ width: 100%; height: 100%; object-fit: cover; }
.bt-auteur-entete-corps p{ color: var(--sb-doux); }
.bt-auteur-pastilles{ display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }
@media (max-width: 760px){ .bt-auteur-entete{ grid-template-columns: 1fr; } }

/* 404 / recherche */
.bt-404{ text-align: center; padding-block: 90px; }
.bt-404 svg{ width: 140px; height: 140px; margin: 0 auto 20px; }
.bt-404-recherche{ max-width: 420px; margin: 24px auto 0; display: flex; gap: 8px; }
.bt-404-recherche input{ flex: 1; border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon); padding: 12px 16px; }
.bt-404-rubriques{ display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 32px; }

.bt-archive-entete{ padding-block: 48px; text-align: center; }

/* ==========================================================================
   9. RESPONSIVE 390
   ========================================================================== */
@media (max-width: 760px){
	.bt-header-inner{ padding-block: 12px; }
	.bt-chiffres-grille{ text-align: center; }
	.bt-devis-bloc{ text-align: left; }
	.bt-grille-rubrique, .bt-itineraires-grille{ grid-template-columns: 1fr; }
	.bt-a-la-une-corps{ padding: 20px; }
	.sbs_jauges{ grid-template-columns: repeat(2,1fr); }
}

/* Sources en fin d'article : nom du document + date, sans lien sortant */
.bt-source{position:relative;margin:0 0 .5rem;padding:.7rem 1rem .7rem 2.6rem;background:var(--sb-fond-carte,#fff);border:1px solid var(--sb-filet,#D3D9C8);border-radius:var(--sb-rayon,2px);font-size:.92rem;line-height:1.5;color:var(--sb-doux,#56605A)}
.bt-source::before{content:"";position:absolute;left:1rem;top:1.05rem;width:.7rem;height:.7rem;background:var(--sb-accent-clair,#FFB21A);transform:rotate(45deg)}
.bt-source cite{font-style:normal;font-weight:700;color:var(--sb-encre,#1A221E)}

/* Liens dans le corps : bien visibles (soulignement épais, R-0608) */
.sbt-article-corps p a, .bt-lecture-corps p a{ color: var(--sb-accent); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; text-decoration-color: rgba(200,21,79,.45); font-weight: 600; }
.sbt-article-corps p a:hover, .bt-lecture-corps p a:hover{ text-decoration-color: var(--sb-accent); background: rgba(255,178,26,.18); }

/* Photo de corps légendée : respiration + profondeur (R-0580) */
.bt-figure{ margin: 2.4em 0; }
.bt-figure img{ display: block; width: 100%; height: auto; margin: 0 !important; border-radius: var(--sb-rayon-grand,6px); box-shadow: 0 18px 36px -22px rgba(22,32,27,.55); }
.bt-figure figcaption{ margin-top: .7rem; padding-left: .8rem; border-left: 3px solid var(--sb-accent-clair); font-size: .9rem; line-height: 1.45; color: var(--sb-doux); }
.bt-figure .bt-credit{ display: block; font-size: .78rem; opacity: .85; }

/* === Passe 2 (01/10) — corrections après captures === */
/* Logo : symbole jalak + nom en Kalnia (le texte ne vit plus dans le SVG) */
.bt-logo{ gap: 8px; }
.bt-jalak{ width: 46px; height: 36px; flex: none; }
.bt-logo-texte{ font-family: var(--bt-police-titre); font-weight: 600; font-stretch: 110%; font-size: 1.5rem; letter-spacing: -.01em; color: var(--sb-encre); line-height: 1; white-space: nowrap; display: inline-flex; align-items: flex-start; }
.bt-logo-losange{ width: 7px; height: 7px; background: var(--sb-accent-clair); transform: rotate(45deg); margin: 2px 0 0 4px; }
.bt-pied .bt-logo-texte, .bt-bande--basalte .bt-logo-texte, .sbt-footer .bt-logo-texte, footer .bt-logo-texte{ color: var(--sb-sur-fonce); }
@media (max-width: 420px){ .bt-logo-texte{ font-size: 1.25rem; } .bt-jalak{ width: 38px; height: 30px; } }
/* Hero : la photo occupe toute la hauteur de sa colonne (plus de vide sous la photo) */
.bt-hero-b .bt-hero-photo{ flex: 1 1 auto; aspect-ratio: auto; min-height: 460px; }
.bt-hero-b .bt-hero-photo img{ position: absolute; inset: 0; }
@media (max-width: 1080px){ .bt-hero-b .bt-hero-photo{ aspect-ratio: 16/10; min-height: 0; } }
/* Chiffres balinais en filigrane : petits, en exposant, jamais sous le chiffre */
.bt-chiffre-valeur{ white-space: nowrap; }
.bt-chiffre-valeur .bt-chiffre-bali{ font-size: .34em; vertical-align: super; margin-left: .18em; line-height: 0; opacity: .9; }
.bt-etapes-devis .bt-chiffre-bali, li > b .bt-chiffre-bali{ font-size: .8em; }
/* Frise des 12 mois : jamais de débordement sur mobile */
.bt-frise-mois{ grid-template-columns: repeat(12, minmax(0,1fr)); }
.bt-mois{ min-width: 0; }
@media (max-width: 760px){ .bt-frise-mois{ grid-template-columns: repeat(6, minmax(0,1fr)); } .bt-mois-initiale{ font-size: 1.35rem; } .bt-mois-nom{ font-size: .5625rem; } }
/* Encarts saisons : cartes égales, repère coloré en tête */
.bt-encart-saison{ border-top: 4px solid var(--bt-riz); }
.bt-encart-saison:nth-child(2){ border-top-color: var(--sb-accent-clair); }
.bt-encart-saison:nth-child(3){ border-top-color: var(--bt-mousson); }
/* Infographie tarifs : le montant s'affiche à côté de la barre (rendu par site.js) */
.sbs_tarif{ display: grid; grid-template-columns: 1fr auto; column-gap: 14px; align-items: center; }
.sbs_tarif .sbs_tarif_libelle{ grid-column: 1 / -1; }
.bt-tarif-montant{ font-family: var(--bt-police-titre); font-weight: 600; font-size: 1.05rem; color: var(--sb-encre); font-variant-numeric: tabular-nums; white-space: nowrap; }
.bt-drawer .bt-logo-texte{ color: var(--sb-sur-fonce); }
/* Hero : titre resserré pour que le formulaire tienne au-dessus de la ligne de flottaison (AC-008) */
.bt-hero-a h1{ font-size: clamp(2.25rem, 1.4rem + 2.2vw, 3.25rem); line-height: 1.06; }
.bt-hero-chapo{ margin: 14px 0 18px; }
.bt-preuves{ gap: 10px 22px; margin-bottom: 18px; }
.bt-preuve b{ font-family: var(--bt-police-texte); font-weight: 800; font-variant-numeric: tabular-nums; }
@media (max-width: 760px){ .bt-preuves{ display: grid; grid-template-columns: 1fr 1fr; } }
/* Bouton d'en-tête : version courte « Devis » sur mobile, toujours visible */
.bt-devis-court{ display: none; }
@media (max-width: 1080px){ .bt-btn-devis-entete{ display: inline-flex !important; padding: 10px 16px; font-size: .9rem; } .bt-devis-long{ display: none; } .bt-devis-court{ display: inline; } }
@media (max-width: 760px){ .bt-preuves{ display: flex; flex-wrap: wrap; gap: 8px 18px; } .bt-preuve{ font-size: .8125rem; } }
@media (max-width: 480px){
  .bt-header-inner{ gap: 8px; padding-inline: 14px; }
  .bt-logo{ gap: 5px; min-width: 0; }
  .bt-logo-texte{ font-size: 1.12rem; }
  .bt-logo-losange{ display: none; }
  .bt-jalak{ width: 34px; height: 27px; }
  .bt-header-actions{ gap: 8px; flex: none; }
  .bt-btn-devis-entete{ padding: 8px 14px !important; }
}
.bt-signature-page{ display: flex; align-items: center; gap: 10px; margin: 14px 0 0; font-size: .875rem; color: var(--sb-doux); }
.bt-signature-page img{ width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }
.bt-signature-page a{ color: var(--sb-encre); font-weight: 700; text-decoration: underline; text-decoration-color: var(--sb-accent-clair); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.bt-bande--basalte .bt-signature-page, .bt-bande--basalte .bt-signature-page a{ color: var(--sb-sur-fonce); }
/* Boutons dans le pied de page : texte blanc sur hibiscus (le style des liens du pied ne s'applique pas aux boutons) */
footer .sbt-btn, .sbt-footer .sbt-btn, footer a.sbt-btn{ color: #fff !important; }
/* Titres posés sur une bande basalte : texte clair (titre de la page de devis invisible sinon) */
.bt-bande--basalte h1, .bt-bande--basalte h2, .bt-bande--basalte h3, .bt-devis-entete h1{ color: var(--sb-sur-fonce); }
/* À propos : la photo s'aligne en haut de sa colonne et accompagne la lecture */
.bt-apropos-entete{ align-items: start; }
.bt-apropos-entete > img, .bt-apropos-entete figure, .bt-apropos-entete .bt-apropos-photo{ align-self: start; position: sticky; top: 104px; }
@media (max-width: 900px){ .bt-apropos-entete > img, .bt-apropos-entete figure, .bt-apropos-entete .bt-apropos-photo{ position: static; } }

/* Passe 4 — titres des cartes claires posées sur la bande basalte : encre, pas texte clair (contraste 1.10:1 mesuré) */
.bt-bande--basalte .bt-devis-carte h3, .bt-bande--basalte .bt-devis-carte h2{ color: var(--sb-encre); }

/* Passe 4 — dernière rangée de rubrique complétée (pas de trou blanc), tuiles « autres rubriques » = 4 colonnes pleines */
.bt-tuiles-rubriques{ grid-template-columns: repeat(4, 1fr); }
.bt-carte-reste{ display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 12px; padding: 32px; border-radius: var(--sb-rayon); background: var(--sb-fonce); color: var(--sb-sur-fonce); }
.bt-carte-reste svg{ width: 56px; height: 56px; }
.bt-carte-reste p{ margin: 0; max-width: 46ch; }
.bt-carte-reste .bt-carte-reste-titre{ font-family: var(--bt-police-titre); font-size: 1.5rem; line-height: 1.2; color: var(--sb-sur-fonce); }
.bt-reste3-0{ display: none; }
.bt-reste3-1{ grid-column: span 1; } .bt-reste3-2{ grid-column: span 2; }
@media (max-width: 980px){ .bt-tuiles-rubriques{ grid-template-columns: repeat(2, 1fr); } .bt-carte-reste{ display: flex; grid-column: span 1; } .bt-reste2-0{ display: none; } }
@media (max-width: 600px){ .bt-carte-reste{ display: none; } }

/* ===== Passe 5 — corrections du juge visuel (01/10) ===== */
/* Tuiles de chiffres : jamais de débordement sur téléphone */
@media (max-width: 600px){
  .bt-chiffres-grille{ grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 12px; align-items: start; }
  .bt-chiffre{ padding: 8px 0; min-width: 0; }
  .bt-chiffre-valeur{ font-stretch: 100%; font-size: clamp(2.4rem, 1.6rem + 4vw, 3rem); }
}
.bt-chiffres-grille--3{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 600px){ .bt-chiffres-grille--3{ grid-template-columns: 1fr; } }
.bt-chiffre-valeur--date{ font-family: var(--bt-police-texte); font-weight: 800; font-stretch: 100%; font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem); white-space: normal; padding-top: .6em; }
/* Fil de Bali : la colonne sombre s'arrête avec son contenu */
.bt-fil-bali{ align-self: start; }
/* Rangée Itinéraires : numéro balinais en pastille */
.bt-carte-itineraire .bt-carte-article-photo{ position: relative; }
.bt-itineraire-num{ position: absolute; left: 14px; top: 14px; width: 40px; height: 40px; border-radius: 50%; background: var(--sb-accent-clair); color: var(--sb-fonce); display: flex; align-items: center; justify-content: center; font-family: 'Noto Sans Balinese', serif; font-size: 1.25rem; }
/* « Le saviez-vous ? » : un vrai encadré (DA §12) — fond basalte, filet souci, titre Kalnia souci */
.sbt-encadre--saviez{ background: var(--sb-fonce); color: var(--sb-sur-fonce); border-top: 4px solid var(--sb-accent-clair); }
.sbt-encadre--saviez::before{ background: var(--sb-accent-clair); color: var(--sb-fonce); font-family: var(--bt-police-titre); }
.sbt-encadre--saviez .sbt-encadre-titre, .sbt-encadre--saviez .sbt-encadre__titre{ grid-column: 2; margin: 0; color: var(--sb-accent-clair); font-family: var(--bt-police-titre); font-size: 1.25rem; text-transform: none; letter-spacing: 0; font-weight: 600; }
.sbt-encadre--saviez p:not(.sbt-encadre-titre):not(.sbt-encadre__titre){ color: var(--sb-sur-fonce); }
.sbt-encadre--saviez a{ color: var(--sb-accent-clair); }
@media (max-width: 620px){ .sbt-encadre--saviez .sbt-encadre__titre{ grid-column: 1; } }
/* Contact : tête de page avec la photo, formulaire calé en haut, case de consentement en texte continu */
.bt-contact-entete{ padding-block: 40px; }
.bt-contact-entete-grille{ display: grid; grid-template-columns: 7fr 5fr; gap: var(--sb-gouttiere); align-items: center; }
.bt-contact-entete .bt-contact-photo{ aspect-ratio: 16/9; }
.bt-contact-chapo{ font-size: 1.0625rem; max-width: 52ch; margin: 12px 0 0; }
.bt-contact-grille{ align-items: start; padding-block: 40px 56px; }
.bt-consentement{ display: flex; gap: 10px; align-items: flex-start; font-size: .8125rem; color: var(--sb-doux); margin-bottom: 16px; }
.bt-consentement input{ margin-top: 3px; flex: none; }
.bt-consentement span{ flex: 1; min-width: 0; }
@media (max-width: 900px){ .bt-contact-entete-grille{ grid-template-columns: 1fr; } }
/* À propos : tête en 7/5, sections en colonnes à filets */
.bt-apropos-entete{ grid-template-columns: 7fr 5fr; }
.bt-apropos-photo{ margin: 0; }
.bt-apropos-photo img{ border-radius: var(--sb-rayon); aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.bt-apropos-sections{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px var(--sb-gouttiere); padding-block: 56px; }
.bt-apropos-section h2{ font-size: clamp(1.375rem, 1.1rem + .8vw, 1.75rem); margin-top: 0; }
.bt-apropos-section:last-child:nth-child(odd){ grid-column: 1 / -1; }
@media (max-width: 900px){ .bt-apropos-entete{ grid-template-columns: 1fr; } .bt-apropos-sections{ grid-template-columns: 1fr; } }

.bt-apropos-sections > :nth-child(odd){ border-left: 0; padding-left: 0; }
@media (max-width: 900px){ .bt-apropos-sections > *{ border-left: 0; padding-left: 0; } }

/* Passe 5b — tuiles de chiffres en 2 colonnes sur téléphone : pas de filet haut décalé sur la 2e tuile */
@media (max-width: 760px){
  .bt-chiffres-grille.bt-filets > *{ border-top: 0; margin-top: 0; padding-top: 8px; }
  .bt-chiffres-grille.bt-filets > *:nth-child(n+3){ border-top: 1px solid var(--sb-filet); padding-top: 24px; }
}
@media (max-width: 600px){ .bt-chiffres-grille--3.bt-filets > *:nth-child(n+2){ border-top: 1px solid var(--sb-filet); padding-top: 24px; } }
.bt-itineraire-num{ font-family: var(--bt-police-titre); font-size: 1.125rem; font-weight: 600; }
.bt-apropos-section:last-child:nth-child(odd) p{ max-width: 78ch; }

/* Frise des mois dans un article ([bt_calendrier]) */
.bt-calendrier{ margin: 2em 0; padding: 24px; border: 1px solid var(--sb-filet); border-radius: var(--sb-rayon-grand); background: var(--sb-fond-carte); }
.bt-calendrier-titre{ font-family: var(--bt-police-titre); font-size: 1.25rem; margin: 0 0 16px; color: var(--sb-encre); }
.bt-calendrier .bt-frise-mois{ margin-bottom: 30px; }
.bt-calendrier .bt-legende-saisons{ margin-bottom: 8px; }
.bt-calendrier-source{ font-size: .75rem; color: var(--sb-doux); margin: 0; }
.bt-calendrier .bt-mois-initiale{ font-size: 1.375rem; }
/* la feuille du bloc encadrés est chargée après style.css : on monte la spécificité */
.sbt-encadre.sbt-encadre--saviez .sbt-encadre-titre, .sbt-encadre.sbt-encadre--saviez .sbt-encadre__titre{ color: var(--sb-accent-clair); font-family: var(--bt-police-titre); font-size: 1.25rem; text-transform: none; letter-spacing: 0; font-weight: 600; }
