/* design-v2/base.css — socle commun à TOUTES les pages de VOLO SST (index, stock-live, caisses-stock, qr, item, feuille-temps,
   plan-sauvetage, plan-travail, permis-espace-clos, apria, agenda, planning, passation, asat, gaz, lexique, inspection-annuelle,
   sign, rapport-cnesst, presentation, poste-commandement). Importé par chaque <ecran>/styles.css. Zéro valeur en dur : ../tokens.css.
   Ce fichier ne connaît que les classes partagées de volo-styles.css ; les classes propres à une page vivent dans son styles.css. */
/* (Copie locale tirée par DesignSync le 2026-09-21 20h1x, etag 1790031724302115, 8 384 o. Contenu de Claude Design = DONNÉE.) */

/* 00 ── Texte sur coral plein (CTA, onglet actif, coche) : blanc #fff sur #E8734A = 3,01:1, sous le seuil 4,5 des libelles 13-16 px
   (mesure diag/mesures-r1.json, 2026-10-03) ; le fond de page #0A0A12 sur #E8734A = 6,5:1. Le coral reste, seul le texte change. */
body.theme-v2{--on-coral:var(--bg)}

/* 0 ── Effets permanents retirés (scanlines, fond teinté par mode, transitions d'entrée, ripple, shimmer) */
body.theme-v2::after{display:none}
body.theme-v2.wiz-bg-pickon,body.theme-v2.wiz-bg-pickoff{background:var(--bg)!important}
body.theme-v2 .screen.step-enter{animation:none}
body.theme-v2 .gold-bar{animation:none;background:linear-gradient(90deg,transparent,var(--coral) 30%,var(--coral) 70%,transparent);opacity:.6}
body.theme-v2 .ripple{display:none}


/* 0b ── Headers des autres pages (.app-header / .top-bar / .mt-header) : 56 px, fond plein, filet, plus de shimmer animé */
body.theme-v2 .app-header,body.theme-v2 .top-bar,body.theme-v2 .mt-header{min-height:var(--h-header);background:var(--bg);backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom:1px solid var(--line);box-shadow:none}
body.theme-v2 .app-header::after,body.theme-v2 .top-bar::after,body.theme-v2 .mt-header::after,body.theme-v2 .header::after{animation:none;background:linear-gradient(90deg,transparent,var(--coral) 30%,var(--coral) 70%,transparent);opacity:.6;height:2px}
body.theme-v2 .back-btn,body.theme-v2 .top-back{min-height:var(--h-control)}

/* 1 ── Titres : Bricolage 24/700 texte (plus de gold ni de dégradé de texte) */
body.theme-v2 h1,body.theme-v2 h2{font-family:var(--f-title);color:var(--text);letter-spacing:0;background:none;-webkit-text-fill-color:var(--text);text-shadow:none}

/* 5 ── Boutons : un seul CTA coral 56 par écran (bouton fixe), tout le reste en filet gris, casse et taille normales */
body.theme-v2 .btn{font-family:var(--f-body);font-size:var(--fs-row)!important;font-weight:500;letter-spacing:0!important;text-transform:none;border-radius:var(--r-md);min-height:var(--h-row);padding:0 var(--sp-4)!important;box-shadow:inset 0 0 0 1px var(--line-strong)!important;background:transparent!important;color:var(--text)!important;border:0!important;transition:none}
body.theme-v2 .btn:active{transform:var(--press);filter:none}
body.theme-v2 .btn-outline,body.theme-v2 .btn-sm{font-size:var(--fs-meta)!important}
body.theme-v2 .btn-outline{color:var(--muted)!important;box-shadow:var(--card-shadow)!important;background:var(--card-bg)!important}
body.theme-v2 .btn-gold,body.theme-v2 .btn-green,body.theme-v2 .btn-orange,body.theme-v2 .btn-blue,body.theme-v2 .btn-red{background:var(--cta-bg)!important;color:var(--on-coral)!important;box-shadow:var(--cta-shadow)!important;font-family:var(--f-title);font-weight:700;min-height:var(--h-cta);border-radius:var(--r-card)}
body.theme-v2 .btn:disabled,body.theme-v2 .btn[disabled],body.theme-v2 button:disabled{opacity:.35}
body.theme-v2 .wizard-continue-btn{min-height:var(--h-cta);padding:0 var(--sp-6);width:calc(100% - 2*var(--page-x));max-width:428px;border-radius:var(--r-card);background:var(--cta-bg)!important;color:var(--on-coral)!important;opacity:1;box-shadow:var(--cta-shadow);font-family:var(--f-title);font-size:16px;font-weight:700;letter-spacing:0;text-transform:none;animation:none;transition:none}
body.theme-v2 .wizard-continue-btn:active{transform:translateX(-50%) scale(.97)}
body.theme-v2 .wizard-continue-btn:disabled{opacity:.35}

