.fr-resa {
  --fr-ink: var(--e-global-color-text, #0F273C);
  --fr-sage: var(--e-global-color-accent, #98B8A5);
  --fr-cream: var(--e-global-color-primary, #EEE9E2);
  --fr-red: #C66360;
  --fr-line: rgba(15, 39, 60, .14);
  font-family: "Montserrat", system-ui, sans-serif;
  color: var(--fr-ink);
  background: #fff;
  border: 1px solid var(--fr-line);
  border-radius: 6px;
  padding: clamp(18px, 3vw, 36px);
  box-sizing: border-box;
  max-width: 1140px;
  margin: 0 auto;
  text-align: left;
}
.fr-resa *, .fr-resa *::before, .fr-resa *::after { box-sizing: border-box; }
.fr-head { margin-bottom: 22px; }
.fr-title {
  font-family: "Labor Union", "Montserrat", sans-serif;
  text-transform: uppercase;
  font-weight: 400;
  font-size: clamp(22px, 2.6vw, 30px);
  letter-spacing: .02em;
  margin: 0 0 6px;
  color: var(--fr-ink);
}
.fr-direct { margin: 0; font-size: 15px; line-height: 1.5; }
.fr-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: clamp(20px, 3vw, 40px); align-items: start; }
@media (max-width: 900px) { .fr-grid { grid-template-columns: 1fr; } }

/* Calendrier */
.fr-cal-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.fr-cal-hint { font-size: 13px; font-weight: 600; text-align: center; }
.fr-prev, .fr-next {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--fr-line) !important; background: #fff !important; color: var(--fr-ink) !important;
  font-size: 22px; line-height: 1; padding: 0 !important; cursor: pointer;
}
.fr-prev:hover:not(:disabled), .fr-next:hover:not(:disabled) { background: var(--fr-cream) !important; }
.fr-prev:disabled, .fr-next:disabled { opacity: .3; cursor: default; }
.fr-cal { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 24px; min-height: 290px; }
.fr-month-name { text-align: center; font-weight: 600; text-transform: capitalize; margin-bottom: 8px; font-size: 15px; }
.fr-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px 0; }
.fr-dow { text-align: center; font-size: 11px; text-transform: uppercase; opacity: .6; padding-bottom: 4px; }
.fr-day {
  aspect-ratio: 1 / 1; width: 100%; min-height: 34px;
  border: 0 !important; border-radius: 0 !important; background: transparent !important;
  color: var(--fr-ink) !important; font: 500 14px/1 "Montserrat", sans-serif !important;
  padding: 0 !important; cursor: pointer; position: relative;
}
.fr-day:hover:not(:disabled) { background: var(--fr-cream) !important; border-radius: 50% !important; }
.fr-day:disabled { cursor: default; }
.fr-day.is-past { opacity: .25; }
.fr-day.is-busy { color: rgba(15, 39, 60, .35) !important; text-decoration: line-through; }
.fr-day.is-today { font-weight: 700 !important; }
.fr-day.is-candidate { background: rgba(152, 184, 165, .16) !important; }
.fr-day.is-range { background: rgba(152, 184, 165, .45) !important; }
.fr-day.is-start, .fr-day.is-end, .fr-day.is-start:hover, .fr-day.is-end:hover { background: var(--fr-ink) !important; color: #fff !important; border-radius: 50% !important; text-decoration: none; }
.fr-legend { display: flex; flex-wrap: wrap; gap: 16px; font-size: 12px; margin-top: 12px; }
.fr-legend span { display: inline-flex; align-items: center; gap: 6px; }
.fr-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; border: 1px solid var(--fr-line); }
.fr-dot-busy { background: repeating-linear-gradient(135deg, #fff 0 3px, rgba(15,39,60,.25) 3px 4px); }
.fr-dot-sel { background: var(--fr-ink); border-color: var(--fr-ink); }
.fr-loading { grid-column: 1 / -1; text-align: center; opacity: .7; align-self: center; }

/* Formulaire */
.fr-form { display: flex; flex-direction: column; gap: 12px; }
.fr-summary { background: var(--fr-cream); border-radius: 6px; padding: 14px 16px; }
.fr-dates { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fr-lbl { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; opacity: .7; }
.fr-dates strong { font-size: 15px; }
.fr-price:not(:empty) { margin-top: 12px; border-top: 1px solid var(--fr-line); padding-top: 10px; }
.fr-line { display: flex; justify-content: space-between; font-size: 14px; padding: 2px 0; }
.fr-total { font-weight: 700; font-size: 16px; margin-top: 4px; }
.fr-season { font-size: 12px; margin: 6px 0 0; opacity: .75; line-height: 1.45; }
.fr-warn { color: var(--fr-red); font-size: 13px; margin: 6px 0 0; }
.fr-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 420px) { .fr-row { grid-template-columns: 1fr; } }
.fr-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: 600; }
.fr-opt { font-weight: 400; opacity: .7; }
.fr-form input:not([type=checkbox]), .fr-form select, .fr-form textarea {
  width: 100%; font: 400 15px "Montserrat", sans-serif; color: var(--fr-ink);
  border: 1px solid var(--fr-line); border-radius: 4px; padding: 10px 12px; background: #fff;
}
.fr-form input:focus, .fr-form select:focus, .fr-form textarea:focus { outline: 2px solid var(--fr-sage); outline-offset: 1px; }
.fr-form .fr-check { flex-direction: row; align-items: flex-start; gap: 8px; font-weight: 400; }
.fr-check input { margin-top: 3px; }
.fr-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.fr-submit {
  background: var(--fr-ink) !important; color: #fff !important; border: 0 !important; border-radius: 4px !important;
  padding: 14px 18px !important; font: 600 15px "Montserrat", sans-serif !important; cursor: pointer; width: 100%;
}
.fr-submit:hover:not(:disabled) { background: #1c3b57 !important; }
.fr-submit:disabled { opacity: .45; cursor: default; }
.fr-note { font-size: 12px; margin: 0; opacity: .75; line-height: 1.5; }
.fr-msg { margin: 0; font-size: 14px; }
.fr-msg.is-error { color: var(--fr-red); font-weight: 600; }
.fr-done { background: rgba(152, 184, 165, .25); border-radius: 6px; padding: 22px; }
.fr-done h4 { margin: 0 0 8px; font-size: 18px; color: var(--fr-ink); }
.fr-done p { margin: 0; line-height: 1.6; }
