/* =========================
   Réglages généraux
   ========================= */
:root {
  --red: #df0000;
  --hero: #444487;
  --footer: #202020;
  --white: #ffffff;
  --text: #161616;
  --muted: #6f6f6f;
  --focus: #ffffff;
}

* {
  box-sizing: border-box;
}

html {
  min-height: 100%;
}

body {
  min-height: 100%;
  margin: 0;
  color: var(--text);
  background: #f4f4f4;
  font-family: Arial, Helvetica, sans-serif;
}

button,
input {
  font: inherit;
}

a {
  color: inherit;
  text-decoration: none;
}

.page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* =========================
   En-tête
   ========================= */
.site-header {
  min-height: 100px;
  background: var(--red);
  color: var(--white);
}

.header-inner {
  width: min(100%, 1600px);
  min-height: 100px;
  margin: 0 auto;
  padding: 0 46px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.brand {
  font-size: clamp(2rem, 2.5vw, 2.75rem);
  font-weight: 700;
  letter-spacing: -1px;
}

.main-navigation {
  display: flex;
  align-items: center;
  gap: 40px;
}

.main-navigation a {
  position: relative;
  padding: 39px 0 35px;
  font-size: 1.08rem;
  font-weight: 700;
}

.main-navigation a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 27px;
  height: 2px;
  background: var(--white);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 180ms ease;
}

.main-navigation a:hover::after,
.main-navigation a:focus-visible::after,
.main-navigation a.active::after {
  transform: scaleX(1);
}

.menu-toggle {
  display: none;
  width: 46px;
  height: 42px;
  border: 0;
  padding: 9px;
  background: transparent;
  cursor: pointer;
}

.menu-toggle span {
  display: block;
  height: 3px;
  margin: 5px 0;
  border-radius: 3px;
  background: var(--white);
}

/* =========================
   Zone principale
   ========================= */
main {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.hero {
  min-height: 470px;
  background: var(--hero);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 72px 28px 95px;
}

.hero-content {
  width: min(100%, 1500px);
  text-align: center;
}

.hero h1 {
  margin: 0 0 32px;
  font-size: clamp(2.9rem, 4.2vw, 4.3rem);
  line-height: 1.06;
  letter-spacing: -2px;
  font-weight: 700;
}

.search-form {
  width: min(100%, 815px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 145px;
  gap: 16px;
  align-items: start;
}

.field {
  min-width: 0;
}

.search-form input {
  width: 100%;
  height: 54px;
  border: 1px solid #d9d9d9;
  border-radius: 8px;
  padding: 0 18px;
  color: #202020;
  background: var(--white);
  outline: none;
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease;
}

.search-form input::placeholder {
  color: var(--muted);
  opacity: 1;
}

.search-form input:focus {
  border-color: var(--focus);
  box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.25);
}

.search-form input.invalid {
  border-color: #ffcece;
  box-shadow: 0 0 0 4px rgba(255, 0, 0, 0.16);
}

.search-form button {
  height: 54px;
  border: 0;
  border-radius: 8px;
  padding: 0 25px;
  color: var(--white);
  background: var(--red);
  cursor: pointer;
  transition:
    transform 150ms ease,
    filter 150ms ease;
}

.search-form button:hover {
  filter: brightness(0.92);
}

.search-form button:active {
  transform: translateY(1px);
}

.error-message {
  min-height: 18px;
  display: block;
  padding: 5px 4px 0;
  color: #ffffff;
  text-align: left;
  font-size: 0.82rem;
}

.content-spacer {
  min-height: 90px;
  flex: 1;
  background: #f4f4f4;
}

/* =========================
   Pied de page
   ========================= */
.site-footer {
  min-height: 66px;
  padding: 20px;
  background: var(--footer);
  color: var(--white);
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
}

.site-footer p {
  margin: 0;
  font-size: 1rem;
}

/* Accessibilité */
.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;
}

/* =========================
   Tablettes et mobiles
   ========================= */
@media (max-width: 900px) {
  .header-inner {
    padding: 0 24px;
  }

  .menu-toggle {
    display: block;
  }

  .main-navigation {
    position: absolute;
    z-index: 10;
    top: 100px;
    left: 0;
    right: 0;
    display: none;
    flex-direction: column;
    gap: 0;
    background: #c90000;
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.16);
  }

  .main-navigation.open {
    display: flex;
  }

  .main-navigation a {
    width: 100%;
    padding: 18px 24px;
    text-align: center;
    border-top: 1px solid rgba(255, 255, 255, 0.16);
  }

  .main-navigation a::after {
    display: none;
  }

  .hero {
    min-height: 500px;
    padding-top: 70px;
  }

  .hero h1 {
    letter-spacing: -1px;
  }

  .search-form {
    max-width: 620px;
    grid-template-columns: 1fr;
  }

  .search-form button {
    width: 100%;
  }
}

@media (max-width: 520px) {
  .site-header,
  .header-inner {
    min-height: 82px;
  }

  .header-inner {
    padding: 0 18px;
  }

  .brand {
    font-size: 2rem;
  }

  .main-navigation {
    top: 82px;
  }

  .hero {
    min-height: 520px;
    padding: 55px 18px 70px;
  }

  .hero h1 {
    margin-bottom: 28px;
    font-size: 2.65rem;
  }

  .site-footer {
    min-height: 72px;
  }
}

/* =========================
   Page d'inscription
   ========================= */
.registration-main {
  background: #f4f4f4;
}

.registration-hero {
  min-height: 300px;
  padding: 70px 24px 110px;
  background: var(--hero);
  color: var(--white);
  text-align: center;
}

.registration-intro {
  width: min(100%, 850px);
  margin: 0 auto;
}

.eyebrow {
  display: inline-block;
  margin-bottom: 12px;
  font-size: 0.92rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.registration-hero h1 {
  margin: 0 0 16px;
  font-size: clamp(2.5rem, 5vw, 4rem);
  letter-spacing: -1.5px;
}

.registration-hero p {
  max-width: 680px;
  margin: 0 auto;
  font-size: 1.08rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.9);
}

.registration-section {
  width: min(100% - 32px, 980px);
  margin: -64px auto 70px;
  position: relative;
  z-index: 2;
}

.registration-card {
  overflow: hidden;
  border-radius: 16px;
  background: var(--white);
  box-shadow: 0 24px 60px rgba(28, 28, 60, 0.16);
}

.account-switch {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-bottom: 1px solid #e8e8ef;
  background: #fafafe;
}

.account-tab {
  min-height: 105px;
  border: 0;
  padding: 22px 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background: transparent;
  color: #535363;
  cursor: pointer;
  text-align: left;
  transition:
    background 160ms ease,
    color 160ms ease;
}

.account-tab + .account-tab {
  border-left: 1px solid #e8e8ef;
}

.account-tab:hover {
  background: #f2f2fb;
}

.account-tab.active {
  background: var(--hero);
  color: var(--white);
}

.account-tab strong,
.account-tab small {
  display: block;
}

.account-tab strong {
  margin-bottom: 5px;
  font-size: 1.08rem;
}

.account-tab small {
  font-size: 0.85rem;
  opacity: 0.82;
}

.account-icon {
  font-size: 1.65rem;
}

.account-panel {
  display: none;
  padding: 42px 48px 36px;
}

.account-panel.active {
  display: block;
}

.form-heading {
  margin-bottom: 30px;
  text-align: center;
}

.form-heading h2 {
  margin: 0 0 9px;
  color: #282852;
  font-size: 1.85rem;
}

.form-heading p {
  margin: 0;
  color: #70707d;
  line-height: 1.6;
}

.registration-form {
  max-width: 790px;
  margin: 0 auto;
}

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.form-group {
  min-width: 0;
}

.form-group-full {
  grid-column: 1 / -1;
}

.form-group label {
  display: block;
  margin-bottom: 8px;
  color: #343442;
  font-size: 0.93rem;
  font-weight: 700;
}

.form-group input {
  width: 100%;
  height: 50px;
  border: 1px solid #d6d6df;
  border-radius: 8px;
  padding: 0 15px;
  color: #222;
  background: #fff;
  outline: none;
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease;
}

.form-group input:focus {
  border-color: var(--hero);
  box-shadow: 0 0 0 4px rgba(68, 68, 135, 0.12);
}

.password-field {
  position: relative;
}

.password-field input {
  padding-right: 88px;
}

.password-toggle {
  position: absolute;
  top: 50%;
  right: 8px;
  transform: translateY(-50%);
  border: 0;
  padding: 7px 8px;
  background: transparent;
  color: var(--hero);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
}

.check-row {
  margin: 24px 0;
  display: flex;
  align-items: flex-start;
  gap: 11px;
  color: #5f5f6d;
  font-size: 0.9rem;
  line-height: 1.5;
}

.check-row input {
  width: 17px;
  height: 17px;
  margin-top: 2px;
  accent-color: var(--hero);
}

.primary-action {
  width: 100%;
  min-height: 54px;
  border: 0;
  border-radius: 8px;
  padding: 14px 22px;
  background: var(--red);
  color: var(--white);
  font-weight: 700;
  cursor: pointer;
  transition:
    filter 150ms ease,
    transform 150ms ease;
}

.primary-action:hover {
  filter: brightness(0.92);
}

.primary-action:active {
  transform: translateY(1px);
}

.login-link {
  margin: 0;
  padding: 0 48px 38px;
  color: #666674;
  text-align: center;
}

.login-link a {
  color: var(--red);
  font-weight: 700;
}

@media (max-width: 700px) {
  .registration-hero {
    padding: 56px 18px 95px;
  }

  .registration-section {
    width: min(100% - 22px, 980px);
    margin-top: -48px;
  }

  .account-switch {
    grid-template-columns: 1fr;
  }

  .account-tab {
    min-height: 88px;
    justify-content: flex-start;
    padding: 18px 22px;
  }

  .account-tab + .account-tab {
    border-left: 0;
    border-top: 1px solid #e8e8ef;
  }

  .account-panel {
    padding: 32px 20px 28px;
  }

  .form-grid {
    grid-template-columns: 1fr;
    gap: 17px;
  }

  .form-group-full {
    grid-column: auto;
  }

  .login-link {
    padding: 0 20px 30px;
  }
}

/* =========================
   Inscription simple
   ========================= */
.simple-register-main,
.form-page-main {
  flex: 1;
  background: #f4f4f4;
}

.simple-register-hero {
  min-height: 470px;
  padding: 85px 24px;
  background: var(--hero);
  color: var(--white);
  text-align: center;
}

.simple-register-hero h1 {
  margin: 0 0 12px;
  font-size: clamp(2.6rem, 4vw, 4rem);
}

.simple-register-hero > p {
  margin: 0 0 38px;
  font-size: 1.05rem;
}

.choice-buttons {
  width: min(100%, 700px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}

.choice-button {
  min-height: 120px;
  border: 2px solid rgba(255, 255, 255, 0.75);
  border-radius: 10px;
  padding: 24px;
  background: var(--white);
  color: var(--hero);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transition:
    transform 150ms ease,
    box-shadow 150ms ease;
}

.choice-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 25px rgba(0, 0, 0, 0.18);
}

.choice-button strong {
  margin-bottom: 8px;
  font-size: 1.35rem;
}

.choice-button span {
  color: #666;
  font-size: 0.92rem;
}

.form-page-section {
  min-height: 560px;
  padding: 60px 20px;
  background: var(--hero);
}

.simple-form-card {
  width: min(100%, 620px);
  margin: 0 auto;
  border-radius: 10px;
  padding: 38px;
  background: var(--white);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16);
}

.simple-form-card h1 {
  margin: 0 0 10px;
  color: var(--hero);
  text-align: center;
}

.simple-form-card > p {
  margin: 0 0 28px;
  color: #666;
  text-align: center;
}

.simple-register-form {
  display: grid;
  gap: 17px;
}

.simple-register-form .form-group label {
  display: block;
  margin-bottom: 7px;
}

.simple-register-form .form-group input {
  width: 100%;
}

.back-choice {
  margin-top: 22px !important;
}

.back-choice a {
  color: var(--red);
  font-weight: 700;
}

@media (max-width: 650px) {
  .choice-buttons {
    grid-template-columns: 1fr;
  }

  .simple-register-hero {
    padding: 60px 18px;
  }

  .simple-form-card {
    padding: 28px 20px;
  }
}

/* =========================
   Page de connexion
   ========================= */
.login-main {
  flex: 1;
  background: #f4f4f4;
}

.login-section {
  min-height: 560px;
  padding: 70px 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--hero);
}

.login-card {
  width: min(100%, 500px);
  border-radius: 10px;
  padding: 40px;
  background: var(--white);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16);
}

.login-card h1 {
  margin: 0 0 10px;
  color: var(--hero);
  text-align: center;
  font-size: 2rem;
}

.login-card > p {
  margin: 0 0 30px;
  color: #666;
  text-align: center;
}

.login-form {
  display: grid;
  gap: 20px;
}

.login-form .form-group label {
  display: block;
  margin-bottom: 8px;
  color: #343442;
  font-weight: 700;
}

.login-form .form-group input {
  width: 100%;
  height: 50px;
  border: 1px solid #d6d6df;
  border-radius: 8px;
  padding: 0 15px;
  background: #fff;
  outline: none;
}

.login-form .form-group input:focus {
  border-color: var(--hero);
  box-shadow: 0 0 0 4px rgba(68, 68, 135, 0.12);
}

.login-options {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-size: 0.9rem;
}

.remember-row {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #5f5f6d;
}

.remember-row input {
  width: 17px;
  height: 17px;
  accent-color: var(--hero);
}

.forgot-link,
.register-link a {
  color: var(--red);
  font-weight: 700;
}

.register-link {
  margin: 24px 0 0 !important;
  text-align: center;
}

@media (max-width: 520px) {
  .login-section {
    padding: 45px 14px;
  }

  .login-card {
    padding: 30px 20px;
  }

  .login-options {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* =========================
   Mentions avant inscription
   ========================= */
.legal-notice {
  margin-top: 8px;
  border: 1px solid #d9d9e6;
  border-left: 5px solid var(--hero);
  border-radius: 8px;
  padding: 20px;
  background: #f7f7fb;
  color: #444452;
}

.legal-notice h2 {
  margin: 0 0 12px;
  color: var(--hero);
  font-size: 1.05rem;
}

.legal-notice p {
  margin: 0 0 12px;
  line-height: 1.6;
  font-size: 0.93rem;
}

.legal-notice p:last-child {
  margin-bottom: 0;
}

.legal-checkbox {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  margin: 4px 0 2px;
  color: #4f4f5d;
  font-size: 0.91rem;
  line-height: 1.55;
  cursor: pointer;
}

.legal-checkbox input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  flex: 0 0 auto;
  accent-color: var(--hero);
}

@media (max-width: 520px) {
  .legal-notice {
    padding: 17px;
  }
}

/* Géolocalisation et demandes */
.geo-search-form {
  flex-wrap: wrap;
  max-width: 1120px;
}
.geo-search-form .field {
  min-width: 210px;
}
.geo-search-form .radius-field {
  min-width: 120px;
  flex: 0 0 130px;
}
.geo-search-form select,
.simple-register-form select {
  width: 100%;
  min-height: 54px;
  border: 1px solid #ddd;
  border-radius: 7px;
  padding: 0 14px;
  background: #fff;
  font: inherit;
}
.geo-button,
.secondary-action {
  border: 0;
  border-radius: 7px;
  padding: 0 18px;
  min-height: 54px;
  background: #fff;
  color: #34347e;
  font-weight: 700;
  cursor: pointer;
}
.secondary-action {
  background: #4a4a91;
  color: #fff;
  width: 100%;
  margin: 4px 0;
}
.geo-status {
  display: block;
  flex-basis: 100%;
  color: #fff;
  margin-top: 7px;
}
.simple-form-card .geo-status {
  color: #555;
}
.wide-card {
  width: min(100%, 1000px);
}
.results-list {
  display: grid;
  gap: 18px;
  margin: 24px 0;
}
.pro-card {
  border: 1px solid #dedede;
  border-radius: 10px;
  padding: 20px;
  background: #fff;
}
.contact-locked {
  margin-top: 16px;
  padding: 15px;
  border-radius: 8px;
  background: #f3f4ff;
  border-left: 4px solid #4a4a91;
}
.contact-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.contact-actions a {
  display: inline-block;
  padding: 10px 14px;
  border-radius: 6px;
  text-decoration: none;
  font-weight: 700;
}
.login-link {
  background: #e60000;
  color: #fff;
}
.register-link-button {
  background: #4a4a91;
  color: #fff;
}
.request-form {
  border-top: 1px solid #ddd;
  margin-top: 28px;
  padding-top: 24px;
}
.request-form textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 7px;
  font: inherit;
}
.form-error {
  color: #b00000;
  font-weight: 700;
}
.success-message {
  padding: 15px;
  border-radius: 8px;
  background: #eaf8ee;
  border-left: 4px solid #238636;
}
.inline-action {
  display: inline-block;
  text-decoration: none;
  text-align: center;
}
.status-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.status-actions button {
  border: 0;
  border-radius: 6px;
  padding: 9px 12px;
  cursor: pointer;
  font-weight: 700;
}
@media (max-width: 800px) {
  .geo-search-form {
    display: grid !important;
  }
  .geo-search-form .field,
  .geo-search-form .radius-field {
    min-width: 0;
    flex: auto;
  }
  .geo-button {
    width: 100%;
  }
}

/* Formules professionnelles */
.pro-register-card {
  max-width: 1050px;
}
.pricing-fieldset {
  border: 0;
  padding: 0;
  margin: 12px 0 26px;
}
.pricing-fieldset legend {
  font-weight: 800;
  font-size: 1.15rem;
  margin-bottom: 14px;
}
.pricing-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.pricing-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 22px;
  border: 2px solid #e4e6ee;
  border-radius: 14px;
  background: #fff;
  cursor: pointer;
  transition: 0.2s;
}
.pricing-card:hover,
.pricing-card:has(input:checked) {
  border-color: #df0000;
  box-shadow: 0 10px 28px rgba(25, 29, 50, 0.1);
  transform: translateY(-2px);
}
.pricing-card input {
  position: absolute;
  right: 16px;
  top: 16px;
  width: 20px;
  height: 20px;
  accent-color: #df0000;
}
.pricing-title {
  font-size: 1.15rem;
  font-weight: 800;
  padding-right: 28px;
}
.pricing-card strong {
  font-size: 2rem;
  color: #df0000;
}
.pricing-card small {
  color: #6d7182;
}
.pricing-card ul {
  margin: 8px 0 0;
  padding-left: 20px;
  line-height: 1.55;
}
.pricing-featured {
  border-color: #3f438d;
}
.pricing-badge {
  position: absolute;
  top: -12px;
  left: 18px;
  background: #3f438d;
  color: #fff;
  border-radius: 20px;
  padding: 5px 10px;
  font-size: 0.72rem;
  font-weight: 800;
}
.places-left {
  margin-top: auto;
  padding: 10px;
  border-radius: 8px;
  background: #eaf8f1;
  color: #08704b;
  font-size: 0.85rem;
  font-weight: 700;
}
.places-left.is-full {
  background: #fff0f0;
  color: #a80000;
}
@media (max-width: 850px) {
  .pricing-grid {
    grid-template-columns: 1fr;
  }
}

/* Recherche intuitive des métiers */
.autocomplete-wrap {
  position: relative;
  width: 100%;
}
.autocomplete-list {
  position: absolute;
  z-index: 50;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  max-height: 260px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid #d6d6e5;
  border-radius: 10px;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.18);
}
.autocomplete-option {
  display: block;
  width: 100%;
  padding: 12px 14px;
  border: 0;
  border-bottom: 1px solid #eee;
  background: #fff;
  color: #222;
  text-align: left;
  cursor: pointer;
}
.autocomplete-option:last-child {
  border-bottom: 0;
}
.autocomplete-option:hover,
.autocomplete-option.active {
  background: #f0f1ff;
}

