/* ======================================================
   CARESCO — Cabinet Infirmier Landing Page
   Palette sobre : bleu marine profond
   ====================================================== */

:root {
  /* Couleurs principales — palette bleu marine */
  --c-primary: #2c3e6b;
  --c-primary-dark: #1e2d4f;
  --c-primary-light: #eef1f7;
  --c-primary-10: rgba(44,62,107,.08);
  --c-primary-20: rgba(44,62,107,.16);
  --c-accent: #6b8299;
  --c-accent-light: #eff2f5;
  --c-accent-10: rgba(107,130,153,.10);
  /* Textes */
  --c-text: #1e293b;
  --c-text-secondary: #4b5563;
  --c-text-muted: #9ca3af;
  /* Fonds */
  --c-bg: #ffffff;
  --c-bg-alt: #f9fafb;
  --c-bg-dark: #111827;
  --c-border: #e5e7eb;
  /* Alerte */
  --c-red: #b91c1c;
  --c-red-bg: #fef2f2;
  --c-red-border: #fecaca;
  /* Ombres */
  --shadow-sm: 0 1px 2px rgba(0,0,0,.04);
  --shadow-md: 0 4px 14px rgba(0,0,0,.06);
  --shadow-lg: 0 10px 32px rgba(0,0,0,.08);
  --shadow-xl: 0 16px 48px rgba(0,0,0,.10);
  /* Rayons */
  --radius: 10px;
  --radius-lg: 16px;
  --radius-full: 100px;
  /* Transition */
  --transition: .25s cubic-bezier(.4,0,.2,1);
  /* Fonts */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display: 'Playfair Display', Georgia, serif;
}

