:root{
  --bg:#f7f4fb; --surface:#ffffff; --sunk:#f1ebf6; --fg:#1f1529; --muted:#6a5e76; --line:#e4dbec;
  --accent:#3b1270; --accent-ink:#ffffff; --accent-soft:#efe7f8;
  --orange:#d97c06; --orange-ink:#ffffff; --orange-soft:#fdeedd;
  --hero:#210541; --hero-ink:#ffffff; --hero-muted:#cbbbe0; --hero-orange:#f39a1e;
  --ok:#1b7a4c; --ok-bg:#e1f2e8; --warn:#8a5d00; --warn-bg:#f8efd4; --bad:#b0281c; --bad-bg:#fbe6e3;
  --f-display:"Poppins","Arial Black",Arial,sans-serif;
  --f-body:"Barlow",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.5}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
h1,h2,h3{font-family:var(--f-display);font-weight:700;margin:0;line-height:1.15}
button,input,select{font:inherit;color:inherit}
a{color:var(--accent)}
.muted{color:var(--muted)}
.hide{display:none !important}

.top{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--line)}
.top-in{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;max-width:1100px;margin:0 auto}
.brand{display:flex;align-items:center;gap:10px;cursor:pointer;border:0;background:none;padding:0;text-align:left}
.brand img{width:46px;height:46px;border-radius:50%;display:block}
.brand-name{font-family:var(--f-display);font-weight:800;font-style:italic;font-size:1rem;text-transform:uppercase;color:var(--accent);line-height:1.1}
.brand-city{font-family:var(--f-display);font-weight:700;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--orange)}
.tabs{display:flex;gap:4px;flex-wrap:wrap}
.tabs button{border:0;background:none;padding:8px 10px;font-weight:600;color:var(--muted);cursor:pointer;border-radius:8px}
.tabs button.active{color:var(--accent);background:var(--sunk)}

.btn{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 14px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:var(--accent)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-orange{background:var(--orange);border-color:var(--orange);color:#fff}
.btn-sm{padding:5px 10px;font-size:.85rem}
.btn-danger{color:var(--bad)}
.input{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 10px;width:100%}
label{display:grid;gap:4px;font-size:.88rem;font-weight:600;color:var(--muted)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px}
.chip{display:inline-flex;padding:2px 9px;border-radius:999px;font-size:.78rem;font-weight:700}
.c-ok{background:var(--ok-bg);color:var(--ok)}
.c-warn{background:var(--warn-bg);color:var(--warn)}
.c-bad{background:var(--bad-bg);color:var(--bad)}
.c-info{background:var(--accent-soft);color:var(--accent)}

/* Accueil public */
.hero{background:var(--hero);color:var(--hero-ink);position:relative;overflow:hidden}
.hero-in{padding:50px 0 56px;display:grid;gap:14px;position:relative;z-index:1}
.eyebrow{font-family:var(--f-display);font-weight:700;font-size:.82rem;letter-spacing:.18em;text-transform:uppercase;color:var(--hero-orange)}
.hero h1{font-size:clamp(1.3rem,7.2vw,3.4rem);font-weight:800;font-style:italic;text-transform:uppercase;line-height:1.05;white-space:nowrap}
.hero h1 .o{color:var(--hero-orange)}
.hero p{color:var(--hero-muted);font-size:1.08rem;max-width:56ch;margin:0}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.btn-ghost-light{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff}
.badges{display:flex;flex-wrap:wrap;gap:10px}
.badge{border:2px solid var(--hero-orange);border-radius:12px;padding:5px 13px;font-family:var(--f-display);font-weight:700;text-transform:uppercase;font-size:.88rem;line-height:1.15}
.badge small{display:block;font-weight:500;text-transform:none;font-size:.72rem;color:var(--hero-muted)}
.chevrons{position:absolute;right:max(16px,5vw);top:50%;transform:translateY(-50%);display:grid;gap:4px;z-index:0}
.chevrons i{display:block;width:52px;height:26px;background:#fff;opacity:.9;clip-path:polygon(0 0,22% 0,50% 52%,78% 0,100% 0,50% 100%)}
.chevrons i:nth-child(even){background:var(--hero-orange)}
@media (max-width:760px){.chevrons{display:none}}
.road{height:5px;background:repeating-linear-gradient(90deg,var(--hero-orange) 0 32px,transparent 32px 52px);background-size:52px 5px;position:absolute;left:0;right:0;bottom:16px;animation:road-move 1.8s linear infinite}
@keyframes road-move{from{background-position:0 0}to{background-position:-52px 0}}
@media (prefers-reduced-motion:reduce){.road{animation:none}}
.band{padding:44px 0}
.band h2{font-size:clamp(1.4rem,3.5vw,1.9rem);text-transform:uppercase;font-style:italic;margin-bottom:4px}
.band-sub{color:var(--muted);margin:0 0 18px}
.offers{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.offer{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;display:grid;gap:8px}
.offer h3{font-size:1.02rem}
.offer .price{font-family:var(--f-display);font-weight:800;font-size:1.7rem;color:var(--accent)}
.offer .price small{font-size:.85rem;color:var(--muted);font-weight:600}
.offer .hrs{color:var(--orange);font-weight:700;font-size:.8rem;text-transform:uppercase}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.step{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;gap:5px}
.step .n{font-family:var(--f-display);font-weight:800;font-size:.75rem;color:var(--orange);letter-spacing:.1em}
.step b{font-family:var(--f-display);font-size:1rem;text-transform:uppercase}
.step span{color:var(--muted);font-size:.92rem}
.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.contact-grid div{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}
.contact-grid small{display:block;text-transform:uppercase;font-size:.7rem;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-bottom:3px}
.foot{border-top:1px solid var(--line);padding:18px 0;color:var(--muted);font-size:.85rem;display:flex;flex-wrap:wrap;gap:4px 16px;justify-content:space-between}
.foot a{color:var(--muted);text-decoration:underline}
.legal-wrap{max-width:760px;margin:0 auto;padding:36px 16px 60px;display:grid;gap:10px}
.legal-wrap h1{font-size:1.6rem;font-style:italic;text-transform:uppercase}
.legal-wrap h2{font-size:1.05rem;margin-top:18px}
.legal-wrap p,.legal-wrap li{color:var(--fg);line-height:1.6}

/* Connexion */
.login-wrap{padding:40px 0 60px;max-width:760px;margin:0 auto}
.login-wrap h1{font-size:1.8rem;font-style:italic;text-transform:uppercase;margin-bottom:18px}
.login-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.login-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;display:grid;gap:10px}
.login-card.staff{background:var(--sunk)}
.err{color:var(--bad);font-weight:600;font-size:.88rem;min-height:1.2em}

/* App */
main.app{max-width:1100px;margin:0 auto;padding:20px 16px 60px;display:grid;gap:16px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);font-size:.92rem}
th{color:var(--muted);font-weight:700;font-size:.8rem;text-transform:uppercase}
.list-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line)}
.list-row:last-child{border-bottom:0}
.list-row b{display:block}
.modal-bg{position:fixed;inset:0;background:rgba(20,10,30,.5);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}
.modal{background:var(--surface);border-radius:16px;padding:22px;max-width:520px;width:100%;max-height:88vh;overflow:auto;display:grid;gap:12px}
.modal h2{font-size:1.2rem}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sp{flex:1}
@media print{.top,.tabs,.btn,.no-print{display:none !important}}