/* Tableau de bord professionnel */
.pro-account-body {
  background: #f3f4f8;
}
.pro-dashboard-shell {
  display: grid;
  grid-template-columns: 270px minmax(0, 1fr);
  min-height: calc(100vh - 150px);
  max-width: 1500px;
  margin: auto;
}
.pro-sidebar {
  background: #3f438d;
  color: #fff;
  padding: 34px 22px;
}
.pro-identity {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 0 10px 25px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.16);
}
.pro-identity strong {
  font-size: 1.2rem;
}
.pro-identity span {
  opacity: 0.8;
}
.pro-identity em {
  margin-top: 6px;
  font-style: normal;
  font-size: 0.8rem;
  background: rgba(255, 255, 255, 0.12);
  padding: 7px 9px;
  border-radius: 7px;
  width: max-content;
}
.pro-sidebar nav {
  display: grid;
  gap: 7px;
  margin-top: 24px;
}
.pro-sidebar nav a {
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: #fff;
  text-decoration: none;
  padding: 13px 14px;
  border-radius: 9px;
  font-weight: 700;
}
.pro-sidebar nav a:hover,
.pro-sidebar nav a.active {
  background: #303477;
}
.pro-sidebar nav b {
  display: grid;
  place-items: center;
  min-width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #e60000;
}
.pro-dashboard-content {
  padding: 38px;
  min-width: 0;
}
.dashboard-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 25px;
}
.dashboard-heading h1 {
  margin: 0 0 7px;
  color: #25294e;
}
.dashboard-heading p {
  margin: 0;
  color: #6f7385;
}
.account-status,
.request-state {
  padding: 8px 12px;
  border-radius: 999px;
  background: #e8f7ee;
  color: #087247;
  font-size: 0.82rem;
  font-weight: 800;
}
.pro-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}
.pro-stat-grid article,
.dashboard-panels article,
.dashboard-form,
.photo-upload-form,
.empty-dashboard,
.metier-list,
.add-metier-form {
  background: #fff;
  border: 1px solid #e5e6ee;
  border-radius: 14px;
  box-shadow: 0 8px 24px rgba(35, 38, 70, 0.06);
}
.pro-stat-grid article {
  padding: 23px;
}
.pro-stat-grid span {
  display: block;
  color: #717587;
  font-size: 0.9rem;
}
.pro-stat-grid strong {
  display: block;
  margin-top: 8px;
  font-size: 2rem;
  color: #25294e;
}
.dashboard-panels {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 20px;
  margin-top: 20px;
}
.dashboard-panels article {
  padding: 24px;
}
.dashboard-panels h2 {
  margin-top: 0;
}
.dashboard-request {
  display: flex;
  justify-content: space-between;
  gap: 15px;
  padding: 15px 0;
  border-top: 1px solid #eee;
  color: #25294e;
  text-decoration: none;
}
.dashboard-request span {
  color: #747889;
}
.dashboard-panels progress {
  width: 100%;
  margin: 12px 0;
}
.dashboard-panels small {
  display: block;
  color: #777;
}
.dashboard-alert {
  background: #fff;
  border: 1px solid #f0c9c9;
  border-radius: 10px;
  padding: 14px;
}
.request-card-top {
  display: flex;
  justify-content: space-between;
  gap: 15px;
}
.request-card-top h2 {
  margin-top: 0;
}
.state-nouvelle {
  background: #fff1d9;
  color: #9a5800;
}
.state-refusee {
  background: #f8e9e9;
  color: #9a2020;
}
.state-acceptee {
  background: #e5f7eb;
  color: #087247;
}
.dashboard-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  padding: 25px;
}
.dashboard-form label,
.add-metier-form label {
  display: grid;
  gap: 7px;
  font-weight: 700;
  color: #30334d;
}
.dashboard-form input,
.dashboard-form select,
.dashboard-form textarea,
.add-metier-form input {
  width: 100%;
  border: 1px solid #d6d8e2;
  border-radius: 8px;
  padding: 12px;
  font: inherit;
  box-sizing: border-box;
}
.full-field {
  grid-column: 1/-1;
}
.dashboard-form .primary-action {
  width: max-content;
}
.photo-upload-form {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding: 20px;
  margin-bottom: 22px;
}
.photo-upload-form .primary-action {
  width: auto;
}
.photo-upload-form small {
  flex-basis: 100%;
  color: #747889;
}
.pro-photo-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}
.pro-photo-grid figure {
  position: relative;
  margin: 0;
  aspect-ratio: 4/3;
  overflow: hidden;
  border-radius: 13px;
  background: #ddd;
}
.pro-photo-grid img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pro-photo-grid form {
  position: absolute;
  right: 10px;
  bottom: 10px;
}
.pro-photo-grid button,
.metier-list button {
  border: 0;
  border-radius: 7px;
  padding: 9px 12px;
  background: #fff;
  color: #b00000;
  font-weight: 700;
  cursor: pointer;
}
.metier-list {
  padding: 8px 22px;
}
.metier-list > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  padding: 15px 0;
  border-bottom: 1px solid #eee;
}
.metier-list > div:last-child {
  border-bottom: 0;
}
.metier-list span {
  background: #e9eaff;
  color: #3f438d;
  padding: 7px 10px;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 700;
}
.add-metier-form {
  display: flex;
  align-items: end;
  gap: 15px;
  padding: 22px;
  margin-top: 20px;
}
.add-metier-form label {
  flex: 1;
}
.add-metier-form .primary-action {
  width: auto;
}
.plan-limit-note {
  padding: 15px;
  background: #fff5db;
  border-radius: 9px;
}
.accept-button {
  background: #16794e !important;
  color: #fff;
}
.primary-action:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
@media (max-width: 1000px) {
  .pro-dashboard-shell {
    grid-template-columns: 1fr;
  }
  .pro-sidebar {
    padding: 20px;
  }
  .pro-sidebar nav {
    display: flex;
    overflow: auto;
  }
  .pro-sidebar nav a {
    white-space: nowrap;
  }
  .pro-stat-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .dashboard-panels {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 650px) {
  .pro-dashboard-content {
    padding: 24px 14px;
  }
  .pro-stat-grid {
    grid-template-columns: 1fr;
  }
  .dashboard-form {
    grid-template-columns: 1fr;
  }
  .full-field {
    grid-column: auto;
  }
  .pro-photo-grid {
    grid-template-columns: 1fr 1fr;
  }
  .dashboard-heading {
    display: block;
  }
  .account-status {
    display: inline-block;
    margin-top: 12px;
  }
  .add-metier-form {
    align-items: stretch;
    flex-direction: column;
  }
}

/* Correctif recherche par code postal */
.postal-search-form {
  grid-template-columns: minmax(240px, 1fr) minmax(200px, 0.7fr) minmax(
      170px,
      0.45fr
    );
  align-items: start;
}
.postal-search-form .postal-help {
  grid-column: 1/-1;
  text-align: center;
  max-width: none;
  margin-top: 4px;
}
.selectable-results {
  display: grid;
  gap: 14px;
  margin: 22px 0;
}
.selectable-pro-card {
  display: flex;
  gap: 14px;
  cursor: pointer;
  transition:
    transform 0.15s ease,
    box-shadow 0.15s ease,
    border-color 0.15s ease;
}
.selectable-pro-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}
.selectable-pro-card > input {
  width: 20px;
  height: 20px;
  margin-top: 5px;
  accent-color: var(--theme-primary, #df0000);
  flex: 0 0 auto;
}
.selectable-pro-card:has(input:checked) {
  border-color: var(--theme-primary, #df0000);
  box-shadow: 0 0 0 2px
    color-mix(in srgb, var(--theme-primary, #df0000) 18%, transparent);
}
.pro-choice-content {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}
.pro-choice-title {
  font-size: 1.35rem;
  color: #111827;
}
.pro-choice-content em {
  font-style: normal;
  font-weight: 700;
  color: var(--theme-primary, #df0000);
}
@media (max-width: 800px) {
  .postal-search-form {
    grid-template-columns: 1fr;
  }
  .postal-search-form .postal-help {
    grid-column: auto;
  }
}

.privacy-notice {
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px solid #d9dce8;
  border-radius: 10px;
  background: #f7f8fc;
  font-size: 0.95rem;
  line-height: 1.45;
}

/* Place de marché des demandes */
.marketplace-section,
.general-request-section {
  padding: 64px 24px;
  background: #f5f6fa;
}
.marketplace-inner,
.general-request-card {
  width: min(1180px, 100%);
  margin: auto;
}
.section-heading {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 30px;
  margin-bottom: 25px;
}
.section-heading h2,
.general-request-card h2 {
  font-size: clamp(1.8rem, 4vw, 2.7rem);
  margin: 5px 0 10px;
  color: #25294e;
}
.section-heading p,
.general-request-card > div > p {
  max-width: 760px;
  color: #666b7d;
  line-height: 1.6;
}
.eyebrow {
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.78rem;
  font-weight: 900;
  color: var(--red);
}
.request-ticker {
  overflow: hidden;
  padding: 8px 0;
}
.request-ticker-track {
  display: flex;
  gap: 16px;
  width: max-content;
  animation: dtsTicker 38s linear infinite;
}
.request-ticker:hover .request-ticker-track {
  animation-play-state: paused;
}
.public-request-card {
  width: 260px;
  min-height: 145px;
  padding: 20px;
  background: #fff;
  border: 1px solid #e1e3eb;
  border-radius: 14px;
  box-shadow: 0 8px 24px rgba(35, 38, 70, 0.06);
}
.public-request-card > span {
  font-size: 0.8rem;
  color: #747889;
}
.public-request-card h3 {
  margin: 10px 0 8px;
  color: #25294e;
}
.public-request-card p {
  margin: 0 0 10px;
}
.public-request-card small {
  color: #087247;
  font-weight: 700;
}
.empty-marketplace {
  padding: 25px;
  background: #fff;
  border-radius: 14px;
}
.general-request-section {
  background: #fff;
}
.general-request-card {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: 45px;
  align-items: start;
}
.general-request-form,
.market-filter-form {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 15px;
  padding: 24px;
  background: #f7f8fc;
  border: 1px solid #e1e3eb;
  border-radius: 16px;
}
.general-request-form label,
.market-filter-form label {
  display: grid;
  gap: 7px;
  font-weight: 700;
  color: #30334d;
}
.general-request-form input,
.general-request-form select,
.general-request-form textarea,
.market-filter-form input,
.market-filter-form select {
  width: 100%;
  box-sizing: border-box;
  padding: 12px;
  border: 1px solid #d2d5df;
  border-radius: 8px;
  font: inherit;
}
.general-request-form .full-field {
  grid-column: 1/-1;
}
.general-request-form button {
  grid-column: 1/-1;
  width: max-content;
}
.market-filter-form {
  grid-template-columns: 1fr 200px 170px auto;
  margin-bottom: 24px;
  align-items: end;
}
.market-filter-form button {
  width: auto;
}
.opportunity-card .primary-action {
  width: auto;
}
.maintenance-banner {
  background: #fff3cd;
  color: #765500;
  padding: 10px;
  border-radius: 8px;
  font-weight: 700;
}
@keyframes dtsTicker {
  to {
    transform: translateX(calc(-50% - 8px));
  }
}
@media (max-width: 850px) {
  .section-heading,
  .general-request-card {
    display: block;
  }
  .section-heading .primary-action {
    margin-top: 15px;
  }
  .general-request-form {
    grid-template-columns: 1fr;
    margin-top: 25px;
  }
  .general-request-form .full-field,
  .general-request-form button {
    grid-column: auto;
  }
  .market-filter-form {
    grid-template-columns: 1fr;
  }
  .request-ticker-track {
    animation-duration: 55s;
  }
}

/* Accueil : professionnels mis en avant et nouveaux inscrits */
.featured-pros-section,
.newcomers-section {
  padding: 64px 20px;
  background: #fff;
}
.featured-pro-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 20px;
}
.featured-pro-card {
  position: relative;
  padding: 24px;
  border: 1px solid #e1e3ec;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(20, 25, 55, 0.08);
}
.featured-pro-card h3 {
  margin: 12px 0 6px;
}
.featured-pro-card a {
  display: inline-block;
  margin-top: 14px;
  font-weight: 700;
}
.plan-chip,
.photo-status {
  display: inline-block;
  padding: 5px 10px;
  border-radius: 99px;
  background: var(--site-primary, #df0000);
  color: #fff;
  font-size: 12px;
}
.newcomers-section {
  background: #f5f6fb;
}
.newcomer-ticker {
  overflow: hidden;
  margin-top: 22px;
}
.newcomer-track {
  display: flex;
  width: max-content;
  gap: 18px;
  animation: newcomers 35s linear infinite;
}
.newcomer-track span {
  white-space: nowrap;
  background: #fff;
  border-radius: 99px;
  padding: 14px 20px;
  box-shadow: 0 5px 18px rgba(20, 25, 55, 0.08);
}
@keyframes newcomers {
  to {
    transform: translateX(-50%);
  }
}
.photo-status {
  position: absolute;
  z-index: 2;
  margin: 8px;
  background: #20233a;
}
.pro-photo-grid figure {
  position: relative;
}

/* Espace client : actions après acceptation d'une demande */
.client-request-card {
  overflow: hidden;
}
.accepted-professionals {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid #e2e2e2;
}
.accepted-professionals h4 {
  margin: 0 0 0.8rem;
}
.accepted-professional-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem;
  border-radius: 10px;
  background: #f7f8fb;
}
.accepted-professional-row span {
  display: block;
  margin-top: 0.2rem;
  color: #555;
}
.client-request-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
}
.small-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0.65rem 1rem;
  border-radius: 8px;
  text-decoration: none;
  font-weight: 700;
}
.secondary-action {
  color: var(--hero);
  border: 2px solid var(--hero);
  background: #fff;
}
.request-waiting-note {
  margin-top: 1rem;
  color: #666;
  font-style: italic;
}

/* Carte publique limitée du professionnel */
.professional-public-card {
  max-width: 1050px;
}
.professional-card-header {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  padding: 1.4rem;
  border-radius: 14px;
  background: #f7f8fb;
}
.professional-card-label {
  color: var(--hero);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.professional-card-header h1 {
  margin: 0.35rem 0;
}
.professional-card-trade {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 700;
}
.professional-rating-summary {
  min-width: 130px;
  text-align: center;
}
.professional-rating-summary strong {
  display: block;
  font-size: 1.7rem;
  color: var(--hero);
}
.professional-rating-summary span {
  display: block;
  color: #555;
}
.professional-card-section {
  margin-top: 2rem;
}
.professional-photo-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}
.professional-photo-grid figure {
  margin: 0;
  overflow: hidden;
  border-radius: 10px;
  background: #eee;
  aspect-ratio: 4 / 3;
}
.professional-photo-grid img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.professional-reviews-list {
  display: grid;
  gap: 1rem;
}
.professional-review {
  padding: 1rem;
  border: 1px solid #ddd;
  border-radius: 10px;
}
.professional-review p {
  margin-top: 0;
}
.professional-review-stars {
  color: #b36b00;
  font-size: 1.2rem;
  letter-spacing: 0.08em;
}
.professional-review small {
  color: #666;
}

@media (max-width: 760px) {
  .accepted-professional-row,
  .professional-card-header {
    align-items: stretch;
    flex-direction: column;
  }
  .client-request-actions {
    flex-direction: column;
  }
  .small-action {
    width: 100%;
  }
  .professional-rating-summary {
    text-align: left;
  }
  .professional-photo-grid {
    grid-template-columns: 1fr;
  }
}

/* Détail des compétences dans les résultats de recherche */
.pro-search-card h2 {
  margin: 0 0 10px;
}
.pro-main-trade {
  margin: 0;
  color: #202234;
}
.pro-skills-label {
  display: block;
  margin: 10px 0 7px;
  color: #6b6f82;
  font-size: 0.82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.pro-skills {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 10px;
}
.pro-skills > span {
  display: inline-flex;
  align-items: center;
  min-height: 29px;
  padding: 5px 10px;
  border-radius: 999px;
  background: #f0f1fb;
  border: 1px solid #dfe1f2;
  color: #343873;
  font-size: 0.82rem;
  font-weight: 700;
}
.pro-description {
  padding-top: 10px;
  border-top: 1px solid #ececf2;
  color: #555;
  line-height: 1.55;
}

/* Résultats professionnels enrichis */
.pro-card-thumbnails {
  display: flex;
  gap: 10px;
  margin-bottom: 14px;
  overflow: hidden;
}
.pro-card-thumbnails img {
  width: 112px;
  height: 82px;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid #e2e3eb;
  background: #f3f3f6;
}
.pro-rating {
  display: block;
  margin: 8px 0;
  font-weight: 800;
  color: #9b6500;
}
.pro-rating small {
  font-weight: 600;
  color: #626579;
}
.pro-certifications {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 7px 0 13px;
}
.pro-certifications span {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: #e8f7ef;
  color: #08704b;
  border: 1px solid #c7ead8;
  font-size: 0.82rem;
  font-weight: 800;
}
@media (max-width: 600px) {
  .pro-card-thumbnails img {
    width: 88px;
    height: 68px;
  }
  .pro-card-thumbnails img:nth-child(n + 3) {
    display: none;
  }
}

/* Cartes professionnelles animées sur la page d'accueil */
.featured-pro-ticker {
  overflow: hidden;
  padding: 8px 0 18px;
}
.featured-pro-track {
  display: flex;
  gap: 20px;
  width: max-content;
  animation: featuredProsTicker 42s linear infinite;
}
.featured-pro-ticker:hover .featured-pro-track {
  animation-play-state: paused;
}
.featured-pro-track .featured-pro-card {
  width: 330px;
  min-height: 205px;
  flex: 0 0 330px;
}
.featured-pro-card > p:last-child {
  margin-bottom: 0;
}
@keyframes featuredProsTicker {
  to {
    transform: translateX(calc(-50% - 10px));
  }
}
@media (max-width: 850px) {
  .featured-pro-track {
    animation-duration: 58s;
  }
  .featured-pro-track .featured-pro-card {
    width: 280px;
    flex-basis: 280px;
  }
}

/* Accueil compact : demandes, professionnels et nouveaux inscrits */
.home-discovery-section {
  padding: 3rem 1.5rem;
  background: #f5f6fb;
}
.home-discovery-inner {
  width: min(1180px, 100%);
  margin: 0 auto;
}
.home-discovery-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(300px, 0.75fr);
  gap: 1.5rem;
  align-items: stretch;
}
.home-panel {
  background: #fff;
  border: 1px solid #e0e3ef;
  border-radius: 16px;
  padding: 1.5rem;
  box-shadow: 0 10px 30px rgba(30, 39, 90, 0.06);
  min-width: 0;
}
.home-panel .eyebrow {
  display: block;
  margin-bottom: 0.35rem;
}
.home-panel h2 {
  margin: 0 0 1.1rem;
  font-size: clamp(1.35rem, 2.2vw, 2rem);
}
.home-side-stack {
  display: grid;
  gap: 1.5rem;
}
.compact-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}
.compact-request-card,
.compact-pro-card {
  display: block;
  padding: 1rem;
  border: 1px solid #e1e4ef;
  border-radius: 12px;
  background: #fff;
  color: inherit;
  text-decoration: none;
  min-height: 116px;
}
.compact-request-card:hover,
.compact-pro-card:hover {
  border-color: var(--hero);
  transform: translateY(-2px);
}
.compact-request-card span {
  font-size: 0.78rem;
  color: #6a7087;
}
.compact-request-card h3,
.compact-pro-card h3 {
  margin: 0.35rem 0;
  font-size: 1rem;
}
.compact-request-card p,
.compact-pro-card p {
  margin: 0.25rem 0 0;
  font-size: 0.9rem;
  color: #555d75;
}
.compact-pro-card strong {
  display: block;
  font-size: 0.88rem;
}
.newcomer-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
}
.newcomer-chip {
  padding: 0.55rem 0.75rem;
  border-radius: 999px;
  background: #f1f2f8;
  border: 1px solid #e0e3ef;
  font-size: 0.84rem;
}
.home-panel-link {
  display: inline-flex;
  margin-top: 1rem;
  font-weight: 700;
  color: var(--hero);
  text-decoration: none;
}
.home-ad-slot {
  margin-top: 1.5rem;
  min-height: 110px;
  border: 2px dashed #cfd3e2;
  border-radius: 14px;
  display: grid;
  place-items: center;
  padding: 1rem;
  text-align: center;
  color: #747b91;
  background: #fff;
}
.home-ad-slot strong {
  display: block;
  color: #4f566d;
  margin-bottom: 0.25rem;
}
@media (max-width: 850px) {
  .home-discovery-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .home-discovery-section {
    padding: 2rem 1rem;
  }
  .compact-card-grid {
    grid-template-columns: 1fr;
  }
  .home-panel {
    padding: 1.1rem;
  }
}

