/* GDIP Location — reprise de la maquette Claude Design (direction B : anthracite + jaune chantier). */
:root { --bg:#1A1E23; --sf:#262B32; --sf2:#313740; --ink:#F4F4F2; --mut:#AEB3BB; --ln:rgba(255,255,255,.14);
  --ac:#FFC70F; --acd:#FFD447; --aci:#1A1E23; --dk:#F4F4F2; --dki:#1A1E23; --ok:#5BD08A; --ko:#FF7A6B;
  --fd:'Bricolage Grotesque', sans-serif; --fb:'DM Sans', sans-serif; --fm:'JetBrains Mono', monospace;
  --pad:clamp(16px,4vw,40px); color-scheme:dark; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--bg); color:var(--ink); font-family:var(--fb); -webkit-font-smoothing:antialiased; overflow-x:hidden; }
a { color:var(--ac); text-decoration:none; } a:hover { color:var(--acd); }
img { max-width:100%; }
input, select, textarea, button { font-family:inherit; font-size:16px; }
input::placeholder, textarea::placeholder { color:var(--mut); opacity:.8; }
h1, h2, h3 { font-family:var(--fd); font-weight:900; margin:0; letter-spacing:-.01em; text-wrap:balance; }
.mut { color:var(--mut); }
.sur { font-family:var(--fm); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--ac); }
.mono { font-family:var(--fm); }
.enveloppe { max-width:1320px; margin:0 auto; padding:clamp(28px,5vw,64px) var(--pad); }
.serre { max-width:860px; }
@keyframes gdUp { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }

/* bandeau démo */
.demo { background:var(--ac); color:var(--aci); font-family:var(--fm); font-size:11px; letter-spacing:.06em; text-align:center; padding:6px 12px; }

/* en-tête */
.tete { position:sticky; top:0; z-index:60; background:var(--bg); border-bottom:1px solid var(--ln); }
.tete-in { max-width:1320px; margin:0 auto; padding:clamp(8px,1.4vw,14px) var(--pad); display:flex; align-items:center; justify-content:space-between; gap:16px; }
.logo img { display:block; height:clamp(54px,7vw,88px); width:auto; max-width:46vw; object-fit:contain; }
.nav-desk { display:flex; align-items:center; gap:clamp(14px,2vw,30px); font-weight:600; font-size:15px; white-space:nowrap; }
.nav-desk a { color:var(--ink); } .nav-desk a:hover { color:var(--ac); }
.tete-act { display:flex; align-items:center; gap:8px; }
.btn-panier, .btn-compte { min-height:48px; display:flex; align-items:center; gap:10px; padding:10px clamp(12px,1.6vw,18px); font-weight:700; font-size:15px; white-space:nowrap; }
.btn-panier { background:var(--ink); color:var(--bg); } .btn-panier:hover { background:var(--ac); color:var(--aci); }
.btn-compte { border:1px solid var(--ln); color:var(--ink); background:var(--sf); } .btn-compte:hover { border-color:var(--ac); color:var(--ink); }
.pastille { min-width:26px; height:26px; padding:0 7px; background:var(--ac); color:var(--aci); display:flex; align-items:center; justify-content:center; font-family:var(--fm); font-size:13px; }
.burger { display:none; width:48px; height:48px; border:1px solid var(--ln); background:var(--sf); flex-direction:column; align-items:center; justify-content:center; gap:5px; cursor:pointer; }
.burger span { width:20px; height:2px; background:var(--ink); }
.nav-mob { display:none; border-top:1px solid var(--ln); background:var(--sf); padding:10px 16px 18px; }
.nav-mob a { display:block; }
.nav-mob .gros { color:var(--ink); font-family:var(--fd); font-weight:800; font-size:24px; padding:10px 0; border-top:1px solid var(--ln); }
.nav-mob .gros:first-child { border-top:0; }
.nav-mob .sous { color:var(--mut); font-size:16px; padding:8px 0 8px 14px; }
@media (max-width:1000px) {
  .nav-desk { display:none; } .burger { display:flex; }
  .btn-panier .lib, .btn-compte .lib { display:none; }
  body.menu-ouvert .nav-mob { display:block; }
}

