/* ═══════════════════════════════════════════════════════════
   ATLAS — feuille de style
   Jetons de design et composants issus de la maquette validée.
   Les sélecteurs travaillent aussi bien sur <button> (interface
   pilotée en JS) que sur <a> (navigation rendue côté serveur).
   ═══════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────
   ATLAS — jetons de design
   Palette froide « encre pétrole » + rampe de charge clinique
   ───────────────────────────────────────────── */
:root{
  --r-froid:#3B5BDB;   /* sous-charge   < 50 %  */
  --r-tiede:#1C93AE;   /* en approche  50-80 %  */
  --r-cible:#35B57F;   /* zone cible  80-115 %  */
  --r-haut:#E2A03F;    /* élevé      115-140 %  */
  --r-sature:#C9524A;  /* surcharge    > 140 %  */
  --accent:#E2A03F;
  --jade:#35B57F;
  --rayon:14px;
  --rayon-s:9px;
  --gouttiere:18px;
  --serif:"Bricolage Grotesque",system-ui,sans-serif;
  --sans:"Karla",system-ui,sans-serif;
  --mono:"DM Mono",ui-monospace,monospace;
  --transition:180ms cubic-bezier(.2,.6,.2,1);
}
[data-theme="nuit"]{
  --fond:#0D1317; --carte:#141E25; --carte-haut:#1B2830; --enfonce:#0A1014;
  --trait:#24333D; --trait-fort:#33454F;
  --texte:#E6EDF1; --texte-2:#8CA1AD; --texte-3:#5D717D;
  --ombre:0 1px 0 rgba(255,255,255,.03), 0 18px 40px -28px rgba(0,0,0,.9);
  --grille:rgba(255,255,255,.045);
}
[data-theme="jour"]{
  --fond:#EBEFF2; --carte:#FFFFFF; --carte-haut:#F4F7F9; --enfonce:#E3E9ED;
  --trait:#D6DEE4; --trait-fort:#BCC8D0;
  --texte:#0F191F; --texte-2:#5A6E7B; --texte-3:#8496A1;
  --ombre:0 1px 2px rgba(16,32,44,.05), 0 14px 30px -24px rgba(16,32,44,.35);
  --grille:rgba(15,25,31,.06);
  --r-froid:#3350C4; --r-tiede:#14808F; --r-cible:#1E9767; --r-haut:#C3801E; --r-sature:#B33F38;
  --accent:#B57A18;
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--fond);
  color:var(--texte);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  transition:background var(--transition), color var(--transition);
}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--serif);font-weight:800;letter-spacing:-.02em;margin:0}
.mono{font-family:var(--mono);font-feature-settings:"tnum"}

