/* ==========================================================================
   KIDS CARE — COMPOSANTS
   ========================================================================== */

/* ==========================================================================
   BOUTONS
   ========================================================================== */
.kc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--kc-space-2);
	min-height: 50px;
	padding: 0.75rem 1.6rem;
	font-family: var(--kc-font-body);
	font-size: var(--kc-text-base);
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	border: 2px solid transparent;
	border-radius: var(--kc-radius-pill);
	cursor: pointer;
	transition: background-color var(--kc-transition),
		border-color var(--kc-transition), color var(--kc-transition);
}

/* Bouton principal — magenta, texte blanc : 4,83:1 ✅ */
.kc-btn--primary {
	background-color: var(--kc-cta);
	color: var(--kc-white);
}

.kc-btn--primary:hover {
	background-color: var(--kc-cta-hover);
	color: var(--kc-white);
}

.kc-btn--primary:active {
	background-color: var(--kc-cta-active);
}

/* Bouton secondaire — contour ardoise */
.kc-btn--secondary {
	background-color: transparent;
	color: var(--kc-ink);
	border-color: var(--kc-ink);
}

.kc-btn--secondary:hover {
	background-color: var(--kc-ink);
	color: var(--kc-white);
}

/* Bouton tertiaire — cyan fonctionnel */
.kc-btn--ghost {
	background-color: transparent;
	color: var(--kc-link);
	border-color: var(--kc-border-strong);
}

.kc-btn--ghost:hover {
	background-color: var(--kc-tint-cyan);
	color: var(--kc-link-hover);
	border-color: var(--kc-link);
}

/* Sur fond sombre */
.kc-on-dark .kc-btn--secondary {
	color: var(--kc-white);
	border-color: var(--kc-white);
}

.kc-on-dark .kc-btn--secondary:hover {
	background-color: var(--kc-white);
	color: var(--kc-ink);
}

.kc-btn--block {
	width: 100%;
}

/* Lien fléché « Découvrir » */
.kc-link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	font-weight: 600;
	text-decoration: none;
	color: var(--kc-link);
}

.kc-link-arrow::after {
	content: "→";
	transition: transform var(--kc-transition);
}

.kc-link-arrow:hover {
	text-decoration: underline;
}

.kc-link-arrow:hover::after {
	transform: translateX(3px);
}

/* ==========================================================================
   CARTES
   ========================================================================== */
.kc-card {
	display: flex;
	flex-direction: column;
	gap: var(--kc-space-3);
	padding: var(--kc-space-5);
	background-color: var(--kc-white);
	border: 1px solid var(--kc-border);
	border-radius: var(--kc-radius);
	box-shadow: var(--kc-shadow-sm);
	transition: box-shadow var(--kc-transition), transform var(--kc-transition),
		border-color var(--kc-transition);
}

.kc-card:hover {
	box-shadow: var(--kc-shadow);
	border-color: var(--kc-border-strong);
}

.kc-card__title {
	font-size: var(--kc-h4);
	font-weight: 700;
	margin: 0;
}

/* Rend toute la carte cliquable sans casser l'accessibilité :
   le lien reste le seul élément focusable. */
.kc-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.kc-card--linked {
	position: relative;
}

.kc-card__text {
	color: var(--kc-ink-soft);
	font-size: var(--kc-text-base);
	margin: 0;
	flex-grow: 1;
}

.kc-card__foot {
	margin-top: auto;
	padding-top: var(--kc-space-2);
}

/* Pastille d'icône — une seule couleur d'accent par carte */
.kc-card__icon {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border-radius: var(--kc-radius-sm);
	background-color: var(--kc-tint-cyan);
	color: var(--kc-ink);
	flex-shrink: 0;
}

.kc-card--accent-cyan .kc-card__icon {
	background-color: var(--kc-tint-cyan);
}

.kc-card--accent-mint .kc-card__icon {
	background-color: var(--kc-tint-mint);
}

.kc-card--accent-yellow .kc-card__icon {
	background-color: var(--kc-tint-yellow);
}

.kc-card--accent-magenta .kc-card__icon {
	background-color: var(--kc-tint-magenta);
}

/* Filet d'accent haut */
.kc-card--accent-cyan {
	border-top: 3px solid var(--kc-cyan);
}

.kc-card--accent-mint {
	border-top: 3px solid var(--kc-mint);
}

.kc-card--accent-yellow {
	border-top: 3px solid var(--kc-yellow);
}

.kc-card--accent-magenta {
	border-top: 3px solid var(--kc-magenta);
}

/* ==========================================================================
   BANDEAU DE RÉASSURANCE
   ========================================================================== */
.kc-reassurance {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--kc-space-5);
	padding: var(--kc-space-6);
	background-color: var(--kc-white);
	border: 1px solid var(--kc-border);
	border-radius: var(--kc-radius-lg);
	box-shadow: var(--kc-shadow);
}

