:root{--bg:#182145;--bg2:#111937;--card:rgba(255,255,255,.07);--line:rgba(255,255,255,.2);--txt:#fff;--mut:rgba(255,255,255,.68);--ok:#8be0a8;--warn:#ffd27a;--bad:#ff9a9a}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);font:15px/1.45 Montserrat,"Segoe UI",system-ui,-apple-system,sans-serif}
a{color:#fff}
h1{font-size:1.6rem;margin:0 0 .2em;font-weight:700;letter-spacing:-.01em}h2{font-size:1.15rem;margin:1.4em 0 .6em;font-weight:600}h3{font-size:1rem;margin:0 0 .5em}
.shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
nav.side{background:var(--bg2);padding:18px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--line)}
nav.side img{width:170px;margin:0 0 6px 4px}
nav.side .nom{font-weight:700;font-size:1.05rem;margin:0 0 14px 6px;letter-spacing:.04em}
nav.side a{padding:9px 12px;border-radius:6px;text-decoration:none;color:var(--mut)}
nav.side a:hover{background:var(--card);color:#fff}
nav.side a.on{background:#fff;color:var(--bg);font-weight:600}
nav.side .sp{flex:1}
main{padding:26px 32px 60px;min-width:0}
.bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 18px}.bar .grow{flex:1}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;flex-wrap:wrap}
.tabs a{padding:8px 14px;text-decoration:none;color:var(--mut);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}
.tabs a.on{color:#fff;border-color:#fff;font-weight:600}
button,.btn{font:inherit;background:transparent;color:#fff;border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer;text-decoration:none;display:inline-block;white-space:nowrap}
button:hover,.btn:hover{border-color:#fff;background:var(--card)}
button.p,.btn.p{background:#fff;color:var(--bg);border-color:#fff;font-weight:600}
button.p:hover{background:#e6e9f7}
button.s{padding:3px 8px;font-size:.85rem}button.d{color:var(--bad);border-color:rgba(255,154,154,.5)}
button:disabled{opacity:.35;cursor:not-allowed}
input,select,textarea{font:inherit;color:#fff;background:rgba(255,255,255,.09);border:1px solid var(--line);border-radius:6px;padding:6px 9px;max-width:100%}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:2px solid #fff;outline-offset:1px}
select option{background:var(--bg);color:#fff}
input[type=checkbox]{width:auto;accent-color:#fff}
input[type=date],input[type=datetime-local]{color-scheme:dark}
textarea{width:100%;min-height:80px}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px 18px;margin-bottom:16px}
.grid{display:grid;gap:12px 18px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.grid label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--mut)}.grid label input,.grid label select{color:#fff}
.grid .w2{grid-column:span 2}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
table{border-collapse:collapse;width:100%;font-size:.9rem}
th{text-align:left;font-weight:600;padding:9px 10px;background:rgba(255,255,255,.12);white-space:nowrap}
td{padding:7px 10px;border-top:1px solid var(--line);vertical-align:middle}
tr.chap td{background:rgba(255,255,255,.12);font-weight:700;text-align:center}
tr.futur td:nth-child(2){box-shadow:inset 4px 0 0 var(--ok)}
tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--card)}
td input[type=number]{width:70px}td input.w{width:100%;min-width:120px}
.num{text-align:right;font-variant-numeric:tabular-nums}
.badge{display:inline-block;padding:1px 9px;border:1px solid var(--line);border-radius:99px;font-size:.78rem}
.st-confirmee{border-color:var(--ok);color:var(--ok)}.st-sortie{border-color:var(--warn);color:var(--warn)}.st-facturee,.st-payee{border-color:#fff}
.st-brouillon{color:var(--mut)}
.err{color:var(--bad)}.ok{color:var(--ok)}.mut{color:var(--mut)}.warn{color:var(--warn)}
.alert{border:1px solid var(--warn);color:var(--warn);border-radius:8px;padding:10px 14px;margin-bottom:14px}
.kpis{display:flex;gap:26px;flex-wrap:wrap}.kpis div{min-width:90px}.kpis b{display:block;font-size:1.25rem}.kpis span{font-size:.8rem;color:var(--mut)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}
.modal{position:fixed;inset:0;background:rgba(5,9,25,.75);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;z-index:20}
.modal .box{background:var(--bg);border:1px solid #fff;border-radius:10px;padding:22px;width:min(720px,100%)}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:50;display:flex;flex-direction:column;gap:6px}
#toast div{background:#fff;color:var(--bg);padding:9px 16px;border-radius:6px;font-weight:600;max-width:90vw}
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login form{width:min(380px,100%);display:flex;flex-direction:column;gap:12px}
.login img{width:280px;max-width:80%;margin:0 auto 10px;display:block}
.login input{padding:11px 12px}
.cal{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.cal .h{padding:6px;background:rgba(255,255,255,.12);text-align:center;font-weight:600;font-size:.85rem}
.cal .c{min-height:104px;border-top:1px solid var(--line);border-left:1px solid var(--line);padding:4px;font-size:.78rem;min-width:0}
.cal .c:nth-child(7n+1){border-left:0}.cal .c.out{opacity:.4}.cal .c.today .d{background:#fff;color:var(--bg);border-radius:99px;padding:0 6px}
.cal .ev{display:block;width:100%;text-align:left;padding:1px 5px;margin-top:2px;border:0;border-left:3px solid #fff;border-radius:3px;background:rgba(255,255,255,.14);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal .ev.presta{border-left-color:var(--warn)}
.people{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.person{text-align:center}.person img,.avatar{width:84px;height:84px;border-radius:50%;object-fit:cover;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;margin:0 auto 8px;font-size:1.6rem}
.thumb{width:44px;height:44px;object-fit:cover;border-radius:5px;border:1px solid var(--line)}
canvas.sig{background:#fff;border-radius:6px;width:100%;height:170px;touch-action:none;cursor:crosshair}
.perms{display:flex;flex-wrap:wrap;gap:6px 16px}.perms label{display:flex;gap:6px;align-items:center}
@media(max-width:820px){.shell{grid-template-columns:1fr}nav.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center}nav.side img{width:120px}nav.side .nom,nav.side .sp{display:none}main{padding:18px 14px}.grid .w2{grid-column:auto}}
@media print{nav.side,.bar,button,#toast{display:none!important}.shell{display:block}body{background:#fff;color:#000}}
@media(prefers-reduced-motion:no-preference){.modal .box{animation:in .15s ease-out}@keyframes in{from{transform:translateY(8px);opacity:0}}}
/* ---- v2 : accent doré (messages d'information et avertissements uniquement) ---- */
:root{--gold:#DCB253;--warn:#DCB253}
.info{color:var(--gold);font-size:.88rem}
.alert{border-color:var(--gold);color:var(--gold)}
.alert a{color:var(--gold)}
.st-sortie{border-color:#fff;color:#fff}
.cal .ev.presta{border-left-color:rgba(255,255,255,.4);border-left-style:dashed}
nav.side .brand{text-align:center;margin:0 0 16px}
nav.side .brand img{display:block;margin:0 auto 8px}
nav.side a.nom{display:block;padding:2px 0;margin:0;font-weight:700;font-size:1.25rem;letter-spacing:.14em;color:#fff;background:none}
nav.side a.nom:hover{background:none}
nav.side .brand .sub{font-size:.7rem;line-height:1.3;color:var(--mut);margin:2px 6px 0}
.pill{display:inline-block;margin-left:8px;min-width:20px;padding:0 6px;border-radius:99px;background:#fff;color:var(--bg);font-size:.75rem;font-weight:700;text-align:center}
.cols{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:0 18px}
.week{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.week .day{border:1px solid var(--line);border-radius:6px;padding:6px;min-height:92px;display:flex;flex-direction:column;gap:2px;font-size:.8rem}
.week .day.today{border-color:#fff;background:rgba(255,255,255,.08)}
.week .ev{display:block;width:100%;text-align:left;padding:1px 5px;border:0;border-left:3px solid #fff;border-radius:3px;background:rgba(255,255,255,.14);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem}
.week .ev.presta{border-left-color:rgba(255,255,255,.4);border-left-style:dashed}
.task{display:flex;gap:10px;align-items:flex-start;padding:6px 0;border-top:1px solid var(--line)}.task:first-of-type{border-top:0}
.task.done .grow{text-decoration:line-through;opacity:.6}
.task .grow{flex:1;min-width:0}
a[href^="tel:"],a[href^="mailto:"]{text-decoration:underline;text-underline-offset:2px}
@media(max-width:900px){.cols{grid-template-columns:1fr}}
/* ---- v3 : téléphone ---- */
.cal-list{display:flex;flex-direction:column;gap:10px}.cal-day{border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.cal-day .ev{display:block;width:100%;text-align:left;padding:6px 8px;border:0;border-left:3px solid #fff;border-radius:3px;background:rgba(255,255,255,.14)}
.cal-day .ev.presta{border-left-color:rgba(255,255,255,.4);border-left-style:dashed}
@media(max-width:820px){
  body{font-size:15px}
  .shell{display:block}
  nav.side{position:sticky;top:0;z-index:10;height:auto;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:2px;padding:8px 10px;padding-top:calc(8px + env(safe-area-inset-top));overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);-webkit-overflow-scrolling:touch}
  nav.side .brand{display:flex;align-items:center;gap:10px;margin:0 8px 0 0;flex:none}
  nav.side .brand img{width:74px;margin:0}
  nav.side .brand .sub,nav.side .sp{display:none}
  nav.side a{white-space:nowrap;flex:none;padding:9px 12px}
  nav.side a.nom{font-size:1.05rem;padding:0}
  main{padding:16px 14px calc(60px + env(safe-area-inset-bottom))}
  h1{font-size:1.35rem}
  .bar{gap:8px}
  .bar .grow{flex-basis:100%}
  button,.btn,input,select,textarea{min-height:40px}
  input,select,textarea{font-size:16px}
  button.s{min-height:34px}
  .card{padding:14px}
  .grid{grid-template-columns:1fr}
  .kpis{gap:14px 20px}.kpis div{min-width:80px}
  .modal{padding:12px}.modal .box{padding:16px}
  td input.w{min-width:110px}
  .row>input,.row>select{flex:1 1 140px}
  #toast{bottom:calc(16px + env(safe-area-inset-bottom))}
}
/* ---- v3 : vitrine publique ---- */
.vitrine{min-height:100vh}
.v-head{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:20px;padding:10px 28px;padding-top:calc(10px + env(safe-area-inset-top));background:rgba(24,33,69,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.v-brand img{height:44px;display:block}
.v-nav{display:flex;gap:6px;margin-left:auto}.v-nav a{padding:8px 12px;border-radius:6px;text-decoration:none;color:var(--mut)}.v-nav a:hover{color:#fff;background:var(--card)}
.v-login{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;color:#fff}.v-login:hover{background:#fff;color:var(--bg)}
.v-wrap{max-width:1100px;margin:0 auto;padding:0 24px}.v-wrap.narrow{max-width:760px}
.v-hero{background-size:cover;background-position:center;padding:110px 0 100px}
.v-hero h1{font-size:clamp(2rem,6vw,3.6rem);line-height:1.08;margin:.2em 0;letter-spacing:-.02em}
.v-kicker{text-transform:uppercase;letter-spacing:.18em;font-size:.8rem;color:var(--mut);margin:0}
.v-lead{font-size:1.2rem;max-width:620px;color:rgba(255,255,255,.88);margin:0 0 26px}
.v-sec{padding:70px 0}.v-sec.alt{background:rgba(255,255,255,.04)}
.v-sec h2{font-size:1.9rem;margin:0 0 .3em;letter-spacing:-.01em}
.v-sub{color:var(--mut);margin:0 0 28px}
.v-text{font-size:1.08rem;line-height:1.7;color:rgba(255,255,255,.9)}
.v-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.v-card{border:1px solid var(--line);border-radius:10px;padding:22px;background:var(--card)}.v-card h3{font-size:1.1rem}.v-card p{color:var(--mut);margin:0}
.v-gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.v-gal figure{margin:0;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--card)}
.v-gal img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.v-gal figcaption{padding:8px 12px;font-size:.85rem;color:var(--mut)}
.v-quote{margin:0;text-align:center;font-size:1.2rem;line-height:1.6}.v-quote footer{margin-top:14px;font-size:.9rem;color:var(--mut)}
.v-contact p{margin:.3em 0;font-size:1.05rem}
.v-foot{padding:26px 0 calc(26px + env(safe-area-inset-bottom));border-top:1px solid var(--line);font-size:.82rem;color:var(--mut)}
.v-foot .v-wrap{display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}
.back-site{position:absolute;top:18px;left:20px;text-decoration:none;color:var(--mut)}
@media(max-width:820px){.v-head{padding:8px 14px;gap:8px}.v-nav{display:none}.v-login{margin-left:auto}.v-hero{padding:70px 0 60px}.v-sec{padding:48px 0}}
/* ---- accueil : carrousel, horloge ---- */
.clock{font-variant-numeric:tabular-nums;color:#fff;font-weight:600}
.carousel .slide{min-height:132px}.carousel h4{margin:.5em 0 .15em;font-size:1.05rem}.carousel p{margin:.4em 0 .7em}
.dots{display:flex;gap:8px;margin-top:8px}.dot{width:10px;height:10px;min-height:0!important;padding:0;border-radius:50%;border:1px solid #fff;background:transparent}.dot.on{background:#fff}
/* ---- étiquette QR ---- */
.etiquette{width:100%;max-width:340px;background:#fff;color:#182145;border-radius:6px;padding:16px;display:grid;grid-template-columns:1fr 130px;grid-template-areas:"logo qr" "name qr" "id id";gap:6px 12px;align-items:start}
.etiquette .elogo{grid-area:logo;width:130px}.etiquette .eqr{grid-area:qr;width:130px;height:130px}.etiquette .ename{grid-area:name;font-weight:700;font-size:.9rem}.etiquette .eid{grid-area:id;text-align:center;font-weight:800;font-size:1.7rem;letter-spacing:.04em}
body.print-label .shell nav.side,body.print-label .no-print,body.print-label .bar{display:none!important}
body.print-label main{padding:0}body.print-label .cols{display:block}body.print-label .etiq-wrap{border:0;background:#fff;padding:0}
/* ---- habilitations, statistiques, divers ---- */
.hab-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0}.hab-row input:not([type=date]){flex:1 1 170px}
.chips{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;margin:6px 0}.chip{font-size:.72rem;padding:1px 8px;border:1px solid var(--line);border-radius:99px}.chip.warn{border-color:var(--gold);color:var(--gold)}
.hbars{display:flex;flex-direction:column;gap:8px}.hbar{display:grid;grid-template-columns:minmax(80px,38%) 1fr auto;gap:10px;align-items:center;font-size:.85rem}.hbar .hl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar .hb{height:12px;background:var(--card);border-radius:99px;overflow:hidden}.hbar .hb i{display:block;height:100%;background:#fff;border-radius:99px}.hbar .hv{font-variant-numeric:tabular-nums}
.vbars{display:flex;gap:10px;align-items:flex-end;height:210px;overflow-x:auto;padding-bottom:4px}.vcol{display:flex;flex-direction:column;align-items:center;min-width:58px;height:100%}.vpair{flex:1;display:flex;align-items:flex-end;gap:3px;width:100%;justify-content:center}.vpair i{display:block;width:16px;border-radius:3px 3px 0 0}.vpair i.a{background:#fff}.vpair i.b{background:rgba(255,255,255,.35)}.vl{font-size:.72rem;color:var(--mut);margin-top:4px;white-space:nowrap}.vv{font-size:.68rem;font-variant-numeric:tabular-nums}
.v-admin-gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:12px}.v-admin-gal figure{margin:0;border:1px solid var(--line);border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:6px}.v-admin-gal img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:5px}
.livebanner{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:45;background:var(--bg2);border:1px solid var(--gold);color:var(--gold);padding:8px 14px;border-radius:8px;display:flex;gap:8px;align-items:center;max-width:92vw}
.relogin{z-index:60;align-items:center}
@media(max-width:820px){.etiquette{max-width:100%}.hbar{grid-template-columns:minmax(70px,42%) 1fr auto}.livebanner{top:auto;bottom:calc(14px + env(safe-area-inset-bottom))}}
@media print{.v-head{display:none}}
/* ---- v4 : membres, parc matériel, drive, actualités avec photo ---- */
.v-nav-cta{border:1px solid var(--line);color:#fff!important}
.v-hero.small{padding:60px 0 44px}.v-hero.small h1{margin:.1em 0 0}
.v-team{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:26px 18px;margin-top:22px}
.v-member{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px}
.v-member img,.v-av{width:128px;height:128px;border-radius:50%;object-fit:cover;border:1px solid var(--line);background:var(--card);margin-bottom:8px}
.v-av{display:grid;place-items:center;font-size:2.6rem;font-weight:700;color:var(--mut)}
.v-member b{font-size:1rem}.v-member span{color:var(--mut);font-size:.9rem}
.parc-cat{margin-bottom:40px}.parc-cat h2{font-size:1.4rem;margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.parc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}
.parc-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--card)}
.parc-card img,.parc-ph{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;background:rgba(255,255,255,.06)}
.parc-ph{display:grid;place-items:center;font-size:2.4rem;color:var(--mut)}
.parc-card b{font-size:.98rem}.parc-prix{color:var(--mut);font-variant-numeric:tabular-nums}
.chips.filt{justify-content:center;margin:0 0 28px;gap:8px}.chips.filt .chip{background:transparent;color:#fff;cursor:pointer;padding:6px 14px;font-size:.85rem;min-height:0}.chips.filt .chip.on{background:#fff;color:var(--bg)}
.crumbs{margin:0 0 16px;color:var(--mut)}.crumbs a{color:#fff}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin-bottom:22px}
.dwrap{display:flex;flex-direction:column;gap:6px}
.dfolder{display:flex;flex-direction:column;gap:3px;border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--card);text-decoration:none;color:#fff}.dfolder:hover{border-color:#fff}
.dfolder .dico{font-size:1.5rem;color:var(--mut)}
.share-list{max-height:46vh;overflow:auto;margin:10px 0}
.carousel .slide{display:flex;gap:16px;align-items:flex-start;min-height:132px}
.carousel .sl-img{width:170px;height:120px;object-fit:cover;border-radius:8px;flex:none;border:1px solid var(--line)}
.carousel .sl-txt{min-width:0;flex:1}
@media(max-width:820px){.carousel .slide{flex-direction:column}.carousel .sl-img{width:100%;height:auto;aspect-ratio:16/9}.v-member img,.v-av{width:104px;height:104px}.parc-grid{grid-template-columns:repeat(2,1fr);gap:10px}.v-team{grid-template-columns:repeat(2,1fr)}}
/* ---- v5 : vitrine pilotée par la configuration ---- */
.vitrine{font-family:var(--v-font);background:var(--v-bg);color:var(--v-text);--line:color-mix(in srgb,var(--v-text) 22%,transparent);--mut:color-mix(in srgb,var(--v-text) 68%,transparent);--card:color-mix(in srgb,var(--v-text) 7%,transparent);--bg:var(--v-bg)}
.vitrine a{color:inherit}
.vitrine .btn,.vitrine button{color:var(--v-text);border-color:var(--line)}
.vitrine .btn:hover,.vitrine button:hover{background:var(--card);border-color:var(--v-text)}
.vitrine .btn.p{background:var(--v-accent);color:var(--v-accent-text);border-color:var(--v-accent)}
.vitrine .v-head{background:color-mix(in srgb,var(--v-bg) 92%,transparent)}
.vitrine .v-sec.alt{background:var(--v-alt)}
.vitrine .v-nav a:hover{color:var(--v-text)}
.vitrine .v-nav-cta{color:var(--v-text)!important}
.vitrine .v-login:hover{background:var(--v-accent);color:var(--v-accent-text)}
.vitrine .chips.filt .chip{color:var(--v-text)}.vitrine .chips.filt .chip.on{background:var(--v-accent);color:var(--v-accent-text)}
.vitrine input,.vitrine select,.vitrine textarea{color:var(--v-text)}
.v-hero{position:relative;background-size:cover;background-position:center;background-color:var(--v-bg)}
.v-hero::before{content:'';position:absolute;inset:0;background:var(--v-bg);opacity:var(--v-ov,.82)}
.v-hero .v-wrap{position:relative}
.v-hero.h-petite{padding:60px 0 44px}.v-hero.h-moyenne{padding:110px 0 100px}.v-hero.h-grande{min-height:82vh;display:flex;align-items:center;padding:80px 0}
.v-hero.a-centre{text-align:center}.v-hero.a-centre .v-lead{margin-left:auto;margin-right:auto}.v-hero.a-centre .row{justify-content:center}
.v-gal{grid-template-columns:repeat(var(--cols,3),1fr)}
.v-libre{display:grid;gap:24px;align-items:center}.v-libre.p-gauche,.v-libre.p-droite{grid-template-columns:1fr 1fr}.v-libre.p-droite .v-libre-img{order:2}.v-libre-img{width:100%;border-radius:10px;object-fit:cover;max-height:420px}
.v-burger{display:none;place-items:center;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--v-text)}
.parc-ph{position:relative;display:block;width:100%;aspect-ratio:4/3;border-radius:8px;background:var(--card);overflow:hidden}
.parc-ph::before{content:'';position:absolute;inset:0;background:var(--v-text,#fff);opacity:.2;-webkit-mask:url(/projecteur.png) center/46% no-repeat;mask:url(/projecteur.png) center/46% no-repeat}
.relogin{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(5,9,25,.9)}
@media(max-width:820px){
  .v-burger{display:grid}.v-login{margin-left:auto}
  .v-head.open .v-nav{display:flex;flex-direction:column;position:absolute;top:100%;left:0;right:0;gap:2px;padding:10px 14px 16px;background:var(--v-bg);border-bottom:1px solid var(--line)}
  .v-head.open .v-nav a{padding:12px 10px}
  .v-gal{grid-template-columns:repeat(2,1fr)}.v-libre.p-gauche,.v-libre.p-droite{grid-template-columns:1fr}.v-libre.p-droite .v-libre-img{order:0}
  .v-hero.h-moyenne{padding:70px 0 60px}.v-hero.h-grande{min-height:70vh}
}
/* ---- v5 : scan, étiquettes, éditeur ---- */
.grid label.chk,label.chk{flex-direction:row;align-items:center;gap:8px;color:#fff}
.etiq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin:8px 0}.etiq-grid .etiquette{break-inside:avoid}
.scan-prog{display:flex;align-items:center;gap:14px;margin-bottom:10px}.scan-bar{flex:1;height:10px;background:var(--card);border-radius:99px;overflow:hidden}.scan-bar i{display:block;height:100%;background:#fff}
.scan-msg{min-height:1.4em;font-weight:600;margin:10px 0 4px}
.cam{margin:10px 0;border-radius:10px;overflow:hidden;background:#000;max-width:520px}.cam video{display:block;width:100%}
.chip-x{min-height:0!important;padding:0 4px;border:0;background:transparent;color:inherit;font-size:.9rem}
tr.done td{opacity:.7}
details.card>summary{cursor:pointer;margin-bottom:10px}
.sec-ed .bar{margin-bottom:10px}
.hab-row select{min-width:130px}
