/* Plateaux repas – formulaire. Couleurs personnalisables via les variables ci-dessous (contraste ≥ 4.5:1 sur blanc). */
.ccpr {
	--ccpr-accent: #a8455c; /* rose du site assombri : 5,7:1 sur blanc, 5,1:1 sur le fond rose clair */
	--ccpr-accent-text: #fff;
	--ccpr-text: #1d1d1d;
	--ccpr-muted: #555;
	--ccpr-border: #767676;
	--ccpr-bg-soft: #fbf0f3;
	--ccpr-error: #b00020;
	--ccpr-ok: #a8455c;
	--ccpr-radius: 6px;
	color: var(--ccpr-text);
	margin: 1.5em 0;
	max-width: 100%;
	font-size: 1rem;
	line-height: 1.5;
}
.ccpr *, .ccpr *::before, .ccpr *::after { box-sizing: border-box; }
.ccpr [hidden] { display: none !important; }

.ccpr-sr {
	position: absolute !important;
	width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.ccpr-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.ccpr-title { margin: 0 0 .25em; font-size: 1.5em; }
.ccpr-intro, .ccpr-help { color: var(--ccpr-muted); margin: .25em 0 .75em; }
.ccpr-req { font-weight: normal; color: var(--ccpr-muted); font-size: .9em; }
.ccpr-notice { padding: 1em; background: var(--ccpr-bg-soft); border-left: 4px solid var(--ccpr-accent); }

/* Progression (règles renforcées : certains thèmes stylent tous les « ol li::before ») */
.ccpr .ccpr-progress {
	display: flex !important; flex-wrap: wrap; gap: .4em .5em;
	list-style: none !important; margin: 1em 0 !important; padding: 0 !important; counter-reset: ccpr;
	font-size: .9em;
}
.ccpr .ccpr-progress li {
	counter-increment: ccpr;
	display: flex !important; align-items: center; gap: .45em;
	position: static !important; list-style: none !important;
	margin: 0 !important; padding: .3em .8em .3em .3em !important; border-radius: 999px;
	background: var(--ccpr-bg-soft); color: var(--ccpr-muted); line-height: 1.3;
}
.ccpr .ccpr-progress li::before {
	content: counter(ccpr) !important;
	position: static !important; left: auto !important; top: auto !important; transform: none !important;
	display: inline-flex !important; align-items: center; justify-content: center;
	flex: none; width: 1.8em !important; height: 1.8em !important; margin: 0 !important; padding: 0 !important;
	border: 2px solid currentColor !important; border-radius: 50% !important;
	background: #fff !important; color: inherit !important;
	font-size: .95em !important; font-weight: bold; line-height: 1 !important; text-indent: 0 !important;
}
.ccpr .ccpr-progress li::after { content: none !important; display: none !important; }
.ccpr .ccpr-progress li.is-done { color: var(--ccpr-text); }
.ccpr .ccpr-progress li.is-done::before { content: "✓" !important; }
.ccpr .ccpr-progress li[aria-current="step"] { background: var(--ccpr-accent); color: var(--ccpr-accent-text); font-weight: bold; }
.ccpr .ccpr-progress li[aria-current="step"]::before { color: var(--ccpr-accent) !important; border-color: #fff !important; }

/* Étapes */
.ccpr-step { margin: 0 0 1.5em; }
.ccpr:not(.ccpr--js) .ccpr-step { border-top: 1px solid #ddd; padding-top: 1em; }
.ccpr-step > h3 { font-size: 1.25em; margin: .5em 0; }
.ccpr-step > h3:focus { outline: none; }
.ccpr-step > h3:focus-visible { outline: 3px solid var(--ccpr-accent); outline-offset: 4px; }
.ccpr--js .ccpr-step__num { display: block; font-size: .75em; font-weight: normal; color: var(--ccpr-muted); }

.ccpr fieldset {
	border: 1px solid #d0d0d0; border-radius: var(--ccpr-radius);
	padding: .75em 1em 1em; margin: 0 0 1em; min-width: 0;
}
.ccpr legend { font-weight: bold; padding: 0 .35em; font-size: 1.05em; }
.ccpr fieldset:focus { outline: 3px solid var(--ccpr-accent); outline-offset: 2px; }

/* Quantités */
.ccpr-qty {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
	gap: .5em 1em; padding: .6em 0; border-bottom: 1px solid #eee;
}
.ccpr-qty:last-of-type { border-bottom: 0; }
.ccpr-qty__label { flex: 1 1 14em; font-weight: 600; }
.ccpr-price, .ccpr-detail { display: block; font-weight: normal; color: var(--ccpr-muted); font-size: .92em; }
.ccpr-qty__ctrl { display: flex; align-items: stretch; }
.ccpr .ccpr-qty__input {
	width: 4.5em !important; max-width: 4.5em; flex: none; background: #fff !important; padding: 0 !important; min-height: 44px; text-align: center; font-size: 1.05em;
	border: 1px solid var(--ccpr-border); border-radius: 0; margin: 0;
	-moz-appearance: textfield;
}
.ccpr:not(.ccpr--js) .ccpr-qty__input { border-radius: var(--ccpr-radius); }
.ccpr-qty__input::-webkit-outer-spin-button,
.ccpr-qty__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ccpr-qty__btn {
	min-width: 44px; min-height: 44px; padding: 0 .5em;
	border: 1px solid var(--ccpr-border); background: #fff; color: var(--ccpr-text);
	font-size: 1.3em; line-height: 1; cursor: pointer;
}
.ccpr-qty__btn[data-step="-1"] { border-radius: var(--ccpr-radius) 0 0 var(--ccpr-radius); border-right: 0; }
.ccpr-qty__btn[data-step="1"] { border-radius: 0 var(--ccpr-radius) var(--ccpr-radius) 0; border-left: 0; }
.ccpr-qty__btn:hover { background: var(--ccpr-bg-soft); }
.ccpr-qty .ccpr-error { flex-basis: 100%; }

.ccpr-count { margin: 0 0 .5em; font-weight: 600; }
.ccpr-count.is-ok { color: var(--ccpr-ok); }
.ccpr-count.is-ok::before { content: "✓ "; }
.ccpr-single { margin: .4em 0; font-weight: 600; }
.ccpr-subtotal, .ccpr-fromage {
	padding: .6em .9em; background: var(--ccpr-bg-soft); border-radius: var(--ccpr-radius); font-weight: 600;
}

/* Champs texte */
.ccpr-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16em), 1fr)); gap: .25em 1.25em; }
.ccpr-field { margin: 0 0 .9em; }
.ccpr-field--wide { grid-column: 1 / -1; }
.ccpr-field > label { display: block; font-weight: 600; margin-bottom: .25em; }
.ccpr-field .ccpr-help { margin: 0 0 .3em; font-size: .92em; }
.ccpr input[type="text"], .ccpr input[type="date"], .ccpr input[type="time"], .ccpr input[type="email"], .ccpr input[type="tel"], .ccpr select, .ccpr textarea {
	width: 100%; min-height: 44px; padding: .5em .65em; font: inherit; color: inherit;
	border: 1px solid var(--ccpr-border); border-radius: var(--ccpr-radius); background: #fff;
}
.ccpr [aria-invalid="true"] { border-color: var(--ccpr-error) !important; border-width: 2px !important; }
.ccpr :focus-visible { outline: 3px solid var(--ccpr-accent); outline-offset: 2px; }

