/* ============================================================
   Atlas Field Voice — retour terrain technicien (fv-*)
   S'appuie sur les variables d'atlas-admin.css (pages Atlas Tech).
   Mobile-first : gros points de contact, tabs défilantes.
   ============================================================ */

#fvPanel{display:none}
#fvPanel.show{display:block;animation:fvFade .35s ease}
@keyframes fvFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---- Sous-navigation (retour à la ligne desktop · défilante mobile) ---- */
.fv-subnav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
@media(max-width:860px){
  .fv-subnav{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .fv-subnav::-webkit-scrollbar{display:none}
}
.fv-tab{flex-shrink:0;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:999px;border:1px solid var(--line);background:var(--glass);color:var(--mid);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit;white-space:nowrap}
.fv-tab svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fv-tab:hover{color:var(--txt);border-color:var(--line2)}
.fv-tab.on{background:rgba(124,58,237,.18);border-color:rgba(168,130,255,.45);color:#c4b5fd}
.fv-tab .fv-tbadge{min-width:18px;height:18px;border-radius:9px;background:var(--orange);color:#fff;font-size:.66rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}

/* ---- Hero ---- */
.fv-hero{position:relative;border:1px solid var(--line2);border-radius:18px;padding:22px 24px;margin-bottom:18px;overflow:hidden;background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(8,16,40,.5) 55%,rgba(255,107,26,.08))}
.fv-hero h2{font-family:'Space Grotesk',sans-serif;font-size:1.2rem;font-weight:700;color:var(--txt);margin-bottom:5px}
.fv-hero p{color:var(--mid);font-size:.87rem;max-width:620px;line-height:1.55}
.fv-kicker{font-size:.66rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--violet)}
.fv-hero .fv-hpts{position:absolute;top:20px;right:22px;text-align:right}
.fv-hero .fv-hpts b{display:block;font-size:1.5rem;font-weight:800;color:var(--gold);font-family:'Space Grotesk',sans-serif}
.fv-hero .fv-hpts span{font-size:.7rem;color:var(--dim)}

/* ---- KPIs / grille ---- */
.fv-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:18px}
.fv-kpi{background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.fv-kpi b{display:block;font-size:1.35rem;font-weight:800;color:var(--txt);font-family:'Space Grotesk',sans-serif;letter-spacing:-.02em}
.fv-kpi span{font-size:.7rem;color:var(--dim)}
.fv-kpi.gold b{color:var(--gold)}
.fv-kpi.violet b{color:var(--violet)}
.fv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.fv-card{background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:9px;transition:border-color .2s}
.fv-card:hover{border-color:var(--line2)}
.fv-card h4{font-size:.94rem;font-weight:700;color:var(--txt)}
.fv-card p{font-size:.82rem;color:var(--mid);line-height:1.5}
.fv-sec-t{font-family:'Space Grotesk',sans-serif;font-size:1rem;font-weight:700;color:var(--txt);margin:24px 0 4px;display:flex;align-items:center;gap:9px}
.fv-sec-t svg{width:16px;height:16px;stroke:var(--violet);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fv-sec-d{font-size:.8rem;color:var(--dim);margin-bottom:12px}
.fv-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:.73rem;color:var(--dim)}
.fv-meta b{color:var(--txt);font-weight:600}
.fv-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;font-size:.7rem;font-weight:700;border:1px solid var(--line);color:var(--mid);width:max-content}
.fv-chip i{width:7px;height:7px;border-radius:50%;background:currentColor;font-style:normal}
.fv-pts-chip{background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.3);color:var(--gold)}
.fv-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}