.kc-reassurance__item {
	display: flex;
	gap: var(--kc-space-3);
	align-items: flex-start;
}

.kc-reassurance__title {
	font-size: var(--kc-text-base);
	font-weight: 700;
	margin: 0 0 var(--kc-space-1);
}

.kc-reassurance__text {
	font-size: var(--kc-text-sm);
	color: var(--kc-ink-soft);
	margin: 0;
}

@media (max-width: 1024px) {
	.kc-reassurance {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 560px) {
	.kc-reassurance {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ==========================================================================
   BARRE SUPÉRIEURE
   ========================================================================== */
.kc-topbar {
	background-color: var(--kc-ink);
	color: var(--kc-white);
	font-size: var(--kc-text-sm);
}

.kc-topbar__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kc-space-4);
	min-height: 42px;
	padding-block: var(--kc-space-1);
}

.kc-topbar a {
	color: var(--kc-white);
	text-decoration: none;
	font-weight: 600;
}

.kc-topbar a:hover {
	color: var(--kc-white);
	text-decoration: underline;
}

.kc-topbar__group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--kc-space-5);
}

/* Pastille ouvert / fermé */
.kc-status {
	display: inline-flex;
	align-items: center;
	gap: 0.45em;
	font-weight: 600;
}

.kc-status__dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	flex-shrink: 0;
}

.kc-status--open .kc-status__dot {
	background-color: var(--kc-mint);
}

.kc-status--closed .kc-status__dot {
	background-color: var(--kc-yellow);
}

@media (max-width: 860px) {
	.kc-topbar {
		display: none; /* remplacé par la barre d'action collante */
	}
}

/* ==========================================================================
   EN-TÊTE
   ========================================================================== */
.kc-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background-color: var(--kc-white);
	border-bottom: 1px solid var(--kc-border);
}

.kc-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--kc-space-5);
	min-height: var(--kc-header-h);
	padding-block: var(--kc-space-3);
}

.kc-logo {
	display: inline-flex;
	align-items: center;
	/* Volontairement PAS de flex-shrink: 0 — sur les très petits écrans, le
	   logo doit pouvoir se réduire plutôt que d'élargir toute la page. */
	min-width: 0;
}

.kc-logo img {
	width: auto;
	max-width: 100%;
	height: clamp(38px, 7vw, 52px);
}

/* ---------- Navigation ---------- */
.kc-nav {
	display: flex;
	align-items: center;
	gap: var(--kc-space-2);
}

.kc-nav__list {
	display: flex;
	align-items: center;
	gap: var(--kc-space-1);
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: none;
}

.kc-nav__list li + li {
	margin-top: 0;
}

.kc-nav__list a,
.kc-nav__toggle {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	padding: var(--kc-space-2) var(--kc-space-3);
	font-size: var(--kc-text-base);
	font-weight: 600;
	line-height: 1.25;
	color: var(--kc-ink);
	text-decoration: none;
	border-radius: var(--kc-radius-sm);
	background: none;
	border: 0;
	cursor: pointer;
	font-family: inherit;
	white-space: nowrap; /* un intitulé de menu ne se coupe jamais en deux lignes */
}

/* Le bouton de rendez-vous du panneau déroulant n'existe que sur mobile :
   en desktop, celui de l'en-tête fait déjà le travail. */
.kc-nav__cta {
	display: none;
	margin: var(--kc-space-5) 0 0;
}

.kc-nav__list a:hover,
.kc-nav__toggle:hover {
	color: var(--kc-link);
	background-color: var(--kc-surface);
}

.kc-nav__list .current-menu-item > a,
.kc-nav__list [aria-current="page"] {
	color: var(--kc-link);
	box-shadow: inset 0 -3px 0 var(--kc-cyan);
}

/* Chevron du méga-menu */
.kc-nav__toggle::after {
	content: "";
	width: 0.5em;
	height: 0.5em;
	border-right: 2px solid currentcolor;
	border-bottom: 2px solid currentcolor;
	transform: rotate(45deg) translate(-2px, -2px);
	transition: transform var(--kc-transition);
}

.kc-nav__toggle[aria-expanded="true"]::after {
	transform: rotate(-135deg) translate(-2px, -2px);
}

/* ---------- Méga-menu ---------- */
.kc-mega {
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	display: none;
	background-color: var(--kc-white);
	border-top: 1px solid var(--kc-border);
	border-bottom: 1px solid var(--kc-border);
	box-shadow: var(--kc-shadow-lg);
}

.kc-mega[data-open="true"] {
	display: block;
}

.kc-mega__inner {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kc-space-6);
	padding-block: var(--kc-space-6);
}

