/* Page de présentation publique de Namthy.
   Ne charge que sur la vitrine : les espaces clients n'en ont pas besoin.
   Reprend les variables du cockpit pour que les deux faces se ressemblent. */

.tvh{
  --a:var(--tv-accent,#2563eb);
  --ink:#0f172a;
  --ink2:#475569;
  --muted:#7b8ba0;
  --line:#e5eaf1;
  --line-soft:#eef1f6;
  --page:#f6f8fb;
  --sombre:#101722;
  --good:#16a34a;
  --warn:#f59e0b;
  --bad:#dc2626;
  color:var(--ink);
  background:#fff;
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.6;
}
.tvh *{box-sizing:border-box}
.tvh{overflow-x:clip}
.tvh a{color:inherit;text-decoration:none}
.tvh h1,.tvh h2,.tvh h3,.tvh h4{margin:0;letter-spacing:-.028em;text-wrap:balance}
.tvh p{margin:0}
.tvh .dedans{max-width:1160px;margin:0 auto;padding-inline:24px}
@media(max-width:600px){.tvh .dedans{padding-inline:18px}}

/* ---------- Barre ---------- */
.tvh-nav{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.93);
  backdrop-filter:saturate(1.6) blur(9px);border-bottom:1px solid var(--line-soft)}
.tvh-nav .dedans{display:flex;align-items:center;gap:22px;height:70px}
.tvh-marque{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;letter-spacing:-.025em}
.tvh-marque img{max-height:34px;width:auto;display:block}
.tvh-marque .sigle{width:30px;height:30px;border-radius:8px;background:var(--sombre);color:#7cb0ff;
  display:grid;place-items:center;font-size:14px;flex:none}
.tvh-liens{display:flex;gap:20px;font-size:13px;color:var(--ink2);margin-left:6px}
.tvh-liens a:hover{color:var(--a)}
.tvh-nav .droite{margin-left:auto;display:flex;gap:9px;align-items:center}
@media(max-width:820px){.tvh-liens{display:none}}
/* Sous 560 px, les deux boutons de la barre ne tiennent plus côte à côte :
   la connexion suffit, la demande d'accès reste accessible plus bas. */
@media(max-width:560px){
  .tvh-nav .dedans{height:62px;gap:12px}
  .tvh-nav .droite .tvh-bouton.noir{display:none}
  .tvh-marque{font-size:15px}
}

.tvh-bouton{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid #dde4ee;background:#fff;color:#334155;border-radius:9px;
  padding:9px 15px;font-size:13px;font-weight:650;white-space:nowrap;
  transition:border-color .15s,color .15s,transform .15s,box-shadow .15s}