/* messages */
.flashs { position:sticky; top:96px; z-index:55; max-width:1320px; margin:12px auto 0; padding:0 var(--pad); display:grid; gap:8px; }
.flash { background:var(--ink); color:var(--bg); padding:14px 18px; display:flex; gap:14px; align-items:center; animation:gdUp .3s ease both; box-shadow:0 18px 40px rgba(0,0,0,.28); }
.coche { width:22px; height:22px; flex:none; background:var(--ac); color:var(--aci); display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:700; }
.toast { position:fixed; left:50%; bottom:20px; transform:translateX(-50%); z-index:90; background:var(--ink); color:var(--bg); padding:12px 18px; }

/* boutons */
.btn { min-height:52px; display:inline-flex; align-items:center; justify-content:center; gap:10px; border:0; background:var(--ac); color:var(--aci); font-weight:700; font-size:16px; padding:14px 22px; cursor:pointer; text-align:center; }
.btn:hover { background:var(--acd); color:var(--aci); }
.btn-l { background:transparent; border:2px solid var(--ink); color:var(--ink); }
.btn-l:hover { background:var(--ink); color:var(--bg); }
.btn-ko { background:transparent; border:2px solid var(--ko); color:var(--ko); }
.btn-ko:hover { background:var(--ko); color:var(--bg); }
.btn-p { min-height:40px; padding:8px 14px; font-size:14px; }
.btn[disabled] { opacity:.45; cursor:not-allowed; }
.lien { font-weight:700; font-size:15px; color:var(--ink); border-bottom:2px solid var(--ac); padding-bottom:3px; }

/* accueil */
.hero { border-bottom:1px solid var(--ln); }
.hero-in { max-width:1320px; margin:0 auto; padding:clamp(28px,5vw,72px) var(--pad); display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,480px),1fr)); gap:clamp(24px,4vw,56px); align-items:center; }
.etiquettes { display:flex; flex-wrap:wrap; gap:6px; }
.etiquettes span { border:1px solid var(--ln); padding:7px 10px; font-family:var(--fm); font-size:11px; letter-spacing:.1em; text-transform:uppercase; }
.hero h1 { margin-top:20px; font-size:clamp(40px,6.2vw,86px); line-height:.95; letter-spacing:-.02em; }
.hero p { margin:20px 0 0; max-width:50ch; color:var(--mut); font-size:clamp(16px,1.3vw,19px); line-height:1.55; }
.hero .actions { margin-top:28px; display:flex; flex-wrap:wrap; gap:10px; }
.hero-photo { position:relative; aspect-ratio:1/1; max-height:620px; width:100%; background:#27272A; border:1px solid var(--ln); overflow:hidden; }
.hero-photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; opacity:0; transition:opacity 1.1s ease; }
.hero-photo img.on { opacity:1; }
.titre-sec { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:12px 24px; margin-bottom:24px; }
.titre-sec h2 { font-size:clamp(30px,4vw,54px); line-height:1; }
.cats { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%,240px),1fr)); gap:10px; }
.cat { min-height:150px; background:var(--sf); color:var(--ink); border:1px solid var(--ln); padding:clamp(14px,2vw,22px); display:flex; flex-direction:column; justify-content:space-between; gap:14px; transition:transform .2s; }
.cat:hover { transform:translateY(-3px); color:var(--ink); border-color:var(--ac); }
.cat:first-child { background:var(--ac); color:var(--aci); }
.cat .haut { display:flex; justify-content:space-between; font-family:var(--fm); font-size:11px; letter-spacing:.12em; }
.cat .nom { display:block; font-family:var(--fd); font-weight:900; font-size:28px; line-height:1; }
.cat .des { display:block; margin-top:8px; font-size:13px; opacity:.8; }
.etapes { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,260px),1fr)); gap:10px; }
.etape { background:var(--sf); border:1px solid var(--ln); padding:clamp(20px,2.6vw,30px); display:flex; flex-direction:column; gap:12px; }
.etape .n { width:48px; height:48px; background:var(--ac); color:var(--aci); display:flex; align-items:center; justify-content:center; font-family:var(--fd); font-weight:900; font-size:24px; }
.etape h3 { font-size:clamp(22px,2.2vw,28px); line-height:1.05; }
.etape p { margin:0; color:var(--mut); font-size:15px; line-height:1.55; }
.bandeau { background:var(--dk); color:var(--dki); padding:clamp(24px,4vw,44px); }
.bandeau .grille { margin-top:24px; display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,240px),1fr)); gap:14px; }
.bandeau .z { border:1px solid currentColor; padding:18px 20px; }
.bandeau .gros { font-family:var(--fd); font-weight:900; font-size:40px; line-height:1; }
.bandeau strong { color:#B88A00; }

/* cartes machines */
.cartes { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%,280px),1fr)); gap:12px; }
.carte { display:flex; flex-direction:column; background:var(--sf); border:1px solid var(--ln); color:var(--ink); }
.carte .ph { position:relative; display:block; aspect-ratio:4/3; background:#27272A; overflow:hidden; }
.carte .ph img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; }
.carte .ph .vide { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--mut); font-family:var(--fm); font-size:11px; letter-spacing:.1em; text-transform:uppercase; padding:20px; text-align:center; }
.badge { position:absolute; left:10px; top:10px; background:var(--bg); color:var(--ink); font-family:var(--fm); font-size:10px; letter-spacing:.14em; text-transform:uppercase; padding:5px 8px; }
.carte .corps { padding:18px 18px 20px; display:flex; flex-direction:column; gap:10px; flex:1; }
.carte .nom { font-family:var(--fd); font-weight:800; font-size:21px; line-height:1.1; color:var(--ink); }
.carte .use { color:var(--mut); font-size:14px; line-height:1.45; }
.prixduo { margin-top:auto; display:flex; gap:1px; background:var(--ln); border:1px solid var(--ln); }
.prixduo > div { flex:1; background:var(--sf); padding:10px 12px; }
.prixduo .l { font-family:var(--fm); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--mut); }
.prixduo .v { margin-top:4px; display:flex; align-items:baseline; gap:5px; flex-wrap:wrap; }
.prixduo .v b { font-family:var(--fd); font-weight:800; font-size:26px; line-height:1; }
.prixduo .v span { font-family:var(--fm); font-size:10px; color:var(--mut); }
.filtres { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:22px; }
.filtres a { background:var(--sf); border:1px solid var(--ln); color:var(--ink); padding:9px 12px; font-size:14px; }
.filtres a.on, .filtres a:hover { border-color:var(--ac); color:var(--ac); }

