
/* __DESIGN_SITE__ */
/* socle filtres (ajouté par design_site.py) */
.ds-hide { display: none !important; }
body[data-ds-filtres="aucun"] .filters { display: none !important; }
body[data-ds-filtres="sans-genre"] .filters .filter-btn[data-filter="type"] { display: none !important; }
body[data-ds-filtres="sans-age"] .filters .filter-btn[data-filter="age"] { display: none !important; }
body[data-ds-filtres="ligne"] .filters { display: flex !important; flex-wrap: nowrap !important; overflow-x: auto; gap: 8px; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: 4px; }
body[data-ds-filtres="ligne"] .filters::-webkit-scrollbar { display: none; }
body[data-ds-filtres="ligne"] .filters .filter-btn { flex: 0 0 auto; white-space: nowrap; }
.filters select.ds-fsel { appearance: none; -webkit-appearance: none; font: inherit; cursor: pointer; padding-right: 2.1em; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='currentColor' stroke-width='2'/></svg>"); background-repeat: no-repeat; background-position: right .7em center; background-size: 12px 8px; }
.filters .ds-fgroup { display: contents; }
/* Next : barre React (div.shadow-sm > div.scrollbar-hide > .form-group > select ×2 + bouton Recherche) */
body[data-ds-filtres="aucun"] div.rounded-lg.shadow-sm:has(> div.scrollbar-hide > div.form-group > select) { display: none !important; }
body[data-ds-filtres="sans-genre"] div.scrollbar-hide > div.form-group:first-child:has(> select) { display: none !important; }
body[data-ds-filtres="sans-tri"] div.scrollbar-hide > div.form-group:nth-child(2):has(> select) { display: none !important; }
body[data-ds-filtres="sans-recherche"] div.scrollbar-hide > div.relative.flex-shrink-0:has(> button) { display: none !important; }
/* Next `chips` : pastilles d'âge construites par design_filtres.js (le select natif est caché) */
.ds-fnext { display: flex; gap: 8px; flex-wrap: nowrap; }
.ds-fnext .ds-fchip { flex: 0 0 auto; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--secondary-color, #999); background: transparent; color: inherit; font: inherit; font-size: .85rem; cursor: pointer; white-space: nowrap; }
.ds-fnext .ds-fchip.active { background: var(--secondary-color, #18181b); color: #fff; border-color: transparent; }

/* ===================================================================
   sex-treffs-privat.de — direction : vert forêt + doré
   Header ombré (profondeur par ombre portée) + footer en dégradé
   vertical. Ne touche qu'à <header> et <footer> et à leurs enfants.
   Les couleurs sont fixes (vert forêt / doré) donc identiques en
   thème clair et sombre du système : pas de bloc dark: séparé requis,
   la spécificité (header.sticky / footer.border-t) l'emporte déjà
   sur les variantes Tailwind normales et dark: du gabarit.
   =================================================================== */

header.sticky,
footer.border-t {
  --stp-vert-haut: #1c4a34;
  --stp-vert-bas: #0c2118;
  --stp-or: #c99a3d;
  --stp-or-clair: #f0cf7a;
  --stp-creme: #f3eeda;
}

/* --------------------------- EN-TÊTE --------------------------- */

header.sticky {
  background: linear-gradient(180deg, var(--stp-vert-haut) 0%, var(--stp-vert-bas) 100%) !important;
  border-bottom: none !important;
  /* "ombré" : profondeur par ombre portée + liseré doré fin */
  box-shadow: 0 10px 26px -14px rgba(0, 0, 0, .6), 0 1px 0 rgba(201, 154, 61, .35);
  animation: stp-entree .6s ease both;
}

/* logo : couleur imposée en inline par le gabarit, à dépasser */
header.sticky a[href="/"] {
  color: var(--stp-or) !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .45);
}
@media (min-width: 768px) {
  header.sticky a[href="/"] { letter-spacing: .03em; }
}

/* liens, boutons, icônes du header : cohérence sur fond sombre */
header.sticky nav,
header.sticky button,
header.sticky a:not([href="/"]),
header.sticky span {
  color: var(--stp-creme);
}

header.sticky button {
  border-radius: 8px;
  padding: 10px;
  transition: color .25s ease, transform .2s ease, background-color .25s ease;
}
header.sticky button:hover,
header.sticky a:not([href="/"]):hover {
  color: var(--stp-or-clair);
  background-color: rgba(201, 154, 61, .14);
  transform: translateY(-1px);
}

/* soulignement doré qui grandit sous le déclencheur de nav */
header.sticky nav > div {
  position: relative;
}
header.sticky nav > div::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: -2px;
  height: 2px;
  background: linear-gradient(90deg, var(--stp-or), var(--stp-or-clair));
  transition: right .35s ease;
}
header.sticky nav > div:hover::after {
  right: 0;
}

/* --------------------------- PIED DE PAGE --------------------------- */

footer.border-t {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, var(--stp-vert-haut) 0%, var(--stp-vert-bas) 65%, #071510 100%) !important;
  border-top: none !important;
}

/* motif doré qui dérive lentement, derrière le contenu */
footer.border-t::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle, rgba(201, 154, 61, .22), transparent 62%);
  background-size: 170% 170%;
  background-repeat: no-repeat;
  animation: stp-derive 22s ease-in-out infinite alternate;
  pointer-events: none;
  z-index: 0;
}
footer.border-t > .container {
  position: relative;
  z-index: 1;
}