/* Accueil v2 : contenu conservé sur une seule rangée desktop */
.home-discovery-section {
  padding: 2rem 1.5rem 2.25rem;
}
.home-discovery-grid {
  grid-template-columns: minmax(0, 1.45fr) minmax(250px, 0.78fr) minmax(
      250px,
      0.78fr
    );
  gap: 1rem;
  align-items: stretch;
}
.home-panel {
  padding: 1.25rem;
  border-radius: 14px;
}
.home-panel h2 {
  font-size: clamp(1.2rem, 1.7vw, 1.65rem);
  margin-bottom: 0.9rem;
}
.home-panel .eyebrow {
  font-size: 0.72rem;
  letter-spacing: 0.12em;
}
.request-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem;
}
.compact-request-card {
  min-height: 96px;
  padding: 0.8rem;
}
.compact-request-card h3,
.compact-pro-card h3 {
  margin: 0.25rem 0;
  font-size: 0.96rem;
}
.compact-request-card p,
.compact-pro-card p {
  font-size: 0.82rem;
}
.featured-home-list {
  display: grid;
  gap: 0.7rem;
}
.compact-pro-card {
  min-height: 0;
  padding: 0.85rem;
}
.newcomer-list-vertical {
  display: grid;
  gap: 0.55rem;
  align-content: start;
}
.newcomer-list-vertical .newcomer-chip {
  display: grid;
  gap: 0.15rem;
  border-radius: 10px;
  padding: 0.68rem 0.75rem;
  background: #f7f7fb;
}
.newcomer-list-vertical .newcomer-chip small {
  font-size: 0.76rem;
  color: #646b80;
  font-weight: 500;
}
.home-ad-slot {
  margin-top: 1rem;
  min-height: 94px;
  border-radius: 12px;
  background: linear-gradient(135deg, #fff, #f7f7fc);
}
@media (max-width: 980px) {
  .home-discovery-grid {
    grid-template-columns: 1fr 1fr;
  }
  .home-panel-requests {
    grid-column: 1/-1;
  }
}
@media (max-width: 650px) {
  .home-discovery-grid {
    grid-template-columns: 1fr;
  }
  .home-panel-requests {
    grid-column: auto;
  }
  .request-grid {
    grid-template-columns: 1fr;
  }
  .home-discovery-section {
    padding: 1.5rem 1rem;
  }
  .home-ad-slot {
    min-height: 110px;
  }
}

/* Accueil v3 : bandeau plus compact, rayon plus visible et cartes agrandies */
.hero {
  min-height: 340px;
  padding: 42px 28px 54px;
}
.hero h1 {
  margin-bottom: 24px;
  font-size: clamp(2.45rem, 3.7vw, 3.75rem);
}
.postal-search-form {
  width: min(100%, 980px);
  grid-template-columns: minmax(260px, 1fr) minmax(210px, 0.72fr) minmax(
      210px,
      0.58fr
    );
}
.postal-search-form select {
  width: 100%;
  min-height: 58px;
  border: 1px solid #d9d9d9;
  border-radius: 8px;
  padding: 0 18px;
  background: #fff;
  color: #202020;
  font: 700 1.05rem/1 inherit;
  cursor: pointer;
}
.postal-search-form input,
.postal-search-form button {
  height: 58px;
}
.home-discovery-section {
  padding: 2.15rem 1.5rem 2.5rem;
}
.home-discovery-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.25rem;
}
.home-panel {
  min-height: 285px;
  padding: 1.6rem;
}
.home-panel-title {
  display: block;
  margin: 0 0 1.25rem !important;
  font-size: 1.12rem !important;
  line-height: 1.3;
  letter-spacing: 0.07em !important;
}
.request-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}
.compact-request-card {
  min-height: 118px;
  padding: 1rem;
}
.featured-home-list {
  gap: 0.9rem;
}
.compact-pro-card {
  min-height: 104px;
  padding: 1.05rem;
}
.newcomer-list-vertical {
  gap: 0.75rem;
}
.newcomer-list-vertical .newcomer-chip {
  min-height: 56px;
  padding: 0.85rem 0.95rem;
}
@media (max-width: 980px) {
  .hero {
    min-height: 330px;
    padding: 38px 24px 48px;
  }
  .home-discovery-grid {
    grid-template-columns: 1fr 1fr;
  }
  .home-panel-requests {
    grid-column: 1/-1;
  }
}
@media (max-width: 800px) {
  .postal-search-form {
    grid-template-columns: 1fr;
  }
  .postal-search-form select {
    min-height: 56px;
  }
}
@media (max-width: 650px) {
  .hero {
    min-height: auto;
    padding: 34px 18px 42px;
  }
  .hero h1 {
    font-size: clamp(2rem, 10vw, 2.75rem);
    margin-bottom: 20px;
  }
  .home-discovery-grid {
    grid-template-columns: 1fr;
  }
  .home-panel-requests {
    grid-column: auto;
  }
  .home-panel {
    min-height: 0;
  }
}

/* Accueil v4 : trois panneaux identiques avec miniatures dynamiques */
.home-discovery-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.home-panel {
  display: flex;
  flex-direction: column;
  min-height: 410px;
}
.home-panel .compact-card-grid,
.home-panel .featured-home-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  flex: 1;
}
.home-visual-card {
  display: grid;
  grid-template-columns: 132px minmax(0, 1fr);
  min-height: 142px;
  overflow: hidden;
  border: 1px solid #e1e4ef;
  border-radius: 14px;
  background: #fff;
  color: inherit;
  text-decoration: none;
  transition:
    transform 0.18s ease,
    border-color 0.18s ease,
    box-shadow 0.18s ease;
}
.home-visual-card:hover {
  transform: translateY(-2px);
  border-color: var(--hero);
  box-shadow: 0 10px 24px rgba(30, 39, 90, 0.09);
}
.home-card-media {
  min-height: 142px;
  background: #eceef6;
  overflow: hidden;
}
.home-card-media img {
  width: 100%;
  height: 100%;
  min-height: 142px;
  display: block;
  object-fit: cover;
}
.home-card-placeholder {
  width: 100%;
  height: 100%;
  min-height: 142px;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--hero), #6367a8);
  color: #fff;
  font-size: 1.25rem;
  font-weight: 900;
  letter-spacing: 0.08em;
}
.home-card-body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1rem;
  min-width: 0;
}
.home-card-body h3 {
  margin: 0.18rem 0 0.35rem;
  font-size: 1.05rem;
  line-height: 1.25;
}
.home-card-body strong {
  font-size: 0.9rem;
}
.home-card-body p {
  margin: 0.35rem 0 0;
  color: #596078;
  font-size: 0.86rem;
  line-height: 1.4;
}
.home-card-date {
  color: #6a7087;
  font-size: 0.76rem;
}
@media (max-width: 1100px) {
  .home-visual-card {
    grid-template-columns: 108px minmax(0, 1fr);
  }
}
@media (max-width: 980px) {
  .home-discovery-grid {
    grid-template-columns: 1fr 1fr;
  }
  .home-panel-requests {
    grid-column: 1/-1;
  }
  .home-panel {
    min-height: 0;
  }
}
@media (max-width: 650px) {
  .home-discovery-grid {
    grid-template-columns: 1fr;
  }
  .home-panel-requests {
    grid-column: auto;
  }
  .home-visual-card {
    grid-template-columns: 112px minmax(0, 1fr);
  }
}

/* Accueil v5 : cartes plus compactes, équilibrées et proches du carré */
.home-discovery-section {
  padding: 1.75rem 1.5rem 2.15rem;
}
.home-discovery-grid {
  gap: 1.15rem;
}
.home-panel {
  min-height: 0;
  padding: 1.25rem;
  border-radius: 16px;
}
.home-panel-title {
  margin-bottom: 0.9rem !important;
  font-size: 1rem !important;
  line-height: 1.2;
}
.home-panel .compact-card-grid,
.home-panel .featured-home-list {
  display: block;
}
.home-visual-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 0;
  aspect-ratio: 1.12 / 1;
  border-radius: 14px;
}
.home-card-media {
  flex: 0 0 62%;
  min-height: 0;
  aspect-ratio: auto;
}
.home-card-media img,
.home-card-placeholder {
  width: 100%;
  height: 100%;
  min-height: 0;
}
.home-card-body {
  flex: 1;
  justify-content: center;
  padding: 0.85rem 1rem;
}
.home-card-body h3 {
  margin: 0.12rem 0 0.22rem;
  font-size: 1rem;
}
.home-card-body strong {
  font-size: 0.86rem;
}
.home-card-body p {
  margin: 0.25rem 0 0;
  font-size: 0.82rem;
}
.home-card-date {
  font-size: 0.72rem;
}
.home-ad-slot {
  margin-top: 1rem;
  min-height: 88px;
}
@media (max-width: 980px) {
  .home-discovery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .home-panel-requests {
    grid-column: auto;
  }
  .home-panel-newcomers {
    grid-column: 1/-1;
    max-width: calc(50% - 0.575rem);
    width: 100%;
    justify-self: center;
  }
}
@media (max-width: 650px) {
  .home-discovery-section {
    padding: 1.35rem 1rem 1.75rem;
  }
  .home-discovery-grid {
    grid-template-columns: 1fr;
  }
  .home-panel-newcomers {
    grid-column: auto;
    max-width: none;
  }
  .home-visual-card {
    aspect-ratio: 1.2 / 1;
  }
}

/* V6 : note moyenne et nombre d'avis dans les cartes d'accueil */
.home-card-rating {
  margin: 0.3rem 0 0;
  color: #9a6700;
  font-weight: 700;
  line-height: 1.25;
}
.home-card-rating small {
  color: #5f6475;
  font-size: 0.78rem;
  font-weight: 600;
}

/* V8 — résultats de recherche plus clairs et bas de page allégé */
.pro-card-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 16px;
}
.pro-card-actions em,
.pro-card-actions small {
  color: #686c7d;
  font-style: normal;
  font-size: 0.88rem;
}
.view-pro-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 18px;
  border-radius: 7px;
  background: var(--theme-primary, #df0000);
  color: #fff;
  text-decoration: none;
  font-weight: 800;
}
.view-pro-button:hover {
  filter: brightness(0.94);
}
.selectable-pro-card .pro-card-actions {
  width: 100%;
}
.compact-login-notice {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 13px 16px;
}
.compact-login-notice .contact-actions {
  margin-top: 0;
}
.search-bottom-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  margin-top: 30px;
  padding: 22px 24px;
  border: 1px solid #e1e3eb;
  border-radius: 14px;
  background: #f7f8fc;
}
.search-bottom-actions h2 {
  margin: 4px 0 6px;
  font-size: 1.45rem;
  color: #25294e;
}
.search-bottom-actions p {
  margin: 0;
  color: #666b7d;
}
.bottom-login-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  flex: 0 0 auto;
}
.bottom-login-actions a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 15px;
  border-radius: 7px;
  text-decoration: none;
  font-weight: 800;
}
.general-request-details {
  min-width: 210px;
}
.general-request-details summary {
  cursor: pointer;
  list-style: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 0 18px;
  border-radius: 7px;
  background: #4a4a91;
  color: #fff;
  font-weight: 800;
}
.general-request-details summary::-webkit-details-marker {
  display: none;
}
.general-request-details[open] {
  width: 100%;
  margin-top: 14px;
}
.search-bottom-actions:has(.general-request-details[open]) {
  align-items: flex-start;
  flex-wrap: wrap;
}
.compact-general-request-form {
  margin-top: 16px;
  grid-template-columns: 1fr;
  background: #fff;
  padding: 18px;
}
.compact-general-request-form .full-field,
.compact-general-request-form button {
  grid-column: auto;
}
@media (max-width: 760px) {
  .compact-login-notice,
  .search-bottom-actions {
    align-items: flex-start;
    flex-direction: column;
  }
  .public-results-list .pro-card-thumbnails {
    flex-wrap: wrap;
  }
  .bottom-login-actions {
    width: 100%;
  }
  .bottom-login-actions a {
    flex: 1;
    justify-content: center;
  }
}

/* Inscription professionnelle compacte V9 */
.form-page-section {
  padding: 34px 20px 42px;
  min-height: auto;
}
.pro-register-card {
  max-width: 1180px;
  padding: 30px 34px;
}
.pro-register-card h1 {
  font-size: 2rem;
  margin-bottom: 6px;
}
.pro-register-card > p {
  margin-bottom: 22px;
  line-height: 1.35;
}
.pro-register-form {
  gap: 16px;
}
.pro-register-form .pricing-fieldset {
  margin: 4px 0 8px;
}
.pro-register-form .pricing-fieldset legend {
  margin-bottom: 10px;
}
.pro-register-form .pricing-grid {
  gap: 12px;
}
.pro-register-form .pricing-card {
  min-height: 210px;
  padding: 16px 18px;
  gap: 5px;
}
.pro-register-form .pricing-card input {
  right: 14px;
  top: 14px;
}
.pro-register-form .pricing-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding-right: 28px;
}
.pro-register-form .pricing-title {
  font-size: 1.08rem;
  padding: 0;
}
.pro-register-form .pricing-card strong {
  font-size: 1.65rem;
  white-space: nowrap;
}
.pro-register-form .pricing-card ul {
  margin: 4px 0 0;
  padding-left: 18px;
  line-height: 1.35;
  font-size: 0.9rem;
}
.pro-register-form .places-left {
  padding: 7px 9px;
  font-size: 0.76rem;
  line-height: 1.2;
}
.pro-form-section {
  border-top: 1px solid #e7e8ef;
  padding-top: 14px;
}
.pro-form-section h2 {
  margin: 0 0 12px;
  color: var(--hero);
  font-size: 1.08rem;
}
.pro-form-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px 14px;
}
.pro-access-grid {
  grid-template-columns: 1.3fr 1fr 1fr;
}
.pro-register-form .form-group {
  margin: 0;
}
.pro-register-form .form-group label {
  margin-bottom: 5px;
  font-size: 0.88rem;
  font-weight: 700;
}
.pro-register-form .form-group input,
.pro-register-form .form-group select {
  min-height: 44px;
  height: 44px;
  padding: 0 12px;
  border-radius: 7px;
}
.geo-compact-row {
  display: grid;
  grid-template-columns: minmax(260px, 360px) 1fr;
  align-items: center;
  gap: 14px;
  margin-top: 12px;
}
.geo-compact-row .secondary-action {
  min-height: 44px;
  margin: 0;
}
.geo-compact-row .geo-status {
  margin: 0;
  font-size: 0.84rem;
  line-height: 1.35;
}
.pro-register-form .legal-checkbox {
  margin: 0;
  font-size: 0.88rem;
}
.pro-register-form .primary-action {
  min-height: 48px;
  padding: 11px 20px;
}
@media (max-width: 980px) {
  .pro-form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pro-access-grid {
    grid-template-columns: 1fr 1fr;
  }
  .pro-access-grid .form-group:first-child {
    grid-column: 1/-1;
  }
}
@media (max-width: 850px) {
  .pro-register-form .pricing-card {
    min-height: auto;
  }
  .pricing-grid {
    grid-template-columns: 1fr;
  }
  .geo-compact-row {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 600px) {
  .form-page-section {
    padding: 20px 10px 30px;
  }
  .pro-register-card {
    padding: 24px 16px;
  }
  .pro-form-grid,
  .pro-access-grid {
    grid-template-columns: 1fr;
  }
  .pro-access-grid .form-group:first-child {
    grid-column: auto;
  }
  .pro-register-card h1 {
    font-size: 1.65rem;
  }
}

/* Cartes de demandes cliquables et détail public */
.home-request-link {
  position: relative;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}
.home-request-link:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 28px rgba(28, 38, 85, 0.14);
}
.home-request-link:focus-visible {
  outline: 3px solid var(--red);
  outline-offset: 3px;
}
.home-card-open {
  position: absolute;
  right: 16px;
  bottom: 14px;
  font-size: 0.78rem;
  font-weight: 800;
  color: var(--red);
}
.public-request-page {
  background: #f4f5fb;
  min-height: calc(100vh - 170px);
  padding: 48px 20px;
}
.public-request-shell {
  max-width: 1180px;
  margin: 0 auto;
}
.public-request-back {
  display: inline-block;
  margin-bottom: 20px;
  color: #4b4b91;
  text-decoration: none;
  font-weight: 700;
}
.public-request-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 26px;
  align-items: start;
}
.public-request-main,
.public-request-cta {
  background: #fff;
  border: 1px solid #dfe2ee;
  border-radius: 18px;
  box-shadow: 0 10px 28px rgba(32, 39, 88, 0.08);
}
.public-request-main {
  padding: 30px;
}
.public-request-main h1 {
  margin: 6px 0 14px;
  color: #242956;
  font-size: clamp(2rem, 4vw, 3.2rem);
}
.public-request-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 24px;
}
.public-request-meta span {
  background: #f0f1f9;
  border-radius: 999px;
  padding: 8px 12px;
  color: #515878;
  font-size: 0.9rem;
}
.public-request-gallery {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 0 0 26px;
}
.public-request-gallery img {
  width: 100%;
  aspect-ratio: 4/3;
  object-fit: cover;
  border-radius: 12px;
  background: #eef0f7;
}
.public-request-description {
  border-top: 1px solid #e4e6ef;
  padding-top: 22px;
}
.public-request-description h2 {
  margin: 0 0 10px;
  color: #242956;
}
.public-request-description p {
  margin: 0;
  line-height: 1.7;
  color: #4e5572;
}
.public-request-cta {
  padding: 25px;
  position: sticky;
  top: 24px;
}
.public-request-cta h2 {
  margin: 0 0 12px;
  color: #242956;
}
.public-request-cta p {
  line-height: 1.55;
  color: #555c78;
}
.public-request-cta .primary-action,
.public-request-cta .secondary-action {
  display: block;
  text-align: center;
  text-decoration: none;
  margin-top: 12px;
}
.public-request-cta .secondary-action {
  padding: 12px 16px;
  border: 1px solid #4b4b91;
  border-radius: 8px;
  color: #4b4b91;
  font-weight: 800;
}
.public-request-note {
  background: #f3f3fb;
  border-left: 4px solid #4b4b91;
  padding: 12px;
}
@media (max-width: 820px) {
  .public-request-layout {
    grid-template-columns: 1fr;
  }
  .public-request-cta {
    position: static;
  }
  .public-request-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 520px) {
  .public-request-page {
    padding: 28px 12px;
  }
  .public-request-main,
  .public-request-cta {
    padding: 20px;
  }
  .public-request-gallery {
    grid-template-columns: 1fr;
  }
  .home-card-open {
    position: static;
    display: block;
    padding: 0 16px 14px;
  }
}

/* ===== Accueil DTS V12 : identité et mise en page compacte ===== */
.site-header {
  position: relative;
  z-index: 20;
  box-shadow: 0 2px 14px rgba(21, 24, 61, 0.14);
}
.header-inner {
  min-height: 112px;
  max-width: 1460px;
  padding: 12px 42px;
  gap: 28px;
}
.brand-dts {
  display: flex;
  align-items: center;
  width: min(380px, 34vw);
  min-width: 270px;
  height: auto;
  padding: 0;
  text-decoration: none;
}
.brand-dts img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 82px;
  object-fit: contain;
  object-position: left center;
}
.main-navigation {
  gap: 8px;
}
.main-navigation a {
  padding: 12px 15px;
  border-radius: 9px;
  transition:
    background 0.2s ease,
    transform 0.2s ease;
}
.main-navigation a:hover {
  background: rgba(255, 255, 255, 0.13);
  transform: translateY(-1px);
}