.tvh-bouton:hover{border-color:var(--a);color:var(--a)}
.tvh-bouton.noir{background:#111827;border-color:#111827;color:#fff}
.tvh-bouton.noir:hover{color:#fff;background:var(--a);border-color:var(--a);transform:translateY(-1px);
  box-shadow:0 12px 26px rgba(37,99,235,.2)}
.tvh-bouton.accent{background:var(--a);border-color:var(--a);color:#fff}
.tvh-bouton.accent:hover{color:#fff;filter:brightness(1.07);transform:translateY(-1px)}
.tvh-bouton.large{width:100%;padding:12px}

/* ---------- Sections ---------- */
.tvh-bloc{padding-block:clamp(48px,7vw,88px);border-top:1px solid var(--line-soft)}
.tvh-bloc.gris{background:var(--page)}
.tvh-bloc.sombre{background:var(--sombre);color:#e2e8f0;border-top-color:rgba(255,255,255,.08)}
.tvh-tete{max-width:62ch}
.tvh-oeil{display:inline-flex;align-items:center;gap:8px;font-size:10.5px;font-weight:800;
  letter-spacing:.11em;text-transform:uppercase;color:var(--a)}
.tvh-oeil::before{content:"";width:20px;height:2px;background:currentColor;border-radius:2px}
.tvh-tete h2{margin-top:14px;font-size:clamp(23px,3.3vw,34px);font-weight:800;line-height:1.1}
.tvh-tete p{margin-top:13px;font-size:15px;color:var(--ink2)}
.tvh-bloc.sombre .tvh-tete h2{color:#fff}
.tvh-bloc.sombre .tvh-tete p{color:#a9b7ca}
.tvh-bloc.sombre .tvh-oeil{color:#7cb0ff}

/* ---------- Ouverture ---------- */
.tvh-ouverture{padding-block:clamp(44px,6vw,76px)}
.tvh-ouverture .grille{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(28px,4vw,52px);align-items:center}
@media(max-width:900px){.tvh-ouverture .grille{grid-template-columns:1fr}}
.tvh-etiquette{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;
  background:rgba(37,99,235,.07);border:1px solid rgba(37,99,235,.18);color:var(--a);
  font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.tvh-ouverture h1{margin-top:18px;font-size:clamp(30px,4.6vw,50px);font-weight:800;line-height:1.05;
  letter-spacing:-.038em;max-width:18ch}
.tvh-ouverture .accroche{margin-top:18px;font-size:16px;line-height:1.7;color:var(--ink2);max-width:50ch}
.tvh-actions{display:flex;gap:11px;margin-top:26px;flex-wrap:wrap}
.tvh-preuves{display:flex;gap:30px;margin-top:32px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--line-soft)}
.tvh-preuves div{display:flex;flex-direction:column}
.tvh-preuves b{font-size:22px;font-weight:800;letter-spacing:-.025em}
.tvh-preuves span{font-size:11.5px;color:var(--muted);margin-top:2px}

/* ---------- Aperçu d'application ---------- */
.tvh-apercu{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;
  box-shadow:0 26px 64px rgba(15,23,42,.13)}
.tvh-apercu .barre{display:flex;align-items:center;gap:8px;padding:9px 12px;background:#f7f9fc;
  border-bottom:1px solid var(--line-soft)}
.tvh-apercu .barre i{width:8px;height:8px;border-radius:50%;background:#cdd5e0;display:block}
.tvh-apercu .barre strong{margin-left:6px;font-size:9.5px;color:var(--muted);font-weight:700}
.tvh-apercu .barre em{margin-left:auto;font-style:normal;font-size:8px;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:#047857;background:#ecfdf5;border-radius:999px;padding:4px 8px}
.tvh-ap-corps{display:grid;grid-template-columns:78px 1fr;min-height:250px}
.tvh-ap-cote{background:linear-gradient(180deg,#101722,#16202e);padding:12px 9px;display:flex;flex-direction:column;gap:5px}
.tvh-ap-cote b{color:#fff;font-size:8.5px;margin-bottom:6px}
.tvh-ap-cote i{font-style:normal;font-size:7px;color:#9dabc0;padding:5px 7px;border-radius:5px}
.tvh-ap-cote i.actif{background:rgba(37,99,235,.3);color:#fff}
.tvh-ap-main{padding:12px;background:#f4f7fb;display:flex;flex-direction:column;gap:9px}
.tvh-ap-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.tvh-ap-kpis div{background:#fff;border:1px solid #e6ecf3;border-radius:8px;padding:8px 7px}
.tvh-ap-kpis small{display:block;font-size:6px;font-weight:800;color:#8a99ad;text-transform:uppercase;letter-spacing:.05em}
.tvh-ap-kpis strong{display:block;margin-top:4px;font-size:15px;letter-spacing:-.02em}
.tvh-ap-kpis strong.rouge{color:var(--bad)} .tvh-ap-kpis strong.orange{color:#ea580c}
.tvh-ap-carte{background:#fff;border:1px solid #e6ecf3;border-radius:8px;padding:9px;flex:1}
.tvh-ap-carte>b{font-size:7px;font-weight:800;color:#8a99ad;text-transform:uppercase;letter-spacing:.06em}
.tvh-ap-ligne{display:flex;gap:7px;margin-top:7px;padding:6px 7px;border-radius:6px;background:#f8fafc;
  border-left:2px solid var(--bad)}
.tvh-ap-ligne.o{border-left-color:var(--warn)} .tvh-ap-ligne.j{border-left-color:#eab308}
.tvh-ap-ligne span{display:flex;flex-direction:column;min-width:0}
.tvh-ap-ligne strong{font-size:7px;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvh-ap-ligne small{font-size:6px;color:#7d8ca0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- Zéro saisie ---------- */
.tvh-saisie{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(22px,3vw,40px);margin-top:36px;align-items:start}
@media(max-width:880px){.tvh-saisie{grid-template-columns:1fr}}
.tvh-flux{display:flex;flex-direction:column;gap:10px}
.tvh-flux-l{display:grid;grid-template-columns:1fr 20px 1fr;gap:11px;align-items:center}
.tvh-flux-l .de,.tvh-flux-l .vers{border:1px solid var(--line);border-radius:10px;padding:11px 13px;background:#fff;min-width:0}
.tvh-flux-l .vers{background:rgba(37,99,235,.045);border-color:rgba(37,99,235,.2)}
.tvh-flux-l b{display:block;font-size:12.5px;font-weight:700}
.tvh-flux-l small{display:block;margin-top:3px;font-size:11px;color:var(--muted);line-height:1.45}
.tvh-flux-l .fl{text-align:center;color:var(--a);font-size:15px}
@media(max-width:520px){.tvh-flux-l{grid-template-columns:1fr}.tvh-flux-l .fl{text-align:left}}
.tvh-depot{border:2px dashed rgba(37,99,235,.32);border-radius:14px;background:rgba(37,99,235,.04);
  padding:28px 22px;text-align:center}
.tvh-depot .gros{font-size:30px;line-height:1;color:var(--a)}
.tvh-depot b{display:block;margin-top:11px;font-size:15px}
.tvh-depot small{display:block;margin-top:6px;font-size:12px;color:var(--muted);line-height:1.6}
.tvh-sources{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}
.tvh-sources span{font-size:11px;font-weight:600;color:var(--ink2);background:#fff;
  border:1px solid var(--line);border-radius:999px;padding:5px 11px}

/* ---------- Note d'intervention ---------- */
.tvh-note{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(24px,3.5vw,46px);align-items:center;margin-top:34px}
@media(max-width:880px){.tvh-note{grid-template-columns:1fr}}
.tvh-garde{margin-top:20px;padding:13px 16px;border-left:3px solid var(--warn);
  background:rgba(245,158,11,.1);border-radius:0 10px 10px 0;font-size:13px;line-height:1.65;color:#fcd9a0}
.tvh-jauge{background:#fff;border-radius:14px;padding:20px;color:var(--ink);box-shadow:0 20px 50px rgba(0,0,0,.28)}
.tvh-jauge .haut{display:flex;align-items:baseline;gap:10px}
.tvh-jauge .haut b{font-size:14px;font-weight:750}
.tvh-jauge .haut span{margin-left:auto;font-size:11.5px;color:var(--muted)}
.tvh-jauge .chiffre{display:flex;align-items:flex-end;gap:10px;margin-top:14px}
.tvh-jauge .chiffre strong{font-size:44px;font-weight:800;letter-spacing:-.045em;line-height:.88;
  color:#ea580c;font-variant-numeric:tabular-nums}
.tvh-jauge .chiffre em{font-style:normal;font-size:12.5px;color:var(--muted);padding-bottom:5px}
.tvh-piste{height:9px;border-radius:999px;background:#eef2f7;margin-top:14px;overflow:hidden}
.tvh-piste i{display:block;height:100%;width:45%;border-radius:999px;background:linear-gradient(90deg,#ef4444,#f59e0b)}
.tvh-criteres{margin-top:16px;display:flex;flex-direction:column;gap:8px}
.tvh-crit{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;font-size:12px;color:var(--ink2)}
.tvh-crit .v{font-variant-numeric:tabular-nums;font-weight:650;color:var(--ink)}
.tvh-crit .p{font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:3px 8px;border-radius:999px}
.tvh-crit .p.ko{background:#fee2e2;color:#b91c1c}
.tvh-crit .p.ok{background:#dcfce7;color:#15803d}
.tvh-crit .p.lim{background:#ffedd5;color:#c2410c}

/* ---------- Missions ---------- */
.tvh-missions{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:34px}
@media(max-width:1180px){.tvh-missions{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){.tvh-missions{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.tvh-missions{grid-template-columns:1fr}}
.tvh-mission{background:#fff;padding:18px 19px}
.tvh-mission .et{display:inline-block;margin-bottom:8px;font-size:8.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;border-radius:999px;padding:3px 8px;color:var(--a);background:rgba(37,99,235,.08)}
.tvh-mission .et.p{color:#0f766e;background:rgba(15,118,110,.09)}
.tvh-mission .et.s{color:#b45309;background:rgba(180,83,9,.09)}
.tvh-mission .et.t{color:#4338ca;background:rgba(67,56,202,.09)}
.tvh-mission b{display:block;font-size:13.5px;font-weight:700}
.tvh-mission small{display:block;margin-top:5px;font-size:12px;line-height:1.6;color:var(--ink2)}

/* ---------- Profils ---------- */
.tvh-profils{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
@media(max-width:880px){.tvh-profils{grid-template-columns:1fr}}
.tvh-profil{border:1px solid var(--line);border-radius:14px;padding:20px;background:#fff}
.tvh-profil .haut{display:flex;align-items:center;gap:11px}
.tvh-profil .rond{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  font-size:16px;color:#fff;flex:none}
.tvh-profil h3{font-size:14.5px;font-weight:750}
.tvh-profil .qui{font-size:11px;color:var(--muted)}
.tvh-profil p{margin-top:11px;font-size:12.5px;line-height:1.65;color:var(--ink2)}
.tvh-profil .mods{margin-top:13px;display:flex;flex-wrap:wrap;gap:5px}
.tvh-profil .mods i{font-style:normal;font-size:10px;color:var(--ink2);background:var(--page);
  border:1px solid var(--line);border-radius:6px;padding:4px 8px}

/* ---------- Sécurité ---------- */
.tvh-secu{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
@media(max-width:880px){.tvh-secu{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.tvh-secu{grid-template-columns:1fr}}
.tvh-secu article{border:1px solid var(--line);border-radius:12px;padding:17px 18px;background:#fff}
.tvh-secu b{display:block;font-size:13px;font-weight:700}
.tvh-secu p{margin-top:6px;font-size:12px;line-height:1.65;color:var(--ink2)}

/* ---------- Accès ---------- */
.tvh-acces{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:34px}
@media(max-width:760px){.tvh-acces{grid-template-columns:1fr}}
.tvh-porte{border:1px solid var(--line);border-radius:14px;padding:24px;background:#fff}
.tvh-porte h3{font-size:16px;font-weight:750}
.tvh-porte>p{margin-top:7px;font-size:12.5px;color:var(--ink2);line-height:1.65}
.tvh-porte form{margin-top:16px;display:flex;flex-direction:column;gap:11px}
.tvh-porte label{display:block;font-size:11px;font-weight:700;color:var(--ink2);margin-bottom:5px}
.tvh-porte input[type=text],.tvh-porte input[type=email],.tvh-porte input[type=password]{
  width:100%;min-height:44px;padding:0 13px;border:1px solid #d9e0ea;border-radius:9px;
  background:#fff;color:var(--ink);font-size:14px;font-family:inherit;outline:none;
  transition:border-color .15s,box-shadow .15s}
.tvh-porte input:focus{border-color:var(--a);box-shadow:0 0 0 3px rgba(37,99,235,.13)}
/* Le formulaire de connexion est produit par WordPress : on habille ses
   éléments plutôt que de le réécrire, pour ne pas toucher à son cycle de nonce. */
.tvh-porte .login-remember{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink2)}
.tvh-porte .login-remember label{display:flex;align-items:center;gap:8px;margin:0;font-size:12.5px;
  font-weight:500;color:var(--ink2);cursor:pointer}
.tvh-porte .login-remember input[type=checkbox]{width:16px;height:16px;accent-color:var(--a);margin:0}
.tvh-porte .login-submit{margin:0}
.tvh-porte input[type=submit]{
  display:inline-flex;align-items:center;justify-content:center;width:100%;
  min-height:46px;padding:12px 18px;border:1px solid var(--a);border-radius:9px;
  background:var(--a);color:#fff;font-family:inherit;font-size:14px;font-weight:650;
  letter-spacing:-.01em;cursor:pointer;
  transition:filter .15s,transform .15s,box-shadow .15s}
.tvh-porte input[type=submit]:hover{filter:brightness(1.07);transform:translateY(-1px);
  box-shadow:0 12px 26px rgba(37,99,235,.22)}
.tvh-porte input[type=submit]:active{transform:none;box-shadow:none}
.tvh-porte input[type=submit]:focus-visible{outline:2px solid var(--a);outline-offset:3px}
.tvh-porte .fin{margin-top:12px;font-size:11px;color:var(--muted);line-height:1.6}
.tvh-porte .fin a{color:var(--a);font-weight:650}

/* ---------- Pied ---------- */
.tvh-pied{border-top:1px solid var(--line-soft);padding-block:30px;font-size:12px;color:var(--muted)}
.tvh-pied .dedans{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.tvh-pied .sp{flex:1}
.tvh-pied a:hover{color:var(--a)}

@media(prefers-reduced-motion:reduce){.tvh *{transition:none!important}}

/* ---------- Les cinq domaines ----------
   Une seule page qui se descend : un domaine par palier, le texte et son écran
   alternant de côté pour que l'œil sache qu'il change de sujet. */
.tvh-domaine{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:clamp(22px,3.5vw,54px);align-items:center;margin-top:clamp(40px,5vw,72px)}
.tvh-domaine.inverse{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr)}
.tvh-domaine.inverse .tvh-volet{order:2}
.tvh-domaine.inverse .tvh-ecran{order:1}
@media(max-width:940px){
  .tvh-domaine,.tvh-domaine.inverse{grid-template-columns:1fr;gap:24px}
  .tvh-domaine .tvh-ecran,.tvh-domaine.inverse .tvh-ecran{order:-1}
  .tvh-domaine .tvh-volet,.tvh-domaine.inverse .tvh-volet{order:0}
}

.tvh-volet .cat{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--a)}
.tvh-volet h3{margin-top:12px;font-size:clamp(20px,2.6vw,28px);font-weight:800;line-height:1.16}
.tvh-volet>p{margin-top:12px;font-size:14.5px;color:var(--ink2);max-width:48ch}
.tvh-points{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:10px}
.tvh-points li{display:flex;gap:10px;font-size:13.5px;color:#334155;align-items:flex-start}
.tvh-points b{font-weight:650;color:var(--ink)}
.tvh-points i{width:13px;height:13px;flex:none;margin-top:5px;border-radius:3px;
  background:rgba(37,99,235,.1);position:relative}
.tvh-points i::after{content:"";position:absolute;left:3.5px;top:1.5px;width:4px;height:7px;
  border:solid var(--a);border-width:0 1.7px 1.7px 0;transform:rotate(42deg)}

/* ---------- Passage d'un bloc à l'autre ----------
   L'état masqué n'existe que si le script a démarré : sans JavaScript, ou en
   mouvement réduit, la page s'affiche telle quelle. */
.tvh{scroll-behavior:smooth}
.tvh-anime [data-tvh-vue]{opacity:0;transform:translateY(26px);
  transition:opacity .62s cubic-bezier(.22,.7,.25,1),transform .62s cubic-bezier(.22,.7,.25,1);
  transition-delay:var(--tvh-retard,0ms);will-change:opacity,transform}
.tvh-anime [data-tvh-vue].vu{opacity:1;transform:none}
.tvh-anime .tvh-domaine .tvh-volet{transition:transform .7s cubic-bezier(.22,.7,.25,1) 90ms}
.tvh-anime .tvh-domaine:not(.vu) .tvh-volet{transform:translateY(10px)}
.tvh-anime .tvh-domaine .tvh-ecran{transition:transform .7s cubic-bezier(.22,.7,.25,1) 40ms}
.tvh-anime .tvh-domaine:not(.vu) .tvh-ecran{transform:translateY(18px) scale(.985)}
@media(prefers-reduced-motion:reduce){
  .tvh{scroll-behavior:auto}
  .tvh-anime [data-tvh-vue],.tvh-anime [data-tvh-vue].vu{opacity:1;transform:none;transition:none}
}

/* ---------- Aperçus d'écran des volets ---------- */
.tvh-ecran{background:var(--sombre);border-radius:18px;padding:12px;box-shadow:0 24px 56px rgba(15,23,42,.19)}
.tvh-ecran .fenetre{background:var(--page);border-radius:12px;overflow:hidden}
.tvh-ecran .chapeau{display:flex;align-items:center;gap:6px;padding:9px 12px;background:#fff;
  border-bottom:1px solid var(--line-soft)}
.tvh-ecran .chapeau i{width:7px;height:7px;border-radius:50%;background:#dde3ec;display:block}
.tvh-ecran .chapeau strong{margin-left:6px;font-size:10.5px;font-weight:700;color:var(--ink2)}
.tvh-ecran .chapeau em{margin-left:auto;font-style:normal;font-size:9px;color:var(--muted);
  border:1px solid var(--line);border-radius:6px;padding:2px 7px;background:#fff}
.tvh-ecran .corps{padding:12px;display:grid;gap:10px;min-width:0}
.tvh-ecran .corps>*{min-width:0}

.tvh-duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.tvh-duo.serre{gap:8px;margin-top:9px}
.tvh-tuile{background:#fff;border:1px solid var(--line-soft);border-radius:11px;padding:11px;min-width:0}
.tvh-tuile.centre{text-align:center}
.tvh-tuile small{display:block;font-size:8.5px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);font-weight:700}
.tvh-tuile>b{display:block;font-size:18px;font-weight:800;line-height:1.35;font-variant-numeric:tabular-nums}
.tvh-tuile b.pt{font-size:13px}
.tvh-tuile em{display:block;font-style:normal;font-size:10px;color:var(--muted)}

.tvh-liste{border:1px solid var(--line-soft);border-radius:12px;background:#fff;overflow:hidden}
.tvh-liste .titre{padding:8px 11px;font-size:10px;font-weight:800;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line-soft)}
.tvh-ligne{display:flex;align-items:center;gap:9px;padding:9px 11px;border-bottom:1px solid var(--line-soft);
  border-left:3px solid var(--line);background:#fff;min-width:0}
.tvh-ligne:last-child{border-bottom:0}
.tvh-ligne.r{border-left-color:var(--bad)}
.tvh-ligne.o{border-left-color:var(--warn)}
.tvh-ligne.v{border-left-color:var(--good)}
.tvh-ligne .ic{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;flex:none;
  background:var(--page);border:1px solid var(--line-soft);font-size:9px;font-weight:800;color:var(--ink2)}
.tvh-ligne .txt{min-width:0}
.tvh-ligne strong{display:block;font-size:11.5px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvh-ligne small{display:block;font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvh-ligne .tag{margin-left:auto;font-size:9.5px;font-weight:700;color:var(--ink2);white-space:nowrap;
  border:1px solid var(--line);border-radius:20px;padding:2px 8px}

.tvh-cadran{position:relative;display:block;width:124px;margin:4px auto 0;line-height:0}
.tvh-cadran svg{display:block}
.tvh-cadran .v{position:absolute;left:0;right:0;bottom:14px;text-align:center;line-height:1;
  font-size:25px;font-weight:800;letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.tvh-cadran .v i{font-style:normal;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:0}
.tvh-cadran .e{display:block;margin-top:9px;font-size:11px;font-weight:700;line-height:1.3}
.tvh-crits{display:grid;gap:6px;margin-top:10px;text-align:left}
.tvh-crits div{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--ink2)}
.tvh-crits b{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--ink);font-weight:650}
.tvh-crits i{width:6px;height:6px;border-radius:50%;background:var(--good);flex:none}
.tvh-crits .lim i{background:var(--warn)}
.tvh-crits .dep i{background:var(--bad)}

.tvh-reseau{display:flex;align-items:center;gap:8px}
.tvh-reseau b{font-size:11.5px;font-weight:700}
.tvh-reseau .led{width:9px;height:9px;border-radius:50%;background:var(--good);
  box-shadow:0 0 0 4px rgba(22,163,74,.13);flex:none}
.tvh-barres{display:flex;gap:3px;align-items:flex-end;height:46px;margin-top:9px}
.tvh-barres i{flex:1;border-radius:3px 3px 0 0;background:#dbeafe;display:block}
.tvh-barres i.on{background:var(--a)}
.tvh-barres i.w{background:var(--warn)}

.tvh-budget-haut{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tvh-budget-haut b{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}
.tvh-budget-haut small{font-size:10px;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:500}
.tvh-budget-haut em{margin-left:auto;font-style:normal;font-size:10.5px;font-weight:700;color:var(--good)}
.tvh-jauge-b{height:11px;border-radius:7px;background:#eef2f7;display:flex;overflow:hidden;margin-top:10px}
.tvh-jauge-b i{display:block;height:100%}
.tvh-leg{display:flex;flex-wrap:wrap;gap:10px;margin-top:9px;font-size:10px;color:var(--muted)}
.tvh-leg span{display:flex;align-items:center;gap:5px}
.tvh-leg i{width:8px;height:8px;border-radius:3px;display:block}

.tvh-gantt{padding:9px 11px;display:grid;gap:6px}
.tvh-gantt .l{display:grid;grid-template-columns:44% minmax(0,1fr);gap:9px;align-items:center}
.tvh-gantt .nom{font-size:10px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvh-gantt .couloir{position:relative;height:16px;border-radius:6px;background:var(--page);
  border:1px solid var(--line-soft);overflow:hidden}
.tvh-gantt .couloir .jour{position:absolute;top:0;bottom:0;width:1px;background:var(--a);opacity:.45}
.tvh-gantt .couloir b{position:absolute;top:2px;bottom:2px;border-radius:4px;overflow:hidden;
  background:rgba(37,99,235,.24);border:1px solid rgba(37,99,235,.5)}
.tvh-gantt .couloir b u{display:block;height:100%;background:var(--a);opacity:.55}
.tvh-gantt .couloir b.fait{background:rgba(22,163,74,.2);border-color:var(--good)}
.tvh-gantt .couloir b.fait u{background:var(--good)}
.tvh-gantt .couloir b.retard{background:rgba(220,38,38,.16);border-color:var(--bad)}
.tvh-gantt .couloir b.jalon{width:11px!important;border-radius:2px;transform:rotate(45deg);
  background:var(--a);border-color:var(--a)}

.tvh-flux2{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:start}
.tvh-flux2 .doc{border:1px solid var(--line-soft);border-radius:11px;padding:9px;text-align:center;background:#fff}
.tvh-flux2 .doc .page{display:block;height:50px;border-radius:5px;position:relative;overflow:hidden;
  background:linear-gradient(180deg,#f1f5f9,#e2e8f0);margin-bottom:6px}
.tvh-flux2 .doc .page i{position:absolute;left:8px;right:8px;height:3px;border-radius:2px;background:#cbd5e1;display:block}
.tvh-flux2 .doc small{font-size:9px;color:var(--muted);font-weight:600;line-height:1.3}
.tvh-flux2 .champs{display:grid;gap:6px;min-width:0}
.tvh-flux2 .champ{display:flex;align-items:center;gap:8px;border:1px solid var(--line-soft);
  border-radius:9px;padding:7px 10px;font-size:10.5px;background:#fff;min-width:0}
.tvh-flux2 .champ small{color:var(--muted);width:82px;flex:none}
.tvh-flux2 .champ b{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvh-flux2 .champ em{margin-left:auto;font-style:normal;font-size:9px;font-weight:700;color:var(--a);
  background:rgba(37,99,235,.09);border-radius:20px;padding:2px 8px;white-space:nowrap}
.tvh-reserve{padding:10px 11px;display:grid;gap:7px}
.tvh-reserve strong{font-size:11.5px;font-weight:650}
.tvh-reserve blockquote{margin:0;padding-left:9px;border-left:2px solid var(--line);
  font-size:10.5px;color:var(--muted);line-height:1.5}
.tvh-reserve .bas{display:flex;align-items:center;gap:9px;font-size:10px;color:var(--muted)}
.tvh-reserve .bas b{margin-left:auto;font-size:10px;font-weight:700;color:#fff;background:var(--a);
  border-radius:8px;padding:5px 11px}

@media(max-width:700px){
  .tvh-duo{grid-template-columns:1fr}
  .tvh-flux2{grid-template-columns:1fr}
  .tvh-flux2 .doc{display:flex;gap:10px;align-items:center;text-align:left}
  .tvh-flux2 .doc .page{width:44px;flex:none;margin:0}
}

