/* tc.css — application téléconsultation (tunnel, espace patient, console admin)
   Reprend les variables du thème (main.css) : --navy, --blue, --border, etc.
   Mobile-first.

   ⚠ CETTE FEUILLE NE SUFFIT PAS À CONNAÎTRE LA GÉOMÉTRIE DU TUNNEL.
   dgchrome.css (section « tunnel », vers la fin du fichier) pose PAR-DESSUS : la hauteur réelle
   des champs (44 px), le padding des cartes de choix, la gouttière des choix, les marges des
   libellés, le centrage vertical du contenu, ses propres paliers à 700 et 380 px — et il est le
   SEUL à définir .tc-holdnote et .tc-ac*. Chercher une valeur ici sans l'y vérifier fait perdre
   une heure (constaté). Les deux feuilles sont chargées ensemble par views/shared/_top.php,
   dgchrome.css EN SECOND : à spécificité égale, c'est lui qui gagne.

   SOMMAIRE (repères de recherche, l'ordre est celui du fichier)
     variables et base · en-tête et pied du site
     tunnel     : progression, flash, formulaires, choix, segments, jours, créneaux, téléphone, OTP
     dossier    : grille de fiche PARTAGÉE console + espace patient
     espace patient : prochain rendez-vous, gélules de personne, tableaux de documents
     salle d'attente et visionneuse de pièces jointes
     console admin  : tableaux, interrupteur sans-RDV, consultation plein écran, prescription
     mobile     : paliers 900 (console en colonne), 880 (grille 4→2), 640 (tableaux en cartes), 520, 380
     RTL, thème sombre, impression

   ⚠ CACHE : l'URL servie porte ?v=tc_css_v(), qui dérive du mtime ET de la taille de tc.css,
   landing.css, dgchrome.css, tc-visio.css et tc-visio.js. Toute modification change donc l'URL
   toute seule : il n'y a RIEN à incrémenter à la main. (Douze lignes « asset bump » écrites pour
   cela ont été retirées le 14/08/2026 — elles ne servaient plus depuis que la version dérive du
   fichier.) */


:root{--navy:#003366;--blue:#007ACC;--blue-light:#e8f4fd;--accent:#005fa3;--text:#1a2535;--text-light:#4a5568;--white:#fff;--gray-bg:#f7f9fc;--border:#dde8f0;--shadow:0 4px 20px rgba(0,51,102,.10);--ok:#0a8a4a;--err:#c0392b;--font:'Roboto',system-ui,sans-serif;}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:var(--font);color:var(--text);background:var(--gray-bg);line-height:1.65;font-size:16px;-webkit-font-smoothing:antialiased;}
a{color:var(--blue);text-decoration:none;}a:hover{color:var(--navy);}
img{max-width:100%;}

/* ⚠ RETIRÉ le 14/08/2026 — bouton d'en-tête « .ng-hdr-btn » recopié du site vitrine.
   La première règle du lot avait pour sélecteur une PHRASE en français (« définis dans ng.css
   non chargé ici ») : un sélecteur invalide fait jeter toute la règle, ses six déclarations ne
   s'appliquaient donc nulle part. Avant de la rétablir on a cherché sa cible — il n'y en a pas :
   « ng-hdr-btn » n'est émis par AUCUNE page (balayage des 19 écrans, tunnel, espace patient et
   console). Les trois règles voisines étaient donc mortes elles aussi. Rien n'est restauré,
   parce qu'il n'y avait rien à restaurer. Les règles .nav-logo ci-dessous, elles, servent. */
/* Sous-titre du logo : mêmes valeurs EXACTES que le site (ng.css), car ng.css n'est pas chargé ici. */
body:not(.ng-app-chrome) #site-header .nav-logo{gap:12px;}
body:not(.ng-app-chrome) #site-header .nav-logo-sub{font-size:.95rem;font-weight:600;color:#3d6285;}
.tc-wrap{max-width:680px;margin:0 auto;padding:22px 16px 60px;}
.tc-wrap--wide{max-width:1080px;}
.tc-card{background:var(--white);border:1px solid var(--border);border-radius:14px;padding:22px;box-shadow:var(--shadow);margin-bottom:18px;}
/* Titre de carte CANONIQUE (toutes les vues admin) — évite les styles inline divergents. */
.tc-card h3{color:var(--navy);font-size:1.05rem;font-weight:800;line-height:1.3;margin:0 0 12px;}
.tc-card h3:not(:first-child){margin-top:18px;}
h1.tc-title{color:var(--navy);font-size:1.45rem;line-height:1.3;margin-bottom:6px;}
p.tc-sub{color:var(--text-light);font-size:.95rem;margin-bottom:18px;}
.tc-staging{background:#fff3cd;color:#7a5c00;border:1px solid #ffe08a;border-radius:10px;padding:8px 14px;font-size:.82rem;margin-bottom:16px;}

/* ---------- pages d'authentification (connexion / code) : bloc centré étroit,
   même parti pris que la console admin (login.php). ---------- */
.tc-auth{max-width:440px;margin:26px auto 0;}
.tc-auth h1.tc-title,.tc-auth p.tc-sub{text-align:center;}
.tc-auth .tc-card{margin-bottom:14px;}

/* ---------- stepper ---------- */
.tc-steps{display:flex;gap:6px;margin-bottom:20px;}
.tc-steps i{flex:1;height:5px;border-radius:3px;background:var(--border);}
.tc-steps i.done{background:var(--blue);}

/* ---------- flash ---------- */
.tc-flash{border-radius:10px;padding:12px 16px;margin-bottom:16px;font-size:.92rem;}
.tc-flash.ok{background:#e6f7ee;color:var(--ok);border:1px solid #b8e6cd;}
.tc-flash.err{background:#fdecea;color:var(--err);border:1px solid #f5c6c0;}

/* ---------- formulaires ---------- */
label.tc-label{display:block;font-weight:700;color:var(--navy);font-size:.9rem;margin:14px 0 6px;}
.tc-hint{font-size:.8rem;color:var(--text-light);margin-top:4px;}
input[type=text],input[type=tel],input[type=email],input[type=date],input[type=time],input[type=number],input[type=password],select,textarea{
  width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:1rem;font-family:var(--font);background:var(--white);color:var(--text);}
/* #6 : champs date (ex. Date de naissance) alignés sur les champs texte. Le rendu natif iOS/WebKit
   gonfle largeur+hauteur et place la valeur en haut : on neutralise l'apparence native (le sélecteur
   s'ouvre toujours au tap iOS), on recentre la valeur, width/max-width/min-width verrouillent la largeur. */
input[type=date]{-webkit-appearance:none;appearance:none;align-items:center;width:100%;max-width:100%;min-width:0;box-sizing:border-box;}
/* …et la valeur commence AU BORD, comme dans tous les autres champs. Privée de son apparence
   native par la règle ci-dessus, Safari (macOS/iOS) centre la date dans la largeur du champ :
   la naissance était la seule valeur centrée de l'écran, au tunnel comme à la fiche patient.
   « start » et non « left » : l'hébreu et l'arabe sont en RTL, leur début de ligne est à droite. */
input[type=date]{text-align:start;}
input[type=date]::-webkit-datetime-edit{width:100%;text-align:start;}
input[type=date]::-webkit-date-and-time-value{text-align:start;margin:0;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,122,204,.12);}
textarea{min-height:90px;resize:vertical;}
.tc-row{display:grid;gap:12px;grid-template-columns:1fr 1fr;}
@media(max-width:560px){.tc-row{grid-template-columns:1fr;}}

/* ---------- dossier : grille dense PARTAGÉE (console admin + espace patient) ----------
   Source unique de la mise en page « fiche » : fiche patient/RDV admin (_dossiers.php)
   ET dossier de l'espace patient (patient/dossier.php) la réutilisent à l'identique.
   Les règles propres au mode lecture/édition admin (crayon, valider) restent dans _dossiers.php. */
.fiche{display:flex;flex-direction:column;gap:18px;}
/* Grille dense : chaque cellule = libellé COLLÉ à sa valeur (peu d'espace intra-groupe) et un peu
   plus d'air entre les lignes (espace inter-groupe) → groupement clair. Le libellé et la valeur
   partagent le MÊME retrait gauche (padding-left = celui des champs) → aucun décalage horizontal. */
.fiche-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 20px;}
.fiche-grid .f-span2{grid-column:span 2;}
@media(max-width:880px){.fiche-grid{grid-template-columns:repeat(2,1fr);}.fiche-grid .f-span2{grid-column:1/-1;}}
@media(max-width:520px){.fiche-grid{grid-template-columns:1fr;}}
.fiche-grid input[type=text],.fiche-grid input[type=tel],.fiche-grid input[type=email],.fiche-grid input[type=date],.fiche-grid input[type=number],.fiche-grid select{height:36px;font-size:.95rem;padding:0 12px;border-radius:8px;width:100%;}
.fiche-grid textarea{font-size:.95rem;padding:7px 12px;border-radius:8px;line-height:1.4;min-height:36px;resize:none;overflow:hidden;box-sizing:border-box;width:100%;}
.fiche-grid label.tc-label,.fiche-grid .tc-label{display:block;font-size:.82rem;font-weight:700;color:var(--navy);margin:0 0 1px;padding-left:0;}
/* en-tête de carte : titre à gauche, outils (admin) à droite — séparateur sous le titre */
.dcard-head{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--border);padding-bottom:11px;margin-bottom:14px;}
.dcard-head h3{margin:0;border:none;padding:0;}

/* boutons */
.tc-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);color:#fff;border:none;border-radius:12px;
  padding:14px 26px;font-size:1rem;font-weight:800;cursor:pointer;text-transform:uppercase;letter-spacing:.02em;font-family:var(--font);
  box-shadow:0 4px 14px rgba(0,119,182,.3);transition:background .2s,transform .15s;text-decoration:none;}