.hero {
  min-height: 0;
  padding: 46px 24px 52px;
  background: linear-gradient(135deg, #414180 0%, #4b4b92 58%, #3d3d79 100%);
}
.hero-content {
  max-width: 1240px;
}
.hero h1 {
  font-size: clamp(2.35rem, 4vw, 4.15rem);
  line-height: 1.04;
  max-width: 1120px;
  margin: 0 auto 12px;
  letter-spacing: -0.035em;
}
.hero-content > p {
  margin: 0 auto 25px;
  font-size: 1.05rem;
  opacity: 0.92;
}
.postal-search-form {
  max-width: 1120px;
  margin: 0 auto;
  grid-template-columns: minmax(250px, 1.25fr) minmax(210px, 0.8fr) minmax(
      150px,
      0.42fr
    ) minmax(210px, 0.68fr);
  gap: 12px;
  align-items: stretch;
}
.postal-search-form .field {
  min-width: 0;
}
.postal-search-form input,
.postal-search-form select,
.postal-search-form button {
  height: 58px;
  min-height: 58px;
  border-radius: 10px;
}
.postal-search-form button {
  grid-column: auto;
  margin: 0;
  box-shadow: 0 8px 20px rgba(189, 0, 0, 0.24);
}
.postal-search-form .postal-help {
  grid-column: 1/-1;
  margin-top: 6px;
  font-size: 0.82rem;
  opacity: 0.93;
}

.home-discovery-section {
  padding: 26px 24px 30px;
  background: #f3f5fb;
}
.home-discovery-inner {
  max-width: 1360px;
  margin: 0 auto;
}
.home-discovery-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}
.home-panel {
  min-height: 0;
  padding: 18px;
  border: 1px solid #e0e4ef;
  border-radius: 18px;
  box-shadow: 0 12px 30px rgba(35, 43, 82, 0.07);
  background: #fff;
}
.home-panel-title {
  display: block;
  min-height: 46px;
  margin: 0;
  font-size: clamp(0.91rem, 1.15vw, 1.08rem) !important;
  letter-spacing: 0.055em !important;
  line-height: 1.25;
  color: #d90000;
}
.home-panel .compact-card-grid,
.home-panel .featured-home-list {
  height: auto;
  min-height: 0;
}
.home-visual-card {
  display: grid;
  grid-template-rows: 190px auto;
  aspect-ratio: auto;
  min-height: 320px;
  height: 100%;
  overflow: hidden;
  border: 1px solid #e0e4ef;
  border-radius: 14px;
  background: #fff;
  color: inherit;
  text-decoration: none;
  position: relative;
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease,
    border-color 0.2s ease;
}
.home-visual-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 26px rgba(41, 48, 91, 0.14);
}
.home-card-media {
  height: 190px;
  min-height: 190px;
  background: #eef0f7;
  overflow: hidden;
}
.home-card-media img,
.home-card-placeholder {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: flex;
  align-items: center;
  justify-content: center;
}
.home-card-placeholder {
  font-size: 2rem;
  font-weight: 850;
  letter-spacing: 0.13em;
  color: #fff;
}
.home-card-body {
  padding: 15px 16px 18px;
  align-self: start;
}
.home-card-body h3 {
  font-size: 1.14rem;
  margin: 3px 0 4px;
  line-height: 1.15;
}
.home-card-body strong {
  font-size: 0.94rem;
}
.home-card-body p {
  margin: 5px 0 0;
  line-height: 1.35;
}
.home-card-rating {
  color: #a06a00 !important;
  font-weight: 750;
}
.home-card-open {
  right: 14px;
  bottom: 12px;
  background: #e60000;
  color: #fff;
  padding: 7px 10px;
  border-radius: 8px;
  font-size: 0.73rem;
  box-shadow: 0 4px 12px rgba(230, 0, 0, 0.2);
}
.home-ad-slot {
  min-height: 82px;
  margin-top: 18px;
  border-radius: 14px;
  background: #fff;
  border: 1px dashed #bfc6da;
}
.home-ad-slot div {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 7px 14px;
}
.home-ad-slot strong {
  margin: 0;
}
.home-ad-slot span {
  display: block;
}

@media (max-width: 1050px) {
  .header-inner {
    padding: 12px 24px;
  }
  .brand-dts {
    width: 320px;
    min-width: 245px;
  }
  .postal-search-form {
    grid-template-columns: 1fr 1fr 160px;
  }
  .postal-search-form button {
    grid-column: 1/-1;
    width: 100%;
  }
  .home-discovery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .home-panel-newcomers {
    grid-column: 1/-1;
    max-width: calc(50% - 9px);
    width: 100%;
    justify-self: center;
  }
}
@media (max-width: 800px) {
  .header-inner {
    min-height: 86px;
    padding: 9px 18px;
  }
  .brand-dts {
    width: 270px;
    min-width: 0;
  }
  .brand-dts img {
    max-height: 66px;
  }
  .postal-search-form {
    grid-template-columns: 1fr;
  }
  .postal-search-form button {
    grid-column: auto;
  }
  .hero {
    padding: 34px 18px 40px;
  }
  .hero h1 {
    font-size: clamp(2rem, 9vw, 3rem);
  }
  .home-discovery-grid {
    grid-template-columns: 1fr;
  }
  .home-panel-newcomers {
    grid-column: auto;
    max-width: none;
  }
  .home-panel-title {
    min-height: 0;
    margin-bottom: 12px;
  }
  .home-visual-card {
    grid-template-columns: 150px 1fr;
    grid-template-rows: 1fr;
    min-height: 180px;
  }
  .home-card-media {
    height: 100%;
    min-height: 180px;
  }
  .home-card-open {
    position: static;
    display: inline-block;
    margin: 2px 16px 14px;
    width: max-content;
  }
}
@media (max-width: 520px) {
  .brand-dts {
    width: 225px;
  }
  .header-inner {
    min-height: 76px;
  }
  .brand-dts img {
    max-height: 58px;
  }
  .hero {
    padding: 28px 14px 34px;
  }
  .hero h1 {
    font-size: 2.15rem;
  }
  .hero-content > p {
    font-size: 0.93rem;
  }
  .home-discovery-section {
    padding: 18px 12px 22px;
  }
  .home-panel {
    padding: 14px;
  }
  .home-visual-card {
    display: block;
    min-height: 0;
  }
  .home-card-media {
    height: 180px;
    min-height: 180px;
  }
  .home-card-open {
    margin-left: 14px;
  }
}

/* V13 — carrousel publicitaire compact */
.home-ad-carousel {
  position: relative;
  margin-top: 18px;
  border-radius: 16px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 8px 24px rgba(32, 39, 88, 0.08);
  aspect-ratio: 1200/180;
  min-height: 112px;
}
.home-ad-track,
.home-ad-slide {
  position: absolute;
  inset: 0;
}
.home-ad-slide {
  display: block;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 0.45s ease,
    visibility 0.45s ease;
}
.home-ad-slide.is-active {
  opacity: 1;
  visibility: visible;
}
.home-ad-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.home-ad-arrow {
  position: absolute;
  top: 50%;
  z-index: 3;
  width: 38px;
  height: 38px;
  transform: translateY(-50%);
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.9);
  color: #242956;
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2);
}
.home-ad-prev {
  left: 12px;
}
.home-ad-next {
  right: 12px;
}
.home-ad-arrow:hover,
.home-ad-arrow:focus-visible {
  background: #fff;
  outline: 3px solid rgba(230, 0, 0, 0.28);
}
.home-ad-dots {
  position: absolute;
  z-index: 3;
  left: 50%;
  bottom: 10px;
  display: flex;
  gap: 7px;
  transform: translateX(-50%);
}
.home-ad-dots button {
  width: 9px;
  height: 9px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.55);
  cursor: pointer;
  box-shadow: 0 0 0 1px rgba(36, 41, 86, 0.18);
}
.home-ad-dots button.is-active {
  width: 24px;
  border-radius: 999px;
  background: #e60000;
}
.home-ad-label {
  position: absolute;
  z-index: 3;
  top: 8px;
  right: 10px;
  padding: 3px 7px;
  border-radius: 5px;
  background: rgba(0, 0, 0, 0.48);
  color: #fff;
  font-size: 0.67rem;
  letter-spacing: 0.04em;
}
@media (max-width: 700px) {
  .home-ad-carousel {
    aspect-ratio: 16/4.5;
    min-height: 110px;
  }
  .home-ad-arrow {
    width: 34px;
    height: 34px;
  }
  .home-ad-slide img {
    object-fit: cover;
  }
}
@media (prefers-reduced-motion: reduce) {
  .home-ad-slide {
    transition: none;
  }
}

/* ===== Correctif accueil inspiré de la maquette fournie (V22) ===== */
.home-modern {
  background: #f4f6fa;
  color: #11182f;
}
.home-modern .page {
  min-height: 100vh;
}
.home-header {
  background: #fff;
  border-top: 4px solid #ed0015;
  box-shadow: 0 2px 16px rgba(16, 24, 45, 0.08);
}
.home-header .header-inner {
  max-width: 1400px;
  min-height: 104px;
  padding: 12px 54px;
}
.home-header .brand-dts {
  width: 210px;
  min-width: 210px;
}
.home-header .brand-dts img {
  max-height: 74px;
}
.header-rating {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-right: auto;
  padding-left: 34px;
  border-left: 1px solid #e1e4ec;
}
.header-stars {
  color: #ffb400;
  font-size: 20px;
  letter-spacing: 2px;
}
.header-rating strong {
  display: block;
  color: #11182f;
  font-size: 15px;
}
.header-rating strong::first-letter {
  color: #ed0015;
}
.header-rating span {
  display: block;
  color: #333849;
  font-size: 13px;
}
.home-header .main-navigation {
  margin-left: auto;
  gap: 24px;
}
.home-header .main-navigation a {
  color: #151927;
  background: transparent;
  padding: 16px 4px;
  border-radius: 0;
}
.home-header .main-navigation a::after {
  height: 2px;
  background: #ed0015;
}
.home-header .main-navigation a:hover {
  background: transparent;
  transform: none;
}
.nav-contact {
  display: flex !important;
  gap: 7px;
  align-items: center;
}
.hero-home {
  position: relative;
  isolation: isolate;
  overflow: visible;
  padding: 26px 24px 0;
  min-height: 302px;
  background: #141414 url("../img/hero-artisan.jpg") center right/auto 100%
    no-repeat;
}
.hero-home::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    90deg,
    rgba(8, 9, 11, 0.94) 0%,
    rgba(8, 9, 11, 0.84) 39%,
    rgba(8, 9, 11, 0.38) 65%,
    rgba(8, 9, 11, 0.12) 100%
  );
}
.hero-home .hero-content {
  max-width: 1280px;
  margin: 0 auto;
}
.hero-copy {
  max-width: 620px;
}
.hero-home h1 {
  margin: 0;
  color: #fff;
  font-size: clamp(2.15rem, 3.7vw, 3.45rem);
  line-height: 1.02;
  text-align: left;
  letter-spacing: -0.025em;
}
.hero-home h1::first-line {
  color: #fff;
}
.hero-copy p {
  max-width: 560px;
  margin: 9px 0 18px;
  color: #fff;
  font-size: 1.06rem;
  line-height: 1.35;
  text-align: left;
}
.hero-home h1 {
  max-width: 620px;
}
.hero-home h1 strong,
.hero-home h1 em {
  color: #ef1a2d;
}
.hero-home .postal-search-form {
  position: relative;
  z-index: 2;
  max-width: none;
  margin: 0;
  padding: 12px;
  background: rgba(255, 255, 255, 0.96);
  border-radius: 12px;
  box-shadow: 0 14px 32px rgba(0, 0, 0, 0.28);
  grid-template-columns: 1.35fr 0.9fr 0.78fr 0.66fr;
  gap: 9px;
}
.hero-home .postal-search-form input,
.hero-home .postal-search-form select,
.hero-home .postal-search-form button {
  height: 48px;
  min-height: 48px;
  border-radius: 8px;
}
.hero-home .postal-search-form input,
.hero-home .postal-search-form select {
  border: 1px solid #dce0e8;
  color: #15192f;
  background: #fff;
  padding-left: 45px;
}
.hero-home .postal-search-form button {
  background: linear-gradient(135deg, #f20a1e, #d50013);
  box-shadow: none;
  font-size: 0.92rem;
}
.hero-home .postal-help {
  display: none;
}
.search-icon {
  position: relative;
}
.search-icon::before {
  position: absolute;
  z-index: 3;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 20px;
  color: #121a35;
  pointer-events: none;
}
.trade-icon::before {
  content: "▣";
}
.location-icon::before {
  content: "⌖";
}
.radius-icon::before {
  content: "⊙";
}
.trust-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  margin-top: 0;
  color: #fff;
}
.trust-strip span {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 54px;
  font-size: 27px;
  border-right: 1px solid rgba(255, 255, 255, 0.13);
}
.trust-strip span:last-child {
  border-right: 0;
}
.trust-strip b {
  font-size: 0.83rem;
  line-height: 1.2;
  text-align: left;
}
.request-ticker {
  padding: 15px 24px 0;
  background: #f4f6fa;
}
.request-ticker-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 18px 8px;
  background: #fff;
  border: 1px solid #e5e8ef;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(28, 40, 73, 0.08);
}
.request-ticker h2 {
  margin: 0;
  padding: 10px 0 7px;
  border-bottom: 1px solid #eaecf2;
  font-size: 1.05rem;
}
.request-ticker h2 span {
  color: #ed0015;
}
.request-ticker-list {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.request-ticker-list a {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 10px 14px;
  color: #171b33;
  text-decoration: none;
  border-right: 1px solid #dde1e9;
}
.request-ticker-list a:last-child {
  border-right: 0;
}
.request-ticker-list strong,
.request-ticker-list small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.request-ticker-list strong {
  font-size: 0.78rem;
}
.request-ticker-list small {
  margin-top: 3px;
  font-size: 0.72rem;
}
.ticker-icon {
  font-size: 24px;
  color: #ed0015;
}
.request-ticker-list a:nth-child(2) .ticker-icon {
  color: #ffb000;
}
.request-ticker-list a:nth-child(3) .ticker-icon {
  color: #35a952;
}
.request-ticker-list a:nth-child(4) .ticker-icon {
  color: #087fc5;
}
.ticker-empty {
  padding: 16px;
  color: #666;
}
.home-modern .home-discovery-section {
  padding: 14px 24px 14px;
  background: #f4f6fa;
}
.home-modern .home-discovery-inner {
  max-width: 1280px;
}
.home-pro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.home-profile-panel {
  padding: 14px 18px 16px;
  background: #fff;
  border: 1px solid #e4e7ee;
  border-radius: 12px;
  box-shadow: 0 8px 22px rgba(29, 40, 75, 0.07);
}
.panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.panel-heading h2 {
  position: relative;
  margin: 0 0 14px;
  padding-bottom: 8px;
  font-size: 1.04rem;
}
.panel-heading h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 34px;
  height: 2px;
  background: #ed0015;
}
.panel-heading span {
  font-size: 24px;
}
.home-pro-card {
  display: grid;
  grid-template-columns: 42% 1fr;
  gap: 20px;
  align-items: center;
}
.pro-photo {
  display: block;
  height: 150px;
  overflow: hidden;
  border-radius: 7px;
  background: linear-gradient(135deg, #17213c, #59617b);
  text-decoration: none;
}
.pro-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pro-photo span {
  display: flex;
  height: 100%;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 2rem;
  font-weight: 800;
}
.pro-summary h3 {
  margin: 0 0 3px;
  font-size: 1.18rem;
}
.pro-summary > strong {
  color: #ed0015;
  font-size: 0.85rem;
}
.pro-summary p {
  margin: 7px 0;
  font-size: 0.82rem;
}
.pro-summary .home-card-rating span {
  color: #ffb000;
  letter-spacing: 1px;
}
.profile-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 168px;
  height: 39px;
  margin-top: 3px;
  border: 1px solid #ed0015;
  border-radius: 7px;
  color: #ed0015;
  text-decoration: none;
  font-size: 0.82rem;
  font-weight: 800;
}
.profile-button:hover {
  background: #ed0015;
  color: #fff;
}
.panel-empty {
  min-height: 150px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #697086;
}
.home-modern .home-ad-carousel {
  margin-top: 12px;
  min-height: 78px;
  aspect-ratio: 1280/95;
  border-radius: 10px;
}
.home-modern .home-ad-arrow {
  width: 36px;
  height: 36px;
}
.home-modern .home-ad-label {
  display: none;
}
.home-footer {
  padding: 22px 24px 0;
  background: linear-gradient(135deg, #182238, #11192a);
  color: #fff;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.45fr repeat(3, 1fr) 1.05fr;
  gap: 40px;
  max-width: 1280px;
  margin: 0 auto;
}
.footer-brand img {
  width: 145px;
  filter: brightness(0) invert(1);
}
.footer-brand p {
  max-width: 260px;
  font-size: 0.79rem;
  line-height: 1.5;
}
.footer-grid h3 {
  margin: 0 0 10px;
  font-size: 0.76rem;
}
.footer-grid a {
  display: block;
  margin: 0 0 7px;
  color: #fff;
  text-decoration: none;
  font-size: 0.76rem;
  opacity: 0.94;
}
.footer-stats p {
  margin: 0 0 8px;
  font-size: 0.75rem;
}
.footer-stats b {
  display: block;
  font-size: 0.9rem;
}
.footer-bottom {
  max-width: 1280px;
  margin: 18px auto 0;
  padding: 11px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.18);
  font-size: 0.72rem;
  text-align: center;
}
@media (max-width: 1100px) {
  .home-header .header-inner {
    padding: 10px 24px;
  }
  .header-rating {
    display: none;
  }
  .home-header .main-navigation {
    gap: 12px;
  }
  .request-ticker-list {
    grid-template-columns: repeat(3, 1fr);
  }
  .request-ticker-list a:nth-child(n + 4) {
    display: none;
  }
  .footer-grid {
    grid-template-columns: 1.5fr repeat(2, 1fr);
  }
  .footer-grid > div:nth-child(4),
  .footer-grid > div:nth-child(5) {
    margin-top: 10px;
  }
  .hero-home .postal-search-form {
    grid-template-columns: 1fr 1fr;
  }
  .hero-home .postal-search-form button {
    grid-column: auto;
  }
  .trust-strip {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 800px) {
  .home-header .brand-dts {
    width: 180px;
    min-width: 180px;
  }
  .hero-home {
    background-position: 65% center;
    padding: 28px 14px 0;
  }
  .hero-home::before {
    background: rgba(8, 9, 11, 0.77);
  }
  .hero-home h1,
  .hero-copy p {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
  }
  .hero-home .postal-search-form {
    grid-template-columns: 1fr;
  }
  .trust-strip {
    margin-top: 10px;
  }
  .trust-strip span {
    min-height: 48px;
    font-size: 22px;
  }
  .home-pro-grid {
    grid-template-columns: 1fr;
  }
  .request-ticker-list {
    grid-template-columns: 1fr;
  }
  .request-ticker-list a {
    display: flex !important;
    border-right: 0;
    border-bottom: 1px solid #e4e7ee;
  }
  .request-ticker-list a:nth-child(n + 4) {
    display: none !important;
  }
  .footer-grid {
    grid-template-columns: 1fr 1fr;
  }
  .footer-brand {
    grid-column: 1/-1;
  }
  .home-modern .home-ad-carousel {
    min-height: 96px;
  }
}
@media (max-width: 540px) {
  .home-header .header-inner {
    min-height: 72px;
    padding: 8px 14px;
  }
  .home-header .brand-dts {
    width: 155px;
    min-width: 155px;
  }
  .hero-home h1 {
    font-size: 2rem;
  }
  .hero-copy p {
    font-size: 0.9rem;
  }
  .trust-strip {
    grid-template-columns: 1fr 1fr;
  }
  .trust-strip span {
    padding: 6px;
    font-size: 18px;
  }
  .trust-strip b {
    font-size: 0.7rem;
  }
  .request-ticker,
  .home-modern .home-discovery-section {
    padding-left: 10px;
    padding-right: 10px;
  }
  .home-pro-card {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .pro-photo {
    height: 190px;
  }
  .footer-grid {
    grid-template-columns: 1fr;
  }
  .footer-brand {
    grid-column: auto;
  }
  .home-modern .home-ad-carousel {
    min-height: 110px;
  }
}

/* ===== Correctifs visuels accueil V23 ===== */
.home-header .brand-dts img {
  filter: none;
}
.hero-home {
  overflow: hidden;
  background-image: url("../img/hero-artisan.jpg");
  background-size: cover;
  background-position: center 35%;
}
.hero-home::before {
  z-index: 0;
}
.hero-home .hero-content {
  position: relative;
  z-index: 1;
}
.hero-highlight {
  display: block;
  color: #ef1a2d;
}
.trust-strip {
  position: relative;
  z-index: 2;
  background: rgba(4, 7, 12, 0.38);
  margin-left: -24px;
  margin-right: -24px;
  padding-left: 24px;
  padding-right: 24px;
}
.trust-strip span {
  white-space: normal;
}
.home-modern .home-ad-carousel {
  aspect-ratio: 1200/95;
  min-height: 95px;
}
.home-modern .home-ad-slide img {
  object-fit: fill;
}
@media (max-width: 1100px) {
  .hero-highlight {
    display: inline;
  }
  .trust-strip {
    margin-left: -24px;
    margin-right: -24px;
  }
}
@media (max-width: 800px) {
  .hero-home {
    background-position: 62% center;
  }
  .trust-strip {
    margin-left: -14px;
    margin-right: -14px;
    padding-left: 8px;
    padding-right: 8px;
  }
}

/* Correctif V26 — menu sans soulignement et suggestions entièrement cliquables */
.main-navigation a::after,
.home-header .main-navigation a::after,
.main-navigation a:hover::after,
.main-navigation a:focus-visible::after,
.main-navigation a.active::after {
  content: none !important;
  display: none !important;
  height: 0 !important;
  background: transparent !important;
  transform: none !important;
}
.main-navigation a,
.main-navigation a:hover,
.main-navigation a:focus,
.main-navigation a:active,
.main-navigation a.active {
  text-decoration: none !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
}

.autocomplete-wrap {
  z-index: 10000 !important;
}
.autocomplete-list {
  z-index: 10001 !important;
  pointer-events: auto !important;
  overflow: hidden auto !important;
}
.autocomplete-list .autocomplete-option {
  position: relative !important;
  z-index: 10002 !important;
  display: flex !important;
  align-items: center !important;
  width: 100% !important;
  min-height: 54px !important;
  margin: 0 !important;
  padding: 14px 18px !important;
  box-sizing: border-box !important;
  cursor: pointer !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}
.autocomplete-list .autocomplete-option * {
  pointer-events: none !important;
}

/* Correctif V27 — les suggestions restent au-dessus du bandeau de confiance. */
.hero-home .postal-search-form {
  z-index: 30 !important;
}
.hero-home .postal-search-form .field,
.hero-home .postal-search-form .autocomplete-wrap {
  position: relative;
  z-index: 31 !important;
}
.hero-home .postal-search-form .autocomplete-list {
  z-index: 99999 !important;
}
.hero-home .trust-strip {
  z-index: 1 !important;
}

/* ==========================================================
   V42 — identité publique alignée sur la page d'accueil
   Administration volontairement inchangée.
   ========================================================== */
body.public-modern {
  --public-red: #e30613;
  --public-ink: #11131a;
  --public-muted: #626879;
  --public-line: #e2e5ec;
  background: #f3f5f8;
}
.public-modern .site-header.public-header {
  min-height: 108px;
  background: #fff !important;
  color: var(--public-ink);
  border-top: 4px solid var(--public-red);
  box-shadow: 0 1px 0 rgba(18, 22, 35, 0.08);
  position: relative;
  z-index: 100;
}
.public-modern .public-header .header-inner {
  min-height: 104px;
  max-width: 1320px;
  padding: 0 34px;
}
.public-modern .public-header .brand-dts img {
  display: block;
  width: 122px;
  height: auto;
}
.public-modern .public-header .main-navigation {
  gap: 34px;
}
.public-modern .public-header .main-navigation a {
  padding: 42px 0 37px;
  color: #11131a;
  font-size: 1rem;
}
.public-modern .public-header .main-navigation a::after {
  display: none !important;
}
.public-modern .public-header .main-navigation a:hover,
.public-modern .public-header .main-navigation a:focus-visible,
.public-modern .public-header .main-navigation a.active {
  color: var(--public-red);
}
.public-modern .public-header .menu-toggle span {
  background: #11131a;
}

.public-modern .form-page-main,
.public-modern .simple-register-main {
  background: #f3f5f8;
}
.public-modern .form-page-section,
.public-modern .login-section,
.public-modern .simple-register-hero {
  min-height: calc(100vh - 174px);
  padding: 68px 24px 82px;
  background:
    linear-gradient(90deg, rgba(6, 7, 10, 0.91), rgba(13, 14, 18, 0.8)),
    url("../img/hero-artisan.jpg") center/cover no-repeat;
  background-attachment: fixed;
}
.public-modern .simple-register-hero {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.public-modern .simple-register-hero h1 {
  font-size: clamp(2.6rem, 5vw, 4.8rem);
  letter-spacing: -0.04em;
}
.public-modern .simple-register-hero > p {
  font-size: 1.08rem;
  color: rgba(255, 255, 255, 0.82);
}
.public-modern .choice-buttons {
  width: min(100%, 860px);
  gap: 18px;
}
.public-modern .choice-button {
  min-height: 150px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 16px;
  box-shadow: 0 18px 45px rgba(0, 0, 0, 0.22);
  align-items: flex-start;
  text-align: left;
  padding: 30px;
}
.public-modern .choice-button strong {
  color: #171923;
  font-size: 1.45rem;
}
.public-modern .choice-button:hover {
  border-color: var(--public-red);
  transform: translateY(-4px);
}

.public-modern .simple-form-card,
.public-modern .login-card {
  width: min(100%, 720px);
  border-radius: 18px;
  padding: 42px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.6);
}
.public-modern .wide-card {
  width: min(100%, 1120px);
}
.public-modern .pro-register-card {
  width: min(100%, 1160px);
  max-width: none;
  padding: 48px;
}
.public-modern .simple-form-card h1,
.public-modern .login-card h1 {
  color: #171923;
  font-size: clamp(2rem, 3vw, 2.75rem);
  letter-spacing: -0.035em;
}
.public-modern .simple-form-card > p {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
  color: var(--public-muted);
}
.public-modern .simple-register-form {
  gap: 20px;
}
.public-modern .form-group label {
  font-weight: 750;
  color: #202330;
}
.public-modern .form-group input,
.public-modern .form-group select,
.public-modern .form-group textarea,
.public-modern .simple-register-form select,
.public-modern .login-form .form-group input {
  min-height: 52px;
  border: 1px solid #d7dbe4;
  border-radius: 10px;
  padding: 0 15px;
  background: #fff;
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}
.public-modern .form-group textarea {
  padding: 14px;
  min-height: 145px;
}
.public-modern .form-group input:focus,
.public-modern .form-group select:focus,
.public-modern .form-group textarea:focus,
.public-modern .login-form .form-group input:focus {
  outline: 0;
  border-color: var(--public-red);
  box-shadow: 0 0 0 4px rgba(227, 6, 19, 0.1);
}
.public-modern .primary-action,
.public-modern .login-link,
.public-modern .profile-button {
  border: 0;
  border-radius: 10px;
  background: var(--public-red) !important;
  color: #fff !important;
  min-height: 52px;
  padding: 0 24px;
  font-weight: 800;
  box-shadow: 0 10px 24px rgba(227, 6, 19, 0.18);
  transition:
    transform 0.15s ease,
    filter 0.15s ease;
}
.public-modern .primary-action:hover,
.public-modern .login-link:hover {
  filter: brightness(0.92);
  transform: translateY(-1px);
}
.public-modern .secondary-action,
.public-modern .register-link-button {
  border: 1px solid #cfd3dd;
  background: #fff !important;
  color: #272a36 !important;
  box-shadow: none;
}
.public-modern .site-footer {
  background: #11131a;
}

/* Inscription professionnelle */
.public-modern .pricing-fieldset {
  margin-top: 28px;
}
.public-modern .pricing-fieldset legend {
  font-size: 1.35rem;
  color: #171923;
}
.public-modern .pricing-grid {
  gap: 18px;
}
.public-modern .pricing-card {
  min-height: 270px;
  padding: 26px;
  border: 1px solid #dfe3eb;
  border-radius: 16px;
  box-shadow: 0 8px 22px rgba(30, 35, 55, 0.05);
}
.public-modern .pricing-card:hover,
.public-modern .pricing-card:has(input:checked) {
  border-color: var(--public-red);
  box-shadow: 0 16px 36px rgba(20, 25, 45, 0.12);
}
.public-modern .pricing-card strong {
  font-size: 1.65rem;
  color: var(--public-red);
}
.public-modern .pricing-featured {
  border-color: #24283a;
}
.public-modern .pricing-badge {
  background: #171923;
}
.public-modern .pro-form-section {
  border-top: 1px solid var(--public-line);
  padding-top: 26px;
  margin-top: 28px;
}
.public-modern .pro-form-section h2 {
  color: #171923;
  font-size: 1.25rem;
  margin: 0 0 18px;
}
.public-modern .pro-form-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}
.public-modern .pro-access-grid {
  grid-template-columns: 1.35fr 1fr 1fr;
}
.public-modern .geo-compact-row {
  display: grid;
  grid-template-columns: minmax(280px, 1.4fr) 1fr;
  gap: 16px;
  align-items: center;
  margin-top: 18px;
}
.public-modern .geo-compact-row .secondary-action {
  margin: 0;
  min-height: 52px;
  border: 1px solid #232638;
  color: #232638 !important;
}
.public-modern .geo-status {
  margin: 0 !important;
  color: #626879 !important;
  font-size: 0.9rem;
  line-height: 1.45;
}
.public-modern .legal-checkbox {
  width: 100%;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 8px 0 4px;
  padding: 16px;
  border-radius: 10px;
  background: #f6f7fa;
  color: #343846;
}
.public-modern .legal-checkbox input {
  width: 20px !important;
  height: 20px !important;
  min-height: 0 !important;
  margin: 1px 0 0 !important;
  flex: 0 0 20px !important;
  accent-color: var(--public-red);
}
.public-modern .pro-register-form > .primary-action {
  width: 100%;
  margin-top: 4px;
}

/* Résultats et fiches */
.public-modern .results-list {
  gap: 16px;
}
.public-modern .pro-card,
.public-modern .contact-locked {
  border-radius: 14px;
  border-color: #e0e3ea;
  box-shadow: 0 7px 22px rgba(25, 30, 50, 0.05);
}
.public-modern .contact-locked {
  border-left: 0;
  background: #f6f7fa;
}
.public-modern .contact-actions {
  justify-content: flex-end;
  align-items: center;
}
.public-modern .contact-actions a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9px;
  padding: 0 18px;
}
.public-modern .search-bottom-actions {
  border-radius: 14px;
}
.public-modern .bottom-login-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* Pages compte client publiques */
.public-modern .account-panel,
.public-modern .profile-card {
  border-radius: 16px;
  box-shadow: 0 12px 35px rgba(20, 25, 45, 0.08);
}