/* fiche machine */
.fiche { display:grid; grid-template-columns:1fr 1fr; grid-template-areas:"photo info" "details info"; grid-template-rows:auto 1fr; gap:clamp(20px,3vw,40px) clamp(24px,4vw,48px); align-items:start; }
.f-photo { grid-area:photo; } .f-info { grid-area:info; } .f-details { grid-area:details; }
@media (max-width:900px) { .fiche { grid-template-columns:1fr; grid-template-areas:"photo" "info" "details"; } }
.fiche .photo { aspect-ratio:4/3; background:#27272A; border:1px solid var(--ln); display:flex; align-items:center; justify-content:center; }
.fiche .photo img { width:100%; height:100%; object-fit:contain; }
.fiche h1 { font-size:clamp(32px,4.4vw,58px); line-height:1; margin-top:10px; }
.blocprix { display:grid; grid-template-columns:repeat(auto-fit, minmax(110px,1fr)); gap:1px; background:var(--ln); border:1px solid var(--ln); margin-top:20px; }
.blocprix > div { background:var(--sf); padding:14px 16px; }
.blocprix .l { font-family:var(--fm); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--mut); }
.blocprix .v { margin-top:6px; font-family:var(--fd); font-weight:900; font-size:clamp(26px,3vw,38px); line-height:.95; }
.blocprix .t { font-family:var(--fm); font-size:11px; color:var(--mut); }
.liste { margin:10px 0 0; padding:0; list-style:none; display:grid; gap:6px; }
.liste li { padding-left:18px; position:relative; color:var(--mut); line-height:1.5; }
.liste li::before { content:""; position:absolute; left:0; top:.6em; width:8px; height:8px; background:var(--ac); }
.encart { background:var(--sf); border:1px solid var(--ln); padding:clamp(18px,2.6vw,28px); }
.encart + .encart { margin-top:14px; }
.encart h2, .encart h3 { font-size:clamp(22px,2.4vw,30px); margin-bottom:12px; }
.resa-form { display:grid; gap:14px; }
.choix { display:flex; flex-wrap:wrap; gap:6px; }
.choix label { position:relative; }
.choix input { position:absolute; opacity:0; pointer-events:none; }
.choix span { display:block; border:1px solid var(--ln); background:var(--bg); padding:10px 14px; cursor:pointer; font-size:15px; }
.choix input:checked + span { border-color:var(--ac); background:var(--ac); color:var(--aci); font-weight:700; }
.champ { display:grid; gap:6px; }
.champ > span, .lbl { font-family:var(--fm); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--mut); }
.champ input, .champ select, .champ textarea { width:100%; min-height:50px; background:var(--bg); color:var(--ink); border:1px solid var(--ln); padding:12px 14px; }
.champ input:focus, .champ select:focus, .champ textarea:focus { outline:2px solid var(--ac); outline-offset:-1px; }
.duo { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,220px),1fr)); gap:12px; }
.resultat { border:1px dashed var(--ln); padding:14px; display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; align-items:baseline; }
.resultat b { font-family:var(--fd); font-size:30px; }
.ok { color:var(--ok); } .ko { color:var(--ko); }

