:root{
  --bleu:#0b4fd6; --bleu-fonce:#083aa0; --orange:#ff7a1a; --fond:#f5f7fc;
  --carte:#ffffff; --texte:#16213a; --muted:#5b6b8c; --bord:#e3e9f5;
  --vert:#12a150; --rouge:#d33; --radius:14px;
  --ombre:0 10px 30px rgba(11,79,214,.10);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Segoe UI",Roboto,Arial,sans-serif;color:var(--texte);background:var(--fond);line-height:1.6}
a{color:inherit}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
/* Header */
.topbar{background:var(--bleu-fonce);color:#fff;font-size:.9rem}
.topbar .wrap{display:flex;justify-content:space-between;padding:7px 20px}
header.site{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--bord)}
.nav{display:flex;align-items:center;gap:18px;padding:12px 20px;max-width:1120px;margin:0 auto}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.25rem;color:var(--bleu)}
.logo .volant{width:38px;height:38px;border-radius:50%;background:var(--bleu);color:#fff;display:grid;place-items:center;font-size:1.3rem}
nav.menu{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
nav.menu a{text-decoration:none;padding:9px 13px;border-radius:9px;font-weight:600;color:#33415e}
nav.menu a:hover,nav.menu a.actif{background:#eaf0ff;color:var(--bleu)}
.btn{display:inline-block;border:0;cursor:pointer;text-decoration:none;font-weight:700;
  padding:13px 22px;border-radius:11px;background:var(--bleu);color:#fff;font-size:1rem;transition:.15s}
.btn:hover{background:var(--bleu-fonce);transform:translateY(-1px)}
.btn.orange{background:var(--orange)} .btn.orange:hover{background:#e56a0e}
.btn.fantome{background:#fff;color:var(--bleu);border:2px solid var(--bleu)}
.btn.petit{padding:8px 14px;font-size:.9rem}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
/* Hero */
.hero{background:linear-gradient(120deg,#083aa0 0%,#0b4fd6 60%,#2f7bff 100%);color:#fff;padding:64px 0 54px;position:relative;overflow:hidden}
.hero h1{font-size:2.5rem;margin:.2em 0;line-height:1.15}
.hero p.accroche{font-size:1.15rem;opacity:.93;max-width:640px}
.hero .cta{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.badges{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.badge{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);padding:7px 13px;border-radius:999px;font-size:.9rem}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:26px 0 0}
.stat{background:#fff;border-radius:var(--radius);padding:18px;text-align:center;box-shadow:var(--ombre);color:var(--texte)}
.stat b{font-size:1.6rem;color:var(--bleu);display:block}
/* Hero accueil — « Mon Permis avec Bonny » */
.hero-v2{background:
  radial-gradient(900px 420px at 88% 8%, rgba(255,122,26,.22), transparent 62%),
  radial-gradient(760px 420px at 6% 96%, rgba(64,140,255,.38), transparent 62%),
  linear-gradient(120deg,#062b7a 0%,#0b4fd6 55%,#1e63f0 100%);
  padding:70px 0 58px}
.hero-grid{display:grid;grid-template-columns:1.12fr .88fr;gap:40px;align-items:center}
.hero-copy .etiquette{background:#fff;color:#083aa0;box-shadow:0 6px 18px rgba(0,0,0,.15)}
.hero-v2 .slogan{font-size:3.6rem;line-height:1.02;letter-spacing:-.025em;margin:.18em 0 .1em;font-weight:900}
.hero-v2 .slogan .accent{color:#ffb36b}
.hero-v2 .baseline{font-size:1.15rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.9;margin:0 0 .6em;color:#dbe8ff}
.hero-v2 p.accroche{font-size:1.08rem;opacity:.94;max-width:620px;margin:0}
.hero-card{background:#fff;color:var(--texte);border-radius:22px;padding:26px 26px 22px;box-shadow:0 28px 70px rgba(0,0,0,.28);position:relative;overflow:hidden}
.hero-card:before{content:"";position:absolute;inset:0 0 auto 0;height:5px;background:linear-gradient(90deg,var(--orange),#ffb36b)}
.hero-card-head{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.05rem;color:var(--bleu-fonce);margin-bottom:6px}
.hero-dot{width:10px;height:10px;border-radius:50%;background:var(--vert);box-shadow:0 0 0 4px #e5f7ec}
.parcours{list-style:none;margin:14px 0 18px;padding:0}
.parcours li{display:flex;gap:12px;align-items:flex-start;margin:13px 0}
.parcours .num{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:#eef4ff;color:var(--bleu);font-weight:800;display:grid;place-items:center;font-size:.9rem}
.parcours b{color:var(--texte);font-size:.98rem}
.parcours div span{font-size:.86rem;color:var(--muted)}
.hero-card .btn{display:block;text-align:center;margin-top:9px}
.hero-note{margin-top:14px;padding-top:12px;border-top:1px dashed var(--bord);font-size:.78rem;color:var(--muted);text-align:center}
.nav-cta{background:var(--orange);color:#fff!important}
.nav-cta:hover{background:#e56a0e!important;color:#fff!important}
.etape-carte{padding:22px 18px}
.etape-num{width:40px;height:40px;margin:0 auto 10px;border-radius:50%;background:var(--bleu);color:#fff;font-weight:900;display:grid;place-items:center;font-size:1.1rem}
/* Statistiques */
.bar-row{display:grid;grid-template-columns:120px 1fr 92px;gap:10px;align-items:center;margin:8px 0;font-size:.9rem}
.bar-track{background:#eef3ff;border-radius:999px;height:14px;overflow:hidden}
.bar-fill{height:100%;background:linear-gradient(90deg,var(--bleu),#4c8dff);border-radius:999px;min-width:2px}
.bar-val{text-align:right;color:var(--bleu);font-size:.85rem}
@media(max-width:860px){ .bar-row{grid-template-columns:92px 1fr 74px} }
/* Sections */
section.bloc{padding:56px 0}
.carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--radius);box-shadow:var(--ombre);padding:26px}
h2.titre{font-size:1.9rem;margin:0 0 6px;color:var(--bleu-fonce)}
.soustitre{color:var(--muted);margin-top:0;margin-bottom:22px}
.grille{display:grid;gap:16px}
.g3{grid-template-columns:repeat(3,1fr)} .g2{grid-template-columns:repeat(2,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
.permis{border-top:5px solid var(--bleu)}
.permis b{font-size:1.1rem}
.prix{font-size:1.5rem;color:var(--bleu);font-weight:800;margin:8px 0}
.etiquette{display:inline-block;background:#fff3e8;color:#b34a00;font-weight:700;font-size:.8rem;padding:4px 10px;border-radius:999px}
.tarif{position:relative}
.tarif.pop{border:2px solid var(--orange)}
.avis{font-style:italic}
.avis .qui{font-style:normal;color:var(--muted);font-size:.9rem;margin-top:8px}
/* FAQ */
details{background:#fff;border:1px solid var(--bord);border-radius:10px;padding:14px 16px;margin-bottom:10px}
summary{cursor:pointer;font-weight:700;color:var(--bleu-fonce)}
/* Formulaires / réservation */
.etapes{display:flex;gap:8px;margin:18px 0;flex-wrap:wrap}
.etape{flex:1;min-width:130px;text-align:center;padding:10px;border-radius:10px;background:#eaf0ff;font-weight:700;color:#5b6b8c;font-size:.92rem}
.etape.active{background:var(--bleu);color:#fff}
.etape.ok{background:#d9f2e3;color:#0c6b34}
.formule{display:block;border:2px solid var(--bord);border-radius:12px;padding:16px;cursor:pointer;background:#fff;transition:.15s}
.formule:hover{border-color:var(--bleu)}
.formule input{transform:scale(1.3);margin-right:8px}
.formule.sel{border-color:var(--bleu);background:#eef4ff;box-shadow:var(--ombre)}
.formule.desactive{opacity:.55;cursor:not-allowed}
.formule.desactive:hover{border-color:var(--bord);transform:none}
label.champ{display:block;margin:12px 0}
label.champ span{display:block;font-weight:700;margin-bottom:5px}
label.champ span.petit-texte{font-weight:400;font-size:.88rem;color:var(--muted)}
input,select,textarea{width:100%;padding:12px;border:1.5px solid var(--bord);border-radius:10px;font-size:1rem;font-family:inherit}
input:focus,select,textarea:focus{outline:none;border-color:var(--bleu)}
.deux{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.jours{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:12px 0}
.jour{border:2px solid var(--bord);background:#fff;border-radius:10px;padding:10px;text-align:center;cursor:pointer}
.jour.sel{border-color:var(--bleu);background:#eef4ff;font-weight:800}
.jour small{display:block;color:var(--muted)}
.jour small.ok{color:var(--vert);font-weight:800}
.jour small.ko{color:var(--rouge)}
.heures{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}
.heure{border:2px solid var(--bord);background:#fff;border-radius:9px;padding:9px 14px;cursor:pointer;font-weight:700;text-align:center}
.heure small{display:block;font-size:.7rem;font-weight:600;opacity:.8;margin-top:2px}
.heure.sel{background:var(--bleu);color:#fff;border-color:var(--bleu)}
.heure.indispo{opacity:.35;text-decoration:line-through;cursor:not-allowed}
.recap{background:#f0f5ff;border:1px dashed var(--bleu);border-radius:12px;padding:18px;margin:16px 0}
.ligne-panier{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--bord);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.panier-droite{text-align:right;white-space:nowrap}
.ok-inclus{color:#0c6b34;font-weight:800}
.ligne-recap{padding:9px 0;border-bottom:1px dashed #c9d8f5}
.ligne-recap:last-child{border-bottom:0}
.paiement{background:#fff8f0;border:1.5px solid #ffd9ab;border-radius:12px;padding:18px}
.alerte{background:#fff4d6;border:1px solid #e6c200;border-radius:10px;padding:12px 15px;margin:14px 0}
.succes{background:#e5f7ec;border:1.5px solid var(--vert);border-radius:12px;padding:22px;text-align:center}
.ref{font-size:1.4rem;font-weight:800;color:#0c6b34;letter-spacing:1px}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:10px;border-bottom:1px solid var(--bord);text-align:left;font-size:.93rem}
th{background:#eef3ff}
.barre-admin{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}
/* Footer */
footer{background:#0a224f;color:#dbe6ff;padding:36px 0;margin-top:30px}
footer .wrap{display:grid;grid-template-columns:2fr 1fr 1fr;gap:20px}
footer a{color:#dbe6ff}
.burger{display:none;margin-left:auto;font-size:1.6rem;background:none;border:0;cursor:pointer}
/* Divers */
.centre{text-align:center}
.mt{margin-top:18px}
.petit-texte{font-size:.88rem;color:var(--muted)}
.spin{display:inline-block;width:18px;height:18px;border:3px solid #fff;border-top-color:transparent;border-radius:50%;animation:tour .7s linear infinite;vertical-align:middle}
@keyframes tour{to{transform:rotate(360deg)}}
@media(max-width:860px){
  .g3,.g2,.g4,.g4.hero-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
  .hero h1{font-size:1.8rem}
  .hero-v2 .slogan{font-size:2.65rem}
  .hero-grid{grid-template-columns:1fr;gap:28px}
  .hero-card{max-width:520px}
  nav.menu{display:none;width:100%;flex-direction:column}
  nav.menu.ouvert{display:flex}
  .burger{display:block}
  .deux{grid-template-columns:1fr}
  footer .wrap{grid-template-columns:1fr}
}
@media print{ header.site,.topbar,footer,.noprint{display:none!important} body{background:#fff} }
/* ===== Planning / statuts / espaces ===== */
.st{display:inline-block;font-size:.78rem;font-weight:800;padding:4px 11px;border-radius:999px;white-space:nowrap}
.st-attente{background:#fff4d6;color:#8a6d00;border:1px solid #e6c200}
.st-confirmee{background:#e3f0ff;color:#0b4fd6;border:1px solid #0b4fd6}
.st-refusee{background:#ffe3e3;color:#b00;border:1px solid #e88}
.st-terminee{background:#e5f7ec;color:#0c6b34;border:1px solid #12a150}
.st-annulee{background:#eef1f6;color:#5b6b8c;border:1px solid #b9c2d4}
.lecon{border-left:5px solid var(--bleu)}
td select{padding:7px;font-size:.85rem;min-width:130px}
/* ===== Gestion : calendrier moniteur ===== */
table.cal{width:100%;border-collapse:collapse;background:#fff;font-size:.85rem}
table.cal th,table.cal td{border:1px solid var(--bord);padding:6px;text-align:center;min-width:62px}
table.cal th{background:#eef3ff}
.c-vide{cursor:pointer;color:#9db4dd;font-weight:800;font-size:1.2rem}
.c-vide:hover{background:#eaf0ff;color:var(--bleu)}
.c-libre{background:#e5f7ec;cursor:pointer;font-weight:700;color:#0c6b34}
.c-libre:hover{background:#c9ecd8}
.c-pris{background:#ffe3e3;color:#b00;font-size:.78rem}
.c-attente{background:#fff4d6;color:#8a6d00;font-size:.78rem;border:1px solid #e6c200}
.c-code{background:#e3f0ff;color:#0b4fd6;font-size:.78rem;border:1px solid #0b4fd6;cursor:pointer;font-weight:700}
.c-code:hover{background:#c9ddff}
.c-passe{background:#f1f4f9;color:#b9c2d4}
.mois{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.mj{text-align:center;color:var(--muted);font-size:.85rem}
.jm{background:#fff;border:1.5px solid var(--bord);border-radius:10px;padding:8px;min-height:66px;cursor:pointer;text-align:center}
.jm small{color:var(--muted)}
.jm-ouvert{border-color:var(--vert);background:#f2fbf5}
.jm-ferme:hover{border-color:var(--bleu)}
.jm-passe{opacity:.45;cursor:default}
.c-autres{background:#e8f0fe;color:#0b4fd6;font-weight:700;cursor:pointer}
.c-autres:hover{background:#d5e3fd}
.legende{font-size:.85rem;color:var(--muted);margin-top:10px}
