:root {
  /* Palette du fichier : couleurs écrites en dur remplacées par ces variables (mêmes valeurs). */
  --c-amber-27: #8a5a00;
  --c-amber-52: #d7a334;
  --c-amber-7: #18130a;
  --c-blue-48: #1d4ed8;
  --c-gray-50-a12: rgba(127, 127, 127, 0.12);
  --c-gray-50-a18: rgba(127, 127, 127, 0.18);
  --c-green-30: #1a7f37;
  --c-green-39: #25a05a;
  --c-green-40: #2e9d5f;
  --c-orange-37: #b45309;
  --c-red-42: #b91c1c;
  --c-red-49: #d92d20;
  --c-red-58: #d9534f;
  --c-red-95: #fdecea;
  --c-white: #fff;
}
.booking-panel {
  color: var(--theme-text);
  min-width: 0;
}
.booking-heading,
.booking-actions,
.booking-step-actions,
.booking-dialog-top {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.booking-heading {
  justify-content: space-between;
}
.booking-grid {
  display: grid;
  gap: 12px;
}
.booking-panel fieldset,
.booking-dialog fieldset {
  min-width: 0;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 16px;
  margin: 12px 0;
  background: var(--theme-surface);
}
.booking-panel legend,
.booking-dialog legend {
  font-weight: 700;
  padding: 0 6px;
}
.booking-panel label,
.booking-dialog label {
  display: grid;
  gap: 6px;
  margin: 8px 0;
}
.booking-panel input,
.booking-panel select,
.booking-panel textarea,
.booking-dialog input,
.booking-dialog select,
.booking-dialog textarea {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--theme-border);
  border-radius: 8px;
  background: var(--theme-input);
  color: var(--theme-text);
  font: inherit;
}
.booking-panel button,
.booking-dialog button {
  padding: 10px 14px;
  min-height: 44px;
  border: 1px solid var(--theme-border);
  border-radius: 9px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  cursor: pointer;
  font: inherit;
}
.booking-panel button:disabled,
.booking-dialog button:disabled {
  opacity: 0.55;
  cursor: default;
}
.booking-dialog {
  max-height: 85dvh;
  border: 1px solid var(--theme-border);
  border-radius: 16px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.booking-dialog::backdrop {
  background: #0008;
}
.booking-dialog-top {
  justify-content: space-between;
}
.booking-dialog form {
  display: grid;
  gap: 10px;
}
.booking-suggestions:empty {
  display: none;
}
.booking-suggestions button {
  text-align: left;
  background: var(--theme-soft) !important;
  color: var(--theme-text) !important;
  overflow-wrap: anywhere;
}
.booking-suggestions small {
  display: block;
  color: var(--theme-muted);
}
.booking-panel .booking-check,
.booking-dialog .booking-check {
  display: flex;
  align-items: center;
  gap: 8px;
}
.booking-check input {
  width: auto;
}
.booking-panel .booking-delay {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 12px;
  font-size: 0.95rem;
}
.booking-delay select {
  width: auto;
  max-width: 120px;
}
.booking-step {
  padding: 8px;
  border-left: 3px solid var(--theme-accent);
  margin: 10px 0;
}
#customer-results {
  display: grid;
  gap: 6px;
  max-height: 200px;
  overflow: auto;
}
#customer-results button {
  text-align: left;
}
#booking-price-result {
  margin-top: 12px;
  padding: 12px;
  border-radius: 9px;
  background: var(--theme-soft);
}
#booking-error,
.dialog-error {
  color: var(--theme-text);
  font-weight: 700;
}
.booking-panel [hidden] {
  display: none !important;
}
.booking-dialog button:focus-visible,
.booking-dialog input:focus-visible,
.booking-dialog select:focus-visible {
  outline: 3px solid var(--theme-focus);
  outline-offset: 2px;
}
@media (max-width: 600px) {
  .booking-grid {
    grid-template-columns: 1fr;
  }
  .booking-panel fieldset {
    padding: 10px;
  }
  .booking-dialog {
    padding: 14px;
  }
  .booking-panel .booking-delay {
    font-size: 0.8rem;
    gap: 6px;
  }
  .booking-delay select {
    max-width: 108px;
  }
}

#admin-board .booking-panel .booking-delay {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
}
#admin-board .booking-panel .booking-check {
  display: flex;
  align-items: center;
}
#admin-board .booking-panel .booking-delay select {
  width: auto;
}
#admin-board .booking-panel a {
  color: var(--theme-accent);
}
/* V0145: readable offers and one editable date display across all six themes. */
#admin-board .booking-panel #booking-date-control {
  width: 100%;
  text-align: left;
  min-height: 44px;
  background: var(--theme-input);
  color: var(--theme-text);
  border-color: var(--theme-border);
  overflow-wrap: anywhere;
}
.booking-option {
  padding: 8px 0;
  border-bottom: 1px solid var(--theme-border);
}
.booking-option p {
  margin: 3px 0 8px;
}
.booking-offer-card {
  background: var(--theme-surface);
  border: 2px solid var(--theme-border);
  border-radius: 12px;
  padding: 14px;
  margin: 10px 0;
}
.booking-offer-card.is-selected {
  border-color: var(--theme-accent);
}
.booking-offer-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.booking-offer-heading strong {
  font-size: 1.3rem;
}
.booking-unavailable {
  padding: 10px;
  border-left: 3px solid var(--theme-border);
}
#booking-courtesy {
  white-space: pre-line;
  color: var(--theme-text);
}
#admin-board .booking-panel .booking-check input {
  min-height: 18px;
  height: 18px;
  width: 18px;
}
.booking-baggage {
  margin-top: 16px;
}
.booking-dialog .booking-check input {
  width: 18px;
  height: 18px;
}
.booking-panel [data-offer-vehicle] {
  width: 100%;
}

#client-board.booking-panel #booking-date-control {
  width: 100%;
  text-align: left;
  background: var(--theme-input);
  color: var(--theme-text);
}
#client-board {
  color: var(--theme-text);
  background: var(--theme-surface);
  padding: 16px;
}
.booking-panel .booking-check input,
.booking-dialog .booking-check input {
  width: 18px;
  min-height: 18px;
}
#client-board [hidden] {
  display: none !important;
}
.booking-dialog [readonly] {
  opacity: 0.8;
}

/* V0147: mobile-first spacing; existing six theme palettes unchanged. */
.booking-panel,
.booking-dialog {
  font-size: 17px;
  line-height: 1.5;
}
.booking-panel input,
.booking-panel select,
.booking-panel button,
.booking-dialog input,
.booking-dialog select,
.booking-dialog button {
  font-size: inherit;
  min-height: 48px;
  max-width: 100%;
}
.booking-panel fieldset {
  margin-block: 20px;
  padding: 16px;
  min-width: 0;
}
.booking-panel label,
.booking-dialog label {
  margin-block: 12px;
  overflow-wrap: anywhere;
}
.booking-panel button,
.booking-dialog button {
  white-space: normal;
}
.booking-customer-actions,
.booking-actions,
.booking-step-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-block: 12px;
}
.booking-customer-actions {
  flex-direction: column;
}
.passenger-row {
  display: grid;
  gap: 8px;
  margin-block: 16px;
  padding: 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  overflow-wrap: anywhere;
}
.passenger-row small {
  display: block;
  font-size: inherit;
}
.passenger-content {
  display: grid;
  gap: 12px;
  min-width: 0;
}
.booking-dialog {
  width: calc(100% - 24px);
  max-width: 640px;
  max-height: 85dvh;
  overflow: auto;
  padding: 16px;
  box-sizing: border-box;
}
.booking-heading {
  flex-wrap: wrap;
  gap: 12px;
}
.booking-grid {
  grid-template-columns: 1fr;
}
.booking-suggestions {
  display: grid;
  gap: 10px;
}
@media (min-width: 768px) {
  .booking-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .booking-customer-actions {
    flex-direction: row;
  }
}

#auth-zone {
  font-size: 17px;
  line-height: 1.5;
}
#auth-zone input,
#auth-zone select,
#auth-zone button {
  font-size: inherit;
  min-height: 48px;
}
#auth-zone fieldset {
  margin-block: 16px;
  padding: 16px;
}
/* V0148 integrated calendar, dispatch and fleet; retain all existing palettes. */
.date-time-dialog {
  width: calc(100% - 12px);
  max-width: 540px;
  padding: 12px;
}
.date-time-dialog h3 {
  margin: 0;
  font-size: 1.15rem;
}
.date-time-dialog form {
  gap: 6px;
}
.calendar-navigation {
  display: flex;
  gap: 6px;
  align-items: center;
  justify-content: space-between;
}
.calendar-navigation button {
  min-width: 44px;
  padding: 6px;
}
.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 2px;
  text-align: center;
}
.calendar-grid button {
  min-width: 0;
  min-height: 44px;
  padding: 4px;
  border-radius: 8px;
  background: var(--theme-input);
  color: var(--theme-text);
}
.calendar-grid button[aria-pressed='true'] {
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  outline: 2px solid var(--theme-focus);
  outline-offset: -2px;
}
.calendar-time {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 12px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}
.calendar-time label {
  margin: 4px 0;
}
.calendar-time span {
  align-self: end;
  margin-bottom: 12px;
}
.calendar-time input {
  text-align: center;
  font-size: 22px;
}
.calendar-month-controls summary {
  min-height: 32px;
  cursor: pointer;
}
.date-time-dialog #calendar-summary {
  margin: 4px 0;
  font-weight: 600;
}
.calendar-grid button:focus-visible {
  outline: 3px solid var(--theme-focus);
}
.fleet-photo {
  width: 100%;
  max-width: 240px;
  max-height: 140px;
  object-fit: contain;
  border-radius: 8px;
}
.dispatch-choice {
  cursor: pointer;
}
.dispatch-choice input {
  width: 22px;
  min-height: 22px;
  vertical-align: middle;
  margin-right: 10px;
}
.booking-dialog [hidden] {
  display: none !important;
}
#booking-success {
  padding: 16px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  margin: 16px 0;
  background: var(--theme-soft);
}

#my-vehicle-top {
  font: inherit;
  font-size: 14px;
  min-height: 44px;
  padding: 8px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}

.ride-vehicle {
  font: inherit;
  min-height: 44px;
  margin: 8px 0;
  padding: 8px 12px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}

/* V0149 mobile corrections */
.booking-dialog-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 12px;
}
.booking-dialog-top h3 {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}
.booking-dialog-top > button {
  justify-self: end;
  min-width: 44px;
}
.booking-dialog .from-contacts {
  justify-self: start;
  text-align: left;
  border: 0;
  background: transparent;
  color: #b84a00;
  padding: 8px 0;
  min-height: 48px;
}
.booking-price-action {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}
.booking-price-action p {
  margin: 0;
  flex: 1;
  min-width: 140px;
}
.booking-price-action .is-error {
  color: #d83232;
  font-weight: 700;
}
.booking-dialog small {
  font-size: 0.85em;
  color: var(--theme-muted);
}
[data-theme='graphite_gold'] .from-contacts {
  color: #ffad66;
}

