/* ==========================================================================
   PORTALES EXTERNOS (14 oct 2026)
   Médicos, convenios, laboratorios de referencia, pacientes y consulta pública
   con UNA sola identidad: la del laboratorio (azul y naranja del logo).
   Depende de style.css (fuentes y variables base) y de _marca_css.html (--primary).
   ========================================================================== */
:root{
  --pt-tinta:#0B2A3C;          /* azul noche: encabezado y títulos */
  --pt-tinta-2:#123B52;
  --pt-azul:var(--primary, #08AEEA);
  --pt-acento:#E8650A;         /* naranja del logo */
  --pt-fondo:#F2F5F8;
  --pt-carta:#FFFFFF;
  --pt-borde:#E2E8EE;
  --pt-suave:#F6F8FA;
  --pt-texto:#14232E;
  --pt-mudo:#5F7280;
  --pt-ok:#0E8A5F;   --pt-ok-f:#E3F5EC;
  --pt-pend:#B45309; --pt-pend-f:#FDF1E1;
  --pt-mal:#B3261E;  --pt-mal-f:#FCEBEA;
  --pt-radio:14px;
  --pt-sombra:0 1px 2px rgba(11,42,60,.05), 0 6px 18px rgba(11,42,60,.06);
}
[data-theme="dark"]{
  --pt-fondo:#0C141B; --pt-carta:#121D26; --pt-borde:#22313D; --pt-suave:#16232E;
  --pt-texto:#E6EEF3; --pt-mudo:#93A6B4;
  --pt-ok:#4ADE9B; --pt-ok-f:rgba(74,222,155,.12);
  --pt-pend:#F5B454; --pt-pend-f:rgba(245,180,84,.12);
  --pt-mal:#F28B82; --pt-mal-f:rgba(242,139,130,.12);
  --pt-sombra:0 1px 2px rgba(0,0,0,.3);
}

body.pt-body{margin:0; background:var(--pt-fondo); color:var(--pt-texto); font-family:Lato, system-ui, sans-serif;
  -webkit-font-smoothing:antialiased; min-height:100vh}
.pt-body h1,.pt-body h2,.pt-body h3{font-family:Poppins, Lato, sans-serif; color:var(--pt-texto); letter-spacing:-.01em}
.pt-body a{color:var(--pt-azul)}

/* ---------- Encabezado ---------- */
.pt-top{position:sticky; top:0; z-index:40; color:#fff;
  background:linear-gradient(110deg, var(--pt-tinta) 0%, var(--pt-tinta-2) 62%, color-mix(in srgb, var(--pt-azul) 55%, var(--pt-tinta)) 100%);
  box-shadow:0 2px 10px rgba(11,42,60,.18)}
.pt-top::after{content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:linear-gradient(90deg, var(--pt-azul) 0 70%, var(--pt-acento) 70% 100%)}
.pt-top-in{max-width:1180px; margin:0 auto; padding:12px 20px 14px; display:flex; align-items:center; gap:14px}
.pt-logo{width:42px; height:42px; border-radius:11px; background:#fff; display:grid; place-items:center; flex-shrink:0;
  box-shadow:0 2px 6px rgba(0,0,0,.18)}
.pt-logo img{width:32px; height:32px; object-fit:contain}
.pt-marca{min-width:0; flex:1}
.pt-marca b{display:block; font:600 15px/1.2 Poppins, sans-serif; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pt-marca span{display:block; font-size:12px; color:rgba(255,255,255,.72); letter-spacing:.02em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pt-quien{display:flex; align-items:center; gap:10px; min-width:0}
.pt-quien-txt{text-align:right; min-width:0}
.pt-quien-txt b{display:block; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:260px}
.pt-quien-txt span{font-size:11px; color:rgba(255,255,255,.7); text-transform:uppercase; letter-spacing:.08em}
.pt-avatar{width:36px; height:36px; border-radius:50%; display:grid; place-items:center; flex-shrink:0;
  background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.25); font:600 14px Poppins, sans-serif; color:#fff}
.pt-salir{display:inline-flex; align-items:center; gap:6px; padding:7px 12px; border-radius:9px; font-size:13px; font-weight:700;
  color:#fff !important; text-decoration:none; border:1px solid rgba(255,255,255,.28); background:rgba(255,255,255,.06)}
.pt-salir:hover{background:rgba(255,255,255,.14)}
.pt-salir svg{width:16px; height:16px}

/* Pestañas */
.pt-nav{background:var(--pt-carta); border-bottom:1px solid var(--pt-borde)}
.pt-nav-in{max-width:1180px; margin:0 auto; padding:0 12px; display:flex; gap:2px; overflow-x:auto; scrollbar-width:none}
.pt-nav-in::-webkit-scrollbar{display:none}
.pt-nav a, .pt-nav button{flex-shrink:0; display:inline-flex; align-items:center; gap:8px; padding:14px 14px 12px; border:0; background:none;
  font:600 14px Lato, sans-serif; color:var(--pt-mudo); text-decoration:none; cursor:pointer; border-bottom:3px solid transparent; white-space:nowrap}
.pt-nav a:hover, .pt-nav button:hover{color:var(--pt-texto)}
.pt-nav .activo{color:var(--pt-tinta); border-bottom-color:var(--pt-azul)}
[data-theme="dark"] .pt-nav .activo{color:#fff}
.pt-nav svg{width:18px; height:18px}
.pt-nav .pt-nav-n{font-size:11px; font-weight:700; padding:1px 7px; border-radius:99px; background:var(--pt-suave); color:var(--pt-mudo)}
.pt-nav .activo .pt-nav-n{background:var(--pt-azul); color:#fff}

/* ---------- Contenido ---------- */
.pt-wrap{max-width:1180px; margin:0 auto; padding:22px 20px 60px}
.pt-cabeza{display:flex; align-items:flex-end; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:16px}
.pt-cabeza h1{margin:0; font-size:22px}
.pt-cabeza p{margin:4px 0 0; color:var(--pt-mudo); font-size:14px}
.pt-carta{background:var(--pt-carta); border:1px solid var(--pt-borde); border-radius:var(--pt-radio); box-shadow:var(--pt-sombra)}
.pt-pad{padding:18px 20px}
.pt-seccion{margin:26px 0 12px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap}
.pt-seccion h2{margin:0; font-size:17px}
.pt-mudo{color:var(--pt-mudo)}
.pt-alerta{display:flex; gap:12px; align-items:flex-start; padding:14px 16px; border-radius:12px; margin-bottom:16px; font-size:14px}
.pt-alerta svg{width:20px; height:20px; flex-shrink:0; margin-top:1px}
.pt-alerta.mal{background:var(--pt-mal-f); color:var(--pt-mal); border:1px solid color-mix(in srgb, var(--pt-mal) 25%, transparent)}
.pt-alerta.info{background:color-mix(in srgb, var(--pt-azul) 9%, var(--pt-carta)); color:var(--pt-texto); border:1px solid color-mix(in srgb, var(--pt-azul) 25%, transparent)}
.pt-flash{padding:12px 16px; border-radius:12px; margin-bottom:14px; font-size:14px; background:var(--pt-suave); border:1px solid var(--pt-borde)}
.pt-flash.warning{background:var(--pt-pend-f); color:var(--pt-pend)}
.pt-flash.danger{background:var(--pt-mal-f); color:var(--pt-mal)}
.pt-flash.success{background:var(--pt-ok-f); color:var(--pt-ok)}

/* Cifras */
.pt-cifras{display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:12px; margin-bottom:6px}
.pt-cifra{background:var(--pt-carta); border:1px solid var(--pt-borde); border-radius:var(--pt-radio); padding:14px 16px; position:relative; overflow:hidden}
.pt-cifra span{display:block; font-size:11px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--pt-mudo)}
.pt-cifra b{display:block; margin-top:6px; font:700 26px/1.05 Poppins, sans-serif; color:var(--pt-texto)}
.pt-cifra small{display:block; margin-top:4px; font-size:12px; color:var(--pt-mudo)}
.pt-cifra.ok b{color:var(--pt-ok)} .pt-cifra.pend b{color:var(--pt-pend)} .pt-cifra.acento b{color:var(--pt-acento)}
.pt-cifra::before{content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--pt-borde)}
.pt-cifra.ok::before{background:var(--pt-ok)} .pt-cifra.pend::before{background:var(--pt-pend)}
.pt-cifra.azul::before{background:var(--pt-azul)} .pt-cifra.acento::before{background:var(--pt-acento)}

/* En vivo */
.pt-vivo{display:inline-flex; align-items:center; gap:8px; font-size:12px; color:var(--pt-mudo); padding:6px 11px; border-radius:99px;
  background:var(--pt-carta); border:1px solid var(--pt-borde)}
.pt-vivo i{width:8px; height:8px; border-radius:50%; background:var(--pt-ok); box-shadow:0 0 0 0 rgba(14,138,95,.5); animation:pt-latido 2.4s infinite}
.pt-vivo.pausa i{background:var(--pt-mudo); animation:none}
@keyframes pt-latido{0%{box-shadow:0 0 0 0 rgba(14,138,95,.45)} 70%{box-shadow:0 0 0 7px rgba(14,138,95,0)} 100%{box-shadow:0 0 0 0 rgba(14,138,95,0)}}

/* Botones */
.pt-btn{display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 14px; border-radius:10px; font:700 13.5px Lato, sans-serif;
  text-decoration:none !important; cursor:pointer; border:1px solid transparent; white-space:nowrap; transition:background .15s, border-color .15s}
.pt-btn svg{width:16px; height:16px; flex-shrink:0}
.pt-btn.primario{background:var(--pt-tinta); color:#fff !important}
.pt-btn.primario:hover{background:var(--pt-tinta-2)}
.pt-btn.azul{background:var(--pt-azul); color:#fff !important}
.pt-btn.acento{background:var(--pt-acento); color:#fff !important}
.pt-btn.borde{background:var(--pt-carta); color:var(--pt-texto) !important; border-color:var(--pt-borde)}
.pt-btn.borde:hover{border-color:var(--pt-azul); color:var(--pt-azul) !important}
.pt-btn.chico{padding:6px 10px; font-size:12.5px; border-radius:8px}
.pt-btn.icono{padding:7px; width:34px; height:34px}
[data-theme="dark"] .pt-btn.primario{background:var(--pt-azul)}

/* ---------- Visitas (una por orden) ---------- */
.pt-visitas{display:flex; flex-direction:column; gap:12px}
.pt-visita{background:var(--pt-carta); border:1px solid var(--pt-borde); border-radius:var(--pt-radio); box-shadow:var(--pt-sombra); overflow:hidden;
  transition:box-shadow .3s, border-color .3s}
.pt-visita.nueva{border-color:var(--pt-ok); box-shadow:0 0 0 3px var(--pt-ok-f)}
.pt-visita-cab{display:flex; align-items:center; gap:14px; padding:14px 18px; cursor:pointer; user-select:none}
.pt-visita-cab .pt-avatar{background:color-mix(in srgb, var(--pt-azul) 14%, var(--pt-carta)); color:var(--pt-tinta); border:0; width:40px; height:40px}
[data-theme="dark"] .pt-visita-cab .pt-avatar{color:#fff}
.pt-visita-quien{flex:1; min-width:0}
.pt-visita-quien b{display:block; font:600 15px/1.25 Poppins, sans-serif; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pt-visita-quien span{display:block; margin-top:2px; font-size:12.5px; color:var(--pt-mudo)}
.pt-visita-estado{display:flex; flex-direction:column; align-items:flex-end; gap:6px; flex-shrink:0}
.pt-barra{width:120px; height:5px; border-radius:99px; background:var(--pt-suave); overflow:hidden}
.pt-barra i{display:block; height:100%; border-radius:99px; background:var(--pt-ok)}
.pt-visita.parcial .pt-barra i{background:linear-gradient(90deg, var(--pt-ok), var(--pt-azul))}
.pt-chevron{width:20px; height:20px; color:var(--pt-mudo); transition:transform .2s; flex-shrink:0}
.pt-visita.abierta .pt-chevron{transform:rotate(180deg)}
.pt-visita-cuerpo{display:none; border-top:1px solid var(--pt-borde)}
.pt-visita.abierta .pt-visita-cuerpo{display:block}
.pt-examen{display:flex; align-items:center; gap:12px; padding:11px 18px; border-bottom:1px solid var(--pt-borde)}
.pt-examen:last-child{border-bottom:0}
.pt-tubo{width:10px; height:26px; border-radius:3px 3px 5px 5px; flex-shrink:0; background:var(--tapon, #9BB4C4); box-shadow:inset 0 -6px 0 rgba(0,0,0,.08)}
.pt-examen-nom{flex:1; min-width:0}
.pt-examen-nom b{display:block; font-size:14px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pt-examen-nom span{display:block; font-size:12px; color:var(--pt-mudo); margin-top:1px}
.pt-examen-acc{display:flex; gap:6px; flex-shrink:0}
.pt-visita-pie{display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px; padding:12px 18px; background:var(--pt-suave); border-top:1px solid var(--pt-borde)}

/* Estados */
.pt-estado{display:inline-flex; align-items:center; gap:6px; padding:3px 10px; border-radius:99px; font-size:12px; font-weight:700; white-space:nowrap}
.pt-estado svg{width:13px; height:13px}
.pt-estado.listo{background:var(--pt-ok-f); color:var(--pt-ok)}
.pt-estado.parcial{background:color-mix(in srgb, var(--pt-azul) 12%, var(--pt-carta)); color:color-mix(in srgb, var(--pt-azul) 70%, var(--pt-tinta))}
[data-theme="dark"] .pt-estado.parcial{color:#7CD3F6}
.pt-estado.proceso{background:var(--pt-pend-f); color:var(--pt-pend)}
.pt-estado.proceso::before{content:""; width:7px; height:7px; border-radius:50%; background:currentColor; animation:pt-parpadeo 1.6s infinite}
@keyframes pt-parpadeo{50%{opacity:.25}}

/* Personas (empleados / pacientes enviados) */
.pt-buscar{position:relative; margin-bottom:14px}
.pt-buscar input{width:100%; box-sizing:border-box; padding:12px 14px 12px 42px; border-radius:12px; border:1px solid var(--pt-borde);
  background:var(--pt-carta); color:var(--pt-texto); font-size:15px}
.pt-buscar svg{position:absolute; left:14px; top:50%; transform:translateY(-50%); width:18px; height:18px; color:var(--pt-mudo)}
.pt-personas{display:grid; grid-template-columns:repeat(auto-fill, minmax(min(260px, 100%), 1fr)); gap:12px}
.pt-persona{display:flex; align-items:center; gap:12px; padding:14px 16px; background:var(--pt-carta); border:1px solid var(--pt-borde);
  border-radius:var(--pt-radio); text-decoration:none !important; color:var(--pt-texto) !important; transition:border-color .15s, transform .15s}
.pt-persona:hover{border-color:var(--pt-azul); transform:translateY(-1px)}
.pt-persona .pt-avatar{background:color-mix(in srgb, var(--pt-acento) 12%, var(--pt-carta)); color:var(--pt-acento); border:0}
.pt-persona-txt{flex:1; min-width:0}
.pt-persona-txt b{display:block; font-size:14.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; overflow-wrap:anywhere}
.pt-persona-txt span{display:block; font-size:12.5px; color:var(--pt-mudo); margin-top:2px}

/* Paquete por fecha */
.pt-paquete{display:grid; grid-template-columns:1.1fr .9fr; gap:0; overflow:hidden}
.pt-paquete-form{padding:24px}
.pt-paquete-form h2{margin:0 0 4px; font-size:19px}
.pt-paquete-form p{margin:0 0 18px; color:var(--pt-mudo); font-size:14px}
.pt-rapidos{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px}
.pt-rapidos button{padding:7px 13px; border-radius:99px; border:1px solid var(--pt-borde); background:var(--pt-carta); color:var(--pt-texto);
  font:700 13px Lato, sans-serif; cursor:pointer}
.pt-rapidos button.activo, .pt-rapidos button:hover{border-color:var(--pt-azul); color:var(--pt-azul); background:color-mix(in srgb, var(--pt-azul) 7%, var(--pt-carta))}
.pt-fechas{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:18px}
.pt-campo{display:flex; flex-direction:column; gap:6px; font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--pt-mudo)}
.pt-campo input{padding:11px 12px; border-radius:10px; border:1px solid var(--pt-borde); background:var(--pt-carta); color:var(--pt-texto);
  font:600 15px Lato, sans-serif; letter-spacing:0; text-transform:none}
.pt-formatos{display:grid; grid-template-columns:1fr 1fr; gap:10px}
.pt-formato{display:flex; align-items:flex-start; gap:12px; padding:14px; border-radius:12px; border:1.5px solid var(--pt-borde); background:var(--pt-carta);
  cursor:pointer; text-align:left; color:var(--pt-texto); font:inherit}
.pt-formato:hover{border-color:var(--pt-azul)}
.pt-formato svg{width:30px; height:30px; flex-shrink:0; color:var(--pt-azul)}
.pt-formato b{display:block; font-size:14.5px}
.pt-formato span{display:block; font-size:12.5px; color:var(--pt-mudo); margin-top:2px}
.pt-formato.principal{background:var(--pt-tinta); border-color:var(--pt-tinta); color:#fff}
.pt-formato.principal svg{color:#7FD6F6} .pt-formato.principal span{color:rgba(255,255,255,.75)}
.pt-paquete-lado{background:linear-gradient(160deg, color-mix(in srgb, var(--pt-azul) 10%, var(--pt-carta)), var(--pt-suave)); padding:24px;
  border-left:1px solid var(--pt-borde)}
.pt-paquete-lado h3{margin:0 0 10px; font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--pt-mudo)}
.pt-paquete-lado ul{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:10px; font-size:14px}
.pt-paquete-lado li{display:flex; gap:10px; align-items:flex-start}
.pt-paquete-lado li svg{width:18px; height:18px; color:var(--pt-ok); flex-shrink:0; margin-top:1px}

/* Toast */
.pt-toast{position:fixed; left:50%; bottom:24px; transform:translate(-50%, 140%); z-index:90; display:flex; align-items:center; gap:12px;
  padding:13px 18px; border-radius:14px; background:var(--pt-tinta); color:#fff; box-shadow:0 12px 30px rgba(11,42,60,.35);
  font-size:14px; transition:transform .35s cubic-bezier(.2,.8,.2,1), opacity .35s; max-width:calc(100vw - 32px); opacity:0; visibility:hidden}
.pt-toast.ver{transform:translate(-50%, 0); opacity:1; visibility:visible}
.pt-toast i{width:30px; height:30px; border-radius:50%; background:var(--pt-ok); display:grid; place-items:center; flex-shrink:0}
.pt-toast i svg{width:17px; height:17px}
.pt-toast b{font-weight:700}

/* Vacío */
.pt-vacio{text-align:center; padding:46px 20px; color:var(--pt-mudo)}
.pt-vacio svg{width:44px; height:44px; color:var(--pt-borde); margin-bottom:10px}
.pt-vacio b{display:block; color:var(--pt-texto); font-size:15px; margin-bottom:4px}

/* Pie */
.pt-pie{max-width:1180px; margin:0 auto; padding:0 20px 34px; font-size:12px; color:var(--pt-mudo); text-align:center}

/* ---------- Páginas públicas (consulta por código, resultado por QR) ---------- */
.pt-publica{min-height:100vh; display:flex; flex-direction:column}
.pt-hero{background:linear-gradient(140deg, var(--pt-tinta) 0%, var(--pt-tinta-2) 55%, color-mix(in srgb, var(--pt-azul) 60%, var(--pt-tinta)) 100%);
  color:#fff; padding:44px 20px 120px; text-align:center; position:relative; overflow:hidden}
.pt-hero::before{content:""; position:absolute; width:520px; height:520px; right:-160px; top:-220px; border-radius:50%;
  border:60px solid rgba(255,255,255,.04)}
.pt-hero::after{content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:linear-gradient(90deg, var(--pt-azul) 0 70%, var(--pt-acento) 70%)}
.pt-hero .pt-logo{width:64px; height:64px; border-radius:16px; margin:0 auto 14px}
.pt-hero .pt-logo img{width:48px; height:48px}
.pt-hero h1{color:#fff; margin:0; font-size:28px}
.pt-hero p{margin:8px auto 0; max-width:520px; color:rgba(255,255,255,.78); font-size:15px}
.pt-consulta{max-width:520px; margin:-84px auto 0; padding:0 16px; position:relative; z-index:2; width:100%; box-sizing:border-box}
.pt-consulta .pt-carta{padding:26px}
.pt-codigo{width:100%; box-sizing:border-box; padding:16px 18px; border-radius:12px; border:2px solid var(--pt-borde); background:var(--pt-suave);
  color:var(--pt-texto); font:700 22px/1 ui-monospace, 'SF Mono', Menlo, monospace; letter-spacing:.18em; text-align:center; text-transform:uppercase}
.pt-codigo:focus{outline:none; border-color:var(--pt-azul); background:var(--pt-carta); box-shadow:0 0 0 4px color-mix(in srgb, var(--pt-azul) 15%, transparent)}
.pt-pasos{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:20px; padding-top:18px; border-top:1px solid var(--pt-borde)}
.pt-pasos > div{text-align:center; font-size:12px; color:var(--pt-mudo); line-height:1.35}
.pt-pasos i{display:grid; place-items:center; width:30px; height:30px; margin:0 auto 7px; border-radius:50%; font-style:normal;
  background:color-mix(in srgb, var(--pt-azul) 12%, var(--pt-carta)); color:var(--pt-azul); font:700 13px Poppins, sans-serif}
.pt-pasos b{display:block; color:var(--pt-texto); font-size:13px; margin-bottom:2px}
.pt-hero-volver{position:absolute; left:20px; top:18px; z-index:2; display:inline-flex; align-items:center; gap:6px; color:rgba(255,255,255,.75);
  text-decoration:none; font-size:13px; font-weight:600}
.pt-hero-volver:hover{color:#fff}
.pt-hero-volver svg{width:16px; height:16px}
.pt-hero-ceja{display:block; font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:color-mix(in srgb, var(--pt-azul) 45%, #fff); margin-bottom:6px}
.pt-hero > *:not(.pt-hero-volver){position:relative; z-index:1}
.pt-consulta-rot{display:block; font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--pt-mudo); margin-bottom:8px}
.pt-consulta-btn{width:100%; justify-content:center; margin-top:12px; padding:15px 18px; font-size:15.5px}
.pt-consulta-btn svg{width:18px; height:18px}
.pt-donde{display:flex; gap:12px; align-items:flex-start; margin-top:16px; padding:12px 14px; border-radius:12px;
  background:color-mix(in srgb, var(--pt-azul) 7%, var(--pt-carta)); font-size:13px; color:var(--pt-mudo); line-height:1.45}
.pt-donde svg{width:30px; height:30px; flex-shrink:0; color:var(--pt-azul)}
.pt-donde b{color:var(--pt-texto)}
.pt-consulta-otra{text-align:center; margin:18px 0 0; font-size:13.5px; color:var(--pt-mudo)}
.pt-consulta-otra a, .pt-consulta-pie a{color:var(--pt-azul); font-weight:700; text-decoration:none}
.pt-consulta-pie{display:flex; align-items:center; justify-content:center; gap:6px; flex-wrap:wrap; font-size:12px; color:var(--pt-mudo); margin:18px 0 34px}
.pt-consulta-pie svg{width:13px; height:13px}

/* Selector de exámenes (resultado por QR) */
.pt-examenes-chips{display:flex; gap:8px; overflow-x:auto; padding:2px 0 6px; scrollbar-width:none}
.pt-examenes-chips::-webkit-scrollbar{display:none}
.pt-examenes-chips button{flex-shrink:0; display:inline-flex; align-items:center; gap:7px; padding:8px 13px; border-radius:99px;
  border:1px solid var(--pt-borde); background:var(--pt-carta); color:var(--pt-texto); font:700 13px Lato, sans-serif; cursor:pointer}
.pt-examenes-chips button.activo{background:var(--pt-tinta); border-color:var(--pt-tinta); color:#fff}
.pt-examenes-chips button i{width:8px; height:8px; border-radius:50%; background:var(--pt-ok)}
.pt-examenes-chips button.pend i{background:var(--pt-pend)}

/* ---------- Móvil ---------- */
@media (max-width:760px){
  .pt-top-in{padding:10px 14px 12px; gap:10px}
  .pt-logo{width:36px; height:36px; border-radius:10px} .pt-logo img{width:27px; height:27px}
  .pt-quien-txt{display:none}
  .pt-salir span{display:none} .pt-salir{padding:8px}
  .pt-wrap{padding:16px 14px 80px}
  .pt-cabeza h1{font-size:19px}
  .pt-cifras{grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px}
  .pt-cifra b{font-size:22px}
  .pt-visita-cab{padding:13px 14px; gap:11px}
  .pt-barra{width:72px}
  .pt-examen{padding:11px 14px; flex-wrap:wrap}
  .pt-examen-acc{width:100%; padding-left:22px}
  .pt-examen-acc .pt-btn{flex:1}
  .pt-visita-pie{padding:12px 14px}
  .pt-visita-pie .pt-btn{flex:1}
  .pt-paquete{grid-template-columns:1fr}
  .pt-paquete-lado{border-left:0; border-top:1px solid var(--pt-borde)}
  .pt-formatos{grid-template-columns:1fr}
  .pt-hero{padding:56px 18px 110px} .pt-pasos{gap:6px} .pt-consulta .pt-carta{padding:20px}
  .pt-hero h1{font-size:23px}
}
@media print{ .pt-top, .pt-nav, .pt-vivo, .pt-toast{display:none !important} }
.pt-nav:not(:has(a, button)){display:none}

/* Filtros de período */
.pt-filtros{display:grid; grid-template-columns:minmax(0,1fr) auto auto auto; gap:12px; align-items:end; margin-bottom:14px}
.pt-filtros .pt-buscar{margin:0}
.pt-filtros .pt-rapidos{grid-column:1 / -1; margin:0}
@media (max-width:760px){
  .pt-filtros{grid-template-columns:1fr 1fr; gap:10px; padding:14px}
  .pt-filtros .pt-buscar{grid-column:1 / -1}
  .pt-filtros > .pt-btn{grid-column:1 / -1}
  .pt-filtros .pt-rapidos{flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; margin:0 -14px; padding:0 14px}
  .pt-filtros .pt-rapidos::-webkit-scrollbar{display:none}
  .pt-filtros .pt-rapidos button{flex-shrink:0}
  .pt-campo input{min-width:0; width:100%; box-sizing:border-box; font-size:14px; padding:10px}
  .pt-visita-quien b{white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical}
  .pt-visita-quien span{font-size:12px}
  .pt-barra{display:none}
  .pt-chevron{display:none}
  .pt-cabeza .pt-vivo{order:-1}
}

/* Ficha de una persona */
.pt-ficha{display:flex; align-items:center; gap:18px; flex-wrap:wrap}
.pt-ficha-avatar{width:64px; height:64px; font-size:24px; background:linear-gradient(135deg, var(--pt-azul), var(--pt-tinta)); border:0}
.pt-ficha-txt{flex:1; min-width:220px}
.pt-ficha-rotulo{font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--pt-acento)}
.pt-ficha-txt h1{margin:2px 0 4px; font-size:22px}
.pt-ficha-txt p{margin:0; color:var(--pt-mudo); font-size:14px}
.pt-ficha-acc{display:flex; gap:8px; flex-wrap:wrap}
@media (max-width:760px){ .pt-ficha-acc{width:100%} .pt-ficha-acc .pt-btn{flex:1} .pt-ficha-avatar{width:52px; height:52px; font-size:20px} }

/* Comisiones */
.pt-comision-form{display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin-top:12px}
.pt-campo select{padding:10px 12px; border-radius:10px; border:1px solid var(--pt-borde); background:var(--pt-carta); color:var(--pt-texto);
  font:600 15px Lato, sans-serif; letter-spacing:0; text-transform:none}
.pt-grafica{display:flex; align-items:flex-end; gap:12px; height:170px; padding:14px 4px 0; border-bottom:1px solid var(--pt-borde)}
.pt-grafica-col{flex:1; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:5px; position:relative; padding-bottom:22px}
.pt-grafica-col i{width:100%; max-width:44px; min-height:3px; border-radius:6px 6px 2px 2px; background:linear-gradient(180deg, var(--pt-azul), var(--pt-tinta))}
.pt-grafica-col small{font-size:11px; font-weight:700; color:var(--pt-mudo)}
.pt-grafica-col span{position:absolute; bottom:0; font-size:11px; color:var(--pt-mudo); white-space:nowrap}
@media (max-width:760px){ .pt-comision-form > *{flex:1 1 140px} .pt-grafica{gap:6px} .pt-grafica-col span{font-size:10px} }

/* ---- Paciente: cifras + tarjeta de puntos (14 oct 2026) ---- */
.pt-cifras-3{grid-template-columns:repeat(3, minmax(0,1fr))}
.pt-paciente-top{display:grid; gap:14px; margin-top:4px}
.pt-paciente-top.con-puntos{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); align-items:stretch}
.pt-paciente-top .pt-cifras{margin:0}
.pt-puntos{border-radius:16px; padding:18px 20px; color:#fff; position:relative; overflow:hidden;
  background:linear-gradient(135deg, var(--pt-acento) 0%, color-mix(in srgb, var(--pt-acento) 70%, #7a2b00) 100%);
  box-shadow:0 10px 24px color-mix(in srgb, var(--pt-acento) 28%, transparent)}
.pt-puntos::after{content:""; position:absolute; width:180px; height:180px; right:-60px; top:-70px; border-radius:50%; background:rgba(255,255,255,.12)}
.pt-puntos-rot{font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; opacity:.9}
.pt-puntos-fila{display:flex; align-items:baseline; gap:8px; margin-top:4px; flex-wrap:wrap}
.pt-puntos-fila b{font-size:34px; line-height:1; font-weight:800; letter-spacing:-.02em}
.pt-puntos-fila em{font-style:normal; margin-left:auto; font-size:12px; font-weight:700; padding:4px 11px; border-radius:99px; background:rgba(255,255,255,.22)}
.pt-puntos-barra{height:7px; border-radius:99px; background:rgba(255,255,255,.28); overflow:hidden; margin-top:14px}
.pt-puntos-barra i{display:block; height:100%; background:#fff; border-radius:99px}
.pt-puntos p{margin:8px 0 0; font-size:13px; opacity:.95}
.pt-ayuda{text-align:center; color:var(--pt-mudo); font-size:13px; margin:26px 0 0}
.pt-ayuda a{color:var(--pt-azul); font-weight:600; text-decoration:none}
@media (max-width:760px){
  .pt-paciente-top.con-puntos{grid-template-columns:1fr}
  .pt-cifras-3{grid-template-columns:repeat(3, minmax(0,1fr))}
  .pt-cifras-3 .pt-cifra small{display:none}
}
.pt-hero a.pt-hero-volver{color:rgba(255,255,255,.8)}
.pt-hero a.pt-hero-volver:hover{color:#fff}
@media (max-width:760px){ .pt-filtros .pt-rapidos{flex-wrap:wrap; overflow:visible; margin:0; padding:0} }
.pt-cifra-barra{position:absolute; left:16px; right:16px; bottom:10px; width:auto; height:4px}
.pt-doc{padding:8px 18px; font:500 11.5px ui-monospace, 'SF Mono', Menlo, monospace; color:var(--pt-mudo); border-top:1px solid var(--pt-borde); word-break:break-all}

/* Trazo de actividad diaria (portal médico, Comisiones) */
.pt-trazo-cab{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:10px}
.pt-trazo-cab h2{margin:0; font-size:16px}
.pt-trazo-cab span{font-size:12.5px; color:var(--pt-mudo)}
.pt-trazo .panel-trazo{height:110px; border-bottom:1px solid var(--pt-borde)}
.pt-trazo .panel-trazo svg{width:100%; height:100%; display:block}
.pt-trazo-eje{display:flex; justify-content:space-between; font-size:11px; color:var(--pt-mudo); margin-top:4px}

/* Vista previa del paquete por fecha (14 oct 2026) */
.pt-previa{margin:16px 0 4px; overflow:hidden; transition:opacity .2s; border:1px solid var(--pt-borde); border-radius:12px; background:var(--pt-suave)}
.pt-previa.cargando{opacity:.55}
.pt-previa-cab{padding:12px 14px}
.pt-previa-cab h3{margin:0; font-size:15px; color:var(--pt-texto)}
.pt-previa-cab span{display:block; margin-top:3px; font-size:13px; color:var(--pt-mudo)}
.pt-previa-cab span b{color:var(--pt-ok)}
.pt-previa-lista{max-height:264px; overflow-y:auto; background:var(--pt-carta); border-top:1px solid var(--pt-borde)}
.pt-previa-lista:empty{display:none}
.pt-previa-fila{display:flex; align-items:center; gap:10px; padding:9px 14px; border-top:1px solid var(--pt-borde)}
.pt-previa-fila .pt-avatar{width:32px; height:32px; font-size:13px}
.pt-previa-fila:first-child{border-top:0}
.pt-previa-txt{flex:1; min-width:0}
.pt-previa-txt b{display:block; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pt-previa-txt span{display:block; font-size:12px; color:var(--pt-mudo); margin-top:1px}
.pt-formato:disabled{opacity:.45; cursor:not-allowed; filter:grayscale(.4)}
@media (max-width:760px){ .pt-previa-fila .pt-estado{font-size:11px; padding:3px 8px} }
.pt-paquete > *{min-width:0}
.pt-paquete{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
@media (max-width:760px){ .pt-paquete{grid-template-columns:minmax(0,1fr)} }
.pt-previa-fila .pt-avatar{background:color-mix(in srgb, var(--pt-acento) 12%, var(--pt-carta)); color:var(--pt-acento); border:0; font-weight:700}

/* Paquete: lista de fechas de visita, cada una desplegable (14 oct 2026) */
.pt-dia{border-top:1px solid var(--pt-borde)}
.pt-dia:first-child{border-top:0}
.pt-dia-cab{width:100%; display:flex; align-items:center; gap:12px; padding:11px 14px; background:none; border:0; cursor:pointer;
  text-align:left; color:var(--pt-texto); font:inherit}
.pt-dia-cab:hover{background:var(--pt-suave)}
.pt-dia-fecha{width:42px; height:44px; border-radius:10px; flex-shrink:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:var(--pt-tinta); color:#fff; line-height:1}
.pt-dia-fecha b{font:700 17px Poppins, sans-serif}
.pt-dia-fecha i{font-style:normal; font-size:9.5px; font-weight:700; letter-spacing:.08em; margin-top:2px; color:color-mix(in srgb, var(--pt-azul) 55%, #fff)}
.pt-dia-chev{width:18px; height:18px; color:var(--pt-mudo); flex-shrink:0; transition:transform .2s}
.pt-dia.abierto .pt-dia-chev{transform:rotate(180deg)}
.pt-dia-cuerpo{display:none; background:var(--pt-suave); border-top:1px solid var(--pt-borde)}
.pt-dia.abierto .pt-dia-cuerpo{display:block}
.pt-dia.abierto > .pt-dia-cab{background:color-mix(in srgb, var(--pt-azul) 6%, var(--pt-carta))}
.pt-dia-cuerpo .pt-previa-fila{padding-left:24px; background:var(--pt-carta)}
.pt-dia-acc{display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:10px 14px 12px 24px; border-top:1px solid var(--pt-borde)}
.pt-dia-acc span{font-size:12.5px; font-weight:700; color:var(--pt-mudo); margin-right:auto}
.pt-previa-lista:has(.pt-dia){max-height:none}
@media (max-width:760px){ .pt-dia-cab .pt-estado{display:none} .pt-dia-cuerpo .pt-previa-fila{padding-left:14px} .pt-dia-acc{padding-left:14px} }
.pt-dia-acc span{flex-basis:100%; margin:0 0 2px}
.pt-dia-acc .pt-btn{flex:1; justify-content:center}
