:root{
  /* Morado como acento de marca (a Vannia le gusta ese acento) sobre una base
     neutra más cálida y tipografía con más carácter — el objetivo de este
     rediseño es que se sienta menos "plantilla SaaS genérica" y más un
     producto propio, sin tocar ningún id/clase que use app.js. */
  --morado: #A365D1;
  --morado-claro: #B686DA;
  --morado-oscuro: #6f3fa0;
  --morado-50: #F7F2FC;
  --morado-100: #EFE4F8;
  --bg: #FAF9F8;
  --card: #ffffff;
  --text: #17151A;
  --muted: #6B6572;
  --border: #E9E5EC;
  --border-soft: #F0EDF3;
  --panel: #F6F3F9;
  --panel-hover: #EFE9F5;
  --green: #2E7D5B;
  --red: #B3261E;
  --amber: #9A6700;
  --radius-lg: 16px;
  --radius-md: 10px;
  --radius-sm: 7px;
  --shadow-card: 0 1px 2px rgba(23,21,26,.04), 0 8px 24px -16px rgba(111,63,160,.18);
  --shadow-pop: 0 12px 40px -12px rgba(111,63,160,.28);
  --font-display: "Manrope", "Plus Jakarta Sans", -apple-system, sans-serif;
  font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
*{box-sizing:border-box;}
[hidden]{display:none !important;}
body{
  margin:0;color:var(--text);font-family:inherit;-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(900px 420px at 100% -10%, var(--morado-50) 0%, transparent 60%),
    radial-gradient(700px 380px at -5% 0%, var(--morado-50) 0%, transparent 55%),
    var(--bg);
  background-attachment:fixed;
}

/* ---- Sidebar ----
   #app es un contenedor flex en fila: el sidebar a la izquierda, fijo, y el
   contenido (las .view) ocupando el resto. Se mantiene la clase .topbar en
   el HTML para no tocar nada de app.js — solo cambia lo visual. */
#app{display:flex;align-items:stretch;min-height:100vh;}
.topbar{
  --sb-line: rgba(255,255,255,.09);
  display:flex;flex-direction:column;
  background:
    radial-gradient(480px 320px at 0% 0%, rgba(255,255,255,.08) 0%, transparent 60%),
    radial-gradient(420px 380px at 100% 100%, rgba(182,134,218,.20) 0%, transparent 55%),
    linear-gradient(165deg, #2b1642 0%, #3d1f5c 46%, #5a2f83 100%);
  color:#fff;
  position:sticky;top:0;align-self:flex-start;height:100vh;
  flex:0 0 264px;width:264px;
  box-shadow:1px 0 0 rgba(255,255,255,.06) inset, 6px 0 30px -12px rgba(20,8,36,.5);
  z-index:40;
}

.brand{display:flex;align-items:center;gap:11px;padding:22px 18px 18px;flex:none;}
.brand-mark{
  width:34px;height:34px;border-radius:10px;flex:none;
  background:linear-gradient(150deg,#fff 0%,#e9d9f7 100%);
  box-shadow:0 3px 10px -2px rgba(0,0,0,.35);
  display:flex;align-items:center;justify-content:center;color:var(--morado-oscuro);
}
.brand-icon{font-size:32px;}
.brand-text{min-width:0;}
.brand h1{margin:0;font-family:var(--font-display);font-size:16.5px;font-weight:800;letter-spacing:-.01em;line-height:1.2;color:#fff;}
.brand h1 span{color:#d9a8f0;}
.brand p{margin:2px 0 0;font-size:10.5px;color:rgba(255,255,255,.5);letter-spacing:.02em;}
.sidebar-toggle{display:none;}

.sidebar-panel{display:contents;} /* en desktop/tablet es invisible al layout: sidebar-scroll y sidebar-account siguen como hijos directos del flex column .topbar, igual que antes */
.sidebar-backdrop{display:none;}

.sidebar-scroll{flex:1;min-height:0;overflow-y:auto;padding:2px 14px 14px;}
.sidebar-scroll::-webkit-scrollbar{width:5px;}
.sidebar-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:6px;}

.navgroup-label{
  margin:18px 10px 8px;font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;color:rgba(255,255,255,.38);
}
.topnav{display:flex;flex-direction:column;gap:3px;}
.navbtn{
  display:flex;align-items:center;gap:11px;position:relative;
  background:transparent;border:none;
  color:rgba(255,255,255,.68);padding:9px 12px 9px 14px;border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:600;
  transition:background .15s ease,color .15s ease;
  font-family:inherit;width:100%;text-align:left;
}
.navbtn::before{
  content:"";position:absolute;left:0;top:50%;translate:0 -50%;
  width:3px;height:0;border-radius:0 3px 3px 0;background:#fff;
  transition:height .18s ease;
}
.navbtn-icon{
  display:flex;align-items:center;justify-content:center;flex:none;
  width:26px;height:26px;border-radius:7px;color:rgba(255,255,255,.65);
  transition:background .15s ease,color .15s ease;
}
.navbtn:hover{background:rgba(255,255,255,.06);color:#fff;}
.navbtn.active{color:#fff;background:rgba(255,255,255,.1);}
.navbtn.active::before{height:18px;}
.navbtn.active .navbtn-icon{background:linear-gradient(150deg,#fff,#eaddf6);color:var(--morado-oscuro);box-shadow:0 2px 8px -1px rgba(0,0,0,.35);}
.navbtn-badge{
  margin-left:auto;background:#f0a63f;color:#3a2000;font-size:10px;font-weight:800;
  min-width:17px;height:17px;padding:0 5px;border-radius:20px;line-height:17px;text-align:center;
}

.sidebar-account{
  flex:none;display:flex;align-items:center;gap:10px;
  border-top:1px solid var(--sb-line);padding:14px 16px;
  background:rgba(0,0,0,.14);
}
.sidebar-account-avatar{
  width:34px;height:34px;border-radius:10px;flex:none;
  background:linear-gradient(150deg,#c893e8,#8a4fc4);color:#fff;font-weight:800;font-size:13.5px;font-family:var(--font-display);
  display:flex;align-items:center;justify-content:center;text-transform:uppercase;
  box-shadow:0 2px 8px -1px rgba(0,0,0,.4);
}
.sidebar-account-info{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1;}
.sidebar-account-email{font-size:12px;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sidebar-account-role{font-size:10.5px;color:rgba(255,255,255,.5);}
.sidebar-account-logout{
  flex:none;width:30px;height:30px;border-radius:8px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.75);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background .15s ease,color .15s ease;
}
.sidebar-account-logout:hover{background:rgba(255,255,255,.15);color:#fff;}
.card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:24px 26px;box-shadow:var(--shadow-card);margin-bottom:20px;
}
.card:last-child{margin-bottom:0;}
h2{margin:0 0 2px;color:var(--text);font-family:var(--font-display);font-size:21px;font-weight:800;letter-spacing:-.015em;}
h3{
  color:var(--morado-oscuro);border-bottom:1px solid var(--border-soft);padding-bottom:7px;margin-top:26px;
  font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-family:var(--font-display);
}
.muted{color:var(--muted);font-size:13px;}
.hint{color:var(--muted);font-size:11px;margin:2px 0 6px;}
.hint.warn{color:var(--red);font-weight:bold;}
.totalrow.warn-row td{color:var(--red);}

.view{display:none;}
.view.active{
  display:block;animation:view-in .25s ease;
  flex:1;min-width:0;max-width:1200px;margin:0 auto;width:100%;
  padding:26px 32px;
}
@keyframes view-in{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}

.btn{
  border:1px solid var(--border);background:#fff;color:var(--text);
  padding:9px 15px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:600;
  text-decoration:none;display:inline-flex;align-items:center;gap:6px;
  transition:background .15s ease,border-color .15s ease,transform .1s ease,box-shadow .15s ease;
  font-family:inherit;
}
.btn:hover{background:var(--panel);border-color:var(--morado-claro);}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--morado);color:#fff;border-color:var(--morado);box-shadow:0 4px 14px -4px rgba(163,101,209,.55);}
.btn-primary:hover{background:var(--morado-oscuro);border-color:var(--morado-oscuro);box-shadow:0 6px 18px -4px rgba(111,63,160,.55);}

.portada-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:center;}
#buscarPaciente{flex:1;min-width:220px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);}

.tbl{width:100%;border-collapse:separate;border-spacing:0;margin-top:10px;}
.tbl th,.tbl td{border-bottom:1px solid var(--border-soft);padding:11px 12px;font-size:13.5px;text-align:left;}
.tbl thead th{
  background:var(--panel);color:var(--morado-oscuro);font-weight:700;font-size:11px;
  text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);
}
.tbl thead th:first-child{border-top-left-radius:var(--radius-sm);}
.tbl thead th:last-child{border-top-right-radius:var(--radius-sm);}
.tbl.small th,.tbl.small td{padding:6px 9px;}
.tbl tbody tr{transition:background .1s ease;}
.tbl tbody tr:hover{background:var(--panel-hover);}
.totalrow{font-weight:bold;background:var(--panel);}
.adecuacionrow td{font-weight:bold;}
.th-sortable{cursor:pointer;user-select:none;white-space:nowrap;}
.th-sortable:hover{background:var(--panel-hover);}
.th-sortable .sort-arrow{color:var(--muted);font-size:10px;margin-left:4px;}
.th-sortable.sort-active .sort-arrow{color:var(--morado);}

.registro-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:10px;}
.registro-actions{display:flex;gap:8px;flex-wrap:wrap;}

.consulta-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 16px;margin-top:16px;}

.resumen-rapido{display:flex;flex-wrap:wrap;gap:10px 24px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 18px;margin-top:16px;}
.rr-item{display:flex;flex-direction:column;gap:2px;min-width:140px;}
.rr-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;}
.rr-valor{font-size:14px;color:var(--text);font-weight:600;}
.rr-alerta .rr-valor{color:var(--red);font-weight:700;}
.plantilla-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 16px;margin:14px 0 18px;}
.plantilla-picker select{width:auto;min-width:170px;}

.recetario-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px;margin-top:18px;}
.receta-card{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 18px;
  transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease;
}
.receta-card:hover{box-shadow:0 10px 24px -14px rgba(111,63,160,.35);border-color:var(--morado-claro);transform:translateY(-1px);}
.receta-grupo{
  display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--morado-oscuro);
  font-weight:700;margin-bottom:6px;background:var(--morado-100);padding:2px 8px;border-radius:20px;
}
.receta-card h4{margin:0 0 4px;color:var(--text);font-family:var(--font-display);font-size:15px;font-weight:800;}
.receta-card .hint{margin:0 0 10px;}
.receta-subtitulo{margin:12px 0 4px;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;}
.receta-card ul{margin:0;padding-left:18px;font-size:13px;color:var(--text);}
.receta-card li{margin-bottom:4px;}
.receta-prep{margin:0;font-size:13px;color:var(--text);line-height:1.55;}
.inline-label{margin:0;font-size:12px;color:var(--muted);white-space:nowrap;font-weight:600;}
.consulta-picker select{width:auto;min-width:160px;}
.btn-sm{padding:6px 11px;font-size:12px;}
.btn-danger{border-color:var(--red);color:var(--red);}
.btn-danger:hover{background:#FBEBE9;border-color:var(--red);}
.pill{margin-left:auto;background:#E4F1EA;color:var(--green);border-radius:20px;padding:4px 12px;font-size:11px;font-weight:700;}
.pill.pill-new{background:#FBF1DA;color:var(--amber);}

.seguimiento-resumen{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:16px 0 22px;}
.resumen-box{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);
  padding:16px 18px;display:flex;flex-direction:column;gap:3px;
  border-top:3px solid var(--morado-claro);
}
.resumen-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:700;}
.resumen-box b{font-size:20px;color:var(--text);font-family:var(--font-display);}
.resumen-sub{font-size:12px;color:var(--muted);}
.resumen-box-cambio{background:var(--panel-hover);border-top-color:var(--morado);}
@media (max-width:900px){.seguimiento-resumen{grid-template-columns:1fr;}}
.seguimiento-subtitle{margin:24px 0 6px;color:var(--morado-oscuro);font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-family:var(--font-display);}

.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:16px 0 22px;}
.chart-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;}
.chart-title{margin:0 0 8px;font-size:12px;color:var(--muted);font-weight:700;}
.chart-box canvas{width:100%;height:160px;display:block;}
@media (max-width:900px){.chart-grid{grid-template-columns:1fr;}}
.deltaup{color:var(--red);} .deltadown{color:var(--green);} .deltaeq{color:var(--muted);}
.cita-pronto{color:var(--amber);font-weight:bold;}

.subtabs{display:flex;gap:4px;margin:20px 0 16px;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.subtab{
  background:none;border:none;padding:10px 16px;cursor:pointer;font-size:13px;color:var(--muted);
  border-bottom:2.5px solid transparent;transition:color .15s ease,border-color .15s ease;font-weight:600;
  font-family:inherit;
}
.subtab:hover{color:var(--morado-oscuro);}
.subtab.active{color:var(--morado);border-color:var(--morado);font-weight:700;}

.tabpane{display:none;}
.tabpane.active{display:block;}

.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:26px;}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:26px;}
.inline2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