.booking-dialog .from-contacts {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.from-contacts svg {
  flex: none;
}

[data-theme='graphite_gold'] .booking-price-action .is-error {
  color: #ff8585;
}
/* V0150 approved mobile card layouts */
.vtc-icon {
  width: 22px;
  height: 22px;
  flex: none;
  vertical-align: middle;
}
.ride-sheet[open] {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: calc(100% - 20px);
  max-width: 600px;
  height: min(92dvh, 900px);
  max-height: 92dvh;
  padding: 0;
  overflow: hidden;
}
.ride-sheet > .booking-dialog-top {
  padding: 16px;
  border-bottom: 1px solid var(--theme-border);
  flex: none;
}
.ride-sheet > .booking-dialog-top h3 {
  font-size: 20px;
}
.ride-sheet > .booking-dialog-top button {
  padding: 8px;
  background: transparent;
  color: var(--theme-text);
  border: 0;
}
.ride-sheet-content {
  overflow: auto;
  min-height: 0;
  flex: 1;
  padding: 14px;
  overscroll-behavior: contain;
}
.ride-info-card,
.reservation-card {
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  padding: 14px;
  background: var(--theme-surface);
  margin: 0 0 12px;
}
.ride-info-card h4 {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
  font-size: 16px;
  font-weight: 650;
}
.ride-info-card h4 .vtc-icon {
  color: var(--theme-accent);
}
.ride-info-card p {
  margin: 7px 0;
  overflow-wrap: anywhere;
  font-size: 15px;
}
.ride-info-row {
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 10px 0;
  font-size: 15px;
  min-width: 0;
}
.ride-info-row span {
  flex: 1;
  min-width: 0;
  overflow-wrap: anywhere;
}
.ride-info-row a {
  float: right;
  color: var(--theme-accent);
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
.ride-info-row small {
  display: block;
  color: var(--theme-muted);
}
.ride-route .ride-info-row {
  align-items: flex-start;
}
.ride-route .vtc-icon {
  color: var(--theme-accent);
}
.ride-sheet details summary {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  cursor: pointer;
  color: var(--theme-accent);
}
.ride-sheet details summary:after {
  content: '›';
  margin-left: auto;
}
.ride-sheet details[open] summary:after {
  content: '⌄';
}
.ride-chips,
.ride-customer-type {
  font-size: 14px;
  color: var(--theme-muted);
}
.ride-status-note {
  font-size: 13px;
  color: var(--theme-muted);
}
.ride-sheet-footer {
  flex: none;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 12px 16px max(12px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--theme-border);
  background: var(--theme-bg);
}
.ride-sheet-footer > div {
  display: grid;
}
.ride-sheet-footer small {
  color: var(--theme-muted);
  font-size: 13px;
}
.ride-sheet-footer strong {
  font-size: 28px;
}
.ride-sheet-footer > button:not(.ride-text-action) {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
}
.ride-sheet-footer .ride-text-action {
  width: 100%;
  text-align: center;
  min-height: 36px;
  padding: 4px;
}
.booking-dialog .ride-text-action,
.booking-panel .ride-text-action {
  border: 0;
  background: transparent;
  color: var(--theme-accent);
  font-size: 14px;
}
.ride-warning {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border-radius: 8px;
  background: var(--theme-soft);
  color: var(--theme-text);
}
.ride-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 8px;
  background: var(--theme-soft);
  color: var(--theme-text);
  font-size: 13px;
}
.status-assigned,
.status-completed {
  background: #1a5639;
  color: #d6ffe7;
}
.status-cancelled {
  background: #652c2c;
  color: var(--c-white);
}
.reservation-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}
.booking-panel .ride-open {
  border: 0;
  background: transparent;
  color: var(--theme-text);
  text-align: left;
  min-height: 44px;
  padding: 0;
  width: 100%;
  display: block;
}
.reservation-content {
  margin: 8px 0;
}
.reservation-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--theme-border);
  padding-top: 10px;
  gap: 8px;
}
.reservation-card-footer > strong {
  font-size: 23px;
  color: var(--theme-accent);
}
.reservation-card-footer button {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}
.reservation-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
}
.reservation-toolbar h3 {
  margin-right: auto;
}
.reservation-toolbar button,
.reservation-toolbar a {
  background: transparent !important;
  color: var(--theme-accent) !important;
  border: 0 !important;
  min-height: 44px;
  min-width: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ride-menu {
  position: relative;
  flex: none;
}
.ride-menu summary {
  cursor: pointer;
  min-width: 44px;
  min-height: 44px;
  text-align: center;
  list-style: none;
  font-size: 24px;
}
.ride-menu > div {
  position: absolute;
  right: 0;
  top: 44px;
  z-index: 3;
  width: 210px;
  background: var(--theme-surface);
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  box-shadow: 0 8px 20px #0005;
  padding: 6px;
}
.ride-menu > div button {
  display: block;
  width: 100%;
  text-align: left;
  margin: 4px 0;
  background: transparent;
  color: var(--theme-text);
}
.reservation-filter {
  max-width: 260px;
}
.ride-detail-map {
  height: 260px;
  background: var(--theme-soft);
}
.quantities-dialog {
  max-width: 520px;
}
.quantities-dialog h3 {
  font-size: 19px;
}
.quantities-dialog .quantity-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 4px 0;
  min-height: 48px;
}
.quantity-row > span {
  font-size: 15px;
}
.quantity-row small {
  display: block;
  font-size: 12px;
}
.quantities-dialog .quantity-row select {
  width: 78px;
  flex: none;
  min-height: 44px;
  padding: 8px;
}
.quantities-dialog .measure-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  border-left: 2px solid var(--theme-accent);
  padding-left: 10px;
  margin: 8px 0;
}
.measure-row > strong {
  grid-column: 1/-1;
  font-size: 13px;
}
.quantities-dialog .measure-row label {
  font-size: 12px;
  margin: 0;
}
.measure-row input {
  font-size: 15px;
}
.quantity-help {
  font-size: 12px;
  margin: 0;
  color: var(--theme-muted);
}
.quantity-group:nth-last-child(2) {
  border-top: 1px solid var(--theme-border);
  margin-top: 8px;
  padding-top: 8px;
}
.quantities-dialog #quantities-done {
  justify-self: end;
  padding: 8px 20px;
}
.quantity-error {
  color: #c73131;
  font-size: 14px;
}
.detail-sheet[open] {
  width: 100%;
  max-width: 850px;
  height: 100dvh;
  max-height: 100dvh;
  margin: 0 auto;
  border-radius: 0;
}
.detail-sheet > .booking-dialog-top {
  padding-top: max(12px, env(safe-area-inset-top));
}
.detail-sheet .booking-dialog-top h3 {
  grid-column: 2;
  grid-row: 1;
}
.detail-sheet .booking-dialog-top .close-dialog {
  grid-column: 1;
  grid-row: 1;
}
.ride-sheet > .dialog-error:empty {
  display: none;
}
.ride-sheet > .dialog-error {
  flex: none;
  margin: 0 12px;
}
.dispatch-modes {
  display: grid;
  gap: 8px;
}
.booking-dialog .dispatch-mode {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  padding: 12px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  margin: 0;
}
.dispatch-mode input {
  width: 18px;
  height: 18px;
  min-height: 18px;
  flex: none;
}
.booking-dialog #dispatch-withdraw {
  background: transparent;
  color: var(--theme-text);
  border-color: var(--theme-border);
}
@media (min-width: 768px) {
  .detail-sheet[open] {
    height: 94dvh;
    max-height: 94dvh;
    margin: auto;
    border-radius: 16px;
  }
  .ride-sheet-content {
    padding: 18px;
  }
  .reservation-search {
    max-width: 600px;
  }
}
.review-sheet .ride-info-card {
  padding: 12px;
  margin-bottom: 9px;
}
.review-sheet .ride-info-card h4 {
  margin-bottom: 6px;
  font-size: 15px;
}
.review-sheet .ride-info-card p {
  margin: 4px 0;
}
.review-sheet .ride-info-row {
  margin: 6px 0;
}
.review-sheet .ride-sheet-content {
  padding: 12px;
}
.review-sheet .ride-customer-type {
  margin: 2px 0;
  font-size: 12px;
}
.review-sheet .ride-sheet-footer {
  padding-top: 10px;
}
.review-sheet .ride-quantities {
  font-size: 14px;
}
.reservation-content .ride-info-row strong {
  font-weight: 500;
}
.ride-route .ride-info-row {
  position: relative;
}
.ride-route .ride-info-row:not(:last-child):before {
  content: '';
  position: absolute;
  left: 10px;
  top: 26px;
  height: calc(100% - 10px);
  border-left: 1px solid var(--theme-accent);
}
.booking-dialog {
  font-family:
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    sans-serif;
}
#admin-board .booking-panel .ride-open,
#client-board.booking-panel .ride-open {
  background: transparent;
  color: var(--theme-text);
  border: 0;
  padding: 0;
  box-shadow: none;
}
#admin-board .booking-panel .ride-text-action,
#client-board.booking-panel .ride-text-action {
  background: transparent;
  color: var(--theme-accent);
  border: 0;
}
#admin-board .booking-panel .ride-menu > div button,
#client-board.booking-panel .ride-menu > div button {
  background: transparent;
  color: var(--theme-text);
  border: 0;
}
.detail-sheet > .booking-dialog-top {
  grid-template-columns: auto minmax(0, 1fr) auto;
}
.detail-sheet .booking-dialog-top > .ride-menu {
  grid-column: 3;
  grid-row: 1;
}
.ride-sheet .ride-menu summary:after {
  content: none;
}
.ride-sheet .ride-menu summary {
  color: var(--theme-text);
  font-size: 24px;
}
.booking-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.reservation-search {
  position: relative;
}
.reservation-search > .vtc-icon {
  position: absolute;
  left: 12px;
  top: 14px;
  color: var(--theme-muted);
}
.booking-panel .reservation-search input {
  padding-left: 42px;
}
#admin-board .booking-panel .reservation-search input,
#client-board.booking-panel .reservation-search input {
  padding-left: 42px !important;
}
.reservation-list-panel {
  background: var(--theme-bg);
  padding: 14px;
  border-radius: 14px;
  margin-top: 16px;
}
.reservation-card .ride-info-row {
  margin: 6px 0;
  font-size: 14px;
}
.reservation-card .ride-route .vtc-icon {
  width: 20px;
  height: 20px;
}
.reservation-card .ride-open {
  line-height: 1.5;
}
.reservation-toolbar h3 {
  font-size: 21px;
}
/* V0151 — Client et voyageurs compacts */
.customer-section legend {
  display: flex;
  align-items: center;
  gap: 8px;
}
.customer-search-row {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 10px;
}
.booking-panel .customer-search-field {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 0 10px;
  flex: 1;
  min-width: 0;
  margin: 0;
}
.customer-search-field input {
  border: 0;
  background: transparent;
  min-width: 0;
  width: 100%;
  padding: 10px 0;
  min-height: 44px;
}
.customer-search-field:focus-within {
  outline: 2px solid var(--theme-focus);
}
.booking-panel .customer-new {
  background: transparent;
  color: var(--theme-accent);
  border: 1px solid var(--theme-accent);
  white-space: nowrap;
  padding: 10px;
  min-height: 44px;
  font-size: 14px;
}
.booking-panel #customer-results button {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  background: transparent;
  color: var(--theme-text);
  border: 0;
  border-bottom: 1px solid var(--theme-border);
  padding: 10px 4px;
  min-height: 44px;
  font-size: 15px;
}
.booking-panel #customer-results small {
  color: var(--theme-muted);
  font-size: 13px;
}
.customer-card {
  position: relative;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 44px;
  gap: 10px;
  align-items: start;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  padding: 12px;
  background: var(--theme-surface);
}
.customer-avatar {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--theme-soft);
  color: var(--theme-accent);
  font-weight: 700;
}
.customer-coordinates {
  display: grid;
  gap: 6px;
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: 16px;
}
.customer-coordinates small {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--theme-muted);
  font-size: 13px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.customer-coordinates .vtc-icon {
  width: 16px;
  height: 16px;
}
.customer-menu > div {
  width: min(230px, calc(100vw - 70px));
  z-index: 10;
}
.booking-panel .customer-menu button {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  min-height: 44px;
}
.customer-passenger-badge {
  grid-column: 1/-1;
  display: inline-flex;
  align-items: center;
  justify-self: start;
  gap: 6px;
  border-radius: 20px;
  background: var(--theme-soft);
  color: var(--theme-accent);
  padding: 5px 10px;
  font-size: 12px;
}
.customer-passenger-badge .vtc-icon {
  width: 16px;
  height: 16px;
}
.booking-panel .trip-people-compact {
  margin: 12px 0 20px;
}
.booking-panel #who-travels {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  background: var(--theme-surface);
  color: var(--theme-text);
  text-align: left;
  min-height: 64px;
}
.booking-panel #who-travels > span:first-of-type {
  flex: 1;
  display: grid;
  gap: 4px;
  min-width: 0;
}
.booking-panel #who-travels strong {
  font-size: 16px;
}
.booking-panel #who-travels small {
  font-size: 13px;
  color: var(--theme-muted);
}
.booking-panel #who-travels > span:last-child {
  font-size: 24px;
}
.customer-menu summary:focus-visible {
  outline: 2px solid var(--theme-focus);
  border-radius: 8px;
}
@media (max-width: 360px) {
  .customer-search-row {
    gap: 6px;
  }
  .customer-new {
    padding: 8px !important;
    font-size: 12px !important;
  }
  .customer-search-field input {
    font-size: 14px;
  }
  .customer-card {
    grid-template-columns: 36px minmax(0, 1fr) 44px;
    gap: 6px;
    padding: 10px;
  }
  .customer-avatar {
    width: 36px;
    height: 36px;
  }
}
@media (max-width: 380px) {
  .reservation-card-footer {
    flex-wrap: wrap;
  }
  .reservation-card-footer button {
    font-size: 14px;
    padding: 8px 10px;
  }
  .reservation-card-footer .ride-text-action {
    white-space: normal;
  }
  .booking-heading {
    flex-wrap: wrap;
  }
}
/* V0152 — formulaire client partagé */
.client-type-switch {
  display: flex;
  gap: 0;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  overflow: hidden;
  margin: 4px 0 14px;
}
.booking-dialog .client-type-switch label,
.auth-zone .client-type-switch label {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  flex: 1;
  margin: 0;
  padding: 10px 4px;
  min-height: 44px;
  font-size: 14px;
  cursor: pointer;
}
.client-type-switch label:has(input:checked) {
  background: var(--theme-soft);
  color: var(--theme-accent);
  box-shadow: inset 0 0 0 1px var(--theme-accent);
}
.client-type-switch input {
  position: absolute;
  opacity: 0;
  width: 1px !important;
  min-height: 0 !important;
}
.client-type-switch label:focus-within {
  outline: 2px solid var(--theme-focus);
  outline-offset: -3px;
}
.client-type-switch .vtc-icon {
  width: 18px;
  height: 18px;
}
.client-name-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.client-name-row label {
  min-width: 0;
}
.client-civility {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 0;
  padding: 0;
  margin: 4px 0;
}
.client-civility legend {
  font-size: 13px;
  color: var(--theme-muted);
  margin-bottom: 8px;
}
.booking-dialog .client-civility label,
.auth-zone .client-civility label {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 64px;
  min-height: 44px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  margin: 0;
  padding: 6px 12px;
  font-size: 14px;
  cursor: pointer;
}
.client-civility input {
  width: 16px !important;
  min-height: 16px !important;
  margin-right: 6px;
}
.client-civility label:has(input:checked) {
  color: var(--theme-accent);
  background: var(--theme-soft);
  border-color: var(--theme-accent);
}
.booking-dialog .civility-clear {
  background: transparent;
  color: var(--theme-muted);
  border: 0;
  font-size: 12px;
  padding: 6px;
  min-height: 44px;
}
.client-notes summary {
  color: var(--theme-accent);
  min-height: 44px;
  display: flex;
  align-items: center;
  cursor: pointer;
  font-size: 14px;
}
.client-notes textarea {
  min-height: 80px;
}
.client-editor[open] {
  display: flex;
  flex-direction: column;
  max-height: 90dvh;
  width: calc(100% - 24px);
  max-width: 560px;
  padding: 0;
  overflow: hidden;
  border-radius: 16px;
}
.client-editor > .booking-dialog-top {
  padding: 16px;
  border-bottom: 1px solid var(--theme-border);
  flex: none;
}
.client-editor > .booking-dialog-top h3 {
  font-size: 21px;
}
.client-editor > .booking-dialog-top button {
  background: transparent;
  color: var(--theme-text);
  border: 0;
  padding: 8px;
  min-height: 44px;
  min-width: 44px;
}
.client-editor form {
  overflow: auto;
  padding: 14px 16px 0;
  min-height: 0;
  gap: 12px;
  overscroll-behavior: contain;
}
.client-editor form label {
  margin: 0;
  font-size: 14px;
}
.client-editor input,
.client-editor select {
  font-size: 16px;
  min-height: 46px;
  padding: 9px 12px;
}
.client-editor .customer-professional {
  display: grid;
  gap: 10px;
}
.client-editor .customer-professional[hidden] {
  display: none !important;
}
.client-form-footer {
  position: sticky;
  bottom: 0;
  background: var(--theme-surface);
  padding: 12px 0 max(12px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--theme-border);
  z-index: 2;
}
.client-form-footer button {
  width: 100%;
  min-height: 48px;
  display: flex;
  justify-content: center;
  gap: 8px;
  align-items: center;
}
.client-editor > .dialog-error:empty,
.client-form-error:empty,
.siren-status:empty {
  display: none;
}
.client-form-error,
.siren-status.is-error {
  color: #d83232;
}
.siren-status,
.legacy-name {
  font-size: 12px;
  color: var(--theme-muted);
  margin: 0;
  overflow-wrap: anywhere;
}
.siren-choices {
  display: grid;
  gap: 8px;
}
.siren-choices[hidden] {
  display: none !important;
}
.booking-dialog .siren-more {
  background: transparent;
  color: var(--theme-accent);
  font-size: 13px;
  min-height: 44px;
}
.client-editor .vtc-icon {
  width: 18px;
  height: 18px;
}
.client-editor .client-name-row input {
  width: 100%;
  min-width: 0;
}
.auth-zone .client-type-switch input,
.auth-zone .client-civility input {
  height: auto;
}
.auth-zone .customer-professional[hidden] {
  display: none !important;
}
.booking-dialog .client-civility {
  border: 0;
  padding: 0;
  margin: 4px 0;
  gap: 8px;
}
.booking-dialog .client-civility legend {
  margin-bottom: 8px;
}
.client-editor .siren-apply {
  background: transparent;
  color: var(--theme-accent);
  min-height: 44px;
  text-align: left;
  font-size: 13px;
}
.client-editor [hidden] {
  display: none !important;
}
.client-input-icon {
  position: relative;
  display: block;
}
.client-input-icon > .vtc-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--theme-muted);
  pointer-events: none;
}
.client-input-icon input {
  padding-left: 40px !important;
}
.client-civility input {
  position: absolute !important;
  opacity: 0 !important;
  width: 1px !important;
  min-height: 0 !important;
}
.client-civility label:focus-within {
  outline: 2px solid var(--theme-focus);
  outline-offset: 2px;
}
/* V0153 — compact flow, steps, local phone country selector and actual CRM page. */
.booking-panel .booking-date-card legend,
.booking-panel .booking-count-card legend {
  display: flex;
  gap: 8px;
  align-items: center;
}
.booking-panel #booking-date-control,
.booking-panel #capacity-quantities {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  text-align: left;
  background: var(--theme-input);
  color: var(--theme-text);
  border: 1px solid var(--theme-border);
  padding: 12px;
  font-size: 16px;
}
.booking-panel #capacity-quantities:after {
  content: '›';
  font-size: 24px;
  color: var(--theme-accent);
}
.booking-panel #booking-capacity {
  font-size: 12px;
  margin: 6px 0 0;
  color: var(--theme-muted);
}
.booking-panel #booking-date-control:after {
  content: '›';
  color: var(--theme-accent);
}
.booking-panel #booking-fixed-notice {
  font-size: 13px;
  margin: 0 0 8px;
}
.booking-panel .booking-add-step {
  min-height: 44px;
  background: transparent;
  color: var(--theme-accent);
  border: 0;
  text-align: left;
  font-size: 14px;
  padding: 6px 0;
}
.booking-panel .booking-step {
  position: relative;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 44px;
  gap: 8px;
  align-items: center;
  border: 0;
  padding: 4px 0;
  margin: 6px 0;
  background: transparent;
}
.booking-step .step-fields {
  min-width: 0;
}
.booking-panel .booking-step label {
  margin: 0;
  font-size: 13px;
}
.booking-panel .step-grip,
.booking-panel .step-trash {
  padding: 8px;
  min-width: 44px;
  min-height: 44px;
  background: transparent;
  color: var(--theme-muted);
  border: 0;
}
.booking-panel .step-trash {
  color: var(--theme-accent);
}
.step-grip {
  touch-action: none;
  cursor: grab;
}
.step-dragging {
  opacity: 0.65;
}
.step-drop-target {
  outline: 2px dashed var(--theme-focus);
  border-radius: 10px;
}
.booking-step .step-move-menu {
  grid-column: 1/-1;
  display: flex;
  gap: 8px;
  padding: 6px;
  border: 1px solid var(--theme-border);
  border-radius: 8px;
}
.booking-panel .step-move-menu button {
  min-height: 44px;
  font-size: 14px;
  background: var(--theme-soft);
  color: var(--theme-text);
  padding: 8px 12px;
}
.step-move-menu[hidden] {
  display: none !important;
}
.booking-step .booking-suggestions:empty {
  display: none;
}
.client-phone-row {
  display: flex;
  gap: 8px;
  margin-top: 6px;
  align-items: center;
  min-width: 0;
}
.client-phone-row input[type='tel'] {
  min-width: 0;
  flex: 1;
  width: 100%;
  margin: 0;
}
.booking-dialog .phone-country-button,
.auth-zone .phone-country-button {
  display: flex;
  gap: 4px;
  align-items: center;
  justify-content: center;
  background: var(--theme-input);
  color: var(--theme-text);
  border: 1px solid var(--theme-border);
  min-width: 94px;
  min-height: 46px;
  padding: 8px;
  font-size: 14px;
  white-space: nowrap;
}
.phone-hint {
  font-size: 12px;
  margin: 0;
}
.phone-hint:empty {
  display: none;
}
.phone-country-dialog[open] {
  width: calc(100% - 24px);
  max-width: 440px;
  height: min(80dvh, 650px);
  padding: 14px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  gap: 10px;
}
.phone-country-dialog .booking-dialog-top {
  flex: none;
}
.phone-country-dialog .booking-dialog-top button {
  padding: 8px;
  background: transparent;
  color: var(--theme-text);
  border: 0;
}
.phone-country-dialog > label {
  margin: 0;
}
.phone-country-list {
  overflow: auto;
  flex: 1;
  min-height: 0;
}
.booking-dialog .phone-country-list button {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 48px;
  text-align: left;
  background: transparent;
  color: var(--theme-text);
  border: 0;
  border-bottom: 1px solid var(--theme-border);
  padding: 8px;
  font-size: 15px;
}
.phone-country-list button[aria-pressed='true'] {
  color: var(--theme-accent) !important;
  background: var(--theme-soft) !important;
}
.clients-board {
  font-size: 16px;
}
.clients-toolbar {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
}
.clients-toolbar h2 {
  font-size: 21px;
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 0;
}
.clients-toolbar button {
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  border: 0;
  padding: 8px 12px;
  min-height: 44px;
  border-radius: 10px;
  font: inherit;
  font-size: 14px;
}
.clients-search {
  display: flex;
  gap: 8px;
  align-items: center;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
  padding: 0 12px;
  margin: 12px 0;
}
.clients-search input {
  min-width: 0;
  width: 100%;
  background: transparent;
  color: var(--theme-text);
  border: 0;
  padding: 10px 0;
  min-height: 44px;
  font: inherit;
  font-size: 14px;
}
.clients-search:focus-within {
  outline: 2px solid var(--theme-focus);
}
.clients-row {
  display: flex;
  gap: 8px;
  align-items: center;
  border-bottom: 1px solid var(--theme-border);
  min-height: 64px;
}
.clients-row-main {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  background: transparent;
  color: var(--theme-text);
  border: 0;
  padding: 9px 0;
  min-height: 64px;
  font: inherit;
}
.clients-row-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  background: var(--theme-soft);
  color: var(--theme-accent);
  border-radius: 9px;
  flex: none;
}
.clients-row-icon .vtc-icon {
  width: 19px;
  height: 19px;
}
.clients-row-text {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.clients-row-text strong {
  font-size: 15px;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.clients-row-text small {
  font-size: 12px;
  color: var(--theme-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.clients-row-menu > div {
  z-index: 20;
  max-width: calc(100vw - 50px);
}
.clients-row-menu > div button {
  display: flex;
  gap: 8px;
  align-items: center;
  font: inherit;
  font-size: 14px;
  border: 0;
  min-height: 44px;
  padding: 8px;
}
.clients-pagination {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: center;
  margin: 14px 0;
}
.clients-pagination button {
  min-height: 44px;
  min-width: 44px;
  background: transparent;
  color: var(--theme-text);
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  font-size: 22px;
}
.clients-pagination span,
#clients-status {
  font-size: 13px;
  color: var(--theme-muted);
}
.client-sheet-data {
  display: grid;
  grid-template-columns: 100px minmax(0, 1fr);
  gap: 10px;
  font-size: 14px;
}
.client-sheet-data dt {
  color: var(--theme-muted);
}
.client-sheet-data dd {
  margin: 0;
  overflow-wrap: anywhere;
}
.client-sheet-actions {
  display: flex;
  gap: 8px;
}
.client-sheet-actions button {
  font-size: 14px;
  padding: 8px 12px;
  min-height: 44px;
}
.client-kind {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--theme-accent);
  font-size: 13px;
}
.client-sheet .booking-dialog-top button {
  background: transparent;
  color: var(--theme-text);
  border: 0;
  padding: 8px;
}
.client-history-row {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  border-bottom: 1px solid var(--theme-border);
  background: transparent !important;
  color: var(--theme-text) !important;
  font-size: 14px !important;
  padding: 12px 0 !important;
  overflow-wrap: anywhere;
}
.client-history-row small {
  display: block;
  margin-top: 6px;
}

.clients-row-text .clients-row-secondary {
  display: flex;
  gap: 8px;
  min-width: 0;
}
.clients-row-secondary > span:first-child {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.clients-row-secondary > span:last-child {
  flex: none;
}
.clients-row-secondary > span:only-child {
  flex: initial;
}
.clients-row-main {
  padding-block: 7px;
}
/* V0154 — one page per service. Theme palettes are unchanged. */
.service-navigation {
  grid-template-columns: repeat(var(--nav-count, 4), minmax(0, 1fr));
  position: sticky;
  bottom: 0;
  z-index: 25;
}
.service-navigation a {
  gap: 4px;
  min-height: 52px;
  justify-content: center;
}
.service-navigation a > span {
  font-size: 11px;
  line-height: 1.3;
}
.service-navigation .vtc-icon {
  width: 23px;
  height: 23px;
}
.service-navigation .desktop-service {
  display: none;
}
.services-board {
  font:
    16px/1.5 system-ui,
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    sans-serif;
  margin-bottom: 18px;
}
.services-board h2 {
  font-size: 24px;
  margin: 0 0 4px;
}
.services-board h3 {
  font-size: 17px;
  margin: 16px 0 10px;
}
.service-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.service-link {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 66px;
  padding: 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  color: var(--theme-text);
  text-decoration: none;
  background: var(--theme-surface);
  margin: 8px 0;
}
.service-link > .vtc-icon {
  color: var(--theme-accent);
}
.service-link > span:first-of-type {
  display: grid;
  min-width: 0;
  flex: 1;
  gap: 3px;
}
.service-link > span:last-child {
  color: var(--theme-muted);
}
.service-link strong {
  font-size: 15px;
  font-weight: 650;
}
.service-link small {
  font-size: 12px;
  color: var(--theme-muted);
}
.service-grid .service-link {
  margin: 0;
}
.service-grid .service-link > .vtc-icon {
  width: 25px;
  height: 25px;
}
.service-grid .service-link small {
  display: none;
}
.service-group-title {
  color: var(--theme-muted);
  font-size: 12px !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-top: 24px !important;
}
.home-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  background: var(--theme-surface);
}
.home-metrics > div {
  display: grid;
  text-align: center;
}
.home-metrics > div + div {
  border-left: 1px solid var(--theme-border);
}
.home-metrics span {
  font-size: 12px;
  color: var(--theme-muted);
}
#home-summary-status {
  font-size: 11px;
  margin: 8px 0 14px;
}
.home-new {
  display: block;
  text-align: center;
  color: var(--theme-accent);
  border: 1px solid var(--theme-accent);
  border-radius: 12px;
  padding: 12px;
  text-decoration: none;
  min-height: 48px;
}
.service-create {
  margin: 12px 0;
}
.service-create > summary {
  cursor: pointer;
  min-height: 44px;
  padding: 10px;
  color: var(--theme-accent);
  border: 1px solid var(--theme-border);
  border-radius: 10px;
}
.service-row {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 70px;
  padding: 10px 0;
  border-bottom: 1px solid var(--theme-border);
}
.service-row-icon {
  color: var(--theme-accent);
  background: var(--theme-soft);
  border-radius: 9px;
  padding: 8px;
  flex: none;
}
.service-row > div {
  display: grid;
  gap: 3px;
  min-width: 0;
  flex: 1;
}
.service-row strong {
  font-size: 15px;
  overflow-wrap: anywhere;
}
.service-row small {
  font-size: 12px;
  color: var(--theme-muted);
  overflow-wrap: anywhere;
}
.service-row .ride-menu > div {
  z-index: 30;
  max-width: calc(100vw - 70px);
}
#admin-board .service-row button {
  background: transparent;
  color: var(--theme-text);
  border: 0;
  font-size: 14px;
}
.settings-dialog form {
  display: grid;
  gap: 12px;
}
.settings-dialog label {
  font-size: 14px;
}
.settings-dialog .booking-dialog-top button {
  background: transparent;
  color: var(--theme-text);
  border: 0;
  padding: 8px;
}
.services-board .service-grid button,
.services-board > button,
#settings-content > button {
  font: inherit;
  min-height: 44px;
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid var(--theme-border);
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}
#admin-driving {
  margin: 20px 0;
}
#admin-driving > summary {
  cursor: pointer;
  color: var(--theme-accent);
  padding: 12px 0;
  min-height: 44px;
  font-size: 14px;
}
#admin-driving .driver-card {
  margin-top: 10px;
}
.reservation-toolbar {
  flex-wrap: wrap;
}
.reservation-toolbar .reservation-new {
  border: 1px solid var(--theme-accent) !important;
  border-radius: 10px;
  padding: 8px !important;
  font-size: 13px;
}
.services-board #booking-page-error:empty {
  display: none;
}
.booking-panel #booking-page-error {
  color: #c73131;
}
.booking-panel .booking-heading #booking-back {
  padding: 8px 0;
}
.services-board #booking-success .booking-actions {
  gap: 10px;
  margin-top: 12px;
}
.services-board .reservation-list-panel {
  padding: 0;
  margin-top: 0;
}
.services-board .booking-heading {
  align-items: center;
}
.services-board .booking-heading h3 {
  margin: 0;
}
.services-board .booking-actions button {
  min-height: 44px;
}
.services-board .booking-panel {
  font: inherit;
}
@media (min-width: 900px) {
  body.is-wide .app.is-admin {
    max-width: 1100px;
  }
  .service-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  #services-board.booking-panel #booking-create {
    max-width: 800px;
    margin: auto;
  }
  .clients-board,
  #admin-board {
    max-width: 900px;
    margin-inline: auto;
  }
}
/* Compact reservation rows, matching the approved hierarchy. */
.services-board .reservation-card {
  padding: 12px;
  margin-bottom: 10px;
}
.services-board .reservation-card-header {
  align-items: center;
  gap: 6px;
}
.services-board .reservation-card-header > .ride-open {
  min-width: 0;
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 14px;
  min-height: 32px;
}
.services-board .reservation-card-header .ride-badge {
  font-size: 11px;
  white-space: nowrap;
  padding: 3px 6px;
}
.services-board .reservation-card-header .ride-menu summary {
  font-size: 22px;
  min-width: 36px;
  min-height: 36px;
}
.services-board .reservation-content {
  margin: 4px 0;
  min-height: 0;
}
.services-board .reservation-card .ride-route {
  padding: 0;
  margin: 5px 0;
  border: 0;
  gap: 4px;
}
.services-board .reservation-card .ride-info-row {
  margin: 4px 0;
  font-size: 13px;
  line-height: 1.4;
}
.services-board .reservation-card-footer {
  padding-top: 8px;
}
.services-board .reservation-card-footer > strong {
  font-size: 21px;
}
.services-board .reservation-card-footer > button {
  min-height: 40px;
  padding: 8px 12px;
  font-size: 13px;
}
.services-board .reservation-toolbar h3 {
  font-size: 21px;
}
.services-board .reservation-toolbar .reservation-new {
  min-width: 44px;
  font-size: 24px;
}
.services-board .reservation-filter {
  font-size: 13px;
}
.services-board .reservation-search input {
  font-size: 15px;
}