.kc-mega__group-title {
	font-size: var(--kc-text-sm);
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--kc-ink-soft);
	padding-bottom: var(--kc-space-2);
	margin-bottom: var(--kc-space-3);
	border-bottom: 2px solid var(--kc-border);
}

.kc-mega__list {
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: none;
}

.kc-mega__list li + li {
	margin-top: var(--kc-space-1);
}

.kc-mega__list a {
	display: block;
	padding: var(--kc-space-2) var(--kc-space-3);
	color: var(--kc-ink);
	text-decoration: none;
	border-radius: var(--kc-radius-sm);
	font-size: var(--kc-text-base);
}

.kc-mega__list a:hover {
	background-color: var(--kc-surface);
	color: var(--kc-link);
}

/* ---------- Bascule mobile ---------- */
.kc-burger {
	display: none;
	position: relative; /* repère pour les barres en ::before / ::after */
	align-items: center;
	justify-content: center;
	width: var(--kc-tap);
	height: var(--kc-tap);
	flex-shrink: 0;
	background: none;
	border: 1px solid var(--kc-border-strong);
	border-radius: var(--kc-radius-sm);
	cursor: pointer;
	color: var(--kc-ink);
}

.kc-burger__bars,
.kc-burger__bars::before,
.kc-burger__bars::after {
	display: block;
	width: 20px;
	height: 2px;
	background-color: currentcolor;
	transition: transform var(--kc-transition), opacity var(--kc-transition);
}

.kc-burger__bars::before,
.kc-burger__bars::after {
	content: "";
	position: absolute;
}

.kc-burger__bars::before {
	transform: translateY(-6px);
}

.kc-burger__bars::after {
	transform: translateY(6px);
}

.kc-burger[aria-expanded="true"] .kc-burger__bars {
	background-color: transparent;
}

.kc-burger[aria-expanded="true"] .kc-burger__bars::before {
	transform: rotate(45deg);
}

.kc-burger[aria-expanded="true"] .kc-burger__bars::after {
	transform: rotate(-45deg);
}

@media (max-width: 1100px) {
	.kc-burger {
		display: inline-flex;
	}

	/* Le panneau s'ancre sous l'en-tête (qui est sticky, donc positionné) :
	   il reste correct même quand la barre supérieure est encore visible. */
	.kc-header__nav {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		display: none;
		max-height: calc(100dvh - var(--kc-header-h));
		overflow-y: auto;
		overscroll-behavior: contain;
		padding: var(--kc-space-5) var(--kc-gutter) var(--kc-space-8);
		background-color: var(--kc-white);
		border-top: 1px solid var(--kc-border);
		box-shadow: var(--kc-shadow-lg);
	}

	.kc-header__nav[data-open="true"] {
		display: block;
	}

	.kc-nav,
	.kc-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: var(--kc-space-1);
	}

	.kc-nav__list a,
	.kc-nav__toggle {
		width: 100%;
		justify-content: space-between;
		padding: var(--kc-space-3) var(--kc-space-4);
		font-size: var(--kc-text-lg);
		border-bottom: 1px solid var(--kc-border);
		border-radius: 0;
		white-space: normal;
	}

	.kc-nav__cta {
		display: block;
	}

	.kc-mega {
		position: static;
		box-shadow: none;
		border: 0;
	}

	.kc-mega__inner {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--kc-space-5);
		padding-block: var(--kc-space-4);
	}

	.kc-header__cta {
		display: none;
	}
}

/* ==========================================================================
   BARRE D'ACTION COLLANTE (MOBILE)
   Rangée haute : appeler, rendez-vous, WhatsApp.
   Rangée basse : « Nous suivre » et les réseaux, en petit.
   ========================================================================== */
.kc-mobile-bar {
	position: fixed;
	inset-inline: 0;
	bottom: 0;
	z-index: 120;
	display: none;
	background-color: var(--kc-white);
	border-top: 1px solid var(--kc-border);
	box-shadow: 0 -4px 16px rgb(24 50 71 / 10%);
	padding: var(--kc-space-2) var(--kc-space-3)
		calc(var(--kc-space-2) + env(safe-area-inset-bottom));
}

/*
 * Flex et non grille à trois colonnes : la pastille WhatsApp disparaît quand
 * le numéro n'est pas renseigné, et une colonne fixe laissait alors un vide
 * à droite des deux boutons. Ici les boutons se partagent simplement la
 * place restante, quel que soit le nombre d'éléments présents.
 */
.kc-mobile-bar__actions {
	display: flex;
	align-items: stretch;
	gap: var(--kc-space-2);
}

.kc-mobile-bar__btn {
	flex: 1 1 0;
	/* Sans min-width: 0, un libellé long impose sa largeur au bouton et les
	   deux cessent d'être égaux. */
	min-width: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.45em;
	min-height: 48px;
	padding-inline: var(--kc-space-2);
	font-family: var(--kc-font-title);
	font-size: var(--kc-text-sm);
	font-weight: 700;
	line-height: 1.1;
	text-align: center;
	text-decoration: none;
	border-radius: var(--kc-radius-pill);
	transition: background-color var(--kc-transition);
}