/* ── Reset ───────────────────────────────────────────── */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:100px; }
body { font-family:var(--font-sans); color:var(--c-text); background:var(--c-bg); line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; }
img { max-width:100%; display:block; }
a { text-decoration:none; color:inherit; }
.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; }
.sr-only:focus { position:static; width:auto; height:auto; padding:12px 24px; margin:0; overflow:visible; clip:auto; white-space:normal; background:var(--c-primary); color:#fff; z-index:9999; }

/* ── Layout ──────────────────────────────────────────── */
.container { max-width:1140px; margin:0 auto; padding:0 24px; }
.section { padding:96px 0; }
.section--alt { background:var(--c-bg-alt); }

.section__header { text-align:center; margin-bottom:52px; }
.section__title { font-family:var(--font-display); font-size:clamp(1.85rem,3.8vw,2.5rem); font-weight:700; line-height:1.18; color:var(--c-text); margin-bottom:14px; }
.section__title em { font-style:italic; color:var(--c-primary); }
.section__subtitle { color:var(--c-text-secondary); font-size:1rem; max-width:520px; margin:0 auto; }

/* ── Chips / Tags / Badges ───────────────────────────── */
.chip { display:inline-flex; align-items:center; gap:6px; padding:6px 14px; border-radius:var(--radius-full); font-size:.78rem; font-weight:600; background:var(--c-primary-10); color:var(--c-primary); border:1px solid var(--c-primary-20); }
.chip--small { font-size:.68rem; padding:4px 12px; text-transform:uppercase; letter-spacing:.08em; }
.chip--muted { font-size:.7rem; padding:5px 14px; font-weight:500; background:rgba(255,255,255,.55); color:var(--c-text-secondary); border:1px solid var(--c-border); backdrop-filter:blur(4px); }
.badge { display:inline-block; padding:4px 11px; border-radius:var(--radius-full); font-size:.75rem; font-weight:500; background:var(--c-primary-10); color:var(--c-primary); }
.tag { display:inline-block; padding:3px 10px; border-radius:var(--radius-full); font-size:.72rem; font-weight:600; }
.tag--teal { background:var(--c-accent-10); color:var(--c-accent); }

/* ── Buttons ─────────────────────────────────────────── */
.btn { display:inline-flex; align-items:center; gap:8px; padding:12px 26px; border-radius:var(--radius-full); font-size:.85rem; font-weight:600; font-family:var(--font-sans); border:1px solid var(--c-text); background:#fff; color:var(--c-text); cursor:pointer; transition:all var(--transition); }
.btn:hover { background:var(--c-text); color:#fff; transform:translateY(-1px); box-shadow:0 5px 16px rgba(0,0,0,.12); }
.btn__arrow { transition:transform .2s ease; }
.btn:hover .btn__arrow { transform:translateX(3px); }
.btn--primary { background:#fff; color:var(--c-text); border-color:var(--c-text); }
.btn--primary:hover { background:var(--c-text); color:#fff; }
.btn--outline { background:#fff; color:var(--c-text); border-color:var(--c-text); }
.btn--outline:hover { background:var(--c-text); color:#fff; }
.btn--white { background:#fff; color:var(--c-text); border-color:#fff; box-shadow:0 3px 12px rgba(0,0,0,.1); }
.btn--white:hover { background:#fff; color:var(--c-primary); transform:translateY(-1px); box-shadow:0 5px 16px rgba(0,0,0,.15); }

/* ======================================================
   NAVBAR — White pill, logo left, links center, CTA right
   ====================================================== */
.nav { position:fixed; top:0; left:0; right:0; z-index:100; padding:12px 20px; transition:all var(--transition); }
.nav__bar { max-width:1100px; margin:0 auto; display:flex; align-items:center; height:62px; padding:0 20px 0 12px; background:rgba(255,255,255,.92); backdrop-filter:blur(14px); border-radius:var(--radius-full); border:1px solid rgba(255,255,255,.6); box-shadow:0 2px 16px rgba(0,0,0,.05); }
.nav.scrolled .nav__bar { box-shadow:0 3px 20px rgba(0,0,0,.08); background:rgba(255,255,255,.96); }

.nav__logo { display:flex; align-items:center; gap:10px; font-weight:800; font-size:1.25rem; color:var(--c-primary); flex-shrink:0; }
.nav__logo-img { width:54px; height:54px; object-fit:contain; }

.nav__center { flex:1; display:flex; justify-content:center; }
.nav__links { display:flex; align-items:center; gap:2px; }
.nav__link { padding:7px 14px; font-size:.84rem; font-weight:500; color:var(--c-text-secondary); border-radius:8px; transition:all var(--transition); }
.nav__link:hover { color:var(--c-primary); background:var(--c-primary-10); }

.nav__cta { display:inline-flex; align-items:center; gap:6px; padding:9px 20px; border-radius:var(--radius); font-size:.82rem; font-weight:600; background:var(--c-text); color:#fff; flex-shrink:0; transition:all var(--transition); }
.nav__cta:hover { background:#000; }

.nav__toggle { display:none; background:none; border:none; cursor:pointer; padding:6px; flex-direction:column; gap:5px; }
.nav__toggle span { display:block; width:22px; height:2px; background:var(--c-text); border-radius:2px; transition:all var(--transition); }

.nav__dropdown { display:none; }

/* ======================================================
   HERO
   ====================================================== */
.hero { position:relative; padding:140px 0 72px; background:linear-gradient(165deg, var(--c-primary-light) 0%, #ffffff 35%, var(--c-accent-light) 100%); overflow:hidden; }
.hero__bg { position:absolute; inset:0; pointer-events:none; background:radial-gradient(ellipse 500px 400px at 75% 25%, rgba(59,107,124,.04), transparent), radial-gradient(ellipse 350px 350px at 15% 75%, rgba(90,143,133,.04), transparent); }
.hero__grid { display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:end; position:relative; z-index:1; }
.hero__title { font-family:var(--font-display); font-size:clamp(2.4rem,5vw,3.6rem); font-weight:800; line-height:1.08; color:var(--c-text); margin:14px 0 8px; }
.hero__title em { font-style:italic; color:var(--c-primary); }
.hero__role { font-size:1.05rem; font-weight:500; color:var(--c-primary); margin-bottom:14px; }
.hero__desc { font-size:1rem; color:var(--c-text-secondary); line-height:1.7; margin-bottom:28px; max-width:480px; }
.hero__actions { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:24px; }
.hero__badges { display:flex; gap:8px; flex-wrap:wrap; }

.hero__visual { display:flex; justify-content:center; align-items:flex-end; }
.hero__card { display:inline-block; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-xl); border:4px solid #fff; }
.hero__photo { max-height:420px; width:auto; object-fit:cover; display:block; }

/* ======================================================
   EXPERTISES
   ====================================================== */
.expertises__grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(250px, 1fr)); gap:10px; }
.expertise { display:flex; align-items:center; gap:12px; padding:14px 18px; border-radius:var(--radius); background:var(--c-bg); border:1px solid var(--c-border); transition:all var(--transition); }
.expertise:hover { border-color:var(--c-primary-20); box-shadow:var(--shadow-md); transform:translateY(-1px); }
.expertise svg { color:var(--c-primary); flex-shrink:0; opacity:.7; }
.expertise span { font-size:.88rem; font-weight:500; color:var(--c-text); }
.expertise--extra { display:flex; }
.expertises__toggle { display:none; align-items:center; gap:6px; margin:16px auto 0; padding:8px 18px; border:1px solid var(--c-border); border-radius:var(--radius); background:var(--c-bg); color:var(--c-primary); font-size:.82rem; font-weight:600; cursor:pointer; transition:all var(--transition); }
.expertises__toggle:hover { background:var(--c-primary-10); border-color:var(--c-primary); }
.expertises__toggle svg { transition:transform .2s; }
.expertises__grid.expanded ~ .expertises__toggle svg { transform:rotate(180deg); }
.expertises__note { text-align:center; color:var(--c-text-muted); font-style:italic; font-size:.88rem; margin-top:24px; }

/* ======================================================
   HORAIRES
   ====================================================== */
.horaires__grid { display:grid; grid-template-columns:1fr 1fr; gap:28px; max-width:920px; margin:0 auto; }
.horaires__table { background:var(--c-bg); border-radius:var(--radius-lg); border:1px solid var(--c-border); overflow:hidden; }
.horaires__table-header { display:flex; align-items:center; gap:10px; padding:16px 22px; font-weight:700; font-size:.9rem; background:var(--c-primary-10); color:var(--c-primary); border-bottom:1px solid var(--c-border); }
.horaires__row { display:flex; justify-content:space-between; align-items:center; padding:12px 22px; border-bottom:1px solid var(--c-border); font-size:.9rem; transition:background var(--transition); }
.horaires__row:last-child { border-bottom:none; }
.horaires__row:hover { background:var(--c-primary-light); }
.horaires__row span:first-child { font-weight:500; }
.horaires__time { font-weight:700; color:var(--c-primary); }

.horaires__side { display:flex; flex-direction:column; gap:14px; }
.horaires__urgence { display:flex; gap:12px; align-items:flex-start; padding:18px; border-radius:var(--radius-lg); background:var(--c-red-bg); border:1px solid var(--c-red-border); }
.horaires__urgence-icon { color:var(--c-red); flex-shrink:0; margin-top:2px; }
.horaires__urgence strong { display:block; color:var(--c-red); font-size:.9rem; margin-bottom:2px; }
.horaires__urgence p { font-size:.82rem; color:#7f1d1d; }
.horaires__rdv { flex:1; padding:22px; border-radius:var(--radius-lg); background:var(--c-bg); border:1px solid var(--c-border); }
.horaires__rdv h3 { font-size:.95rem; font-weight:700; margin-bottom:6px; }
.horaires__rdv p { font-size:.88rem; color:var(--c-text-secondary); margin-bottom:16px; line-height:1.6; }
.horaires__tip { padding:16px; border-radius:var(--radius-lg); background:var(--c-primary-10); font-size:.82rem; color:var(--c-primary-dark); line-height:1.6; }
.horaires__tip strong { color:var(--c-primary); }

/* ======================================================
   TARIFS
   ====================================================== */
.tarifs__wrapper { display:grid; grid-template-columns:1fr 1fr; gap:20px; max-width:780px; margin:0 auto 20px; }
.tarifs__block { border-radius:var(--radius-lg); overflow:hidden; background:var(--c-bg); border:1px solid var(--c-border); }
.tarifs__block--accent .tarifs__block-header { background:var(--c-accent-10); color:var(--c-accent); }
.tarifs__block--accent .tarifs__price { color:var(--c-accent); }
.tarifs__block-header { padding:14px 22px; font-weight:700; font-size:.9rem; background:var(--c-primary-10); color:var(--c-primary); border-bottom:1px solid var(--c-border); }
.tarifs__row { display:flex; justify-content:space-between; align-items:center; padding:12px 22px; border-bottom:1px solid var(--c-border); font-size:.9rem; }
.tarifs__row:last-child { border-bottom:none; }
.tarifs__row small { color:var(--c-text-muted); }
.tarifs__price { font-weight:700; color:var(--c-primary); white-space:nowrap; }
.tarifs__disclaimer { text-align:center; color:var(--c-text-muted); font-size:.76rem; font-style:italic; max-width:620px; margin:0 auto 32px; line-height:1.6; }
.tarifs__paiement { text-align:center; padding:24px; border-radius:var(--radius-lg); background:var(--c-bg); border:1px solid var(--c-border); max-width:460px; margin:0 auto; }
.tarifs__paiement h3 { font-size:.85rem; font-weight:700; margin-bottom:12px; }
.tarifs__paiement-list { display:flex; justify-content:center; gap:24px; flex-wrap:wrap; }
.tarifs__paiement-list span { display:flex; align-items:center; gap:6px; font-size:.88rem; color:var(--c-text-secondary); }

/* ======================================================
   ACCES
   ====================================================== */
.acces__grid { display:grid; grid-template-columns:2fr 3fr; gap:28px; }
.acces__info { display:flex; flex-direction:column; gap:16px; }
.acces__card { display:flex; gap:14px; align-items:flex-start; padding:20px; border-radius:var(--radius-lg); background:var(--c-bg-alt); border:1px solid var(--c-border); }
.acces__card-icon { width:44px; height:44px; border-radius:12px; background:var(--c-primary-10); color:var(--c-primary); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.acces__card h3 { font-size:.95rem; font-weight:700; margin-bottom:4px; }
.acces__card p { font-size:.88rem; color:var(--c-text-secondary); line-height:1.5; margin-bottom:8px; }
.acces__transport { padding:20px; border-radius:var(--radius-lg); background:var(--c-bg-alt); border:1px solid var(--c-border); }
.acces__transport h3 { font-size:.9rem; font-weight:700; margin-bottom:12px; }
.acces__transport-row { display:flex; align-items:center; gap:10px; font-size:.85rem; color:var(--c-text-secondary); margin-bottom:8px; }
.acces__badge { display:inline-flex; align-items:center; justify-content:center; min-width:36px; padding:2px 7px; border-radius:4px; font-size:.62rem; font-weight:800; color:#fff; text-transform:uppercase; letter-spacing:.5px; }
.acces__badge--rer { background:#2d5fa0; }
.acces__badge--bus { background:#16a34a; }
.acces__parking { display:flex; align-items:center; gap:10px; padding:14px 18px; border-radius:var(--radius); background:var(--c-bg-alt); border:1px solid var(--c-border); font-size:.85rem; color:var(--c-text-secondary); }
.acces__map { border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--c-border); min-height:400px; }
.acces__map iframe { width:100%; height:100%; min-height:400px; display:block; }

/* ======================================================
   A PROPOS
   ====================================================== */
.apropos__grid { display:grid; grid-template-columns:1fr 1.8fr; gap:36px; align-items:start; }
.apropos__photo-card { border-radius:var(--radius-lg); overflow:hidden; background:var(--c-bg); border:1px solid var(--c-border); box-shadow:var(--shadow-md); }
.apropos__photo { aspect-ratio:3/4; overflow:hidden; }
.apropos__photo img { width:100%; height:100%; object-fit:cover; object-position:top; }
.apropos__bio { padding:22px; }
.apropos__bio h3 { font-size:1.15rem; font-weight:800; margin-bottom:3px; }
.apropos__role { font-size:.88rem; font-weight:600; color:var(--c-primary); margin-bottom:10px; }
.apropos__desc { font-size:.85rem; color:var(--c-text-secondary); line-height:1.6; margin-bottom:14px; }
.apropos__langs { display:flex; flex-wrap:wrap; align-items:center; gap:5px; font-size:.82rem; }
.apropos__langs strong { margin-right:3px; }
.apropos__contact { display:flex; flex-direction:column; gap:8px; margin-top:14px; }
.apropos__contact-link { display:inline-flex; align-items:center; gap:8px; font-size:.85rem; color:var(--c-primary); font-weight:500; transition:opacity .2s; }
.apropos__contact-link:hover { opacity:.7; }

.apropos__timelines { display:flex; flex-direction:column; gap:20px; }
.timeline { background:var(--c-bg); border-radius:var(--radius-lg); border:1px solid var(--c-border); overflow:hidden; }
.timeline__header { display:flex; align-items:center; gap:10px; padding:14px 22px; font-weight:700; font-size:.9rem; background:var(--c-primary-10); color:var(--c-primary); border-bottom:1px solid var(--c-border); }
.timeline__header--accent { background:var(--c-accent-10); color:var(--c-accent); }
.timeline__item { display:flex; gap:14px; padding:12px 22px; border-bottom:1px solid var(--c-border); font-size:.85rem; }
.timeline__item:last-child { border-bottom:none; }
.timeline__year { font-weight:800; color:var(--c-primary); min-width:56px; white-space:nowrap; flex-shrink:0; }
.timeline__header--accent + .timeline__item .timeline__year, .timeline__header--accent ~ .timeline__item .timeline__year { color:var(--c-accent); }
.timeline__item strong { font-weight:600; color:var(--c-text); display:block; margin-bottom:1px; }
.timeline__item div { color:var(--c-text-secondary); line-height:1.4; }

/* ======================================================
   AVIS
   ====================================================== */
.avis__rating { display:flex; align-items:center; justify-content:center; gap:10px; margin-top:16px; flex-wrap:wrap; }
.avis__stars { display:flex; gap:2px; }
.avis__score { font-size:1.1rem; font-weight:800; color:var(--c-text); }
.avis__count { font-size:.82rem; color:var(--c-text-muted); }
.avis__grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; margin-bottom:32px; }
.avis__card { padding:28px 24px; border-radius:var(--radius-lg); background:var(--c-bg-alt); border:1px solid var(--c-border); transition:all var(--transition); }
.avis__card:hover { box-shadow:var(--shadow-md); border-color:var(--c-primary-20); }
.avis__card-stars { color:#f59e0b; font-size:.9rem; letter-spacing:2px; margin-bottom:12px; }
.avis__card p { font-size:.88rem; color:var(--c-text-secondary); line-height:1.65; font-style:italic; margin-bottom:14px; }
.avis__card footer { font-size:.78rem; color:var(--c-text-muted); font-weight:600; font-style:normal; }
.avis__cta { text-align:center; }

/* ======================================================
   FAQ
   ====================================================== */
.faq__list { max-width:720px; margin:0 auto; display:flex; flex-direction:column; gap:8px; }
.faq__item { border:1px solid var(--c-border); border-radius:var(--radius); background:var(--c-bg); overflow:hidden; transition:all var(--transition); }
.faq__item[open] { border-color:var(--c-primary-20); box-shadow:var(--shadow-md); }
.faq__question { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:18px 22px; cursor:pointer; font-size:.9rem; font-weight:600; color:var(--c-text); list-style:none; transition:color var(--transition); }
.faq__question::-webkit-details-marker { display:none; }
.faq__question::marker { display:none; content:''; }
.faq__question:hover { color:var(--c-primary); }
.faq__chevron { flex-shrink:0; color:var(--c-text-muted); transition:transform var(--transition); }
.faq__item[open] .faq__chevron { transform:rotate(180deg); color:var(--c-primary); }
.faq__answer { padding:0 22px 18px; font-size:.88rem; color:var(--c-text-secondary); line-height:1.65; animation:faqSlide .25s ease; }
.faq__answer ul { margin:6px 0 0 18px; list-style:disc; }
.faq__answer li { margin-bottom:3px; }
.faq__answer a { color:var(--c-primary); font-weight:600; }
.faq__answer a:hover { text-decoration:underline; }
@keyframes faqSlide { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } }

/* ======================================================
   CTA
   ====================================================== */
.cta { padding:72px 0; background:linear-gradient(135deg, var(--c-primary) 0%, var(--c-primary-dark) 60%, #2f5a4e 100%); text-align:center; color:#fff; }
.cta__inner { max-width:560px; }
.cta h2 { font-family:var(--font-display); font-size:clamp(1.6rem,3.2vw,2.1rem); font-weight:700; margin-bottom:10px; }
.cta p { font-size:1rem; opacity:.8; margin-bottom:24px; }

/* ======================================================
   FOOTER
   ====================================================== */
.footer { background:var(--c-bg-dark); color:rgba(255,255,255,.65); padding:48px 0 0; }
.footer__inner { display:grid; grid-template-columns:1.5fr 1fr 1fr; gap:36px; padding-bottom:36px; border-bottom:1px solid rgba(255,255,255,.07); }
.footer__logo { display:flex; align-items:center; gap:10px; font-size:1.15rem; font-weight:800; color:#fff; margin-bottom:8px; }
.footer__logo img { width:44px; height:44px; object-fit:contain; filter:brightness(10); }
.footer__brand p { font-size:.85rem; line-height:1.6; }
.footer__col h4 { font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:rgba(255,255,255,.3); margin-bottom:10px; font-weight:700; }
.footer__col a { display:block; font-size:.85rem; margin-bottom:5px; transition:color var(--transition); }
.footer__col a:hover { color:#fff; }
.footer__col p { font-size:.82rem; margin-bottom:3px; }
.footer__legal { display:flex; flex-wrap:wrap; justify-content:center; gap:6px 10px; padding:16px 24px; border-top:1px solid rgba(255,255,255,.08); }
.footer__legal a { font-size:.75rem; color:rgba(255,255,255,.4); transition:color .2s; }
.footer__legal a:hover { color:#fff; }
.footer__legal span { color:rgba(255,255,255,.15); font-size:.75rem; }
.footer__bottom { padding:14px 24px; text-align:center; }
.footer__bottom p { font-size:.72rem; color:rgba(255,255,255,.2); }
.footer__credit { margin-top:4px; }
.footer__credit a { color:rgba(255,255,255,.35); text-decoration:underline; transition:color .2s; }
.footer__credit a:hover { color:#fff; }

/* ======================================================
   BOOKING (reservation.html)
   ====================================================== */
.booking { padding:140px 0 72px; min-height:100vh; background:linear-gradient(165deg, var(--c-primary-light) 0%, #ffffff 35%, var(--c-accent-light) 100%); }
.booking__header { text-align:center; margin-bottom:42px; }
.booking__grid { display:grid; grid-template-columns:2fr 1fr; gap:28px; align-items:start; }
.booking__services { display:flex; flex-direction:column; gap:8px; }

.booking__service { display:flex; align-items:center; gap:14px; width:100%; padding:16px 20px; border-radius:var(--radius); background:var(--c-bg); border:1px solid var(--c-border); cursor:pointer; font-family:var(--font-sans); text-align:left; transition:all var(--transition); }
.booking__service:hover { border-color:var(--c-primary-20); box-shadow:var(--shadow-md); transform:translateY(-1px); }
.booking__service-icon { width:44px; height:44px; border-radius:12px; background:var(--c-primary-10); color:var(--c-primary); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.booking__service-info { flex:1; }
.booking__service-info strong { display:block; font-size:.92rem; font-weight:600; color:var(--c-text); margin-bottom:2px; }
.booking__service-info span { font-size:.8rem; color:var(--c-text-muted); }
.booking__service-arrow { color:var(--c-text-muted); flex-shrink:0; transition:transform .2s; }
.booking__service:hover .booking__service-arrow { transform:translateX(3px); color:var(--c-primary); }

/* Contact card */
.booking__contact { position:sticky; top:100px; }
.booking__contact-card { border-radius:var(--radius-lg); overflow:hidden; background:var(--c-bg); border:1px solid var(--c-border); box-shadow:var(--shadow-md); }
.booking__contact-photo { width:100%; height:220px; object-fit:cover; object-position:top; }
.booking__contact-body { padding:20px; }
.booking__contact-body h3 { font-size:1.05rem; font-weight:800; margin-bottom:2px; }
.booking__contact-role { font-size:.85rem; font-weight:600; color:var(--c-primary); margin-bottom:8px; }
.booking__contact-address { font-size:.82rem; color:var(--c-text-secondary); line-height:1.5; margin-bottom:16px; }
.booking__contact-help { margin-bottom:12px; }
.booking__contact-help strong { font-size:.88rem; display:block; margin-bottom:2px; }
.booking__contact-help p { font-size:.82rem; color:var(--c-text-secondary); }
.booking__contact-links { display:flex; flex-direction:column; gap:8px; }
.booking__contact-link { display:inline-flex; align-items:center; gap:8px; padding:10px 14px; border-radius:var(--radius); font-size:.85rem; font-weight:500; color:var(--c-text); background:var(--c-bg-alt); border:1px solid var(--c-border); transition:all var(--transition); }
.booking__contact-link:hover { border-color:var(--c-primary-20); background:var(--c-primary-10); color:var(--c-primary); }
.booking__contact-link--wa { color:#25d366; }
.booking__contact-link--wa:hover { background:#e8faf0; border-color:#25d366; color:#25d366; }

/* Stepper */
.booking__stepper { display:flex; align-items:center; justify-content:center; max-width:520px; margin:0 auto 40px; gap:0; }
.booking__step { display:flex; flex-direction:column; align-items:center; gap:6px; opacity:.35; transition:opacity .3s; flex-shrink:0; }
.booking__step.active, .booking__step.completed { opacity:1; }
.booking__step-num { width:38px; height:38px; border-radius:50%; border:2px solid var(--c-border); display:flex; align-items:center; justify-content:center; font-size:.88rem; font-weight:700; color:var(--c-text-muted); background:var(--c-bg); transition:all .3s; }
.booking__step.active .booking__step-num { background:var(--c-primary); color:#fff; border-color:var(--c-primary); }
.booking__step.completed .booking__step-num { background:#22c55e; color:#fff; border-color:#22c55e; font-size:0; }
.booking__step.completed .booking__step-num::after { content:"\2713"; font-size:.95rem; }
.booking__step-label { font-size:.76rem; font-weight:500; color:var(--c-text-secondary); white-space:nowrap; }
.booking__step.active .booking__step-label { color:var(--c-primary); font-weight:600; }
.booking__step.completed .booking__step-label { color:#22c55e; }
.booking__step-line { flex:1; height:2px; background:var(--c-border); margin:0 12px; margin-bottom:22px; min-width:40px; transition:background .3s; }
.booking__step-line.done { background:var(--c-primary); }

/* Calendar view (step 2) */
.booking__back { display:inline-flex; align-items:center; gap:6px; padding:8px 16px; border:1px solid var(--c-border); border-radius:var(--radius); background:var(--c-bg); color:var(--c-text); font-size:.85rem; font-weight:500; font-family:var(--font-sans); cursor:pointer; transition:all var(--transition); margin-bottom:16px; }
.booking__back:hover { background:var(--c-primary-10); border-color:var(--c-primary); color:var(--c-primary); }
.booking__calendar-title { font-family:var(--font-display); font-size:1.4rem; font-weight:700; color:var(--c-text); margin-bottom:20px; }
.booking__calendar-title em { font-style:italic; color:var(--c-primary); }
.booking__calendar-embed { width:100%; min-height:700px; border-radius:var(--radius-lg); overflow:hidden; background:var(--c-bg); border:1px solid var(--c-border); }
.booking__calendar-embed > div { width:100%; height:700px; overflow:auto; }
.booking__calendar-confirm { text-align:center; margin-top:24px; }
.booking__confirm-btn { display:inline-flex; align-items:center; gap:8px; padding:14px 28px; border-radius:var(--radius); background:var(--c-primary); color:#fff; font-size:.92rem; font-weight:600; font-family:var(--font-sans); border:none; cursor:pointer; transition:all var(--transition); }
.booking__confirm-btn:hover { background:var(--c-primary-dark, #1e2d4d); transform:translateY(-1px); box-shadow:var(--shadow-md); }

/* Confirmation (step 3) */
.booking__confirm { text-align:center; max-width:520px; margin:0 auto; padding:20px 0 40px; }
.booking__confirm-icon { width:80px; height:80px; border-radius:50%; background:#22c55e; display:flex; align-items:center; justify-content:center; margin:0 auto 24px; animation:confirmPop .4s cubic-bezier(.175,.885,.32,1.275); }
@keyframes confirmPop { 0% { transform:scale(0); } 100% { transform:scale(1); } }
.booking__confirm-title { font-family:var(--font-display); font-size:1.8rem; font-weight:800; color:var(--c-text); margin-bottom:8px; }
.booking__confirm-subtitle { font-size:.92rem; color:var(--c-text-secondary); line-height:1.6; margin-bottom:32px; }
.booking__confirm-card { display:flex; align-items:flex-start; gap:16px; padding:20px 24px; border-radius:var(--radius-lg); background:var(--c-bg); border:1px solid var(--c-border); text-align:left; margin-bottom:28px; box-shadow:var(--shadow-sm); }
.booking__confirm-card-icon { width:44px; height:44px; border-radius:12px; background:var(--c-primary-10); color:var(--c-primary); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.booking__confirm-card strong { display:block; font-size:.9rem; font-weight:700; margin-bottom:4px; }
.booking__confirm-card p { font-size:.85rem; color:var(--c-text-secondary); line-height:1.5; margin:0; }
.booking__confirm-contact { margin-bottom:28px; }
.booking__confirm-contact > p { font-size:.9rem; margin-bottom:12px; }
.booking__confirm-links { display:flex; flex-direction:column; gap:8px; max-width:320px; margin:0 auto; }
.booking__confirm-actions { display:flex; flex-direction:column; align-items:center; gap:12px; }
.booking__confirm-restart { display:inline-flex; align-items:center; gap:8px; padding:12px 24px; border-radius:var(--radius); background:var(--c-primary); color:#fff; font-size:.88rem; font-weight:600; font-family:var(--font-sans); border:none; cursor:pointer; transition:all var(--transition); }
.booking__confirm-restart:hover { background:var(--c-primary-dark, #1e2d4d); transform:translateY(-1px); }
.booking__confirm-home { font-size:.85rem; color:var(--c-text-muted); text-decoration:underline; transition:color .2s; }
.booking__confirm-home:hover { color:var(--c-primary); }

/* Cookie consent card */
.cookie-card { position:fixed; bottom:20px; left:20px; width:360px; max-width:calc(100vw - 40px); padding:24px; background:var(--c-bg); border:1px solid var(--c-border); border-radius:var(--radius-lg); box-shadow:0 8px 32px rgba(0,0,0,.12); z-index:9999; animation:cookieSlideIn .4s cubic-bezier(.4,0,.2,1); font-family:var(--font-sans); }
@keyframes cookieSlideIn { 0% { opacity:0; transform:translateY(20px); } 100% { opacity:1; transform:translateY(0); } }
.cookie-card__title { font-size:.95rem; font-weight:700; color:var(--c-text); margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.cookie-card__text { font-size:.82rem; color:var(--c-text-secondary); line-height:1.55; margin:0 0 16px; }
.cookie-card__text a { color:var(--c-primary); text-decoration:underline; }
.cookie-card__text a:hover { color:var(--c-primary-dark, #1e2d4d); }
.cookie-card__actions { display:flex; gap:8px; }
.cookie-card__btn { flex:1; padding:10px 16px; border-radius:var(--radius); font-size:.84rem; font-weight:600; cursor:pointer; transition:all .2s; font-family:var(--font-sans); border:1px solid transparent; }
.cookie-card__btn--accept { background:var(--c-primary); color:#fff; border-color:var(--c-primary); }
.cookie-card__btn--accept:hover { background:var(--c-primary-dark, #1e2d4d); transform:translateY(-1px); box-shadow:var(--shadow-sm); }
.cookie-card__btn--reject { background:var(--c-bg); color:var(--c-text); border-color:var(--c-border); }
.cookie-card__btn--reject:hover { border-color:var(--c-primary-20); background:var(--c-bg-alt); }

/* ── Legal pages ─────────────────────────────────────── */
.legal { padding:140px 0 72px; min-height:100vh; background:linear-gradient(165deg, var(--c-primary-light) 0%, #ffffff 35%, var(--c-accent-light) 100%); }
.legal__updated { text-align:center; font-size:.85rem; color:var(--c-text-muted); margin-top:16px; margin-bottom:40px; display:block; }
.legal__content { max-width:760px; margin:0 auto; }
.legal__content h2 { font-family:var(--font-display); font-size:1.2rem; font-weight:700; color:var(--c-text); margin:32px 0 12px; padding-bottom:8px; border-bottom:1px solid var(--c-border); }
.legal__content h3 { font-size:1rem; font-weight:600; color:var(--c-text); margin:20px 0 8px; }
.legal__content p { font-size:.9rem; color:var(--c-text-secondary); line-height:1.7; margin-bottom:12px; }
.legal__content ul { margin:0 0 16px 20px; }
.legal__content li { font-size:.9rem; color:var(--c-text-secondary); line-height:1.7; margin-bottom:6px; }
.legal__content a { color:var(--c-primary); text-decoration:underline; }
.legal__content a:hover { color:var(--c-primary-dark, #1e2d4d); }
.legal__content code { background:var(--c-bg-alt); padding:2px 6px; border-radius:4px; font-size:.82rem; }
.legal__notice { background:#f0f7ff; border-left:4px solid var(--c-primary); padding:16px 20px; border-radius:0 8px 8px 0; margin:16px 0 24px; }
.legal__notice p { margin:0; font-size:.9rem; line-height:1.7; color:var(--c-text); }

.legal__table { width:100%; border-collapse:collapse; margin:12px 0 20px; font-size:.85rem; }
.legal__table th, .legal__table td { padding:10px 14px; text-align:left; border:1px solid var(--c-border); }
.legal__table th { background:var(--c-bg-alt); font-weight:600; color:var(--c-text); }
.legal__table td { color:var(--c-text-secondary); }

/* ── Scroll Reveal ───────────────────────────────────── */
[data-reveal] { opacity:0; transform:translateY(24px); transition:opacity .6s cubic-bezier(.4,0,.2,1), transform .6s cubic-bezier(.4,0,.2,1); }
[data-reveal].revealed { opacity:1; transform:translateY(0); }

/* ── Gallery strip ───────────────────────────────────── */
.gallery { margin-top:32px; }
.gallery__strip { display:flex; gap:12px; overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; padding-bottom:6px; scrollbar-width:thin; scrollbar-color:var(--c-primary-20) transparent; }
.gallery__strip::-webkit-scrollbar { height:4px; }
.gallery__strip::-webkit-scrollbar-thumb { background:var(--c-primary-20); border-radius:4px; }
.gallery__item { flex:0 0 170px; scroll-snap-align:start; margin:0; border-radius:var(--radius); overflow:hidden; position:relative; }
.gallery__item img { width:100%; height:200px; object-fit:cover; display:block; transition:transform .3s ease; }
.gallery__item:hover img { transform:scale(1.05); }
.gallery__item figcaption { position:absolute; bottom:0; left:0; right:0; padding:20px 10px 8px; background:linear-gradient(transparent,rgba(0,0,0,.5)); color:#fff; font-size:.75rem; font-weight:500; letter-spacing:.02em; }

/* ======================================================
   RESPONSIVE
   ====================================================== */
@media (max-width:1024px) {
  .hero__grid { grid-template-columns:1fr; gap:36px; text-align:center; }
  .hero__desc { margin:0 auto 28px; }
  .hero__actions { justify-content:center; }
  .hero__badges { justify-content:center; }
  .hero__visual { order:1; }
  .hero__photo { max-height:340px; }
  .apropos__grid { grid-template-columns:1fr; }
  .apropos__photo-card { max-width:380px; margin:0 auto; }
  .acces__grid { grid-template-columns:1fr; }
  .avis__grid { grid-template-columns:1fr; }
}
@media (max-width:768px) {
  .section { padding:64px 0; }
  .nav { padding:8px 12px; }
  .nav__bar { padding:0 12px; height:54px; border-radius:14px; }
  .nav__logo-img { width:42px; height:42px; }
  .nav__center { display:none; }
  .nav__dropdown { display:none; flex-direction:column; padding:14px; gap:3px; margin:8px 0 0; background:rgba(255,255,255,.97); backdrop-filter:blur(14px); border-radius:var(--radius-lg); border:1px solid var(--c-border); box-shadow:var(--shadow-xl); }
  .nav__dropdown.open { display:flex; }
  .nav__link { padding:11px 14px; font-size:.92rem; width:100%; border-radius:8px; }
  .nav__cta { margin-left:auto; padding:8px; font-size:0; }
  .nav__cta svg { width:18px; height:18px; }
  .nav__toggle { display:flex; margin-left:8px; }
  .nav__toggle.active span:nth-child(1) { transform:rotate(45deg) translate(5px,5px); }
  .nav__toggle.active span:nth-child(2) { opacity:0; }
  .nav__toggle.active span:nth-child(3) { transform:rotate(-45deg) translate(5px,-5px); }
  .hero { padding:104px 0 52px; }
  .hero__photo { max-height:260px; }
  .expertises__grid { grid-template-columns:1fr; }
  .expertise--extra { display:none; }
  .expertises__grid.expanded .expertise--extra { display:flex; }
  .expertises__toggle { display:flex; }
  .horaires__grid { grid-template-columns:1fr; }
  .tarifs__wrapper { grid-template-columns:1fr; }
  .avis__grid { grid-template-columns:1fr; }
  .footer__inner { grid-template-columns:1fr; gap:24px; }
  .hero__actions { flex-direction:column; align-items:stretch; }
  .booking { padding:104px 0 52px; }
  .booking__stepper { max-width:100%; gap:0; }
  .booking__step-label { display:none; }
  .booking__step-line { min-width:24px; margin:0 8px; margin-bottom:0; }
  .booking__grid { grid-template-columns:1fr; }
  .booking__contact { position:static; }
  .booking__contact-photo { height:280px; object-position:center 20%; }
  .booking__calendar-embed, .booking__calendar-embed > div { min-height:600px; height:600px; }
  .booking__confirm-card { flex-direction:column; text-align:center; align-items:center; }
  .cookie-card { bottom:12px; left:12px; width:calc(100vw - 24px); padding:20px; }
}