/* ─── ossature ─── */
.app{min-height:100vh}
.topbar{
  position:sticky;top:0;z-index:45;display:flex;align-items:center;gap:20px;
  min-height:60px;padding:env(safe-area-inset-top) 30px 0;
  background:color-mix(in srgb,var(--carte) 90%,transparent);
  backdrop-filter:blur(16px);border-bottom:1px solid var(--trait);
}
.marque{display:flex;align-items:baseline;gap:7px;flex:none}
.marque b{font-family:var(--serif);font-size:19px;letter-spacing:.15em;font-weight:800}
.marque span{font-family:var(--mono);font-size:9.5px;color:var(--texte-3);letter-spacing:.08em}
.separateur{width:1px;height:26px;background:var(--trait);flex:none}
.modules{display:flex;align-items:center;gap:3px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.modules::-webkit-scrollbar{display:none}
.mod{
  display:flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;white-space:nowrap;
  color:var(--texte-2);font-weight:500;font-size:13.5px;
  transition:background var(--transition),color var(--transition);
}
.mod:hover{background:var(--carte-haut);color:var(--texte)}
.mod[aria-current="page"]{background:var(--carte-haut);color:var(--texte);font-weight:700}
.mod[aria-current="page"] svg{color:var(--accent)}
.mod svg{width:16px;height:16px;flex:none;stroke-width:1.7}
.mod .plus-tard{
  font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;color:var(--texte-3);font-style:normal;
  border:1px solid var(--trait);border-radius:999px;padding:1px 5px;
}
.topbar-fin{display:flex;align-items:center;gap:10px;flex:none;margin-left:auto}
.bascule{display:flex;align-items:center;border:1px solid var(--trait);border-radius:999px;padding:3px;background:var(--enfonce)}
.bascule button{
  padding:5px 11px;border-radius:999px;font-size:12px;font-weight:700;color:var(--texte-3);
  display:flex;align-items:center;gap:6px;transition:var(--transition);
}
.bascule button[aria-pressed="true"]{background:var(--carte-haut);color:var(--texte);box-shadow:var(--ombre)}
.bascule svg{width:14px;height:14px}
.avatar{
  width:31px;height:31px;border-radius:50%;border:1px solid var(--trait);background:var(--enfonce);
  font-family:var(--mono);font-size:12px;color:var(--texte-2);display:grid;place-items:center;flex:none;
}

.scene{min-width:0;display:flex;flex-direction:column}
.entete{
  padding:26px 30px 0;border-bottom:1px solid var(--trait);
  background:linear-gradient(180deg,var(--carte) 0%,transparent 100%);
}
.entete-haut{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap}
.entete h1{font-size:29px}
.entete .sous{color:var(--texte-2);font-size:13.5px;margin:4px 0 0}
.entete-actions{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.onglets{display:flex;gap:2px;margin-top:20px;overflow-x:auto;scrollbar-width:none}
.onglets::-webkit-scrollbar{display:none}
.onglet{
  padding:10px 14px;font-size:13.5px;font-weight:700;color:var(--texte-3);white-space:nowrap;
  border-bottom:2px solid transparent;transition:var(--transition);
}
.onglet:hover{color:var(--texte-2)}
.onglet[aria-selected="true"]{color:var(--texte);border-bottom-color:var(--accent)}
.onglet .pastille{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--jade);margin-left:7px;vertical-align:middle;animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

main{padding:24px 30px 90px;flex:1}
.vue[hidden]{display:none}

/* ─── boutons ─── */
.btn{
  display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:var(--rayon-s);
  border:1px solid var(--trait);background:var(--carte);font-size:13.5px;font-weight:700;
  transition:var(--transition);
}
.btn:hover{border-color:var(--trait-fort);background:var(--carte-haut)}
.btn svg{width:15px;height:15px;stroke-width:1.9}
.btn-fort{background:var(--accent);border-color:var(--accent);color:#12181B}
.btn-fort:hover{background:var(--accent);filter:brightness(1.08)}
.btn-jade{background:var(--jade);border-color:var(--jade);color:#06120C}
.btn-jade:hover{filter:brightness(1.08)}
.btn-discret{background:transparent}
.segments{display:flex;border:1px solid var(--trait);border-radius:var(--rayon-s);overflow:hidden;background:var(--enfonce)}
.segments button{
  padding:8px 13px;font-family:var(--mono);font-size:12px;color:var(--texte-3);
  border-right:1px solid var(--trait);transition:var(--transition);
}
.segments button:last-child{border-right:none}
.segments button[aria-pressed="true"]{background:var(--carte-haut);color:var(--texte)}

/* ─── cartes ─── */
.grille{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gouttiere)}
.carte{
  background:var(--carte);border:1px solid var(--trait);border-radius:var(--rayon);
  box-shadow:var(--ombre);padding:18px;min-width:0;
}
.carte-tete{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.carte-tete h2{font-size:14.5px;font-weight:700;letter-spacing:-.01em}
.carte-tete .indice{font-family:var(--mono);font-size:10.5px;color:var(--texte-3);margin-left:auto;letter-spacing:.04em}
.etiquette{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--texte-3);
}

/* KPI */
.kpi{display:flex;flex-direction:column;gap:6px;justify-content:space-between}
.kpi .valeur{font-family:var(--serif);font-size:33px;font-weight:800;letter-spacing:-.03em;line-height:1}
.kpi .valeur small{font-size:14px;font-weight:600;color:var(--texte-3);margin-left:3px;letter-spacing:0}
.kpi .delta{font-family:var(--mono);font-size:11px;display:flex;align-items:center;gap:5px}
.hausse{color:var(--r-cible)}.baisse{color:var(--r-sature)}

/* ─── carte de charge (signature) ─── */
.corps-zone{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-items:end}
.corps-zone figure{margin:0;text-align:center}
.corps-zone figcaption{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--texte-3);margin-top:6px}
.corps svg{width:100%;height:auto;max-height:min(46vh,340px);display:block;margin:0 auto}
.muscle{transition:opacity 140ms linear,filter 140ms linear;cursor:pointer}
.muscle:hover{filter:brightness(1.25)}
.corps.filtre .muscle{opacity:.22}
.corps.filtre .muscle.actif{opacity:1}
.ossature{fill:var(--trait);opacity:.85}
.legende{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:14px;padding-top:13px;border-top:1px solid var(--trait)}
.legende span{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;color:var(--texte-2)}
.legende i{width:9px;height:9px;border-radius:2px;display:block}

/* infobulle */
.bulle{
  position:fixed;pointer-events:none;z-index:60;background:var(--carte-haut);border:1px solid var(--trait-fort);
  border-radius:var(--rayon-s);padding:9px 11px;box-shadow:0 12px 30px -12px rgba(0,0,0,.6);
  font-size:12px;opacity:0;transform:translateY(4px);transition:opacity 120ms,transform 120ms;max-width:220px;
}
.bulle.on{opacity:1;transform:translateY(0)}
.bulle b{display:block;font-family:var(--serif);font-size:13.5px;margin-bottom:3px}
.bulle .l{display:flex;justify-content:space-between;gap:14px;font-family:var(--mono);font-size:11px;color:var(--texte-2)}

/* ─── tableaux de charge ─── */
.rangs{display:flex;flex-direction:column;gap:9px}
.rang{display:grid;grid-template-columns:118px 1fr 84px;align-items:center;gap:12px;padding:2px 0;border-radius:6px}
.rang .nom{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.piste{position:relative;height:9px;border-radius:5px;background:var(--enfonce);overflow:visible}
.piste i{position:absolute;inset:0 auto 0 0;border-radius:5px;transition:width 400ms cubic-bezier(.2,.7,.2,1)}
.piste .repere{position:absolute;top:-4px;bottom:-4px;width:1px;background:var(--trait-fort)}
.rang .chiffre{font-family:var(--mono);font-size:11.5px;color:var(--texte-2);text-align:right}
.rang.actif{background:var(--carte-haut)}

/* ─── listes / programmes ─── */
.liste{display:flex;flex-direction:column;gap:10px}
.ligne{
  display:flex;align-items:center;gap:14px;padding:13px 15px;border:1px solid var(--trait);
  border-radius:var(--rayon-s);background:var(--carte);transition:var(--transition);
}
.ligne:hover{border-color:var(--trait-fort);background:var(--carte-haut)}
.ligne .titre{font-weight:700;font-size:14px}
.ligne .meta{font-family:var(--mono);font-size:11px;color:var(--texte-3)}
.ligne .droite{margin-left:auto;display:flex;align-items:center;gap:10px}
.puces{display:flex;flex-wrap:wrap;gap:5px}
.puce{
  font-family:var(--mono);font-size:10px;padding:2.5px 7px;border-radius:999px;
  border:1px solid var(--trait);color:var(--texte-2);white-space:nowrap;
}
.puce.primaire{border-color:transparent;color:#F2F8FA;font-weight:500}
.disc{width:3px;align-self:stretch;border-radius:3px;flex:none;min-height:34px}

/* ─── séance en direct ─── */
.direct{display:grid;grid-template-columns:1fr 320px;gap:var(--gouttiere)}
.chrono{
  background:linear-gradient(150deg,var(--carte-haut),var(--carte));border:1px solid var(--trait);
  border-radius:var(--rayon);padding:20px;position:sticky;top:calc(var(--haut-topbar,0px) + 18px);box-shadow:var(--ombre);
}
.chrono .horloge{font-family:var(--mono);font-size:46px;letter-spacing:-.03em;line-height:1;font-weight:500}
.chrono .horloge.repos{color:var(--accent)}
.anneau{position:relative;width:150px;height:150px;margin:6px auto 12px}
.anneau svg{transform:rotate(-90deg);width:100%;height:100%}
.anneau .fil{fill:none;stroke:var(--enfonce);stroke-width:7}
.anneau .jauge{fill:none;stroke:var(--accent);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset 200ms linear}
.anneau .centre{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
}
.anneau .centre .etat{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--texte-3)}
.exo{border:1px solid var(--trait);border-radius:var(--rayon);background:var(--carte);margin-bottom:12px;overflow:hidden}
.exo.courant{border-color:var(--accent)}
.exo-tete{display:flex;align-items:center;gap:12px;padding:14px 16px;width:100%;text-align:left}
.exo-tete .rang-num{
  font-family:var(--mono);font-size:11px;color:var(--texte-3);width:20px;flex:none;
}
.exo-tete .titre{font-weight:700;font-size:14.5px}
.exo-tete .avancee{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--texte-2)}
.exo-corps{padding:0 16px 16px;border-top:1px solid var(--trait)}
.series{display:flex;flex-direction:column;gap:7px;margin:14px 0}
.serie{display:grid;grid-template-columns:26px 1fr 1fr 96px;gap:8px;align-items:center}
.serie .num{font-family:var(--mono);font-size:11px;color:var(--texte-3)}
.serie.faite{color:var(--texte-2)}
.serie.faite .val{background:var(--enfonce);border-style:dashed}
.champ{
  display:flex;align-items:center;gap:6px;border:1px solid var(--trait);border-radius:8px;
  background:var(--enfonce);padding:7px 10px;
}
.champ input{
  width:100%;background:none;border:none;font-family:var(--mono);font-size:14px;padding:0;min-width:0;
}
.champ input::-webkit-outer-spin-button,.champ input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.champ input[type=number]{-moz-appearance:textfield}
.champ .u{font-family:var(--mono);font-size:10.5px;color:var(--texte-3);flex:none}
.champ:focus-within{border-color:var(--accent)}
.rappel{font-family:var(--mono);font-size:11px;color:var(--texte-3);margin-bottom:8px}
.note{
  width:100%;background:var(--enfonce);border:1px solid var(--trait);border-radius:8px;padding:9px 11px;
  font-size:13px;resize:vertical;min-height:44px;font-family:var(--sans);
}
.vide{
  border:1px dashed var(--trait-fort);border-radius:var(--rayon);padding:30px 24px;text-align:center;color:var(--texte-2);
}
.vide h2{font-size:19px;margin-bottom:6px;color:var(--texte)}
.attente{max-width:660px;margin:36px auto;text-align:left}
.attente .entete-attente{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.attente .jeton{
  width:44px;height:44px;border-radius:12px;border:1px solid var(--trait);background:var(--enfonce);
  display:grid;place-items:center;flex:none;
}
.attente .jeton svg{width:22px;height:22px;stroke-width:1.6;color:var(--accent)}
.attente h2{font-family:var(--serif);font-size:24px;margin:0}
.attente p{color:var(--texte-2);margin:0 0 20px;font-size:14px;max-width:52ch}
.prevu{list-style:none;margin:0;padding:0;border-top:1px solid var(--trait)}
.prevu li{
  display:flex;gap:14px;align-items:baseline;padding:12px 2px;border-bottom:1px solid var(--trait);font-size:13.5px;
}
.prevu li span{font-family:var(--mono);font-size:10.5px;color:var(--texte-3);flex:none}
.choix-prog{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:20px;text-align:left}
.carte-prog{
  border:1px solid var(--trait);border-radius:var(--rayon-s);padding:15px;background:var(--carte);transition:var(--transition);
}
.carte-prog:hover{border-color:var(--accent);transform:translateY(-2px)}
.carte-prog .titre{font-family:var(--serif);font-size:16px;font-weight:800;margin-bottom:4px}

/* graphiques */
.svg-plein{width:100%;height:auto;display:block;overflow:visible}
.axe{stroke:var(--grille);stroke-width:1}
.txt-axe{font-family:var(--mono);font-size:9px;fill:var(--texte-3)}
.donut-centre{font-family:var(--serif);font-weight:800;fill:var(--texte)}
.donut-legende{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.donut-legende div{display:flex;align-items:center;gap:8px;font-size:12px}
.donut-legende i{width:8px;height:8px;border-radius:2px;flex:none}
.donut-legende .v{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--texte-2)}

/* barre mobile */
.barre-mobile{display:none}

/* ─── responsive ─── */
@media (max-width:1180px){
  .direct{grid-template-columns:1fr}
  .direct aside{display:contents}
  .chrono{
    order:-1;position:sticky;top:var(--haut-topbar,0px);z-index:30;
    display:grid;grid-template-columns:132px 1fr;gap:8px 16px;align-items:center;
  }
  .chrono .anneau{grid-row:span 2;width:126px;height:126px;margin:0}
  .chrono .horloge{font-size:34px}
  .chrono>div:not(.anneau){margin:0!important}
  .direct aside .carte{order:1;margin-top:0!important}
}
@media (max-width:900px){
  .topbar{height:auto;flex-wrap:wrap;gap:10px;padding:calc(9px + env(safe-area-inset-top)) 14px 0}
  .topbar .separateur{display:none}
  .topbar-fin{margin-left:auto}
  .bascule button em{display:none}
  .bascule button{padding:5px 9px}
  .modules{order:3;flex-basis:100%;padding-bottom:8px;gap:5px}
  .mod{padding:6px 11px;font-size:13px}
  .mod .plus-tard{display:none}
  .entete{padding:18px 16px 0}
  .entete h1{font-size:24px}
  main{padding:16px 16px 96px}
  .grille{grid-template-columns:repeat(2,1fr);gap:12px}
  .grille>*{grid-column:span 2!important;grid-row:auto!important}
  .grille>.kpi{grid-column:span 1!important}
  .grille>#kpi-tonnage{grid-column:span 2!important}
  .rang{grid-template-columns:96px 1fr 70px}
  .barre-mobile{
    display:flex;position:fixed;inset:auto 0 0 0;z-index:50;
    background:color-mix(in srgb,var(--carte) 92%,transparent);backdrop-filter:blur(14px);
    border-top:1px solid var(--trait);padding:7px 6px calc(7px + env(safe-area-inset-bottom));
  }
  .barre-mobile button{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 2px;
    font-family:var(--mono);font-size:9.5px;color:var(--texte-3);
  }
  .barre-mobile button[aria-current="page"]{color:var(--accent)}
  .barre-mobile svg{width:19px;height:19px;stroke-width:1.7}
  .serie{grid-template-columns:22px 1fr 1fr;gap:6px}
  .serie .action{grid-column:2/4}
}
@media (max-width:560px){
  .kpi .valeur{font-size:26px}
  .corps svg{max-height:280px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}

/* ─── ajustements du rendu serveur ─── */
a{color:inherit;text-decoration:none}
.forme-inline{display:flex;margin:0}
button.avatar{cursor:pointer;transition:var(--transition)}
button.avatar:hover{border-color:var(--trait-fort);color:var(--texte)}

/* liens de navigation : mêmes états que les boutons de la maquette */
.onglet[aria-current="page"]{color:var(--texte);border-bottom-color:var(--accent)}
.segments > *{
  padding:8px 13px;font-family:var(--mono);font-size:12px;color:var(--texte-3);
  border-right:1px solid var(--trait);transition:var(--transition);display:flex;align-items:center;
}
.segments > *:last-child{border-right:none}
.segments > *[aria-current="page"]{background:var(--carte-haut);color:var(--texte)}
.barre-mobile > *{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 2px;
  font-family:var(--mono);font-size:9.5px;color:var(--texte-3);
}
.barre-mobile > *[aria-current="page"]{color:var(--accent)}
.barre-mobile svg{width:19px;height:19px;stroke-width:1.7}

/* ─── connexion ─── */
.connexion{max-width:380px;margin:12vh auto 0;padding:0 18px}
.connexion .carte{padding:24px}
.formulaire{display:flex;flex-direction:column;gap:14px}
.formulaire label{display:flex;flex-direction:column;gap:6px}
.formulaire .champ{padding:9px 12px}
.formulaire .champ input{font-family:var(--sans);font-size:14px}
.alerte{
  background:color-mix(in srgb,var(--r-sature) 14%,transparent);
  border:1px solid var(--r-sature);color:var(--texte);
  border-radius:var(--rayon-s);padding:10px 12px;font-size:13px;margin:0 0 16px;
}

/* ─── état vide générique ─── */
.vide p{margin:0;font-size:14px;line-height:1.55}

/* ─────────────────────────────────────────────
   Lot 2 — panneaux de création/édition (référentiels)
   Réutilise .carte et .formulaire ; n'ajoute que le recouvrement et la
   grille de pondération, absents de la maquette (qui reste lecture seule
   sur ces deux écrans). Aucune nouvelle couleur.
   ───────────────────────────────────────────── */
.recouvrement{
  position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:70;
  display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow-y:auto;
}
.recouvrement[hidden]{display:none}
.recouvrement .carte{max-width:560px;width:100%}
.champ select,.champ textarea{width:100%;background:none;border:none;font-family:var(--sans);font-size:14px;padding:0;min-width:0}
.champ textarea{resize:vertical;min-height:60px;padding:3px 0}
.grille-groupes{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:8px;margin:4px 0 6px}
.champ-groupe{display:flex;align-items:center;gap:8px;border:1px solid var(--trait);border-radius:8px;padding:6px 9px;background:var(--enfonce)}
.champ-groupe span{font-size:12.5px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.champ-groupe input{width:44px;background:none;border:none;font-family:var(--mono);font-size:13px;text-align:right;padding:0}
.panneau-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}

/* ─────────────────────────────────────────────
   Voyage — module Organisation de voyage.
   Réutilise .carte/.liste/.ligne/.puce/.recouvrement/.formulaire tels
   quels ; la seule addition est la carte-lien (voyages.php) qui a besoin
   d'un hover cohérent avec .mod, et le survol du panneau étape sur mobile
   (plus large que le panneau référentiel générique). Aucune nouvelle
   couleur — statut réservation et budget réutilisent --jade/--accent.
   ───────────────────────────────────────────── */
a.carte:hover{border-color:var(--trait-fort);background:var(--carte-haut)}

/* ─────────────────────────────────────────────
   Budget — tableau synthétique de l'Aperçu (apercu.php).
   Le motif .liste/.ligne ne porte pas naturellement 5 colonnes de
   chiffres alignées : petite grille dédiée, mêmes jetons que le reste
   (--trait, --carte, --rayon-s, --mono pour les chiffres). Aucune
   nouvelle couleur.
   ───────────────────────────────────────────── */
.tableau-simple{border:1px solid var(--trait);border-radius:var(--rayon-s);overflow:hidden;min-width:560px}
.ts-ligne{display:grid;grid-template-columns:1.3fr repeat(5,1fr);gap:8px;padding:9px 12px;align-items:center}
.ts-ligne:not(:last-child){border-bottom:1px solid var(--trait)}
.ts-ligne span{font-family:var(--mono);font-size:12.5px;text-align:right;white-space:nowrap}
.ts-ligne span:first-child{text-align:left;font-family:var(--sans)}
.ts-entete{background:var(--enfonce)}
.ts-entete span{font-family:var(--sans);font-size:10.5px;color:var(--texte-3);text-transform:uppercase;letter-spacing:.04em}
.ts-entete span:first-child{font-family:var(--sans)}