.tc-btn:hover{background:var(--accent);color:#fff;transform:translateY(-1px);}
.tc-btn.full{width:100%;}
.tc-btn.secondary{background:var(--white);color:var(--navy);border:1.5px solid var(--border);box-shadow:none;}
.tc-btn.secondary:hover{border-color:var(--blue);color:var(--blue);background:var(--white);}
.tc-btn.danger{background:#fdecea;color:var(--err);box-shadow:none;}
.tc-btn.small{padding:8px 16px;font-size:.82rem;border-radius:9px;}
.tc-btn.ghost{background:none;color:var(--blue);box-shadow:none;padding:8px 10px;text-transform:none;font-weight:700;}
.tc-btn.outline{background:var(--white);color:var(--blue);border:1.5px solid var(--blue);box-shadow:none;}
.tc-btn.outline:hover{background:var(--blue-light);color:var(--blue);}
.tc-actions{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap;align-items:center;}
.tc-actions .spacer{flex:1;}

/* choix (bénéficiaire, motifs, paiement) */
.tc-choices{display:grid;gap:12px;}
.tc-choices.two{grid-template-columns:1fr 1fr;}
.tc-choices.two .tc-choice--wide{grid-column:1/-1;}   /* « Autre motif » sur toute la largeur (2 colonnes) */
.q-detail{margin-top:8px;}   /* case de précisions « Si oui… » (affichée seulement sur « Oui ») */
@media(max-width:560px){.tc-choices.two{grid-template-columns:1fr;}}
.tc-choice{position:relative;display:block;border:1.5px solid var(--border);border-radius:12px;padding:15px 16px;background:var(--white);cursor:pointer;transition:border-color .15s, box-shadow .15s;}
.tc-choice:hover{border-color:var(--blue);}
.tc-choice input{position:absolute;opacity:0;}
.tc-choice .t{display:block;font-weight:700;color:var(--navy);}
.tc-choice .d{display:block;font-size:.82rem;color:var(--text-light);margin-top:3px;line-height:1.4;}
.tc-choice:has(input:checked){border-color:var(--blue);background:var(--blue-light);}

/* consentements : rond vide → badge vert coché (case à cocher matérialisée) */
.tc-consent{padding-right:50px;}                 /* réserve l'espace de la pastille */
.tc-tick{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:50%;
  border:2px solid var(--border);background:var(--white);display:flex;align-items:center;justify-content:center;
  transition:background .18s,border-color .18s;flex-shrink:0;}
.tc-tick::after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 2.6px 2.6px 0;
  transform:rotate(45deg) scale(0);margin-top:-2px;transition:transform .18s;}
.tc-consent:has(input:checked) .tc-tick,.tc-consent.sel .tc-tick{background:var(--ok);border-color:var(--ok);}
.tc-consent:has(input:checked) .tc-tick::after,.tc-consent.sel .tc-tick::after{transform:rotate(45deg) scale(1);}
/* RTL (he/ar) : la pastille de coche passe à GAUCHE (sinon elle chevauche le texte de consentement à droite). */
[dir=rtl] .tc-tick{right:auto;left:10px;}
/* …et la réserve d'espace doit suivre la pastille, sinon le texte RTL passe dessous. */
[dir=rtl] .tc-consent{padding-right:16px;padding-left:50px;}

/* radios inline (oui/non/nsp) */
.tc-seg{display:flex;flex-wrap:wrap;gap:8px;}
.tc-seg label{border:1.5px solid var(--border);border-radius:99px;padding:10px 16px;background:var(--white);cursor:pointer;font-size:.88rem;min-height:42px;display:inline-flex;align-items:center;}
.tc-seg input{display:none;}
.tc-seg label:has(input:checked){border-color:var(--blue);background:var(--blue-light);color:var(--accent);font-weight:700;}

/* ---------- bandeau sans-RDV ---------- */
.tc-walkin{background:linear-gradient(100deg,#e8f8ef, #e8f4fd);border:1.5px solid #b8e6cd;border-radius:14px;padding:18px;margin-bottom:18px;}
.tc-walkin .live{display:inline-flex;align-items:center;gap:7px;color:var(--ok);font-weight:800;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;}
.tc-walkin .live::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--ok);animation:tcpulse 1.6s infinite;}
@keyframes tcpulse{0%{box-shadow:0 0 0 0 rgba(10,138,74,.5);}70%{box-shadow:0 0 0 8px rgba(10,138,74,0);}100%{box-shadow:0 0 0 0 rgba(10,138,74,0);}}
/* variante BLEUE (France) : « JE CHOISIS UN CRÉNEAU… » façon « DISPONIBLE MAINTENANT » mais en bleu */
.tc-choose-live{display:inline-flex;align-items:center;gap:7px;color:var(--blue);font-weight:800;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;}
.tc-choose-live::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--blue);animation:tcpulseblue 1.6s infinite;}
@keyframes tcpulseblue{0%{box-shadow:0 0 0 0 rgba(0,122,204,.5);}70%{box-shadow:0 0 0 8px rgba(0,122,204,0);}100%{box-shadow:0 0 0 0 rgba(0,122,204,0);}}
.tc-walkin h3{color:var(--navy);margin:6px 0 2px;font-size:1.1rem;}
.tc-walkin p{font-size:.88rem;color:var(--text-light);margin-bottom:12px;}