@media (max-width: 900px) {
  .public-modern .public-header .header-inner {
    padding: 0 20px;
  }
  .public-modern .public-header .main-navigation {
    gap: 18px;
  }
  .public-modern .pro-form-grid,
  .public-modern .pro-access-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .public-modern .geo-compact-row {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 700px) {
  .public-modern .site-header.public-header {
    min-height: 82px;
  }
  .public-modern .public-header .header-inner {
    min-height: 78px;
  }
  .public-modern .public-header .brand-dts img {
    width: 100px;
  }
  .public-modern .public-header .main-navigation {
    background: #fff;
    color: #11131a;
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.12);
  }
  .public-modern .public-header .main-navigation a {
    padding: 14px 18px;
  }
  .public-modern .form-page-section,
  .public-modern .login-section,
  .public-modern .simple-register-hero {
    padding: 34px 12px 50px;
    background-attachment: scroll;
  }
  .public-modern .simple-form-card,
  .public-modern .login-card,
  .public-modern .pro-register-card {
    padding: 26px 18px;
    border-radius: 14px;
  }
  .public-modern .pro-form-grid,
  .public-modern .pro-access-grid {
    grid-template-columns: 1fr;
  }
  .public-modern .pricing-card {
    min-height: auto;
  }
  .public-modern .contact-actions,
  .public-modern .bottom-login-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .public-modern .contact-actions a,
  .public-modern .bottom-login-actions a {
    width: 100%;
  }
}

