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

/* 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). */
#site-header .ng-hdr-ctas{display:flex;flex-direction:column;gap:6px;flex-shrink:0;width:max-content;min-width:170px;align-items:stretch;}
#site-header a.ng-hdr-btn{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;width:100%;box-sizing:border-box;background:#007ACC;color:#fff !important;border-radius:50px;height:34px;padding:0 16px 0 10px;text-decoration:none;white-space:nowrap;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;}
#site-header a.ng-hdr-btn:hover{background:#005FA3;transform:translateY(-1px);text-decoration:none;}
#site-header .ng-hdr-btn .hb-ico{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;color:#fff;}
#site-header .ng-hdr-btn .hb-ico svg{width:100%;height:100%;display:block;}
#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;}
#site-header .ng-hdr-btn>span:last-child{flex:1;text-align:center;}
@media(max-width:640px){
  #site-header .ng-hdr-ctas{min-width:0;}
  #site-header a.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. */
#site-header .nav-logo{gap:12px;}
#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-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;}

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

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

/* ---------- 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;}
.tc-video{position:relative;width:100%;aspect-ratio:16/10;background:#0b1523;border-radius:14px;overflow:hidden;}
.tc-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
@media(max-width:700px){.tc-video{aspect-ratio:3/4;}}

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

/* 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:#fff;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{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;
  transition:border-color .15s,color .15s,background .15s;}
.tc-logout:hover{border-color:var(--err);color:var(--err);background:#fff;}
.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:#fff;}.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{height:100dvh;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;}

/* 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.25;}
.tc-doc-main{font-weight:600;color:var(--blue);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.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 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:#007ACC;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;min-height:0;padding:18px 20px;}
.caddr-head{font-weight:800;font-size:.95rem;color:#8fb4e6;display:flex;align-items: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;}
.caddr-start{display:flex;gap:8px;flex-wrap:wrap;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:#fff;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:#1a2535;font-family:inherit;min-height:0;}
.ctextarea:focus{outline:none;border-color:#007ACC;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:#007ACC;color:#fff;}
.cbtn.primary:hover{background:#005fa3;}
.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:#1a2535;background:#fff;}
.cinput:focus{outline:none;border-color:#007ACC;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:#fff;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:#007ACC;color:#005fa3;}
.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:#fff;}
.cseg input{position:absolute;opacity:0;pointer-events:none;}
.cseg label:has(input:checked){border-color:#007ACC;background:#eaf2ff;color:#005fa3;font-weight:800;}
.cseg label.sel{border-color:#007ACC;background:#eaf2ff;color:#005fa3;font-weight:800;}

/* écrans étroits : on empile (le mode consultation vise le desktop) */
@media(max-width:900px){
  #consultForm{height:auto;min-height:100dvh;}
  .consult{position:absolute;}
  .consult-body{grid-template-columns:1fr;}
  .consult-tabs{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-center{min-height:44vh;}
  .consult-right{grid-template-rows:auto auto;border-left:none;border-top:1px solid #1e2c42;}
  .consult-video{min-height:38vh;}
  .consult-cr{min-height:32vh;}
}
/* 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){
  .consult-top{height:auto;min-height:50px;flex-wrap:wrap;align-items:center;gap:3px 10px;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 100%;flex-wrap:wrap;row-gap:2px;min-width:0;}
  .consult-name{font-size:.95rem;white-space:normal;}
  .consult-warn{display:none;}                 /* alerte « X consult./7j » : redondante, masquée sur petit écran */
  .consult-timer{font-size:.95rem;}
  .consult-topbtns{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;}
  .consult-video{min-height:30vh;}
  .consult-cr{min-height:24vh;}
}

/* --- 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:#007ACC;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;}
.ded-row .cinput{margin-bottom:0;}
.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;}