/* ---------- calendrier créneaux ---------- */
.tc-days{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:14px;-webkit-overflow-scrolling:touch;}
.tc-day{flex:0 0 auto;border:1.5px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--white);cursor:pointer;text-align:center;min-width:78px;}  /* ⚠ 380px la réduit encore à 72px, plus bas */
.tc-day .dw{font-size:.72rem;color:var(--text-light);text-transform:capitalize;}
.tc-day .dn{font-weight:800;color:var(--navy);font-size:1.05rem;}
.tc-day .nb{font-size:.68rem;color:var(--ok);}
.tc-day.active{border-color:var(--blue);background:var(--blue-light);}
.tc-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:9px;}
.tc-slot{border:1.5px solid var(--border);border-radius:10px;padding:13px 4px;text-align:center;background:var(--white);cursor:pointer;font-weight:700;color:var(--navy);font-size:.95rem;min-height:46px;}
.tc-slot:hover{border-color:var(--blue);}
.tc-slot.active{background:var(--blue);border-color:var(--blue);color:#fff;}

/* ---------- téléphone international (indicatif + numéro) ---------- */
.tc-phone{display:flex;gap:8px;}
.tc-phone select{width:auto;max-width:112px;flex-shrink:0;flex:0 0 112px;padding:12px 8px;text-align:center;}  /* valeurs mobile-first repliées ici le 14/08 (venaient du bloc V2 du 17/07) */
.tc-phone input{flex:1;min-width:0;}

/* ---------- OTP ---------- */
/* Repli pour le champ de code : .otp-d (six cases séparées) redéfinit déjà tout ceci.
   PAS de letter-spacing : il ajoute l'espace APRÈS le caractère, donc dans une case d'une
   seule lettre le chiffre centré se retrouve poussé vers la gauche (~6 px à 1.5rem). */
.tc-otp input{text-align:center;font-size:1.5rem;font-weight:800;}

/* ---------- prochain rendez-vous (espace patient) : bloc sobre, cohérent avec les cartes admin ---------- */
.pt-rdv{border:1px solid var(--border);border-radius:12px;padding:14px 16px;background:var(--gray-bg);}
.pt-rdv + .pt-rdv{margin-top:12px;}
.pt-rdv-when{font-weight:800;color:var(--navy);font-size:1.02rem;}
.pt-rdv-sub{color:var(--text-light);font-size:.9rem;margin-top:3px;}
.pt-rdv .tc-actions{margin-top:12px;}
/* Téléconsultation à venir : pas de pilule de statut — les 2 boutons occupent sa place,
   centrés verticalement, tout à droite, entre la date et le libellé du canal (Annuler puis Rejoindre). */
.pt-rdv--row{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.pt-rdv--row .pt-rdv-main{display:flex;flex-direction:column;gap:3px;min-width:0;}
.pt-rdv--row .pt-rdv-sub{margin-top:0;}
.pt-rdv-right.tc-actions{margin-top:0;flex:0 0 auto;flex-wrap:nowrap;}
.pt-rdv-right form{margin:0;}
@media(max-width:700px){.pt-rdv--row{flex-direction:column;align-items:stretch;gap:12px;}}
/* Commutateur segmente, centre sous « Bonjour X » : un creux qui contient les positions,
   le dossier ouvert etant une gelule blanche en relief. La forme dit d'elle-meme
   « plusieurs positions, une seule active » — a taille d'etiquette, ce controle se ratait. */
.pt-filter{display:flex;flex-wrap:wrap;gap:6px;width:max-content;max-width:100%;margin:0 auto 24px;
  background:#dfe9f2;padding:7px;border-radius:99px;box-shadow:inset 0 1px 3px rgba(0,51,102,.12);}
.pt-chip{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font);
  font-size:1.08rem;font-weight:800;padding:13px 30px;min-height:50px;border-radius:99px;border:none;
  background:transparent;color:#41618a;cursor:pointer;flex:1 1 auto;
  transition:background .14s,color .14s,box-shadow .14s;}
.pt-chip svg{width:20px;height:20px;flex-shrink:0;}
.pt-chip:hover{color:var(--navy);}
.pt-chip.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(0,51,102,.20);}
.pt-chip.active svg{color:var(--blue);}
@media(max-width:560px){
  /* Au pouce, UNE SEULE LIGNE qui défile — jamais de retour à la ligne : à 4 personnes le
     commutateur se cassait en deux rangées et la forme en stade n'avait plus de sens. La pastille
     épouse son contenu et reste centrée tant que tout tient ; au-delà elle prend la largeur et
     fait glisser, la gélule suivante coupée par le bord arrondi servant d'indice. */
  .pt-filter{width:max-content;max-width:100%;gap:5px;padding:6px;
    flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;scroll-padding:6px;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain;}
  .pt-filter::-webkit-scrollbar{display:none;}
  /* Gélules resserrées : la 4e personne doit ÊTRE VISIBLE — icône et début du prénom — sinon
     rien ne dit qu'il y en a une de plus et qu'on peut faire glisser jusqu'à elle. */
  .pt-chip{flex:0 0 auto;padding:13px 13px;gap:7px;font-size:.97rem;scroll-snap-align:center;}
  .pt-chip svg{width:18px;height:18px;}
}

/* ---------- tables de documents de l'espace patient (mêmes cartes que la fiche admin) ---------- */
/* date en fin de ligne, alignée à droite et compacte (comme /admin/patient/{id}). */
.pt-tbl td:last-child{width:1%;white-space:nowrap;text-align:right;color:var(--text-light);}
/* FIX alignement : quand une ligne n'a QU'UNE cellule (Ordonnances/CR/Documents partagés), le titre EST
   aussi le dernier enfant → les règles `…td:last-child{text-align:right}` le poussaient à droite et le
   grisaient. On force le titre à GAUCHE avec une spécificité suffisante pour battre `tr.rowlink td:last-child`
   (couvre les tables `.pt-tbl` de l'espace patient ET les `.tc-table` de la fiche admin). */
.tc-table tr.rowlink td.cell-title{width:auto;white-space:normal;text-align:left;color:var(--text);}

/* Paire de CTA (état « aucun RDV ») : deux boutons côte à côte, centrés — comme l'accueil.
   flex:1 → largeurs égales pour tenir sur une seule ligne dans la colonne étroite de l'espace patient. */
.pt-cta-pair{display:flex;gap:12px;justify-content:center;margin-top:16px;max-width:620px;margin-left:auto;margin-right:auto;}
.pt-cta-pair .tc-btn{flex:1 1 0;min-width:0;padding:13px 14px;font-size:.85rem;text-align:center;}
@media(max-width:560px){.pt-cta-pair{flex-direction:column;}.pt-cta-pair .tc-btn{width:100%;}}

/* Cartes « Mon dossier … » : titre à gauche, petit bouton (blanc liseré bleu) en bout de ligne. */
.pt-dossier-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.pt-dossier-row h3{margin:0;}
.pt-dossier-row .tc-btn{margin-inline-start:auto;}
/* TÉLÉPHONE : le bouton passe sous le titre, sur toute la largeur. Poussé à droite par
   margin-inline-start:auto, il formait une petite cible décentrée dont le lien avec son titre se
   lisait mal ; pleine largeur, il s'aligne sur « Demande de téléconsultation » juste au-dessus. */
@media(max-width:560px){
  .pt-dossier-row{flex-direction:column;align-items:stretch;gap:12px;}
  .pt-dossier-row .tc-btn{margin-inline-start:0;width:100%;justify-content:center;}
}

/* ---------- récap ---------- */
.tc-summary{border:1.5px dashed var(--border);border-radius:12px;padding:14px 16px;font-size:.92rem;margin-bottom:16px;background:var(--white);}
.tc-summary b{color:var(--navy);}
.tc-summary .line{display:flex;justify-content:space-between;gap:10px;padding:3px 0;}

/* ---------- salle d'attente ---------- */
.tc-waiting{text-align:center;padding:34px 18px;}
.tc-waiting .pulse{width:74px;height:74px;margin:0 auto 18px;border-radius:50%;background:var(--blue-light);display:flex;align-items:center;justify-content:center;font-size:2rem;animation:tcpulse 2s infinite;}
/* Encart vidéo patient — TOUJOURS PAYSAGE (16/9), y compris sur mobile : une source verticale (téléphone)
   est letterboxée (bandes noires latérales) plutôt que d'imposer un cadre trop haut. max-width borne la
   hauteur à 72vh → l'encart tient toujours dans l'écran (jamais de débordement à scroller). */
.tc-video{position:relative;width:100%;max-width:min(100%, calc(72vh * 16 / 9));aspect-ratio:16/9;margin:0 auto;background:#0b1523;border-radius:14px;overflow:hidden;}
.tc-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}

/* ---------- tableaux (admin) ---------- */
.tc-table{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--white);}
.tc-table th{background:var(--gray-bg);color:var(--navy);text-align:left;padding:9px 12px;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;}
.tc-table td{padding:10px 12px;border-top:1px solid var(--border);vertical-align:top;}
.tc-table tr:hover td{background:var(--blue-light);}
.tc-scroll{overflow-x:auto;}
/* ---------- MOBILE : tableaux admin en CARTES empilées (lisibles au téléphone) ----------
   N'affecte QUE ≤640px ; le rendu desktop (tables) est strictement inchangé.
   Chaque ligne devient une carte ; chaque cellule = « libellé : valeur » via data-label ;
   la 1re cellule (nom patient) sert de titre de carte. */
