/* ==========================================================================
   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);
}

/* Bascule vers le menu déroulant à 1299 px et non 1100 px.
   Sept entrées de menu, un logo lisible et le bouton de rendez-vous
   demandent environ 1390 px : en dessous, plus rien ne peut rétrécir et le
   bouton se retrouvait poussé hors de l'écran. */
@media (max-width: 1299px) {
	.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)
   ========================================================================== */
.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));
}

.kc-mobile-bar__inner {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kc-space-2);
}

.kc-mobile-bar a {
	justify-content: center;
	gap: 0.35em;
	min-height: 48px;
	font-size: var(--kc-text-sm);
	font-weight: 600;
	text-decoration: none;
	border-radius: var(--kc-radius-pill);
}

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

.kc-mobile-bar__call:hover {
	color: var(--kc-white);
}

.kc-mobile-bar__wa {
	background-color: var(--kc-white);
	color: var(--kc-ink);
	border: 2px solid var(--kc-border-strong);
}

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

.kc-mobile-bar__rdv:hover {
	background-color: var(--kc-cta-hover);
	color: var(--kc-white);
}

@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%);
}
