/* GVS+ — Exercices et Certificats */
.gvs-ex-wrap{padding:4px 4px calc(110px + env(safe-area-inset-bottom,0px))}
.gvs-ex-intro{background:var(--paper-raised,#fff);border:1px solid var(--line,#e1e8f7);border-radius:16px;padding:12px 14px;margin:0 0 12px;font:500 14.5px/1.4 var(--font-body,Inter,sans-serif);color:var(--ink,#000)}
.gvs-ex-intro small{display:block;margin-top:6px;color:var(--muted,#555)}
.gvs-ex-prog{height:8px;border-radius:99px;background:rgba(120,130,160,.22);overflow:hidden;margin:10px 0 2px}
.gvs-ex-prog i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#0b3fa8,#16a34a);transition:width .3s}
.gvs-ex-list{display:flex;flex-direction:column;gap:10px}
.gvs-ex-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--paper-raised,#fff);color:var(--ink,#000);border:1px solid var(--line,#e1e8f7);border-left:5px solid var(--c,#0b3fa8);border-radius:16px;padding:12px;cursor:pointer;font-family:inherit}
.gvs-ex-card.lock{opacity:.7;border-left-color:#9ca3af}
.gvs-ex-card.ok{border-left-color:#16a34a}
.gvs-ex-ic{flex:0 0 44px;height:44px;border-radius:12px;background:rgba(11,63,168,.08);display:flex;align-items:center;justify-content:center;font-size:24px}
.gvs-ex-tx{flex:1;min-width:0}
.gvs-ex-tx b{display:block;font:700 16px/1.2 var(--font-body,Inter,sans-serif)}
.gvs-ex-tx small{display:block;margin-top:3px;color:var(--muted,#555);font-size:12.5px}
.gvs-ex-tag{flex:0 0 auto;font:700 12px var(--font-body,Inter,sans-serif);padding:5px 9px;border-radius:99px;background:rgba(120,130,160,.18);color:var(--muted,#444)}
.gvs-ex-tag.ok{background:rgba(22,163,74,.16);color:#15803d}
.gvs-ex-tag.mid{background:rgba(245,158,11,.18);color:#b45309}
.gvs-ex-cert,.gvs-ex-next,.gvs-ex-back2{display:block;width:100%;margin-top:14px;border:0;border-radius:14px;padding:14px;font:800 16px var(--font-body,Inter,sans-serif);cursor:pointer;color:#fff;background:linear-gradient(135deg,#0b3fa8,#2563eb)}
.gvs-ex-next{background:linear-gradient(135deg,#15803d,#22c55e)}
.gvs-ex-back2{background:transparent;color:inherit;border:1px solid var(--line,#cbd5e1)}
.gvs-ex-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px;color:var(--ink,#000)}
.gvs-ex-top b{font:800 17px var(--font-body,Inter,sans-serif)}
.gvs-ex-back{border:0;background:transparent;font:700 15px var(--font-body,Inter,sans-serif);color:var(--blue,#0b3fa8);cursor:pointer;padding:6px 4px}
.gvs-ex-q{font:700 19px/1.35 var(--font-body,Inter,sans-serif);margin:16px 2px;color:var(--ink,#000)}
.gvs-ex-opts{display:flex;flex-direction:column;gap:10px}
.gvs-ex-opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--paper-raised,#fff);color:var(--ink,#000);border:2px solid var(--line,#e1e8f7);border-radius:14px;padding:12px;font:600 15.5px/1.3 var(--font-body,Inter,sans-serif);cursor:pointer}
.gvs-ex-opt i{flex:0 0 30px;height:30px;border-radius:50%;background:rgba(11,63,168,.1);color:var(--blue,#0b3fa8);display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800}
.gvs-ex-opt.good{border-color:#16a34a;background:rgba(22,163,74,.12)}
.gvs-ex-opt.bad{border-color:#dc2626;background:rgba(220,38,38,.1)}
.gvs-ex-opt:disabled{cursor:default;opacity:1}
.gvs-ex-fb{margin-top:12px;border-radius:14px;padding:12px 14px;font:500 14.5px/1.4 var(--font-body,Inter,sans-serif);color:var(--ink,#000)}
.gvs-ex-fb.ok{background:rgba(22,163,74,.14)}.gvs-ex-fb.ko{background:rgba(220,38,38,.1)}
.gvs-ex-res{text-align:center;background:var(--paper-raised,#fff);border:1px solid var(--line,#e1e8f7);border-radius:18px;padding:22px 14px;color:var(--ink,#000)}
.gvs-ex-res.ok{border-color:#16a34a}.gvs-ex-big{font-size:54px}
.gvs-ex-res h3{margin:6px 0;font:800 22px var(--font-body,Inter,sans-serif)}
.gvs-ex-score{font:800 40px var(--font-body,Inter,sans-serif);color:var(--blue,#0b3fa8)}.gvs-ex-score small{display:block;font-size:16px;color:var(--muted,#555)}
.gvs-ct-name{display:block;margin:0 0 12px}
.gvs-ct-name span{display:block;font:700 13px var(--font-body,Inter,sans-serif);margin:0 2px 6px;color:var(--ink,#000)}
.gvs-ct-name input{width:100%;box-sizing:border-box;border:1px solid var(--line,#cbd5e1);border-radius:12px;padding:12px;font:16px var(--font-body,Inter,sans-serif);background:var(--paper-raised,#fff);color:var(--ink,#000)}
/* fenêtre d'aperçu du certificat : contenu défilant, boutons toujours visibles */
.gvs-ct-view{position:fixed;inset:0;height:100dvh;z-index:2147483647;background:rgba(0,0,0,.6);display:flex;align-items:flex-end;justify-content:center}
.gvs-ct-box{width:100%;max-width:640px;max-height:calc(100dvh - 16px);display:flex;flex-direction:column;background:var(--paper-raised,#fff);color:var(--ink,#000);border-radius:22px 22px 0 0;overflow:hidden}
.gvs-ct-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 8px;font:800 18px var(--font-body,Inter,sans-serif)}
.gvs-ct-head button{border:0;background:transparent;font-size:22px;color:inherit;cursor:pointer;padding:4px 8px}
.gvs-ct-prev{flex:1 1 auto;min-height:0;overflow:auto;padding:4px 12px;text-align:center;-webkit-overflow-scrolling:touch}
.gvs-ct-prev img{width:100%;height:auto;border-radius:8px;box-shadow:0 4px 18px rgba(0,0,0,.25)}
.gvs-ct-act{flex:0 0 auto;display:flex;gap:8px;padding:10px 12px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid rgba(128,128,128,.2)}
.gvs-ct-act button{flex:1;border:0;border-radius:12px;padding:13px 4px;font:800 14.5px var(--font-body,Inter,sans-serif);color:#fff;background:linear-gradient(135deg,#0b3fa8,#2563eb);cursor:pointer}
.gvs-ct-act button:nth-child(2){background:linear-gradient(135deg,#b91c1c,#ef4444)}
.gvs-ct-act button:nth-child(3){background:linear-gradient(135deg,#15803d,#22c55e)}
body.dark .gvs-ex-intro,body.dark .gvs-ex-card,body.dark .gvs-ex-opt,body.dark .gvs-ex-res,body.dark .gvs-ct-box,body.dark .gvs-ct-name input{background:#0f172a;color:#f1f5f9;border-color:#334155}
body.dark .gvs-ex-q,body.dark .gvs-ex-top,body.dark .gvs-ex-fb,body.dark .gvs-ex-tx small,body.dark .gvs-ct-name span,body.dark .gvs-ex-intro small{color:#e2e8f0}

/* ---- fiches d'exercices (PDF / images) ajoutées par l'administrateur ---- */
.gvs-sh-title{margin:18px 2px 10px;font:800 16px var(--font-body,Inter,sans-serif);color:var(--ink,#000)}
.gvs-sh-card{display:flex;align-items:center;gap:12px;background:var(--paper-raised,#fff);color:var(--ink,#000);border:1px solid var(--line,#e1e8f7);border-left:5px solid #0e7490;border-radius:16px;padding:10px 12px}
.gvs-sh-th{flex:0 0 52px;height:52px;border-radius:10px;overflow:hidden;background:rgba(11,63,168,.08);display:flex;align-items:center;justify-content:center;font-size:26px}
.gvs-sh-th img{width:100%;height:100%;object-fit:cover;display:block}
.gvs-sh-btns{flex:0 0 auto;display:flex;gap:6px}
.gvs-sh-btns button{border:0;border-radius:10px;padding:9px 12px;font:800 13.5px var(--font-body,Inter,sans-serif);color:#fff;background:linear-gradient(135deg,#0b3fa8,#2563eb);cursor:pointer}
.gvs-sh-btns button+button{background:linear-gradient(135deg,#15803d,#22c55e)}
/* sélecteur de modèle de certificat */
.gvs-ct-fmt{flex:0 0 auto;display:flex;gap:6px;align-items:center;overflow-x:auto;padding:2px 12px 8px;white-space:nowrap}
.gvs-ct-fmt span{font:700 13px var(--font-body,Inter,sans-serif);opacity:.8}
.gvs-ct-fmt button{flex:0 0 auto;border:1px solid var(--line,#cbd5e1);background:transparent;color:inherit;border-radius:99px;padding:7px 12px;font:700 13px var(--font-body,Inter,sans-serif);cursor:pointer}
.gvs-ct-fmt button.on{background:#0b3fa8;border-color:#0b3fa8;color:#fff}
body.dark .gvs-sh-card{background:#0f172a;color:#f1f5f9;border-color:#334155}
body.dark .gvs-sh-title{color:#e2e8f0}

/* ---- administration : formats de certificats et fiches d'exercices ---- */
.gvs-adx-hint{font-size:13px;opacity:.85;margin:6px 0 10px}
.gvs-adx-msg{margin:8px 0;font:700 13.5px/1.35 var(--font-body,Inter,sans-serif)}
.gvs-adx-msg.ok{color:#15803d}.gvs-adx-msg.ko{color:#dc2626}
.gvs-adx-gap{margin-top:12px}
.gvs-adx-editor{margin-top:12px;border:1px dashed rgba(120,130,160,.6);border-radius:14px;padding:10px}
.gvs-adx-canvas{width:100%;display:block;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.25);touch-action:manipulation;background:#fff}
.gvs-adx-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 6px}
.gvs-adx-chips button{border:1px solid rgba(120,130,160,.7);background:transparent;color:inherit;border-radius:99px;padding:7px 12px;font:700 13px var(--font-body,Inter,sans-serif);cursor:pointer}
.gvs-adx-chips button.on{background:#0b3fa8;border-color:#0b3fa8;color:#fff}
.gvs-adx-row{display:flex;align-items:center;gap:10px;margin:8px 0}
.gvs-adx-row label{margin:0;flex:0 0 auto;font-size:13px}
.gvs-adx-row input[type=range]{flex:1;min-width:0}
.gvs-adx-row input[type=color]{width:48px;height:34px;padding:0;border:0;background:none}
.gvs-adx-item{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line,#E1E8F7)}
.gvs-adx-th{flex:0 0 56px;height:56px;border-radius:10px;overflow:hidden;background:rgba(11,63,168,.08);display:flex;align-items:center;justify-content:center;font-size:26px}
.gvs-adx-th img{width:100%;height:100%;object-fit:cover}
.gvs-adx-info{flex:1;min-width:0}
.gvs-adx-info b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gvs-adx-info small{display:block;opacity:.8}
.gvs-adx-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.gvs-adx-btns button{border:1px solid rgba(120,130,160,.6);background:transparent;color:inherit;border-radius:10px;padding:7px 10px;font:700 12.5px var(--font-body,Inter,sans-serif);cursor:pointer}
.gvs-adx-btns button.del{color:#dc2626;border-color:rgba(220,38,38,.5)}
.gvs-adx-quota{font-size:12.5px;opacity:.85;margin:6px 0}
.gvs-adx-title{margin:14px 0 6px;font-size:15px}
.gvs-att-grp{margin:8px 0;border:1px solid var(--line,#e1e8f7);border-radius:12px;padding:8px 12px}
.gvs-att-grp summary{cursor:pointer;padding:4px 0}
.gvs-att-grp textarea{width:100%;box-sizing:border-box}
.gvs-att-grp input[type=color]{width:46px;height:30px;padding:0;border:0;background:none}
