/* 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. */

:root{--navy:#003366;--blue:#007ACC;--blue-light:#e8f4fd;--accent:#005fa3;--text:#1a2535;--text-light:#4a5568;--white:#fff;--gray-bg:#f7f9fc;--border:var(--border);--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%;}

/* Header console = clone du header du site (nav.css). Le bouton « Déconnexion » reprend à
   l'identique le CTA du site (.ng-hdr-btn / .ng-hdr-ctas, définis dans ng.css non chargé ici,
   donc recopiés ci-dessous et bornés à #site-header pour ne pas déborder sur le reste de l'app). */
body:not(.ng-app-chrome) #site-header .ng-hdr-ctas{display:flex;flex-direction:column;gap:6px;flex-shrink:0;width:max-content;min-width:170px;align-items:stretch;}
body:not(.ng-app-chrome) #site-header .ng-hdr-logout{display:contents;} /* le <form> ne perturbe pas la disposition flex du bouton */
body:not(.ng-app-chrome) #site-header .ng-hdr-btn{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;width:100%;box-sizing:border-box;background:var(--blue);color:#fff !important;border:none;border-radius:50px;height:34px;padding:0 16px 0 10px;text-decoration:none;white-space:nowrap;font-family:var(--font);font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;box-shadow:0 2px 0 rgba(255,255,255,.15) inset,0 -1px 0 rgba(0,0,0,.10) inset,0 3px 10px rgba(0,122,204,.38);transition:background .2s,transform .15s;}
body:not(.ng-app-chrome) #site-header .ng-hdr-btn:hover{background:var(--accent);transform:translateY(-1px);text-decoration:none;}
body:not(.ng-app-chrome) #site-header .ng-hdr-btn .hb-ico{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;color:#fff;}
body:not(.ng-app-chrome) #site-header .ng-hdr-btn .hb-ico svg{width:100%;height:100%;display:block;}
body:not(.ng-app-chrome) #site-header .ng-hdr-btn .hb-sep{width:1px;height:16px;background:rgba(255,255,255,.55);margin:0 9px 0 8px;flex-shrink:0;}
body:not(.ng-app-chrome) #site-header .ng-hdr-btn>span:last-child{flex:1;text-align:center;}
@media(max-width:640px){
  body:not(.ng-app-chrome) #site-header .ng-hdr-ctas{min-width:0;}
  body:not(.ng-app-chrome) #site-header .ng-hdr-btn{height:30px;font-size:.72rem;padding:0 13px 0 9px;}
}
/* 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;}

/* ---------- structure ---------- */
.tc-topbar{background:var(--white);border-bottom:1px solid var(--border);padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;z-index:50;}
.tc-brand{display:flex;flex-direction:column;line-height:1.15;}
.tc-brand b{color:var(--navy);font-size:1rem;}
.tc-brand span{color:var(--text-light);font-size:.75rem;}
.tc-topbar .right{display:flex;gap:14px;align-items:center;font-size:.85rem;}
.tc-logout-form{display:inline;margin:0;}
.tc-logout-form button{background:none;border:none;padding:0;margin:0;color:var(--blue);font-family:var(--font);font-size:inherit;cursor:pointer;}
.tc-logout-form button:hover{color:var(--navy);text-decoration:underline;}
.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);}
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;}
@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:56px;}
.tc-tick{position:absolute;top:15px;right:16px;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);}