/* DTS V45 — Accueil vivant, uniquement avec des données réelles */
.home-header .header-inner {
  max-width: 1280px;
}
.home-header .brand-dts {
  margin-right: auto;
}
.live-showcase {
  padding: 22px 24px 10px;
  background: #f4f6fa;
}
.live-showcase-inner {
  width: min(1280px, 100%);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.16fr 1fr;
  gap: 18px;
}
.live-column {
  position: relative;
  min-width: 0;
  padding: 18px;
  background: #fff;
  border: 1px solid #e2e6ee;
  border-radius: 18px;
  box-shadow: 0 12px 30px rgba(30, 42, 75, 0.07);
  overflow: hidden;
}
.live-heading {
  display: flex;
  align-items: center;
  gap: 9px;
  padding-bottom: 12px;
  border-bottom: 1px solid #eceef3;
}
.live-heading > span {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 10px;
  background: #fff0f1;
  color: #df0015;
  font-size: 20px;
  font-weight: 900;
}
.live-heading h2 {
  margin: 0;
  color: #222842;
  font-size: 1rem;
  line-height: 1.2;
}
.live-slides {
  position: relative;
  min-height: 145px;
}
.live-slide {
  display: none;
  animation: dtsFadeSlide 0.45s ease;
}
.live-slide.is-active {
  display: flex;
}
.request-live-card {
  align-items: center;
  gap: 15px;
  min-height: 145px;
  padding: 16px 4px 8px;
  color: #222842;
  text-decoration: none;
}
.live-card-media {
  display: grid;
  place-items: center;
  flex: 0 0 78px;
  width: 78px;
  height: 78px;
  border-radius: 16px;
  overflow: hidden;
  background: #fff0f1;
}
.live-card-media > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.live-card-icon {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  color: #df0015;
  font-size: 31px;
}
.live-card-copy {
  min-width: 0;
}
.live-card-copy small,
.newcomer-live-card small {
  display: block;
  margin-bottom: 6px;
  color: #7a8090;
  font-size: 0.74rem;
}
.live-card-copy strong {
  display: block;
  overflow: hidden;
  color: #20263e;
  font-size: 1.03rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.live-card-copy em {
  display: block;
  margin-top: 9px;
  color: #4d556a;
  font-size: 0.84rem;
  font-style: normal;
}
.newcomer-live-card {
  align-items: center;
  gap: 14px;
  min-height: 145px;
  padding-top: 14px;
}
.newcomer-photo {
  display: grid;
  place-items: center;
  flex: 0 0 92px;
  width: 92px;
  height: 92px;
  border-radius: 16px;
  overflow: hidden;
  background: #20263e;
  color: #fff;
  font-weight: 900;
  text-decoration: none;
}
.newcomer-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.newcomer-live-card > div {
  min-width: 0;
}
.newcomer-live-card h3 {
  margin: 0 0 3px;
  overflow: hidden;
  color: #20263e;
  font-size: 1.08rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.newcomer-live-card strong {
  display: block;
  color: #d90014;
  font-size: 0.86rem;
}
.newcomer-live-card p {
  margin: 6px 0;
  color: #596074;
  font-size: 0.8rem;
}
.newcomer-live-card > div > a {
  font-size: 0.82rem;
  font-weight: 800;
  color: #20263e;
  text-decoration: none;
}
.live-dots,
.professional-group-dots {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin-top: 5px;
}
.live-dots button,
.professional-group-dots button {
  width: 7px;
  height: 7px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: #cdd1da;
  cursor: pointer;
}
.live-dots button.is-active,
.professional-group-dots button.is-active {
  width: 20px;
  background: #df0015;
}
.live-empty {
  margin: 0;
  padding: 38px 10px;
  color: #73798a;
  text-align: center;
}
.professional-showcase {
  padding: 22px 24px 30px;
  background: #f4f6fa;
}
.professional-showcase-inner {
  width: min(1280px, 100%);
  margin: 0 auto;
}
.professional-showcase-heading {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 30px;
  margin-bottom: 16px;
}
.professional-showcase-heading span {
  color: #d90014;
  font-size: 0.75rem;
  font-weight: 900;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}
.professional-showcase-heading h2 {
  margin: 4px 0 0;
  color: #20263e;
  font-size: clamp(1.45rem, 2.2vw, 2rem);
}
.professional-showcase-heading p {
  max-width: 490px;
  margin: 0;
  color: #687083;
  font-size: 0.87rem;
  line-height: 1.5;
}
.professional-card-group {
  display: none;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  animation: dtsFadeSlide 0.5s ease;
}
.professional-card-group.is-active {
  display: grid;
}
.professional-showcase-card {
  min-width: 0;
  background: #fff;
  border: 1px solid #e1e5ed;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 12px 30px rgba(30, 42, 75, 0.07);
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease;
}
.professional-showcase-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 17px 34px rgba(30, 42, 75, 0.11);
}
.professional-showcase-photo {
  display: grid;
  place-items: center;
  height: 145px;
  overflow: hidden;
  background: linear-gradient(135deg, #20263e, #373e5b);
  color: #fff;
  font-size: 2rem;
  font-weight: 900;
  text-decoration: none;
}
.professional-showcase-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.professional-showcase-card:hover .professional-showcase-photo img {
  transform: scale(1.035);
}
.professional-showcase-copy {
  padding: 15px;
}
.professional-showcase-copy h3 {
  margin: 0 0 4px;
  overflow: hidden;
  color: #20263e;
  font-size: 1rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.professional-showcase-copy > strong {
  display: block;
  overflow: hidden;
  color: #d90014;
  font-size: 0.82rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.professional-showcase-copy > p {
  margin: 8px 0;
  color: #62697a;
  font-size: 0.78rem;
}
.professional-showcase-copy > a {
  display: inline-flex;
  margin-top: 5px;
  color: #20263e;
  font-size: 0.82rem;
  font-weight: 900;
  text-decoration: none;
}
.no-review-yet {
  color: #8a8f9d !important;
}
.professional-group-dots {
  margin-top: 15px;
}
.home-modern .home-discovery-section {
  padding-top: 0;
  background: #f4f6fa;
}
.home-modern .home-ad-carousel {
  max-width: 1280px;
  margin: 0 auto;
}
@keyframes dtsFadeSlide {
  from {
    opacity: 0;
    transform: translateY(5px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .live-slide,
  .professional-card-group {
    animation: none;
  }
  .professional-showcase-card,
  .professional-showcase-photo img {
    transition: none;
  }
}
@media (max-width: 980px) {
  .live-showcase-inner {
    grid-template-columns: 1fr 1fr;
  }
  .live-newcomers {
    grid-column: 1/-1;
    grid-row: 1;
  }
  .professional-card-group {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .professional-showcase-heading {
    align-items: start;
    flex-direction: column;
    gap: 8px;
  }
}
@media (max-width: 650px) {
  .live-showcase,
  .professional-showcase {
    padding-left: 12px;
    padding-right: 12px;
  }
  .live-showcase-inner {
    grid-template-columns: 1fr;
  }
  .live-newcomers {
    grid-column: auto;
    grid-row: auto;
  }
  .live-column {
    padding: 14px;
  }
  .professional-card-group {
    grid-template-columns: 1fr;
  }
  .professional-showcase-photo {
    height: 190px;
  }
  .professional-showcase-heading p {
    display: none;
  }
}

/* DTS V46 — Cohérence visuelle accueil / espaces connectés (hors administration) */
.public-modern.pro-account-body {
  background: #f4f6fa;
  color: #20263e;
}
.public-modern.pro-account-body .site-header {
  background: #e50012;
}
.public-modern.pro-account-body .pro-dashboard-shell {
  width: min(1280px, calc(100% - 40px));
  max-width: 1280px;
  margin: 24px auto 36px;
  grid-template-columns: 260px minmax(0, 1fr);
  min-height: calc(100vh - 190px);
  border: 1px solid #e1e5ed;
  border-radius: 20px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 16px 40px rgba(30, 42, 75, 0.09);
}
.public-modern.pro-account-body .pro-sidebar {
  background: linear-gradient(180deg, #20263e 0%, #2d3451 100%);
  padding: 30px 20px;
}
.public-modern.pro-account-body .pro-identity {
  border-bottom-color: rgba(255, 255, 255, 0.14);
}
.public-modern.pro-account-body .pro-identity em {
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.1);
}
.public-modern.pro-account-body .pro-sidebar nav a {
  border-radius: 10px;
  transition:
    background 0.16s ease,
    transform 0.16s ease;
}
.public-modern.pro-account-body .pro-sidebar nav a:hover {
  background: rgba(255, 255, 255, 0.1);
  transform: translateX(2px);
}
.public-modern.pro-account-body .pro-sidebar nav a.active {
  background: #e50012;
  color: #fff;
  box-shadow: 0 8px 20px rgba(229, 0, 18, 0.25);
}
.public-modern.pro-account-body .pro-dashboard-content {
  padding: 34px;
  background: #f4f6fa;
}
.public-modern.pro-account-body .dashboard-heading h1 {
  color: #20263e;
  letter-spacing: -0.025em;
}
.public-modern.pro-account-body .dashboard-heading p {
  color: #687083;
}
.public-modern.pro-account-body .pro-stat-grid article,
.public-modern.pro-account-body .dashboard-panels article,
.public-modern.pro-account-body .dashboard-form,
.public-modern.pro-account-body .photo-upload-form,
.public-modern.pro-account-body .empty-dashboard,
.public-modern.pro-account-body .metier-list,
.public-modern.pro-account-body .add-metier-form,
.public-modern.pro-account-body .pro-card {
  border: 1px solid #e1e5ed;
  border-radius: 16px;
  box-shadow: 0 10px 28px rgba(30, 42, 75, 0.07);
}
.public-modern.pro-account-body .pro-stat-grid article {
  position: relative;
  overflow: hidden;
}
.public-modern.pro-account-body .pro-stat-grid article::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: #e50012;
}
.public-modern.pro-account-body .pro-stat-grid strong {
  color: #20263e;
}
.public-modern.pro-account-body .dashboard-panels h2 {
  color: #20263e;
}
.public-modern.pro-account-body .dashboard-request:hover strong {
  color: #e50012;
}
.public-modern.pro-account-body .account-status {
  background: #e7f6ec;
  color: #087247;
}
.public-modern.pro-account-body progress {
  accent-color: #e50012;
}
.public-modern.pro-account-body .dashboard-form input:focus,
.public-modern.pro-account-body .dashboard-form select:focus,
.public-modern.pro-account-body .dashboard-form textarea:focus,
.public-modern.pro-account-body .add-metier-form input:focus {
  outline: 0;
  border-color: #e50012;
  box-shadow: 0 0 0 4px rgba(229, 0, 18, 0.1);
}

/* Les anciennes pages publiques récupèrent le même fond, les mêmes cartes et le même en-tête que l'accueil. */
.public-modern:not(.pro-account-body) .form-page-main {
  background: #f4f6fa;
}
.public-modern:not(.pro-account-body) .form-page-section {
  background: linear-gradient(180deg, #f4f6fa 0%, #eef1f6 100%);
}
.public-modern:not(.pro-account-body) .simple-form-card,
.public-modern:not(.pro-account-body) .profile-card,
.public-modern:not(.pro-account-body) .pro-card {
  border: 1px solid #e1e5ed;
  box-shadow: 0 12px 32px rgba(30, 42, 75, 0.08);
}

@media (max-width: 1000px) {
  .public-modern.pro-account-body .pro-dashboard-shell {
    width: min(100% - 24px, 1280px);
    grid-template-columns: 1fr;
    margin: 14px auto 28px;
  }
  .public-modern.pro-account-body .pro-sidebar {
    padding: 18px;
  }
  .public-modern.pro-account-body .pro-sidebar nav {
    padding-bottom: 3px;
  }
}
@media (max-width: 650px) {
  .public-modern.pro-account-body .pro-dashboard-shell {
    width: 100%;
    margin: 0;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
  }
  .public-modern.pro-account-body .pro-dashboard-content {
    padding: 24px 14px;
  }
}

/* DTS V58 — Réservation publique de la bannière Sponsor */
.sponsor-main {
  background: #f4f6fa;
  padding: 46px 20px 70px;
}
.sponsor-intro {
  width: min(980px, 100%);
  margin: 0 auto 28px;
  text-align: center;
}
.sponsor-intro > span {
  color: #df0015;
  font-weight: 900;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-size: 0.78rem;
}
.sponsor-intro h1 {
  margin: 9px 0 12px;
  color: #20263e;
  font-size: clamp(2rem, 4vw, 3.25rem);
}
.sponsor-intro p {
  max-width: 760px;
  margin: auto;
  color: #626a7d;
  line-height: 1.65;
}
.sponsor-booking-shell {
  width: min(1280px, 100%);
  margin: auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  align-items: start;
}
.sponsor-calendar-card,
.sponsor-booking-form {
  background: #fff;
  border: 1px solid #e1e5ed;
  border-radius: 20px;
  padding: 26px;
  box-shadow: 0 14px 38px rgba(30, 42, 75, 0.08);
}
.sponsor-calendar-card h2,
.sponsor-booking-form h2 {
  margin-top: 0;
  color: #20263e;
}
.sponsor-legend {
  display: flex;
  gap: 12px;
  align-items: center;
  color: #687083;
  font-size: 0.86rem;
}
.sponsor-legend i {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  background: #dff5e8;
}
.sponsor-legend i.busy {
  background: #ffd9dc;
}
.sponsor-calendar {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 20px;
}
.calendar-month {
  border: 1px solid #e4e7ee;
  border-radius: 14px;
  padding: 13px;
}
.calendar-month h3 {
  margin: 0 0 10px;
  text-align: center;
  text-transform: capitalize;
  color: #20263e;
  font-size: 0.92rem;
}
.calendar-week,
.calendar-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}
.calendar-week b {
  padding: 4px 0;
  color: #8a90a0;
  text-align: center;
  font-size: 0.68rem;
}
.calendar-days span,
.calendar-days button {
  min-height: 30px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  font: inherit;
  font-size: 0.73rem;
}
.calendar-days button.free {
  background: #e8f7ee;
  color: #087247;
  cursor: pointer;
}
.calendar-days button.free:hover {
  background: #ccebd9;
}
.calendar-days button.busy {
  background: #ffe2e4;
  color: #9f1c2c;
}
.calendar-days button.past {
  color: #bbb;
}
.sponsor-help {
  margin-bottom: 0;
  color: #73798a;
  font-size: 0.84rem;
  line-height: 1.5;
}
.sponsor-price-box {
  margin-bottom: 20px;
  padding: 16px;
  border-radius: 14px;
  background: #20263e;
  color: #fff;
}
.sponsor-price-box span,
.sponsor-price-box small {
  display: block;
  opacity: 0.78;
}
.sponsor-price-box strong {
  display: block;
  margin: 5px 0;
  font-size: 1.45rem;
}
.sponsor-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
}
.sponsor-form-grid label {
  display: grid;
  gap: 7px;
  color: #30364c;
  font-weight: 800;
  font-size: 0.9rem;
}
.sponsor-form-grid input {
  width: 100%;
  min-height: 48px;
  border: 1px solid #d6dae4;
  border-radius: 9px;
  padding: 10px 12px;
  font: inherit;
}
.sponsor-form-grid input:focus {
  outline: 0;
  border-color: #df0015;
  box-shadow: 0 0 0 4px rgba(223, 0, 21, 0.09);
}
.sponsor-form-grid small {
  color: #777e8e;
  font-weight: 500;
}
.sponsor-total {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 4px 15px;
  margin: 20px 0;
  padding: 16px;
  border: 1px solid #e1e5ed;
  border-radius: 14px;
  background: #f7f8fb;
}
.sponsor-total span {
  grid-column: 1/-1;
  color: #747b8c;
  font-size: 0.82rem;
}
.sponsor-total strong {
  color: #20263e;
}
.sponsor-total b {
  color: #df0015;
  font-size: 1.18rem;
}
.sponsor-total b.is-error {
  color: #a61b2b;
}
.sponsor-terms {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 17px 0;
  color: #555d70;
  font-size: 0.87rem;
  line-height: 1.5;
}
.sponsor-terms input {
  margin-top: 3px;
  accent-color: #df0015;
}
.sponsor-secure {
  text-align: center;
  color: #7a8190;
  font-size: 0.8rem;
}
.hero-sponsor .ad-impression-pixel {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
.hero-sponsor > a > img:not(.ad-impression-pixel) {
  height: 105px !important;
  object-fit: cover !important;
}
.hero-sponsor-label {
  display: inline-block !important;
  padding: 5px 11px !important;
  border-radius: 999px !important;
  background: #df0015 !important;
  color: #fff !important;
  margin-bottom: 7px !important;
  font-size: 0.7rem !important;
}
@media (max-width: 1050px) {
  .sponsor-booking-shell {
    grid-template-columns: 1fr;
  }
  .sponsor-calendar {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 720px) {
  .sponsor-main {
    padding: 30px 12px 50px;
  }
  .sponsor-calendar-card,
  .sponsor-booking-form {
    padding: 18px;
  }
  .sponsor-calendar {
    grid-template-columns: 1fr;
  }
  .sponsor-form-grid {
    grid-template-columns: 1fr;
  }
  .full-field {
    grid-column: auto;
  }
  .hero-sponsor > a > img:not(.ad-impression-pixel) {
    height: 82px !important;
  }
}

/* Option de publication générale intégrée au formulaire d'envoi */
.general-publication-checkbox {
  margin-top: 10px;
  border: 1px solid #d8dce8;
  background: #f7f8fc;
}
.request-summary-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.request-view-button {
  display: inline-flex;
  justify-content: center;
  align-self: flex-start;
  text-decoration: none;
}
.request-detail-shell {
  max-width: 1180px;
  margin: 40px auto;
  padding: 0 24px 60px;
}
.request-detail-card {
  background: #fff;
  border: 1px solid #dde2ec;
  border-radius: 24px;
  padding: 32px;
  box-shadow: 0 18px 45px rgba(20, 31, 64, 0.08);
}
.request-detail-card h1 {
  margin: 6px 0 0;
  font-size: 2.1rem;
}
.eyebrow {
  font-weight: 800;
  letter-spacing: 0.08em;
  color: #e60012;
}
.request-detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 18px 0 28px;
}
.request-detail-meta span {
  background: #f4f6fa;
  border-radius: 999px;
  padding: 8px 13px;
}
.request-description {
  background: #f7f8fb;
  border: 1px solid #e0e4ec;
  border-radius: 16px;
  padding: 20px;
  line-height: 1.65;
}
.request-photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
  margin: 14px 0 24px;
}
.request-photo-grid img {
  width: 100%;
  height: 260px;
  object-fit: cover;
  border-radius: 16px;
  border: 1px solid #dde2ec;
}
.client-contact-box {
  margin: 24px 0;
  background: #f7f8fb;
  border-radius: 16px;
  padding: 18px;
}
.client-contact-box p {
  margin: 8px 0;
}
.request-private-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 24px;
}
.request-private-actions form {
  margin: 0;
}
.request-private-actions button {
  padding: 14px 20px;
  border: 0;
  border-radius: 10px;
  font-weight: 800;
  cursor: pointer;
}
.danger-button {
  background: #fff0f1 !important;
  color: #c80012 !important;
}
.back-link {
  display: inline-block;
  margin-bottom: 18px;
  text-decoration: none;
}
.site-header img {
  max-width: 145px;
}
@media (max-width: 700px) {
  .request-detail-card {
    padding: 20px;
  }
  .request-private-actions,
  .request-private-actions form,
  .request-private-actions button {
    width: 100%;
  }
}

/* V57 — tableau des formules publicitaires plus lisible */
.ad-create-card {
  padding: clamp(18px, 2.5vw, 30px) !important;
  overflow: hidden;
}
.ad-create-card > h2 {
  margin: 0 0 7px;
  font-size: clamp(1.35rem, 2.2vw, 1.75rem);
  color: #171b2a;
}
.ad-choice-intro {
  margin: 0 0 24px !important;
  padding: 12px 14px;
  border-left: 4px solid #e50000;
  border-radius: 0 10px 10px 0;
  background: #f7f8fb;
  color: #596174 !important;
}
.ad-offer-grid {
  grid-template-columns: repeat(3, minmax(220px, 1fr)) !important;
  gap: 16px !important;
  align-items: stretch;
  margin-bottom: 28px !important;
}
.ad-offer-card {
  gap: 12px !important;
  padding: 18px !important;
  border: 1px solid #dfe3ec !important;
  border-top: 5px solid #838a9c !important;
  border-radius: 17px !important;
  background: linear-gradient(180deg, #fff 0, #fbfcfe 100%) !important;
  box-shadow: 0 7px 20px rgba(26, 35, 63, 0.06);
  isolation: isolate;
}
.ad-offer-card:hover {
  border-color: #b7bdca !important;
  box-shadow: 0 14px 32px rgba(26, 35, 63, 0.12) !important;
}
.ad-offer-card:has(input:checked) {
  border-color: #e50000 !important;
  border-top-color: #e50000 !important;
  background: linear-gradient(180deg, #fff8f8 0, #fff 48%) !important;
  box-shadow:
    0 0 0 3px rgba(229, 0, 0, 0.1),
    0 16px 38px rgba(26, 35, 63, 0.13) !important;
}
.ad-offer-level-2 {
  border-top-color: #8c99aa !important;
}
.ad-offer-level-3 {
  border-top-color: #c39418 !important;
}
.ad-offer-level-4 {
  border-top-color: #4c5274 !important;
}
.ad-offer-premium {
  border-top-color: #e50000 !important;
  background: linear-gradient(180deg, #fff6f6, #fff 48%) !important;
}
.ad-offer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-right: 38px;
}
.ad-offer-kicker {
  margin: 0 !important;
  white-space: nowrap;
}
.ad-offer-rank {
  color: #7a8191;
  font-size: 0.72rem;
  font-weight: 800;
  white-space: nowrap;
}
.ad-offer-premium .ad-offer-rank {
  color: #c90000;
}
.ad-offer-name {
  display: block;
  padding: 0 !important;
  font-size: 1.5rem !important;
  line-height: 1.05;
  text-transform: capitalize;
}
.ad-offer-price {
  display: flex !important;
  align-items: baseline;
  gap: 7px;
  font-size: 1.65rem !important;
  line-height: 1;
  color: #df0015 !important;
}
.ad-offer-price small {
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: #687083 !important;
}
.ad-offer-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: 1px solid #e3e6ed;
  border-radius: 12px;
  background: #f6f7fa;
  overflow: hidden;
}
.ad-offer-metrics span {
  display: grid;
  gap: 2px;
  padding: 10px 12px;
  text-align: center;
}
.ad-offer-metrics span + span {
  border-left: 1px solid #e3e6ed;
}
.ad-offer-metrics b {
  font-size: 1.03rem;
  color: #22283a;
}
.ad-offer-metrics small {
  font-size: 0.68rem;
  line-height: 1.25;
  color: #717889;
}
.ad-position-preview {
  height: 62px !important;
  margin-top: 1px;
}
.ad-offer-description {
  min-height: 43px;
  font-size: 0.86rem !important;
}
.ad-offer-benefits {
  display: grid !important;
  gap: 5px;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  font-size: 0.82rem !important;
  line-height: 1.35 !important;
}
.ad-offer-benefits li {
  position: relative;
  padding-left: 22px;
}
.ad-offer-benefits li:before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 0;
  color: #0b8057;
  font-weight: 900;
}
.ad-availability {
  margin-top: auto !important;
  border: 1px solid transparent;
}
.ad-selected-label {
  display: none;
  padding: 8px 10px;
  border-radius: 9px;
  background: #e50000;
  color: #fff;
  text-align: center;
  font-size: 0.8rem;
  font-weight: 900;
}
.ad-offer-card:has(input:checked) .ad-selected-label {
  display: block;
}
.ad-offer-check {
  right: 14px !important;
  top: 14px !important;
  background: #fff;
}
.ad-form-fields {
  position: relative;
  padding: 22px !important;
  margin: 0 0 18px !important;
  border: 1px solid #dfe3ec;
  border-radius: 16px;
  background: #f8f9fc;
}
.ad-form-fields:before {
  content: "Informations de votre publicité";
  grid-column: 1/-1;
  margin-bottom: 0;
  color: #20263e;
  font-size: 1.05rem;
  font-weight: 900;
}
.ad-form-fields input {
  min-height: 48px;
  background: #fff !important;
  border-color: #ccd2de !important;
}
.ad-form-fields input:focus {
  outline: 0;
  border-color: #e50000 !important;
  box-shadow: 0 0 0 4px rgba(229, 0, 0, 0.08);
}
.ad-purchase-form > .primary-action {
  min-height: 52px;
  padding-inline: 28px;
  font-size: 1rem;
}
@media (max-width: 1180px) {
  .ad-offer-grid {
    grid-template-columns: repeat(2, minmax(220px, 1fr)) !important;
  }
}
@media (max-width: 760px) {
  .ad-offer-grid {
    grid-template-columns: 1fr !important;
  }
  .ad-offer-description {
    min-height: 0;
  }
  .ad-form-fields {
    grid-template-columns: 1fr !important;
    padding: 17px !important;
  }
  .ad-form-fields .full-field {
    grid-column: auto !important;
  }
}

/* Sélection claire de la photo principale du professionnel */
.pro-photo-grid figure {
  position: relative;
}
.pro-photo-grid figure.is-cover-photo {
  outline: 3px solid #ed0016;
  box-shadow: 0 0 0 6px rgba(237, 0, 22, 0.1);
}
.cover-photo-badge {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  background: #ed0016;
  color: #fff;
  padding: 7px 10px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 800;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
}
.photo-card-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 8px 12px 14px;
}
.photo-card-actions form {
  margin: 0;
}
.set-cover-photo-button {
  width: 100%;
  border: 0;
  border-radius: 8px;
  padding: 10px 12px;
  background: #242b49;
  color: #fff;
  font-weight: 800;
  cursor: pointer;
}
.set-cover-photo-button:hover {
  background: #ed0016;
}
.current-cover-label {
  display: block;
  text-align: center;
  padding: 9px 10px;
  border-radius: 8px;
  background: #e9f8ee;
  color: #08753d;
  font-size: 0.88rem;
}
.delete-photo-button {
  width: 100%;
  border: 0;
  background: transparent;
  color: #d60016;
  font-weight: 800;
  cursor: pointer;
  padding: 7px;
}

/* === DTSFrance : page des conditions avant inscription === */
.public-modern .terms-page-main {
  background: #f3f5f9;
  padding: 48px 20px 70px;
}
.public-modern .terms-card {
  width: min(980px, 100%);
  margin: 0 auto;
  padding: 36px 40px;
  background: #fff;
  border: 1px solid #e0e4ec;
  border-radius: 20px;
  box-shadow: 0 16px 45px rgba(31, 40, 70, 0.09);
}
.public-modern .terms-step {
  display: inline-flex;
  align-items: center;
  padding: 7px 12px;
  border-radius: 999px;
  background: #fff0f2;
  color: #df0015;
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.public-modern .terms-card h1 {
  margin: 18px 0 10px;
  color: #20263e;
  font-size: clamp(1.9rem, 4vw, 2.7rem);
  line-height: 1.12;
}
.public-modern .terms-intro {
  margin: 0;
  max-width: 820px;
  color: #555d70;
  font-size: 1.03rem;
  line-height: 1.65;
}
.public-modern .terms-reading-time {
  margin: 10px 0 26px;
  color: #7a8191;
  font-size: 0.88rem;
}
.public-modern .terms-content {
  display: grid;
  gap: 0;
  padding: 4px 0 8px;
}
.public-modern .terms-content h2 {
  margin: 22px 0 8px;
  padding-bottom: 9px;
  border-bottom: 1px solid #e7eaf0;
  color: #252b42;
  font-size: 1.16rem;
}
.public-modern .terms-content p {
  margin: 0 0 10px;
  color: #4e5669;
  line-height: 1.65;
}
.public-modern .terms-highlight {
  margin-top: 20px !important;
  padding: 16px 18px;
  border-left: 4px solid #df0015;
  border-radius: 10px;
  background: #fff4f5;
  color: #30374d !important;
  font-weight: 800;
}
.public-modern #terms-form {
  margin-top: 26px;
  padding-top: 24px;
  border-top: 1px solid #e2e6ed;
}
.public-modern .terms-accept {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 17px 18px;
  border: 1px solid #dce1ea;
  border-radius: 12px;
  background: #f8f9fb;
  color: #30374d;
  font-weight: 750;
  line-height: 1.45;
  cursor: pointer;
}
.public-modern .terms-accept input {
  width: 21px !important;
  height: 21px !important;
  min-height: 0 !important;
  flex: 0 0 21px;
  margin: 1px 0 0 !important;
  accent-color: #df0015;
}
.public-modern .terms-actions {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 20px;
}
.public-modern .terms-actions .primary-action {
  width: auto;
  min-height: 50px;
  padding: 13px 24px;
  border: 0;
  border-radius: 10px;
  background: #df0015;
  color: #fff;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 12px 24px rgba(223, 0, 21, 0.18);
}
.public-modern .terms-actions .primary-action:disabled {
  background: #d9dce4;
  color: #7c8291;
  box-shadow: none;
  cursor: not-allowed;
  opacity: 1;
}
.public-modern .terms-back {
  color: #4e5669;
  font-weight: 800;
  text-decoration: none;
}
.public-modern .terms-back:hover {
  text-decoration: underline;
}
@media (max-width: 700px) {
  .public-modern .terms-page-main {
    padding: 24px 12px 45px;
  }
  .public-modern .terms-card {
    padding: 24px 18px;
    border-radius: 15px;
  }
  .public-modern .terms-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .public-modern .terms-actions .primary-action {
    width: 100%;
  }
  .public-modern .terms-back {
    text-align: center;
  }
}

/* ==================================================
   CORRECTIF MISE EN PAGE — ESPACE CLIENT
   ================================================== */

body.public-modern main {
    width: 100%;
    background: #f4f6fa;
}

body.public-modern main > section,
body.public-modern main > div {
    width: min(1180px, calc(100% - 40px));
    margin-left: auto;
    margin-right: auto;
}

/* Bloc principal de l’espace client */
body.public-modern .account-panel,
body.public-modern .profile-card,
body.public-modern .client-dashboard,
body.public-modern .client-space,
body.public-modern .client-content {
    width: min(1180px, calc(100% - 40px));
    margin: 30px auto;
    padding: 30px;
    border: 1px solid #e1e5ed;
    border-radius: 16px;
    background: #ffffff;
    box-shadow: 0 12px 35px rgba(20, 25, 45, 0.08);
}

/* Titres */
body.public-modern main h1 {
    margin: 0 0 10px;
    color: #20263e;
    font-size: clamp(1.9rem, 3vw, 2.7rem);
}

body.public-modern main h2 {
    color: #20263e;
}

/* Formulaire de recherche */
body.public-modern .postal-search-form,
body.public-modern .search-form,
body.public-modern form.geo-search-form {
    width: 100%;
    display: grid;
    grid-template-columns:
        minmax(220px, 1.4fr)
        minmax(160px, 0.8fr)
        minmax(110px, 0.45fr)
        minmax(240px, 1.2fr);
    gap: 12px;
    align-items: end;
    margin: 20px 0;
    padding: 22px;
    border: 1px solid #e1e5ed;
    border-radius: 14px;
    background: #ffffff;
    box-shadow: 0 8px 24px rgba(30, 42, 75, 0.07);
}

body.public-modern .postal-search-form label,
body.public-modern .search-form label,
body.public-modern form.geo-search-form label {
    display: grid;
    gap: 7px;
    color: #30364c;
    font-weight: 700;
}

/* Champs */
body.public-modern .postal-search-form input,
body.public-modern .postal-search-form select,
body.public-modern .postal-search-form textarea,
body.public-modern .search-form input,
body.public-modern .search-form select,
body.public-modern .search-form textarea,
body.public-modern form.geo-search-form input,
body.public-modern form.geo-search-form select,
body.public-modern form.geo-search-form textarea {
    width: 100%;
    min-width: 0;
    min-height: 48px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #d4d8e2;
    border-radius: 8px;
    background: #ffffff;
    font: inherit;
}

body.public-modern textarea {
    resize: vertical;
}

/* Bouton de recherche */
body.public-modern .postal-search-form button,
body.public-modern .search-form button,
body.public-modern form.geo-search-form button {
    min-height: 50px;
    border: 0;
    border-radius: 8px;
    padding: 0 22px;
    background: #e60016;
    color: #ffffff;
    font-weight: 800;
    cursor: pointer;
}

/* Si le bouton est placé après les champs */
body.public-modern .postal-search-form > button,
body.public-modern .search-form > button,
body.public-modern form.geo-search-form > button {
    grid-column: 1 / -1;
    width: 100%;
}

/* Historique et demandes */
body.public-modern .client-request-card,
body.public-modern .empty-dashboard,
body.public-modern .requests-list {
    margin-top: 18px;
    padding: 22px;
    border: 1px solid #e1e5ed;
    border-radius: 14px;
    background: #ffffff;
}

body.public-modern .privacy-notice,
body.public-modern .postal-help {
    grid-column: 1 / -1;
    margin: 0;
    padding: 12px 14px;
    border-radius: 9px;
    background: #f7f8fc;
    color: #626879;
    line-height: 1.5;
}

/* Mobile */
@media (max-width: 850px) {
    body.public-modern main > section,
    body.public-modern main > div,
    body.public-modern .account-panel,
    body.public-modern .profile-card,
    body.public-modern .client-dashboard,
    body.public-modern .client-space,
    body.public-modern .client-content {
        width: min(100% - 24px, 1180px);
        padding: 20px;
    }

    body.public-modern .postal-search-form,
    body.public-modern .search-form,
    body.public-modern form.geo-search-form {
        grid-template-columns: 1fr;
        padding: 16px;
    }

    body.public-modern .postal-search-form > button,
    body.public-modern .search-form > button,
    body.public-modern form.geo-search-form > button,
    body.public-modern .privacy-notice,
    body.public-modern .postal-help {
        grid-column: auto;
    }
}

/* ==================================================
   FINITION FORMULAIRE ESPACE CLIENT
   ================================================== */

body.public-modern .postal-search-form,
body.public-modern .geo-search-form,
body.public-modern .search-form {
    display: grid !important;
    grid-template-columns:
        minmax(240px, 1.35fr)
        minmax(170px, 0.8fr)
        minmax(120px, 0.45fr)
        minmax(260px, 1.25fr) !important;
    gap: 16px !important;
    align-items: end !important;

    width: 100% !important;
    margin: 22px 0 16px !important;
    padding: 22px !important;

    border: 1px solid #e1e5ed !important;
    border-radius: 14px !important;
    background: #ffffff !important;
    box-shadow: 0 8px 24px rgba(30, 42, 75, 0.07) !important;
}

body.public-modern .postal-search-form .field,
body.public-modern .geo-search-form .field,
body.public-modern .search-form .field {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    min-width: 0 !important;
}

body.public-modern .postal-search-form label,
body.public-modern .geo-search-form label,
body.public-modern .search-form label {
    display: block !important;
    margin: 0 !important;
    color: #30364c !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
}

body.public-modern .postal-search-form input,
body.public-modern .postal-search-form select,
body.public-modern .postal-search-form textarea,
body.public-modern .geo-search-form input,
body.public-modern .geo-search-form select,
body.public-modern .geo-search-form textarea,
body.public-modern .search-form input,
body.public-modern .search-form select,
body.public-modern .search-form textarea {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 50px !important;
    margin: 0 !important;
    padding: 10px 12px !important;

    border: 1px solid #d4d8e2 !important;
    border-radius: 8px !important;
    background: #ffffff !important;
    font: inherit !important;
}

body.public-modern .postal-search-form textarea,
body.public-modern .geo-search-form textarea,
body.public-modern .search-form textarea {
    min-height: 82px !important;
    resize: vertical;
}

body.public-modern .postal-search-form > button,
body.public-modern .geo-search-form > button,
body.public-modern .search-form > button,
body.public-modern .postal-search-form .primary-action,
body.public-modern .geo-search-form .primary-action,
body.public-modern .search-form .primary-action {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    min-height: 54px !important;
    margin: 0 !important;

    border: 0 !important;
    border-radius: 9px !important;
    background: #e60016 !important;
    color: #ffffff !important;
    font-weight: 800 !important;
}

body.public-modern .postal-help,
body.public-modern .privacy-notice {
    grid-column: 1 / -1 !important;
    margin: 0 !important;
}

@media (max-width: 900px) {
    body.public-modern .postal-search-form,
    body.public-modern .geo-search-form,
    body.public-modern .search-form {
        grid-template-columns: 1fr 1fr !important;
    }

    body.public-modern .postal-search-form > button,
    body.public-modern .geo-search-form > button,
    body.public-modern .search-form > button,
    body.public-modern .postal-help,
    body.public-modern .privacy-notice {
        grid-column: 1 / -1 !important;
    }
}

@media (max-width: 650px) {
    body.public-modern .postal-search-form,
    body.public-modern .geo-search-form,
    body.public-modern .search-form {
        grid-template-columns: 1fr !important;
        padding: 16px !important;
    }

    body.public-modern .postal-search-form > button,
    body.public-modern .geo-search-form > button,
    body.public-modern .search-form > button,
    body.public-modern .postal-help,
    body.public-modern .privacy-notice {
        grid-column: auto !important;
    }
}

/* Correctif final du formulaire Espace client */

body.public-modern .geo-search-form,
body.public-modern .postal-search-form,
body.public-modern .search-form {
    display: grid !important;
    grid-template-columns: 1.25fr 0.8fr 0.45fr 1.1fr !important;
    gap: 14px !important;
    align-items: end !important;

    width: 100% !important;
    margin: 22px 0 16px !important;
    padding: 22px !important;

    background: #fff !important;
    border: 1px solid #e1e5ed !important;
    border-radius: 14px !important;
    box-shadow: 0 8px 24px rgba(30, 42, 75, 0.07) !important;
}

/* Chaque label devient une colonne */
body.public-modern .geo-search-form > label,
body.public-modern .postal-search-form > label,
body.public-modern .search-form > label {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    min-width: 0 !important;
    margin: 0 !important;

    color: #30364c !important;
    font-weight: 700 !important;
}

/* Champs à l’intérieur des labels */
body.public-modern .geo-search-form > label > input,
body.public-modern .geo-search-form > label > select,
body.public-modern .geo-search-form > label > textarea,
body.public-modern .postal-search-form > label > input,
body.public-modern .postal-search-form > label > select,
body.public-modern .postal-search-form > label > textarea,
body.public-modern .search-form > label > input,
body.public-modern .search-form > label > select,
body.public-modern .search-form > label > textarea {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 50px !important;
    margin: 0 !important;
    padding: 10px 12px !important;

    border: 1px solid #d4d8e2 !important;
    border-radius: 8px !important;
    background: #fff !important;
    font: inherit !important;
}

body.public-modern .geo-search-form > label > textarea,
body.public-modern .postal-search-form > label > textarea,
body.public-modern .search-form > label > textarea {
    min-height: 82px !important;
    resize: vertical !important;
}

/* Bouton sur toute la largeur */
body.public-modern .geo-search-form > button,
body.public-modern .postal-search-form > button,
body.public-modern .search-form > button {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    min-height: 54px !important;
    margin: 0 !important;

    border: 0 !important;
    border-radius: 9px !important;
    background: #e60016 !important;
    color: #fff !important;
    font-weight: 800 !important;
}

/* Texte d’aide */
body.public-modern .geo-search-form > p,
body.public-modern .postal-search-form > p,
body.public-modern .search-form > p,
body.public-modern .postal-help,
body.public-modern .privacy-notice {
    grid-column: 1 / -1 !important;
}

/* Tablette */
@media (max-width: 900px) {
    body.public-modern .geo-search-form,
    body.public-modern .postal-search-form,
    body.public-modern .search-form {
        grid-template-columns: 1fr 1fr !important;
    }
}

/* Mobile */
@media (max-width: 650px) {
    body.public-modern .geo-search-form,
    body.public-modern .postal-search-form,
    body.public-modern .search-form {
        grid-template-columns: 1fr !important;
        padding: 16px !important;
    }

    body.public-modern .geo-search-form > button,
    body.public-modern .postal-search-form > button,
    body.public-modern .search-form > button,
    body.public-modern .geo-search-form > p,
    body.public-modern .postal-search-form > p,
    body.public-modern .search-form > p {
        grid-column: auto !important;
    }
}

/* Boutons des photos professionnelles */

.photo-card-actions{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:12px;
    padding:12px;
}

.photo-card-actions form{
    margin:0;
}

.set-cover-photo-button{
    background:#e50012;
    color:#fff;
    border:none;
    border-radius:8px;
    padding:10px 18px;
    font-weight:700;
    cursor:pointer;
}

.delete-photo-button{
    background:#fff;
    color:#e50012;
    border:2px solid #e50012;
    border-radius:8px;
    padding:10px 18px;
    font-weight:700;
    cursor:pointer;
}

.set-cover-photo-button:hover{
    background:#c70010;
}

.delete-photo-button:hover{
    background:#fff1f2;
}

.photo-card-actions{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:14px;
    padding:12px;
}

.photo-card-actions form{
    margin:0;
    flex:1;
}

.photo-card-actions button{
    width:100%;
    height:44px;
    border-radius:8px;
    font-size:15px;
    font-weight:700;
    white-space:nowrap;
    cursor:pointer;
}

.set-cover-photo-button{
    background:#e50012;
    color:#fff;
    border:none;
}

.delete-photo-button{
    background:#fff;
    color:#e50012;
    border:2px solid #e50012;
}

.set-cover-photo-button:hover{
    background:#c70010;
}

.delete-photo-button:hover{
    background:#fff3f3;
}

.photo-card-actions{
    display:flex;
    gap:10px;
    justify-content:center;
    padding:12px;
}

.photo-card-actions form{
    flex:0 0 auto;
}

.photo-card-actions button{
    padding:8px 14px;
    height:40px;
    width:auto;
    font-size:14px;
    font-weight:700;
    white-space:nowrap;
}


/* DTS — Accès public et formules Sponsor */
.footer-sponsor-link {
  color: #fff !important;
  font-weight: 800 !important;
}
.footer-sponsor-link::before {
  content: "★ ";
  color: var(--red, #df0015);
}
.sponsor-floating-tab {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 1200;
  display: grid;
  grid-template-columns: 38px auto;
  grid-template-rows: auto auto;
  align-items: center;
  min-width: 190px;
  padding: 11px 15px 11px 11px;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 16px;
  background: linear-gradient(135deg, #df0015, #b90012);
  color: #fff;
  text-decoration: none;
  box-shadow: 0 14px 35px rgba(20,20,30,.28);
  transform: translateY(0);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
  animation: sponsor-tab-pulse 4s ease-in-out infinite;
}
.sponsor-floating-tab > span {
  grid-row: 1 / 3;
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #fff;
  color: #df0015;
  font-size: 1rem;
}
.sponsor-floating-tab strong { font-size: .92rem; line-height: 1.15; }
.sponsor-floating-tab small { opacity: .84; font-size: .7rem; }
.sponsor-floating-tab:hover { transform: translateY(-3px); filter: brightness(1.04); box-shadow: 0 18px 42px rgba(20,20,30,.35); }
@keyframes sponsor-tab-pulse { 0%,72%,100% { box-shadow: 0 14px 35px rgba(20,20,30,.28); } 82% { box-shadow: 0 14px 35px rgba(20,20,30,.28), 0 0 0 9px rgba(223,0,21,0); } 76% { box-shadow: 0 14px 35px rgba(20,20,30,.28), 0 0 0 0 rgba(223,0,21,.23); } }
.sponsor-offers {
  width: min(1180px, 100%);
  margin: 0 auto 28px;
}
.sponsor-offers-heading { text-align: center; margin-bottom: 20px; }
.sponsor-offers-heading > span { color: #df0015; font-weight: 900; font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }
.sponsor-offers-heading h2 { color: #20263e; margin: 7px 0 8px; font-size: clamp(1.45rem, 3vw, 2.15rem); }
.sponsor-offers-heading p, .sponsor-offers-note { color: #687083; line-height: 1.55; }
.sponsor-offer-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 15px; }
.sponsor-offer-card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 245px;
  padding: 22px;
  border: 1px solid #e1e5ed;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(30,42,75,.07);
}
.sponsor-offer-card.is-featured { border: 2px solid #df0015; transform: translateY(-5px); }
.sponsor-offer-card em { position: absolute; top: -12px; right: 14px; padding: 5px 10px; border-radius: 999px; background: #df0015; color: #fff; font-size: .67rem; font-style: normal; font-weight: 900; }
.sponsor-offer-card > span { color: #df0015; font-weight: 900; font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; }
.sponsor-offer-card h3 { color: #20263e; margin: 11px 0 4px; font-size: 1.45rem; }
.sponsor-offer-card strong { color: #20263e; font-size: 1.8rem; }
.sponsor-offer-card small { color: #777e8e; margin: 4px 0 20px; }
.sponsor-offer-select { margin-top: auto; min-height: 44px; border: 0; border-radius: 10px; background: #20263e; color: #fff; font-weight: 900; cursor: pointer; }
.sponsor-offer-card.is-featured .sponsor-offer-select, .sponsor-offer-select:hover { background: #df0015; }
.sponsor-offers-note { text-align: center; margin: 15px 0 0; font-size: .84rem; }
@media (max-width: 900px) { .sponsor-offer-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px) {
  .sponsor-offer-grid { grid-template-columns: 1fr; }
  .sponsor-offer-card.is-featured { transform: none; }
  .sponsor-floating-tab { right: 10px; bottom: 10px; min-width: 0; grid-template-columns: 32px auto; padding: 9px 12px 9px 9px; }
  .sponsor-floating-tab small { display: none; }
}
@media (prefers-reduced-motion: reduce) { .sponsor-floating-tab { animation: none; transition: none; } }


/* Appel automatique lorsque la bannière Sponsor est libre */
.hero-sponsor-empty {
  min-height: 105px;
  padding: 14px 28px;
  box-sizing: border-box;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  overflow: hidden;
  text-align: center;
  text-decoration: none;
  color: #fff;
  background:
    radial-gradient(circle at 18% 15%, rgba(255,255,255,.18), transparent 30%),
    linear-gradient(115deg, #171b29 0%, #252d46 48%, #df0015 100%);
}
.hero-sponsor-empty::before,
.hero-sponsor-empty::after {
  content: "";
  position: absolute;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 50%;
  pointer-events: none;
}
.hero-sponsor-empty::before {
  width: 180px;
  height: 180px;
  left: -65px;
  top: -105px;
}
.hero-sponsor-empty::after {
  width: 135px;
  height: 135px;
  right: -35px;
  bottom: -95px;
}
.hero-sponsor-empty-kicker {
  position: relative;
  z-index: 1;
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: #ffd8dc;
}
.hero-sponsor-empty strong {
  position: relative;
  z-index: 1;
  font-size: clamp(1rem, 2vw, 1.5rem);
  line-height: 1.1;
}
.hero-sponsor-empty small {
  position: relative;
  z-index: 1;
  font-size: .75rem;
  color: rgba(255,255,255,.86);
}
.hero-sponsor-empty b {
  position: relative;
  z-index: 1;
  margin-top: 4px;
  padding: 6px 14px;
  border-radius: 999px;
  background: #fff;
  color: #df0015;
  font-size: .75rem;
  box-shadow: 0 8px 20px rgba(0,0,0,.2);
  transition: transform .18s ease, box-shadow .18s ease;
}
.hero-sponsor-empty:hover b,
.hero-sponsor-empty:focus-visible b {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0,0,0,.28);
}
@media (max-width: 720px) {
  .hero-sponsor-empty {
    min-height: 82px;
    padding: 9px 14px;
  }
  .hero-sponsor-empty small {
    display: none;
  }
  .hero-sponsor-empty b {
    padding: 4px 11px;
  }
}

/* Aperçu et contrôle automatique de la bannière Sponsor */
.sponsor-banner-field{align-items:stretch}.sponsor-banner-status{display:block;padding:10px 12px;border-radius:9px;background:#f3f5f8;color:#626a7d;font-size:.84rem;font-weight:700}.sponsor-banner-status.is-valid{background:#e6f7ed;color:#087247}.sponsor-banner-status.is-error{background:#fff0f1;color:#a61b2b}.sponsor-banner-preview{position:relative;display:block;overflow:hidden;border:1px solid #dfe3ea;border-radius:12px;background:#f7f8fb}.sponsor-banner-preview[hidden]{display:none}.sponsor-banner-preview img{display:block;width:100%;height:auto;aspect-ratio:var(--banner-ratio,1200/250);object-fit:cover;background:#fff}.sponsor-banner-preview b{display:block;padding:8px 12px;color:#30364c;font-size:.8rem;text-align:center}.sponsor-booking-form .primary-action:disabled{cursor:not-allowed;opacity:.55}
/* Page publicitaire unifiée : bannière haute et rotation basse */
.unified-ad-grid{grid-template-columns:repeat(auto-fit,minmax(235px,1fr))}.ad-pack-card{cursor:default}.ad-pack-card p{min-height:48px}.selected-placement-note{padding:12px 14px;border-left:4px solid #ef101b;background:#f5f7fb;border-radius:8px;margin:12px 0}.sponsor-global-error{max-width:1120px;margin:0 auto 18px}.sponsor-month-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.sponsor-month{border:1px solid #e0e5ef;border-radius:14px;padding:14px;background:#fff}.sponsor-month h3{text-transform:capitalize;margin:0 0 10px;text-align:center}.sponsor-weekdays,.sponsor-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.sponsor-weekdays span{text-align:center;font-size:12px;font-weight:700;color:#64748b}.sponsor-days button,.sponsor-days span{min-height:35px}.sponsor-days button{border:1px solid #d7deea;border-radius:8px;background:#fff;cursor:pointer;font-weight:700}.sponsor-days button:hover{border-color:#ef101b}.sponsor-days button.is-selected{outline:3px solid rgba(239,16,27,.22);border-color:#ef101b}.sponsor-days button.is-busy,.sponsor-days button:disabled{background:#f2f3f6;color:#a1a7b1;cursor:not-allowed}.sponsor-offer-card.is-featured{border-color:#ef101b;box-shadow:0 0 0 3px rgba(239,16,27,.12)}@media(max-width:800px){.sponsor-month-grid{grid-template-columns:1fr}}


/* Correction calendrier publicitaire unifié */
.sponsor-calendar{display:block!important;overflow:hidden}
.sponsor-month-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;width:100%}
.sponsor-month{min-width:0;border:1px solid #dfe4ee;border-radius:16px;padding:16px;background:#fff;overflow:hidden}
.sponsor-month h3{margin:0 0 12px;text-align:center;text-transform:capitalize;color:#20263e;font-size:1rem;line-height:1.25}
.sponsor-weekdays,.sponsor-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;width:100%}
.sponsor-weekdays{margin-bottom:6px}
.sponsor-weekdays span{display:flex;align-items:center;justify-content:center;min-width:0;color:#667085;font-size:.72rem;font-weight:800}
.sponsor-days>span{min-width:0;min-height:36px}
.sponsor-days button{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:36px;padding:0;border:1px solid #d7deea;border-radius:9px;background:#fff;color:#172033;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}
.sponsor-days button:hover:not(:disabled){border-color:#df0015;background:#fff5f6;transform:translateY(-1px)}
.sponsor-days button:disabled{cursor:not-allowed;background:#f1f3f7;color:#a1a8b5;border-color:#dde2ea}
.sponsor-days button.is-busy{background:#ffe2e4;color:#a12031;border-color:#ffc7cd}
.sponsor-days button.is-selected{background:#df0015!important;color:#fff!important;border-color:#df0015!important;box-shadow:0 0 0 3px rgba(223,0,21,.12)}
@media(max-width:1050px){.sponsor-month-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.sponsor-month-grid{grid-template-columns:1fr}.sponsor-month{padding:12px}.sponsor-weekdays,.sponsor-days{gap:4px}.sponsor-days button,.sponsor-days>span{min-height:34px}}


/* Sélection de période du calendrier publicitaire */
.sponsor-days button.is-in-range{background:#ffe7ea;color:#7f1421;border-color:#f4a9b1}
.sponsor-days button.is-start,.sponsor-days button.is-end{background:#df0015!important;color:#fff!important;border-color:#df0015!important;box-shadow:0 0 0 3px rgba(223,0,21,.14)}
.sponsor-days button.is-start:not(.is-end){border-radius:9px 3px 3px 9px}
.sponsor-days button.is-end:not(.is-start){border-radius:3px 9px 9px 3px}


/* Evolution de formule Essentiel vers Premium */
.plan-summary-card{align-self:start}
.plan-upgrade-box{margin-top:18px;padding-top:16px;border-top:1px solid #e6e8ef;display:grid;gap:10px}
.plan-upgrade-box>strong{font-size:1rem;color:#18213d}
.plan-upgrade-box>span{font-size:.82rem;line-height:1.45;color:#666d7e}
.plan-upgrade-box ul{margin:0;padding-left:18px;font-size:.82rem;line-height:1.55;color:#343a4d}
.plan-upgrade-button{width:100%;margin-top:4px;border:0;cursor:pointer;text-align:center}
.plan-max-note{margin-top:16px;padding:12px;border-radius:10px;background:#eaf8ef;color:#087247;font-weight:700;font-size:.84rem}

/* Application installable DTSFrance */
.app-home-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px auto;max-width:980px;padding:14px 16px;background:rgba(255,255,255,.96);border:1px solid rgba(0,0,0,.1);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.09);color:#171717}.app-home-actions>div:first-child{display:flex;flex-direction:column;gap:3px}.app-home-actions strong{font-size:1rem}.app-home-actions span{font-size:.88rem;color:#555}.app-home-buttons{display:flex;gap:8px;flex-wrap:wrap}.app-action-button{border:0;border-radius:9px;padding:10px 13px;background:var(--red,#df0000);color:#fff;font-weight:700;cursor:pointer}.app-action-secondary{background:#34345f}.app-action-button[hidden]{display:none!important}@media(max-width:760px){.app-home-actions{align-items:flex-start;flex-direction:column}.app-home-buttons{width:100%}.app-action-button{flex:1;min-width:130px}}

/* Compteurs d’inscrits dans le bandeau de confiance */
.trust-strip .trust-verified b {
  display: grid;
  gap: 2px;
}
.trust-strip .trust-verified small {
  display: block;
  font-size: 0.67rem;
  line-height: 1.2;
  font-weight: 600;
  white-space: nowrap;
  color: rgba(255, 255, 255, 0.82);
}
.trust-strip .trust-verified small strong {
  font-size: inherit;
  color: #fff;
}
@media (max-width: 520px) {
  .trust-strip .trust-verified small {
    white-space: normal;
  }
}

/* DTS FIX FORMULES PRO V1 — messages hors de la grille */
.pricing-fieldset > .field-error-guidance.pricing-choice-error{
  display:block;
  margin:12px 0 0;
  padding:10px 12px;
  border-radius:8px;
  background:#fff3f3;
  color:#a40000;
  font-size:.9rem;
  font-weight:700;
  line-height:1.35;
}
.pricing-grid > .field-error-guidance{grid-column:1/-1;}

/* Correctif bannière basse sur mobile */
@media (max-width: 900px) {
    .home-ad-carousel,
    .bottom-banner,
    .footer-banner,
    .ad-banner {
        width: 100% !important;
        max-width: 100vw !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        overflow: hidden !important;
        box-sizing: border-box !important;
    }

    .home-ad-carousel img,
    .bottom-banner img,
    .footer-banner img,
    .ad-banner img {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
        object-fit: contain !important;
    }
}
/* DTS V98 — macaron promotionnel site synchronisé avec Admin > Promotions */
.hero-home .hero-content{position:relative}
.hero-home .hero-copy{position:relative;max-width:760px;padding-right:175px;min-height:145px}
.hero-home .promo-badge-site{
  position:absolute;right:0;top:50%;
  transform:translateY(-50%) rotate(2deg);
  width:142px;height:142px;padding:10px;
  border:5px solid var(--promo-border,#d9aa34);border-radius:50%;
  background:radial-gradient(circle at 38% 24%,#fffbd0 0,var(--promo-bg,#f5cf64) 43%,var(--promo-border,#c88d18) 100%);
  color:var(--promo-text,#312100);display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;text-decoration:none;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 12px 28px rgba(0,0,0,.38);
  z-index:5;box-sizing:border-box;overflow:hidden
}
.hero-home .promo-badge-site::before{content:'★ ★';display:block;font-size:9px;letter-spacing:3px;line-height:1;margin-bottom:2px}
.hero-home .promo-badge-site small{display:block;font:900 10px/1.05 Arial,sans-serif;text-transform:uppercase}
.hero-home .promo-badge-site strong{display:block;font:900 38px/.92 Arial,sans-serif;margin:2px 0}
.hero-home .promo-badge-site b{display:block;font:900 15px/.95 Arial,sans-serif;text-transform:uppercase}
.hero-home .promo-badge-site span{display:block;margin-top:5px;font:800 9px/1.05 Arial,sans-serif}
.hero-home .promo-badge-site:hover{transform:translateY(-50%) rotate(0deg) scale(1.035)}
.hero-home .hero-sponsor-label{display:none!important}
@media(max-width:1100px){
  .hero-home .hero-copy{max-width:none;padding-right:155px}
  .hero-home .promo-badge-site{width:128px;height:128px}
  .hero-home .promo-badge-site strong{font-size:34px}
}
@media(max-width:760px){
  .hero-home .hero-copy{padding-right:0;min-height:0}
  .hero-home .promo-badge-site{position:relative;right:auto;top:auto;transform:rotate(2deg);margin:18px auto 0}
  .hero-home .promo-badge-site:hover{transform:rotate(0deg) scale(1.025)}
}
body.pwa-active .promo-badge-site{display:none!important}

/* DTS V110 — Carte centrale : inscrits + places gratuites par département */
.department-availability-card{overflow:visible}
.department-card-body{display:grid;grid-template-columns:minmax(145px,.95fr) minmax(150px,1fr);gap:12px;align-items:center;padding:12px 0 8px}
.department-map-panel{display:grid;place-items:center;min-height:150px;padding:4px;border-radius:16px;background:linear-gradient(145deg,#fbfcff,#f1f4f9)}
.department-france-map{display:block;width:100%;max-width:205px;height:auto;overflow:visible}
.department-france-shape,.department-corsica-shape{fill:#e6ebf2;stroke:#c3cad6;stroke-width:2;stroke-linejoin:round}
.department-marker{cursor:pointer;stroke:#fff;stroke-width:2;transition:r .18s ease,stroke-width .18s ease,filter .18s ease}
.department-marker.is-available{fill:#2aa85b}
.department-marker.is-limited{fill:#f3a323}
.department-marker.is-full{fill:#dc3048}
.department-marker:hover,.department-marker:focus,.department-marker.is-selected{r:8;stroke-width:3;outline:none;filter:drop-shadow(0 2px 3px rgba(20,30,50,.25))}
.department-card-info{min-width:0}
.department-card-info select,.app-department-copy select{width:100%;min-height:34px;padding:7px 28px 7px 9px;border:1px solid #d9dee8;border-radius:10px;background:#fff;color:#252c45;font-size:.75rem;font-weight:700}
.department-card-info>strong{display:block;margin:9px 0 7px;color:#20263e;font-size:.92rem}
.department-card-info p{display:flex;justify-content:space-between;gap:8px;margin:5px 0;color:#656d7f;font-size:.75rem}
.department-card-info p span{min-width:0}
.department-card-info p b{flex:0 0 auto;color:#20263e;font-size:.79rem}
.department-card-info p b i{font-style:normal}
.department-status{display:inline-flex;align-items:center;gap:6px;margin-top:7px;padding:5px 8px;border-radius:999px;font-size:.7rem;font-weight:900;line-height:1}
.department-status.is-available{background:#e8f7ee;color:#23864b}
.department-status.is-limited{background:#fff2d9;color:#a96800}
.department-status.is-full{background:#fde8eb;color:#b51d34}
.department-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:5px 10px;padding-top:8px;border-top:1px solid #eceef3;color:#697184;font-size:.64rem}
.department-legend span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.department-legend i{width:8px;height:8px;border-radius:50%}
.department-legend i.is-available{background:#2aa85b}.department-legend i.is-limited{background:#f3a323}.department-legend i.is-full{background:#dc3048}
@media(max-width:980px){.department-availability-card{grid-row:1}.live-newcomers{grid-column:auto;grid-row:auto}.department-card-body{grid-template-columns:minmax(130px,.9fr) minmax(150px,1fr)}}
@media(max-width:650px){.department-card-body{grid-template-columns:1fr}.department-map-panel{min-height:170px}.department-france-map{max-width:230px}.department-card-info>strong{text-align:center}.department-card-info p{max-width:280px;margin:6px auto}.department-status{display:flex;width:max-content;margin:9px auto 0}}

/* DTS V111 — vraie carte départementale interactive */
.department-geo-fallback{opacity:.22}
.department-geo-path{cursor:pointer;stroke:#fff;stroke-width:.7;vector-effect:non-scaling-stroke;transition:filter .15s ease,opacity .15s ease,stroke-width .15s ease}
.department-geo-path.is-available{fill:#2aa85b}
.department-geo-path.is-limited{fill:#f3a323}
.department-geo-path.is-full{fill:#dc3048}
.department-geo-path:hover,.department-geo-path:focus,.department-geo-path.is-selected{filter:brightness(.92) drop-shadow(0 1px 1px rgba(20,30,50,.18));stroke:#19233f;stroke-width:1.5;outline:none}
.department-map-panel{min-height:165px}
.department-france-map{max-width:230px}
@media(max-width:650px){.department-france-map{max-width:270px}}

/* V112 — carte bureau agrandie + informations au clic */
.department-card-body--map-only{display:block;padding:8px 0 4px}
.department-map-panel--large{position:relative;min-height:250px;padding:0 4px;background:transparent}
.department-france-map--large{width:100%;max-width:355px;max-height:250px;margin:0 auto}
.department-map-tooltip{position:absolute;right:8px;top:12px;width:min(205px,48%);padding:12px 13px;background:#fff;border:1px solid #dfe4ec;border-radius:13px;box-shadow:0 8px 24px rgba(25,35,63,.16);z-index:3}
.department-map-tooltip[hidden]{display:none}
.department-map-tooltip__close{position:absolute;right:7px;top:5px;border:0;background:transparent;color:#7b8392;font-size:18px;line-height:1;cursor:pointer}
.department-map-tooltip>strong{display:block;padding-right:18px;margin-bottom:8px;color:#20263e;font-size:.86rem}
.department-map-tooltip p{display:flex;justify-content:space-between;gap:8px;margin:5px 0;color:#656d7f;font-size:.68rem}
.department-map-tooltip p b{flex:0 0 auto;color:#20263e;font-size:.72rem}
.department-map-tooltip p b i{font-style:normal}
.department-map-tooltip .department-status{margin-top:7px}
.department-availability-card .department-legend{padding-top:5px}
@media(max-width:980px){.department-france-map--large{max-width:330px}.department-map-tooltip{width:min(195px,50%)}}
@media(max-width:650px){.department-map-panel--large{min-height:225px}.department-france-map--large{max-width:310px}.department-map-tooltip{left:50%;right:auto;top:auto;bottom:8px;transform:translateX(-50%);width:min(250px,86%)}}


/* DTS V113 — la fiche département n'apparaît qu'après un clic. */
.department-map-tooltip[hidden]{display:none!important}
@media (min-width:701px){
  .department-map-panel--large{min-height:240px}
  .department-france-map--large{width:min(100%,390px);max-height:255px}
}

/* DTS V114 — PWA : recherche et bloc partage plus compacts. */
body.pwa-active .hero-home .postal-search-form{
  grid-template-columns:1fr 1fr!important;
  gap:7px!important;
  margin:8px 0 10px!important;
  padding:9px!important;
  border-radius:14px!important;
}
body.pwa-active .hero-home .postal-search-form>.field:first-child{grid-column:1/-1!important}
body.pwa-active .hero-home .postal-search-form input,
body.pwa-active .hero-home .postal-search-form select,
body.pwa-active .hero-home .postal-search-form button{
  min-height:42px!important;
  height:42px!important;
  padding-top:7px!important;
  padding-bottom:7px!important;
  font-size:.86rem!important;
}
body.pwa-active .hero-home .postal-search-form button{
  grid-column:1/-1!important;
  min-height:44px!important;
  height:44px!important;
}
body.pwa-active .app-home-actions{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:8px 10px!important;
  margin:9px 0 10px!important;
  padding:9px 11px!important;
  border-radius:13px!important;
}
body.pwa-active .app-home-actions>div:first-child{gap:1px!important;min-width:0!important}
body.pwa-active .app-home-actions strong{font-size:.84rem!important;line-height:1.15!important}
body.pwa-active .app-home-actions span{font-size:.7rem!important;line-height:1.18!important}
body.pwa-active .app-home-buttons{width:auto!important;gap:6px!important;flex-wrap:nowrap!important}
body.pwa-active .app-action-button{
  flex:0 0 auto!important;
  min-width:0!important;
  padding:8px 10px!important;
  border-radius:8px!important;
  font-size:.72rem!important;
  line-height:1!important;
  white-space:nowrap!important;
}
@media(max-width:390px){
  body.pwa-active .app-home-actions{grid-template-columns:1fr!important;text-align:center!important}
  body.pwa-active .app-home-actions>div:first-child{align-items:center!important}
  body.pwa-active .app-home-buttons{justify-content:center!important;width:100%!important}
}

/* DTS V115: correctif principal PWA intégré dans index.php pour contourner le cache applicatif. */



/* DTS V117 — finition PWA : recherche et bloc téléphone plus petits, sans toucher à l'ordre. */
@media (max-width:760px){
 body.pwa-active .hero-home .postal-search-form{
   gap:4px!important;margin:4px 0 5px!important;padding:5px!important;border-radius:10px!important
 }
 body.pwa-active .hero-home .postal-search-form input,
 body.pwa-active .hero-home .postal-search-form select{
   height:29px!important;min-height:29px!important;padding:2px 6px!important;font-size:.66rem!important;border-radius:8px!important
 }
 body.pwa-active .hero-home .postal-search-form button{
   height:31px!important;min-height:31px!important;padding:2px 6px!important;font-size:.69rem!important;border-radius:8px!important
 }
 body.pwa-active .app-home-actions{
   grid-template-columns:minmax(0,1fr) auto!important;
   gap:3px 5px!important;margin:4px 0 5px!important;padding:5px 7px!important;
   min-height:0!important;border-radius:10px!important;overflow:hidden!important
 }
 body.pwa-active .app-home-actions>div:first-child{min-width:0!important;overflow:hidden!important}
 body.pwa-active .app-home-actions strong{font-size:.64rem!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
 body.pwa-active .app-home-actions span{display:none!important}
 body.pwa-active .app-home-buttons{gap:3px!important;min-width:0!important}
 body.pwa-active .app-action-button{
   height:25px!important;min-height:25px!important;padding:3px 6px!important;
   border-radius:6px!important;font-size:.53rem!important;line-height:1!important
 }
}

/* DTS V118 — cache refresh; finition PWA principale intégrée dans index.php. */

/* DTS V119 — PWA : bandeau application sur une seule ligne. */
@media (max-width:760px){
 body.pwa-active .app-home-actions{
   display:flex!important;flex-direction:row!important;align-items:center!important;
   justify-content:space-between!important;flex-wrap:nowrap!important;
   gap:4px!important;margin:4px 0 5px!important;padding:5px 7px!important;
   min-height:34px!important;border-radius:10px!important;overflow:hidden!important;
 }
 body.pwa-active .app-home-actions>div:first-child{
   display:block!important;flex:1 1 auto!important;min-width:0!important;overflow:hidden!important;
 }
 body.pwa-active .app-home-actions strong{
   display:block!important;font-size:.52rem!important;line-height:1!important;
   white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
 }
 body.pwa-active .app-home-actions span{display:none!important}
 body.pwa-active .app-home-buttons{
   display:flex!important;flex:0 0 auto!important;width:auto!important;min-width:0!important;
   flex-wrap:nowrap!important;align-items:center!important;justify-content:flex-end!important;gap:3px!important;
 }
 body.pwa-active .app-action-button{
   flex:0 0 auto!important;min-width:0!important;width:auto!important;
   height:24px!important;min-height:24px!important;padding:2px 5px!important;
   border-radius:6px!important;font-size:.43rem!important;line-height:1!important;white-space:nowrap!important;
 }
}

/* DTS V115 — Accueil : 3 cartes principales de taille égale sur ordinateur */
@media (min-width: 981px) {
  .live-showcase {
    padding: 24px 20px 14px;
  }

  .live-showcase-inner {
    width: min(1460px, 100%);
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: stretch;
    gap: 14px;
  }

  .live-column {
    min-height: 390px;
    height: 390px;
    padding: 18px;
    display: flex;
    flex-direction: column;
  }

  .live-slides {
    flex: 1 1 auto;
    min-height: 0;
  }

  .live-empty {
    height: 100%;
    min-height: 280px;
    margin: 0;
    display: grid;
    place-items: center;
    text-align: center;
    color: #7a8090;
  }

  .department-card-body--map-only {
    flex: 1 1 auto;
    display: grid;
    place-items: center;
    min-height: 0;
    padding: 4px 0;
  }

  .department-map-panel--large {
    width: 100%;
    min-height: 0;
    height: 286px;
    display: grid;
    place-items: center;
  }

  .department-france-map--large {
    width: 100%;
    max-width: 420px;
    max-height: 286px;
  }

  .live-newcomers .live-slides {
    display: flex;
  }

  .newcomer-live-card {
    width: 100%;
    height: 100%;
    min-height: 0;
    padding-top: 12px;
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
  }

  .newcomer-photo {
    flex: 0 0 180px;
    width: 100%;
    height: 180px;
    border-radius: 14px;
  }

  .newcomer-live-card > div {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
  }

  .newcomer-live-card > div > a {
    margin-top: auto;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 40px;
    border-radius: 9px;
    background: #ec0016;
    color: #fff;
  }

  .request-live-card {
    height: 100%;
    min-height: 0;
  }
}
\n\n/* DTS V116 — carte France agrandie + numéros des départements */\n.department-geo-label{\n  fill:#fff;\n  font-size:7px;\n  font-weight:900;\n  font-family:Arial,sans-serif;\n  pointer-events:auto;\n  cursor:pointer;\n  paint-order:stroke;\n  stroke:rgba(0,0,0,.12);\n  stroke-width:.45px;\n  stroke-linejoin:round;\n}\n@media (min-width:981px){\n  .department-card-body--map-only{padding:0!important}\n  .department-map-panel--large{height:305px!important;overflow:visible}\n  .department-france-map--large{width:100%!important;max-width:465px!important;max-height:305px!important;transform:scale(1.12);transform-origin:center center}\n  .department-availability-card .department-legend{position:relative;z-index:2;background:#fff}\n}\n