.ccpr-choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15em), 1fr)); gap: .5em; }
.ccpr .ccpr-choice {
	display: flex !important; align-items: center; gap: .7em; margin: 0;
	min-height: 44px; padding: .55em .8em; cursor: pointer; font-weight: normal;
	border: 1px solid var(--ccpr-border); border-radius: var(--ccpr-radius); background: #fff;
}
.ccpr .ccpr-choice input { position: static !important; flex: none; width: 1.2em; height: 1.2em; margin: 0 !important; }
.ccpr .ccpr-choice:has(input:checked) { border: 2px solid var(--ccpr-accent); background: var(--ccpr-bg-soft); font-weight: 600; }
.ccpr .ccpr-choice:has(input:focus-visible) { outline: 3px solid var(--ccpr-accent); outline-offset: 2px; }

.ccpr-consent { display: flex; flex-wrap: wrap; gap: .6em; align-items: flex-start; }
.ccpr-consent input { width: 1.3em; height: 1.3em; margin: .15em 0 0; flex: none; }
.ccpr-consent label { flex: 1 1 0; font-weight: normal; }
.ccpr-consent .ccpr-error { flex-basis: 100%; }

/* Erreurs */
.ccpr-error { color: var(--ccpr-error); font-weight: 600; margin: .3em 0 0; }
.ccpr-error::before { content: "⚠ "; }
.ccpr-errors {
	border: 2px solid var(--ccpr-error); border-radius: var(--ccpr-radius);
	padding: .75em 1em; margin: 0 0 1em; background: #fff5f6;
}
.ccpr-errors:focus { outline: 3px solid var(--ccpr-error); outline-offset: 2px; }
.ccpr-errors h3 { margin: 0 0 .4em; font-size: 1.05em; color: var(--ccpr-error); }
.ccpr-errors ul { margin: 0; padding-left: 1.2em; }
.ccpr-errors a { color: var(--ccpr-error); }