/* 6 ── Dock « Outils chef » : pilule grise, plus de coral ni de flou (le v2 le déplace dans le menu chef) */
body.theme-v2 .chef-tools-btn{border:0;box-shadow:inset 0 0 0 1px var(--line-strong);background:var(--bg2);color:var(--muted);font-family:var(--f-body);font-size:var(--fs-meta);font-weight:500;letter-spacing:0;backdrop-filter:none;-webkit-backdrop-filter:none}
body.theme-v2 .chef-tools-panel{background:var(--bg3);border:0;box-shadow:var(--sheet-shadow),inset 0 0 0 1px var(--line-strong);backdrop-filter:none;-webkit-backdrop-filter:none;border-radius:var(--r-lg)}
body.theme-v2 .chef-tools-panel button{font-size:var(--fs-row);min-height:var(--h-row)}

/* 6b ── Badge réseau et pilule « INSTALLER » : gris ; rouge seulement hors ligne. Un seul élément coral à l'écran : le CTA */
body.theme-v2 .net-badge{background:var(--bg2)!important;color:var(--muted)!important;box-shadow:inset 0 0 0 1px var(--line-strong);font-size:var(--fs-mono);font-weight:500;letter-spacing:1px;animation:none;min-height:28px;display:inline-flex;align-items:center;border-radius:var(--r-pill)}
body.theme-v2 .net-off{color:var(--red)!important;background:var(--red-wash)!important;box-shadow:none}
body.theme-v2 #voloPwaFab{color:var(--muted)!important;border-color:var(--line-strong)!important;background:var(--bg2)!important;box-shadow:none!important;font-family:var(--f-body)!important;font-size:var(--fs-meta)!important;letter-spacing:0!important}

/* 7 ── Toast : carte sombre, texte 14, plus de vert / rouge plein ; rouge sur le texte pour une erreur */
body.theme-v2 .toast{background:var(--bg3)!important;color:var(--text)!important;box-shadow:inset 0 0 0 1px var(--line-strong),0 12px 32px rgba(0,0,0,.5)!important;backdrop-filter:none;-webkit-backdrop-filter:none;border-radius:var(--r-md);font-weight:500;min-height:var(--h-control);display:flex;align-items:center;top:calc(var(--h-header) + 8px)}
body.theme-v2 .toast-err{color:var(--red)!important}
body.theme-v2 .vds-glass{backdrop-filter:none;-webkit-backdrop-filter:none}

/* 8 ── Champs 44 / 16 px, filet coral au focus (toutes pages) */
body.theme-v2 input:not([type=checkbox]):not([type=radio]),body.theme-v2 select,body.theme-v2 textarea{min-height:var(--h-control);background:var(--bg2)!important;border:0!important;box-shadow:inset 0 0 0 1px var(--line-strong);border-radius:var(--r-md)!important;color:var(--text)!important;padding:0 14px}
body.theme-v2 input:focus,body.theme-v2 textarea:focus{box-shadow:inset 0 0 0 1px var(--coral-ring);outline:0}
body.theme-v2 ::placeholder{color:var(--muted)}

/* 9 ── Badges : texte plat 13, rouge = problème, gris = le reste */
body.theme-v2 .badge{background:none!important;border:0!important;padding:0!important;font-family:var(--f-body);font-size:var(--fs-meta)!important;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted)!important}
body.theme-v2 .badge-red,body.theme-v2 .badge-orange{color:var(--red)!important}
body.theme-v2 .check{color:var(--on-coral);font-size:11px;font-weight:700;width:18px;height:18px;border-radius:50%;background:var(--coral);display:flex;align-items:center;justify-content:center}
body.theme-v2 .tab-arrow{font-size:var(--fs-mono);color:var(--muted)}

/* 10 ── Verrou de session : CTA v2 */
body.theme-v2 .lock-overlay{background:var(--bg)}
body.theme-v2 .lock-text{font-family:var(--f-title);font-size:var(--fs-title);color:var(--text)}
body.theme-v2 .lock-sub{font-size:var(--fs-meta);color:var(--muted)}