/* Le libellé peut se réduire, jamais l'icône. */
.kc-mobile-bar__btn span {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.kc-mobile-bar__btn .kc-icon {
	flex: 0 0 auto;
}

.kc-mobile-bar__btn--call {
	background-color: var(--kc-ink);
	color: var(--kc-white);
}

.kc-mobile-bar__btn--call:hover,
.kc-mobile-bar__btn--call:focus-visible {
	background-color: #0f2433;
	color: var(--kc-white);
}

.kc-mobile-bar__btn--rdv {
	background-color: var(--kc-cta);
	color: var(--kc-white);
}

.kc-mobile-bar__btn--rdv:hover,
.kc-mobile-bar__btn--rdv:focus-visible {
	background-color: var(--kc-cta-hover);
	color: var(--kc-white);
}

/* Pastille WhatsApp : le logo est assez connu pour se passer de libellé, ce
   qui rend la largeur aux deux boutons voisins. Le vert officiel (#25d366)
   ne porterait pas de texte blanc lisible ; l'icône, elle, est une forme, et
   le contraste de forme sur le blanc de la barre reste franc. */
.kc-mobile-bar__rond {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	min-height: 48px;
	border-radius: 50%;
	text-decoration: none;
	transition: background-color var(--kc-transition);
}

.kc-mobile-bar__rond--wa {
	color: var(--kc-white);
	background-color: #1da851;
}

.kc-mobile-bar__rond--wa:hover,
.kc-mobile-bar__rond--wa:focus-visible {
	background-color: #17853f;
	color: var(--kc-white);
}

/* Pastille Itinéraire : le cyan pur ne porte pas de texte lisible, mais il
   s'agit ici d'une icône. On garde donc le cyan assombri du thème, qui passe
   4,73:1 avec le blanc. */
.kc-mobile-bar__rond--maps {
	color: var(--kc-white);
	background-color: var(--kc-link);
}

.kc-mobile-bar__rond--maps:hover,
.kc-mobile-bar__rond--maps:focus-visible {
	background-color: var(--kc-link-hover);
	color: var(--kc-white);
}

/* ---------- Rangée « Nous suivre » ---------- */
.kc-mobile-bar__suivre {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--kc-space-3);
	margin-top: var(--kc-space-2);
	padding-top: var(--kc-space-2);
	border-top: 1px solid var(--kc-border);
}

.kc-mobile-bar__suivre-label {
	font-size: var(--kc-text-xs);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--kc-ink-soft);
}

.kc-mobile-bar__social {
	display: flex;
	align-items: center;
	gap: var(--kc-space-2);
	margin: 0;
	padding: 0;
	list-style: none;
	max-width: none;
}

/* base.css espace deux <li> successifs d'une liste de texte : ici la rangée
   est horizontale, cette marge décalerait chaque icône après la première. */
.kc-mobile-bar__social li {
	margin: 0;
}

/*
 * Cible tactile de 44 px, exigée pour tout élément actionnable, sans que la
 * rangée paraisse lourde : le carré reste transparent, seule l'icône de 18 px
 * se voit. La teinte est celle du texte secondaire — 5,20:1 sur blanc — pour
 * que ces liens restent lisibles sans concurrencer les deux boutons.
 */
.kc-mobile-bar__social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--kc-tap);
	height: var(--kc-tap);
	min-height: var(--kc-tap);
	border-radius: 50%;
	color: var(--kc-ink-soft);
	transition: color var(--kc-transition), background-color var(--kc-transition);
}

.kc-mobile-bar__social a:hover,
.kc-mobile-bar__social a:focus-visible {
	color: var(--kc-ink);
	background-color: var(--kc-surface);
}

@media (max-width: 860px) {
	.kc-mobile-bar {
		display: block;
	}
}

/* ==========================================================================
   FIL D'ARIANE
   ========================================================================== */
.kc-breadcrumb {
	padding-block: var(--kc-space-4);
	font-size: var(--kc-text-sm);
	color: var(--kc-ink-soft);
	border-bottom: 1px solid var(--kc-border);
}

.kc-breadcrumb ol {
	display: flex;
	flex-wrap: wrap;
	gap: 0.45em;
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: none;
}

.kc-breadcrumb li {
	margin: 0;
	display: flex;
	gap: 0.45em;
	align-items: center;
}

.kc-breadcrumb li + li::before {
	content: "›";
	color: var(--kc-border-strong);
}

.kc-breadcrumb a {
	color: var(--kc-ink-soft);
}

.kc-breadcrumb [aria-current="page"] {
	color: var(--kc-ink);
	font-weight: 600;
}