@media(max-width:640px){
  .tc-scroll{overflow-x:visible;}
  .tc-table.jour-tbl{table-layout:auto;}
  .tc-table, .tc-table tbody{display:block;width:100%;}
  .tc-table colgroup{display:none;}
  .tc-table tr:has(th){display:none;}                 /* masque la ligne d'en-tête */
  .tc-table tr{display:flex;flex-direction:column;background:var(--white);border:1px solid var(--border);
    border-radius:11px;padding:11px 13px;margin-bottom:11px;box-shadow:0 1px 3px rgba(20,50,90,.06);}
  .tc-table tr:hover td{background:transparent;}
  .tc-table td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
    border:none;padding:4px 0;font-size:.95rem;text-align:right;white-space:normal;}
  .tc-table td[data-label]::before{content:attr(data-label);font-weight:700;color:var(--navy);
    font-size:.82rem;text-align:left;flex:0 0 auto;opacity:.85;}
  /* nom du patient = titre de la carte (remonté en haut) */
  .tc-table td.cell-title{order:-1;font-size:1.05rem;font-weight:800;color:var(--text);text-align:left;
    justify-content:flex-start;border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:5px;}
  .tc-table td.cell-title::before{display:none;}
  .tc-table td:empty{display:none;}
  /* neutralise les règles desktop td:last-child (width:1% / nowrap / left) qui clipperaient la dernière cellule en carte */
  .tc-table tr.rowlink td:last-child{width:auto;white-space:normal;text-align:right;}
  .jour-tbl tr.rowlink td:last-child{width:auto;white-space:normal;text-align:right;}
  /* #4 : le titre d'un document (cellule unique, donc aussi :last-child) reste ALIGNÉ À GAUCHE
     et collé à son icône — sans quoi la règle td:last-child ci-dessus le poussait à droite sur 2 lignes. */
  .tc-table tr.rowlink td.cell-title{text-align:left;justify-content:flex-start;white-space:normal;font-size:.95rem;line-height:1.35;gap:8px;}
  /* espace patient : date en pleine largeur dans la carte ; drapeaux des reçus centrés entre le nom et la date */
  .pt-tbl td:last-child{width:auto;white-space:normal;}
  /* #5 : espace patient — consultations & documents COMPACTS, proches du tableau desktop.
     Chaque entrée redevient une ligne horizontale (titre à gauche, date à droite) au lieu
     d'une grosse carte à trait de séparation. Scopé à .pt-tbl : la console admin n'est pas touchée. */
  .pt-tbl tr{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:11px 14px;margin-bottom:8px;gap:2px 12px;}
  /* titre en bloc : icone EN LIGNE avec le texte (vertical-align) et texte qui se replie (min-width:0) => plus de debordement */
  .pt-tbl td.cell-title{order:0;flex:1 1 auto;min-width:0;display:block;border-bottom:none;padding-bottom:0;margin-bottom:0;font-size:.98rem;font-weight:700;white-space:normal;line-height:1.35;}
  .pt-tbl td.cell-title svg{vertical-align:-0.15em;margin-right:6px;}
  .pt-tbl td{padding:0;font-size:.9rem;color:var(--text-light);}
  .pt-tbl tr.rowlink td:last-child:not(.cell-title){flex:0 0 auto;text-align:right;white-space:nowrap;color:var(--text-light);}
  .pt-tbl td[data-label]::before{display:none;}
}
/* bulle « Patient : … » (fiche patient + fiche RDV clôturée) */
.pat-name{background:var(--white);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);text-align:center;padding:18px 24px;margin-bottom:18px;font-size:1.3rem;font-weight:800;color:var(--navy);}
/* fiche RDV clôturée : « <canal> du <date> à <h> » à gauche, statut de paiement à droite */
.rdv-info{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.rdv-info-l{font-size:1.05rem;font-weight:700;color:var(--navy);}
.rdv-info-r{font-size:1rem;font-weight:700;color:var(--text);white-space:nowrap;}
.rdv-info-r .amt{color:var(--text-light);font-weight:600;}
/* cartes documents (fiche patient / fiche RDV) : pleine largeur, empilées */
.doc-grid{display:block;}
/* tableaux « jour J » : répartition régulière (table-layout fixe), ligne entière cliquable */
.jour-tbl{table-layout:fixed;}
.jour-tbl td,.jour-tbl th{vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.jour-tbl col.c-date{width:9%;} .jour-tbl col.c-heure{width:8%;} .jour-tbl col.c-patient{width:20%;}
.jour-tbl col.c-motif{width:46%;} .jour-tbl col.c-statut{width:12%;}
.jour-tbl col.c-act{width:56px;}
/* le tableau du jour n'a PAS de colonne montant → on annule le right-align global de rowlink:last-child */
.jour-tbl tr.rowlink td:last-child{text-align:right;}
/* lignes de tableau cliquables (liste patients) */
tr.rowlink{cursor:pointer;}
tr.rowlink td{vertical-align:middle;}
tr.rowlink td:last-child{text-align:right;white-space:nowrap;width:1%;}

/* ---------- console : interrupteur ---------- */
.tc-switchcard{display:flex;align-items:center;gap:16px;justify-content:space-between;flex-wrap:wrap;}

/* déconnexion — centrée sous la dernière carte de l'espace patient */
.tc-logout-row{display:flex;justify-content:center;margin:22px 0 6px;}
.tc-logout-f{display:contents;} /* le <form> ne perturbe pas le centrage du bouton */
.tc-logout{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:9px 20px;
  border:1.5px solid var(--border);border-radius:99px;background:var(--white);
  color:var(--text-light);font-weight:600;font-size:.9rem;text-decoration:none;font-family:var(--font);cursor:pointer;
  transition:border-color .15s,color .15s,background .15s;}
.tc-logout:hover{border-color:var(--err);color:var(--err);background:var(--white);}
.tc-logout svg{width:17px;height:17px;flex-shrink:0;}

/* impression (reçus / CR) */
@media print{.tc-actions, .tc-staging{display:none !important;}body{background:var(--white);}.tc-card{border:none;box-shadow:none;}}

/* ================================================================
   V2 RESPONSIVE — refonte mobile-first (2026-07-17)
   Ces règles arrivent en fin de cascade et priment sur les précédentes. */

html{-webkit-text-size-adjust:100%;}
body{overflow-x:hidden;}
input[type=text],input[type=tel],input[type=email],input[type=date],input[type=time],
input[type=number],input[type=password],select,textarea{font-size:16px;}

/* état sélectionné : classe .sel (JS) en plus de :has() — compatibilité totale */
.tc-choice.sel{border-color:var(--blue);background:var(--blue-light);}
.tc-seg label.sel{border-color:var(--blue);background:var(--blue-light);color:var(--accent);font-weight:700;}

/* téléphone : indicatif court (drapeau + code), le numéro prend le reste */

/* jours : défilement doux sans barre visible, cibles tactiles ≥44px */
.tc-days{scrollbar-width:none;}
.tc-days::-webkit-scrollbar{display:none;}

/* salle d'attente : contenu centré verticalement, pied de page masqué */
/* ⚠ min-height REDÉFINIE plus bas dans la section « salle d'attente » (100dvh - 96px) */
.tc-page-salle .tc-wrap{display:flex;flex-direction:column;justify-content:center;
  min-height:calc(100dvh - 140px);}

/* ---------- téléphone / petites tablettes ---------- */
@media(max-width:700px){
  .tc-wrap{padding:14px 12px 44px;}
  .tc-card{padding:16px 14px;border-radius:12px;margin-bottom:14px;}
  h1.tc-title{font-size:1.22rem;}
  p.tc-sub{font-size:.9rem;margin-bottom:14px;}
  .tc-staging{font-size:.74rem;padding:7px 11px;margin-bottom:12px;}
  .tc-steps{margin-bottom:14px;}

  /* actions : bouton principal pleine largeur au-dessus, retour discret dessous */
  .tc-actions{flex-direction:column-reverse;align-items:stretch;gap:10px;margin-top:16px;}
  .tc-actions .spacer{display:none;}
  .tc-actions .tc-btn{width:100%;}
  .tc-actions .tc-btn.ghost{width:auto;align-self:center;}
  .tc-actions form{display:contents;}

  .tc-choices.two{grid-template-columns:1fr;}
  .tc-choice{padding:14px;}
  .tc-summary{font-size:.86rem;padding:12px 13px;}
  .tc-summary .line{flex-wrap:wrap;}
  label.tc-label{margin-top:12px;}
  .tc-table{font-size:.84rem;}
  .tc-waiting{padding:26px 12px;}
  .tc-waiting .pulse{width:64px;height:64px;font-size:1.7rem;}
}

/* très petits écrans */
@media(max-width:380px){
  .tc-wrap{padding:12px 10px 40px;}
  .tc-phone select{flex-basis:100px;max-width:100px;}
  .tc-day{min-width:72px;}
  h1.tc-title{font-size:1.12rem;}
}

/* ---------- icônes SVG & points de statut (remplacement des émojis) ---------- */
svg.tc-ico{vertical-align:-3px;flex-shrink:0;}
h3 svg.tc-ico,h1 svg.tc-ico{color:var(--blue);vertical-align:-2px;}
.tc-waiting .pulse svg.tc-ico{color:var(--blue);}
.tc-staging svg.tc-ico{color:#b8860b;width:15px;height:15px;}
.tc-summary svg.tc-ico{color:var(--accent);width:16px;height:16px;}
i.tc-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#cbd5e1;margin-right:8px;vertical-align:1px;}
/* Pas de variante « rouge » : le seul endroit qui pose .tc-dot (écran du jour) n'écrit
   que « on » ou rien. La règle i.tc-dot.red a été retirée le 14/08/2026. */
i.tc-dot.on{background:var(--ok);animation:tcpulse 1.6s infinite;}

/* ============================================================================
   Espace patient RTL (hébreu / arabe). L'en-tête et le pied reprennent he-rtl.css
   du site ; ici on corrige le contenu de l'app. L'essentiel s'aligne via dir=rtl. */
[dir=rtl] .tc-table th{text-align:right;}
/* Champs à contenu latin/numérique : saisie toujours de gauche à droite. */
[dir=rtl] input[type=tel],[dir=rtl] input[type=email],[dir=rtl] input[type=number],
[dir=rtl] input[type=date],[dir=rtl] .tc-otp input{direction:ltr;text-align:right;}
[dir=rtl] .tc-otp input{text-align:center;}
/* Date : l'ordre JJ/MM/AAAA reste LTR (ci-dessus) mais la VALEUR doit se coller à droite,
   comme les autres champs de la fiche (sinon elle « flotte » à gauche sous son libellé). */
[dir=rtl] input[type=date]::-webkit-datetime-edit{margin-inline-start:auto;}
/* La règle générale d'alignement des dates (plus haut) pose width:100% et text-align:start ;
   en RTL elle annulerait la marge automatique ci-dessus et renverrait la date à GAUCHE.
   Ces deux lignes, plus spécifiques, la neutralisent : en hébreu et en arabe la valeur
   reste collée au bord DROIT, qui est le début de ligne. */
[dir=rtl] input[type=date]::-webkit-datetime-edit{width:auto;text-align:right;}
[dir=rtl] input[type=date]::-webkit-date-and-time-value{text-align:right;}

/* Listes de l'historique (.pt-tbl / .tc-table) : en RTL, le titre (type + icône) se colle
   à DROITE (départ de lecture) et la date / les drapeaux à GAUCHE (fin). Les règles physiques
   par défaut (title→left, dernière cellule→right) sont conçues pour le LTR : on les inverse. */
[dir=rtl] .pt-tbl td:last-child{text-align:left;}
[dir=rtl] .tc-table tr.rowlink td.cell-title{text-align:right;}
[dir=rtl] tr.rowlink td:last-child{text-align:left;}

/* Bouton « Déconnexion » de l'espace patient : l'icône (porte + flèche) est correctement
   placée par dir=rtl ; il ne reste qu'à la retourner en miroir pour que la flèche pointe
   vers l'extérieur dans le sens de lecture RTL. */
[dir=rtl] .tc-logout svg{transform:scaleX(-1);}

/* ============================================================================
   MODE CONSULTATION (plein écran)
   ============================================================================ */

/* Console de consultation PLEIN ÉCRAN : doit recouvrir le header du site (z-index 1000) — sinon
   le header rognait la barre supérieure de la console (nom patient, chrono, Annuler). */
.consult{position:fixed;inset:0;z-index:2000;background:#0e1726;}
#consultForm{display:flex;flex-direction:column;height:100%;height:100dvh;}

/* barre du haut */
.consult-top{flex:0 0 auto;height:52px;display:flex;align-items:center;gap:14px;
  padding:0 16px;background:#0b1220;color:#e8eef6;border-bottom:1px solid #1e2c42;
  padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));}
.consult-who{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0;}
.consult-name{font-weight:800;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.consult-sub{font-size:.82rem;color:#9fb2cc;white-space:nowrap;}
.consult-live{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;color:#7ee0a6;font-weight:700;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;}
.consult-dot{width:8px;height:8px;border-radius:50%;background:#28c76f;animation:cpulse 1.6s infinite;}
@keyframes cpulse{0%{box-shadow:0 0 0 0 rgba(40,199,111,.6)}70%{box-shadow:0 0 0 7px rgba(40,199,111,0)}100%{box-shadow:0 0 0 0 rgba(40,199,111,0)}}
.consult-warn{display:inline-flex;align-items:center;gap:5px;font-size:.74rem;color:#ffcf6b;white-space:nowrap;}
.consult-timer{font-variant-numeric:tabular-nums;font-weight:700;font-size:1rem;color:#e8eef6;letter-spacing:.04em;}
.consult-topbtns{display:flex;gap:8px;align-items:center;}
/* Alignement de la barre du haut : enfants de tailles/casses differentes centres sur leur boite
   -> line-height:1 pour que la boite colle au texte et que le centrage devienne optique.
   (Sans ca, « EN COURS » en capitales remonte par rapport a « 41 ans » et au nom du patient.) */
.consult-who>*{line-height:1;}
.consult-who>.consult-sub,.consult-who>.consult-live,.consult-who>.consult-warn{display:inline-flex;align-items:center;}
.consult-top .cbtn{line-height:1;}

/* corps : 3 colonnes (onglets | centre | droite) */
.consult-body{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:212px minmax(0,1fr) minmax(0,1fr);}

/* colonne d'onglets fixe */
.consult-tabs{background:#0b1220;display:flex;flex-direction:column;padding:10px 8px;gap:4px;border-right:1px solid #1e2c42;}
.ctab{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border:none;background:transparent;
  color:#9fb2cc;font-size:.9rem;font-weight:600;border-radius:10px;cursor:pointer;text-align:left;font-family:inherit;}
.ctab svg{width:18px;height:18px;flex-shrink:0;}
.ctab:hover{background:#14223a;color:#e8eef6;}
.ctab.active{background:var(--blue);color:#fff;}

/* panneau central */
.consult-center{background:#f4f7fb;min-height:0;overflow:hidden;}
.cpanel{height:100%;}
.cpanel.hidden{display:none;}
.cscroll{height:100%;overflow-y:auto;padding:18px 20px 28px;}
.ch3{color:var(--navy);font-size:1.02rem;margin:0 0 8px;}
.ch4{color:var(--navy);font-size:.92rem;margin:18px 0 4px;}
.cfield{font-size:.9rem;line-height:1.75;color:#26313f;margin:2px 0;}
.cfield svg{width:14px;height:14px;color:var(--blue);vertical-align:-2px;}
.chint{font-size:.78rem;color:var(--text-light);}

/* colonne droite : vidéo (haut) + compte-rendu (bas) */
.consult-right{display:grid;grid-template-rows:1fr 1fr;min-height:0;border-left:1px solid #1e2c42;}
.consult-video{position:relative;background:#000;min-height:0;overflow:hidden;}
.consult-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
.cvid-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#5b6b7f;text-align:center;padding:20px;}
.cvid-ph svg{width:30px;height:30px;opacity:.55;}
.cvid-off{position:absolute;inset:0;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;color:#8595ab;background:#000;font-weight:600;letter-spacing:.02em;text-align:center;padding:16px;}
.cvid-start{display:flex;flex-direction:column;gap:8px;align-items:center;margin-top:6px;}
.cvid-start .cbtn{width:100%;max-width:280px;justify-content:center;}
.consult-cr{background:var(--white);display:flex;flex-direction:column;min-height:0;padding:10px 14px 12px;}
.clabel{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:700;color:var(--navy);margin-bottom:6px;}
.clabel svg{width:15px;height:15px;color:var(--blue);flex-shrink:0;}
.ctextarea{flex:1 1 auto;width:100%;resize:none;border:1px solid var(--border);border-radius:10px;
  padding:10px 12px;font-size:15px;line-height:1.5;color:var(--text);font-family:inherit;min-height:0;}
.ctextarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,122,204,.14);}

/* boutons du mode consultation */
.cbtn{display:inline-flex;align-items:center;gap:7px;border:none;border-radius:9px;padding:9px 14px;
  font-size:.86rem;font-weight:700;cursor:pointer;font-family:inherit;text-decoration:none;}
.cbtn svg{width:15px;height:15px;}
.cbtn.ghost{background:#16243c;color:#cdd9ea;border:1px solid #26374f;}
.cbtn.ghost:hover{background:#20324f;color:#fff;}
.cbtn.ghost.small{background:#eef2f8;color:var(--navy);border:1px solid var(--border);padding:8px 12px;font-size:.8rem;margin-top:6px;}
.cbtn.ghost.small:hover{background:#e2e9f3;}
.cbtn.danger{background:#3a1420;color:#ffb3b3;border:1px solid #5a2230;}
.cbtn.danger:hover{background:#5a1b2a;color:#fff;}
.cbtn.primary{background:var(--blue);color:#fff;}
.cbtn.primary:hover{background:var(--accent);}
.cbtn.big{width:100%;justify-content:center;padding:14px;font-size:.95rem;}

/* prescription : lignes (médicaments + texte libre) */
.rxbtns{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px;}
.rxbtns .cbtn.ghost.small{margin-top:0;}
.rxfree textarea{resize:vertical;min-height:46px;line-height:1.45;}
.rxrow{display:flex;gap:8px;margin-bottom:8px;align-items:flex-start;}
.cinput{flex:1 1 auto;min-width:0;border:1px solid var(--border);border-radius:8px;padding:9px 10px;
  font-size:15px;font-family:inherit;color:var(--text);background:var(--white);}
.cinput:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,122,204,.14);}
.cinput-sm{flex:0 0 100px;}
.rxdel{flex:0 0 auto;border:none;background:#f2e2e5;color:#b23;width:32px;height:32px;border-radius:8px;cursor:pointer;font-weight:700;}
.rxdel:hover{background:#eacacf;}
/* Étiquette de type sur une ligne de prescription non médicamenteuse : elle rappelle, à la saisie,
   que cette ligne partira sur une ORDONNANCE SÉPARÉE (biologie, examens, soins). Les médicaments
   n'en portent pas — c'est le cas courant, et la charge visuelle serait inutile. */
.rxtag{flex:0 0 auto;align-self:center;font-size:.72rem;font-weight:600;letter-spacing:.02em;
  padding:4px 9px;border-radius:999px;background:#eaf2fb;color:#2a4a70;border:1px solid #d3e2f4;white-space:nowrap;}
body.tc-dark .rxtag{background:#16233a;color:#9dc0ea;border-color:#27364f;}

/* documents à valider */
.cdocs{list-style:none;margin:8px 0;padding:0;}
.cdocs li{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--border);font-size:.9rem;color:#26313f;}
.cdocs li:last-child{border-bottom:none;}
.cdocs svg{width:15px;height:15px;color:var(--blue);flex-shrink:0;}
.cstate{margin-inline-start:auto;font-size:.82rem;color:var(--text-light);text-align:right;}
.cstate.ok{color:#12924a;font-weight:600;}
/* bouton « Aperçu PDF » (ouvre le document exact déposé côté patient) */
.cprev{display:inline-flex;align-items:center;gap:4px;margin-inline-start:10px;flex-shrink:0;
  border:1px solid var(--border);background:var(--white);color:var(--blue);border-radius:7px;
  padding:3px 9px;font-size:.76rem;font-weight:700;cursor:pointer;font-family:inherit;}
.cprev:hover{background:#eaf2ff;border-color:var(--blue);color:var(--accent);}
.cprev svg{width:13px;height:13px;}
/* Les aperçus d'ordonnance sont plusieurs sur une seule ligne. Sans conteneur souple ils se
   SUPERPOSAIENT (le second recouvrait le premier de 180px) ; ici ils s'espacent et le dernier
   finit exactement au même bord droit que l'aperçu du compte-rendu et celui du justificatif. */
/* EN COLONNE : une ordonnance de médicaments plus quatre textes libres font cinq boutons ;
   en ligne ils débordaient de la fiche. Empilés et alignés à la fin de ligne, ils finissent
   tous exactement au même bord que l'aperçu du compte-rendu et celui du justificatif. */
#rxPrevBtns{display:inline-flex;flex-direction:column;align-items:flex-end;gap:6px;
  flex-shrink:0;margin-inline-start:10px;}
#rxPrevBtns .cprev{margin-inline-start:0;}
/* MOBILE : cinq boutons empilés à droite d'un libellé ne tiennent pas dans 390 px — la colonne
   sortait de la fiche par la droite. La ligne se replie et TOUS les aperçus passent pleine
   largeur, celui du compte-rendu et celui du justificatif compris : une seule et même mise
   en page, quel que soit le nombre d'ordonnances. */
@media(max-width:640px){
  .cdocs li{flex-wrap:wrap;}
  .cdocs li>.cprev,#rxPrevBtns{width:100%;margin-inline-start:0;margin-top:8px;}
  #rxPrevBtns{align-items:stretch;}
  #rxPrevBtns .cprev{width:100%;margin-top:0;}
  .cprev{justify-content:center;}
}
.cclose{margin-top:18px;}
/* ligne « Encaissement … Oui / Non » (validation finale de la capture d'empreinte) */
.cxcap b{color:var(--navy);}
.cseg{margin-inline-start:auto;display:inline-flex;gap:6px;}
.cseg label{border:1px solid var(--border);border-radius:99px;padding:4px 15px;font-size:.82rem;font-weight:600;cursor:pointer;color:var(--text-light);background:var(--white);}
.cseg input{position:absolute;opacity:0;pointer-events:none;}
.cseg label:has(input:checked){border-color:var(--blue);background:#eaf2ff;color:var(--accent);font-weight:800;}
.cseg label.sel{border-color:var(--blue);background:#eaf2ff;color:var(--accent);font-weight:800;}

/* écrans étroits : console PLEIN ÉCRAN + défilement INTERNE (comme le desktop). La barre du haut, la
   VIDÉO et les onglets restent FIXES — SEUL le contenu de l'onglet défile. Ordre : vidéo (haut) · onglets ·
   contenu · compte-rendu. (.consult reste position:fixed / #consultForm 100dvh de la base — non redéfinis ici.) */
@media(max-width:900px){
  .consult-body{display:flex;flex-direction:column;min-height:0;}
  .consult-right{display:contents;}
  .consult-video{order:1;flex:0 0 auto;}
  .consult-tabs{order:2;}
  .consult-center{order:3;}
  .consult-cr{order:4;}
  .consult-tabs{flex:0 0 auto;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid #1e2c42;scrollbar-width:none;}
  .consult-tabs::-webkit-scrollbar{display:none;}
  .ctab{width:auto;white-space:nowrap;}
  .consult-video{height:28vh;min-height:28vh;}
  /* Deux moitiés ÉGALES sous les onglets : contenu de l'onglet (défile) ↕ compte-rendu (50 / 50). */
  .consult-center{flex:1 1 0;min-height:0;overflow:hidden;}
  .cpanel{height:100%;}
  .cscroll{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;}
  .consult-cr{flex:1 1 0;min-height:0;border-top:1px solid #1e2c42;}
}
/* TÉLÉPHONE (≤600px) : barre du haut sur 2 lignes (nom+statut / chrono+Annuler) sans chevauchement,
   onglets à largeur égale et lisibles. Le desktop reste strictement inchangé. */
@media(max-width:600px){
  /* Barre du haut sur UNE seule ligne : nom + statut à gauche, « Annuler » à droite (gain de place). */
  .consult-top{height:auto;min-height:44px;flex-wrap:nowrap;align-items:center;gap:8px;padding:7px 10px;
    padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right));}
  .consult-who{flex:1 1 auto;flex-wrap:nowrap;row-gap:0;min-width:0;overflow:hidden;}
  .consult-name{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
  .consult-warn{display:none;}                 /* alerte « X consult./7j » : redondante, masquée sur petit écran */
  .consult-timer{display:none;}                /* mobile : pas de chrono → place pour « Annuler » sur la ligne du nom */
  .consult-topbtns{flex:0 0 auto;margin-left:auto;}
  .cbtn.danger{padding:8px 13px;font-size:.82rem;}
  .consult-tabs{padding:6px;gap:5px;}
  .ctab{flex:1 1 0;min-width:0;justify-content:center;text-align:center;padding:9px 5px;font-size:.77rem;
    white-space:normal;line-height:1.15;gap:6px;}
  .ctab svg{display:none;}                      /* icônes masquées → place pour les libellés (3 onglets égaux) */
  .cscroll{padding:14px 13px 24px;}
}

/* --- Compte-rendu : sélecteur de langue FR/EN/עב (coulisse) --- */
.cr-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;}
.cr-langs{display:inline-flex;gap:3px;background:#eef2f8;border-radius:8px;padding:2px;}
.cr-langs label{font-size:.76rem;font-weight:700;color:var(--text-light);padding:3px 9px;border-radius:6px;cursor:pointer;line-height:1.2;}
.cr-langs input{position:absolute;opacity:0;pointer-events:none;}
.cr-langs label:has(input:checked){background:var(--blue);color:#fff;}
.ctextarea[dir=rtl]{text-align:right;}

/* --- Dossier médical éditable (onglet Informations, pendant la consultation) --- */
#dossierEdit{margin:6px 0 4px;}
#dossierEdit textarea.cinput{width:100%;resize:vertical;min-height:44px;line-height:1.4;font-family:inherit;}
#dossierEdit .cinput{margin-bottom:8px;}
.dlab{display:block;font-size:.82rem;font-weight:700;color:var(--navy);margin:8px 0 4px;}
/* .ded-row retiré le 14/08/2026 : quatre règles sans aucune cible — la classe
   n'apparaît nulle part ailleurs que dans cette feuille (vérifié sur le HTML de
   25 écrans et sur les classes posées par le code). */
.ded-seg{margin-bottom:6px;}
.ded-seg label{font-size:.84rem;padding:6px 13px;}
.ded-save{display:flex;align-items:center;gap:10px;margin-top:12px;}
.ded-status{font-size:.82rem;color:var(--text-light);}
.ded-status.ok{color:#12924a;font-weight:600;}
.ded-status.err{color:var(--err);font-weight:600;}

/* --- Import de fichiers par le patient (salle d'attente + tunnel) : tactile, cibles >= 44px --- */
.tc-upcard{margin-top:14px;}
.tc-upcard .tc-upbtn{display:flex;width:fit-content;margin-inline:auto;}   /* bouton « Ajouter un document » centré */
.tc-upcard .tc-uphint{text-align:center;}
.tc-uptitle{display:flex;align-items:center;gap:8px;font-size:1rem;font-weight:800;color:var(--navy);margin:0 0 10px;}
.tc-uptitle svg{color:var(--blue);flex-shrink:0;}
.tc-upbtn{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:11px 20px;border:1.5px dashed var(--blue);
  border-radius:12px;color:var(--blue);background:#f4f9ff;font-weight:700;font-size:1rem;cursor:pointer;font-family:var(--font);}
.tc-upbtn:hover{background:#e7f2ff;}
.tc-upbtn svg{color:var(--blue);flex-shrink:0;}
.tc-uphint{font-size:.8rem;color:var(--text-light);margin:8px 0 0;line-height:1.4;}
.tc-uplist{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;}
.tc-uplist li{display:flex;align-items:center;gap:9px;padding:9px 12px;background:#f6f8fb;border:1px solid var(--border);border-radius:10px;font-size:.9rem;color:#26313f;}
.tc-uplist li svg{color:var(--blue);flex-shrink:0;}
.tc-uplist .upname{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.up-del{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;
  background:#f2e2e5;color:#b23;border-radius:9px;cursor:pointer;}
.up-del:hover{background:#eacacf;}
.up-del:disabled{opacity:.5;cursor:default;}
.tc-upmsg{font-size:.82rem;color:var(--text-light);margin:8px 0 0;min-height:1.1em;}
/* Salle d'attente : carte « Documents pour le médecin » — contenu CENTRÉ (comme la carte d'attente au-dessus). */
.tc-page-salle .tc-upcard{max-width:520px;margin-left:auto;margin-right:auto;text-align:center;
  display:flex;flex-direction:column;justify-content:center;}
.tc-page-salle .tc-upcard .tc-uptitle{justify-content:center;}
.tc-page-salle .tc-upcard .tc-uplist{align-items:center;}
.tc-page-salle .tc-upcard .tc-uplist li{text-align:left;width:100%;max-width:360px;}

/* --- Dépôt de document EN COURS D'APPEL --- */
/* Bouton bleu SOUS l'encart vidéo (centré). */
.iv-belowbar{display:flex;justify-content:center;margin:14px auto 0;}
.iv-belowbar .tc-btn{padding:11px 22px;}

/* Fenêtre d'ajout de document : MODALE CENTRÉE (verticalement + horizontalement), plus une feuille en bas. */
.iv-sheetwrap{position:fixed;inset:0;z-index:2200;display:flex;align-items:center;justify-content:center;padding:20px;}
.iv-backdrop{position:absolute;inset:0;background:rgba(8,13,22,.5);opacity:0;transition:opacity .22s;}
.iv-sheetwrap.open .iv-backdrop{opacity:1;}
.iv-sheet{position:relative;margin:auto;width:100%;max-width:560px;max-height:88vh;overflow:auto;background:var(--white);
  border-radius:20px;box-shadow:0 20px 60px rgba(0,0,0,.35);padding:16px 20px 22px;
  transform:scale(.96);opacity:0;transition:transform .2s ease,opacity .2s ease;}
.iv-sheetwrap.open .iv-sheet{transform:scale(1);opacity:1;}
.iv-handle{display:none;} /* poignée de feuille inutile pour une modale centrée */
/* ⚠ justify-content REDÉFINIE plus bas (center) dans la section « visionneuse » */
.iv-sheethead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;}
/* ⚠ font-size REDÉFINIE plus bas (.95rem) dans la section « visionneuse » */
.iv-sheettitle{display:inline-flex;align-items:center;gap:8px;font-weight:800;color:var(--navy);font-size:1.02rem;}
.iv-sheettitle svg{color:var(--blue);flex-shrink:0;}
.iv-close{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:#f1f4f8;color:#55606f;border-radius:11px;cursor:pointer;}
.iv-close:hover{background:#e6ebf1;}
.iv-sheetbody{padding-top:4px;}
.iv-sheetbody .tc-upload{max-width:none;}

/* Bouton crayon « Modifier » en bout de ligne des documents (CR/ordonnance) — admin */
.tc-table td.doc-act{width:44px;text-align:right;white-space:nowrap}
.doc-edit{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;color:#5a6476;transition:background .12s,color .12s}
.doc-edit:hover{background:#eef3f9;color:var(--navy)}

/* ══════════ THÈME SOMBRE — instance TC autonome (aligné sur la console ophtalmo docteurgozlan) ══════════
   Activé par <body class="tc-dark"> quand tc_is_standalone(). Ne s'applique JAMAIS à Nathalie. */
body.tc-dark{
  --navy:#e8eef6; --blue:#3b82f6; --blue-light:#22304a; --accent:#60a5fa;
  --text:#e2e8f0; --text-light:#9fb0c3; --white:#1e293b; --gray-bg:#0f172a;
  --border:#334155; --shadow:0 4px 16px rgba(0,0,0,.45); --ok:#22c55e; --err:#f87171;
}
body.tc-dark .pt-filter{background:#111c2e;box-shadow:inset 0 1px 4px rgba(0,0,0,.6);}
body.tc-dark .pt-chip{color:#9fb0c3;}
body.tc-dark .pt-chip:hover{color:#e2e8f0;}
body.tc-dark .pt-chip.active{background:#31486b;color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.55);}
body.tc-dark .pt-chip.active svg{color:#60a5fa;}
body.tc-dark #site-header,body.tc-dark .site-header{background:var(--white);border-bottom-color:var(--border);}
body.tc-dark .site-header .nav-links a{color:var(--text-light);}
body.tc-dark .site-header .nav-links a:hover,body.tc-dark .site-header .nav-links a[aria-current]{color:var(--text);}
body.tc-dark .nav-logo-sub{color:var(--text-light);}
body.tc-dark input,body.tc-dark select,body.tc-dark textarea{background:var(--gray-bg);color:var(--text);border-color:var(--border);}
body.tc-dark .tc-table th{background:var(--gray-bg);}
body.tc-dark .tc-table tr:hover td{background:rgba(59,130,246,.08);}
body.tc-dark .tc-btn.outline,body.tc-dark .tc-btn.secondary{background:var(--white);}

/* ============================================================
   CONSOLE ADMIN — thème sombre : correctifs de lisibilité/contraste.
   (surcharge les couleurs codées en dur, y compris les <style> inline de l'agenda) */
/* Header : liens de nav lisibles (bat la spécificité ID de nav.css) */
body.tc-dark #site-header{background:#111c30;border-bottom:1px solid #243449;}
body.tc-dark #site-header .nav-logo-name{color:#e8eef6;font-weight:800;}
body.tc-dark #site-header .nav-logo-sub{color:#9fb0c3;}
body.tc-dark #site-header .nav-links a{color:#cbd5e1;font-weight:600;}
body.tc-dark #site-header .nav-links a:hover{color:#fff;}
body.tc-dark #site-header .nav-links a[aria-current]{color:#fff;}
body.tc-dark #site-header .nav-links a[aria-current]::after,
body.tc-dark #site-header .nav-links a:hover::after{background:#3b82f6;}
body.tc-dark #site-header .nav-toggle span{background:#cbd5e1;}
/* Bouton « Déconnexion » de la console : rendu comme un lien de navigation, pas comme un bouton de
   formulaire (il vit dans un <form> POST protégé par CSRF — un GET ne doit pas déconnecter). */
#site-header .nav-links li.nav-logout form{margin:0;display:flex;}
#site-header .nav-links li.nav-logout button{
  display:inline-flex;align-items:center;gap:6px;background:none;border:0;cursor:pointer;
  font:inherit;color:#cbd5e1;padding:6px 10px;border-radius:8px;}
#site-header .nav-links li.nav-logout button:hover{color:#fff;background:rgba(255,255,255,.08);}
@media (max-width:1080px){
  #site-header .nav-drawer .nav-links li.nav-logout button{width:100%;justify-content:center;padding:13px 8px;}
}
/* Tiroir mobile de la console (≤900 px) : nav.css le peint en BLANC, ce qui donnait des libellés
   gris pâle illisibles sur le thème sombre. On le repasse aux couleurs de la console. */
@media (max-width:900px){
  body.tc-dark #site-header .nav-drawer{
    background:#111c30;
    border-bottom:1px solid #243449;
    box-shadow:0 12px 24px rgba(0,0,0,.45);
  }
  body.tc-dark #site-header .nav-drawer .nav-links{gap:2px;}
  body.tc-dark #site-header .nav-drawer .nav-links a{
    color:#e2e8f0;
    display:block;
    padding:13px 8px;
    border-radius:9px;
  }
  body.tc-dark #site-header .nav-drawer .nav-links a:hover,
  body.tc-dark #site-header .nav-drawer .nav-links a:focus-visible{background:#1b2942;color:#fff;}
  /* Page courante : fond bleuté plutôt que le seul soulignement, invisible dans un tiroir. */
  body.tc-dark #site-header .nav-drawer .nav-links a[aria-current]{background:#1d3557;color:#fff;}
  body.tc-dark #site-header .nav-drawer .nav-links a[aria-current]::after{display:none;}
}

/* Flash : plus de fond vert/rouge clair criard en sombre */
body.tc-dark .tc-flash{background:#16233b;border:1px solid #2b3b53;color:var(--text);}
body.tc-dark .tc-flash.ok{background:#12261c;border-color:#1f5137;color:#4ade80;}
body.tc-dark .tc-flash.err{background:#2a1618;border-color:#5b2a2c;color:#f87171;}

/* Agenda : calendrier sombre + libellés latéraux (heures) contrastés */
body.tc-dark .cal{background:#0f1a2e;border-color:#243449;}
body.tc-dark .cal-axis{border-right-color:#243449;}
body.tc-dark .cal-col{border-right-color:#243449;}
body.tc-dark .cal-colh,body.tc-dark .cal-corner{background:#16233b;border-bottom-color:#243449;}
body.tc-dark .cal-colh{color:#c3d0e0;}
body.tc-dark .cal-colh b{color:#e8eef6;}
body.tc-dark .cal-col.today{background:#16233b;}
body.tc-dark .cal-col.today .cal-colh{background:#1e3050;}
body.tc-dark .cal-colh.today b{color:#fca5a5;}
body.tc-dark .cal-h{color:#c3d0e0;font-weight:600;}          /* heures des côtés — contraste renforcé */
body.tc-dark .cal-line{border-top-color:#1c2740;}

/* Modales de l'agenda en sombre */
body.tc-dark .md{background:#1a2740;color:var(--text);}
body.tc-dark .md label.lb{color:#c3d0e0;}
body.tc-dark .md select,body.tc-dark .md input[type=time]{background:#0f1a2e;color:var(--text);border-color:#2b3b53;}
body.tc-dark .canal-pick label{color:#e8eef6;border-color:#2b3b53;}
body.tc-dark .ov{background:rgba(3,10,22,.6);}

/* Cartes / textes latéraux plus lisibles */
body.tc-dark .tc-sub,body.tc-dark .tc-hint{color:#a8b6c8;}
body.tc-dark .tc-card{background:#16233b;border-color:#243449;}

/* Consultations du jour — thème sombre. Les 3 états sont codés en dur en CLAIR dans le <style>
   inline de jour.php (#eafaf1 / #cdeede / #f1f3f5) : en sombre, le texte clair devenait
   illisible sur fond quasi blanc. On rejoue les états en teintes translucides, posées sur le
   fond #16233b des cartes. Sélecteurs plus spécifiques → ils gagnent sur le <style> inline. */
body.tc-dark .jour-tbl tr.row-todo{background:rgba(34,197,94,.13);}
body.tc-dark .jour-tbl tr.row-todo:hover{background:rgba(34,197,94,.20);}
body.tc-dark .jour-tbl tr.row-live{background:rgba(34,197,94,.26);}
body.tc-dark .jour-tbl tr.row-live:hover{background:rgba(34,197,94,.34);}
body.tc-dark .jour-tbl tr.row-todo td,body.tc-dark .jour-tbl tr.row-live td{color:#e7f1ea;}
body.tc-dark .jour-tbl tr.row-todo .cell-title b,
body.tc-dark .jour-tbl tr.row-live .cell-title b{color:#f4f9f6;}
body.tc-dark .jour-tbl tr.row-done{background:rgba(148,163,184,.10);}
body.tc-dark .jour-tbl tr.row-done:hover{background:rgba(148,163,184,.16);}
body.tc-dark .jour-tbl tr.row-done td{color:#93a3b8;}
body.tc-dark .jour-tbl tr.row-done .cell-title b{color:#aebdd0;}
body.tc-dark .jstat-live{color:#4ade80;}
body.tc-dark .jstat-live .consult-dot{background:#4ade80;}

/* Modale d'envoi de documents : tout centre. Le bouton de fermeture sort du flux pour que le
   titre soit centre sur la largeur de la modale et non sur l'espace restant a gauche du X. */
.iv-sheethead{position:relative;justify-content:center;text-align:center;}
.iv-sheethead .iv-close{position:absolute;right:0;top:50%;transform:translateY(-50%);}
[dir=rtl] .iv-sheethead .iv-close{right:auto;left:0;}   /* croix de fermeture côté début de ligne en RTL (he/ar) */
/* La croix est hors flux : sans réserve symétrique, la fin du titre passait DESSOUS et le
   patient lisait « …au méd… ». 44px = la croix (40) plus une respiration. La taille est
   réduite d'un cran pour que la réserve ne coûte pas une ligne de plus. */
.iv-sheettitle{justify-content:center;padding-inline:44px;font-size:.95rem;line-height:1.25;}
.iv-sheetbody{text-align:center;}
.iv-sheetbody .tc-upbtn{margin-inline:auto;}
.iv-sheetbody .tc-uphint,.iv-sheetbody .tc-upmsg{text-align:center;}
.iv-sheetbody .tc-uplist{align-items:center;}
.iv-sheetbody .tc-uplist li{text-align:left;width:100%;max-width:360px;}

/* Console de consultation en sombre : les panneaux central et droit sont CLAIRS par design
   (#f4f7fb), mais heritaient des variables de body.tc-dark -> texte clair sur fond clair.
   On restaure la palette claire a l'interieur de ces deux panneaux uniquement. */
body.tc-dark .consult-center,body.tc-dark .consult-right{
  --navy:#003366; --blue:#007ACC; --blue-light:#e8f4fd; --accent:#005fa3;
  --text:#1a2535; --text-light:#4a5568; --white:#fff; --gray-bg:#f7f9fc;
  --border:#dde8f0; --ok:#0a8a4a; --err:#c0392b;
  color:#1a2535;
}
body.tc-dark .consult-center .tc-hint,body.tc-dark .consult-right .tc-hint,
body.tc-dark .consult-center .tc-sub,body.tc-dark .consult-right .tc-sub{color:#4a5568;}
body.tc-dark .consult-center .tc-card,body.tc-dark .consult-right .tc-card{background:#fff;border-color:#dde8f0;}
body.tc-dark .consult-center input,body.tc-dark .consult-center select,body.tc-dark .consult-center textarea,
body.tc-dark .consult-right input,body.tc-dark .consult-right select,body.tc-dark .consult-right textarea{
  background:#fff;color:#1a2535;border-color:#dde8f0;}

/* Salle video : plus de footer -> on recentre sur toute la hauteur utile, et on elargit la
   colonne (le plafond .tc-wrap a 680px etait ce qui bridait la video, pas le calcul en vh).
   Le max-width de la video reste exprime en dvh : en fenetre basse elle retrecit d'elle-meme
   au lieu de deborder, et en fenetre etroite le 100% prend le relais. */
.tc-page-salle .tc-wrap{max-width:min(820px,100%);padding-bottom:22px;min-height:calc(100dvh - 96px);}
.tc-page-salle .tc-video{max-width:min(100%, calc((100dvh - 200px) * 16 / 9));}
@media(max-width:700px){
  .tc-page-salle .tc-wrap{padding-bottom:14px;min-height:calc(100dvh - 76px);}
  .tc-page-salle .tc-video{max-width:min(100%, calc((100dvh - 160px) * 16 / 9));}
}

/* Carte d'envoi de documents : quand il n'y a ni fichier ni message, la liste et la ligne de
   statut laissaient un vide d'une centaine de pixels en bas de la carte. Vides, elles
   disparaissent — la carte se referme sur son contenu. */
.tc-uplist:empty{display:none;margin:0;}
.tc-upmsg:empty{display:none;margin:0;min-height:0;}

/* == Visio patient PLEIN ECRAN immersif (classe .tc-incall posee sur <html> pendant l'appel) ==
   La video occupe tout l'ecran ; Jitsi gere l'orientation (VIDEO_LAYOUT_FIT:'nocrop' = rien rogne :
   portrait iPhone remplit, paysage Mac boite sans coupe). Barre Jitsi flottante dans l'iframe ;
   bouton "Ajouter un document" flottant en bas a droite (au-dessus de la barre Jitsi). */
html.tc-incall{overflow:hidden;}
html.tc-incall #videoBox.tc-video{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;aspect-ratio:auto;margin:0;border-radius:0;z-index:1000;background:#0b1523;}
html.tc-incall #videoBox.tc-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
html.tc-incall #ivBar.iv-belowbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 78px);margin:0;z-index:1002;display:flex;}
html.tc-incall #ivBar .tc-btn{border-radius:26px;box-shadow:0 6px 18px rgba(0,0,0,.45);padding:11px 18px;}
/* Paysage mobile : pilote « ajouter un fichier » collee au bas (le +78px du portrait la remontait au milieu) */
@media (orientation:landscape) and (max-height:600px){
  html.tc-incall #ivBar.iv-belowbar{bottom:calc(env(safe-area-inset-bottom,0px) + 14px);left:auto;right:14px;transform:none;}
}
/* La feuille « envoyer un document » doit passer DEVANT la visio. L'hôte vidéo monte à
   2147483000 (tc-visio.css) : à 1003 la feuille s'ouvrait DERRIÈRE l'image, si bien que le
   trombone de la barre d'outils paraissait mort — rien ne se passait à l'écran. */
html.tc-incall .iv-sheetwrap{z-index:2147483100;}

/* Indicateur présence patient (console médecin) 2026-08-02 */
.cfield.presence{font-weight:700;}
.presdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#c0c6cf;vertical-align:middle;margin-right:6px;transition:background .2s,box-shadow .2s;}
.presdot.on{background:#12924a;box-shadow:0 0 0 3px rgba(18,146,74,.18);}

/* MOBILE : cellules du tableau du jour -> repli multi-lignes au lieu de troncature (motif long) */
@media(max-width:640px){
  .jour-tbl td{white-space:normal;overflow:visible;text-overflow:clip;}
}

/* Encadré « Ce n'est pas moi » (étape profil) — numéro réattribué/partagé, porté de NG 11/08/2026 */
.tc-idcheck{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 14px;padding:12px 16px;
  background:#fff8e6;border:1.5px solid #f3d99b;border-radius:12px;}
.tc-idcheck p{flex:1 1 220px;margin:0;font-size:.92rem;line-height:1.6;color:#5c4405;}
.tc-idcheck form{flex:0 0 auto;margin:0;}
.tc-idcheck-ico{flex:0 0 auto;display:inline-flex;color:#a76a00;margin-top:1px;}
.tc-idcheck-btn{padding:8px 14px;font-size:.88rem;}