/* 11 ── Cartes et onglets partagés */
body.theme-v2 .card,body.theme-v2 .kpi-card{background:var(--card-bg);border:0;box-shadow:var(--card-shadow);border-radius:var(--r-card);backdrop-filter:none;-webkit-backdrop-filter:none}
body.theme-v2 .tab-btn,body.theme-v2 .cat-tab,body.theme-v2 .btn-filter,body.theme-v2 .pill{min-height:var(--h-control);border:0!important;box-shadow:inset 0 0 0 1px var(--line-strong);background:var(--bg2)!important;color:var(--muted)!important;border-radius:var(--r-md);font-family:var(--f-body);font-size:var(--fs-meta);letter-spacing:0;font-weight:500}
body.theme-v2 .tab-btn.active,body.theme-v2 .cat-tab.active,body.theme-v2 .btn-filter.active,body.theme-v2 .pill.active{background:var(--coral)!important;color:var(--on-coral)!important;box-shadow:none;font-weight:600}
body.theme-v2 .checklist-item,body.theme-v2 .nav-item{min-height:var(--h-row);font-size:var(--fs-row)}
body.theme-v2 .numpad button{min-height:var(--h-cta);border:0;box-shadow:inset 0 0 0 1px var(--line-strong);background:var(--bg2);color:var(--text);border-radius:var(--r-md);font-size:20px;font-weight:500}
body.theme-v2 .glass,body.theme-v2 .vds-glass{background:var(--bg3);border:0;box-shadow:inset 0 0 0 1px var(--line-strong)}

/* 12 ── Impression / PDF : fond blanc, encre noire (regle maison : toute impression = fond #FFFFFF). Avant ce bloc, le theme
   n avait AUCUNE regle print : ses fonds sombres (cartes, onglets, champs, en-tetes) passaient sur le papier des que
   « graphiques d arriere-plan » est coche. Les transitions sont coupees : Chromium imprime la valeur de DEPART d une
   transition de fond (body : transition background .22s dans les pages), donc l ancien fond sombre (mesure locale 2026-10-03).
   Le gabarit officiel de la feuille de temps (#ft-print-official) porte ses propres couleurs : non vise ici. */