/* ==========================================================================
   ACCORDÉON FAQ
   ========================================================================== */
.kc-faq {
	display: flex;
	flex-direction: column;
	gap: var(--kc-space-3);
	max-width: 860px;
}

.kc-faq__item {
	background-color: var(--kc-white);
	border: 1px solid var(--kc-border);
	border-radius: var(--kc-radius);
	overflow: hidden;
}

.kc-faq__question {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--kc-space-4);
	min-height: var(--kc-tap);
	padding: var(--kc-space-4) var(--kc-space-5);
	font-family: var(--kc-font-title);
	font-size: var(--kc-text-md);
	font-weight: 600;
	line-height: 1.35;
	text-align: left;
	color: var(--kc-ink);
	background: none;
	border: 0;
	cursor: pointer;
}

.kc-faq__question:hover {
	background-color: var(--kc-surface);
}

.kc-faq__question::after {
	content: "";
	width: 0.55em;
	height: 0.55em;
	flex-shrink: 0;
	border-right: 2px solid var(--kc-link);
	border-bottom: 2px solid var(--kc-link);
	transform: rotate(45deg) translate(-2px, -2px);
	transition: transform var(--kc-transition);
}

.kc-faq__question[aria-expanded="true"]::after {
	transform: rotate(-135deg) translate(-2px, -2px);
}

.kc-faq__answer {
	padding: 0 var(--kc-space-5) var(--kc-space-5);
	color: var(--kc-ink-soft);
}

.kc-faq__answer[hidden] {
	display: none;
}

.kc-faq__answer > :last-child {
	margin-bottom: 0;
}

/* ==========================================================================
   FORMULAIRES
   ========================================================================== */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="number"],
input[type="date"],
input[type="time"],
select,
textarea {
	width: 100%;
	min-height: var(--kc-tap);
	padding: 0.7rem 0.9rem;
	font-family: var(--kc-font-body);
	font-size: var(--kc-text-base);
	color: var(--kc-ink);
	background-color: var(--kc-white);
	border: 1px solid var(--kc-border-strong); /* 3,15:1 ✅ */
	border-radius: var(--kc-radius-sm);
	transition: border-color var(--kc-transition), box-shadow var(--kc-transition);
}

input:focus,
select:focus,
textarea:focus {
	border-color: var(--kc-link);
	box-shadow: 0 0 0 3px rgb(14 126 150 / 18%);
}

label {
	display: block;
	font-size: var(--kc-text-sm);
	font-weight: 600;
	color: var(--kc-ink);
	margin-bottom: var(--kc-space-1);
}

.kc-field-hint {
	font-size: var(--kc-text-sm);
	color: var(--kc-ink-soft);
	margin-top: var(--kc-space-1);
}

.kc-required {
	color: var(--kc-cta-hover);
}

/* ==========================================================================
   ENCADRÉS
   ========================================================================== */
.kc-notice {
	display: flex;
	gap: var(--kc-space-3);
	padding: var(--kc-space-4) var(--kc-space-5);
	border-radius: var(--kc-radius);
	border-left: 4px solid var(--kc-cyan);
	background-color: var(--kc-tint-cyan);
	color: var(--kc-ink);
}

.kc-notice p {
	margin: 0;
	max-width: none;
}

.kc-notice--urgent {
	border-left-color: var(--kc-magenta);
	background-color: var(--kc-tint-magenta);
}

.kc-notice--info {
	border-left-color: var(--kc-yellow);
	background-color: var(--kc-tint-yellow);
}

/* Mention médicale légale */
.kc-disclaimer {
	font-size: var(--kc-text-sm);
	color: var(--kc-ink-soft);
	border-top: 1px solid var(--kc-border);
	padding-top: var(--kc-space-4);
	margin-top: var(--kc-space-6);
}

/* ==========================================================================
   PIED DE PAGE
   ========================================================================== */
.kc-footer {
	background-color: var(--kc-ink);
	color: #c7d3db; /* 8,68:1 sur --kc-ink ✅ */
	padding-block: var(--kc-space-8) var(--kc-space-5);
	font-size: var(--kc-text-base);
}

.kc-footer__grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
	gap: var(--kc-space-6);
	padding-bottom: var(--kc-space-7);
}

@media (max-width: 1024px) {
	.kc-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 600px) {
	.kc-footer__grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kc-footer__title {
	font-family: var(--kc-font-title);
	font-size: var(--kc-text-base);
	font-weight: 700;
	color: var(--kc-white);
	margin: 0 0 var(--kc-space-4);
	padding-bottom: var(--kc-space-2);
	border-bottom: 2px solid rgb(255 255 255 / 12%);
}

.kc-footer a {
	color: #c7d3db;
	text-decoration: none;
}

.kc-footer a:hover {
	color: var(--kc-white);
	text-decoration: underline;
}

.kc-footer ul {
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: none;
}

.kc-footer li + li {
	margin-top: var(--kc-space-2);
}

.kc-footer__logo img {
	height: 56px;
	width: auto;
	margin-bottom: var(--kc-space-4);
}

.kc-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kc-space-4);
	padding-top: var(--kc-space-5);
	border-top: 1px solid rgb(255 255 255 / 12%);
	font-size: var(--kc-text-sm);
}

