/* Taxi Lille Métropole — feuille de style
   Concept : la nuit lilloise, encre bleue profonde + lumière ambrée du lumineux taxi,
   tracés d'itinéraires comme motif graphique. */
:root{
  --ink:#0d1b33;        /* bleu nuit, fonds forts */
  --ink-2:#16294a;
  --amber:#f4b322;      /* lumineux taxi */
  --amber-deep:#c98a00;
  --paper:#f5f7fa;      /* fond clair, légèrement bleuté */
  --card:#ffffff;
  --text:#14213a;
  --muted:#5b6780;
  --line:#dfe4ec;
  --ok:#1d8a55;
  --radius:14px;
  --display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --body:"Figtree", "Segoe UI", system-ui, sans-serif;
  --shadow:0 10px 30px -12px rgba(13,27,51,.25);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--text);font:17px/1.6 var(--body);-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--display);line-height:1.12;margin:0;text-wrap:balance;letter-spacing:-.015em}
h1{font-size:clamp(34px,6vw,62px);font-weight:800}
h2{font-size:clamp(28px,4vw,42px);font-weight:700}
h3{font-size:20px;font-weight:700}
p{margin:0}
.wrap{max-width:1160px;margin:0 auto;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font:600 13px var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--amber-deep)}
.eyebrow::before{content:"";width:22px;height:2px;background:currentColor}
:focus-visible{outline:3px solid var(--amber);outline-offset:3px;border-radius:6px}