/* Las tablas (con varias columnas: pauta, macronutrientes, GEB) no se
   achican bien en pantallas de tablet — mejor que hagan scroll horizontal
   propio dentro de la tarjeta que rompan el layout de toda la página. */
.card{overflow-x:auto;}

label{display:block;font-size:12px;color:var(--muted);margin:9px 0 4px;font-weight:700;}
input,select,textarea{
  width:100%;padding:9px 11px;border:1.5px solid var(--border);border-radius:var(--radius-sm);
  font-family:inherit;font-size:13.5px;background:#fff;color:var(--text);
  transition:border-color .15s ease,box-shadow .15s ease;
}
textarea{resize:vertical;}
input:hover,select:hover,textarea:hover{border-color:var(--morado-claro);}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--morado);box-shadow:0 0 0 3.5px rgba(163,101,209,.16);
}
input:read-only,input:disabled{background:var(--panel);color:var(--muted);}

.checkbox-inline{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);margin:10px 0;cursor:pointer;font-weight:500;}
.checkbox-inline input{width:auto;}

.resultbox{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:11px 14px;margin:10px 0;}
.resultrow{display:flex;justify-content:space-between;padding:3px 0;font-size:13px;}
.resultrow b{color:var(--text);}
/* Los 3 números que la nutricionista mira primero en cada pestaña (IMC,
   Peso a utilizar, GET) se resaltan como tarjeta grande para que la
   pantalla se lea de un vistazo en vez de buscar el número entre filas
   parecidas. */