.kc-footer__legal {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kc-space-4);
}

/* Micro-accents de marque autorisés dans le footer */
.kc-footer__title::after {
	content: "";
	display: block;
	width: 32px;
	height: 2px;
	margin-top: var(--kc-space-2);
	margin-bottom: -2px;
	background-color: var(--kc-cyan);
}

.kc-social {
	display: flex;
	gap: var(--kc-space-2);
}

.kc-social a {
	display: grid;
	place-items: center;
	width: var(--kc-tap);
	height: var(--kc-tap);
	border-radius: 50%;
	border: 1px solid rgb(255 255 255 / 20%);
}

.kc-social a:hover {
	background-color: rgb(255 255 255 / 10%);
}

/* Sous-titre des encadrés d'accès (« En voiture », « En transports publics »). */
.kc-infos__sublabel {
	font-family: var(--kc-font-title);
	font-size: var(--kc-text-sm);
	font-weight: 700;
	margin: var(--kc-space-3) 0 var(--kc-space-1);
}

.kc-infos__sublabel:first-of-type {
	margin-top: var(--kc-space-2);
}

/* Horaires du pied de page : une seule ligne, sans second titre, pour que la
   colonne contact ne fasse plus le double de hauteur des trois autres. */
.kc-footer__horaires {
	margin: var(--kc-space-4) 0 0;
}

.kc-footer__horaires a {
	display: inline-block;
	margin-top: var(--kc-space-2);
}

/* ==========================================================================
   VITRINE DES SPÉCIALITÉS (accueil)
   Trois grandes cartes photo, puis six raccourcis en mini-cartes.
   ========================================================================== */

/* En-tête sur deux colonnes : titre à gauche, phrase de contexte à droite.
   Sous 900 px les deux colonnes se replient l'une sous l'autre. */
.kc-section-head--duo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 22rem);
	gap: var(--kc-space-5) var(--kc-space-7);
	align-items: end;
	max-width: none;
}

.kc-section-head__note {
	margin: 0;
	color: var(--kc-ink-soft);
	font-size: var(--kc-text-md);
}

@media (max-width: 900px) {
	.kc-section-head--duo {
		grid-template-columns: minmax(0, 1fr);
		align-items: start;
	}
}

/* ---------- Les trois cartes photo ---------- */
.kc-vitrine {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kc-space-5);
	margin-bottom: var(--kc-space-5);
}

.kc-vedette {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: 420px;
	padding: var(--kc-space-5);
	overflow: hidden;
	border-radius: var(--kc-radius-lg);
	background-color: var(--kc-ink);
	box-shadow: var(--kc-shadow);
	transition: transform var(--kc-transition), box-shadow var(--kc-transition);
}

.kc-vedette:hover {
	transform: translateY(-4px);
	box-shadow: var(--kc-shadow-lg);
}

.kc-vedette__media {
	position: absolute;
	inset: 0;
}

.kc-vedette__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 400ms ease;
}

.kc-vedette:hover .kc-vedette__media img {
	transform: scale(1.04);
}

/* Voile ascendant : le bas de la carte porte le texte, le haut laisse voir la
   photo. Blanc sur le voile à 86 % = 7,9:1, largement au-dessus de 4,5:1. */
.kc-vedette__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(
		to top,
		rgb(24 50 71 / 92%) 0%,
		rgb(24 50 71 / 72%) 38%,
		rgb(24 50 71 / 18%) 72%,
		rgb(24 50 71 / 6%) 100%
	);
}

/* Carte sans photo : l'aplat d'accent tient lieu d'image, plutôt qu'un
   rectangle noir vide. */
.kc-vedette__media--vide {
	background: linear-gradient(160deg, var(--kc-ink) 0%, #24506f 100%);
}

.kc-vedette__corps {
	position: relative;
	z-index: 2;
	/* La flèche occupe le coin bas-droit : le texte s'arrête avant. */
	padding-inline-end: 3.5rem;
	color: var(--kc-white);
}

.kc-vedette__sur {
	margin: 0 0 var(--kc-space-1);
	font-size: var(--kc-text-xs);
	font-weight: 600;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: rgb(255 255 255 / 88%);
}

.kc-vedette__titre {
	margin: 0 0 var(--kc-space-2);
	font-size: var(--kc-text-xl);
	color: var(--kc-white);
}

.kc-vedette__titre a {
	color: inherit;
	text-decoration: none;
}

.kc-vedette__titre a:hover {
	text-decoration: underline;
}

/* Rend toute la carte cliquable sans casser l'accessibilité :
   le lien reste le seul élément focusable. */
.kc-vedette__titre a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 3;
}