/* ---------- Header ---------- */
.top{position:sticky;top:0;z-index:50;background:rgba(13,27,51,.94);backdrop-filter:saturate(1.4) blur(10px);color:#fff}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:12px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.roof{display:grid;place-items:center;background:var(--amber);color:var(--ink);font:800 12px var(--display);letter-spacing:.16em;padding:6px 10px;border-radius:7px 7px 3px 3px;box-shadow:0 0 18px rgba(244,179,34,.55)}
.brand b{font:700 18px var(--display);letter-spacing:-.01em;white-space:nowrap}
.brand small{display:block;font-size:12px;color:#a9b6cf;font-weight:500}
.nav{display:flex;align-items:center;gap:18px}
.nav a{text-decoration:none;font-weight:500;font-size:14.5px;color:#d5ddeb;white-space:nowrap}
.nav a:hover,.nav a[aria-current]{color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font:700 16px var(--body);text-decoration:none;border:0;cursor:pointer;border-radius:999px;padding:14px 24px;transition:transform .15s,box-shadow .15s,background .15s}
.btn-amber{background:var(--amber);color:var(--ink);box-shadow:0 8px 22px -8px rgba(244,179,34,.8)}
.btn-amber:hover{transform:translateY(-1px);background:#ffc23a}
.btn-ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.35)}
.btn-ghost:hover{border-color:#fff}
.btn-dark{background:var(--ink);color:#fff}
.btn-outline{background:#fff;color:var(--ink);border:1.5px solid var(--ink)}
.btn-outline:hover{background:var(--paper)}
.btn:disabled{opacity:.6;cursor:wait}
.opt{font-weight:400;color:var(--muted)}
.btn svg{width:18px;height:18px}
.top .btn{padding:10px 18px;font-size:15px}
.menu-btn{display:none;background:none;border:0;color:#fff;padding:6px;cursor:pointer}
@media (max-width:1180px){
  .nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--ink);padding:8px max(20px,env(safe-area-inset-right,0px)) 18px max(20px,env(safe-area-inset-left,0px))}
  .nav.open{display:flex}
  .nav a{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08)}
  .nav .btn{margin-top:12px}
  .menu-btn{display:block}
}

/* ---------- Hero ---------- */
.hero{background:radial-gradient(1200px 500px at 85% -10%,rgba(244,179,34,.18),transparent 60%),linear-gradient(180deg,var(--ink),var(--ink-2));color:#fff;position:relative;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;padding-block:64px 80px}
.hero p.lead{font-size:clamp(17px,2vw,20px);color:#c5d0e3;margin-top:18px;max-width:34em}
.hero .actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.live{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);padding:7px 14px;border-radius:999px;font-size:14px;color:#dfe6f2;margin-bottom:22px}
.live i{width:9px;height:9px;border-radius:50%;background:#3ddc84;box-shadow:0 0 0 0 rgba(61,220,132,.6);animation:pulse 2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 10px rgba(61,220,132,0)}100%{box-shadow:0 0 0 0 rgba(61,220,132,0)}}
.trust{display:flex;flex-wrap:wrap;gap:22px;margin-top:34px;color:#b8c4d9;font-size:14px}
.trust span{display:flex;align-items:center;gap:8px}
.trust svg{width:18px;height:18px;color:var(--amber)}
.hero-art{position:relative;aspect-ratio:1/1;max-width:100%}
.hero-art svg{width:100%;height:100%}
.route{stroke-dasharray:900;stroke-dashoffset:0;animation:draw 3.2s ease-out both}
@keyframes draw{from{stroke-dashoffset:900}to{stroke-dashoffset:0}}
.car-dot{offset-path:path("M70 330 C 140 300, 160 210, 240 200 S 330 120, 330 70");animation:ride 6s 1s ease-in-out infinite}
@keyframes ride{0%{offset-distance:0%}55%,100%{offset-distance:100%}}
@media (max-width:900px){.hero .wrap{grid-template-columns:1fr;padding-block:40px 56px}.hero-art{max-width:420px;margin:0 auto;width:100%}}

/* ---------- Booking ---------- */
.booking{margin-top:-46px;position:relative;z-index:5}
.book-card{background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:26px;border:1px solid var(--line)}
.book-card h2{font-size:24px}
.book-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:18px}
.book-head p{color:var(--muted);font-size:15px}
.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.wide{grid-column:span 2}
.field label{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.field input,.field select,.field textarea{font:16px var(--body);color:var(--text);background:var(--paper);border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;width:100%}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--amber-deep);background:#fff}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.chip{font:600 13px var(--body);background:#fff;border:1.5px solid var(--line);color:var(--text);padding:6px 11px;border-radius:999px;cursor:pointer}
.chip:hover{border-color:var(--amber-deep)}
.check{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--text);cursor:pointer}
.check input{width:20px;height:20px;accent-color:var(--amber-deep)}
.book-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:20px}
.book-actions .note{font-size:14px;color:var(--muted)}
.form-msg{margin-top:12px;font-size:14px;color:#b3261e}
@media (max-width:900px){.form-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.form-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.book-card{padding:20px}}

/* ---------- Sections ---------- */
section.block{padding-block:84px}
.sec-head{max-width:640px;margin-bottom:40px;display:flex;flex-direction:column;gap:14px}
.sec-head p{color:var(--muted);font-size:18px}
.services{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media (max-width:1100px){.services{grid-template-columns:repeat(3,1fr)}}
.svc{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:26px;display:flex;flex-direction:column;gap:12px;text-decoration:none;transition:border-color .15s,transform .15s}
a.svc:hover{border-color:var(--amber-deep);transform:translateY(-2px)}
.svc .ico{width:46px;height:46px;border-radius:12px;background:#fff6dd;color:var(--amber-deep);display:grid;place-items:center}
.svc .ico svg{width:24px;height:24px}
.svc p{color:var(--muted);font-size:16px}
.svc .more{margin-top:auto;font-weight:700;font-size:15px;color:var(--ink)}
@media (max-width:900px){.services{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.services{grid-template-columns:1fr}}

.dark{background:var(--ink);color:#fff}
.dark .sec-head p{color:#b8c4d9}
.dark .eyebrow{color:var(--amber)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;counter-reset:s}
.step{border-top:2px solid rgba(255,255,255,.15);padding-top:22px;display:flex;flex-direction:column;gap:10px}
.step::before{counter-increment:s;content:counter(s);font:800 44px/1 var(--display);color:var(--amber)}
.step p{color:#b8c4d9}
@media (max-width:760px){.steps{grid-template-columns:1fr}}

.zones{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.zone-list{display:flex;flex-wrap:wrap;gap:10px}
.zone-list span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 15px;font-weight:500;font-size:15px}
.zone-list span.hl{background:var(--ink);color:#fff;border-color:var(--ink)}
.map-card{background:var(--ink);border-radius:20px;padding:20px;aspect-ratio:4/3}
.map-card svg{width:100%;height:100%}
@media (max-width:900px){.zones{grid-template-columns:1fr}}

.why{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.why div{display:flex;flex-direction:column;gap:8px}
.why b{font:800 30px var(--display);color:var(--ink)}
.why p{color:var(--muted);font-size:15px}
@media (max-width:900px){.why{grid-template-columns:1fr 1fr}}

.facts{margin:0;display:grid;grid-template-columns:repeat(2,1fr);border:1px solid var(--line);border-radius:var(--radius);background:var(--card);overflow:hidden}
.facts div{display:grid;grid-template-columns:130px 1fr;gap:14px;padding:16px 22px;border-bottom:1px solid var(--line)}
.facts div:nth-child(odd){border-right:1px solid var(--line)}
.facts dt{font-weight:700;color:var(--muted);font-size:14px;text-transform:uppercase;letter-spacing:.06em;padding-top:2px}
.facts dd{margin:0;font-weight:500}
@media (max-width:760px){.facts{grid-template-columns:1fr}.facts div{grid-template-columns:1fr;gap:2px}.facts div:nth-child(odd){border-right:0}}
.faq{max-width:820px}
.faq details{border-bottom:1px solid var(--line);padding:18px 0}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px;font:700 18px var(--display)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:26px;line-height:1;color:var(--amber-deep);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin-top:12px;color:var(--muted)}

.cta{background:linear-gradient(120deg,var(--amber),#ffcf5c);color:var(--ink);border-radius:24px;padding:44px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px}
.cta h2{font-size:clamp(26px,3.6vw,38px)}
.cta .phone{font:800 clamp(26px,4vw,40px) var(--display);text-decoration:none;letter-spacing:-.01em}

/* ---------- Pages lieux ---------- */
.page-hero .wrap{padding-block:56px 70px;display:block}
.crumbs{font-size:14px;color:#a9b6cf;margin-bottom:18px}
.crumbs a{color:#d5ddeb}
.prose{max-width:760px;display:flex;flex-direction:column;gap:18px;font-size:18px}
.prose h2{font-size:30px;margin-top:20px}
.prose ul{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px}
.two{display:grid;grid-template-columns:1.6fr 1fr;gap:48px;align-items:start}
.aside{position:sticky;top:96px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:24px;display:flex;flex-direction:column;gap:14px}
.aside .phone{font:800 28px var(--display);text-decoration:none;color:var(--ink)}
.aside ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-size:15px;color:var(--muted)}
.aside li::before{content:"✓ ";color:var(--ok);font-weight:700}
@media (max-width:900px){.two{grid-template-columns:1fr}.aside{position:static}}

/* ---------- Footer ---------- */
footer{background:#08142a;color:#a9b6cf;font-size:15px;padding-block:56px 110px}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px}
footer h3{color:#fff;font-size:16px;margin-bottom:12px}
footer a{text-decoration:none}
footer a:hover{color:#fff}
footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
footer .legal{border-top:1px solid rgba(255,255,255,.08);margin-top:36px;padding-top:20px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:13px}
@media (max-width:760px){footer .cols{grid-template-columns:1fr}}

/* Barre d'appel mobile */
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;gap:10px;padding:10px max(14px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(14px,env(safe-area-inset-left,0px));background:rgba(13,27,51,.96);backdrop-filter:blur(8px)}
.callbar .btn{flex:1;padding:13px 10px}
@media (max-width:760px){.callbar{display:flex}}

/* Apparition douce (contenu visible par défaut) */
.reveal{transition:transform .6s}
.js .reveal.pending{transform:translateY(12px)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.js .reveal.pending{transform:none}}