.resultbox-kpi{
  background:linear-gradient(160deg,#fff 0%,var(--morado-50) 130%);
  border:1px solid var(--morado-claro);border-left:4px solid var(--morado);
}
.resultbox-kpi .resultrow{padding:7px 0;}
.resultbox-kpi .resultrow span{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;align-self:center;}
.resultbox-kpi .resultrow b{font-size:23px;color:var(--morado-oscuro);font-family:var(--font-display);font-weight:800;}

.printfooter{text-align:center;color:var(--muted);font-size:11px;padding:24px;}
/* El pie vive fuera de #app: sin esto, al final de la página el sidebar
   (sticky dentro de #app) se cortaba y quedaba una franja blanca debajo. */
@media (min-width:901px){.printfooter{margin-left:264px;}}
@media (min-width:901px){
  .topbar{position:fixed;left:0;top:0;bottom:0;height:auto;align-self:auto;}
  #app{padding-left:264px;}
}

.rowaction{border:none;background:none;cursor:pointer;color:var(--morado);font-size:13px;font-weight:600;font-family:inherit;}
.rowaction:hover{text-decoration:underline;color:var(--morado-oscuro);}
.rowaction-danger{color:var(--red);margin-left:8px;}

/* status badges */
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;}
.badge-normal{background:#E4F1EA;color:var(--green);}
.badge-alerta{background:#FBEBE9;color:var(--red);}
.badge-media{background:#FBF1DA;color:var(--amber);}

@media print{
  .topbar,.subtabs,.registro-actions,.portada-toolbar,#view-portada,#view-recetario,.consulta-picker,.plantilla-picker,.consultas-bar,.consulta-estado-borrar,.sidebar-backdrop{display:none !important;}
  body{background:#fff;}
  .card{box-shadow:none;border:none;}
  .tabpane{display:block !important;}
}

/* Tablets grandes (más de 900 px) usan el mismo menú completo que un notebook:
   la barra solo con íconos se veía como una franja oscura sin nombres. */

@media (max-width:1024px){
  .view.active{padding:20px 22px;}
  .card{padding:20px 18px;}
  /* grid2/grid3 ya son auto-fit (minmax) — se acomodan solas sin fijar
     columnas acá, así aprovechan el ancho real disponible en vez de
     achicarse de más en una tablet grande apaisada. */

  /* Tap targets más grandes para uso táctil */
  .btn{padding:11px 17px;font-size:14px;}
  .subtab{padding:12px 14px;font-size:13.5px;}
  .rowaction{padding:6px 4px;}
  input,select,textarea{padding:11px 12px;font-size:14px;}

  .registro-head{flex-direction:column;align-items:stretch;}
  .registro-actions{justify-content:flex-start;}
  .registro-actions .btn{flex:1;min-width:110px;text-align:center;justify-content:center;}

  .portada-toolbar{flex-direction:column;align-items:stretch;}
  .portada-toolbar > *{width:100%;}
  #tblPacientes{min-width:640px;}
}

/* ---- Celular: el header queda como una barra angosta (marca + hamburguesa)
   y el menú es un panel que entra deslizando desde el borde izquierdo por
   ENCIMA del contenido (position:fixed + translateX), con un fondo oscuro
   detrás — no un acordeón que empuja la página hacia abajo. Se agrega/quita
   la clase .open en #sidebarPanel y #sidebarBackdrop desde app.js. ---- */
@media (max-width:900px){
  #app{flex-direction:column;min-height:0;}
  .topbar{
    position:sticky;top:0;flex:none;width:100%;height:auto;
    box-shadow:0 2px 16px -6px rgba(20,8,36,.45);
    z-index:80;
  }
  .brand{padding:14px 16px;}
  .brand p{display:none;}
  .sidebar-toggle{
    display:flex;align-items:center;justify-content:center;margin-left:auto;
    width:34px;height:34px;border-radius:8px;border:1px solid rgba(255,255,255,.16);
    background:rgba(255,255,255,.06);color:#fff;cursor:pointer;flex:none;
  }
  .sidebar-toggle:hover{background:rgba(255,255,255,.14);}

  .sidebar-panel{
    display:flex;flex-direction:column;
    position:fixed;top:0;left:0;bottom:0;width:280px;max-width:82vw;
    background:
      radial-gradient(480px 320px at 0% 0%, rgba(255,255,255,.08) 0%, transparent 60%),
      radial-gradient(420px 380px at 100% 100%, rgba(182,134,218,.20) 0%, transparent 55%),
      linear-gradient(165deg, #2b1642 0%, #3d1f5c 46%, #5a2f83 100%);
    box-shadow:16px 0 40px -12px rgba(10,4,20,.5);
    transform:translateX(-100%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    z-index:90;padding-top:14px;
  }
  .sidebar-panel.open{transform:translateX(0);}
  .sidebar-scroll{padding:2px 14px 10px;}

  .sidebar-backdrop{
    display:block;position:fixed;inset:0;background:rgba(15,6,28,.45);
    opacity:0;pointer-events:none;transition:opacity .28s ease;
    z-index:85; /* dentro del encabezado: bajo el panel (90), sobre el resto */
  }
  .sidebar-backdrop.open{opacity:1;pointer-events:auto;}
}
@media (max-width:520px){
  .view.active{padding:16px 14px;}
}

/* ---- Login ---- */
.login-screen{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:#efeaf5 url("/fondo.webp") center / cover no-repeat;
}
/* En pantallas angostas la foto se recorta mucho: se suaviza para que la tarjeta se lea bien */
@media (max-width:640px){
  .login-screen{background:linear-gradient(rgba(250,249,252,.55),rgba(250,249,252,.55)), #efeaf5 url("/fondo.webp") 20% center / cover no-repeat;}
}
.login-card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 36px 32px;width:100%;max-width:390px;
  box-shadow:var(--shadow-pop);display:flex;flex-direction:column;gap:4px;
  animation:login-pop .35s ease;
}
@keyframes login-pop{from{opacity:0;transform:translateY(10px) scale(.98);}to{opacity:1;transform:none;}}
.login-icon{
  width:58px;height:58px;border-radius:16px;margin:0 auto 18px;
  background:linear-gradient(135deg,var(--morado) 0%,var(--morado-oscuro) 100%);
  display:flex;align-items:center;justify-content:center;color:#fff;
  box-shadow:0 8px 20px -6px rgba(163,101,209,.6);
}
.login-card h2{margin:0 0 4px;font-family:var(--font-display);font-size:20px;text-align:center;font-weight:800;}
.login-card > p.muted{text-align:center;margin:0 0 24px;font-size:13px;}
.login-field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px;}
.login-field label{font-size:12px;font-weight:700;color:var(--muted);margin:0;}
.login-card input{
  padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:14.5px;font-family:inherit;
  transition:border-color .15s, box-shadow .15s;
}
.login-card input:focus{
  outline:none;border-color:var(--morado);box-shadow:0 0 0 3.5px rgba(163,101,209,.16);
}
.login-card .btn{
  width:100%;margin-top:10px;padding:13px;font-size:14.5px;font-weight:700;border:none;
  justify-content:center;
  transition:transform .1s, box-shadow .15s;
}
.login-card .btn-primary:active{transform:translateY(1px);}
.login-card .btn:disabled{opacity:.65;cursor:default;}
.login-error{color:var(--red);font-size:13px;margin:10px 0 0;min-height:16px;text-align:center;font-weight:600;}
.login-success{color:var(--green);font-size:13px;margin:10px 0 0;font-weight:700;}

/* ---- Inicio (dashboard): encabezado + accesos rápidos ---- */
.inicio-hero{
  display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;
  margin-bottom:20px;
}
.inicio-hero-fecha{margin:0 0 2px;font-size:12px;color:var(--muted);text-transform:capitalize;font-weight:600;}
.inicio-hero-saludo{margin:0;}
.inicio-quick{display:flex;gap:10px;flex-wrap:wrap;}
.quick-btn{
  display:flex;align-items:center;gap:8px;
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);
  padding:10px 16px;font-size:13px;font-weight:700;color:var(--text);cursor:pointer;font-family:inherit;
  box-shadow:var(--shadow-card);transition:transform .12s ease,border-color .15s ease,box-shadow .15s ease;
}
.quick-btn:hover{transform:translateY(-1px);border-color:var(--morado-claro);box-shadow:0 10px 24px -14px rgba(111,63,160,.4);}
.quick-btn-icon{
  width:22px;height:22px;border-radius:6px;background:var(--morado-100);color:var(--morado-oscuro);
  display:flex;align-items:center;justify-content:center;flex:none;
}
#qaNuevoPaciente .quick-btn-icon{background:var(--morado);color:#fff;}

.inicio-split{display:grid;grid-template-columns:1.4fr 1fr;gap:20px;margin-top:20px;}
@media (max-width:900px){.inicio-split{grid-template-columns:1fr;}}
.tbl.small-rows td{padding:8px 4px;font-size:13px;border-bottom:1px solid var(--border-soft);border-left:none;border-right:none;border-top:none;}
.tbl.small-rows tr:last-child td{border-bottom:none;}
.recientes-nombre{font-weight:700;color:var(--text);}
.recientes-meta{font-size:11.5px;color:var(--muted);}

.mini-finanzas{display:flex;flex-direction:column;gap:10px;}
.mini-finanzas > div{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border-soft);}
.mini-finanzas > div:last-child{border-bottom:none;}
.mini-finanzas b{font-size:16px;font-family:var(--font-display);}
.mini-finanzas-balance b{color:var(--morado-oscuro);font-size:19px;}

/* ---- Inicio (dashboard) / Finanzas: tarjetas KPI ---- */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px;}
.kpi-card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:18px 20px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:6px;
  border-top:3px solid var(--morado-claro);
}
.kpi-icon{
  width:32px;height:32px;border-radius:9px;background:var(--morado-100);color:var(--morado-oscuro);
  display:flex;align-items:center;justify-content:center;margin-bottom:2px;
}
.kpi-label{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;}
.kpi-valor{font-size:26px;font-weight:800;color:var(--text);font-family:var(--font-display);}
.kpi-card-warn{border-top-color:var(--red);}
.kpi-card-warn .kpi-valor{color:var(--red);}
.kpi-card-accent{border-top-color:var(--morado);background:linear-gradient(160deg,#fff 0%,var(--morado-50) 130%);}
.kpi-card-accent .kpi-valor{color:var(--morado-oscuro);}
@media (max-width:1024px){.kpi-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.kpi-grid{grid-template-columns:1fr;}}

/* ---- Consultas del paciente: línea de tiempo + barra de estado ---- */
.consultas-bar{margin-top:18px;}
.consultas-bar-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:10px;}
.consultas-bar-head .btn{flex:none;white-space:nowrap;padding:8px 14px;font-size:13px;}
.consultas-bar-titulo{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.consultas-bar-titulo{flex:1;}
.chip-toggle{
  background:none;border:none;font-family:inherit;font-size:12.5px;font-weight:700;
  color:var(--morado);cursor:pointer;padding:6px 8px;border-radius:7px;white-space:nowrap;
}
.chip-toggle:hover{background:var(--morado-50);}
.consultas-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:10px;padding:2px;}
.consultas-chips::-webkit-scrollbar{width:6px;}
.consultas-chips::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px;}
.consulta-chip{
  min-width:0;display:flex;align-items:center;gap:11px;
  background:var(--card);border:1.5px solid var(--border);border-radius:12px;
  padding:9px 14px 9px 10px;cursor:pointer;font-family:inherit;text-align:left;color:var(--text);
  transition:border-color .15s ease,box-shadow .15s ease,transform .12s ease;
}
.consulta-chip:hover{border-color:var(--morado-claro);transform:translateY(-1px);}
.consulta-chip.active{border-color:var(--morado);background:var(--morado-50);box-shadow:0 0 0 3px rgba(163,101,209,.14);}
.chip-dia{
  width:36px;height:36px;border-radius:9px;background:var(--panel);color:var(--morado-oscuro);
  display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:16px;flex:none;
}
.consulta-chip.active .chip-dia{background:var(--morado);color:#fff;}
.chip-info{display:flex;flex-direction:column;gap:1px;}
.chip-mes{font-size:12px;font-weight:700;text-transform:capitalize;}
.chip-mes em{font-style:normal;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:var(--morado-100);color:var(--morado-oscuro);padding:1px 6px;border-radius:10px;margin-left:4px;vertical-align:1px;}
.chip-peso{font-size:11.5px;color:var(--muted);white-space:nowrap;}
.chip-delta{font-weight:700;margin-left:3px;}
.chip-num{font-size:10.5px;font-weight:800;color:var(--morado-oscuro);letter-spacing:.02em;}
.chip-num em{font-style:normal;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:var(--morado-100);color:var(--morado-oscuro);padding:1px 6px;border-radius:10px;margin-left:4px;vertical-align:1px;}

/* ---- Diálogo propio (reemplaza alert/confirm/prompt) ---- */
.dlg-backdrop{
  position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(20,8,36,.45);opacity:0;transition:opacity .16s ease;
}
.dlg-backdrop[hidden]{display:none;}
.dlg-backdrop.open{opacity:1;}
.dlg{
  background:var(--card);border-radius:18px;box-shadow:var(--shadow-pop);width:100%;max-width:420px;
  padding:26px 26px 20px;text-align:center;transform:translateY(8px) scale(.97);transition:transform .16s ease;
}
.dlg-backdrop.open .dlg{transform:none;}
.dlg-icon{width:48px;height:48px;border-radius:14px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;}
.dlg-icon-info,.dlg-icon-form{background:var(--morado-100);color:var(--morado-oscuro);}
.dlg-icon-aviso{background:#FDF1DC;color:#B26B00;}
.dlg-icon-peligro{background:#FBE7E5;color:var(--red);}
.dlg-titulo{margin:0 0 6px;font-family:var(--font-display);font-size:18px;font-weight:800;color:var(--text);}
.dlg-mensaje{margin:0;font-size:13.5px;color:var(--muted);line-height:1.5;}
.dlg-campos{text-align:left;margin-top:6px;}
.dlg-campos:empty{display:none;}
.dlg-campos label{margin-top:12px;}
.dlg-check{display:flex;align-items:center;gap:9px;margin-top:14px;font-size:13px;color:var(--text);font-weight:600;cursor:pointer;}
.dlg-check input{width:17px;height:17px;accent-color:var(--morado);flex:none;}

/* ---- Menú PDF ---- */
.pdf-menu-wrap{position:relative;}
.pdf-menu{
  position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:350px;max-width:calc(100vw - 24px);
  background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:0 18px 45px rgba(44,28,54,.18);padding:0 8px 8px;overflow:hidden;
}
.pdf-menu[hidden]{display:none;}
.more-menu-head{display:flex;align-items:center;gap:11px;margin:0 -8px 5px;padding:14px 16px;background:linear-gradient(135deg,var(--morado-50),#fff);border-bottom:1px solid var(--border-soft);}
.more-menu-head-icon{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:10px;background:var(--morado);color:#fff;}
.more-menu-head-icon svg{width:18px;height:18px;}
.more-menu-head>span:last-child{display:flex;flex-direction:column;gap:2px;}
.more-menu-head b{font-size:14px;line-height:1.2;}
.more-menu-head small{font-size:11.5px;color:var(--muted);}
.pdf-menu-item{
  display:grid;grid-template-columns:38px minmax(0,1fr) 16px;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:1px solid transparent;
  padding:9px 10px;border-radius:10px;cursor:pointer;font-family:inherit;color:var(--text);transition:background .15s ease,border-color .15s ease,transform .15s ease;
}
.pdf-menu-item:hover,.pdf-menu-item:focus-visible{background:var(--morado-50);border-color:rgba(111,62,139,.14);outline:none;}
.pdf-menu-item:active{transform:scale(.99);}
.more-item-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:var(--morado);background:var(--morado-50);}
.more-item-icon svg{width:18px;height:18px;}
.more-item-icon--report{color:#176b87;background:#eaf7fb;}
.more-item-icon--mail{color:#a45b08;background:#fff5df;}
.more-item-icon--history{color:#39714b;background:#edf8f0;}
.more-item-copy{display:flex;flex-direction:column;gap:2px;min-width:0;}
.more-item-copy b{font-size:13.5px;line-height:1.2;}
.more-item-copy small{font-size:11.5px;line-height:1.3;color:var(--muted);}
.more-item-arrow{color:var(--muted);font-size:22px;font-weight:300;line-height:1;text-align:center;}
.pdf-menu-item:is(a){text-decoration:none;color:var(--text);}
.pdf-menu-titulo{margin:0;padding:8px 10px 5px;color:var(--muted);font-size:9.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;}
.pdf-menu-separador{height:1px;margin:7px 10px 2px;background:var(--border-soft);}
#btnEnviarCorreo{text-align:left;}
.more-menu{min-width:350px;}
#view-registro .more-menu a[data-ir-gestion="seguridad"]{display:grid;margin:0;padding:9px 10px;border-radius:10px;color:var(--text);font-size:inherit;font-weight:inherit;}
#view-registro .more-menu a[data-ir-gestion="seguridad"]::before{display:none;}
@media (max-width:1024px){.pdf-menu{left:0;right:auto;}.more-menu{min-width:min(350px,calc(100vw - 24px));}}

.dlg-error{color:var(--red);font-size:12.5px;font-weight:600;margin:10px 0 0;min-height:0;}
.dlg-error:empty{display:none;}
.dlg-acciones{display:flex;gap:10px;margin-top:22px;}
.dlg-acciones .btn{flex:1;justify-content:center;padding:11px 14px;}
.btn-peligro{background:var(--red);color:#fff;border-color:var(--red);}
.btn-peligro:hover{background:#951e17;border-color:#951e17;}

/* ---- Notificaciones (toast) ---- */
.toast-wrap{position:fixed;right:20px;bottom:20px;z-index:400;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none;}
.toast{
  pointer-events:auto;display:flex;align-items:center;gap:10px;max-width:360px;
  background:#1f1628;color:#fff;font-size:13px;font-weight:600;padding:11px 16px 11px 14px;border-radius:11px;
  box-shadow:0 10px 30px -10px rgba(0,0,0,.45);
  opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;
}
.toast.visible{opacity:1;transform:none;}
.toast::before{content:"";width:8px;height:8px;border-radius:50%;flex:none;background:#5fd08e;}
.toast-error::before{background:#ff6b5e;}
.toast-aviso::before{background:#f0a63f;}
@media (max-width:640px){.toast-wrap{left:16px;right:16px;bottom:16px;align-items:stretch;}.toast{max-width:none;}}

/* Campo obligatorio que falta */
.campo-error{border-color:var(--red) !important;box-shadow:0 0 0 3.5px rgba(179,38,30,.14) !important;}

/* ---- Modal: todas las consultas ---- */
.modal-backdrop{
  position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:rgba(20,8,36,.45);padding:24px;opacity:0;transition:opacity .18s ease;
}
.modal-backdrop[hidden]{display:none;}
.modal-backdrop.open{opacity:1;}
.modal{
  background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);
  width:100%;max-width:860px;max-height:86vh;display:flex;flex-direction:column;
  transform:translateY(8px) scale(.98);transition:transform .18s ease;
}
.modal-backdrop.open .modal{transform:none;}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:22px 24px 8px;}
.modal-head p{margin:2px 0 0;}
.modal-cerrar{
  width:34px;height:34px;border-radius:9px;border:1px solid var(--border);background:#fff;color:var(--muted);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;
}
.modal-cerrar:hover{background:var(--panel);color:var(--text);}
.modal-filtros{display:flex;align-items:center;gap:10px;padding:6px 24px 12px;border-bottom:1px solid var(--border-soft);}
.modal-filtros select{width:auto;min-width:120px;}
.modal-body{overflow:auto;padding:4px 24px 20px;}
.modal-body .tbl{margin-top:8px;}
.modal-body .acciones{white-space:nowrap;text-align:right;}
.modal-body .muted{font-size:11.5px;}
.fila-activa{background:var(--morado-50);}
.fila-clic{cursor:pointer;}
.fila-clic:hover{background:var(--panel-hover);}
.fila-clic.fila-activa td:first-child{box-shadow:inset 3px 0 0 var(--morado);}
@media (max-width:640px){
  .modal-backdrop{padding:0;align-items:flex-end;}
  .modal{max-height:92vh;border-radius:18px 18px 0 0;}
  .modal-head,.modal-filtros,.modal-body{padding-left:16px;padding-right:16px;}
  /* en celular cada consulta es una tarjeta en vez de una fila de tabla */
  #tblTodasConsultas thead,#tblTodasConsultas .col-n{display:none;}
  #tblTodasConsultas tr{display:flex;flex-wrap:wrap;gap:6px 16px;padding:14px 4px;border-bottom:1px solid var(--border-soft);}
  #tblTodasConsultas td{border:none;padding:0;font-size:13px;}
  #tblTodasConsultas .col-fecha{flex-basis:100%;}
  #tblTodasConsultas td[data-label]::before{content:attr(data-label);display:block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
  #tblTodasConsultas .acciones{flex-basis:100%;text-align:left;display:flex;gap:12px;align-items:center;margin-top:4px;}
}
.chip-delta.baja{color:var(--green);}
.chip-delta.sube{color:var(--red);}

.consulta-estado{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;
  background:#E9F4EE;border:1px solid #CFE6D9;border-radius:12px;padding:12px 16px;
  transition:background .3s ease,border-color .3s ease;
}
.consulta-estado-dot{width:10px;height:10px;border-radius:50%;background:var(--green);flex:none;box-shadow:0 0 0 4px rgba(46,125,91,.15);}
.consulta-estado-texto{display:flex;flex-direction:column;gap:1px;flex:1;min-width:200px;}
.consulta-estado-texto b{font-size:14px;font-family:var(--font-display);}
.consulta-estado-texto span{font-size:12px;color:var(--muted);}
.consulta-estado.nueva{background:#FDF4E3;border-color:#F1DDB3;}
.consulta-estado.nueva .consulta-estado-dot{background:#D48A1A;box-shadow:0 0 0 4px rgba(212,138,26,.18);}
.consulta-estado.recien{background:#D8EEE1;border-color:#A9D6BC;}
.consulta-estado-fecha{display:flex;align-items:center;gap:8px;margin:0;font-size:12px;}
.consulta-estado-fecha span{font-weight:700;color:var(--muted);}
.consulta-estado-fecha input{width:auto;background:#fff;}
.consulta-estado-borrar{
  width:34px;height:34px;border-radius:9px;border:1px solid rgba(179,38,30,.25);background:#fff;color:var(--red);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;transition:background .15s ease;
}
.consulta-estado-borrar:hover{background:#FBEBE9;}

/* ---- Agenda semanal ---- */
.agenda-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.agenda-head p{margin:2px 0 0;}
.agenda-nav{display:flex;gap:6px;}
.agenda-nav .btn{min-width:40px;justify-content:center;}
.agenda-resumen{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px;}
.ag-kpi{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;box-shadow:var(--shadow-card);}
.ag-kpi b{font-family:var(--font-display);font-size:22px;}
.ag-kpi span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.ag-kpi.ok b{color:var(--green);} .ag-kpi.mal b{color:var(--red);} .ag-kpi.aviso b{color:#B26B00;}
.agenda-leyenda{display:flex;gap:16px;font-size:12px;color:var(--muted);margin-bottom:10px;}
.agenda-leyenda span{display:flex;align-items:center;gap:6px;}
.dot{width:9px;height:9px;border-radius:3px;display:inline-block;}
.dot-reserva{background:var(--morado);} .dot-control{background:#2E9C8F;}

.agenda-semana{display:grid;grid-template-columns:repeat(7,minmax(148px,1fr));gap:8px;overflow-x:auto;padding-bottom:6px;}
.ag-dia{background:var(--card);border:1px solid var(--border);border-radius:12px;min-height:220px;display:flex;flex-direction:column;overflow:hidden;}
.ag-dia.pasado{background:#FCFBFD;}
.ag-dia.hoy{border-color:var(--morado);box-shadow:0 0 0 3px rgba(163,101,209,.14);}
.ag-dia-head{display:flex;align-items:baseline;gap:6px;padding:9px 10px;border-bottom:1px solid var(--border-soft);background:var(--panel);}
.ag-dia-head span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;}
.ag-dia-head b{font-family:var(--font-display);font-size:17px;}
.ag-dia-head em{margin-left:auto;font-style:normal;font-size:9.5px;font-weight:800;background:var(--morado);color:#fff;padding:1px 7px;border-radius:10px;text-transform:uppercase;}
.ag-dia.hoy .ag-dia-head{background:var(--morado-50);}
.ag-dia-body{padding:8px;display:flex;flex-direction:column;gap:7px;flex:1;}
.ag-libre{margin:auto;font-size:11.5px;color:#b9b2c0;}
.ag-evento{border-radius:9px;padding:8px 9px;background:var(--morado-50);border-left:3px solid var(--morado);font-size:12px;}
.ag-evento.ag-control,.ag-evento.ag-cita{background:#EAF6F4;border-left-color:#2E9C8F;}
.ag-add{
  margin-left:auto;width:22px;height:22px;border-radius:6px;border:1px dashed var(--morado-claro);background:#fff;
  color:var(--morado);font-weight:800;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
  opacity:.55;transition:opacity .15s ease,background .15s ease;
}
.ag-dia:hover .ag-add,.ag-add:focus-visible{opacity:1;}
.ag-add:hover{background:var(--morado-50);}
.ag-dia-head em + .ag-add{margin-left:6px;}
@media (hover:none){.ag-add{opacity:1;}}

/* Selector Semana | Mes */
.agenda-modo{display:flex;background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px;margin-right:4px;}
.agenda-modo button{border:none;background:none;padding:5px 12px;border-radius:6px;font-family:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;}
.agenda-modo button.active{background:var(--morado);color:#fff;}
.agenda-nav{flex-wrap:wrap;align-items:center;}

/* ---- Agenda: vista mensual ---- */
.agenda-mes{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:var(--shadow-card);}
.agm-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--morado-oscuro);}
.agm-head span{padding:9px 10px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#fff;}
.agm-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));}
.agm-dia{
  min-height:108px;border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);
  padding:6px 7px;display:flex;flex-direction:column;gap:4px;cursor:pointer;transition:background .12s ease;
}
.agm-dia:nth-child(7n){border-right:none;}
.agm-dia:hover{background:var(--morado-50);}
.agm-dia:focus-visible{outline:2px solid var(--morado);outline-offset:-2px;}
.agm-dia.fuera{background:#F7F6F8;}
.agm-dia.fuera .agm-num b{color:#b9b2c0;}
.agm-dia.pasado:not(.fuera){background:#FCFBFD;}
.agm-dia.hoy{background:var(--morado-50);box-shadow:inset 0 0 0 2px var(--morado);}
.agm-num{display:flex;align-items:center;gap:6px;}
.agm-num b{font-family:var(--font-display);font-size:14px;}
.agm-dia.hoy .agm-num b{background:var(--morado);color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12.5px;}
.agm-cuenta{font-size:10px;font-weight:800;color:var(--morado-oscuro);background:var(--morado-100);padding:0 6px;border-radius:9px;}
.agm-add{margin-left:auto;width:20px;height:20px;font-size:13px;}
.agm-evs{display:flex;flex-direction:column;gap:3px;min-width:0;}
.agm-ev{
  display:block;font-size:11px;font-weight:600;padding:2px 6px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  background:var(--morado-100);color:var(--morado-oscuro);border-left:3px solid var(--morado);
}
.agm-ev i{font-style:normal;font-weight:800;}
.agm-ev.agm-cita,.agm-ev.agm-control{background:#DDF1EE;color:#1f6f66;border-left-color:#2E9C8F;}
.agm-ev.agm-est-asistio{opacity:.65;}
.agm-ev.agm-est-no{background:#FBE7E5;color:var(--red);border-left-color:var(--red);}
.agm-ev.agm-est-sinmarcar{box-shadow:inset 0 0 0 1px #E9B85C;}
.agm-mas{font-size:10.5px;font-weight:700;color:var(--muted);padding-left:4px;}
@media (max-width:900px){
  .agm-dia{min-height:64px;padding:4px;}
  .agm-ev{font-size:0;padding:0;height:5px;width:100%;border-left-width:0;border-radius:3px;background:var(--morado);}
  .agm-ev.agm-cita,.agm-ev.agm-control{background:#2E9C8F;}
  .agm-ev.agm-est-no{background:var(--red);}
  .agm-ev i{display:none;}
  .agm-evs{flex-direction:row;flex-wrap:wrap;gap:2px;}
  .agm-mas{font-size:9.5px;padding:0;}
  .agm-head span{padding:7px 2px;text-align:center;font-size:10px;}
  .agm-add{display:none;}
}

/* ---- Modal agendar cita ---- */
.modal.modal-sm{max-width:480px;}
.modal-foot{display:flex;align-items:center;gap:8px;padding:12px 24px 20px;border-top:1px solid var(--border-soft);}
.cita-form label{margin-top:12px;}
.cita-tipo{display:flex;background:var(--panel);border-radius:10px;padding:4px;gap:4px;margin-top:6px;}
.cita-tipo-btn{flex:1;border:none;background:none;padding:8px;border-radius:7px;font-family:inherit;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;}
.cita-tipo-btn.active{background:#fff;color:var(--morado-oscuro);box-shadow:0 1px 4px rgba(0,0,0,.08);}
.cita-resultados{display:flex;flex-direction:column;gap:4px;margin-top:6px;max-height:210px;overflow:auto;}
.cita-resultados:empty{display:none;}
.cita-resultados button{
  display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;
  border:1px solid var(--border);background:#fff;border-radius:8px;padding:9px 12px;font-family:inherit;cursor:pointer;
}
.cita-resultados button:hover{border-color:var(--morado);background:var(--morado-50);}
.cita-resultados button span{font-size:11.5px;color:var(--muted);}
.cita-resultados p{margin:4px 2px;font-size:12px;}
.cita-elegido{
  display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px;
  border:1.5px solid var(--morado);background:var(--morado-50);border-radius:10px;padding:10px 12px;
}
.cita-elegido[hidden]{display:none;}
.cita-elegido > div{display:flex;flex-direction:column;gap:1px;}
.cita-elegido span{font-size:11.5px;color:var(--muted);}
.cita-elegido .cita-ya{color:#B26B00;font-weight:600;}
.cita-aviso{color:#B26B00;font-size:12.5px;font-weight:600;margin:10px 0 0;}
.cita-aviso:empty{display:none;}

/* Próxima cita en la ficha */
.prox-cita-box{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:6px 6px 6px 12px;background:#fff;
}
.prox-cita-txt{font-size:13px;font-weight:600;min-width:0;}
.prox-cita-box .btn{flex:none;white-space:nowrap;padding:6px 10px;font-size:12px;}
.prox-cita-txt.vencida{color:var(--red);}
.ag-evento.ag-cancelada{opacity:.55;}
.ag-evento.ag-cancelada .ag-nombre{text-decoration:line-through;}
.ag-evento-top{display:flex;justify-content:space-between;align-items:center;gap:4px;flex-wrap:wrap;}
.ag-hora{font-weight:800;font-family:var(--font-display);font-size:12.5px;}
.ag-estado{font-size:9.5px;font-weight:800;padding:1px 6px;border-radius:10px;text-transform:uppercase;letter-spacing:.03em;}
.est-pendiente{background:#fff;color:var(--muted);border:1px solid var(--border);}
.est-sinmarcar{background:#FDF1DC;color:#B26B00;}
.est-asistio{background:#DDF1E6;color:var(--green);}
.est-no{background:#FBE7E5;color:var(--red);}
.est-cancelada{background:#EEE;color:#777;}
.ag-nombre{font-weight:700;margin-top:3px;color:var(--text);overflow-wrap:anywhere;}
.ag-meta{color:var(--muted);font-size:11px;margin-top:1px;overflow-wrap:anywhere;}
.ag-acciones{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px;}
.ag-btn{font-family:inherit;font-size:10.5px;font-weight:700;padding:3px 7px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text);cursor:pointer;}
.ag-btn:hover{border-color:var(--morado-claro);}
.ag-btn.on-ok{background:var(--green);border-color:var(--green);color:#fff;}
.ag-btn.on-mal{background:var(--red);border-color:var(--red);color:#fff;}
.ag-btn.ag-link{border:none;background:none;color:var(--morado);padding:3px 4px;}
.ag-btn.ag-link:hover{text-decoration:underline;}
.agenda-nota{margin-top:12px;font-size:11.5px;}
@media (max-width:900px){
  .agenda-semana{grid-template-columns:1fr;overflow:visible;}
  .ag-dia{min-height:0;}
  .ag-dia.pasado:not(.hoy) .ag-dia-body:has(.ag-libre){display:none;}
  .agenda-resumen{grid-template-columns:repeat(3,1fr);}
}

/* ---- Plan alimenticio ---- */
.plan-layout{display:grid;grid-template-columns:1fr 260px;gap:24px;margin-top:14px;align-items:start;}
.plan-comidas textarea{margin-bottom:2px;}
.plan-referencia{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);
  padding:14px 16px;position:sticky;top:90px;
}
.plan-ref-lista{display:flex;flex-direction:column;gap:6px;}
.plan-ref-item{display:flex;justify-content:space-between;font-size:12.5px;padding:4px 0;border-bottom:1px solid var(--border-soft);}
.plan-ref-item b{color:var(--morado-oscuro);}
@media (max-width:900px){
  .plan-layout{grid-template-columns:1fr;}
  .plan-referencia{position:static;}
}

/* ---- Login: registro ---- */
.login-accent{color:var(--morado);}
.login-switch{text-align:center;font-size:13px;color:var(--muted);margin:16px 0 0;}
.login-switch button{background:none;border:none;color:var(--morado);font-weight:700;cursor:pointer;font-family:inherit;font-size:13px;padding:0;}
.login-switch button:hover{text-decoration:underline;}

.login-acepta{display:flex;align-items:flex-start;gap:9px;font-size:12.5px;color:var(--muted);margin:2px 0 6px;cursor:pointer;line-height:1.45;font-weight:500;}
.login-acepta input{width:16px;height:16px;margin-top:1px;accent-color:var(--morado);flex:none;}
.login-acepta a,.login-legal a,.dlg-mensaje a{color:var(--morado-oscuro);font-weight:600;}
.login-legal{text-align:center;font-size:11.5px;margin:10px 0 0;}
.login-legal a{color:var(--muted);font-weight:500;text-decoration:none;}
.login-legal a:hover{text-decoration:underline;}

/* ---- Mi perfil ---- */
.modal-body label{margin-top:12px;}
.slug-box{display:flex;align-items:center;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:#fff;overflow:hidden;}
.slug-box:focus-within{border-color:var(--morado);box-shadow:0 0 0 3.5px rgba(163,101,209,.16);}
.slug-box span{padding:9px 0 9px 11px;color:var(--muted);font-size:13px;white-space:nowrap;}
.slug-box input{border:none;box-shadow:none !important;padding-left:2px;}
.perfil-pass{margin-top:16px;border:1px solid var(--border);border-radius:10px;padding:10px 14px;}
.perfil-pass summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--morado-oscuro);}
.sidebar-account-avatar,.sidebar-account-info{cursor:pointer;}
.sidebar-account-info:hover .sidebar-account-email{text-decoration:underline;}

/* ---- Reservas (vista privada) ---- */
.res-hero{
  display:grid;grid-template-columns:1.3fr 1fr;gap:22px;align-items:center;margin-bottom:20px;
  background:
    radial-gradient(380px 240px at 100% 0%, rgba(255,255,255,.12) 0%, transparent 60%),
    linear-gradient(135deg,#3d1f5c 0%,#6f3fa0 60%,#8a4fc4 100%);
  color:#fff;border-radius:var(--radius-lg);padding:24px 26px;box-shadow:0 14px 34px -18px rgba(60,30,90,.6);
}
.res-hero-kicker{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:#e2c6f5;}
.res-hero h2{color:#fff;margin:2px 0 4px;font-size:22px;}
.res-hero p{margin:0 0 14px;color:rgba(255,255,255,.8);font-size:13.5px;}
.res-link{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.18);border-radius:11px;padding:6px 6px 6px 12px;}
.res-link > a:first-child{color:#fff;font-weight:700;font-size:13.5px;text-decoration:none;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.res-link > a:first-child:hover{text-decoration:underline;}
.res-link-btn{
  display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--morado-oscuro);border:none;border-radius:8px;
  padding:7px 11px;font-size:12.5px;font-weight:700;cursor:pointer;text-decoration:none;font-family:inherit;
}
.res-link-btn:hover{background:#f1e6fa;}
.res-kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.res-kpi{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;}
.res-kpi b{font-family:var(--font-display);font-size:24px;line-height:1.1;}
.res-kpi span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:rgba(255,255,255,.72);}

.res-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:14px;}
.res-card-head h2{margin:0;}
.res-filtro{display:flex;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px;}
.res-filtro button{border:none;background:none;padding:6px 12px;border-radius:7px;font-family:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;}
.res-filtro button.active{background:var(--morado);color:#fff;}
.res-tbl thead th{background:var(--morado-oscuro);color:#fff;border-bottom:none;}
.res-tbl tbody tr:nth-child(even){background:#FBF9FD;}
.res-tbl td:nth-child(2),.res-tbl td:nth-child(4){white-space:nowrap;}
.res-hora{font-family:var(--font-display);font-weight:800;color:var(--morado-oscuro);background:var(--morado-100);padding:2px 8px;border-radius:7px;}
.res-fila-hoy td{background:#FFF8EA !important;}
.res-fila-cancelada td{color:#9a93a3;}
.res-fila-cancelada td b{text-decoration:line-through;}
.res-origen{font-size:10.5px;font-weight:700;color:var(--muted);background:var(--panel);border:1px solid var(--border);padding:1px 6px;border-radius:8px;margin-left:4px;}
.res-vacio{flex-direction:column;align-items:center;gap:8px;padding:26px;color:var(--morado-claro);text-align:center;background:var(--panel);border:1.5px dashed var(--border);border-radius:12px;}
.res-vacio p{margin:0;color:var(--muted);font-size:13.5px;}

.res-duracion{display:flex;flex-direction:column;gap:4px;margin:0;}
.res-duracion span{font-size:11.5px;font-weight:700;color:var(--muted);}
.res-duracion select{width:auto;min-width:130px;}
.res-dias{display:flex;flex-direction:column;gap:8px;}
.res-dia{
  display:grid;grid-template-columns:170px 1fr auto;align-items:center;gap:14px;
  border:1.5px solid var(--border);background:#F4F2F6;border-radius:12px;padding:10px 14px;transition:background .15s ease,border-color .15s ease;
}
.res-dia.activo{background:#fff;border-color:var(--morado-claro);box-shadow:inset 4px 0 0 var(--morado);}
.res-switch{display:flex;align-items:center;gap:10px;margin:0;cursor:pointer;color:var(--text);font-size:14px;}
.res-switch input{position:absolute;opacity:0;width:1px;height:1px;}
.res-switch-ui{width:38px;height:22px;border-radius:20px;background:#cfc8d6;position:relative;flex:none;transition:background .15s ease;}
.res-switch-ui::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s ease;}
.res-switch input:checked + .res-switch-ui{background:var(--morado);}
.res-switch input:checked + .res-switch-ui::after{transform:translateX(16px);}
.res-switch input:focus-visible + .res-switch-ui{box-shadow:0 0 0 3px rgba(163,101,209,.3);}
.res-dia:not(.activo) .res-switch b{color:var(--muted);}
.res-horas{display:flex;align-items:center;gap:8px;}
.res-horas input{width:auto;}
.res-horas span{color:var(--muted);font-size:12.5px;}
.res-dia:not(.activo) .res-horas{display:none;}
.res-cerrado{display:none;font-size:12px;font-weight:700;color:#9a93a3;text-transform:uppercase;letter-spacing:.04em;}
.res-dia:not(.activo) .res-cerrado{display:block;grid-column:2 / 4;}
.res-guardar{display:flex;align-items:center;gap:12px;margin-top:16px;}
@media (max-width:900px){
  .res-hero{grid-template-columns:1fr;}
  .res-dia{grid-template-columns:1fr;gap:8px;}
  .res-dia:not(.activo) .res-cerrado{grid-column:auto;}
}

/* ---- Reservas ---- */
.badge-confirmada{background:#E4F1EA;color:var(--green);padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;}
.badge-cancelada{background:#FBEBE9;color:var(--red);padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;}
#tblHorarioReservas input[type="time"]{width:auto;}

/* ---------- Mi perfil ---------- */
.pf-wrap{max-width:1040px;}
.pf-top{display:flex;align-items:center;gap:18px;padding:22px 24px;margin-bottom:26px;border-radius:var(--radius-lg);background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-card);}
.pf-top-avatar{width:64px;height:64px;flex:none;border-radius:18px;display:grid;place-items:center;font:800 26px var(--font-display);color:#fff;background:linear-gradient(135deg,var(--morado-oscuro),var(--morado));}
.pf-top-info{flex:1;min-width:0;}
.pf-top-info h2{margin:0;font-family:var(--font-display);font-size:20px;}
.pf-top-info p{margin:2px 0 10px;color:var(--muted);font-size:13px;}
.pf-progreso{display:flex;align-items:center;gap:10px;max-width:320px;}
.pf-progreso-barra{flex:1;height:6px;border-radius:99px;background:var(--morado-100);overflow:hidden;}
.pf-progreso-barra i{display:block;height:100%;width:0;border-radius:inherit;background:var(--morado);transition:width .3s;}
.pf-progreso span{font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap;}
.pf-top-acciones{display:flex;gap:8px;flex-wrap:wrap;}

.pf-seccion{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;padding:24px 0;border-top:1px solid var(--border);}
.pf-seccion-txt h3{margin:4px 0 6px;font-family:var(--font-display);font-size:15px;color:var(--text);}
.pf-seccion-txt p{margin:0;font-size:12.5px;line-height:1.55;color:var(--muted);}
.pf-campos{margin:0;}
.pf-campos > label:first-child,.pf-campos > .inline2:first-child label{margin-top:0;}
.pf-pub{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:99px;font-size:10px;font-weight:700;letter-spacing:.02em;color:var(--morado-oscuro);background:var(--morado-50);border:1px solid var(--morado-100);vertical-align:1px;}

.pf-switch{position:relative;display:flex;align-items:center;gap:10px;margin:16px 0 4px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;}
.pf-switch input{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;pointer-events:none;}
.pf-switch-ui{width:36px;height:20px;flex:none;border-radius:99px;background:var(--border);position:relative;transition:background .2s;}
.pf-switch-ui::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s;}
.pf-switch input:checked + .pf-switch-ui{background:var(--morado);}
.pf-switch input:checked + .pf-switch-ui::after{transform:translateX(16px);}
.pf-switch input:focus-visible + .pf-switch-ui{box-shadow:0 0 0 3px rgba(163,101,209,.25);}

.pf-preview-label{display:block;margin:18px 0 8px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);}
.pf-prev-card{max-width:420px;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border);background:#fff;}
.pf-prev-head{display:flex;gap:12px;align-items:center;padding:16px 18px;color:#fff;background:linear-gradient(120deg,#4b2a78,var(--morado-oscuro) 55%,#8e55c4);}
.pf-prev-head strong{display:block;font-size:15px;}
.pf-prev-head span{font-size:12px;opacity:.85;}
.pf-prev-avatar{width:40px;height:40px;flex:none;border-radius:11px;background:#fff;color:var(--morado-oscuro);display:grid;place-items:center;font-weight:800;font-size:16px;}
.pf-prev-body{padding:12px 18px 14px;display:grid;gap:9px;font-size:13px;}
.pv-fila{display:flex;gap:10px;align-items:flex-start;}
.pv-fila svg{flex:none;margin-top:1px;color:var(--morado);}
.pv-fila small{display:block;color:var(--muted);margin-top:2px;}
.pv-falta,.pv-falta svg{color:var(--amber);font-weight:600;}
.pf-fila-accion{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:14px;font-size:12px;}
.pf-fila-accion a{color:var(--muted);}

@media (max-width:900px){
  .pf-seccion{grid-template-columns:1fr;gap:12px;}
  .pf-top{flex-wrap:wrap;}
  .pf-top-acciones{width:100%;}
  .pf-top-acciones .btn{flex:1;justify-content:center;}
}
@media (max-width:640px){ .pf-campos .inline2{grid-template-columns:1fr;} .pf-top{padding:18px;} }
.sidebar-bottom-nav{padding:8px 14px 10px;border-top:1px solid rgba(255,255,255,.08);}
/* Recuperación y recordatorios */
#guardadoAviso:not([hidden]) { position: fixed; bottom: 16px; left: 16px; right: 16px; z-index: 10000; display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 14px 18px; border: 1px solid #b66c0b; border-radius: 12px; background: #fff8e8; color: #593800; box-shadow: 0 4px 20px #0002; }
#guardadoAvisoTexto { flex: 1 1 280px; }
.recordatorio-item { padding: 14px 0; border-bottom: 1px solid #e5e7eb; }
.recordatorio-item p { margin: 0 0 10px; overflow-wrap: anywhere; }
.recordatorio-item .btn { margin: 0 8px 8px 0; }
#recordatoriosLista { margin: 14px 0; }
#codigoRecuperacionPanel textarea { width: 100%; box-sizing: border-box; font-family: monospace; }

/* ---------- Panel de pendientes ---------- */
.pend-card{margin-top:16px;}
.pend-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;}
.pend-head h3{margin:0;font-family:var(--font-display);font-size:16px;}
.pend-head p{margin:2px 0 0;font-size:12.5px;}
.pend-grupos{display:grid;gap:8px;}
.pend-grupo{border:1px solid var(--border);border-radius:var(--radius-md);background:#fff;}
.pend-grupo summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;cursor:pointer;list-style:none;font-size:13.5px;}
.pend-grupo summary::-webkit-details-marker{display:none;}
.pend-grupo summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s;}
.pend-grupo[open] summary::after{transform:rotate(-135deg);}
.pend-n{min-width:24px;height:22px;padding:0 7px;border-radius:99px;display:inline-grid;place-items:center;font-size:12px;font-weight:800;color:#fff;background:var(--morado);}
.pend-ayuda{font-size:11.5px;color:var(--muted);}
.pend-grupo ul{list-style:none;margin:0;padding:0 14px 10px;}
.pend-item{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.3fr) auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--border-soft);font-size:13px;}
.pend-quien{font-weight:600;}
.pend-cuando{color:var(--muted);font-size:12.5px;}
.pend-acc{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.pend-acc a.ag-btn{text-decoration:none;}
.pend-tag{display:inline-block;margin-left:4px;padding:1px 7px;border-radius:99px;font-size:10.5px;font-weight:700;color:var(--morado-oscuro);background:var(--morado-50);}
.pend-mas{margin:0 14px 10px;font-size:12px;color:var(--muted);}
@media (max-width:700px){ .pend-item{grid-template-columns:1fr;} .pend-acc{justify-content:flex-start;} }

/* ---------- Tipos de consulta ---------- */
.tc-card{margin-top:16px;}
.tc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:10px;}
.tc-head h3{margin:0;font-family:var(--font-display);font-size:16px;}
.tc-head p{margin:4px 0 0;font-size:12.5px;max-width:560px;}
.tc-vacio{margin:6px 0;font-size:13px;color:var(--muted);}
.tc-tabla{width:100%;border-collapse:collapse;font-size:13px;}
.tc-tabla th{text-align:left;font-size:11px;font-weight:700;color:var(--muted);padding:6px 8px;border-bottom:1px solid var(--border);}
.tc-tabla td{padding:9px 8px;border-bottom:1px solid var(--border-soft);}
.tc-acc{display:flex;gap:6px;justify-content:flex-end;}
.tc-pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11px;font-weight:700;color:var(--muted);background:var(--panel);}
.tc-pill.si{color:var(--green);background:#E7F4EE;}
.tc-form{margin-top:12px;padding:14px;border-radius:var(--radius-md);background:var(--panel);}
.tc-form-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;}
.tc-form-grid label{margin-top:0;}
.tc-check{display:flex;align-items:center;gap:8px;margin-top:12px;font-weight:600;color:var(--text);cursor:pointer;}
.tc-check input{width:auto;margin:0;}
.tc-form-acciones{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;}
@media (max-width:700px){ .tc-form-grid{grid-template-columns:1fr 1fr;} .tc-form-grid > div:first-child{grid-column:1 / -1;} .tc-head{flex-direction:column;} .tc-tabla th:nth-child(4),.tc-tabla td:nth-child(4){display:none;} }

/* ---------- Biblioteca de plantillas y planes ---------- */
.bib-barra{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;margin:0 0 14px;border:1px dashed var(--morado-100);border-radius:var(--radius-md);background:var(--morado-50);}
.bib-barra select{width:auto;min-width:200px;max-width:100%;flex:1 1 220px;}
.bib-barra-min{margin:4px 0 8px;padding:8px 10px;}
.bib-titulo{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--morado-oscuro);}
.btn-link{background:none;border:none;color:var(--morado-oscuro);text-decoration:underline;box-shadow:none;}
.bib-base{flex-basis:100%;font-size:12px;font-weight:600;color:var(--morado-oscuro);}
#modalBiblioteca .modal{max-width:720px;}
.bib-grupo{margin:16px 0 6px;font-family:var(--font-display);font-size:14px;color:var(--morado-oscuro);}
.bib-grupo:first-child{margin-top:0;}
.bib-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;padding:10px 0;border-top:1px solid var(--border-soft);}
.bib-item b{display:block;font-size:13.5px;}
.bib-item .muted{font-size:11.5px;}
.bib-acc{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;}
.bib-hist{grid-column:1 / -1;padding:8px 12px;border-radius:var(--radius-sm);background:var(--panel);}
.bib-ver{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;font-size:12.5px;border-bottom:1px solid var(--border-soft);}
.bib-ver:last-child{border-bottom:none;}
@media (max-width:640px){ .bib-item{grid-template-columns:1fr;} .bib-acc{justify-content:flex-start;} }
a.navbtn{text-decoration:none;}

/* ---------- Enviar por correo ---------- */
#modalCorreo .modal{max-width:640px;}
.mc-body label{margin-top:12px;}
.mc-body textarea{width:100%;resize:vertical;}
.mc-aviso{margin:0 0 6px;padding:10px 12px;border-radius:var(--radius-sm);background:#FBF1DC;color:#6b4700;font-size:13px;}
.mc-adjuntos{display:grid;gap:8px;}
.mc-check{display:flex;gap:10px;align-items:flex-start;margin:0;padding:10px 12px;border:1.5px solid var(--border);border-radius:var(--radius-md);cursor:pointer;font-weight:500;color:var(--text);}
.mc-check:has(input:checked){border-color:var(--morado);background:var(--morado-50);}
.mc-check input{width:auto;margin:3px 0 0;}
.mc-check b{display:block;font-size:13.5px;}
.mc-check small{display:block;color:var(--muted);font-size:12px;}
.mc-subir{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;font-size:12px;}
.mc-lista{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px;}
.mc-lista li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--panel);font-size:13px;}
.mc-archivo{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;}
.mc-historial{margin-top:16px;border-top:1px solid var(--border-soft);padding-top:10px;}
.mc-historial summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--morado-oscuro);}
.mc-envio{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:12.5px;}
.mc-envio b{display:block;font-size:13px;}
.mc-envio .muted{display:block;font-size:11.5px;}
.mc-nota{font-size:11.5px;max-width:280px;}
@media (max-width:640px){ .mc-nota{display:none;} }

/* ---------- Ficha: pestaña Generales ordenada ---------- */
.ficha-seccion{padding:16px 0 18px;border-top:1px solid var(--border-soft);}
.ficha-seccion:first-of-type{border-top:none;padding-top:4px;}
.ficha-seccion-titulo{margin:0 0 6px;font-family:var(--font-display);font-size:13px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--morado-oscuro);}
.input-nombre{font-family:var(--font-display);font-size:20px !important;font-weight:700;padding:12px 14px !important;}
.ficha-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;}
.ficha-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.ficha-grid-4{grid-template-columns:repeat(4,minmax(0,1fr));}
.ficha-grid > div{min-width:0;}
.ficha-grid textarea{width:100%;}
@media (max-width:900px){ .ficha-grid-4{grid-template-columns:repeat(2,minmax(0,1fr));} .ficha-grid-3{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:640px){ .ficha-grid,.ficha-grid-3,.ficha-grid-4{grid-template-columns:1fr;} .input-nombre{font-size:18px !important;} }

/* ---------- Anamnesis: tablas editables ---------- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;}
.tbl-editable .col-quitar{width:40px;text-align:center;padding-left:0;padding-right:0;}
.btn-quitar-fila{width:28px;height:28px;border:1px solid transparent;border-radius:7px;background:none;color:var(--muted);font-size:13px;line-height:1;cursor:pointer;}
.btn-quitar-fila:hover{color:var(--red);background:#fdf2f1;border-color:#efcdca;}
.btn-agregar-fila{margin-top:8px;}
.fila-total td{font-weight:800;color:var(--morado-oscuro);background:var(--morado-50);border-top:2px solid var(--morado-100);}
.fila-total td:first-child{text-align:right;}
#rec24Total{font-family:var(--font-display);font-size:15px;}
.frecuencia-layout{display:grid;grid-template-columns:minmax(0,520px) minmax(0,1fr);gap:20px;align-items:stretch;}
.frecuencia-notas{display:flex;flex-direction:column;}
.frecuencia-notas label{margin-top:0;}
.frecuencia-notas textarea{flex:1;min-height:160px;width:100%;resize:vertical;}
.frecuencia-extra-nombre{width:100%;}
@media (max-width:900px){ .frecuencia-layout{grid-template-columns:1fr;} }
.rr-item.rr-derecha{margin-left:auto;text-align:right;}
@media (max-width:640px){ .rr-item.rr-derecha{margin-left:0;text-align:left;} }
.navbtn-externo .navbtn-ext{margin-left:auto;opacity:.55;flex:none;}
.navbtn-externo:hover .navbtn-ext{opacity:.9;}

/* ---------- Peso y talla estimados ---------- */
.pe-head h2{margin:0 0 4px;font-family:var(--font-display);}
.pe-head p{margin:0 0 16px;max-width:720px;}
.pe-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;}
.pe-layout .card{margin:0 0 16px;}
.pe-sub{margin-top:16px !important;}
.pe-form .hint{margin-top:2px;}
.pe-eq{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--border-soft);}
.pe-eq:first-child{border-top:none;}
.pe-eq b{display:block;font-size:13.5px;}
.pe-eq span{display:block;font-size:11.5px;color:var(--muted);}
.pe-eq em{flex:none;font-style:normal;font-family:var(--font-display);font-size:18px;font-weight:800;color:var(--morado-oscuro);}
.pe-falta em{color:var(--muted);font-weight:600;}
.pe-falta b{color:var(--muted);}
.pe-imc-valor{display:flex;align-items:baseline;gap:12px;margin-bottom:4px;}
.pe-imc-valor b{font-family:var(--font-display);font-size:30px;color:var(--morado-oscuro);}
.pe-imc-valor span{padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700;color:var(--morado-oscuro);background:var(--morado-100);}
#btnPeFicha{margin-top:10px;}
.pe-notas ul{margin:4px 0 10px;padding-left:18px;font-size:13px;color:var(--muted);}
.pe-notas li{margin:4px 0;}
.pe-notas summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--morado-oscuro);}
.pe-notas details p{font-size:12px;color:var(--muted);margin:8px 0;}
@media (max-width:900px){ .pe-layout{grid-template-columns:1fr;} }

#chartGrid{grid-template-columns:1fr;}
/* ---------- Índice de grasa relativa (RFM) ---------- */
.rfm-card{margin:18px 0 6px;padding:14px 16px;border:1px solid var(--morado-100);border-radius:var(--radius-md);background:var(--morado-50);}
.rfm-cab{display:flex;justify-content:space-between;align-items:center;gap:16px;}
.rfm-cab h3{margin:0 0 2px;}
.rfm-cab .hint{margin:0;max-width:560px;}
.rfm-valor{flex:none;min-width:96px;text-align:center;padding:8px 12px;border-radius:12px;background:#fff;font-family:var(--font-display);font-size:28px;font-weight:800;color:var(--muted);}
.rfm-valor small{font-size:15px;margin-left:2px;}
.rfm-valor.rfm-ok{color:var(--green);}
.rfm-valor.rfm-alto{color:var(--red);}
.rfm-detalle{margin-top:8px;}
.rfm-detalle .hint{margin:6px 0 0;}
.rfm-pill{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700;}
.rfm-pill.rfm-ok{color:var(--green);background:#E7F4EE;}
.rfm-pill.rfm-alto{color:var(--red);background:#FBEBE9;}
@media (max-width:640px){ .rfm-cab{flex-direction:column;align-items:flex-start;} }
/* Gestión dentro de la app */
/* Ocupa exactamente el alto visible (dvh descuenta la barra del navegador en celular): así solo se
   desplaza el contenido de Gestión y no también la página que la contiene. */
#view-gestion.active{padding:0;display:flex;flex-direction:column;min-height:0;}
body:has(#view-gestion.active) #app{height:100vh;height:100dvh;min-height:0;}
body:has(#view-gestion.active) .printfooter{display:none;}
.gestion-frame{display:block;flex:1 1 auto;min-height:0;width:100%;border:0;background:var(--bg);}

/* ---- PC: el menú lateral se puede cerrar y volver a abrir (en celular ya es un panel deslizable).
   Cerrado, el contenido usa todo el ancho y queda un margen angosto con el botón para abrirlo. ---- */
.sidebar-abrir{display:none;}
@media (min-width:901px){
  .sidebar-toggle{
    display:flex;align-items:center;justify-content:center;margin-left:auto;
    width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.16);
    background:rgba(255,255,255,.06);color:#fff;cursor:pointer;flex:none;
  }
  .sidebar-toggle:hover{background:rgba(255,255,255,.14);}
  .topbar{transition:transform .25s cubic-bezier(.4,0,.2,1),visibility 0s 0s;}
  #app{transition:padding-left .25s cubic-bezier(.4,0,.2,1);}
  .printfooter{transition:margin-left .25s cubic-bezier(.4,0,.2,1);}
  body.menu-cerrado .topbar{transform:translateX(-100%);visibility:hidden;transition:transform .25s cubic-bezier(.4,0,.2,1),visibility 0s .25s;}
  body.menu-cerrado #app{padding-left:60px;}
  body.menu-cerrado .printfooter{margin-left:60px;}
  body.menu-cerrado .sidebar-abrir{
    display:flex;align-items:center;justify-content:center;
    position:fixed;top:16px;left:12px;z-index:45;
    width:36px;height:36px;border-radius:10px;cursor:pointer;
    border:1px solid var(--border);background:var(--card);color:var(--morado-oscuro);
    box-shadow:0 2px 8px -3px rgba(40,20,60,.25);
  }
  body.menu-cerrado .sidebar-abrir:hover{background:var(--panel);border-color:var(--morado-claro);}
}
@media (prefers-reduced-motion:reduce){ .topbar,#app,.printfooter{transition:none !important;} }

/* ============================================================
   FICHA CLÍNICA — REORDEN VISUAL 2026
   Mantiene íntegros los controles, textos y comportamiento existentes.
   Solo mejora jerarquía, lectura y acceso a las acciones importantes.
   ============================================================ */
#view-registro > .card{
  padding:0;background:transparent;border:0;box-shadow:none;overflow:visible;
}

.registro-head{
  position:relative;align-items:center;gap:18px;margin-bottom:12px;padding:22px 24px;
  background:linear-gradient(135deg,#fff 0%,#fbf8fe 100%);
  border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-card);
  overflow:visible;
}
.registro-head::before{
  content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;
  border-radius:0 5px 5px 0;background:linear-gradient(var(--morado),var(--morado-claro));
}
.registro-head h2{margin:0;font-size:clamp(22px,2vw,28px);line-height:1.15;color:var(--morado-oscuro);}
.registro-head #registroSub{margin:5px 0 0;font-size:12.5px;font-weight:650;}
.registro-identidad{display:flex;flex-direction:column;align-items:flex-start;min-width:180px;}
.registro-eyebrow{
  margin-bottom:5px;color:var(--morado);font-size:9.5px;font-weight:850;letter-spacing:.11em;text-transform:uppercase;
}
.registro-actions{align-items:center;justify-content:flex-end;gap:7px;}
.registro-actions .btn{min-height:40px;background:#fff;}
.registro-actions .btn:hover{border-color:var(--morado-claro);background:var(--morado-50);}
.registro-actions #btnGuardar{
  min-width:150px;background:var(--morado);border-color:var(--morado);color:#fff;
  box-shadow:0 8px 20px -12px rgba(85,40,130,.8);
}
.registro-actions #btnGuardar:hover{background:var(--morado-oscuro);border-color:var(--morado-oscuro);}

#estadoBorrador{
  min-height:18px;margin:0 0 2px;padding:0 4px;color:var(--muted);font-size:11.5px;
}
#estadoBorrador:empty{display:none;}
#view-registro a[data-ir-gestion="seguridad"]{
  display:inline-flex;align-items:center;gap:6px;margin:0 4px 12px;padding:6px 9px;
  border-radius:8px;color:var(--morado-oscuro);font-size:12px;font-weight:700;text-decoration:none;
}
#view-registro a[data-ir-gestion="seguridad"]::before{content:"↺";font-size:15px;line-height:1;}
#view-registro a[data-ir-gestion="seguridad"]:hover{background:var(--morado-50);}

.consultas-bar{
  margin:0 0 12px;padding:16px 18px;background:#fff;border:1px solid var(--border);
  border-radius:15px;box-shadow:var(--shadow-card);
}
.consultas-bar-head{margin-bottom:12px;}
.consultas-bar-titulo{color:var(--morado-oscuro);font-size:11.5px;}
.consultas-chips{gap:8px;}

.consulta-estado{
  margin:0 0 12px;padding:11px 14px;border-radius:13px;
  box-shadow:0 5px 16px -14px rgba(30,80,55,.7);
}
.consulta-estado-texto b{font-size:13.5px;}
.consulta-estado-texto span{font-size:11.5px;}
.consulta-estado-fecha input{min-height:36px;padding-top:7px;padding-bottom:7px;}

.resumen-rapido{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;
  margin:0 0 14px;padding:0;background:#fff;border:1px solid var(--border);
  border-radius:15px;box-shadow:var(--shadow-card);overflow:hidden;
}
.rr-item{
  min-width:0;min-height:76px;justify-content:center;padding:14px 16px;
  border-right:1px solid var(--border-soft);gap:5px;
}
.rr-item:last-child{border-right:0;}
.rr-item.rr-alerta{background:#fff8f6;box-shadow:inset 0 3px 0 #d86556;}
.rr-label{font-size:10.5px;font-weight:800;letter-spacing:.055em;text-transform:uppercase;color:var(--muted);}
.rr-valor{font-size:13.5px;font-weight:750;line-height:1.35;color:var(--text);overflow-wrap:anywhere;}
.rr-item.rr-derecha{margin-left:0;text-align:left;}

.subtabs{
  position:sticky;top:12px;z-index:25;display:flex;flex-wrap:nowrap;gap:5px;
  margin:0 0 16px;padding:6px;background:rgba(255,255,255,.96);
  border:1px solid var(--border);border-radius:14px;box-shadow:0 8px 24px -18px rgba(49,25,75,.7);
  overflow-x:auto;scrollbar-width:thin;backdrop-filter:blur(10px);
}
.subtab{
  flex:1 0 auto;min-height:40px;padding:7px 11px;border:0 !important;border-radius:9px;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap;
}
.subtab:hover{background:var(--morado-50);color:var(--morado-oscuro);}
.subtab.active{
  background:var(--morado);color:#fff;box-shadow:0 6px 14px -10px rgba(72,29,111,.9);
}
.subtab-num{
  display:grid;place-items:center;width:21px;height:21px;flex:none;border-radius:50%;
  background:#f0eaf5;color:#756d7c;font-size:10px;font-weight:850;transition:background .15s ease,color .15s ease;
}
.subtab:hover .subtab-num{background:#fff;color:var(--morado);}
.subtab.active .subtab-num{background:rgba(255,255,255,.2);color:#fff;}

#formRegistro > .tabpane.active{
  animation:fichaPaneEntrada .16s ease-out;
}
@keyframes fichaPaneEntrada{from{opacity:.55;transform:translateY(3px)}to{opacity:1;transform:none}}

.tabpane{
  padding:22px 24px 26px;background:#fff;border:1px solid var(--border);
  border-radius:16px;box-shadow:var(--shadow-card);
}
.tabpane > h3:first-child{margin-top:0;color:var(--morado-oscuro);font-size:18px;}
.ficha-seccion{
  margin-top:16px;padding:20px 20px 22px;border:1px solid #ece7f0 !important;
  border-radius:14px;background:#fff;box-shadow:0 5px 18px -18px rgba(58,31,79,.65);
}
.ficha-seccion:first-of-type{margin-top:0;padding-top:18px;}
.ficha-seccion-titulo{
  display:flex;align-items:center;gap:9px;margin:0 0 16px;padding-bottom:11px;border-bottom:1px solid var(--border-soft);font-size:12px;
}
.ficha-seccion-titulo::before{
  content:"";width:8px;height:8px;border-radius:3px;background:var(--morado);
  box-shadow:0 0 0 4px var(--morado-50);flex:none;
}
.ficha-grid{gap:5px 18px;}
.ficha-grid > div{padding:3px 0;}
#formRegistro label{color:#50475a;font-weight:650;}
#formRegistro input:not([type="checkbox"]):not([type="radio"]),
#formRegistro select,#formRegistro textarea{
  background:#fff;border-color:#dcd5e4;
}
#formRegistro input[readonly]{background:#f5f3f7;color:#685f70;}
#formRegistro textarea{line-height:1.5;}
#formRegistro input:focus,#formRegistro select:focus,#formRegistro textarea:focus{
  border-color:var(--morado-claro);box-shadow:0 0 0 3px rgba(139,85,183,.13);
}
.bib-barra{
  margin:-4px 0 18px;padding:10px 12px;border-radius:11px;background:#faf8fc;
  border:1px solid #e8e0ee;
}
.plan-referencia{top:76px;box-shadow:0 8px 24px -20px rgba(49,25,75,.8);}

@media (max-width:1024px){
  .resumen-rapido{grid-template-columns:repeat(2,minmax(0,1fr));}
  .rr-item:nth-child(2){border-right:0;}
  .rr-item:nth-child(-n+2){border-bottom:1px solid var(--border-soft);}
  .subtabs{top:8px;}
}

@media (max-width:640px){
  #view-registro{padding-bottom:18px;}
  .registro-head{padding:17px 16px;gap:13px;border-radius:14px;}
  .registro-head::before{top:15px;bottom:15px;}
  .registro-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;}
  .registro-actions .btn,.registro-actions .pdf-menu-wrap{width:100%;min-width:0;}
  .registro-actions .pdf-menu-wrap .btn{width:100%;justify-content:center;}
  .registro-actions #btnGuardar{min-width:0;}
  .registro-actions #btnGuardar{grid-column:1/-1;justify-content:center;}
  .consultas-bar{padding:14px;}
  .consultas-bar-head{align-items:flex-start;flex-wrap:wrap;}
  .consultas-bar-head .btn{width:100%;justify-content:center;}
  .consultas-chips{grid-template-columns:1fr 1fr;}
  .consulta-estado{gap:10px;padding:12px;}
  .consulta-estado-texto{min-width:calc(100% - 36px);}
  .consulta-estado-fecha{width:calc(100% - 46px);justify-content:space-between;}
  .consulta-estado-fecha input{flex:1;min-width:0;}
  .resumen-rapido{grid-template-columns:1fr 1fr;}
  .rr-item{min-height:70px;padding:12px;}
  .subtabs{top:58px;margin-left:-2px;margin-right:-2px;padding:6px;border-radius:12px;}
  .subtab{flex:0 0 auto;padding:8px 12px;}
  .tabpane{padding:14px;border-radius:14px;}
  .ficha-seccion{padding:15px 13px 16px;}
  .bib-barra{margin-bottom:14px;}
}

@media (max-width:410px){
  .registro-actions{grid-template-columns:1fr;}
  .registro-actions #btnGuardar{grid-column:auto;}
  .consultas-chips{grid-template-columns:1fr;}
  .resumen-rapido{grid-template-columns:1fr;}
  .rr-item{border-right:0;border-bottom:1px solid var(--border-soft) !important;}
  .rr-item:last-child{border-bottom:0 !important;}
}

.badge-agendada{background:var(--panel);color:var(--morado-oscuro);padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;}
/* Tablas editables anchas (recordatorio 24 h): en celular se deslizan dentro de su recuadro en vez de ensanchar la página. */
.tabla-desliza{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:4px;}
.tbl-editable .col-quitar{position:relative;} /* contiene el texto oculto "Quitar", que si no escapaba y ensanchaba la página */
.tabla-desliza > .tbl{min-width:520px;}

/* Exámenes bioquímicos dentro de la consulta */
.bioq-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px;}
.bioq-head h3{margin:0 0 5px;color:var(--morado-oscuro);}
.bioq-head .hint{max-width:760px;margin:0;line-height:1.5;}
.bioq-tabla-wrap{border:1px solid var(--border);border-radius:13px;background:#fff;}
.bioq-tabla{min-width:830px;margin:0;}
.bioq-tabla th:nth-child(1){width:29%;}.bioq-tabla th:nth-child(2){width:17%;}.bioq-tabla th:nth-child(3){width:20%;}.bioq-tabla th:nth-child(4){width:34%;}
.bioq-tabla td:first-child{font-weight:700;color:var(--text);}
.bioq-tabla td:first-child span{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:600;}
.bioq-tabla td:nth-child(2){color:var(--morado-oscuro);font-weight:700;white-space:nowrap;}
.bioq-tabla input{width:100%;min-width:125px;margin:0;padding:8px 10px;}
.bioq-tabla tr[data-estado="normal"]{background:#f7fcf9;}
.bioq-tabla tr[data-estado="normal"] .bioq-interpretacion{color:var(--green);font-weight:700;}
.bioq-tabla tr[data-estado="alerta"]{background:#fff9f7;}
.bioq-tabla tr[data-estado="alerta"] .bioq-interpretacion{color:var(--red);font-weight:700;}
.bioq-aviso{margin:12px 2px 0;padding:10px 12px;border-left:3px solid var(--morado-claro);border-radius:0 8px 8px 0;background:var(--morado-50);color:var(--muted);font-size:12px;line-height:1.45;}
@media(max-width:640px){.bioq-head{flex-direction:column}.bioq-head .btn{width:100%;justify-content:center}}

/* ============================================================
   PANTALLAS PRINCIPALES — PULIDO VISUAL 2026
   Jerarquía y legibilidad sin alterar contenido ni comportamiento.
   ============================================================ */

/* Inicio */
#view-inicio .inicio-hero{
  position:relative;margin-bottom:18px;padding:22px 24px;
  border:1px solid var(--border);border-radius:18px;
  background:linear-gradient(125deg,#fff 0%,#faf6fd 72%,#f1e7f8 100%);
  box-shadow:var(--shadow-card);overflow:hidden;
}
#view-inicio .inicio-hero::after{
  content:"";position:absolute;right:-50px;top:-85px;width:190px;height:190px;
  border-radius:50%;background:rgba(139,85,183,.08);pointer-events:none;
}
#view-inicio .inicio-hero-saludo{position:relative;font-size:clamp(23px,2.4vw,32px);color:var(--morado-oscuro);}
#view-inicio .inicio-quick{position:relative;z-index:1;}
#view-inicio .quick-btn{min-height:42px;background:rgba(255,255,255,.9);box-shadow:0 5px 15px -13px rgba(49,25,75,.8);}
#view-inicio .quick-btn:first-child{background:var(--morado);border-color:var(--morado);color:#fff;}
#view-inicio .quick-btn:first-child .quick-btn-icon{background:rgba(255,255,255,.16);color:#fff;}
#view-inicio .kpi-card{position:relative;min-height:132px;padding:18px 20px 20px;overflow:hidden;}
#view-inicio .kpi-card::after{content:"";position:absolute;right:-22px;bottom:-30px;width:78px;height:78px;border-radius:50%;background:var(--morado-50);}
#view-inicio .kpi-icon,#view-inicio .kpi-label,#view-inicio .kpi-valor{position:relative;z-index:1;}
#view-inicio .pend-card{padding:18px 20px;border-left:4px solid var(--morado-claro);}
#view-inicio #cardProximasCitas,#view-inicio .inicio-split>.card{border-radius:16px;}
#view-inicio #cardProximasCitas>h2,#view-inicio .inicio-split h2{font-size:16px;color:var(--morado-oscuro);}

/* Pacientes */
#view-portada>.card{padding:0;background:transparent;border:0;box-shadow:none;overflow:visible;}
#view-portada>.card>h2{margin:0 0 12px;font-size:clamp(23px,2vw,28px);color:var(--morado-oscuro);}
#view-portada .portada-toolbar{
  gap:8px;margin:0 0 14px;padding:12px;background:#fff;border:1px solid var(--border);
  border-radius:14px;box-shadow:var(--shadow-card);
}
#view-portada #buscarPaciente{min-height:42px;padding-left:15px;background:#fbfafc;border-color:#ddd6e3;}
#view-portada #buscarPaciente:focus{background:#fff;border-color:var(--morado-claro);box-shadow:0 0 0 3px rgba(139,85,183,.13);outline:0;}
#view-portada>.card>.tbl{margin-top:0;background:#fff;border:1px solid var(--border);border-radius:15px;box-shadow:var(--shadow-card);overflow:hidden;}
#view-portada>.card>.tbl thead th{position:sticky;top:0;z-index:1;padding-top:13px;padding-bottom:13px;}
#view-portada>.card>.tbl tbody td{padding-top:13px;padding-bottom:13px;}

/* Agenda */
#view-agenda .agenda-head{
  margin-bottom:14px;padding:18px 20px;background:linear-gradient(135deg,#fff,#faf7fc);
  border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-card);
}
#view-agenda .agenda-head h2{margin:0;color:var(--morado-oscuro);font-size:24px;}
#view-agenda .agenda-nav{justify-content:flex-end;}
#view-agenda .agenda-resumen{gap:12px;}
#view-agenda .ag-kpi{min-height:76px;justify-content:center;border-top:3px solid var(--morado-100);}
#view-agenda .ag-kpi b{color:var(--morado-oscuro);}
#view-agenda .agenda-leyenda{padding:0 4px;}
#view-agenda>.card{margin-top:16px;border-left:4px solid var(--morado-claro);}
#view-agenda>.card h3{margin-top:0;color:var(--morado-oscuro);}
#view-agenda #recordatoriosLista{margin:10px 0;}

/* Antropometría y requerimientos */
#tab-antropometria>.grid3,#tab-requerimientos>.grid3{gap:14px;align-items:start;}
#tab-antropometria>.grid3>.col,#tab-requerimientos>.grid3>.col{
  padding:16px;border:1px solid var(--border-soft);border-radius:13px;
  background:linear-gradient(155deg,#fff 72%,#fbf8fd 100%);
}
#tab-antropometria>.grid3>.col>h3:first-child,#tab-requerimientos>.grid3>.col>h3:first-child{margin-top:0;color:var(--morado-oscuro);}
#tab-antropometria .resultbox,#tab-requerimientos .resultbox{border-color:#e2d9ea;background:#faf8fc;}
#tab-antropometria .resultbox-kpi,#tab-requerimientos .resultbox-kpi{background:var(--morado-50);border-color:var(--morado-100);}

/* Plan alimenticio */
#tab-plan .plan-layout{grid-template-columns:minmax(0,1fr) 290px;gap:20px;}
#tab-plan .plan-comidas{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;align-items:end;}
#tab-plan .plan-comidas>label{margin:4px 0 -2px;color:var(--morado-oscuro);}
#tab-plan .plan-comidas>textarea{min-height:86px;margin:0 0 6px;background:#fcfbfd;}
#tab-plan .plan-comidas>label,#tab-plan .plan-comidas>textarea,#tab-plan .plan-comidas>.bib-barra{grid-column:auto;}
#tab-plan .plan-comidas>label:nth-of-type(6),#tab-plan .plan-comidas>.bib-barra,#tab-plan #pl_notas{grid-column:1/-1;}
#tab-plan .plan-referencia{padding:17px;background:linear-gradient(150deg,var(--morado-50),#fff);border-color:var(--morado-100);}
#tab-plan .plan-referencia .rr-label{color:var(--morado-oscuro);font-size:11px;}
#tab-plan .plan-ref-item{padding:8px 0;align-items:center;gap:10px;}
#tab-plan .plan-ref-item>span{display:flex;flex-direction:column;gap:2px;}
#tab-plan .plan-ref-item>span small{color:var(--muted);font-size:10px;}
#tab-plan .plan-ref-item>b{display:flex;flex-direction:column;align-items:flex-end;font-size:15px;}
#tab-plan .plan-ref-item>b small{color:var(--muted);font-size:9px;font-weight:650;text-transform:uppercase;}
#tab-plan .plan-ref-exceso{margin:0 -6px;padding:8px 6px;background:#fff3f1;border-radius:8px;}
#tab-plan .plan-ref-exceso>b{color:var(--red);}
#tab-plan .plan-comidas>label{grid-column:1/-1;}
.plan-comida-card{min-width:0;padding:13px;border:1px solid var(--border-soft);border-radius:12px;background:#fff;transition:opacity .15s ease,background .15s ease;}
.plan-comida-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;}
.plan-comida-head label{display:flex;align-items:center;gap:7px;margin:0!important;color:var(--morado-oscuro);font-weight:800;}
.plan-comida-head input{width:16px;height:16px;accent-color:var(--morado);}
.plan-comida-estado{padding:3px 7px;border-radius:20px;background:var(--morado-50);color:var(--morado-oscuro);font-size:9.5px;font-weight:750;}
.plan-comida-card textarea{width:100%;min-height:76px!important;}
.plan-comida-inactiva{background:#f7f5f8;opacity:.7;}
.plan-comida-inactiva textarea,.plan-comida-inactiva .plan-porciones{display:none;}
.plan-comida-inactiva .plan-comida-estado{background:#ebe8ed;color:var(--muted);}
.plan-porciones{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);}
.plan-porcion-cab{display:flex;justify-content:space-between;gap:8px;margin-bottom:7px;}
.plan-porcion-cab span{font-size:10.5px;font-weight:800;color:var(--text);}
.plan-porcion-cab small{font-size:9.5px;color:var(--muted);}
.plan-porcion-chips{display:flex;flex-wrap:wrap;gap:5px;min-height:24px;margin-bottom:7px;}
.plan-porcion-chip{border:1px solid var(--morado-100);border-radius:20px;background:var(--morado-50);padding:4px 8px;color:var(--morado-oscuro);font:inherit;font-size:10px;cursor:pointer;}
.plan-porcion-chip:hover{border-color:var(--morado-claro);background:#fff;}
.plan-porcion-sin{font-size:10px;color:var(--muted);font-style:italic;}
.plan-porcion-agregar{display:grid;grid-template-columns:minmax(0,1fr) 66px auto;gap:5px;}
.plan-porcion-agregar select,.plan-porcion-agregar input{min-width:0;padding:6px 7px;font-size:10.5px;}
.plan-porcion-agregar .btn{padding:6px 8px;}
@media (max-width:640px){.plan-porcion-cab{flex-direction:column;gap:2px}.plan-porcion-agregar{grid-template-columns:1fr 58px}.plan-porcion-agregar .btn{grid-column:1/-1;justify-content:center}}

/* Seguimiento */
#tab-seguimiento .seguimiento-resumen{gap:12px;}
#tab-seguimiento .resumen-box{min-height:108px;justify-content:center;background:#fff;border-top:3px solid var(--morado-100);box-shadow:var(--shadow-card);}
#tab-seguimiento .resumen-box-cambio{border-top-color:var(--morado);background:linear-gradient(145deg,#fff,var(--morado-50));}
#tab-seguimiento .chart-box{padding:18px;background:#fff;box-shadow:var(--shadow-card);}
#tab-seguimiento .chart-title{color:var(--morado-oscuro);font-size:13px;text-transform:uppercase;letter-spacing:.04em;}
#tab-seguimiento .deltaup,#tab-seguimiento .deltadown{color:var(--morado-oscuro);font-weight:750;}
.chart-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:14px;}
.chart-toolbar .chart-title{margin:3px 0 0;font-size:17px !important;text-transform:none !important;letter-spacing:0 !important;}
.chart-kicker{color:var(--muted);font-size:9.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;}
.chart-selector{display:flex;align-items:center;gap:8px;margin:0;color:var(--muted);font-size:11.5px;font-weight:700;white-space:nowrap;}
.chart-selector select{width:auto;min-width:140px;padding:8px 30px 8px 10px;background:#fff;border-color:var(--morado-100);font-weight:700;color:var(--morado-oscuro);}
.chart-metricas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px;}
.chart-metricas>span{display:flex;flex-direction:column;gap:2px;padding:9px 11px;background:var(--panel);border:1px solid var(--border-soft);border-radius:9px;}
.chart-metricas small{color:var(--muted);font-size:9.5px;font-weight:750;text-transform:uppercase;letter-spacing:.04em;}
.chart-metricas b{color:var(--text);font-size:15px;}
.chart-metricas .cambio-sube{color:#b84a3d;}
.chart-metricas .cambio-baja{color:#2e7d5b;}
.chart-periodo{margin:5px 0 0;text-align:center;color:var(--muted);font-size:10.5px;}
@media (max-width:640px){
  .chart-toolbar{align-items:stretch;flex-direction:column;gap:10px;}
  .chart-selector{justify-content:space-between;}
  .chart-selector select{flex:1;}
  .chart-metricas{grid-template-columns:1fr;}
  .chart-metricas>span{flex-direction:row;justify-content:space-between;align-items:center;}
}

/* Peso estimado y finanzas */
#view-pesoestimado .pe-head{margin-bottom:14px;padding:18px 20px;background:linear-gradient(135deg,#fff,#faf7fc);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-card);}
#view-pesoestimado .pe-head p{margin-bottom:0;}
#view-pesoestimado .pe-form{border-top:4px solid var(--morado-claro);}
#view-pesoestimado .pe-resultados>.card{border-left:3px solid var(--morado-100);}
#view-pesoestimado .pe-imc{background:linear-gradient(145deg,#fff,var(--morado-50));border-left-color:var(--morado)!important;}
#view-finanzas>.card{padding:22px;border-radius:17px;}
#view-finanzas>.card>h2{margin:0;color:var(--morado-oscuro);font-size:25px;}
#view-finanzas #kpiGridFinanzas{grid-template-columns:repeat(3,1fr);margin-top:18px;}
#view-finanzas #kpiGridFinanzas .kpi-card{min-height:118px;justify-content:center;}
#view-finanzas .portada-toolbar{padding-top:4px;border-top:1px solid var(--border-soft);}
#view-finanzas #tblFinanzas{border:1px solid var(--border-soft);border-radius:12px;overflow:hidden;}

/* Modales */
.modal-backdrop{background:rgba(29,16,42,.55);backdrop-filter:blur(3px);}
.modal{border:1px solid rgba(255,255,255,.7);border-radius:18px;overflow:hidden;}
.modal-head{padding:20px 22px 16px;background:linear-gradient(135deg,#fff,#faf6fd);border-bottom:1px solid var(--border-soft);}
.modal-head h2{margin:0;color:var(--morado-oscuro);font-size:20px;}
.modal-body{padding:16px 22px 22px;}
.modal-foot{padding:14px 22px;background:#fcfbfd;}

@media (max-width:900px){
  #tab-plan .plan-layout{grid-template-columns:1fr;}
  #tab-plan .plan-comidas{grid-template-columns:1fr;}
  #tab-plan .plan-comidas>*{grid-column:1!important;}
  #view-agenda .agenda-resumen{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:640px){
  #view-inicio .inicio-hero,#view-agenda .agenda-head,#view-pesoestimado .pe-head{padding:16px;border-radius:14px;}
  #view-inicio .inicio-quick,#view-inicio .quick-btn{width:100%;}
  #view-inicio .quick-btn{justify-content:center;}
  #view-inicio .kpi-card{min-height:104px;}
  #view-portada .portada-toolbar{padding:10px;}
  #view-portada .portada-toolbar .btn{flex:1 1 auto;justify-content:center;}
  #view-portada>.card{overflow-x:auto;}
  #view-portada>.card>h2,#view-portada .portada-toolbar{position:sticky;left:0;}
  #view-portada>.card>.tbl{min-width:820px;}
  #view-agenda .agenda-nav{width:100%;justify-content:flex-start;}
  #view-agenda .agenda-modo{flex:1;}
  #view-agenda .agenda-modo button{flex:1;}
  #view-agenda .agenda-resumen{grid-template-columns:1fr 1fr;}
  #view-finanzas>.card{padding:16px;overflow-x:auto;}
  #view-finanzas>.card>h2,#view-finanzas>.card>p,#view-finanzas #kpiGridFinanzas,#view-finanzas .portada-toolbar{position:sticky;left:0;}
  #view-finanzas #kpiGridFinanzas{grid-template-columns:1fr;}
  #view-finanzas #tblFinanzas{min-width:650px;}
  .modal-backdrop{padding:10px;align-items:flex-end;}
  .modal{max-height:92vh;border-radius:18px 18px 10px 10px;}
  .modal-head,.modal-body,.modal-foot{padding-left:16px;padding-right:16px;}
}
/* La tarjeta de la ficha ya no recorta su contenido (rediseño 2026): las tablas anchas (Pauta, Seguimiento)
   se deslizan dentro de su pestaña en vez de ensanchar la página en celular. Plan alimenticio queda fuera
   porque su recuadro de referencia es sticky y dejaría de seguir el desplazamiento. */
.tabpane:not(#tab-plan){overflow-x:auto;}
@media (max-width:640px){ #tab-requerimientos .tbl.small th,#tab-requerimientos .tbl.small td{padding-left:6px;padding-right:6px;} }
/* Pacientes (rediseño 2026): la tabla mide ~880 px. Mientras no quepa (tablet o PC con menú abierto),
   se desliza dentro de su tarjeta en vez de ensanchar la página; título y buscador quedan fijos a la izquierda. */
@media (max-width:1279px){
  #view-portada>.card{overflow-x:auto;padding:0 4px 12px;margin:0 -4px;}
  #view-portada>.card>h2,#view-portada .portada-toolbar{position:sticky;left:0;}
}
/* Celular: el menú "Más opciones" usa el ancho de la columna de botones (con 350 px fijos se salía por la derecha). */
@media (max-width:640px){ .more-menu{left:0;right:0;width:auto;min-width:0;} }
/* Con 8 pestañas la barra no cabe en PC con el menú abierto: pasan a una segunda fila en vez de esconder
   "Seguimiento" a la derecha. En celular se mantiene el deslizamiento horizontal. */
@media (min-width:641px){ .subtabs{flex-wrap:wrap;overflow-x:visible;} .subtabs::after{content:"";flex:999 1 0;} }
/* Seguimiento: gráfico a la izquierda y botones para elegir el dato a la derecha.
   En celular los botones van arriba del gráfico, en una fila que se desliza. */
#tab-seguimiento .chart-grid{grid-template-columns:1fr;}
.chart-cuerpo{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:18px;align-items:start;}
.chart-principal{min-width:0;}
.chart-opciones{display:flex;flex-direction:column;gap:12px;padding-left:16px;border-left:1px solid var(--border-soft);}
.chart-opciones-grupo{display:flex;flex-direction:column;gap:5px;}
.chart-opciones-titulo{color:var(--muted);font-size:9.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1px;}
.chart-opcion{display:block;width:100%;text-align:left;padding:7px 11px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--text);font:inherit;font-size:12.5px;font-weight:650;cursor:pointer;transition:background .15s,border-color .15s,color .15s;}
.chart-opcion:hover{background:var(--morado-50);border-color:var(--morado-claro);}
.chart-opcion[aria-pressed="true"]{background:var(--morado);border-color:var(--morado);color:#fff;}
.chart-opcion:focus-visible{outline:2px solid var(--morado-claro);outline-offset:2px;}
@media (max-width:900px){
  .chart-cuerpo{grid-template-columns:1fr;gap:12px;}
  .chart-opciones{order:-1;gap:10px;padding:0 0 12px;border-left:0;border-bottom:1px solid var(--border-soft);}
  .chart-opciones-grupo{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;}
  .chart-opciones-titulo{flex:0 0 100%;margin:0;}
  .chart-opcion{width:auto;white-space:nowrap;padding:6px 10px;}
}
@media (min-width:901px){ #tab-seguimiento .chart-principal canvas{height:280px;} }
#tab-plan .plan-comidas{align-items:start;} /* tarjetas de comidas alineadas arriba */