/* V0155 — compact home, shared four-tab navigation, visible account icon. */
#account-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--theme-text);
  background: var(--theme-surface);
  border: 1px solid var(--theme-border);
  width: 44px;
  height: 44px;
  min-width: 44px;
  padding: 10px;
}
#account-button .vtc-icon {
  width: 22px;
  height: 22px;
  stroke: currentColor;
  fill: none;
}
#home-summary-status:empty,
#settings-message:empty {
  display: none;
}
.service-grid .service-link {
  flex-wrap: nowrap;
  min-height: 64px;
  padding: 10px;
  gap: 8px;
}
.service-grid .service-link > span:first-of-type {
  flex: 1;
  flex-basis: auto;
}
.service-grid .service-link > span:last-child {
  margin-left: auto;
  flex: none;
  font-size: 22px;
}
.home-metrics {
  margin-top: 12px;
  padding: 10px 4px;
  margin-bottom: 12px;
}
.home-metrics > div {
  gap: 4px;
  padding: 2px 6px;
}
.home-metrics strong {
  font-size: 24px;
}
.services-board:has(.pricing-page) > h2 {
  display: none;
}
.services-board:has(.pricing-page) {
  font: inherit;
}
.services-board .pricing-page .notice,
.services-board .pricing-page .warning {
  color: var(--theme-text);
  background: var(--theme-soft);
}
@media (max-width: 600px) {
  .app.is-admin header {
    padding: calc(10px + env(safe-area-inset-top)) 12px 10px;
    gap: 8px;
  }
  .app.is-admin header .brand strong {
    font-size: 14px;
  }
  .app.is-admin header .brand span {
    font-size: 8px;
  }
  .app.is-admin header .brand {
    font-size: 14px;
  }
  .app.is-admin header .brand svg {
    height: 24px;
  }
  .app.is-admin header #my-vehicle-top {
    min-height: 44px;
    padding: 8px 10px;
    font-size: 13px;
  }
  .is-admin #services-board > h2 {
    font-size: 21px;
  }
  .is-admin #services-board > p.muted {
    margin: 4px 0 10px;
  }
  .is-admin main {
    padding-top: 16px;
  }
  .home-metrics span {
    font-size: 12px;
  }
  .service-grid .service-link strong {
    font-size: 14px;
  }
  .service-grid .service-link > .vtc-icon {
    width: 22px;
    height: 22px;
  }
  .services-board h3 {
    margin: 14px 0 8px;
  }
}
/* V0158 scoped customer sections */
.customer-service-body form {
  display: grid;
  gap: 12px;
  margin-top: 16px;
}
.customer-service-body label {
  display: grid;
  gap: 5px;
}
.customer-service-body input,
.customer-service-body select {
  box-sizing: border-box;
  width: 100%;
  min-height: 44px;
  padding: 9px;
  border: 1px solid var(--theme-border, #ddd);
  border-radius: 8px;
  background: var(--theme-input, #fff);
  color: var(--theme-text, #222);
}
.customer-service-body .booking-check {
  display: flex;
  align-items: center;
  gap: 10px;
}
.customer-service-body input[type='checkbox'] {
  width: 20px;
  min-height: 20px;
}
.customer-service-list article {
  padding: 14px 0;
  border-bottom: 1px solid var(--theme-border, #ddd);
}
.customer-service-list p,
.customer-service-body p {
  overflow-wrap: anywhere;
}
.client-sheet-actions {
  flex-wrap: wrap;
}
.siren-directors select {
  width: 100%;
  min-height: 44px;
}

.passenger-home,
.passenger-favorites {
  margin-block: 12px;
  padding: 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
}
.passenger-home legend,
.passenger-favorites legend {
  font-weight: 700;
  padding-inline: 6px;
}
.passenger-address {
  display: block;
}

/* Passagers : fiche et liste (V0160.3) */
.pax-dialog {
  font-size: 15px;
  line-height: 1.45;
  max-width: min(560px, 96vw);
}
.pax-dialog input,
.pax-dialog select,
.pax-dialog button {
  font-size: inherit;
  min-height: 44px;
}
.pax-dialog label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-block: 10px;
  font-size: 13px;
  font-weight: 600;
  color: var(--theme-muted);
}
.pax-dialog label input,
.pax-dialog label select {
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  padding: 0 12px;
  background: var(--theme-input);
  color: var(--theme-text);
  font-weight: 400;
}
.pax-dialog small {
  display: block;
  color: var(--theme-muted);
  font-size: 13px;
}
.pax-dialog .muted {
  color: var(--theme-muted);
  margin: 6px 0;
}
.pax-top {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 12px;
}
.pax-count {
  margin: 0;
  font-size: 16px;
}
.pax-top input[type='search'] {
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  padding: 0 12px;
  background: var(--theme-input);
  color: var(--theme-text);
}
.pax-card {
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  border-radius: 14px;
  padding: 12px;
  margin-block: 10px;
  display: grid;
  gap: 10px;
}
.pax-card[hidden] {
  display: none;
}
.pax-head {
  display: flex;
  align-items: center;
  gap: 10px;
}
.pax-id {
  flex: 1;
  min-width: 0;
}
.pax-id strong {
  display: block;
  overflow-wrap: anywhere;
}
.pax-avatar {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
}
.pax-addrs {
  display: grid;
  gap: 4px;
  font-size: 14px;
}
.pax-addrs b {
  color: var(--theme-accent-text);
}
.pax-missing {
  color: var(--theme-accent-text);
  background: var(--theme-soft);
  border-radius: 8px;
  padding: 6px 10px;
}
.pax-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.pax-dialog .pax-btn {
  min-height: 40px;
  padding: 0 14px;
  border-radius: 10px;
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-text);
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
}
.pax-dialog .pax-primary {
  min-height: 48px;
  border-radius: 12px;
  border: 0;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  font-weight: 700;
  font-size: 16px;
  width: 100%;
  cursor: pointer;
}
.pax-foot {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}
.pax-who {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--theme-soft);
  border-radius: 12px;
  margin-bottom: 6px;
}
.pax-section {
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  border-radius: 14px;
  padding: 12px 14px;
  margin-block: 12px;
}
.pax-section h4 {
  margin: 0 0 6px;
  font-size: 16px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.pax-ico {
  color: var(--theme-accent-text);
  flex: none;
}
.pax-note {
  font-size: 12.5px;
  color: var(--theme-muted);
  background: var(--theme-bg);
  border-radius: 10px;
  padding: 8px 10px;
  margin: 8px 0 0;
}
.pax-fav {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 8px 10px;
  margin-block: 8px;
}
.pax-fav > div {
  flex: 1;
  min-width: 0;
}
.pax-fav strong {
  display: block;
  font-size: 14px;
}
.pax-dialog .pax-x {
  min-width: 44px;
  min-height: 44px;
  border: 0;
  background: transparent;
  color: var(--theme-muted);
  font-size: 20px;
  cursor: pointer;
}
.pax-dialog .pax-dashed {
  width: 100%;
  min-height: 44px;
  border-radius: 12px;
  border: 1.5px dashed var(--theme-accent);
  background: transparent;
  color: var(--theme-accent-text);
  font-weight: 600;
  cursor: pointer;
}
.pax-form .young-fields {
  margin-top: 4px;
}
.pax-form .from-contacts {
  border: 0;
  background: transparent;
  color: var(--theme-accent-text);
  padding: 0;
  min-height: 40px;
  font-weight: 600;
}

.pax-dialog .pax-danger {
  color: var(--theme-muted);
}
.pax-dialog .pax-btn:hover,
.pax-dialog .pax-dashed:hover {
  border-color: var(--theme-accent);
}
.pax-dialog .pax-primary:hover {
  filter: brightness(1.05);
}
.pax-dialog .pax-btn:focus-visible,
.pax-dialog .pax-primary:focus-visible,
.pax-dialog .pax-dashed:focus-visible,
.pax-dialog .pax-x:focus-visible {
  outline: 3px solid var(--theme-focus);
  outline-offset: 2px;
}

.booking-shortcuts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-block: 8px;
}
.booking-shortcuts p {
  flex-basis: 100%;
  margin: 0;
  font-weight: 700;
  font-size: 14px;
  color: var(--theme-muted);
}
#booking-create .booking-shortcuts button {
  min-height: 40px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--theme-accent);
  background: var(--theme-soft);
  color: var(--theme-accent-text);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
