/* Bons « Bo Bun offert » · Grenette · canon Ôbobun V1 (OverlockVU + Linotte, 11 tokens) */
@font-face{font-family:"OverlockVU";src:url("/assets/fonts/OverlockVU-Black.woff2") format("woff2");font-weight:900;font-display:swap}
@font-face{font-family:"OverlockVU";src:url("/assets/fonts/OverlockVU-Italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Linotte";src:url("/assets/fonts/Linotte-Light.woff2") format("woff2");font-weight:300;font-display:swap}
@font-face{font-family:"Linotte";src:url("/assets/fonts/Linotte-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Linotte";src:url("/assets/fonts/Linotte-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
:root{--vert:#578223;--deep:#1F3A1E;--cream:#EDE2CC;--soft:#F6EFDF;--clay:#B84C2B;--amber:#D4A762;--lichen:#87A645;--poivre:#3D3F3A;--nuit:#0D0F0C;--grey:#B8B5AC;--greyl:#E8E4D9}
*{box-sizing:border-box}
body.gb{margin:0;background:var(--deep);color:var(--poivre);font:400 16px/1.55 "Linotte",system-ui,sans-serif;min-height:100vh;display:flex;flex-direction:column}
.gb-top{padding:20px 16px;text-align:center}
.gb-main{flex:1;padding:0 16px 40px;display:flex;justify-content:center}
.gb-foot{text-align:center;color:var(--cream);font-size:13px;padding:18px 16px 28px;opacity:.85}
.gb-foot a{color:var(--amber)}
.gb-card{background:var(--soft);border-radius:22px;padding:30px 24px;max-width:520px;width:100%;display:grid;gap:14px;align-content:start;text-align:center}
.gb-wide{max-width:760px}
.gb-card h1{font:900 clamp(28px,7vw,38px)/1.05 "OverlockVU",sans-serif;color:var(--deep);margin:0;text-wrap:balance}
.gb-card h2{font:900 22px/1.1 "OverlockVU",sans-serif;color:var(--deep);margin:10px 0 0}
.gb-lead{margin:0;font-size:16px}
.gb-note{margin:0;font-size:13.5px;color:var(--poivre)}
.gb-note a,.gb-card p a{color:var(--vert);font-weight:700}
.gb-eyebrow{font:700 12px/1 "Linotte";letter-spacing:.2em;text-transform:uppercase;color:var(--clay)}
.gb-when{margin:0;font-size:18px;color:var(--deep)}
.gb-btn{display:block;width:100%;border:0;border-radius:14px;background:var(--clay);color:var(--soft);font:700 17px/1 "Linotte";padding:18px 20px;text-decoration:none;cursor:pointer;box-shadow:0 5px 0 #8a3920}
.gb-btn:focus-visible{outline:3px solid var(--amber);outline-offset:3px}
.gb-btn[disabled]{opacity:.45;cursor:not-allowed}
.gb-btn-alt{background:var(--vert);box-shadow:0 5px 0 var(--deep)}
.gb-form{display:grid;gap:10px;text-align:left}
.gb-row{grid-template-columns:1fr auto;align-items:center}
.gb-input{width:100%;font:400 16px "Linotte";border:2px solid var(--greyl);border-radius:12px;padding:13px 14px;background:#F6EFDF;color:var(--nuit)}
.gb-err{color:var(--clay);font-weight:700;margin:0}
.gb-flash{background:var(--greyl);border-radius:12px;padding:10px 14px;margin:0;font-weight:700;color:var(--deep)}
.gb-steps{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.gb-steps span{font:700 12px/1 "Linotte";padding:8px 11px;border-radius:999px;background:var(--greyl);color:var(--poivre)}
.gb-steps .done{background:var(--lichen);color:var(--soft)}
.gb-steps .on{background:var(--clay);color:var(--soft)}
.gb-qr{display:flex;justify-content:center;padding:6px}
.gb-qr svg{width:min(260px,70vw);height:auto;border-radius:14px}
.gb-qr-mini{display:flex;gap:14px;align-items:center;text-align:left;background:var(--greyl);border-radius:14px;padding:10px}
.gb-qr-mini svg{width:96px;height:96px;display:block;border-radius:8px}
.gb-qr-mini p{margin:0;font-size:13.5px}
.gb-used{font:900 24px/1.2 "OverlockVU";color:var(--clay);padding:40px 10px}
.gb-bon h1{font-size:clamp(34px,9vw,48px)}
.gb-staff{max-width:520px;width:100%;border-radius:22px;padding:30px 22px;text-align:center;display:grid;gap:12px;color:var(--soft)}
.gb-staff.ok{background:var(--vert)}.gb-staff.ko{background:var(--clay)}
.gb-staff a{color:var(--soft)}
.gb-staff .gb-btn{background:var(--soft);color:var(--deep);box-shadow:0 5px 0 rgba(13,15,12,.35)}
.gb-verdict{font:900 clamp(34px,10vw,52px)/1 "OverlockVU"}
.gb-big{font:900 34px/1.1 "OverlockVU";color:inherit}
.gb-big small{font:700 15px "Linotte"}
.gb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.gb-count{background:var(--greyl);border-radius:16px;padding:16px;display:grid;gap:8px;color:var(--deep)}
.gb-count p{margin:0;font-size:13.5px}
.gb-list{list-style:none;margin:0;padding:0;text-align:left;display:grid;gap:6px;font-variant-numeric:tabular-nums}
.gb-list li{background:var(--greyl);border-radius:10px;padding:8px 12px}

/* Section formulaire sur /grenette */
.gbo{background:var(--deep);color:var(--cream);padding:clamp(48px,7vw,88px) 16px}
.gbo .in{max-width:620px;margin:0 auto;display:grid;gap:16px}
.gbo h2{font:900 clamp(32px,6vw,52px)/1 "OverlockVU",sans-serif;color:var(--soft);margin:0;text-wrap:balance}
.gbo h2 em{font:italic 400 1em "OverlockVU";color:var(--amber)}
.gbo .eyebrow{font:700 12px/1 "Linotte";letter-spacing:.2em;text-transform:uppercase;color:var(--amber)}
.gbo p{margin:0}
.gbo ol{margin:0;padding-left:20px;display:grid;gap:4px}
.gbo .vagues{display:grid;grid-template-columns:1fr 1fr;gap:10px;border:0;padding:0;margin:0}
.gbo .vagues legend{font:700 14px "Linotte";margin-bottom:8px;color:var(--soft)}
.gbo .vague{position:relative}
.gbo .vague input{position:absolute;opacity:0}
.gbo .vague label{display:grid;gap:4px;padding:14px;border-radius:14px;border:2px solid var(--lichen);cursor:pointer;text-align:center}
.gbo .vague b{font:900 26px/1 "OverlockVU";color:var(--soft)}
.gbo .vague small{font-size:13px;color:var(--cream)}
.gbo .vague input:checked+label{background:var(--clay);border-color:var(--clay)}
.gbo .vague input:focus-visible+label{outline:3px solid var(--amber);outline-offset:2px}
.gbo .vague input:disabled+label{opacity:.4;cursor:not-allowed}
.gbo .f{display:grid;gap:6px}
.gbo label.t{font:700 14px "Linotte";color:var(--soft)}
.gbo .inp{width:100%;font:400 16px "Linotte";border:2px solid transparent;border-radius:12px;padding:14px;background:var(--soft);color:var(--nuit)}
.gbo .inp:focus{outline:none;border-color:var(--amber)}
.gbo .ck{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--cream)}
.gbo .ck input{width:20px;height:20px;flex:none;margin-top:2px;accent-color:var(--clay)}
.gbo .ck a{color:var(--amber)}
.gbo .go{border:0;border-radius:14px;background:var(--clay);color:var(--soft);font:700 18px/1 "Linotte";padding:19px;cursor:pointer;box-shadow:0 5px 0 #8a3920}
.gbo .go[disabled]{opacity:.6;cursor:progress}
.gbo .msg{border-radius:14px;padding:18px;font-size:15px}
.gbo .msg.ok{background:var(--lichen);color:var(--deep)}
.gbo .msg.ko{background:var(--clay);color:var(--soft)}
.gbo details{font-size:12.5px;color:var(--cream);opacity:.9}
.gbo details summary{cursor:pointer;font-weight:700}
.gbo .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
@media (max-width:420px){.gbo .vagues{grid-template-columns:1fr}.gb-row{grid-template-columns:1fr}}
.gbo{scroll-margin-top:90px}

/* ===== Grande ouverture · version KISS (hero /grenette) ===== */
.go3{background:var(--deep);color:var(--soft);padding:clamp(28px,5vw,64px) 16px clamp(36px,5vw,64px);scroll-margin-top:90px;overflow:hidden}
.go3-in{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1.1fr 1fr;grid-template-areas:"txt vis" "form vis";gap:12px 48px;align-items:center}
.go3-txt{grid-area:txt}.go3-vis{grid-area:vis}.go3-form{grid-area:form}
.go3-h{font:900 clamp(56px,10vw,132px)/.86 "OverlockVU",sans-serif;color:var(--soft);margin:0;letter-spacing:-.01em}
.go3-date{margin:18px 0 0;font:700 clamp(14px,1.8vw,19px)/1.3 "Linotte",sans-serif;letter-spacing:.22em;color:var(--amber)}
.go3-vis{position:relative;justify-self:center;width:min(100%,520px);aspect-ratio:1}
.go3-vis img{width:100%;height:100%;display:block;filter:drop-shadow(0 30px 50px rgba(13,15,12,.55))}
.go3-badge{position:absolute;right:0;top:-2%;width:46%;aspect-ratio:1;border-radius:50%;background:var(--clay);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transform:rotate(-8deg);box-shadow:0 20px 40px rgba(13,15,12,.5);container-type:inline-size;overflow:hidden}
.go3-badge b{font:900 clamp(40px,6vw,96px)/.8 "OverlockVU",sans-serif;font-size:40cqw;color:var(--soft)}
.go3-badge span{font:900 clamp(12px,1.6vw,22px)/1 "OverlockVU",sans-serif;font-size:10.5cqw;text-transform:uppercase;color:var(--soft);margin-top:4cqw}
.go3-form{display:grid;gap:12px;max-width:520px}
.go3-lead{margin:6px 0 0;font:400 18px/1.4 "Linotte",sans-serif;color:var(--cream)}
.go3-lead b{color:var(--soft)}
.go3-v{display:grid;grid-template-columns:1fr 1fr;gap:10px;border:0;padding:0;margin:0}
.go3-v div{position:relative}
.go3-v input{position:absolute;opacity:0}
.go3-v label{display:grid;gap:2px;padding:12px;border-radius:14px;border:2px solid var(--lichen);cursor:pointer;text-align:center}
.go3-v label b{font:900 28px/1 "OverlockVU",sans-serif;color:var(--soft)}
.go3-v label small{font:400 13px "Linotte",sans-serif;color:var(--cream)}
.go3-v input:checked+label{background:var(--clay);border-color:var(--clay)}
.go3-v input:focus-visible+label{outline:3px solid var(--amber);outline-offset:2px}
.go3-v input:disabled+label{opacity:.4;cursor:not-allowed}
.go3-inp{width:100%;font:400 17px "Linotte",sans-serif;border:2px solid transparent;border-radius:14px;padding:15px;background:var(--soft);color:var(--nuit)}
.go3-inp:focus{outline:none;border-color:var(--amber)}
.go3-ck{display:flex;gap:10px;align-items:center;font:400 14.5px "Linotte",sans-serif;color:var(--cream)}
.go3-ck input{width:20px;height:20px;flex:none;accent-color:var(--clay)}
.go3-ck a{color:var(--amber)}
.go3-btn{border:0;border-radius:14px;background:var(--clay);color:var(--soft);font:700 19px/1 "Linotte",sans-serif;padding:19px;cursor:pointer;box-shadow:0 5px 0 #8a3920}
.go3-btn:focus-visible{outline:3px solid var(--amber);outline-offset:3px}
.go3-btn[disabled]{opacity:.6;cursor:progress}
.go3 .msg{border-radius:14px;padding:16px;font:400 15px/1.45 "Linotte",sans-serif}
.go3 .msg.ok{background:var(--lichen);color:var(--deep)}
.go3 .msg.ko{background:var(--clay);color:var(--soft)}
.go3 .msg a{color:inherit}
.go3-small{margin:0;font:400 12.5px/1.4 "Linotte",sans-serif;color:var(--grey)}
.go3-cond{max-width:1120px;margin:22px auto 0;font:400 12.5px/1.5 "Linotte",sans-serif;color:var(--grey)}
.go3-cond summary{cursor:pointer;font-weight:700;color:var(--cream)}
.go3-cond p{margin:8px 0 0}.go3-cond a{color:var(--amber)}
.go3 .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:820px){
  .go3-in{grid-template-columns:1fr;grid-template-areas:"txt" "vis" "form";text-align:center}
  .go3-vis{width:min(74%,360px)}
  .go3-form{justify-self:center;width:100%;text-align:left}
}
/* Plaque « Ôbobun GRENETTE » (identité du restaurant) */
.go3-plq{display:inline-flex;flex-direction:column;align-items:center;gap:6px;background:var(--soft);border-radius:14px;padding:14px 26px 12px;margin-bottom:22px;
  box-shadow:0 12px 26px rgba(13,15,12,.35),inset 0 0 0 6px var(--soft),inset 0 0 0 9px var(--deep)}
.go3-plq .r{display:flex;align-items:center;gap:14px}
.go3-plq img{height:clamp(34px,4vw,48px);width:auto;display:block}
.go3-plq span{font:900 clamp(34px,4.2vw,50px)/1 "OverlockVU",sans-serif;color:var(--deep);letter-spacing:.02em}
.go3-plq small{font:700 clamp(11px,1.2vw,14px)/1 "Linotte",sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--poivre)}

/* ---------- Espace équipe v2 (scanner, verdict plein écran) ---------- */
.gb-staff-app .gb-main{align-items:flex-start}
.gs{max-width:560px;width:100%;display:grid;gap:14px;color:var(--soft)}
.gs-moi{margin:0;font-size:14px;color:var(--cream)}.gs-moi a{color:var(--amber)}
.gs-titre{font:900 clamp(26px,7vw,34px)/1.05 "OverlockVU",sans-serif;margin:0;color:var(--soft)}
.gs-titre b{color:var(--amber)}
.gs-vagues{display:grid;gap:12px}
.gs-v{background:var(--soft);color:var(--deep);border-radius:18px;padding:16px;display:grid;gap:6px;border:3px solid transparent}
.gs-v.on{border-color:var(--amber)}
.gs-v p{margin:0;font-size:14px}
.gs-v-h{display:flex;justify-content:space-between;align-items:center}
.gs-v-h b{font:900 22px/1 "OverlockVU"}
.gs-v-h span{font:700 11px/1 "Linotte";letter-spacing:.14em;text-transform:uppercase;background:var(--amber);color:var(--nuit);padding:6px 9px;border-radius:999px}
.gs-v-big{font:900 44px/1 "OverlockVU";color:var(--deep)}.gs-v-big small{font:700 15px "Linotte";color:var(--poivre)}
.gs-bar{height:8px;border-radius:99px;background:var(--greyl);overflow:hidden}.gs-bar i{display:block;height:100%;background:var(--vert)}
.gs-plats{color:var(--poivre)}
.gs-sb{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px;padding-top:10px;border-top:1px dashed var(--grey)}
.gs-sb span{grid-column:1/-1;font:700 12px/1 "Linotte";letter-spacing:.12em;text-transform:uppercase;color:var(--poivre)}
.gs-sb.ouvert span{color:var(--clay)}
.gs-sb button{border:2px solid var(--deep);background:transparent;color:var(--deep);border-radius:12px;padding:12px 6px;font:700 15px "Linotte";cursor:pointer}
.gs-sb.ouvert button{background:var(--deep);color:var(--soft)}
.gs-sb button:disabled{opacity:.35}
.gs-scan{border:0;border-radius:20px;background:var(--amber);color:var(--nuit);font:900 28px/1 "OverlockVU";padding:30px 16px;cursor:pointer;box-shadow:0 6px 0 #9c7a44}
.gs-cherche{display:grid;grid-template-columns:1fr auto;gap:8px}.gs-cherche .gb-btn{width:auto;padding:14px 20px}
.gs-plus{background:var(--soft);color:var(--deep);border-radius:16px;padding:12px 16px}
.gs-plus summary{font:700 15px "Linotte";cursor:pointer}
.gs-plus h2{font:900 18px/1.1 "OverlockVU";margin:16px 0 8px}
.gs-liste{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:14px}
.gs-liste li{background:var(--greyl);border-radius:10px;padding:8px 10px;display:flex;justify-content:space-between;gap:8px;align-items:center}
.gs-liste button{border:0;background:var(--clay);color:var(--soft);border-radius:8px;padding:6px 10px;font:700 13px "Linotte";cursor:pointer}
.gs-cam{position:fixed;inset:0;z-index:50;background:var(--nuit);display:grid;place-items:center}
.gs-cam video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gs-viseur{position:relative;width:min(70vw,320px);aspect-ratio:1;border:4px solid var(--amber);border-radius:24px;box-shadow:0 0 0 9999px rgba(13,15,12,.45)}
.gs-cam-txt{position:absolute;top:calc(50% + min(35vw,160px) + 20px);left:16px;right:16px;text-align:center;color:var(--soft);font:700 17px "Linotte";margin:0}
.gs-fermer{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);border:0;border-radius:999px;background:var(--soft);color:var(--deep);font:700 16px "Linotte";padding:14px 30px}
.gs-res{position:fixed;inset:0;z-index:60;overflow:auto;padding:max(28px,env(safe-area-inset-top)) 20px 28px;display:flex;flex-direction:column;justify-content:center;gap:14px;text-align:center;color:var(--soft)}
.gs-res-page{position:static;min-height:70vh;border-radius:22px;max-width:560px;width:100%}
.gs-res.ok{background:var(--vert)}.gs-res.ko{background:var(--clay)}.gs-res.warn{background:var(--amber);color:var(--nuit)}
.gs-res p{margin:0}
.gs-verdict{font:900 clamp(40px,12vw,64px)/1 "OverlockVU"}
.gs-num{font:900 28px/1.1 "OverlockVU"}
.gs-sous{font:700 18px/1.3 "Linotte"}
.gs-plat-fait{font:900 34px/1.1 "OverlockVU"}
.gs-q{font:700 14px "Linotte";letter-spacing:.12em;text-transform:uppercase;opacity:.9}
.gs-plats-btn{display:grid;gap:10px}
.gs-plats-btn button{border:0;border-radius:16px;background:var(--soft);color:var(--deep);font:900 26px/1 "OverlockVU";padding:26px 12px;cursor:pointer;box-shadow:0 5px 0 rgba(13,15,12,.3)}
.gs-accept{display:block;border:3px solid var(--nuit);background:transparent;color:var(--nuit);border-radius:14px;font:700 18px "Linotte";padding:16px;cursor:pointer;list-style:none}
.gs-force[open] .gs-accept{display:none}
.gs-annul{border:2px solid currentColor;background:transparent;color:inherit;border-radius:12px;font:700 16px "Linotte";padding:12px;cursor:pointer}
.gs-suivant{display:block;border:0;border-radius:14px;background:var(--nuit);color:var(--soft);font:700 18px "Linotte";padding:18px;text-decoration:none;cursor:pointer}

/* ---------- Écran file d'attente ---------- */
.gb-ecran .gb-top,.gb-ecran .gb-foot{display:none}
.gb-ecran .gb-main{min-height:100vh;padding:0}
.ge{min-height:100vh;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.2vh;text-align:center;color:var(--soft);padding:4vh 4vw}
.ge-plaque{display:inline-flex;align-items:center;gap:18px;background:var(--soft);border-radius:16px;padding:14px 28px;box-shadow:inset 0 0 0 6px var(--soft),inset 0 0 0 10px var(--deep)}
.ge-plaque img{height:44px;width:auto}.ge-plaque b{font:900 44px/1 "OverlockVU";color:var(--deep);letter-spacing:.02em}
.ge-eyebrow{font:700 clamp(16px,2.6vw,30px)/1.2 "Linotte";letter-spacing:.2em;color:var(--amber)}
.ge-big{font:900 clamp(96px,22vw,300px)/.9 "OverlockVU";color:var(--soft)}
.ge-sous{font:900 clamp(30px,5.5vw,72px)/1 "OverlockVU";color:var(--amber)}
.ge-info{margin:0;font:700 clamp(16px,2.4vw,30px)/1.3 "Linotte";color:var(--cream);max-width:30ch}
.ge-qr{display:flex;align-items:center;gap:22px;background:var(--soft);color:var(--deep);border-radius:18px;padding:14px 22px;text-align:left;font:400 20px/1.3 "Linotte"}
.ge-qr p{margin:0}.ge-qr[hidden]{display:none}
.gs-cam[hidden],.gs-res[hidden],[hidden].gs-accept{display:none}
.ge:has(.ge-qr:not([hidden])) .ge-big{font-size:clamp(80px,15vw,210px)}
.ge-qr svg{width:clamp(110px,16vh,200px);height:auto}
.gbo .msg .gbo-go{display:block;margin-top:14px;background:var(--clay);color:var(--soft);text-align:center;font:700 17px/1 "Linotte";padding:16px;border-radius:12px;text-decoration:none;box-shadow:0 5px 0 #8a3920}
/* Bon utilisé (vue client) + retours (vue équipe) */
.gb-merci .gb-offre{background:var(--cream);border-radius:16px;padding:16px 16px 14px;display:grid;gap:6px;text-align:left}
.gb-merci .gb-offre p{margin:0}
.gb-merci .gb-offre b{color:var(--clay)}
.gb-lien{color:var(--vert);font-weight:700}
.gb-merci .gb-qr-mini{justify-content:center}
.gb-info{font-size:12.5px;opacity:.9}
.gs-retour button{width:100%;border:0;border-radius:16px;background:var(--soft);color:var(--deep);font:900 26px/1 "OverlockVU";padding:24px 12px;cursor:pointer;box-shadow:0 5px 0 rgba(13,15,12,.3)}
.gs-retour-fait{font:700 18px/1.3 "Linotte";background:rgba(13,15,12,.18);border-radius:12px;padding:12px}
.gs-retour-info{font-size:14px;opacity:.9}
.gs-retours-tot{margin:0 0 8px;font-size:15px}
.gs-stats{width:100%;border-collapse:collapse;font-size:14px;margin:0 0 10px}
.gs-stats th,.gs-stats td{padding:6px 8px;border-bottom:1px solid var(--greyl);text-align:right}
.gs-stats th:first-child{text-align:left}
.gs-stats thead th{font:700 12px "Linotte";letter-spacing:.06em;text-transform:uppercase;color:var(--poivre)}