/* calendrier */
.cal { user-select:none; }
.cal-tete { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.cal-tete button { width:40px; height:40px; background:var(--bg); color:var(--ink); border:1px solid var(--ln); cursor:pointer; }
.cal-tete b { font-family:var(--fd); font-size:20px; text-transform:capitalize; }
.cal-grille { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.cal-grille .js { font-family:var(--fm); font-size:10px; color:var(--mut); text-align:center; padding:4px 0; text-transform:uppercase; }
.cal-grille button { aspect-ratio:1/1; min-height:38px; border:1px solid var(--ln); background:var(--bg); color:var(--ink); cursor:pointer; font-size:14px; position:relative; padding:0; }
.cal-grille button.libre { border-color:rgba(91,208,138,.5); }
.cal-grille button.complet { background:repeating-linear-gradient(45deg,#2b2f35,#2b2f35 4px,#23272c 4px,#23272c 8px); color:#6b7079; cursor:not-allowed; text-decoration:line-through; }
.cal-grille button.passe, .cal-grille button.interdit { opacity:.32; cursor:not-allowed; }
.cal-grille button.sel { background:var(--ac); color:var(--aci); border-color:var(--ac); font-weight:700; }
.cal-grille button.dans { background:rgba(255,199,15,.25); border-color:var(--ac); }
.cal-grille button small { position:absolute; right:3px; bottom:1px; font-size:9px; font-family:var(--fm); color:var(--mut); }
.cal-leg { margin-top:8px; display:flex; gap:14px; flex-wrap:wrap; font-size:12px; color:var(--mut); }
.cal-leg i { display:inline-block; width:12px; height:12px; vertical-align:-2px; margin-right:5px; border:1px solid var(--ln); }

/* tableaux / récap */
.recap { width:100%; border-collapse:collapse; }
.recap td, .recap th { padding:12px 8px; border-bottom:1px solid var(--ln); text-align:left; vertical-align:top; }
.recap th { font-family:var(--fm); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--mut); font-weight:500; }
.recap .d { text-align:right; white-space:nowrap; }
.recap tfoot td { border:0; padding:6px 8px; }
.recap tfoot tr.total td { font-family:var(--fd); font-size:24px; font-weight:900; padding-top:12px; }
.table-scroll { overflow-x:auto; }
.statut { display:inline-block; font-family:var(--fm); font-size:11px; letter-spacing:.06em; text-transform:uppercase; padding:4px 8px; border:1px solid var(--ln); white-space:nowrap; }
.statut.a_valider { background:var(--ac); color:var(--aci); border-color:var(--ac); }
.statut.confirmee { border-color:var(--ok); color:var(--ok); }
.statut.en_cours { background:var(--ok); color:var(--bg); border-color:var(--ok); }
.statut.refusee, .statut.annulee { color:var(--ko); border-color:var(--ko); }
.statut.terminee { color:var(--mut); }

/* signature */
.signature { width:100%; height:200px; background:#F4F4F2; touch-action:none; display:block; cursor:crosshair; }
.coche-cg { display:flex; gap:12px; align-items:flex-start; line-height:1.5; }
.coche-cg input { width:22px; height:22px; flex:none; accent-color:var(--ac); margin-top:2px; }
.cg { max-height:260px; overflow:auto; border:1px solid var(--ln); padding:14px 18px; background:var(--bg); font-size:14px; }

/* pied */
.pied { border-top:1px solid var(--ln); margin-top:clamp(40px,6vw,80px); }
.pied-in { max-width:1320px; margin:0 auto; padding:clamp(28px,4vw,48px) var(--pad); display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,240px),1fr)); gap:24px; }
.pied-in a { display:block; color:var(--ink); padding:4px 0; }
.pied-logo { height:70px; width:auto; }
.pied-bas { border-top:1px solid var(--ln); padding:16px var(--pad); text-align:center; font-family:var(--fm); font-size:11px; color:var(--mut); }
.pied-bas a { color:var(--mut); }

/* admin (Grégory, sur téléphone) */
body.admin { --bg:#15181C; }
.adm-nav { display:flex; gap:6px; overflow-x:auto; padding:10px var(--pad); border-bottom:1px solid var(--ln); background:var(--sf); position:sticky; top:0; z-index:50; }
.adm-nav a { white-space:nowrap; color:var(--ink); padding:10px 14px; border:1px solid var(--ln); font-weight:600; font-size:14px; }
.adm-nav a.on { background:var(--ac); color:var(--aci); border-color:var(--ac); }
.kpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:10px; margin-bottom:22px; }
.kpi { background:var(--sf); border:1px solid var(--ln); padding:16px; color:var(--ink); }
.kpi b { display:block; font-family:var(--fd); font-size:40px; line-height:1; }
.kpi.chaud { background:var(--ac); color:var(--aci); }
.resa-carte { display:block; background:var(--sf); border:1px solid var(--ln); padding:16px; color:var(--ink); margin-bottom:10px; }
.resa-carte:hover { border-color:var(--ac); color:var(--ink); }
.resa-carte .l1 { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; align-items:center; }
.resa-carte .l2 { margin-top:6px; color:var(--mut); font-size:14px; line-height:1.5; }
.actions-adm { display:grid; gap:10px; grid-template-columns:repeat(auto-fit, minmax(min(100%,220px),1fr)); }
.actions-adm form { display:grid; gap:8px; }
.agenda { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; }
.agenda .j { min-height:96px; background:var(--sf); border:1px solid var(--ln); padding:5px; font-size:11px; overflow:hidden; }
.agenda .j.hors { opacity:.35; }
.agenda .j.auj { border-color:var(--ac); }
.agenda .j .num { font-family:var(--fm); color:var(--mut); }
.agenda .j a { display:block; margin-top:3px; padding:2px 4px; background:var(--sf2); color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; border-left:3px solid var(--ok); }
.agenda .j a.a_valider { border-left-color:var(--ac); }
.agenda .j a.terminee { opacity:.5; }
.agenda-liste { display:none; }
@media (max-width:760px) { .agenda { display:none; } .agenda-liste { display:block; } }
.journal { font-size:14px; }
.journal li { padding:6px 0; border-bottom:1px solid var(--ln); list-style:none; }
.grille-prix { width:100%; border-collapse:collapse; }
.grille-prix td, .grille-prix th { padding:6px; border-bottom:1px solid var(--ln); }
.grille-prix input { width:100%; min-height:42px; background:var(--bg); color:var(--ink); border:1px solid var(--ln); padding:8px; }
.alerte { border:1px solid var(--ac); background:rgba(255,199,15,.08); padding:12px 14px; margin:10px 0; line-height:1.5; }
pre.corps-mail { white-space:pre-wrap; font-family:var(--fb); font-size:14px; color:var(--mut); margin:6px 0 0; }