#booking-create .booking-shortcuts button:hover {
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}
#booking-create .booking-shortcuts button:focus-visible {
  outline: 3px solid var(--theme-focus);
  outline-offset: 2px;
}
.pax-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.pax-chips:empty {
  display: none;
}
.pax-dialog .pax-chip {
  min-height: 40px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--theme-accent);
  background: var(--theme-soft);
  color: var(--theme-accent-text);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
.pax-dialog .pax-chip:hover {
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}
.pax-dialog .pax-chip:focus-visible {
  outline: 3px solid var(--theme-focus);
  outline-offset: 2px;
}
.pax-client {
  margin: 0;
}
.pax-addrs small {
  color: var(--theme-muted);
}
.pax-recent {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--theme-border);
}
.pax-recent:last-child {
  border-bottom: 0;
}

.pax-dialog .booking-check {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  font-weight: 600;
  color: var(--theme-text);
}
.pax-dialog .booking-check input {
  min-height: 24px;
  width: 24px;
  flex: none;
}
.pax-dialog .customer-service-body {
  display: grid;
  gap: 12px;
}
.pax-dialog .customer-service-list {
  display: grid;
  gap: 10px;
}
.pax-dialog .customer-service-list article strong {
  display: block;
}
.pax-dialog .customer-service-list article p {
  margin: 4px 0;
  color: var(--theme-muted);
  font-size: 14px;
  overflow-wrap: anywhere;
}
.pax-dialog .client-sheet-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.pax-dialog .clients-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.pax-dialog .customer-service-editor form {
  display: grid;
  gap: 4px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  padding: 12px;
  background: var(--theme-surface);
}
.pax-dialog .pax-btn:disabled {
  opacity: 0.5;
  cursor: default;
}
.pax-dialog .payment-saved {
  color: var(--theme-accent-text);
  font-weight: 600;
}
.cat-list {
  display: grid;
  gap: 10px;
  margin-bottom: 10px;
}
.cat-row {
  display: grid;
  gap: 6px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  padding: 12px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.cat-row label {
  display: grid;
  gap: 4px;
  font-size: 13px;
  font-weight: 600;
  color: var(--theme-muted);
}
.cat-row input {
  font-size: 16px;
}
.vehicle-cats {
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 8px 12px;
  display: grid;
  gap: 6px;
}
.vehicle-cats legend {
  font-size: 13px;
  font-weight: 600;
  color: var(--theme-muted);
  padding: 0 4px;
}
.cat-row .pax-btn {
  min-height: 40px;
  padding: 0 14px;
  border-radius: 10px;
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-text);
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
}
.cat-row .pax-btn:disabled {
  opacity: 0.45;
  cursor: default;
}
.cat-row .pax-danger {
  color: var(--theme-text);
}
#category-label-form .pax-btn,
#category-label-form .pax-primary {
  width: 100%;
  min-height: 44px;
  border-radius: 12px;
  font-size: 15px;
  font-weight: 700;
  margin-top: 8px;
}
#category-label-form .pax-primary {
  border: 0;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}
#category-label-form .pax-btn {
  border: 1.5px dashed var(--theme-accent);
  background: transparent;
  color: var(--theme-accent-text);
}
.vehicle-cats .booking-check {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  font-size: 15px;
  font-weight: 600;
  color: var(--theme-text);
}
.vehicle-cats .booking-check input {
  width: 22px;
  min-height: 22px;
  flex: none;
}
dialog .vehicle-cats label.booking-check {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 10px;
  text-align: left;
}
dialog .vehicle-cats label.booking-check input {
  width: 22px !important;
  min-width: 22px;
  min-height: 22px !important;
  margin: 0;
  flex: none;
}
/* Boutique de modules */
.shop-page h3 {
  font-size: 17px;
  margin: 22px 0 10px;
}
.shop-page h4 {
  margin: 0 0 2px;
  font-size: 16px;
}
.shop-info {
  flex: 1 1 200px;
  min-width: 0;
}
.shop-info p {
  margin: 0 0 4px;
  font-size: 14px;
  color: var(--theme-muted);
}
.shop-info small {
  color: var(--theme-text);
  font-weight: 600;
}
.shop-badge.shop-on {
  background: var(--theme-soft);
  color: var(--theme-accent-text);
  border-color: var(--theme-accent);
}
.shop-confirm p {
  margin: 0 0 8px;
  font-size: 14px;
}
#flight-lookup,
#train-lookup {
  min-height: 44px;
  padding: 0 16px;
  border-radius: 12px;
  border: 0;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  font-weight: 700;
  font-size: 15px;
  cursor: pointer;
  margin: 8px 0;
}
#flight-lookup:disabled,
#train-lookup:disabled {
  opacity: 0.6;
}
#flight-status:empty,
#train-status:empty {
  display: none;
}
#flight-status,
#train-status {
  color: var(--theme-text);
  font-size: 14px;
}

/* Vols suivis (alertes retard / annulation) */
.flight-live {
  margin: 8px 0 12px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  background: var(--theme-surface);
  color: var(--theme-text);
  overflow: hidden;
}
.flight-live summary {
  padding: 10px 14px;
  font-weight: 700;
  cursor: pointer;
  list-style: none;
}
.flight-live summary::-webkit-details-marker {
  display: none;
}
.flight-live.has-alert {
  border-color: var(--c-danger-3);
}
.flight-live.has-alert summary {
  background: var(--c-danger-3);
  color: var(--c-white);
}
.flight-live ul {
  list-style: none;
  margin: 0;
  padding: 6px 14px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 14px;
}
.flight-live li.is-alert {
  color: var(--c-danger-3);
  font-weight: 600;
}
.shop-admin > span {
  min-width: 0;
}
.shop-admin small {
  display: block;
  color: var(--theme-muted);
  overflow-wrap: anywhere;
}
.shop-team-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 14px;
  min-width: 0;
}
.shop-team-form input,
.shop-qty input,
.shop-link {
  min-height: 44px;
  padding: 0 12px;
  border-radius: 12px;
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-text);
  font-size: 16px;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.shop-qty input {
  width: 80px;
}
.shop-link {
  width: 100%;
  margin: 6px 0;
}

.mission-welcome {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 12px 0;
  padding: 14px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.mission-welcome p {
  margin: 0;
}
.mission-welcome-label {
  font-size: 13px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--theme-muted);
}
.mission-welcome-name {
  font-size: 28px;
  font-weight: 800;
  overflow-wrap: anywhere;
}
.mission-chrono strong {
  font-variant-numeric: tabular-nums;
  font-size: 20px;
}
.mission-welcome-open {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  text-decoration: none;
  text-align: center;
}

