/* Calendrier des séjours — commun à l'admin et au site. Couleurs neutres basées sur la couleur du texte. */
.fffd-cal { --line: color-mix(in srgb, currentColor 14%, transparent); --soft: color-mix(in srgb, currentColor 5%, transparent); position: relative; font-size: 14px; }
.fffd-cal.is-loading { opacity: .55; pointer-events: none; transition: opacity .2s; }
.fffd-cal__head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.fffd-cal__title { flex: 1; margin: 0 6px; font-size: 1.25em; text-transform: capitalize; text-align: center; }
.fffd-cal__nav, .fffd-cal__today { min-width: 40px; height: 40px; padding: 0 12px; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: inherit; font: inherit; font-size: 1.1em; cursor: pointer; }
.fffd-cal__today { font-size: .9em; }
.fffd-cal__nav:hover, .fffd-cal__today:hover { background: var(--soft); }
.fffd-cal__grid { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; user-select: none; -webkit-user-select: none; }
.fffd-cal__daynames { display: grid; grid-template-columns: repeat(7, 1fr); background: var(--soft); border-bottom: 1px solid var(--line); }
.fffd-cal__daynames span { padding: 6px 8px; font-size: .78em; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; opacity: .7; }
.fffd-cal__week { display: grid; grid-template-columns: repeat(7, 1fr); grid-template-rows: 30px repeat(var(--lanes, 1), 28px) 10px; row-gap: 3px; min-height: 92px; border-bottom: 1px solid var(--line); }
.fffd-cal__week:last-child { border-bottom: 0; }
.fffd-cal__day { grid-row: 1 / -1; border-right: 1px solid var(--line); padding: 6px 8px; touch-action: none; }
.fffd-cal__day:nth-child(7) { border-right: 0; }
.fffd-cal__day.is-out { background: var(--soft); }
.fffd-cal__day.is-out .fffd-cal__num { opacity: .4; }
.fffd-cal__day.is-past .fffd-cal__num { opacity: .45; }
.fffd-cal__num { font-size: .85em; font-weight: 600; font-variant-numeric: tabular-nums; }
.fffd-cal__day.is-today .fffd-cal__num { display: inline-grid; place-items: center; min-width: 24px; height: 24px; margin: -3px 0 0 -4px; border-radius: 999px; background: #bf561c; color: #fff; opacity: 1; }
.fffd-cal__day.is-sel { background: color-mix(in srgb, #2271b1 18%, transparent); }
.fffd-cal--admin .fffd-cal__day { cursor: cell; }
.fffd-bar {
	position: relative; z-index: 1; display: flex; align-items: center; gap: 6px; min-width: 0; height: 28px; margin: 0 4px; padding: 0 10px;
	border: 0; border-radius: 8px; background: var(--c, #1f6f8b); color: #fff; font: inherit; font-size: .82em; font-weight: 600; text-align: left; cursor: pointer;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
}
.fffd-bar:hover { filter: brightness(1.08); }
.fffd-bar:focus-visible { outline: 3px solid color-mix(in srgb, var(--c) 45%, #fff); outline-offset: 2px; }
.fffd-bar.cont-left { margin-left: 0; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.fffd-bar.cont-right { margin-right: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }
.fffd-bar__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fffd-bar__badge { flex: none; margin-left: auto; padding: 1px 7px; border-radius: 999px; background: rgba(255, 255, 255, .22); font-size: .9em; font-weight: 600; }
.fffd-bar.is-reserved, .fffd-bar.is-full { background: repeating-linear-gradient(135deg, var(--c) 0 8px, color-mix(in srgb, var(--c) 70%, #000) 8px 16px); }
.fffd-bar.is-past { opacity: .5; }
@media (max-width: 640px) {
	.fffd-cal { font-size: 12px; }
	.fffd-cal__daynames span { padding: 4px 2px; text-align: center; font-size: .7em; }
	.fffd-cal__day { padding: 4px; }
	.fffd-cal__week { grid-template-rows: 24px repeat(var(--lanes, 1), 22px) 6px; min-height: 64px; }
	.fffd-bar { height: 22px; margin: 0 1px; padding: 0 5px; font-size: .78em; }
	.fffd-bar__badge { display: none; }
	.fffd-cal__today { display: none; }
}