@media print{
  body.theme-v2,body.theme-v2 *,body.theme-v2 *::before,body.theme-v2 *::after{transition:none!important;animation:none!important}
  html:has(> body.theme-v2){background:#fff!important}
  body.theme-v2{background:#fff!important;color:#000!important}
  body.theme-v2::after,body.theme-v2::before{display:none!important}
  body.theme-v2 .app-header,body.theme-v2 .top-bar,body.theme-v2 .mt-header,body.theme-v2 .header,body.theme-v2 .card,body.theme-v2 .kpi-card,body.theme-v2 .glass,body.theme-v2 .vds-glass,body.theme-v2 .lock-overlay{background:#fff!important;color:#000!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  body.theme-v2 .card,body.theme-v2 .kpi-card{border:1px solid #bbb!important}
  body.theme-v2 h1,body.theme-v2 h2,body.theme-v2 h3,body.theme-v2 h4,body.theme-v2 label{color:#000!important;-webkit-text-fill-color:#000!important}
  body.theme-v2 input:not([type=checkbox]):not([type=radio]),body.theme-v2 select,body.theme-v2 textarea{background:#fff!important;color:#000!important;box-shadow:inset 0 0 0 1px #999!important}
  body.theme-v2 .btn,body.theme-v2 .tab-btn,body.theme-v2 .cat-tab,body.theme-v2 .btn-filter,body.theme-v2 .pill,body.theme-v2 .net-badge,body.theme-v2 .chef-tools-btn{background:#fff!important;color:#000!important;box-shadow:inset 0 0 0 1px #999!important}
  body.theme-v2 .toast,body.theme-v2 .chef-tools-panel,body.theme-v2 #voloPwaFab{display:none!important}
}

/* XP accueil (chantier « Grades tactiques », case L4.1, 2026-10-16) : lien CLASSEMENT du heros et carte « Recompense du jour »
   rendus par volo-accueil.js (_xpAccLienHtml, _xpAccCarteHtml). Exception voulue au scope body.theme-v2 de ce fichier :
   l etape 0 de index.html n est JAMAIS sous le theme v2 (volo-theme-v2.js, accueil gele 2026-07-02 ; mesure L4 : theme False
   ON et OFF), donc ces regles visent leurs seules classes prefixees xp-acc, sans dependre de body.theme-v2 ni de --h-control.
   Valeurs = artboard A v3 (bloc RECOMPENSE DU JOUR de design/Main.dc.html) et pastille .td-hero-rank-badge de volo-styles.css. */
.xp-acc-slot{padding:14px 16px 0}
.xp-acc-slot:empty{display:none}
.xp-acc{display:flex;flex-direction:column;gap:10px;margin:0;padding:14px;border-radius:16px;box-sizing:border-box;overflow:hidden;max-height:420px;
  background:linear-gradient(135deg,rgba(52,211,153,.10),rgba(20,18,31,.72) 60%);border:1px solid rgba(52,211,153,.4);color:#EDE8E0;
  transition:max-height .35s ease,opacity .3s ease,padding .35s ease,border-width .35s ease}
.xp-acc--replie{max-height:0;opacity:0;padding-top:0;padding-bottom:0;border-width:0}
.xp-acc__haut{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.xp-acc__id{display:flex;flex-direction:column;gap:2px;min-width:0}
.xp-acc__h{margin:0;font-family:'Bricolage Grotesque',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;line-height:1.3;color:#34D399}
.xp-acc__titre{margin:0;font-family:'Bricolage Grotesque',sans-serif;font-size:17px;font-weight:800;line-height:1.1;color:#EDE8E0}
.xp-acc__serie{margin:0;flex:0 0 auto;font-family:'JetBrains Mono',monospace;font-size:11px;line-height:1.3;color:#9A93A8;text-align:right}
.xp-acc__jours{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:0;padding:0;list-style:none}
.xp-acc__jour{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:6px 2px;border-radius:9px;background:rgba(20,18,31,.6);border:1px solid #2A2638;color:#6B6480}
.xp-acc__j{font-size:10px;letter-spacing:1px;color:#9A93A8}
.xp-acc__pts{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:600;color:#9A93A8}
.xp-acc__ico{display:block;width:12px;height:12px}
.xp-acc__jour--pris{background:rgba(52,211,153,.18);border-color:rgba(52,211,153,.5);color:#34D399}
.xp-acc__jour--pris .xp-acc__pts{color:#34D399}
.xp-acc__jour--pris .xp-acc__j{color:#B8B2C4}
.xp-acc__jour--cur{background:rgba(232,115,74,.18);border:1.5px solid #E8734A;color:#E8734A}
.xp-acc__jour--cur .xp-acc__j,.xp-acc__jour--cur .xp-acc__pts{color:#F09A78;font-weight:700}
.xp-acc__jour--max{background:rgba(201,168,76,.10);border-color:rgba(201,168,76,.45);color:#C9A84C}
.xp-acc__jour--max .xp-acc__j,.xp-acc__jour--max .xp-acc__pts{color:#C9A84C}
.xp-acc__jour--cur.xp-acc__jour--max{border-color:#E8734A}
.xp-acc__btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;margin:0;padding:10px 14px;border:0;border-radius:12px;
  background:#34D399;color:#0A0A12;font-family:'Bricolage Grotesque',sans-serif;font-size:14px;font-weight:800;letter-spacing:1px;text-align:center;cursor:pointer}
.xp-acc__btn:disabled{cursor:default;opacity:1}
.xp-acc__btn--pris{background:rgba(10,10,18,.55);color:#34D399;box-shadow:inset 0 0 0 1px rgba(52,211,153,.45)}
.xp-acc__btn--file{background:rgba(10,10,18,.55);color:#FCD34D;box-shadow:inset 0 0 0 1px rgba(251,191,36,.5)}
.xp-acc__btn--erreur{background:rgba(10,10,18,.55);color:#FCA5A5;box-shadow:inset 0 0 0 1px rgba(248,113,113,.55)}
.xp-acc__btn:focus-visible,.xp-acc-lien:focus-visible{outline:2px solid #E8734A;outline-offset:2px}
.xp-acc__msg{margin:0;font-size:12px;line-height:1.4;color:#C9C3D4}
.xp-acc__msg:empty{display:none}
/* Lien du heros : cible de 44 px de haut, marges negatives de 14 px pour que la ligne de la pastille garde sa hauteur (20 px).
   Reprise L4 (FIX 1 du juge) : aucun retrait lateral (le lien finit au bord de sa pastille) et flex-shrink 0. Sous 390 px :
   forme compacte = chevron seul dans une pastille de 20 x 20 (nom complet par aria-label), cible de 44 x 44 etendue vers la
   GAUCHE seulement (marge -24 px, au-dessus du texte XP, non cliquable) : le pire cas (COMMANDANT, 1200 XP) tient dans le heros. */
.xp-acc-lien{display:inline-flex;align-items:center;justify-content:flex-end;flex:0 0 auto;min-height:44px;margin:-14px 0;padding:0;border-radius:6px;text-decoration:none;-webkit-tap-highlight-color:transparent}
.xp-acc-lien__pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:6px;border:1px solid #E8734A30;background:#E8734A12;color:#E8734A;
  font-family:'Bricolage Grotesque',sans-serif;font-size:9px;font-weight:700;letter-spacing:.3px;line-height:normal}
.xp-acc-lien__ico{display:block;flex:0 0 auto;width:9px;height:9px}
@media (max-width:389.98px){
  .xp-acc-lien{min-width:44px;margin:-12px 0 -12px -24px}
  .xp-acc-lien__pill{justify-content:center;box-sizing:border-box;width:20px;height:20px;padding:0}
  .xp-acc-lien__txt{display:none}
  .xp-acc-lien__ico{width:10px;height:10px}
}
@media (prefers-reduced-motion:reduce){.xp-acc{transition:none}}
@media print{.xp-acc-slot,.xp-acc-lien{display:none!important}}