.welcome-edit {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 14px 16px;
  padding: 14px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.welcome-edit h4 {
  margin: 0;
}
.welcome-edit label {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.welcome-edit p {
  margin: 0;
}
.welcome-logo img {
  max-width: 100%;
  height: auto;
  background: var(--c-white);
  border: 1px solid var(--theme-border);
  border-radius: 8px;
  padding: 6px;
}
.welcome-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.welcome-msg {
  min-height: 1.2em;
  color: var(--theme-muted);
}

.mission-order-btn {
  margin: 10px 0;
  width: 100%;
}
.bdc-dialog {
  max-width: 480px;
  width: 100%;
}
.bdc {
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: var(--theme-text);
}
.bdc header h3 {
  margin: 0;
}
.bdc header p {
  margin: 2px 0;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.bdc header small {
  color: var(--theme-muted);
}
.bdc dl {
  margin: 0;
}
.bdc h4 {
  margin: 14px 0 4px;
  font-size: 13px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--theme-muted);
}
.bdc-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 6px 0;
  border-bottom: 1px solid var(--theme-border);
}
.bdc-row dt {
  color: var(--theme-muted);
  flex: 0 0 40%;
}
.bdc-row dd {
  margin: 0;
  text-align: right;
  overflow-wrap: anywhere;
  font-weight: 600;
}
.bdc-warn {
  padding: 8px 10px;
  border: 1px solid var(--theme-accent);
  border-radius: 8px;
}
.legal-form {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 14px 0;
  padding: 14px;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.legal-form h4 {
  margin: 0;
}
.legal-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.legal-warn {
  margin: 0;
  color: var(--theme-accent);
}
.legal-msg {
  margin: 0;
  min-height: 1.2em;
  color: var(--theme-muted);
}
.bdc-head p {
  margin: 0;
  font-size: 20px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.bdc-head small {
  display: block;
  color: var(--theme-muted);
}
.zone-driver form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.zone-fields {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 10px;
}
.zone-results {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.zone-results button {
  width: 100%;
  text-align: left;
}
.zone-chosen,
.zone-msg {
  margin: 0;
}
.zone-msg {
  color: var(--theme-muted);
  min-height: 1.2em;
}
.zone-alert {
  margin: 10px 0;
  padding: 10px 12px;
  border: 2px solid var(--c-danger);
  border-radius: 10px;
  background: var(--theme-surface);
  color: var(--theme-text);
  font-weight: 600;
}
.service-row-warn {
  border-left: 4px solid var(--c-danger);
}
.zone-warning {
  color: var(--c-danger);
  font-weight: 600;
}

body.is-onboarding #app-zone,
body.is-onboarding #dashboard,
body.is-onboarding nav,
body.is-onboarding #legacy-notice {
  display: none !important;
}
.onboarding {
  max-width: 720px;
  margin: 0 auto;
  padding: 12px 4px 40px;
  display: grid;
  gap: 14px;
}
.onboarding[hidden] {
  display: none;
}
.ob-card {
  border: 1px solid var(--theme-border, #ccc);
  border-radius: 12px;
  padding: 12px 14px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.ob-state {
  padding: 10px 12px;
  border-radius: 10px;
  border: 2px solid var(--theme-border, #ccc);
  font-weight: 600;
}
.ob-state-changes {
  border-color: var(--c-danger);
}
.ob-state-review {
  border-color: var(--c-gold);
}
.ob-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.ob-row {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--theme-border, #ddd);
  padding: 8px 0;
}
.ob-name {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.ob-badge {
  font-size: 0.8rem;
  font-weight: 600;
}
.ob-ok .ob-badge {
  color: #1b7a3a;
}
.ob-bad .ob-badge,
.ob-reason {
  color: var(--c-danger);
}
.ob-todo .ob-badge {
  color: var(--c-amber-27);
}
.ob-ctl {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
}
.ob-side {
  display: flex;
  gap: 6px;
  align-items: center;
}
.ob-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 1px solid var(--theme-border, #999);
  border-radius: 10px;
  cursor: pointer;
  font-size: 1.3rem;
}
.ob-form {
  display: grid;
  gap: 8px;
}
.ob-form label {
  display: grid;
  gap: 3px;
}
.ob-msg {
  color: var(--c-danger);
  font-weight: 600;
  min-height: 1.2em;
}
body.is-onboarding #my-vehicle-top {
  display: none !important;
}
.ob-row {
  flex-wrap: wrap;
}
.ob-ctl {
  flex-wrap: wrap;
}

.onboarding.is-locked .document-action {
  display: none;
}
.ob-refused .zone-alert p {
  margin: 4px 0;
}
.onboarding .document-lines {
  display: grid;
  gap: 2px;
}
body.is-super #app-zone,
body.is-super #dashboard,
body.is-super nav,
body.is-super #legacy-notice,
body.is-super #my-vehicle-top {
  display: none !important;
}
.sa-kpis strong {
  font-size: 1.4rem;
}
.sa-p input,
.sa-inline input {
  width: 90px;
}
.sa-card {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--theme-border);
  border-radius: 16px;
  background: var(--theme-surface);
  color: var(--theme-text);
}
.sa-head {
  display: flex;
  gap: 12px;
  align-items: center;
  min-width: 0;
}
.sa-card h3 {
  margin: 0;
  font-size: 17px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.sa-head p {
  margin: 2px 0 0;
  font-size: 13px;
  color: var(--theme-muted);
  overflow-wrap: anywhere;
}
.sa-badge {
  flex: none;
  font-weight: 600;
  border: 1px solid var(--theme-border);
}
.sa-badge.ok {
  color: var(--theme-accent-text, var(--theme-accent));
}
.sa-badge.off {
  color: var(--c-red-58);
  border-color: var(--c-red-58);
}
.sa-stats > div {
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--theme-soft, var(--theme-input));
}
.sa-stats small {
  font-size: 12px;
  font-weight: 400;
  color: var(--theme-muted);
  margin-left: 2px;
}
.sa-act.primary {
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  border-color: var(--theme-accent);
  flex: 1 1 100%;
}
.sa-act.wa {
  border-color: var(--c-green-39);
  color: var(--c-green-39);
}
.platform-return {
  position: sticky;
  top: 0;
  z-index: 50;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  background: var(--c-orange-37);
  color: var(--c-white);
  font-size: 14px;
}
.platform-return button {
  min-height: 40px;
  padding: 0 14px;
  border-radius: 10px;
  border: 1px solid var(--c-white);
  background: var(--c-white);
  color: #7c2d12;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.platform-notice {
  display: grid;
  gap: 10px;
}
.platform-notice button {
  min-height: 40px;
}
.superadmin .partner-search input {
  width: 100%;
  min-height: 46px;
  padding: 0 14px;
  border-radius: 12px;
  border: 1px solid var(--theme-border);
  background: var(--theme-input);
  color: var(--theme-text);
  font: inherit;
  box-sizing: border-box;
}
.su-summary ul {
  margin: 8px 0 0;
  padding-left: 18px;
  display: grid;
  gap: 6px;
}
.su-terms input {
  width: auto;
  margin-top: 3px;
}
.billing-banner {
  position: sticky;
  top: 0;
  z-index: 60;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--c-red-42);
  color: var(--c-white);
  font-weight: 600;
}
.billing-banner button {
  min-height: 40px;
  padding: 0 14px;
  border-radius: 10px;
  border: 1px solid var(--c-white);
  background: var(--c-white);
  color: #7f1d1d;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
label.su-terms {
  display: flex !important;
  gap: 10px;
  align-items: flex-start;
  font-weight: 400;
}
.su-plan legend {
  font-weight: 700;
  padding: 0 0.3rem;
}
.su-plan-opt:has(input:checked) {
  border-color: var(--theme-primary, #1d4ed8);
  background: var(--theme-primary-soft, rgba(29, 78, 216, 0.08));
}
.su-plan-opt input {
  margin-top: 0.25rem;
}
.site-card {
  background: var(--theme-surface, #fff);
  border: 1px solid var(--theme-border, #d0d5dd);
  border-radius: 14px;
  padding: 1rem 1.1rem;
  margin: 0 0 1rem;
  display: grid;
  gap: 0.6rem;
}
.site-card h3 {
  margin: 0.2rem 0;
}
.site-card label {
  display: grid;
  gap: 0.25rem;
  font-weight: 600;
}
.site-card textarea,
.site-card input:not([type='file']) {
  width: 100%;
  font: inherit;
}
.site-msg {
  padding: 0.6rem 0.8rem;
  border-radius: 10px;
  background: var(--theme-primary-soft, rgba(29, 78, 216, 0.1));
}
.site-ok {
  color: var(--c-green-30);
  font-weight: 600;
}
.site-steps {
  margin: 0.2rem 0;
  padding-left: 1.2rem;
}
.site-steps li.done {
  color: var(--c-green-30);
  text-decoration: line-through;
}
.site-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}
.site-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
}
.site-thumb {
  margin: 0;
  display: grid;
  gap: 0.3rem;
  justify-items: start;
}
.site-thumb img {
  border-radius: 8px;
  object-fit: cover;
  max-width: 100%;
  height: auto;
}
.site-card button {
  min-height: 44px;
  padding: 0.6rem 1.1rem;
  border-radius: 10px;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  border: 1px solid var(--theme-border, #c9ced6);
  background: var(--theme-surface, #fff);
  color: inherit;
}
.site-card button.site-primary {
  background: var(--theme-primary, #1d4ed8);
  border-color: var(--theme-primary, #1d4ed8);
  color: var(--theme-on-primary, #fff);
}
.site-card button:disabled {
  opacity: 0.6;
  cursor: wait;
}
.site-card textarea,
.site-card input:not([type='file']) {
  min-height: 44px;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--theme-border, #c9ced6);
  border-radius: 8px;
  background: var(--theme-surface, #fff);
  color: inherit;
}
.sup-choice strong {
  font-size: 1.05rem;
}
.sup-choice span {
  color: var(--theme-muted, #5b6168);
  font-size: 0.92rem;
}
.sup-card label {
  display: grid;
  gap: 0.25rem;
  font-weight: 600;
}
.sup-card input:not([type='file']),
.sup-card textarea,
.sup-card select {
  width: 100%;
  font: inherit;
  min-height: 44px;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--theme-border, #c9ced6);
  border-radius: 8px;
  background: var(--theme-surface, #fff);
  color: inherit;
}
.sup-card button,
#sup-back {
  min-height: 44px;
  padding: 0.6rem 1.1rem;
  border-radius: 10px;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  border: 1px solid var(--theme-border, #c9ced6);
  background: var(--theme-surface, #fff);
  color: inherit;
}
.sup-card button.sup-primary {
  background: var(--theme-primary, #1d4ed8);
  border-color: var(--theme-primary, #1d4ed8);
  color: var(--theme-on-primary, #fff);
}
.sup-previews img,
.sup-photos img {
  border-radius: 8px;
  object-fit: cover;
}
.sup-bubble p {
  margin: 0.2rem 0;
}
.sup-bubble small {
  color: var(--theme-muted, #5b6168);
}
.sup-banner button {
  min-height: 40px;
  padding: 0.4rem 1rem;
  border-radius: 10px;
  border: 0;
  background: var(--theme-primary, #1d4ed8);
  color: var(--theme-on-primary, #fff);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.sa-badge {
  display: inline-block;
  margin-left: 0.35rem;
  min-width: 1.3em;
  padding: 0 0.4em;
  border-radius: 999px;
  background: var(--c-danger);
  color: var(--c-white);
  font-size: 0.75rem;
  line-height: 1.4;
}
.sa-filters select {
  min-height: 44px;
  padding: 0.4rem 0.6rem;
  border-radius: 8px;
  border: 1px solid var(--theme-border, #c9ced6);
  font: inherit;
  background: var(--theme-surface, #fff);
  color: inherit;
}

.stripe-flags {
  list-style: none;
  margin: 0.4rem 0;
  padding: 0;
  display: grid;
  gap: 0.25rem;
}
.stripe-flags li::before {
  content: '✗ ';
  color: var(--c-danger-2);
  font-weight: 700;
}
.stripe-flags li.done::before {
  content: '✓ ';
  color: var(--c-green-30);
}
.stripe-info {
  display: grid;
  gap: 0.4rem;
  margin: 0.4rem 0;
}
.stripe-row {
  display: flex;
  gap: 0.6rem;
  align-items: center;
  flex-wrap: wrap;
}
.stripe-row > span {
  min-width: 8rem;
  font-weight: 600;
}
.stripe-row code {
  flex: 1 1 12rem;
  min-width: 0;
  overflow-wrap: anywhere;
  background: var(--theme-surface-2, #f2f4f7);
  padding: 0.25rem 0.45rem;
  border-radius: 8px;
}
.stripe-link {
  display: inline-block;
  text-decoration: none;
  padding: 0.6rem 1rem;
  border-radius: 10px;
}
.site-card a.site-primary {
  background: var(--theme-primary, #1d4ed8);
  border: 1px solid var(--theme-primary, #1d4ed8);
  color: var(--theme-on-primary, #fff);
}
.join-qr {
  display: flex;
  justify-content: center;
  margin: 0.6rem 0;
}
.join-qr svg {
  max-width: 100%;
  height: auto;
  border-radius: 10px;
  border: 1px solid var(--theme-border, #d0d5dd);
}
.join-code {
  font:
    700 2.2rem ui-monospace,
    monospace;
  letter-spacing: 0.25em;
  text-align: center;
  margin: 0.4rem 0;
}
.rf-kpis > div {
  display: flex;
  flex-direction: column;
  padding: 0.6rem;
  border: 1px solid currentColor;
  border-radius: 0.6rem;
  border-color: rgba(127, 127, 127, 0.35);
}
.rf-kpis strong {
  font-size: 1.5rem;
}
.rf-list li {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.6rem;
  border: 1px solid rgba(127, 127, 127, 0.35);
  border-radius: 0.6rem;
}
#offline-banner {
  position: sticky;
  top: 0;
  z-index: 50;
  margin: 0;
  padding: 0.5rem 0.75rem;
  font-size: 0.85rem;
  font-weight: 600;
  text-align: center;
  background: #7a4b00;
  color: var(--c-white);
}
.pp-steps {
  padding-left: 1.2rem;
  display: grid;
  gap: 0.4rem;
}
.pp-mode {
  border: 0;
  padding: 0;
  margin: 0 0 0.5rem;
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}
.pp-mode legend {
  font-weight: 600;
  margin-bottom: 0.25rem;
}
.bp-adm-bg img {
  max-width: 100%;
  height: auto;
  border-radius: 10px;
  object-fit: cover;
  aspect-ratio: 16/9;
  width: min(100%, 16rem);
}
.bp-adm-req {
  display: grid;
  gap: 0.8rem;
}
.bp-adm-r {
  border-top: 1px solid var(--theme-border, #d0d5dd);
  padding-top: 0.7rem;
}
.bp-adm-r p {
  margin: 0.2rem 0;
}
.bp-adm-form input[type='color'] {
  width: 4rem;
  height: 2.6rem;
  padding: 0.1rem;
}
.site-card details {
  margin: 0.6rem 0;
}
.site-card details summary {
  cursor: pointer;
  font-weight: 600;
  min-height: 2.5rem;
  display: flex;
  align-items: center;
}
.rf-ride input {
  margin-top: 0.3rem;
  flex: none;
}
.rf-link input {
  flex: 1 1 14rem;
  min-width: 0;
}

/* Cashback (administrateur) */
.cb-modes legend {
  font-weight: 700;
  padding: 0 0.3rem;
}
.site-card label.rf-check,
.site-card label.rf-ride {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  font-weight: 400;
}
.site-card label.rf-check {
  align-items: center;
  font-weight: 600;
}
.site-card input[type='radio'],
.site-card input[type='checkbox'] {
  width: 1.25rem;
  min-height: 0;
  height: 1.25rem;
  padding: 0;
  flex: none;
}
.map-choice fieldset {
  border: 1px solid var(--line, #3a3f47);
  border-radius: 10px;
  padding: 10px 14px;
  margin: 0 0 12px;
}
.map-choice legend {
  padding: 0 6px;
  font-weight: 600;
}
.map-choice label {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  cursor: pointer;
}
.map-choice input[type='radio'] {
  width: auto;
  min-height: 0;
  height: auto;
  flex: 0 0 auto;
}
/* V201 : Réglages › Cartographie — même présentation que « Nouvelle réservation » (#booking-create.bk2). */
.mp2 {
  counter-reset: mp2;
  display: grid;
  gap: 12px;
}
.mp2 fieldset.mp2-n {
  counter-increment: mp2;
  display: grid;
  gap: 12px;
  min-width: 0;
  margin: 0;
  padding: 14px;
  border: 0;
  border-radius: 16px;
  background: var(--theme-surface);
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.08);
}
.mp2 fieldset.mp2-n > legend {
  float: left;
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--theme-text);
}
.mp2 fieldset.mp2-n > legend::before {
  content: counter(mp2) '.';
  margin-right: -4px;
}
.mp2 fieldset.mp2-n > legend > .vtc-icon {
  order: -1;
  color: var(--theme-accent-text);
}
.mp2 fieldset.mp2-n > legend small {
  font-weight: 400;
  color: var(--theme-muted);
}
.mp2 fieldset.mp2-n > legend ~ * {
  clear: both;
}
.mp2-note {
  margin: 0;
  color: var(--theme-muted);
  font-size: 0.92rem;
}
.mp2-msg {
  margin: 0 0 12px;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--theme-soft);
  font-weight: 600;
}
.mp2-msg.is-bad {
  background: var(--c-red-95);
  color: var(--c-danger, #b42318);
}
/* Tuiles de fond de carte (comme les moyens de paiement). */
.mp2-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 8px;
}
.mp2 label.mp2-tile {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
  cursor: pointer;
}
.mp2 label.mp2-tile:has(input:checked) {
  border: 2px solid var(--theme-accent);
  padding: 7px;
  background: var(--theme-soft);
}
.mp2 label.mp2-tile input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.mp2 label.mp2-tile:has(input:focus-visible) {
  outline: 2px solid var(--theme-accent);
  outline-offset: 2px;
}
.mp2-thumb {
  display: grid;
  place-items: center;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-radius: 8px;
  background: var(--theme-soft);
  color: var(--theme-muted);
  font-size: 0.8rem;
}
.mp2-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mp2-thumb.vtc-tiles-light img {
  filter: grayscale(1) brightness(1.08) contrast(0.92);
}
.mp2-thumb.vtc-tiles-dark img {
  filter: invert(1) hue-rotate(180deg) brightness(0.9) contrast(0.9);
}
.mp2-tile-name {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
  font-weight: 600;
  font-size: 0.92rem;
}
.mp2-tile-name small {
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--theme-muted);
}
/* Services avec clé. */
.mp2-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.mp2-chip {
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--theme-soft);
  color: var(--theme-accent-text);
  font-size: 0.8rem;
  font-weight: 600;
}
.mp2-status {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
}
.mp2-status.is-on {
  border-color: var(--theme-accent);
  background: var(--theme-soft);
}
.mp2-status .vtc-icon {
  flex: none;
  color: var(--theme-accent-text);
}
.mp2-status span {
  display: flex;
  flex-direction: column;
  line-height: 1.3;
}
.mp2-status small {
  color: var(--theme-muted);
  font-size: 0.8rem;
}
.mp2-checks {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.mp2-checks li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.92rem;
}
.mp2-checks li .vtc-icon {
  flex: none;
  width: 18px;
  height: 18px;
}
.mp2-checks li.is-ok .vtc-icon {
  color: var(--c-green-30);
}
.mp2-checks li.is-ko {
  color: var(--c-danger, #b42318);
}
.mp2-apis li {
  min-height: 52px;
  padding: 8px 10px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
}
.mp2-apis li.is-ok {
  color: inherit;
}
.mp2-apis li.is-ko {
  border-color: var(--c-danger, #b42318);
  background: var(--c-red-95);
}
.mp2-apis li span {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  line-height: 1.3;
}
.mp2-apis li small {
  font-size: 0.8rem;
  color: var(--theme-muted);
}
.mp2-apis li.is-ko small {
  color: var(--c-danger, #b42318);
}
.mp2-sec {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--theme-border);
  background: var(--theme-input);
}
.mp2-sec span {
  display: flex;
  flex-direction: column;
  line-height: 1.3;
}
.mp2-sec small {
  font-size: 0.8rem;
}
.mp2-sec .vtc-icon {
  flex: none;
}
.mp2-sec.is-restricted {
  border-color: var(--c-green-30);
  background: #e8f5ec;
  color: #14532d;
}
.mp2-sec.is-blocked {
  border-color: var(--c-danger, #b42318);
  background: var(--c-red-95);
  color: var(--c-danger, #b42318);
}
.mp2-sec.is-open {
  border-color: #b54708;
  background: #fff4e5;
  color: #7a2e0e;
}
.mp2-link {
  flex: none;
  padding: 8px 12px;
  border-radius: 10px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  font-weight: 700;
  font-size: 0.85rem;
  text-decoration: none;
}
.mp2-tuto {
  border-radius: 12px;
  background: var(--theme-soft);
  padding: 0 12px;
}
.mp2-tuto summary {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  font-weight: 600;
  color: var(--theme-accent-text);
  cursor: pointer;
}
.mp2-tuto ol {
  margin: 0 0 8px;
  padding-left: 1.2rem;
  display: grid;
  gap: 6px;
  overflow-wrap: anywhere;
  font-size: 0.92rem;
}
.mp2-tuto .mp2-note {
  padding-bottom: 12px;
}
.mp2-key label {
  display: grid;
  gap: 6px;
  font-weight: 600;
}
/* Sur ordinateur, les champs de l'application sont limités à 520 px : l'œil reste dans le champ. */
.mp2-key .pw-eye-box {
  width: 100%;
  max-width: 520px;
}
.mp2 .mp2-key input {
  display: block;
  width: 100%;
  max-width: none;
  min-width: 0;
  box-sizing: border-box;
  min-height: 46px;
  padding: 0 46px 0 12px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  background: var(--theme-input);
  color: var(--theme-text);
  font: inherit;
  font-weight: 400;
}
/* Boutons : principal plein (couleur de la société), secondaires légers. */
.mp2-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.mp2 button.mp2-primary {
  flex: 1 1 100%;
  min-height: 52px;
  border: 0;
  border-radius: 12px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.mp2 button.mp2-primary:disabled {
  opacity: 0.45;
  cursor: default;
}
.mp2 button.mp2-ghost {
  flex: 1 1 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 46px;
  padding: 6px 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
  color: var(--theme-text);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}
.mp2 button.mp2-ghost .vtc-icon {
  width: 18px;
  height: 18px;
}
.mp2 button.mp2-ghost.is-danger {
  border-color: var(--c-danger, #b42318);
  color: var(--c-danger, #b42318);
}
/* Ordre d'utilisation. */
.mp2-orders {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
}
.mp2-order h4 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 8px;
  font-size: 0.95rem;
}
.mp2-order h4 .vtc-icon {
  color: var(--theme-accent-text);
}
.mp2-order ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.mp2-order li {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 56px;
  padding: 8px 10px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
}
.mp2-order li:first-child:not(.is-off) {
  border: 2px solid var(--theme-accent);
  padding: 7px 9px;
  background: var(--theme-soft);
}
.mp2-order li.is-off {
  opacity: 0.6;
}
.mp2-rank {
  flex: none;
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  font-weight: 700;
  font-size: 0.85rem;
}
.mp2-order li.is-off .mp2-rank {
  background: var(--theme-border);
  color: var(--theme-text);
}
.mp2-svc {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  font-weight: 600;
  line-height: 1.25;
}
.mp2-svc small {
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--theme-muted);
}
.mp2 button.mp2-mv {
  flex: none;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  background: var(--theme-surface);
  color: var(--theme-text);
  cursor: pointer;
}
.mp2 button.mp2-mv:disabled {
  opacity: 0.3;
  cursor: default;
}

.pax-list {
  display: grid;
  gap: 6px;
  margin-block: 10px;
  max-height: min(40vh, 320px);
  overflow: auto;
}
.pax-pick {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  min-height: 46px;
  padding: 0 14px;
  border-radius: 12px;
  border: 1px solid var(--theme-border);
  background: transparent;
  color: var(--theme-text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.pax-pick:hover {
  border-color: var(--theme-accent);
}
.pax-pick.is-on {
  background: color-mix(in srgb, var(--theme-accent) 22%, transparent);
  border-color: var(--theme-accent);
  font-weight: 700;
}
.pax-pick:focus-visible,
.pax-link:focus-visible {
  outline: 3px solid var(--theme-focus);
  outline-offset: 2px;
}
.pax-link {
  background: transparent;
  border: 0;
  padding: 0 4px;
  min-height: 44px;
  color: var(--theme-accent-text, var(--theme-accent));
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
}
.pax-link:hover {
  text-decoration: underline;
}
.booking-panel .place-manual-open {
  background: transparent !important;
  color: var(--theme-accent) !important;
  border: 1px dashed var(--theme-border) !important;
  text-align: left;
}
.place-manual {
  display: grid;
  gap: 6px;
  padding: 10px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  background: var(--theme-soft);
}
.place-manual-status,
.place-manual-ok {
  margin: 0;
  font-size: 0.9rem;
}
.place-manual-ok {
  color: #1b7f3b;
  font-weight: 700;
}
.my-place {
  display: grid;
  gap: 6px;
  padding: 10px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  background: var(--theme-soft);
  margin: 8px 0;
}
.my-place small {
  overflow-wrap: anywhere;
  color: var(--theme-muted);
}
.sms-steps {
  padding-left: 1.2rem;
  display: grid;
  gap: 0.5rem;
}
.sms-ok {
  color: #1c6b3a;
}
.sms-bad {
  color: var(--c-danger-2);
}
.sms-filter {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin: 0.5rem 0;
}
.sms-table {
  overflow-x: auto;
}
.sms-table table {
  border-collapse: collapse;
  width: 100%;
  min-width: 520px;
}
.sms-table th,
.sms-table td {
  padding: 0.4rem 0.5rem;
  border-bottom: 1px solid var(--theme-border, #d8dee8);
  text-align: left;
  vertical-align: top;
  font-size: 0.9rem;
}
.sms-pre {
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--theme-bg, #f3f5f9);
  padding: 0.6rem;
  border-radius: 8px;
  font-size: 0.8rem;
  margin: 0.5rem 0 0;
}
.sms-ar {
  border-top: 1px solid var(--theme-border, #d8dee8);
  margin-top: 0.8rem;
  padding-top: 0.6rem;
}
.sms-ar code {
  word-break: break-all;
}

.ride-menu a.dt-link {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.55rem 0.8rem;
  color: inherit;
  text-decoration: none;
  box-sizing: border-box;
}
.ride-menu a.dt-link:hover {
  background: rgba(0, 0, 0, 0.06);
}
.dt-danger {
  color: var(--c-danger-2);
}
.dt-name {
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  font-weight: 700;
  color: inherit;
  cursor: pointer;
  text-align: left;
  text-decoration: underline dotted;
}
.dt-badge {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.1rem 0.45rem;
  border-radius: 99px;
  background: #e6efff;
  color: var(--c-blue-48);
  vertical-align: middle;
}
.dt-badge-bad {
  background: #fde8e8;
  color: var(--c-danger-2);
}

.notif-dialog {
  width: min(96vw, 760px);
}
.notif-scope {
  display: grid;
  gap: 0.3rem;
  margin-bottom: 0.6rem;
}
.notif-table {
  overflow-x: auto;
  margin: 0.6rem 0;
}
.notif-table table {
  border-collapse: collapse;
  width: 100%;
  font-size: 0.85rem;
}
.notif-table th,
.notif-table td {
  border: 1px solid var(--theme-border);
  padding: 0.35rem 0.4rem;
  text-align: center;
}
.notif-table tbody th {
  text-align: left;
  font-weight: 600;
  min-width: 170px;
}
.notif-table input[type='checkbox'] {
  width: 1.2rem;
  height: 1.2rem;
}
.notif-warn {
  color: var(--c-danger-2);
  font-weight: 600;
}
.lm-pin.lm-low span {
  background: #f79009;
}
.lm-pin.lm-lost span {
  background: var(--c-red-49);
}
.lm-pin.lm-old span {
  background: #98a2b3;
}
.lm-pin span {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #12b76a;
  color: var(--c-white);
  font-weight: 700;
  font-size: 0.8rem;
  border: 2px solid var(--c-white);
  box-shadow: 0 2px 6px #0006;
}
.lm-settings summary {
  cursor: pointer;
  font-weight: 700;
}
/* Fonctions chauffeur en course (V0168-95) */
.dx-hist small {
  color: var(--muted, #6b7280);
  margin-left: 6px;
}
.dx-msg small {
  font-size: 0.75rem;
  opacity: 0.7;
}
/* Pont application Android */
.nb-step p {
  margin: 4px 0 8px;
}
.nb-mark {
  font-size: 1.3rem;
  line-height: 1.2;
  min-width: 1.4rem;
}
.nb-ok .nb-mark {
  color: #12805c;
}
.partner-admin a.dt-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid var(--line, rgba(128, 128, 128, 0.4));
  border-radius: 12px;
  color: inherit;
  text-decoration: none;
}
.dt-link-in {
  width: 100%;
  box-sizing: border-box;
  padding: 10px;
  font: inherit;
}
/* confirmation de course (chauffeur) et picto « Confirmé » (administrateur) */
.rcf-item p {
  margin: 0 0 8px;
}
.rcf-act button {
  min-height: 44px;
  padding: 0 16px;
  border-radius: 10px;
  border: 1px solid var(--line, #999);
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 600;
}
.rcf-act .rcf-yes {
  background: var(--accent, #b8743a);
  color: var(--c-white);
  border-color: transparent;
}
.rc-confirm {
  color: #1f8a4c;
  font-weight: 600;
}
.rc-confirm small {
  font-weight: 400;
  opacity: 0.8;
}
.rc-confirm-no {
  color: var(--c-danger-3);
  font-weight: 600;
}
.rc-confirm-wait {
  opacity: 0.75;
}

.notif-tabs {
  display: flex;
  gap: 0.4rem;
  flex-wrap: wrap;
  margin: 0.4rem 0;
}
.notif-tabs button {
  border: 1px solid var(--theme-border);
  background: transparent;
  color: inherit;
  border-radius: 999px;
  padding: 0.4rem 0.9rem;
  font: inherit;
  min-height: 40px;
}
.notif-tabs button[aria-selected='true'] {
  background: var(--theme-primary, var(--c-blue-bright));
  color: var(--c-white);
  border-color: transparent;
}
.notif-text {
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 0.7rem;
  margin: 0.6rem 0;
  display: grid;
  gap: 0.4rem;
}
.notif-text h4 {
  margin: 0;
  font-size: 1rem;
}
.notif-text textarea,
.notif-text input[type='text'] {
  width: 100%;
  box-sizing: border-box;
  font: inherit;
  padding: 0.5rem;
  border-radius: 8px;
  border: 1px solid var(--theme-border);
  background: transparent;
  color: inherit;
}
.notif-prev {
  margin: 0;
  padding: 0.5rem;
  border-radius: 8px;
  background: rgba(128, 128, 128, 0.12);
  font-size: 0.9rem;
  white-space: pre-wrap;
}
.notif-badge {
  font-size: 0.72rem;
  font-weight: 600;
  border-radius: 999px;
  padding: 0.1rem 0.5rem;
  background: rgba(11, 95, 255, 0.15);
}
.notif-chips summary {
  cursor: pointer;
  min-height: 40px;
  display: flex;
  align-items: center;
}
.notif-chips div {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.3rem 0;
}
.notif-chip {
  border: 1px solid var(--theme-border);
  background: transparent;
  color: inherit;
  border-radius: 8px;
  padding: 0.3rem 0.5rem;
  font: inherit;
  font-size: 0.8rem;
  min-height: 36px;
}
.cfg-card {
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  padding: 1rem;
  margin: 0.8rem 0;
  display: grid;
  gap: 0.6rem;
}
.cfg-card h3 {
  margin: 0;
}
.cfg-check {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
}
.cfg-check input {
  margin-top: 0.25rem;
  width: 1.2rem;
  height: 1.2rem;
}
.cfg-result {
  margin: 0.2rem 0 0;
  padding-left: 1.2rem;
}

.plus-search {
  width: 100%;
  box-sizing: border-box;
  margin: 0.2rem 0 0.8rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--theme-border);
  border-radius: 14px;
  font: inherit;
  min-height: 46px;
}
.q-find {
  display: grid;
  gap: 0.5rem;
}
.q-find .q-btn {
  justify-self: start;
}
.q-pdf {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6rem;
  margin: 0.2rem 0 0.6rem;
}
.q-pdf .q-btn {
  margin: 0;
}
.q-logo-row {
  display: flex;
  align-items: center;
  min-height: 3rem;
  margin: 0.3rem 0;
}
.q-logo-row img {
  max-width: 180px;
  max-height: 80px;
  object-fit: contain;
}
.ex-card .ex-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.4rem 0;
}
.ex-scroll {
  overflow-x: auto;
  margin: 0.5rem 0;
}
.ex-table {
  border-collapse: collapse;
  width: 100%;
  font-size: 0.88rem;
}
.ex-table th,
.ex-table td {
  padding: 0.3rem 0.5rem;
  border-bottom: 1px solid var(--line, #ccc);
  text-align: left;
  white-space: nowrap;
}
.ex-prob ul {
  max-height: 12rem;
  overflow: auto;
  padding-left: 1.1rem;
}
.ex-sum ul {
  margin: 0.3rem 0 0.3rem 1.1rem;
  padding: 0;
}
.clients-row,
#admin-content article.service-row {
  cursor: pointer;
}
.clients-row:hover,
#admin-content article.service-row:hover {
  background: rgba(120, 130, 150, 0.07);
}
.ex-panel {
  margin: 0.6rem 0;
}
.ex-panel > summary {
  cursor: pointer;
  font-weight: 600;
}

/* Notifications automatiques : cartes lisibles sur téléphone (plus de tableau coupé) */
.notif-cards {
  display: grid;
  gap: 0.6rem;
  margin: 0.6rem 0;
}
.notif-card {
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 0.6rem 0.75rem;
  background: var(--theme-surface, #fff);
}
.notif-card h4 {
  margin: 0 0 0.4rem;
  font-size: 0.95rem;
}
.notif-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
  padding: 0.25rem 0;
  border-top: 1px solid var(--theme-border);
}
.notif-line:first-of-type {
  border-top: 0;
}
.notif-chan {
  font-weight: 600;
  font-size: 0.85rem;
  min-width: 5.5rem;
}
.notif-chips2 {
  display: flex;
  gap: 0.4rem;
  flex-wrap: wrap;
}
.notif-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  border: 1px solid var(--theme-border);
  border-radius: 999px;
  padding: 0.3rem 0.65rem;
  font-size: 0.85rem;
  cursor: pointer;
  min-height: 36px;
}
.notif-pill input {
  width: 1.1rem;
  height: 1.1rem;
  min-height: 0;
  min-width: 0;
  margin: 0;
  padding: 0;
  flex: none;
}
.notif-pill span {
  color: inherit;
  line-height: 1.2;
}
.notif-pill:has(input:checked) {
  background: color-mix(in srgb, var(--theme-primary, #d9a93b) 22%, transparent);
  border-color: var(--theme-primary, #d9a93b);
  font-weight: 700;
}
.admin-search {
  display: block;
  margin: 0.5rem 0;
}
.admin-search input {
  width: 100%;
  padding: 0.6rem 0.8rem;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  font-size: 1rem;
}
.service-row[hidden] {
  display: none !important;
}
.date-state.warn {
  color: #a86a00;
  font-weight: 600;
}
.date-state.ok {
  color: #1b6b34;
}
.document-date input.date-doubt {
  border: 2px solid #e08a00;
  background: #fff7e8;
}
.document-date .date-save {
  margin-top: 0.4rem;
}
/* Fiche chauffeur (onglets Informations | Documents) */
.driver-fiche {
  width: min(96vw, 560px);
}
.driver-fiche .df-garage legend {
  font-weight: 700;
  padding: 0 0.3rem;
}
.driver-fiche .df-stats b {
  display: block;
  font-size: 1.15rem;
}
.driver-fiche .df-stats span {
  font-size: 0.75rem;
  color: var(--theme-muted);
}
.driver-fiche .q-bad {
  color: var(--c-danger);
}
.driver-fiche .q-good {
  color: #1b6b34;
}
.driver-fiche .zone-results {
  list-style: none;
  margin: 0.3rem 0;
  padding: 0;
}
.driver-fiche .zone-results button {
  width: 100%;
  text-align: left;
}
.cc-am {
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 0.5rem 0.75rem;
  margin: 0.4rem 0;
}
.cc-chk {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-right: 1rem;
  min-height: 36px;
}
.cc-chk input {
  min-height: 0;
  width: auto;
}
.cc-photos {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin: 0.4rem 0;
}
.cc-photos figure {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  align-items: flex-start;
}
.cc-photos img {
  width: 120px;
  height: 80px;
  object-fit: contain;
  background: #f1eee6;
  border-radius: 8px;
}
/* Numéro de version et section d'intégration */
.app-version {
  margin: 22px 0 8px;
  text-align: center;
  font-size: 0.8rem;
  color: var(--muted, var(--c-muted));
}
#ec-page {
  width: 100%;
  max-width: 420px;
  min-height: 44px;
  margin: 6px 0;
}
#ec-script-t,
#ec-frame-t {
  width: 100%;
  box-sizing: border-box;
  font:
    13px/1.4 ui-monospace,
    Menlo,
    Consolas,
    monospace;
  resize: vertical;
}
.shop-page section[hidden] {
  display: none !important;
}
.shop-cart h3 {
  margin: 0 0 8px;
}
.shop-cart li {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
}
.shop-cart p {
  margin: 0 0 10px;
  font-size: 14px;
}

/* Site père : plein écran, menu latéral, formulaires soignés */
body.is-super .app {
  max-width: none;
}
body.is-super main {
  padding: 16px clamp(12px, 2vw, 32px) 60px;
}
.sa-side-brand strong {
  font-size: 19px;
}
.sa-side-brand small {
  color: var(--theme-muted);
}
.sa-nav button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 46px;
  padding: 0 14px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: var(--theme-text);
  font: inherit;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}
.sa-nav button:hover {
  background: var(--theme-soft, var(--theme-input));
}
.sa-nav button[aria-selected='true'] {
  background: var(--theme-accent);
  color: var(--theme-on-accent);
}
.sa-main {
  min-width: 0;
  display: grid;
  gap: 16px;
}
.sa-top h2 {
  margin: 0;
  font-size: 24px;
}
.sa-view > * {
  grid-column: 1/-1;
  min-width: 0;
}
.superadmin select,
.superadmin textarea {
  min-height: 44px;
  padding: 9px 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
  color: var(--theme-text);
  font: inherit;
  box-sizing: border-box;
  max-width: 100%;
}
.superadmin .fiche-form > label,
.superadmin .fiche-pair > label {
  display: grid;
  gap: 4px;
  font-size: 14px;
  color: var(--theme-muted);
}
.superadmin .fiche-form input:not([type='checkbox']),
.superadmin .fiche-form select {
  width: 100%;
}
.superadmin .ob-card h3 {
  margin: 0 0 8px;
  font-size: 18px;
}
.superadmin .ob-card h4 {
  margin: 14px 0 4px;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--theme-muted);
}
.sa-switch input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  margin: 0;
}
.sa-sw-track::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--c-white);
  transition: transform 0.15s;
}
.sa-optname input {
  width: 22px;
  height: 22px;
  flex: none;
}
.sa-optname span {
  display: grid;
  min-width: 0;
}
.sa-optname small {
  color: var(--theme-muted);
}
.sa-optrow input[type='number'] {
  width: 80px;
}
@media (max-width: 900px) {
  .sa-nav button {
    flex: none;
    white-space: nowrap;
  }
}
/* Fenêtres du site père : le contenu défile toujours (rien n'est coupé) */
.sa-view .partner-pagination button {
  min-height: 44px;
  padding: 0 18px;
  border-radius: 12px;
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-text);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
#sa-new {
  width: auto;
  min-width: 220px;
}
.sa-opt button {
  min-height: 44px;
  padding: 0 16px;
  border-radius: 12px;
  border: 1px solid var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-text);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.sa-opt label {
  display: flex;
  gap: 6px;
  align-items: center;
}
/* V0168-44 : cartes abonnés alignées */
/* V0168-44 : Options et tarifs en tableau */
.ot-name strong {
  font-size: 15px;
}
.ot-price input {
  width: 100%;
  min-height: 40px;
  max-width: none;
  text-align: right;
}
.ot-sale input {
  width: 22px;
  height: 22px;
}
@media (max-width: 760px) {
  .ot-row [data-l]::before {
    content: attr(data-l) ' : ';
    font-size: 12px;
    color: var(--theme-muted);
  }
}
/* V0168-44 : écran Stripe */
.st-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0;
}
.st-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  border: 1px solid var(--theme-border);
}
.st-pill.ok {
  background: rgba(34, 160, 90, 0.15);
  color: #1d7a47;
  border-color: rgba(34, 160, 90, 0.4);
}
.st-pill.warn {
  background: rgba(215, 163, 52, 0.18);
  color: #8a6410;
  border-color: rgba(215, 163, 52, 0.5);
}
.st-pill.no {
  background: var(--c-gray-50-a12);
  color: var(--theme-muted);
}
.st-hint {
  margin: 0 0 8px;
}
.st-cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.st-cols label small {
  display: block;
  font-weight: 400;
  color: var(--theme-muted);
  margin: 2px 0 4px;
}
.st-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 6px;
}
.st-btn {
  min-width: 230px;
  min-height: 44px;
  width: auto !important;
  padding: 0 18px;
}
.st-url {
  margin-top: 16px;
  padding: 12px;
  border: 1px dashed var(--theme-border);
  border-radius: 12px;
}
.st-url small {
  display: block;
  color: var(--theme-muted);
  margin-bottom: 6px;
}
.st-url .stripe-row {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}
.st-url code {
  overflow-wrap: anywhere;
  flex: 1;
  min-width: 200px;
}
.st-danger {
  margin: 18px 0 0;
  text-align: right;
}
.st-clear {
  background: transparent;
  border: 0;
  color: var(--c-danger-3);
  font: inherit;
  font-size: 13px;
  text-decoration: underline;
  cursor: pointer;
  padding: 6px 8px;
  width: auto !important;
}
.st-clear.armed {
  background: var(--c-danger-3);
  color: var(--c-white);
  text-decoration: none;
  border-radius: 8px;
  font-weight: 700;
}
@media (max-width: 760px) {
  .st-cols {
    grid-template-columns: 1fr;
  }
  .st-btn {
    width: 100% !important;
  }
}
.ot-base .sa-inline button {
  width: auto;
  min-width: 200px;
}
/* V0168-44 : inscription */
/* V0168-44 : profil */
.profile-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.auth-zone .profile-top .profile-close {
  width: auto;
  min-width: 0;
  min-height: 40px;
  margin: 0;
  padding: 6px 14px;
  background: transparent;
  border: 1px solid var(--line, #d8dde6);
  color: inherit;
  font-weight: 600;
}
.profile-top .app-version {
  margin: 0;
  font-size: 12px;
  opacity: 0.6;
}
/* V0168-44 : accueil personnalisable */
.service-grid .service-link {
  -webkit-touch-callout: none;
  user-select: none;
  position: relative;
}
.home-edit-link {
  margin-left: 10px;
  border: 0;
  background: transparent;
  color: inherit;
  opacity: 0.65;
  font-size: 12px;
  font-weight: 600;
  text-decoration: underline;
  cursor: pointer;
  padding: 4px 6px;
}
.service-grid.is-editing .service-link:not([hidden]) {
  animation: home-jiggle 0.28s ease-in-out infinite alternate;
}
.service-grid.is-editing .service-link:nth-child(2n) {
  animation-delay: -0.14s;
}
@keyframes home-jiggle {
  from {
    transform: rotate(-0.9deg);
  }
  to {
    transform: rotate(0.9deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .service-grid.is-editing .service-link {
    animation: none;
    outline: 2px dashed currentColor;
    outline-offset: -3px;
  }
}
.home-x {
  position: absolute;
  top: -8px;
  left: -8px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--c-danger-3);
  color: var(--c-white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 20px;
  line-height: 1;
  box-shadow: 0 2px 6px #0004;
  cursor: pointer;
}
.home-edit-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 14px 0;
}
.home-edit-bar button {
  width: auto;
  min-height: 44px;
  padding: 0 18px;
  border-radius: 12px;
  border: 1px solid var(--line, #d8dde6);
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.home-edit-bar .home-ok {
  background: var(--c-amber-52);
  color: var(--c-amber-7);
  border-color: transparent;
}
.home-pick {
  flex-basis: 100%;
  flex-wrap: wrap;
}
.home-pick button {
  min-height: 40px;
  font-weight: 600;
}
.service-grid .service-link[hidden] {
  display: none !important;
}
/* V0168-45 : code société */
.sa-dialog input[readonly] {
  width: 100%;
}
/* V0168-46 : panier collé en bas de la Boutique */
.shop-cart-bar li {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}
#shop-toast {
  position: fixed;
  left: 50%;
  bottom: calc(170px + env(safe-area-inset-bottom, 0px));
  background: #1f2a37;
  color: var(--c-white);
  padding: 10px 18px;
  border-radius: 999px;
  font-weight: 600;
  font-size: 14px;
  opacity: 0;
  pointer-events: none;
  transition:
    opacity 0.2s,
    transform 0.2s;
  z-index: 80;
}
#shop-toast.on {
  opacity: 1;
}
/* V0168-46 : utilisateurs en onglets + menu ⋯ */
.sa-utab span {
  display: inline-block;
  min-width: 20px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--c-gray-50-a18);
  font-size: 12px;
  text-align: center;
}
.sa-menu-list button {
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  padding: 12px 16px;
  min-height: 44px;
  cursor: pointer;
  width: 100%;
  margin: 0;
}
.sa-menu-list button:hover {
  background: var(--c-gray-50-a12);
}
html .sa-dialog .sa-utab {
  background: transparent;
  color: inherit;
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: 0;
  box-shadow: none;
}
html .sa-dialog .sa-dots {
  background: transparent;
  color: inherit;
  border: 1px solid var(--theme-border, #d8dde6);
  box-shadow: none;
  width: 40px;
  padding: 0;
}
/* V0168-47 : Société et Profil sur toute la largeur (ordinateur avec l'option « Logiciel de gestion PC ») */
.q-grp {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}
.q-submit {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.legal-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--line, var(--c-line));
  border-radius: 14px;
  margin: 12px 0;
}
.legal-card h3 {
  margin: 0;
}
.legal-card p {
  margin: 0;
}
.auth-zone a.legal-link {
  display: inline-block;
  text-decoration: none;
  background: var(--c-amber-52);
  color: var(--c-amber-7);
  font-weight: 750;
  border-radius: 13px;
  padding: 12px 20px;
  text-align: center;
  min-height: 44px;
  width: fit-content;
}
@media (min-width: 1100px) {
  body.is-wide .q-wrap {
    max-width: 1500px;
  }
  body.is-wide .q-cols {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr) minmax(0, 1fr);
    grid-template-areas: 'find id tva' 'find id pay' 'sub sub sub';
    gap: 18px 28px;
    align-items: start;
  }
  body.is-wide .q-g-find {
    grid-area: find;
  }
  .q-g-id {
    grid-area: id;
  }
  .q-g-tva {
    grid-area: tva;
  }
  .q-g-pay {
    grid-area: pay;
  }
  .q-submit {
    grid-area: sub;
  }
  body.is-wide .q-wrap .q-sec.q-logo {
    max-width: none;
  }
  html body.is-wide #auth-zone:has(#profile-form) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px 40px;
    align-items: start;
    max-width: 1400px;
  }
  body.is-wide #auth-zone:has(#profile-form) > .profile-top,
  body.is-wide #auth-zone:has(#profile-form) > h2,
  body.is-wide #auth-zone:has(#profile-form) > #theme-settings {
    grid-column: 1/-1;
  }
}
/* V0168-48 : panier compact + panneau de détail qui défile */
.shop-cart-sheet li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto 40px;
  gap: 10px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--theme-border, var(--c-line));
}
#shop-toast {
  bottom: auto;
  top: calc(76px + env(safe-area-inset-top, 0px));
  transform: translate(-50%, -8px);
}
#shop-toast.on {
  transform: translate(-50%, 0);
}
/* V0168-48 : accueil — glisser-déposer, aide, liste d'ajout */
.home-help {
  font-size: 12px;
  margin: 10px 2px 0;
  text-align: center;
}
.service-grid.is-editing .service-link {
  touch-action: none;
  cursor: grab;
}
.service-grid.is-editing .service-link.is-drag {
  animation: none !important;
  z-index: 60;
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.35);
  opacity: 0.95;
  cursor: grabbing;
}
.home-edit-bar .home-reset {
  border-style: dashed;
}
.home-edit-bar button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.home-pick {
  max-height: 50vh;
  overflow-y: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 8px;
}
.home-edit-bar .home-pick button {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  min-height: 56px;
  padding: 8px 14px;
  font-weight: 400;
  width: 100%;
}
.home-pick small {
  opacity: 0.7;
}
/* V0168-51 : confirmation de course — motif du refus */
.rcf-why label {
  display: grid;
  gap: 4px;
  font-size: 0.85rem;
  font-weight: 600;
}
.rcf-why textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--line, #d6d0c8);
  border-radius: 10px;
  padding: 8px 10px;
  font: inherit;
  background: var(--surface, #fff);
  color: inherit;
}
.rcf-act .rcf-yes {
  white-space: normal;
}
/* V0168-51 : marque et modèle en listes */
.car-pair select {
  width: 100%;
}
.car-pair .car-other {
  margin-top: 6px;
  width: 100%;
  box-sizing: border-box;
}
.car-pair select:disabled {
  opacity: 0.55;
}
/* V0168-53 : catalogue des véhicules (site père) */
.car-tools {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.car-tools input {
  flex: 1 1 200px;
  min-width: 0;
}
.car-list {
  display: grid;
  gap: 10px;
  margin-top: 10px;
}
.car-row {
  border: 1px solid var(--line, #d9d3ca);
  border-radius: 12px;
  padding: 12px;
  background: var(--surface, #fff);
}
.car-row.is-pending {
  border-color: var(--accent, #b8743a);
  box-shadow: 0 0 0 2px rgba(184, 116, 58, 0.18);
}
.car-row header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 4px 12px;
  margin-bottom: 8px;
}
.car-row small {
  opacity: 0.7;
}
.car-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 8px;
}
.car-grid label {
  display: grid;
  gap: 3px;
  font-size: 0.8rem;
  font-weight: 600;
}
.car-grid input,
.car-grid select {
  width: 100%;
  box-sizing: border-box;
}
.car-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 10px 0;
}
.car-chk {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.9rem;
}
.car-act {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.car-msg {
  font-size: 0.85rem;
}
.car-sil {
  display: flex;
  justify-content: center;
  padding: 4px 0 8px;
}
.car-svg {
  width: min(240px, 70%);
  height: auto;
}
/* V0168-53 : règles de courses d'un chauffeur */
/* V0168-53 : bouton Dispatch automatique */
.reservation-auto {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 14px;
  border-radius: 12px;
  border: 1px solid var(--line, #d6d0c8);
  background: var(--surface, #fff);
  color: inherit;
  font: inherit;
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
}
.reservation-auto b {
  font-weight: 700;
}
.ad-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #9aa0a6;
  flex: none;
}
.reservation-auto[data-on='1'] {
  border-color: var(--c-success);
}
.reservation-auto[data-on='1'] .ad-dot {
  background: var(--c-green-40);
  box-shadow: 0 0 0 3px rgba(46, 157, 95, 0.25);
}

.car-pending {
  margin-top: 12px;
}
.car-pending h4 {
  margin: 0 0 6px;
}
.car-brands {
  display: grid;
  gap: 6px;
  margin-top: 12px;
}
.car-brand > summary {
  justify-content: space-between;
  align-items: center;
  gap: 8px 12px;
  padding: 12px 14px;
  cursor: pointer;
  list-style: none;
  min-height: 44px;
}
.car-brand > summary::-webkit-details-marker {
  display: none;
}
.car-brand > summary::before {
  content: '▸';
  margin-right: 8px;
  transition: transform 0.15s;
}
.car-brand[open] > summary::before {
  transform: rotate(90deg);
}
.car-brand > summary strong {
  flex: 1;
  letter-spacing: 0.02em;
}
.car-brand > summary small {
  opacity: 0.7;
}
.car-brand .car-list {
  margin: 0;
  padding: 0 10px 10px;
  border-top: 1px solid var(--line, #d9d3ca);
  padding-top: 10px;
}
.car-btn {
  font: inherit;
  font-size: 0.9rem;
  padding: 8px 14px;
  min-height: 40px;
  border: 1px solid var(--line, #b9b2a6);
  border-radius: 10px;
  background: var(--surface, #fff);
  color: inherit;
  cursor: pointer;
}
.car-btn-main {
  background: var(--accent, #b8743a);
  border-color: var(--accent, #b8743a);
  color: var(--c-white);
}
.co-status {
  border: 1px solid var(--line, #d9d3ca);
  border-radius: 12px;
  padding: 8px 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
}
.co-status legend {
  font-weight: 600;
  padding: 0 6px;
}
.co-logo {
  display: grid;
  gap: 6px;
}
.co-logo-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}
.co-logo-row img {
  max-height: 56px;
  max-width: 160px;
  border: 1px solid var(--line, #d9d3ca);
  border-radius: 8px;
  padding: 4px;
  background: var(--c-white);
}
#co-vat-wrap[hidden],
#co-legal-wrap[hidden] {
  display: none;
}
#co-legal-wrap,
#co-vat-wrap {
  display: contents;
}

/* Catalogue compact (site père) */
.car-brand {
  border: 1px solid var(--line, #d9d3ca);
  border-radius: 12px;
  background: var(--surface, #fff);
  overflow: hidden;
}
.car-brand > summary {
  display: none;
}
.cg-bh small {
  opacity: 0.7;
  white-space: nowrap;
}
.cg-row:nth-child(even) {
  background: rgba(127, 127, 127, 0.05);
}
.cg-row input:not([type='checkbox']),
.cg-row select {
  font: inherit;
  font-size: 13px;
  height: 30px;
  border: 1px solid var(--line, #cfc9bf);
  border-radius: 8px;
  padding: 0 8px;
  box-sizing: border-box;
  width: 100%;
  background: var(--surface, #fff);
  color: inherit;
  min-width: 0;
}
.cg-lock span {
  opacity: 0.45;
  font-size: 15px;
}
.cg-lock input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.cg-sw input {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
}
.cg-knob::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--c-white);
  transition: transform 0.15s;
}
.cg-bulk select {
  font: inherit;
  height: 36px;
  border: 1px solid var(--line, #b9b2a6);
  border-radius: 10px;
  background: var(--surface, #fff);
  color: inherit;
}

/* Catalogue vu par la société */
.cc-q {
  width: 100%;
  box-sizing: border-box;
  margin: 8px 0;
}
.cc-list {
  display: grid;
  gap: 6px;
  max-height: 68vh;
  overflow: auto;
}
.cc-row {
  display: grid;
  grid-template-columns:
    minmax(120px, 1.3fr) 66px 66px minmax(150px, 2fr)
    minmax(130px, auto);
  gap: 8px 12px;
  align-items: center;
  padding: 7px 14px;
  border-top: 1px solid var(--c-gray-50-a18);
}
.cc-name {
  display: grid;
}
.cc-name small {
  opacity: 0.65;
}
.cc-n {
  display: grid;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  gap: 2px;
}
.cc-n input {
  font: inherit;
  font-size: 13px;
  height: 30px;
  border: 1px solid var(--line, #cfc9bf);
  border-radius: 8px;
  text-align: center;
  width: 100%;
  box-sizing: border-box;
  background: var(--surface, #fff);
  color: inherit;
}
.cc-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
}
.cc-state {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.cc-badge {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 20px;
  background: rgba(184, 116, 58, 0.18);
  color: var(--accent, #b8743a);
}
@media (max-width: 640px) {
  .cc-row {
    grid-template-columns: 1fr 1fr;
  }
  .cc-name,
  .cc-cats,
  .cc-state {
    grid-column: 1/-1;
  }
}
.car-btn#vehicle-catalog,
#vehicle-catalog {
  margin-left: 8px;
}
.service-row-icon .car-svg {
  width: 54px;
  height: auto;
}
.service-row-icon:has(.car-svg) {
  width: auto;
  min-width: 54px;
  background: none;
}

.cc-dialog {
  width: min(980px, 96vw) !important;
  max-width: 96vw !important;
}
.cc-dialog .cc-cats input[type='checkbox'] {
  width: 18px;
  height: 18px;
  margin: 0;
}
.cc-dialog .cc-state {
  justify-content: flex-end;
}
.cg-row input:not([type='checkbox']),
.cg-row select,
.cc-n input {
  min-height: 0 !important;
  height: 30px !important;
}
.cg-row input[type='checkbox'] {
  width: 18px;
  height: 18px;
  margin: 0;
  min-height: 0;
}
.cc-row.is-off .cc-name,
.cc-row.is-off .cc-n,
.cc-row.is-off .cc-cats {
  opacity: 0.5;
}
.cc-note {
  font-size: 11px;
  opacity: 0.7;
}
/* V156 : formulaire « Nouvelle réservation » en page unique (maquette validée le 22/10/2026). Couleurs = thème de la société. */
#booking-create.bk2 {
  counter-reset: bk2;
  display: grid;
  gap: 12px;
}
#booking-create.bk2 fieldset.bk2-n {
  counter-increment: bk2;
  margin: 0;
  padding: 14px;
  border: 0;
  border-radius: 16px;
  background: var(--theme-surface);
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.08);
}
#booking-create.bk2 fieldset.bk2-n > legend {
  float: left;
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  margin: 0 0 12px;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--theme-text);
}
#booking-create.bk2 fieldset.bk2-n > legend::before {
  content: counter(bk2) '.';
  margin-right: -4px;
}
#booking-create.bk2 fieldset.bk2-n > legend > .vtc-icon {
  order: -1;
  color: var(--theme-accent-text);
}
#booking-create.bk2 fieldset.bk2-n > legend ~ * {
  clear: both;
}
#booking-create.bk2 fieldset.bk2-n > legend small {
  font-weight: 400;
  color: var(--theme-muted);
}
#booking-create.bk2 input,
#booking-create.bk2 select,
#booking-create.bk2 textarea {
  border-radius: 10px;
  min-height: 46px;
}
#booking-create.bk2 textarea {
  min-height: 76px;
}
/* 1. Prestation */
#booking-create.bk2 .bk2-native {
  display: none;
}
#booking-create.bk2 .bk2-seg {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
  gap: 8px;
}
#booking-create.bk2 .bk2-seg button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 52px;
  margin: 0;
  padding: 6px 10px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
  color: var(--theme-text);
  font-weight: 600;
  font-size: 0.95rem;
  box-shadow: none;
}
#booking-create.bk2 .bk2-seg button[aria-checked='true'] {
  background: var(--theme-accent);
  border-color: var(--theme-accent);
  color: var(--theme-on-accent);
}
#booking-create.bk2 .bk2-seg button[disabled] {
  opacity: 0.55;
}
/* 2. Itinéraire : repères départ / arrivée */
#booking-create.bk2 .bk2-stop {
  position: relative;
  padding-left: 28px;
  font-weight: 500;
}
#booking-create.bk2 .bk2-stop::before {
  content: '';
  position: absolute;
  left: 3px;
  top: calc(1.5em + 17px);
  width: 14px;
  height: 14px;
  border-radius: 50%;
  box-sizing: border-box;
  border: 4px solid var(--theme-accent);
}
#booking-create.bk2 .bk2-to::before {
  border-width: 2px;
}
#booking-create.bk2 #booking-steps,
#booking-create.bk2 #add-step {
  margin-left: 28px;
}
#booking-create.bk2 #add-step {
  display: flex;
  align-items: center;
  gap: 8px;
  width: calc(100% - 28px);
  min-height: 44px;
  padding: 0 12px;
  border: 0;
  border-radius: 10px;
  background: var(--theme-soft);
  color: var(--theme-accent-text);
  font-weight: 600;
  box-shadow: none;
}
/* 3. Date */
#booking-create.bk2 .booking-date-card label {
  margin: 0;
}
#booking-create.bk2 #booking-date-control {
  min-height: 48px;
  border-radius: 10px;
  padding: 0 14px;
}
/* 4. Passagers et bagages */
#booking-create.bk2 .bk2-qty {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  padding: 10px 0;
}
#booking-create.bk2 .bk2-qty-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 0;
  padding: 0;
  border-right: 1px solid var(--theme-border);
}
#booking-create.bk2 .bk2-qty-col:last-child {
  border-right: 0;
}
#booking-create.bk2 .bk2-qty-label {
  font-size: 0.72rem;
  color: var(--theme-muted);
  text-align: center;
  line-height: 1.2;
}
#booking-create.bk2 .bk2-qty-col .vtc-icon {
  width: 20px;
  height: 20px;
  color: var(--theme-text);
}
#booking-create.bk2 .bk2-qty-ctl {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 3px;
  max-width: 100%;
}
#booking-create.bk2 .bk2-qty-ctl output {
  order: -1;
  flex-basis: 100%;
  font-size: 1.1rem;
  font-weight: 700;
  text-align: center;
}
#booking-create.bk2 .bk2-qty-ctl button {
  width: 28px;
  height: 28px;
  min-height: 28px;
  min-width: 28px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--theme-soft);
  color: var(--theme-accent-text);
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1;
  box-shadow: none;
}
#booking-create.bk2 .bk2-qty-ctl button[disabled] {
  opacity: 0.35;
}
#booking-create.bk2 #capacity-quantities {
  width: 100%;
  margin: 10px 0 0;
  min-height: 40px;
  padding: 0 4px;
  border: 0;
  background: none;
  color: var(--theme-accent-text);
  font-size: 0.9rem;
  font-weight: 600;
  text-align: left;
  box-shadow: none;
}
#booking-create.bk2 #booking-capacity {
  margin: 4px 4px 0;
  font-size: 0.85rem;
  color: var(--theme-muted);
}
/* 5. Tarification */
#booking-create.bk2 #booking-price-quote {
  width: 100%;
  min-height: 50px;
  border-radius: 12px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  border: 0;
  font-weight: 700;
}
#booking-create.bk2 #booking-price-result {
  border-radius: 10px;
  font-size: 0.9rem;
}
/* 6. Client */
#booking-create.bk2 .customer-search-row {
  margin: 0;
}
#booking-create.bk2 #new-customer {
  min-height: 46px;
  border-radius: 10px;
}
/* 8. Paiement */
#booking-create.bk2 fieldset.bk2-pay {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 8px;
}
#booking-create.bk2 fieldset.bk2-pay > legend {
  grid-column: 1/-1;
}
#booking-create.bk2 fieldset.bk2-pay > :not(legend):not(label) {
  grid-column: 1/-1;
}
#booking-create.bk2 fieldset.bk2-pay > label.booking-check {
  margin: 0;
  align-items: center;
  gap: 10px;
  min-height: 56px;
  padding: 10px 12px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-input);
  font-weight: 600;
  font-size: 0.92rem;
  cursor: pointer;
}
#booking-create.bk2 fieldset.bk2-pay > label.booking-check:has(input:checked) {
  border: 2px solid var(--theme-accent);
  background: var(--theme-soft);
}
#booking-create.bk2 fieldset.bk2-pay > label.booking-check span {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
}
#booking-create.bk2 fieldset.bk2-pay small {
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--theme-muted);
}
/* Confirmation */
#booking-create.bk2 .booking-actions {
  margin: 4px 0 0;
}
#booking-create.bk2 .booking-actions [type='submit'] {
  width: 100%;
  min-height: 54px;
  border-radius: 14px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  border: 0;
  font-size: 1.05rem;
  font-weight: 700;
}
#booking-create.bk2 .booking-actions [type='submit'][disabled] {
  opacity: 0.5;
}
@media (max-width: 360px) {
  #booking-create.bk2 .bk2-qty-ctl button {
    width: 24px;
    height: 24px;
    min-height: 24px;
    min-width: 24px;
  }
}
#booking-create.bk2 .booking-price-action {
  display: grid;
  gap: 8px;
}
/* V157 : saisie d'une course hors connexion */
.bk2-offline-box {
  margin: 0 0 12px;
}
.bk2-offline-msg {
  margin: 0 0 10px;
  padding: 12px 14px;
  border-radius: 12px;
  background: #fff4e0;
  color: #5a3a00;
  border: 1px solid #f0c97a;
  font-size: 0.92rem;
  line-height: 1.45;
}
#booking-create.bk2 .booking-actions #booking-offline-save {
  width: 100%;
  min-height: 54px;
  border-radius: 14px;
  background: var(--theme-accent);
  color: var(--theme-on-accent);
  border: 0;
  font-size: 1.05rem;
  font-weight: 700;
}
/* V157 : onglets Particulier / Professionnel bien visibles en haut de la fiche client */
.client-editor .client-type-switch {
  margin: 2px 0 16px;
  position: relative;
}
.client-editor .client-type-switch label {
  position: relative;
  min-height: 52px !important;
  font-size: 15px !important;
  font-weight: 600;
}
/* V157 : mentions légales en tête du bon de commande */
.bdc-legal {
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  text-align: center;
  background: var(--theme-soft);
}
.bdc-legal p {
  margin: 2px 0;
}
.bdc-legal .bdc-legal-title {
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.bdc-legal .bdc-legal-ref {
  font-size: 12px;
  color: var(--theme-muted);
}
/* V157 — Import de réservations */
.reservation-import {
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  padding: 8px 12px;
  min-height: 44px;
  background: var(--theme-surface);
  color: var(--theme-text);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
.reservation-import:hover {
  border-color: var(--theme-accent);
}
.bi-paste summary {
  cursor: pointer;
  font-size: 14px;
  color: var(--theme-muted);
  padding: 6px 0;
}
.bi-paste textarea {
  width: 100%;
  box-sizing: border-box;
  margin-top: 6px;
  border: 1px solid var(--theme-border);
  border-radius: 10px;
  padding: 10px;
  background: var(--theme-input);
  color: var(--theme-text);
  font:
    13px/1.4 ui-monospace,
    monospace;
}
.bi-sum span {
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  background: var(--theme-soft);
}
.bi-price small,
.bi-meta small {
  font-weight: 400;
  color: var(--theme-muted);
}
/* V157c — formulaire client : sur les écrans peu hauts, les blocs du formulaire (dont Particulier / Professionnel) ne sont plus écrasés */
.client-editor form {
  grid-auto-rows: max-content;
  align-content: start;
}
.client-editor .client-type-switch {
  min-height: max-content;
}

/* Nuit du changement d'heure : heure inexistante ou présente deux fois (V170). */
.booking-panel .booking-dst {
  color: var(--c-danger);
  font-size: 13px;
  font-weight: 600;
  margin: 6px 0 0;
}