.kc-vedette__titre a:focus-visible {
	outline: none;
}

/* L'anneau de focus se pose sur la carte entière, puisque c'est elle que le
   lien recouvre : un contour autour du seul titre serait trompeur. */
.kc-vedette:has(a:focus-visible) {
	outline: 3px solid var(--kc-white);
	outline-offset: -5px;
}

.kc-vedette__texte {
	margin: 0;
	font-size: var(--kc-text-sm);
	color: rgb(255 255 255 / 90%);
}

.kc-vedette__fleche {
	position: absolute;
	z-index: 2;
	inset-block-end: var(--kc-space-5);
	inset-inline-end: var(--kc-space-5);
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	color: var(--kc-ink);
	background-color: var(--kc-white);
	transition: transform var(--kc-transition);
}

.kc-vedette:hover .kc-vedette__fleche {
	transform: translateX(3px);
}

/* La pastille reprend l'accent du domaine : trois cartes côte à côte se
   distinguent alors au premier coup d'œil. */
.kc-vedette--accent-cyan .kc-vedette__fleche {
	color: var(--kc-link);
}

.kc-vedette--accent-magenta .kc-vedette__fleche {
	color: var(--kc-cta);
}

.kc-vedette--accent-mint .kc-vedette__fleche {
	color: var(--kc-mint-ink);
}

.kc-vedette--accent-yellow .kc-vedette__fleche {
	color: var(--kc-yellow-ink);
}

/* ---------- Les six raccourcis ---------- */
.kc-minis {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kc-space-3);
	margin: 0;
	padding: 0;
	list-style: none;
	max-width: none;
}

/* Même raison que pour les boutons de la bannière : la marge que base.css
   pose entre deux <li> décalerait toute la grille sauf la première carte. */
.kc-minis li {
	margin: 0;
}

.kc-mini {
	position: relative;
	display: flex;
	align-items: center;
	gap: var(--kc-space-3);
	min-height: var(--kc-tap);
	padding: 0.85rem 1.1rem;
	border: 1px solid var(--kc-border);
	border-radius: var(--kc-radius);
	background-color: var(--kc-white);
	transition: border-color var(--kc-transition), box-shadow var(--kc-transition),
		transform var(--kc-transition);
}

.kc-mini:hover {
	transform: translateY(-2px);
	border-color: transparent;
	box-shadow: var(--kc-shadow);
}

.kc-mini__badge {
	display: grid;
	place-items: center;
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	font-family: var(--kc-font-title);
	font-size: var(--kc-text-xs);
	font-weight: 700;
}

.kc-mini__label {
	flex: 1 1 auto;
	min-width: 0;
	font-family: var(--kc-font-title);
	font-size: var(--kc-text-base);
	font-weight: 600;
}

.kc-mini__label a {
	color: var(--kc-ink);
	text-decoration: none;
}

.kc-mini__label a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.kc-mini__label a:hover {
	text-decoration: underline;
}

.kc-mini__fleche {
	flex: 0 0 auto;
	color: var(--kc-ink-soft);
	transition: transform var(--kc-transition);
}

.kc-mini:hover .kc-mini__fleche {
	transform: translateX(3px);
}

/*
 * Pastilles : teintes claires en fond, encre assombrie pour le texte. Le cyan,
 * la menthe et le jaune purs ne passent pas 4,5:1 sur blanc — on n'y met donc
 * jamais de texte, seulement leur version foncée sur leur teinte pâle.
 */
.kc-mini--accent-cyan .kc-mini__badge {
	color: var(--kc-link);
	background-color: var(--kc-tint-cyan);
}

.kc-mini--accent-mint .kc-mini__badge {
	color: var(--kc-mint-ink);
	background-color: var(--kc-tint-mint);
}

.kc-mini--accent-yellow .kc-mini__badge {
	color: var(--kc-yellow-ink);
	background-color: var(--kc-tint-yellow);
}

.kc-mini--accent-magenta .kc-mini__badge {
	color: var(--kc-cta);
	background-color: var(--kc-tint-magenta);
}