/* Récapitulatif */
.ccpr-recap { border: 1px solid #d0d0d0; border-radius: var(--ccpr-radius); padding: .75em 1em; margin: 0 0 1em; background: #fafafa; }
.ccpr-recap h4 { margin: 0 0 .5em; font-size: 1.05em; }
.ccpr-table-wrap { overflow-x: auto; }
.ccpr-table { width: 100%; border-collapse: collapse; font-size: .95em; }
.ccpr-table th, .ccpr-table td { padding: .4em .5em; border-bottom: 1px solid #e3e3e3; text-align: left; vertical-align: top; }
.ccpr-table td { text-align: right; white-space: nowrap; }
.ccpr-table tbody th { font-weight: normal; }
.ccpr-table tfoot th, .ccpr-table tfoot td { font-weight: bold; border-bottom: 0; }
.ccpr-recap__dishes { margin: .75em 0 0; padding-left: 1.2em; }

/* Boutons */
.ccpr-nav { display: flex; flex-wrap: wrap; gap: .75em; justify-content: space-between; margin-top: 1em; }
.ccpr-btn {
	min-height: 44px; padding: .6em 1.2em; font: inherit; font-weight: 600; cursor: pointer;
	border: 2px solid var(--ccpr-accent); border-radius: var(--ccpr-radius);
	background: #fff; color: var(--ccpr-accent);
}
.ccpr-btn--primary { background: var(--ccpr-accent); color: var(--ccpr-accent-text); margin-left: auto; }
.ccpr-btn:hover { filter: brightness(.92); }
.ccpr-btn[disabled] { opacity: .6; cursor: progress; }

.ccpr-done { padding: 1.25em; border-left: 5px solid var(--ccpr-ok); background: var(--ccpr-bg-soft); font-size: 1.1em; }
.ccpr-done:focus { outline: 3px solid var(--ccpr-accent); outline-offset: 2px; }

@media (max-width: 480px) {
	.ccpr fieldset { padding: .5em .75em .75em; }
	.ccpr-nav { flex-direction: column-reverse; }
	.ccpr-btn, .ccpr-btn--primary { width: 100%; margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) { .ccpr * { scroll-behavior: auto !important; } }
@media (forced-colors: active) {
	.ccpr-progress li[aria-current="step"] { border: 2px solid CanvasText; }
	.ccpr-choice input:checked + label { border: 3px solid Highlight; }
}

/* Liste déroulante : flèche visible même si le thème la masque */
.ccpr select {
	-webkit-appearance: none; appearance: none; padding-right: 2.2em !important;
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23333' stroke-width='2'/%3E%3C/svg%3E") no-repeat right .8em center !important;
}

/* Semaine « sur demande » (pic d'activité) */
.ccpr-sur-demande { margin: 1em 0; padding: 1.2em 1.4em; background: var(--ccpr-bg-soft); border-left: 4px solid var(--ccpr-accent); color: var(--ccpr-text); }
.ccpr-sur-demande p:first-child { font-size: 1.15em; font-weight: 600; }
.ccpr-sur-demande p:last-child { margin-bottom: 0; }
.ccpr-sur-demande a { color: var(--ccpr-accent); }

/* Petit déjeuner */
.ccpr-formule { margin-bottom: 1em; padding-bottom: .6em; border-bottom: 1px solid #e6d6dc; }
.ccpr-formule:last-of-type { border-bottom: 0; }
.ccpr-formule__desc { margin: .2em 0 0 1.2em; padding: 0; font-size: .92em; color: var(--ccpr-muted, #555); }
.ccpr-formule__desc li { margin: 0; }
.ccpr-surcout { margin-top: .8em; }
.ccpr-surcout.is-active { padding: .6em .8em; background: var(--ccpr-bg-soft); border-left: 4px solid var(--ccpr-accent); color: var(--ccpr-text); }