/* ---- Boutons (gros, terrain) ---- */
.fv-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:11px 20px;border-radius:12px;font-size:.86rem;font-weight:700;font-family:inherit;cursor:pointer;border:0;color:#fff;background:linear-gradient(120deg,var(--blue),#1e4cc4);transition:.2s}
.fv-btn:hover{filter:brightness(1.08)}
.fv-btn:active{transform:scale(.98)}
.fv-btn.orange{background:linear-gradient(120deg,#e85d10,#ff6b1a)}
.fv-btn.violet{background:linear-gradient(120deg,#6d28d9,#8b5cf6)}
.fv-btn.ghost{background:var(--glass);border:1px solid var(--line2);color:var(--mid)}
.fv-btn.ghost:hover{color:var(--txt);border-color:var(--blue-l);filter:none}
.fv-btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.fv-btn.sm{min-height:36px;padding:7px 14px;font-size:.76rem;border-radius:999px}

/* ---- Étoiles ---- */
.fv-stars{display:inline-flex;gap:3px}
.fv-stars button{background:none;border:0;padding:3px;cursor:pointer;line-height:0;min-width:34px;min-height:34px}
.fv-stars svg{width:22px;height:22px;fill:rgba(127,141,176,.25);stroke:none;transition:fill .15s,transform .15s}
.fv-stars button:hover svg{transform:scale(1.12)}
.fv-stars .lit svg{fill:var(--gold)}
.fv-stars-s button{min-width:0;min-height:0;padding:1px}
.fv-stars-s svg{width:14px;height:14px}
.fv-crit{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.fv-crit:last-child{border-bottom:0}
.fv-crit span{font-size:.84rem;color:var(--mid)}

/* ---- Formulaires ---- */
.fv-form{display:flex;flex-direction:column;gap:14px;max-width:720px}
.fv-field label{display:block;font-size:.73rem;font-weight:700;color:var(--mid);margin-bottom:7px}
.fv-field input[type="text"],.fv-field textarea,.fv-field select{width:100%;background:rgba(8,16,40,.55);border:1px solid var(--line2);border-radius:12px;color:var(--txt);font-family:inherit;font-size:.9rem;padding:12px 14px;outline:none;min-height:44px;transition:border-color .2s}
.fv-field textarea{min-height:92px;resize:vertical}
.fv-field input:focus,.fv-field textarea:focus,.fv-field select:focus{border-color:var(--blue-l)}
.fv-radio-row{display:flex;gap:8px;flex-wrap:wrap}
.fv-radio{min-height:40px;padding:9px 15px;border-radius:999px;border:1px solid var(--line);background:var(--glass);color:var(--mid);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}
.fv-radio.on{background:rgba(37,99,235,.18);border-color:rgba(96,165,250,.45);color:#93c5fd}
.fv-radio.on.warn{background:rgba(240,85,106,.16);border-color:rgba(240,85,106,.45);color:#fda4af}
.fv-check{display:flex;align-items:flex-start;gap:10px;font-size:.82rem;color:var(--mid);cursor:pointer;line-height:1.5;min-height:32px}
.fv-check input{margin-top:3px;accent-color:var(--blue);width:17px;height:17px}
/* pièce jointe simulée */
.fv-attach{display:flex;gap:8px;flex-wrap:wrap}
.fv-attach button{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:9px 14px;border-radius:12px;border:1px dashed var(--line2);background:none;color:var(--dim);font-size:.76rem;font-weight:600;cursor:pointer;font-family:inherit;transition:.2s}
.fv-attach button:hover{color:var(--blue-l);border-color:var(--blue-l)}
.fv-attach button.added{border-style:solid;color:#4ade80;border-color:rgba(34,197,94,.45)}
.fv-attach svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ---- Pipeline / flow ---- */
.fv-flow{display:flex;gap:0;align-items:center;flex-wrap:wrap;margin:6px 0}
.fv-flow .ff-step{display:flex;align-items:center;gap:6px;font-size:.67rem;font-weight:700;color:var(--dim)}
.fv-flow .ff-step i{width:9px;height:9px;border-radius:50%;background:rgba(127,141,176,.3);font-style:normal}
.fv-flow .ff-step.past i{background:var(--blue-l)}
.fv-flow .ff-step.now{color:var(--txt)}
.fv-flow .ff-step.now i{background:var(--orange);box-shadow:0 0 0 4px rgba(255,107,26,.18)}
.fv-flow .ff-sep{width:16px;height:1px;background:var(--line2);margin:0 5px}

/* ---- Avis clients ---- */
.fv-review{border:1px solid var(--line);border-radius:16px;background:var(--glass);padding:16px 18px;margin-bottom:12px}
.fv-review.low{border-color:rgba(240,85,106,.35)}
.fv-rctx{margin-top:12px;padding:12px 14px;border-radius:12px;background:rgba(124,58,237,.08);border:1px solid rgba(168,130,255,.25)}
.fv-rctx .rc-a{display:block;font-size:.66rem;font-weight:800;color:var(--violet);margin-bottom:3px;text-transform:uppercase;letter-spacing:.06em}
.fv-rctx p{font-size:.82rem;color:var(--txt);line-height:1.5}
.fv-rctx.admin{background:rgba(37,99,235,.08);border-color:rgba(96,165,250,.3)}
.fv-rctx.admin .rc-a{color:var(--blue-l)}
.fv-notice{display:flex;gap:11px;align-items:flex-start;padding:13px 15px;border:1px solid var(--line2);border-radius:12px;background:rgba(96,165,250,.06);font-size:.79rem;color:var(--mid);line-height:1.55;margin-bottom:16px}
.fv-notice svg{width:17px;height:17px;stroke:var(--blue-l);fill:none;stroke-width:2;flex-shrink:0;margin-top:1px;stroke-linecap:round;stroke-linejoin:round}
.fv-notice.conf{border-color:rgba(240,85,106,.35);background:rgba(240,85,106,.07)}
.fv-notice.conf svg{stroke:#f87171}

/* ---- Points ---- */
.fv-pt-row{display:flex;align-items:center;gap:13px;padding:12px 2px;border-bottom:1px solid var(--line)}
.fv-pt-row:last-child{border-bottom:0}
.fv-pt-ico{width:34px;height:34px;border-radius:10px;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.fv-pt-ico svg{width:15px;height:15px;stroke:var(--gold);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fv-pt-main{flex:1;min-width:0}
.fv-pt-main b{display:block;font-size:.84rem;font-weight:600;color:var(--txt)}
.fv-pt-main span{font-size:.71rem;color:var(--dim)}
.fv-pt-val{font-weight:800;font-size:.94rem;color:var(--gold);font-family:'Space Grotesk',sans-serif}
.fv-pt-val.pending{color:var(--dim)}
.fv-cap{height:7px;border-radius:4px;background:rgba(96,165,250,.12);overflow:hidden;margin-top:8px}
.fv-cap i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#6d28d9,var(--violet));transition:width .5s}

/* ---- Qualité (barres constructives) ---- */
.fv-qrow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.fv-qrow:last-child{border-bottom:0}
.fv-qrow .ql{width:190px;flex-shrink:0;font-size:.8rem;color:var(--mid)}
.fv-qbar{flex:1;height:8px;border-radius:5px;background:rgba(96,165,250,.12);overflow:hidden}
.fv-qbar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--blue),var(--blue-l))}
.fv-qbar i.good{background:linear-gradient(90deg,#16a34a,#4ade80)}
.fv-qbar i.mid{background:linear-gradient(90deg,#d97706,#fbbf24)}
.fv-qrow .qv{width:52px;text-align:right;font-weight:800;font-size:.84rem;color:var(--txt);font-family:'Space Grotesk',sans-serif;flex-shrink:0}
@media(max-width:560px){.fv-qrow .ql{width:120px}}

/* ---- Toast / vide ---- */
.fv-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:34px 18px;color:var(--dim);font-size:.84rem;text-align:center}
.fv-empty svg{width:32px;height:32px;stroke:var(--dim);fill:none;stroke-width:1.6;opacity:.6;stroke-linecap:round;stroke-linejoin:round}
.fv-done-note{display:flex;align-items:center;gap:11px;padding:14px 16px;border:1px solid rgba(34,197,94,.35);background:rgba(34,197,94,.08);border-radius:13px;font-size:.85rem;color:var(--txt)}
.fv-done-note svg{width:18px;height:18px;stroke:#4ade80;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}

/* ---- Pièces jointes réelles + signature (audit n°04) ---- */
.fv-attlist{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.fv-attlist:empty{display:none}
.fv-attitem{position:relative;width:82px;height:62px;border-radius:10px;overflow:hidden;border:1px solid var(--line2)}
.fv-attitem img{width:100%;height:100%;object-fit:cover;display:block}
.fv-attitem.doc{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;font-size:.62rem;color:var(--mid);padding:4px 8px;text-align:center;width:auto;min-width:82px;max-width:140px;background:var(--glass)}
.fv-attitem.doc svg{width:16px;height:16px;stroke:var(--blue-l);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fv-attx{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(4,8,27,.78);color:#fff;border:0;font-size:.72rem;cursor:pointer;line-height:1;font-family:inherit}
.fv-signwrap canvas{width:100%;max-width:560px;height:160px;background:#fff;border-radius:12px;border:1px solid var(--line2);touch-action:none;cursor:crosshair;display:block}
.fv-signimg{width:150px;background:#fff;border-radius:9px;border:1px solid var(--line2);display:block}

/* ---- Accessibilité ---- */
.fv-tab:focus-visible,.fv-radio:focus-visible,.fv-btn:focus-visible,.fv-stars button:focus-visible,.fv-attach button:focus-visible{outline:2px solid var(--blue-l);outline-offset:2px}
@media(prefers-reduced-motion:reduce){#fvPanel,#fvPanel *{transition:none !important;animation:none !important}}

/* ---- Mode clair ---- */
body.theme-light .fv-hero{background:linear-gradient(135deg,rgba(124,58,237,.1),#fff 55%,rgba(255,107,26,.05));border-color:rgba(13,31,92,.1)}
body.theme-light .fv-card,body.theme-light .fv-kpi,body.theme-light .fv-review,body.theme-light .fv-tab{background:#fff;border-color:rgba(13,31,92,.1)}
body.theme-light .fv-hero h2,body.theme-light .fv-card h4,body.theme-light .fv-kpi b,body.theme-light .fv-sec-t{color:#0d1f5c}
body.theme-light .fv-field input[type="text"],body.theme-light .fv-field textarea,body.theme-light .fv-field select{background:#fff;border-color:rgba(13,31,92,.14);color:#0d1f5c}
body.theme-light .fv-radio,body.theme-light .fv-btn.ghost{background:#fff}
body.theme-light .fv-stars svg{fill:rgba(13,31,92,.14)}
body.theme-light .fv-stars .lit svg{fill:#f59e0b}
body.theme-light .fv-tab.on{background:rgba(124,58,237,.12);color:#6d28d9}
body.theme-light .fv-pt-val,body.theme-light .fv-hero .fv-hpts b{color:#b45309}
body.theme-light .fv-rctx p,body.theme-light .fv-pt-main b,body.theme-light .fv-qrow .qv,body.theme-light .fv-done-note{color:#0d1f5c}

/* ============================================================
   REFONTE · alignement sur le langage Missions (accent mauve,
   cartes en dégradé, liseré d'accent, en-têtes hairline)
   ============================================================ */
/* hero : même patron que le hero du détail mission */
.fv-hero{background:linear-gradient(165deg,rgba(24,32,84,.62),rgba(10,20,52,.65));border-color:var(--line)}
.fv-hero::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--violet,#7c3aed),#a882ff 45%,transparent 80%);pointer-events:none}
.fv-hero h2{font-size:1.35rem}
.fv-kicker{color:#a882ff}
body.theme-light .fv-hero{background:linear-gradient(160deg,#fff,#f5f9ff);border-color:rgba(13,31,92,.1);box-shadow:0 12px 34px -22px rgba(13,31,92,.25)}
body.theme-light .fv-kicker{color:#6d28d9}

/* sous-navigation : pilules plus nettes, actif = accent portail plein */
.fv-tab{border-radius:10px;background:rgba(10,20,52,.4)}
.fv-tab.on{background:linear-gradient(120deg,var(--violet,#7c3aed),#6d28d9);border-color:transparent;color:#fff;box-shadow:0 6px 16px -8px rgba(109,40,217,.55)}
.fv-tab.on .fv-tbadge{background:rgba(255,255,255,.24)}
body.theme-light .fv-tab.on{background:linear-gradient(120deg,var(--violet,#7c3aed),#6d28d9);color:#fff;border-color:transparent}

/* KPIs & cartes : dégradé commun + survol accent */
.fv-kpi,.fv-card,.fv-review{background:linear-gradient(170deg,rgba(16,30,70,.5),rgba(9,17,44,.55))}
.fv-card:hover,.fv-review:hover{border-color:#a882ff}
.fv-review.low:hover{border-color:rgba(240,85,106,.55)}
body.theme-light .fv-kpi,body.theme-light .fv-card,body.theme-light .fv-review{background:#fff;box-shadow:0 8px 24px -18px rgba(13,31,92,.2)}
body.theme-light .fv-card:hover,body.theme-light .fv-review:hover{border-color:#6d28d9}

/* titres de section : eyebrow + filet, comme la vue Aujourd'hui */
.fv-sec-t{font-size:.72rem;font-weight:800;letter-spacing:.9px;text-transform:uppercase;color:var(--dim);gap:10px}
.fv-sec-t::after{content:"";flex:1;height:1px;background:var(--line)}
.fv-sec-t svg{stroke:#a882ff}
body.theme-light .fv-sec-t{color:#7186ad}
body.theme-light .fv-sec-t::after{background:rgba(13,31,92,.1)}
body.theme-light .fv-sec-t svg{stroke:#6d28d9}

/* boutons : le primaire passe à l'accent portail (variantes conservées) */
.fv-btn{background:linear-gradient(120deg,var(--violet,#7c3aed),#6d28d9);border-radius:12px}
.fv-btn:hover{box-shadow:0 10px 22px -10px rgba(109,40,217,.6)}
.fv-btn.orange{background:linear-gradient(120deg,#e85d10,#ff6b1a)}
.fv-btn.violet{background:linear-gradient(120deg,#6d28d9,#8b5cf6)}
.fv-btn.ghost{background:var(--glass);box-shadow:none}
.fv-btn.ghost:hover{border-color:#a882ff;color:#a882ff;box-shadow:none}
body.theme-light .fv-btn.ghost{background:#fff;color:#3a5280}
body.theme-light .fv-btn.ghost:hover{border-color:#6d28d9;color:#6d28d9}

/* formulaires & choix : focus/actif à l'accent */
.fv-field input:focus,.fv-field textarea:focus,.fv-field select:focus{border-color:#a882ff}
.fv-radio.on{background:rgba(124,58,237,.18);border-color:rgba(168,130,255,.45);color:#c4b5fd}
body.theme-light .fv-radio.on{background:rgba(109,40,217,.08);border-color:rgba(109,40,217,.3);color:#6d28d9}
.fv-attach button:hover{color:#a882ff;border-color:#a882ff}
body.theme-light .fv-field input:focus,body.theme-light .fv-field textarea:focus,body.theme-light .fv-field select:focus{border-color:#6d28d9}

/* barres qualité / caps : bleu → accent */
.fv-qbar i{background:linear-gradient(90deg,var(--violet,#7c3aed),#a882ff)}
.fv-qbar i.good{background:linear-gradient(90deg,#16a34a,#4ade80)}
.fv-qbar i.mid{background:linear-gradient(90deg,#d97706,#fbbf24)}
.fv-flow .ff-step.past i{background:#a882ff}

/* focus visible cohérent */
.fv-tab:focus-visible,.fv-radio:focus-visible,.fv-btn:focus-visible,.fv-stars button:focus-visible,.fv-attach button:focus-visible{outline-color:#a882ff}