/* 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:7px 16px;background:var(--white);cursor:pointer;font-size:.88rem;}
.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);}}
.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:9px 13px;background:var(--white);cursor:pointer;text-align:center;min-width:74px;}
.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:10px 4px;text-align:center;background:var(--white);cursor:pointer;font-weight:700;color:var(--navy);font-size:.95rem;}
.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:46%;flex-shrink:0;}
.tc-phone input{flex:1;min-width:0;}

/* ---------- OTP ---------- */
.tc-otp input{letter-spacing:.5em;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-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.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;}
/* visite : deux boutons superposés pleine largeur (bleu « discuter » au-dessus, rouge « annuler » en dessous) */
.pt-rdv .tc-actions.pt-stack{flex-direction:column;align-items:stretch;gap:8px;}
/* 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;}}
.pt-stack > .tc-btn, .pt-stack > form{width:100%;}
.pt-stack > form .tc-btn{width:100%;}
.pt-stack .tc-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;}

/* ---------- Bénéficiaire (titulaire « Moi » / enfant) : pastille + filtre par personne ---------- */
.pt-bene{display:inline-flex;align-items:center;gap:4px;font-size:.76rem;font-weight:700;padding:1px 8px;border-radius:99px;white-space:nowrap;vertical-align:middle;line-height:1.5;}
.pt-bene svg{width:13px;height:13px;flex-shrink:0;}
.pt-bene.self{background:var(--blue-light);color:var(--blue);}
.pt-bene.child{background:#e7f7ef;color:var(--ok);}
.pt-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;}
.pt-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font);font-size:.86rem;font-weight:600;padding:6px 14px;border-radius:99px;border:1.5px solid var(--border);background:var(--white);color:var(--text-light);cursor:pointer;transition:border-color .13s,color .13s,background .13s;}
.pt-chip svg{width:14px;height:14px;flex-shrink:0;}
.pt-chip:hover{border-color:var(--blue);color:var(--blue);}
.pt-chip.active{background:var(--navy);border-color:var(--navy);color:#fff;}

/* ---------- 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);}
/* Reçus : drapeaux de téléchargement — centrés (H et V) entre le nom et la date, un peu plus grands
   sans grossir la ligne (la hauteur de ligne est fixée par la cellule titre). */
.rc-flags{text-align:center;white-space:nowrap;vertical-align:middle;line-height:0;}
.rc-flags .tc-flag{width:19px;height:19px;margin:0 2px;box-shadow:none;vertical-align:middle;}

/* 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;}

/* ---------- 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 patient : vidéo plein écran ---------- */
/* Visio patient plein écran : doit recouvrir le header (z-index 1000), sinon il rogne le haut de l'appel. */
.tc-video--full{position:fixed;inset:0;z-index:2000;width:100vw;height:100dvh;
  aspect-ratio:auto;border-radius:0;background:#0b1523;}
.tc-video--full iframe{position:absolute;inset:0;width:100%;height:100%;border: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;}
  /* 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;}
  .tc-table td.rc-flags{justify-content:center;}
}

/* badges statut */
.tc-badge{display:inline-block;border-radius:99px;padding:3px 11px;font-size:.75rem;font-weight:800;}
.tc-badge.confirmed{background:var(--blue-light);color:var(--accent);}
.tc-badge.waiting{background:#fff3cd;color:#7a5c00;}
.tc-badge.in_progress{background:#e6f7ee;color:var(--ok);}
.tc-badge.completed{background:#eef1f5;color:var(--text-light);}
.tc-badge.cancelled,.tc-badge.no_show{background:#fdecea;color:var(--err);}
/* 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:13%;} .jour-tbl col.c-heure{width:10%;} .jour-tbl col.c-patient{width:28%;}
.jour-tbl col.c-motif{width:27%;} .jour-tbl col.c-type{width:10%;} .jour-tbl col.c-statut{width:12%;}
/* 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:left;}
/* 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;}

/* Nav console : intégrée au header du site (nav.css), voir _top.php branche admin. */

/* documents / listes */
.tc-doclist{list-style:none;}
.tc-doclist li{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--border);font-size:.92rem;}
.tc-doclist li:last-child{border-bottom:none;}

/* 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;}

/* pied de page léger */
.tc-foot{max-width:680px;margin:0 auto;padding:0 16px 40px;color:var(--text-light);font-size:.78rem;text-align:center;}
.tc-foot a{color:var(--text-light);text-decoration:underline;}

/* impression (reçus / CR) */
@media print{.tc-topbar,.tc-actions,.tc-staging,.noprint{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;} /* pas de zoom auto iOS */

/* barre du haut : encoches iPhone + compacité */
.tc-topbar{padding:10px 14px;
  padding-left:max(14px, env(safe-area-inset-left));
  padding-right:max(14px, env(safe-area-inset-right));}

/* é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 */
.tc-phone select{flex:0 0 112px;max-width:112px;padding:12px 8px;text-align:center;}

/* jours : défilement doux sans barre visible, cibles tactiles ≥44px */
.tc-days{scrollbar-width:none;}
.tc-days::-webkit-scrollbar{display:none;}
.tc-day{min-width:78px;padding:10px 12px;}
.tc-slot{padding:13px 4px;min-height:46px;}
.tc-seg label{padding:10px 16px;min-height:42px;display:inline-flex;align-items:center;}

/* salle d'attente : contenu centré verticalement, pied de page masqué */
.tc-page-salle .tc-wrap{display:flex;flex-direction:column;justify-content:center;
  min-height:calc(100dvh - 140px);}
.tc-page-salle .tc-foot{display:none;}
.tc-video--full{padding-bottom:env(safe-area-inset-bottom);}

/* ---------- 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;}
  .tc-brand b{font-size:.95rem;}
  .tc-brand span{font-size:.68rem;}
  .tc-topbar .right{font-size:.8rem;gap:10px;white-space:nowrap;}

  /* 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-doclist li{flex-wrap:wrap;font-size:.88rem;}
  .tc-waiting{padding:26px 12px;}
  .tc-waiting .pulse{width:64px;height:64px;font-size:1.7rem;}
  .tc-foot{font-size:.72rem;padding-bottom:calc(28px + env(safe-area-inset-bottom));}
}

/* 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-doclist svg.tc-ico{color:var(--blue);}
.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;}
i.tc-dot.on{background:var(--ok);animation:tcpulse 1.6s infinite;}
i.tc-dot.red{background:var(--err);animation:none;}

/* ---------- logo dans la barre de l'application ---------- */
.tc-brand{flex-direction:row;align-items:center;gap:10px;}
.tc-brand-logo{height:44px;width:auto;display:block;flex-shrink:0;}
.tc-brand-txt{display:flex;flex-direction:column;line-height:1.15;}

/* ============================================================================
   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;}

/* 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);}

/* Reçus multilingues : chaque reçu = un bloc « propre » qui ne s'éclate jamais sur
   plusieurs lignes. Ligne 1 = n° de reçu (gras) + intitulé (tronqué si besoin) + date ;
   ligne 2 = les 5 drapeaux de téléchargement, toujours sur UNE seule ligne. Le
   « display:block » l'emporte volontairement sur « .tc-doclist li{display:flex} ». */
.tc-doclist .tc-doc-item{display:block;padding:13px 2px;border-bottom:1px solid var(--border,#e6edf5);font-size:.92rem;}
.tc-doclist .tc-doc-item:last-child{border-bottom:none;}
.tc-doc-row{display:flex;align-items:flex-start;gap:9px;min-width:0;}
.tc-doc-row>svg.tc-ico{flex-shrink:0;margin-top:2px;}
.tc-doc-link{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;text-decoration:none;line-height:1.35;}
/* Libellé de document : sobre, comme les tableaux de la console admin (texte foncé, pas de lien bleu criard). */
.tc-doc-main{font-weight:600;color:var(--navy);font-size:.92rem;}
.tc-doc-link:hover .tc-doc-main{text-decoration:underline;}
.tc-doc-meta{font-size:.78rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
.tc-doc-date{flex-shrink:0;font-size:.76rem;color:var(--text-light);white-space:nowrap;margin-inline-start:auto;padding-top:2px;}
.tc-doc-langs{display:flex;align-items:center;flex-wrap:nowrap;gap:8px;margin-top:10px;padding-inline-start:29px;}
.tc-doc-langs .tc-hint{margin:0;white-space:nowrap;}
.tc-flag{display:inline-flex;flex-shrink:0;width:24px;height:24px;border-radius:50%;overflow:hidden;border:1px solid var(--border,#dbe4ef);box-shadow:0 1px 3px rgba(0,51,102,.14);transition:transform .12s ease;}
.tc-flag:hover{transform:scale(1.14);}
.tc-flag img{width:100%;height:100%;object-fit:cover;display:block;}
/* petits écrans : drapeaux compacts, indent retiré, n° de reçu toujours entier */
@media(max-width:400px){
  .tc-doc-langs{gap:7px;padding-inline-start:0;}
  .tc-doc-langs .tc-hint{font-size:.74rem;}
  .tc-flag{width:22px;height:22px;}
  .tc-doc-main{font-size:.88rem;}
  .tc-doc-date{font-size:.72rem;}
}
/* écrans minuscules (≤350px) : on masque la date d'émission (redondante, présente
   dans le PDF) pour laisser le n° de reçu s'afficher en entier sur une seule ligne. */
@media(max-width:350px){ .tc-doc-date{display:none;} }

/* ============================================================================
   MODE CONSULTATION (plein écran, statut « en cours ») — console type Qare.
   Colonne d'onglets fixe · dossier · vidéo (quart sup. droit) · CR (quart inf. droit).
   ============================================================================ */
/* Console admin — « Déconnexion » : sur mobile (≤900px) au BAS du tiroir déroulant plutôt que toujours visible. */
.admin-drawer-logout{display:none;}
@media(max-width:900px){
  #site-header .ng-hdr-ctas{display:none;}
  #site-header .admin-drawer-logout{display:block;width:100%;margin-top:10px;padding-top:12px;border-top:1px solid rgba(0,51,102,.14);}
  #site-header .admin-drawer-logout .ng-hdr-btn{width:100%;justify-content:center;}
}

/* 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;}

/* 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;}
/* Visite à domicile : panneau adresse + itinéraire à la place de la vidéo (fond clair) */
.consult-addr{background:#0e1b2f;color:#dbe6f2;display:flex;flex-direction:column;gap:12px;justify-content:center;align-items:center;text-align:center;min-height:0;padding:18px 20px;}
.caddr-head{font-weight:800;font-size:.95rem;color:#8fb4e6;display:flex;align-items:center;justify-content:center;gap:7px;}
.caddr-head svg{width:16px;height:16px;}
.caddr-line{font-size:1.15rem;font-weight:700;color:#fff;line-height:1.35;margin:0;}
.caddr-itin{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;align-items:center;}
/* les 3 boutons (Waze/Maps/Appeler) : MÊME gabarit → même hauteur (Waz était plus haut : base .cbtn sans .small) */
.caddr-itin .cbtn{margin-top:0;padding:8px 12px;font-size:.8rem;line-height:1.2;border:1px solid transparent;box-sizing:border-box;}
.caddr-itin .cbtn.ghost.small{margin-top:0;border-color:var(--border);}
.caddr-itin .cbtn.primary{border-color:var(--blue);}
.caddr-start{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:6px;padding-top:12px;border-top:1px solid #1e2c42;}
.cvid-start{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:6px;}
.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;}

/* 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;}
.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,.consult-addr{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;}
  .consult-addr{min-height:0;}
  /* 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{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;}
.ded-row .dlab{display:flex;flex-direction:column;gap:4px;margin-top:8px;flex:0 0 auto;}
.ded-row .cinput{margin-bottom:0;}
/* Dans une .dlab en colonne, flex-basis s'applique à la HAUTEUR : sans ce garde-fou, .cinput-sm
   (flex:0 0 100px) rendait Taille/Poids en cases de ~100px de haut. On force largeur fixe + hauteur naturelle. */
.ded-row .cinput-sm{flex:0 0 auto;width:90px;padding-top:6px;padding-bottom:6px;}
.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-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;}
/* (ancien bouton flottant conservé pour compat CSS, plus utilisé) */
.iv-fab{position:fixed;top:calc(env(safe-area-inset-top,0px) + 14px);right:calc(env(safe-area-inset-right,0px) + 14px);z-index:2100;
  align-items:center;gap:8px;height:46px;padding:0 18px 0 15px;border:none;border-radius:999px;cursor:pointer;
  background:rgba(18,26,42,.6);color:#fff;font-family:var(--font);font-weight:700;font-size:.92rem;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 6px 20px rgba(0,0,0,.3);
  transition:background .15s,transform .12s;}
.iv-fab:hover{background:rgba(18,26,42,.82);}
.iv-fab:active{transform:scale(.95);}
.iv-fab svg{color:#fff;flex-shrink:0;}
.iv-fab-label{white-space:nowrap;}
@media(max-width:520px){ .iv-fab-label{display:none;} .iv-fab{width:52px;height:52px;padding:0;justify-content:center;} } /* mobile : pastille ronde tactile */
[dir=rtl] .iv-fab{right:auto;left:calc(env(safe-area-inset-left,0px) + 14px);} /* RTL : bouton flottant en haut à gauche (miroir) */

/* 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 */
.iv-sheethead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;}
.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;}

/* Encaissements : pastille VAD / TC devant la date (colonne Consultation). */
.enc-canal{display:inline-block;font-size:.68rem;font-weight:800;color:var(--blue);background:var(--blue-light);border-radius:5px;padding:1px 6px;margin-inline-end:6px;letter-spacing:.03em;vertical-align:middle;}

/* 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-chip.active{background:var(--blue);border-color:var(--blue);}
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);}