footer.border-t h3 {
  color: var(--stp-or) !important;
}

footer.border-t p,
footer.border-t li,
footer.border-t span {
  color: #cfd9cf;
}

footer.border-t a {
  color: #e7e0cd;
  transition: color .2s ease;
}
footer.border-t a:hover {
  color: var(--stp-or-clair);
}

/* liseré interne (bandeau légal) recoloré, sans !important : spécificité suffisante */
footer.border-t > .container > .border-t {
  border-top-color: rgba(201, 154, 61, .3);
}

/* --------------------------- ANIMATIONS --------------------------- */

@keyframes stp-entree {
  from { opacity: 0; transform: translateY(-10px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes stp-derive {
  from { background-position: 0% 0%; }
  to   { background-position: 100% 45%; }
}

@media (prefers-reduced-motion: reduce) {
  header.sticky,
  header.sticky button,
  header.sticky a,
  footer.border-t::before,
  footer.border-t a {
    animation: none !important;
    transition: none !important;
  }
}

/* ===================================================================
   THÈME PROFOND — le registre vert forêt + doré descend dans les pages
   (cartes, filtres, CTA, FAQ, retour en haut, pop-ups) + bloc de
   réassurance + menu mobile. Couleurs reprises telles quelles :
   vert haut #1c4a34, vert bas #0c2118, or #c99a3d, or clair #f0cf7a,
   crème #f3eeda. Écrites en dur (hors de la portée header/footer des
   variables --stp-*).
   =================================================================== */

/* --------------------------- CARTES PROFIL --------------------------- */

.bg-zinc-50.rounded-lg.p-2.cursor-pointer {
  background: #f3eeda !important;
  border: 1px solid rgba(28, 74, 52, .18) !important;
  border-radius: 14px !important;
  box-shadow: 0 2px 10px rgba(12, 33, 24, .1);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.bg-zinc-50.rounded-lg.p-2.cursor-pointer:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 32px -14px rgba(12, 33, 24, .4);
  border-color: #c99a3d !important;
}
.bg-zinc-50.rounded-lg.p-2.cursor-pointer img.rounded-lg {
  border-radius: 10px !important;
}
.bg-zinc-50.rounded-lg.p-2.cursor-pointer .absolute.top-2.right-2 {
  background: #1c4a34 !important;
  color: #f0cf7a !important;
  border: 1px solid rgba(201, 154, 61, .5);
}
.bg-zinc-50.rounded-lg.p-2.cursor-pointer h3 {
  color: #1c4a34 !important;
}
.bg-zinc-50.rounded-lg.p-2.cursor-pointer p.text-zinc-500 {
  color: #7c8f7f !important;
}

/* --------------------------- FILTRES / TRI --------------------------- */

.rounded-lg.shadow-sm.border-zinc-200 {
  background: #f3eeda !important;
  border-color: rgba(28, 74, 52, .25) !important;
}
.rounded-lg.shadow-sm.border-zinc-200 select,
.rounded-lg.shadow-sm.border-zinc-200 button {
  background: #fff !important;
  border-color: rgba(28, 74, 52, .3) !important;
  color: #1c4a34 !important;
  border-radius: 10px !important;
  --tw-ring-color: #c99a3d !important;
}
.rounded-lg.shadow-sm.border-zinc-200 button:hover {
  border-color: #c99a3d !important;
  color: #0c2118 !important;
  background: rgba(201, 154, 61, .1) !important;
}

/* -------------------- BANDEAU « Nach Bundesland » + défilement -------------------- */

section#departements input[type="text"] {
  border-color: rgba(28, 74, 52, .3) !important;
  --tw-ring-color: #c99a3d !important;
}
section#departements input[type="text"]:focus {
  border-color: #c99a3d !important;
}
.w-full.bg-zinc-100 {
  background: #f3eeda !important;
}
.w-full.bg-zinc-100 a.rounded-full {
  background: #fff !important;
  color: #1c4a34 !important;
  border: 1px solid rgba(28, 74, 52, .2) !important;
  --hover-bg: rgba(201, 154, 61, .18) !important;
  --hover-text: #0c2118 !important;
}
.w-full.bg-zinc-100 a.rounded-full:hover {
  background: rgba(201, 154, 61, .18) !important;
  color: #0c2118 !important;
  border-color: #c99a3d !important;
}
.w-full.bg-zinc-100 .from-zinc-100,
.w-full.bg-zinc-100 .to-transparent {
  --tw-gradient-from: #f3eeda !important;
  --tw-gradient-to: rgb(243 238 218 / 0) !important;
}

/* --------------------------- CTA MILIEU DE PAGE --------------------------- */

section.rounded-2xl.shadow-lg.text-center h2 {
  color: #0c2118 !important;
}
section.rounded-2xl.shadow-lg.text-center button {
  background-color: #c99a3d !important;
  background-image: linear-gradient(135deg, #c99a3d, #f0cf7a) !important;
  color: #0c2118 !important;
  border-radius: 10px !important;
  box-shadow: 0 12px 26px -12px rgba(12, 33, 24, .55);
  transition: filter .2s ease, transform .2s ease;
}
section.rounded-2xl.shadow-lg.text-center button:hover {
  filter: brightness(1.06);
  transform: translateY(-1px);
}

/* --------------------------- FAQ / ACCORDÉON --------------------------- */

section:has(> div.space-y-0) h2 {
  color: #1c4a34 !important;
}
section:has(> div.space-y-0) .border-b {
  border-color: rgba(28, 74, 52, .16) !important;
}
section:has(> div.space-y-0) h3 {
  color: #0c2118 !important;
}
section:has(> div.space-y-0) button:hover {
  background-color: rgba(201, 154, 61, .1) !important;
}

/* --------------------------- RETOUR EN HAUT --------------------------- */

button.fixed.bottom-6.right-6 {
  background-color: #1c4a34 !important;
  color: #f0cf7a !important;
  border: 1px solid rgba(201, 154, 61, .45) !important;
  box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .5) !important;
  transition: background-color .2s ease, transform .2s ease;
}
button.fixed.bottom-6.right-6:hover {
  background-color: #0c2118 !important;
  transform: translateY(-2px);
}

/* --------------------------- POP-UPS (age gate / inscription) --------------------------- */
/* Couleurs, bordures, rayons seulement — jamais display/position/transform/overflow. */

.fixed.inset-0 {
  background-color: rgba(7, 21, 16, .82) !important;
}
.fixed.inset-0 .rounded-2xl,
.fixed.inset-0 .rounded-xl {
  border: 1px solid rgba(201, 154, 61, .35) !important;
  box-shadow: 0 20px 50px -20px rgba(0, 0, 0, .6) !important;
}
.fixed.inset-0 button[class*="bg-"] {
  background-color: #c99a3d !important;
  color: #0c2118 !important;
}
.prelinker-embed {
  border: 1px solid rgba(201, 154, 61, .3);
  border-radius: 14px;
  overflow: hidden;
}

/* ===================================================================
   BLOC DE RÉASSURANCE — socle .ds-* (copié tel quel depuis
   app/design_recettes_v3.css) puis habillage vert forêt + doré.
   =================================================================== */

.ds-bloc { margin: 24px 0; padding: 24px; border-radius: 16px; }
.ds-titre { margin: 0 0 6px; font-size: 1.35rem; line-height: 1.25; }
.ds-sous { margin: 0 0 16px; opacity: .85; }
.ds-liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; }
.ds-item { display: grid; grid-template-columns: 28px 1fr; grid-template-rows: auto auto; column-gap: 12px; align-items: start; }
.ds-ico { grid-row: 1 / 3; width: 28px; height: 28px; }
.ds-ico svg { width: 28px; height: 28px; display: block; }
.ds-item-t { display: block; font-weight: 700; }
.ds-item-p { display: block; font-size: .93rem; opacity: .85; }

