.crabes-resa {
	--cr-ink: var(--wp--preset--color--contrast, #1d2b36);
	--cr-sea: var(--wp--preset--color--primary, #1f5f7a);
	--cr-sand: #f3ece0;
	--cr-line: color-mix(in srgb, var(--cr-ink) 22%, transparent);
	max-width: 46rem;
	margin: 2rem auto;
	color: var(--cr-ink);
	font: inherit;
}
.crabes-resa fieldset {
	border: 0;
	margin: 0 0 1.75rem;
	padding: 0;
}
.crabes-resa legend {
	font-size: 1.25em;
	font-weight: 600;
	margin-bottom: .75rem;
	padding: 0;
}
.crabes-resa label {
	display: flex;
	flex-direction: column;
	gap: .35rem;
	margin-bottom: 1rem;
	font-size: .95em;
}
.crabes-resa__grille {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
	column-gap: 1rem;
}
.crabes-resa input[type="text"],
.crabes-resa input[type="email"],
.crabes-resa input[type="tel"],
.crabes-resa input[type="date"],
.crabes-resa input[type="number"],
.crabes-resa input[type="file"],
.crabes-resa textarea {
	width: 100%;
	box-sizing: border-box;
	padding: .65rem .75rem;
	border: 1px solid var(--cr-line);
	border-radius: 6px;
	background: #fff;
	color: inherit;
	font: inherit;
	font-size: 1rem;
}
.crabes-resa input:focus-visible,
.crabes-resa textarea:focus-visible,
.crabes-resa button:focus-visible {
	outline: 3px solid var(--cr-sea);
	outline-offset: 2px;
}
.crabes-resa label.crabes-resa__case {
	flex-direction: row;
	align-items: flex-start;
	gap: .6rem;
	line-height: 1.45;
}
.crabes-resa__case input {
	margin-top: .25rem;
	width: 1.1rem;
	height: 1.1rem;
	flex: none;
}
.crabes-resa__aide {
	font-size: .85em;
	opacity: .75;
}
.crabes-resa__piege {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* L'estimation : un ticket de sable, bord gauche couleur mer. */
.crabes-resa__estimation {
	background: var(--cr-sand);
	border-left: 4px solid var(--cr-sea);
	border-radius: 0 8px 8px 0;
	padding: 1.1rem 1.25rem .9rem;
	margin: -.5rem 0 2rem;
	color: #1d2b36;
}
.crabes-resa__estimation h4 {
	margin: 0 0 .6rem;
	font-size: 1.05em;
}
.crabes-resa__estimation dl {
	margin: 0;
}
.crabes-resa__estimation dl > div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: .3rem 0;
	border-bottom: 1px dotted rgba(29, 43, 54, .25);
}
.crabes-resa__estimation dt,
.crabes-resa__estimation dd {
	margin: 0;
}
.crabes-resa__estimation dd {
	text-align: right;
	font-variant-numeric: tabular-nums;
}
.crabes-resa__estimation .crabes-resa__total {
	font-weight: 700;
	border-bottom: 2px solid rgba(29, 43, 54, .5);
}
.crabes-resa__note {
	font-size: .85em;
	margin: .7rem 0 0;
	opacity: .8;
}
.crabes-resa__envoyer {
	margin-top: .5rem;
	padding: .85rem 1.6rem;
	font-size: 1rem;
	cursor: pointer;
}
.crabes-resa__envoyer:disabled {
	opacity: .6;
	cursor: wait;
}
.crabes-resa__erreurs {
	border: 2px solid #b3261e;
	border-radius: 8px;
	padding: .8rem 1rem;
	margin-bottom: 1.5rem;
	color: #b3261e;
	background: #fff;
}
.crabes-resa__erreurs p { margin: 0 0 .4rem; font-weight: 600; }
.crabes-resa__erreurs ul { margin: 0; padding-left: 1.2rem; }
.crabes-resa__merci {
	background: var(--cr-sand);
	border-left: 4px solid var(--cr-sea);
	border-radius: 0 8px 8px 0;
	padding: 1.2rem 1.4rem;
	color: #1d2b36;
}
.crabes-resa__merci h3 { margin-top: 0; }

/* Page de signature */
.crabes-sign { max-width: 44rem; margin: 2rem auto; padding: 0 1rem; }
.crabes-sign .crabes-resa__estimation { margin: 1rem 0 1.5rem; }
.crabes-sign__pdf { display: inline-block; margin: .5rem 0 1.5rem; font-weight: 600; }

@media (prefers-reduced-motion: no-preference) {
	.crabes-resa__estimation:not([hidden]) { animation: cr-in .25s ease-out; }
	@keyframes cr-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
}

/* Calendrier */
.crabes-cal {
	border: 1px solid var(--cr-line);
	border-radius: 8px;
	padding: .9rem;
	margin-bottom: 1.25rem;
	background: #fff;
	color: #1d2b36;
	max-width: 24rem;
}
.crabes-cal__choix { margin: 0 0 .7rem; font-size: .95em; min-height: 2.6em; }
.crabes-cal__nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5rem; }
.crabes-cal__mois { text-transform: capitalize; }
.crabes-cal__nav button {
	background: none; border: 1px solid var(--cr-line); border-radius: 6px;
	width: 2.4rem; height: 2.4rem; font-size: 1.3rem; line-height: 1; cursor: pointer; color: inherit;
}
.crabes-cal__nav button:disabled { opacity: .3; cursor: default; }
.crabes-cal__grille { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.crabes-cal__jour { text-align: center; font-size: .75em; opacity: .6; padding-bottom: .2rem; }
.crabes-cal__d {
	aspect-ratio: 1; border: 0; border-radius: 6px; background: #eef5f8; color: #1d2b36;
	font: inherit; font-size: .95em; cursor: pointer; padding: 0; font-variant-numeric: tabular-nums;
}
.crabes-cal__d:disabled { cursor: default; }
.crabes-cal__d.is-passe { background: transparent; color: #b5bcc2; }
.crabes-cal__d.is-pris { background: repeating-linear-gradient(135deg, #f1e3e1, #f1e3e1 4px, #fbf3f2 4px, #fbf3f2 8px); color: #a28a87; text-decoration: line-through; }
.crabes-cal__d.is-depart-possible { background: #d7ebf2; }
.crabes-cal__d.is-pris.is-depart-possible { background: #d7ebf2; color: #1d2b36; text-decoration: none; }
.crabes-cal__d.is-dedans { background: #b9dbe7; }
.crabes-cal__d.is-arrivee, .crabes-cal__d.is-depart { background: var(--cr-sea); color: #fff; font-weight: 700; }
.crabes-cal__d:not(:disabled):hover { outline: 2px solid var(--cr-sea); }
.crabes-cal__d:disabled:not(.is-pris):not(.is-passe):not(.is-arrivee) { opacity: .45; }
.crabes-cal__legende { font-size: .8em; margin: .7rem 0 0; opacity: .85; line-height: 1.6; }
.crabes-cal__pastille { display: inline-block; width: .8em; height: .8em; border-radius: 3px; vertical-align: -.05em; margin-left: .3em; }
.crabes-cal__pastille--libre { background: #eef5f8; border: 1px solid #c9dde6; }
.crabes-cal__pastille--pris { background: repeating-linear-gradient(135deg, #f1e3e1, #f1e3e1 2px, #fbf3f2 2px, #fbf3f2 4px); border: 1px solid #e0cdca; }
.crabes-cal__d.is-pris.is-depart { text-decoration: none; }

/* Fenêtre de confirmation */
.crabes-modal {
	border: 0;
	border-radius: 14px;
	padding: 2rem 1.6rem 1.5rem;
	max-width: min(24rem, calc(100vw - 2.5rem)) !important;
	width: 24rem;
	margin: auto !important;
	box-sizing: border-box;
	text-align: center;
	color: #1d2b36;
	background: #fff;
	box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
}
.crabes-modal::backdrop { background: rgba(20, 35, 45, .55); }
.crabes-modal[open]:not(:modal) { position: fixed; inset: 0; margin: auto; height: fit-content; z-index: 9999; }
.crabes-modal__icone {
	width: 3.2rem; height: 3.2rem; margin: 0 auto .9rem; border-radius: 50%;
	background: #2e7d5b; color: #fff; font-size: 1.7rem; line-height: 3.2rem; font-weight: 700;
}
.crabes-modal h3 { margin: 0 0 .6rem; font-size: 1.25em; }
.crabes-modal p { margin: 0 0 .7rem; line-height: 1.5; }
.crabes-modal__petit { font-size: .85em; opacity: .75; }
.crabes-modal form { margin-top: 1rem; }
.crabes-modal button { padding: .7rem 1.8rem; cursor: pointer; }
@media (prefers-reduced-motion: no-preference) {
	.crabes-modal[open] { animation: cr-pop .22s ease-out; }
	@keyframes cr-pop { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: none; } }
}

.crabes-modal--erreur .crabes-modal__icone { background: #b3261e; }
.crabes-modal--erreur ul { text-align: left; margin: 0 0 .8rem; padding-left: 1.2rem; }
.crabes-modal--erreur li { margin-bottom: .3rem; }

/* Calendrier compact (téléphone et ordinateur) */
.crabes-resa .crabes-cal, .crabes-sign .crabes-cal { max-width: 21rem !important; padding: .7rem !important; }
.crabes-cal__choix { font-size: .9em !important; min-height: 0 !important; margin-bottom: .5rem !important; line-height: 1.35 !important; }
.crabes-cal__nav { margin-bottom: .3rem !important; }
.crabes-cal__mois { font-size: .95rem !important; }
.crabes-cal .crabes-cal__nav button {
	-webkit-appearance: none !important; appearance: none !important;
	width: 2rem !important; height: 2rem !important; min-height: 0 !important; min-width: 0 !important;
	padding: 0 !important; margin: 0 !important; font-size: 1.1rem !important; line-height: 1 !important;
	display: inline-flex !important; align-items: center !important; justify-content: center !important;
	background: #fff !important; color: #1d2b36 !important; box-shadow: none !important;
}
.crabes-cal__grille { gap: 2px !important; }
.crabes-cal__jour { font-size: .68rem !important; padding-bottom: 0 !important; }
.crabes-cal .crabes-cal__d {
	-webkit-appearance: none !important; appearance: none !important;
	aspect-ratio: auto !important; height: 2.05rem !important; min-height: 0 !important; min-width: 0 !important;
	width: 100% !important; padding: 0 !important; margin: 0 !important;
	font-size: .85rem !important; line-height: 2.05rem !important; border-radius: 5px !important;
	box-shadow: none !important; text-transform: none !important; letter-spacing: 0 !important; font-weight: 400;
}
.crabes-cal .crabes-cal__d.is-arrivee, .crabes-cal .crabes-cal__d.is-depart { font-weight: 700; }
.crabes-cal__legende { font-size: .72rem !important; margin-top: .45rem !important; line-height: 1.4 !important; }

.crabes-resa__cni{border:1px solid #d9e3e8;border-radius:8px;padding:.6rem .8rem .4rem;margin:.8rem 0}
.crabes-resa__cni legend{font-weight:600;padding:0 .3rem}
.crabes-resa__cni legend .crabes-resa__aide{display:block;font-weight:400}
.crabes-resa__cni-face{display:block;margin:.45rem 0}
.crabes-resa__cni-face span{display:block;font-size:.92em;margin-bottom:.2rem}
.crabes-resa__cni-face[hidden]{display:none}
.cr-req{color:#c62828;font-weight:700}
.cr-req-note{font-size:13px;color:#555;margin:0 0 10px}
.cr-erreur input,.cr-erreur select,.cr-erreur textarea{border:2px solid #c62828!important;background:#fff5f5!important}
.cr-erreur.crabes-cal{outline:2px solid #c62828;outline-offset:2px;border-radius:8px}
.cr-erreur.crabes-resa__case{color:#c62828}
.cr-msg{display:block;color:#c62828;font-size:13px;font-weight:600;margin-top:4px}