@media (max-width: 900px) {
	.kc-vitrine {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.kc-minis {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 640px) {
	.kc-vitrine,
	.kc-minis {
		grid-template-columns: minmax(0, 1fr);
	}

	.kc-vedette {
		min-height: 340px;
	}
}

/* ==========================================================================
   ICÔNES FLOTTANTES
   Elles suivent le défilement sur toute la navigation : les réseaux le long
   du bord gauche, WhatsApp et l'itinéraire en bas à droite.
   ========================================================================== */

/* ---------- Rail des réseaux (bord gauche) ---------- */
.kc-rail {
	position: fixed;
	inset-inline-start: 0;
	top: 50%;
	transform: translateY(-50%);
	/* Sous l'en-tête collant et sous le bandeau de consentement, au-dessus du
	   contenu. */
	z-index: 90;
}

.kc-rail__liste {
	display: flex;
	flex-direction: column;
	gap: 1px;
	margin: 0;
	padding: 0;
	list-style: none;
	max-width: none;
	overflow: hidden;
	/* Arrondi côté contenu seulement : le rail est collé au bord de l'écran. */
	border-start-end-radius: var(--kc-radius);
	border-end-end-radius: var(--kc-radius);
	box-shadow: var(--kc-shadow);
}

/* base.css espace deux <li> successifs d'une liste de texte : ici la colonne
   est gérée par le flex, cette marge ouvrirait des trous entre les icônes. */
.kc-rail__liste li {
	margin: 0;
}

.kc-rail__lien {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	color: var(--kc-white);
	text-decoration: none;
	transition: width var(--kc-transition), background-color var(--kc-transition);
}

/* Aux couleurs de chaque réseau, mais assombries pour que le blanc de l'icône
   garde son contraste : le rose Instagram et le cyan TikTok d'origine ne
   tiennent pas 4,5:1 avec du blanc. */
.kc-rail__lien--facebook {
	background-color: #1667c2;
}

.kc-rail__lien--instagram {
	background-color: #a5297f;
}

.kc-rail__lien--tiktok {
	background-color: var(--kc-ink);
}

.kc-rail__lien:hover,
.kc-rail__lien:focus-visible {
	width: 54px;
	color: var(--kc-white);
}

.kc-rail__lien--facebook:hover,
.kc-rail__lien--facebook:focus-visible {
	background-color: #12539c;
}

.kc-rail__lien--instagram:hover,
.kc-rail__lien--instagram:focus-visible {
	background-color: #841f65;
}

.kc-rail__lien--tiktok:hover,
.kc-rail__lien--tiktok:focus-visible {
	background-color: #0f2433;
}

/* ---------- WhatsApp et itinéraire (bas à droite) ---------- */
.kc-flottants {
	position: fixed;
	inset-inline-end: var(--kc-space-4);
	bottom: var(--kc-space-4);
	z-index: 90;
	display: flex;
	flex-direction: column;
	gap: var(--kc-space-2);
}

.kc-flottant {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	color: var(--kc-white);
	text-decoration: none;
	box-shadow: var(--kc-shadow-lg);
	transition: transform var(--kc-transition), background-color var(--kc-transition);
}

.kc-flottant:hover,
.kc-flottant:focus-visible {
	transform: scale(1.06);
	color: var(--kc-white);
}

.kc-flottant--wa {
	background-color: #1da851;
}

.kc-flottant--wa:hover,
.kc-flottant--wa:focus-visible {
	background-color: #17853f;
}

.kc-flottant--maps {
	background-color: var(--kc-link);
}

.kc-flottant--maps:hover,
.kc-flottant--maps:focus-visible {
	background-color: var(--kc-link-hover);
}

/*
 * Libellé au survol : une pastille ronde ne dit pas ce qu'elle déclenche, et
 * ces deux liens ouvrent chacun une application tierce. La bulle n'est pas
 * lue par les lecteurs d'écran — un texte dédié, plus explicite, est déjà
 * présent dans le lien — d'où aria-hidden implicite via le contenu dupliqué.
 */
.kc-flottant__bulle {
	position: absolute;
	inset-inline-end: calc(100% + var(--kc-space-2));
	white-space: nowrap;
	padding: 0.45em 0.85em;
	font-size: var(--kc-text-sm);
	font-weight: 600;
	color: var(--kc-white);
	background-color: var(--kc-ink);
	border-radius: var(--kc-radius-sm);
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--kc-transition);
}

.kc-flottant:hover .kc-flottant__bulle,
.kc-flottant:focus-visible .kc-flottant__bulle {
	opacity: 1;
}

/*
 * Sous 860 px, la barre d'action collante prend le relais : elle porte déjà
 * Appeler, Rendez-vous, WhatsApp, l'itinéraire et les trois réseaux. Garder
 * en plus des icônes flottantes reviendrait à masquer le contenu sur un
 * écran étroit avec des liens affichés deux fois.
 */
@media (max-width: 860px) {
	.kc-rail,
	.kc-flottants {
		display: none;
	}
}

/* Écran peu haut : le rail vertical dépasserait. On le replie sur le bord,
   collé en haut plutôt que centré. */
@media (max-height: 520px) {
	.kc-rail {
		top: var(--kc-header-h);
		transform: none;
	}
}