.ds-bloc {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #1c4a34 0%, #0c2118 100%);
  border-left: 4px solid #c99a3d;
  box-shadow: 0 10px 26px -16px rgba(0, 0, 0, .55);
  color: #f3eeda;
  animation: stp-entree .6s ease both;
}
.ds-bloc::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle, rgba(201, 154, 61, .18), transparent 62%);
  background-size: 170% 170%;
  background-repeat: no-repeat;
  animation: stp-derive 24s ease-in-out infinite alternate;
  pointer-events: none;
}
.ds-titre,
.ds-sous,
.ds-liste {
  position: relative;
  z-index: 1;
}
.ds-titre {
  color: #f0cf7a;
}
.ds-sous {
  color: #d9e3d9;
}
.ds-ico {
  color: #c99a3d;
  background: rgba(240, 207, 122, .12);
  border: 1px solid rgba(201, 154, 61, .4);
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 4px;
  box-sizing: border-box;
}
.ds-item-t {
  color: #f3eeda;
}
.ds-item-p {
  color: #cfd9cf;
}

@media (prefers-reduced-motion: reduce) {
  .ds-bloc,
  .ds-bloc::before {
    animation: none !important;
  }
  .bg-zinc-50.rounded-lg.p-2.cursor-pointer,
  section.rounded-2xl.shadow-lg.text-center button,
  button.fixed.bottom-6.right-6 {
    transition: none !important;
  }
  .bg-zinc-50.rounded-lg.p-2.cursor-pointer:hover,
  section.rounded-2xl.shadow-lg.text-center button:hover,
  button.fixed.bottom-6.right-6:hover {
    transform: none !important;
  }
}

/* ===================================================================
   MENU MOBILE (socle « menu mobile Next » copié depuis
   app/design_recettes_v3.css — mécanisme intouché, habillage vert
   forêt + doré ci-dessous).
   =================================================================== */

@media (max-width: 767px) {
  .ds-mburger { position: fixed; top: 12px; left: 10px; z-index: 60; display: flex; flex-direction: column; justify-content: center; gap: 4px; width: 40px; height: 40px; padding: 0 10px; border-radius: 10px; background: #18181b; color: #fff; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,.2); }
  .ds-mburger span { display: block; height: 2px; border-radius: 2px; background: currentColor; }
  .ds-moverlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 65; }
  .ds-mdrawer { position: fixed; top: 0; left: 0; bottom: 0; width: min(86vw, 340px); z-index: 70; overflow-y: auto; background: #fff; color: #18181b; transform: translateX(-105%); transition: transform .25s ease; box-shadow: 8px 0 30px rgba(0,0,0,.3); padding-bottom: 24px; }
  body:has(#ds-mcb:checked) .ds-moverlay { display: block; }
  body:has(#ds-mcb:checked) .ds-mdrawer { transform: none; }
  body:has(#ds-mcb:checked) { overflow: hidden; }
  .ds-mhead { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid rgba(0,0,0,.1); font-weight: 700; font-size: 1.05rem; }
  .ds-mclose { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; font-size: 26px; line-height: 1; cursor: pointer; background: rgba(0,0,0,.06); }
  .ds-msec { padding: 12px 16px 4px; }
  .ds-msec-t { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; opacity: .7; margin-bottom: 8px; }
  .ds-mlinks { display: flex; flex-wrap: wrap; gap: 8px; }
  .ds-mlink { display: inline-block; padding: 7px 12px; border-radius: 999px; border: 1px solid rgba(0,0,0,.15); background: rgba(0,0,0,.03); color: inherit; text-decoration: none; font-size: .9rem; line-height: 1.2; }
  .ds-mnav .ds-mlink { font-weight: 600; }
  .ds-mfoot { padding: 18px 16px 0; }
  .ds-mcta { display: block; width: 100%; min-height: 48px; border: 0; border-radius: 12px; background: var(--secondary-color, #18181b); color: #fff; font-weight: 700; font-size: 1rem; cursor: pointer; }
}
@media (min-width: 768px) { .ds-mburger, .ds-mdrawer, .ds-moverlay { display: none !important; } }
@media (prefers-reduced-motion: reduce) { .ds-mdrawer { transition: none; } }

/* habillage vert forêt + doré du tiroir mobile (mêmes couleurs que le header/footer) */
@media (max-width: 767px) {
  .ds-mburger {
    background: linear-gradient(180deg, #1c4a34 0%, #0c2118 100%) !important;
    color: #f0cf7a !important;
    border: 1px solid rgba(201, 154, 61, .45);
    box-shadow: 0 2px 10px rgba(0, 0, 0, .35) !important;
  }
  .ds-moverlay {
    background: rgba(7, 21, 16, .65) !important;
  }
  .ds-mdrawer {
    background: linear-gradient(180deg, #1c4a34 0%, #0c2118 100%) !important;
    color: #f3eeda !important;
    border-right: 1px solid rgba(201, 154, 61, .35);
  }
  .ds-mhead {
    border-bottom-color: rgba(201, 154, 61, .3) !important;
    color: #f0cf7a !important;
  }
  .ds-mclose {
    background: rgba(240, 207, 122, .14) !important;
    color: #f0cf7a !important;
  }
  .ds-msec-t {
    color: #c99a3d !important;
    opacity: 1 !important;
  }
  .ds-mlink {
    background: rgba(240, 207, 122, .08) !important;
    border-color: rgba(201, 154, 61, .35) !important;
    color: #e7e0cd !important;
  }
  .ds-mlink:active,
  .ds-mlink:hover {
    background: rgba(201, 154, 61, .22) !important;
    color: #f0cf7a !important;
  }
  .ds-mfoot {
    border-top: 1px solid rgba(201, 154, 61, .25);
    padding-top: 16px !important;
  }
  .ds-mcta {
    background: linear-gradient(135deg, #c99a3d, #f0cf7a) !important;
    color: #0c2118 !important;
  }
}

/* contraste (audit 18/09) */
div.flex-shrink-0.w-40.w-40.w-40.w-40.w-40 p.text-xs.text-xs { color: #4f6353 !important; }

/* __CONTRASTE_V1 */
/* contraste mesuré < 2.4 (contraste_audit.mjs) : couleur du texte forcée lisible */
@media (min-width: 900px) { div.jsx-4fb23789b5a36db8.absolute, div.jsx-4fb23789b5a36db8.absolute a, div.jsx-4fb23789b5a36db8.absolute span { color: #ffffff !important; } }
@media (max-width: 899px) { div.jsx-4fb23789b5a36db8.absolute, div.jsx-4fb23789b5a36db8.absolute a, div.jsx-4fb23789b5a36db8.absolute span { color: #151515 !important; } }
/* __END_CONTRASTE_V1 */

/* __CONTRASTE_V2 */
/* contraste mesuré < 2.4 (contraste_audit.mjs) : couleur du texte forcée lisible */
@media (min-width: 900px) { div.jsx-4fb23789b5a36db8.absolute { background: rgba(18,18,18,.62) !important; color: #fff !important; text-shadow: 0 1px 2px rgba(0,0,0,.9); border-radius: 999px; padding: .1em .5em; } }
@media (max-width: 899px) { div.jsx-4fb23789b5a36db8.absolute { background: rgba(18,18,18,.62) !important; color: #fff !important; text-shadow: 0 1px 2px rgba(0,0,0,.9); border-radius: 999px; padding: .1em .5em; } }
/* __END_CONTRASTE_V2 */

/* garde menu Next (design_site.py) */
.ds-mdrawer, .ds-mburger, .ds-moverlay { position: fixed !important; }

/* garde-fou design_site.py (Next, 17/09) : le logo mobile est un <a> absolu centré ; un nom de site
   allemand long (« Kostenlose Sexdates in Deutschland ») débordait ou s'empilait sur 3 lignes
   par-dessus les icônes (capture du 17/09). Une ligne, ellipse, place réservée aux boutons. */
@media (max-width: 767px) {
  header .md\:hidden a[href="/"] {
    max-width: 56% !important; white-space: nowrap !important; overflow: hidden !important;
    text-overflow: ellipsis !important; font-size: clamp(.95rem, 4.4vw, 1.25rem) !important; line-height: 1.2 !important;
    position: absolute !important; /* lot 21 : un `position: relative` posé pour un ::after l'avait mis dans le flux → bouton par-dessus */
  }
  header nav.hidden { display: none !important; }
}
/* garde-fou 18/09 : la carte des pages ville tombait en repli avec un texte FRANÇAIS (« Carte indisponible (fallback) ») —
   corrigé à la source (VilleMap.tsx), masqué ici tant que le dist n'est pas reconstruit. */
main.space-y-12 > div.rounded-2xl.mb-8 > div.mb-3.text-sm.text-zinc-600 { display: none !important; }
@media (max-width: 767px) { /* lot 21 : `display:flex` posé sur nav.hidden.md:flex la faisait sortir sur mobile, par-dessus le logo */
  /* 19/09 (capture de Lucas, pop-up profil mobile) : le bouton « Registrieren… » remonté sous la photo touchait le
     titre « Bio » (bio.top == cta.bottom, toutes variantes pm-v) ; corrigé à la source (popup_skins.css / globals.css),
     posé ici pour les dists déjà construits. */
  .pm-modal .pm-cta { margin-bottom: .9rem !important; }
}
/* __END_DESIGN_SITE__ */
