: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:1025px){.printfooter{margin-left:264px;}}
@media (min-width:901px) and (max-width:1024px){.printfooter{margin-left:78px;}}
@media (min-width:901px){
  .topbar{position:fixed;left:0;top:0;bottom:0;height:auto;align-self:auto;}
  #app{padding-left:264px;}
}
@media (min-width:901px) and (max-width:1024px){#app{padding-left:78px;}}

.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;}
}

/* ---- Tablet (iPad y similares, portrait y landscape): sidebar más angosto,
   solo iconos, para no comerse tanto ancho en una pantalla más chica. ---- */
@media (max-width:1024px) and (min-width:901px){
  .topbar{flex:0 0 78px;width:78px;}
  .brand{padding:20px 0 14px;justify-content:center;}
  .brand-text,.navgroup-label,.navbtn-label,.sidebar-toggle{display:none;}
  .sidebar-scroll{padding:2px 12px 14px;}
  .navbtn{justify-content:center;padding:11px;}
  .navbtn::before{display:none;}
  .navbtn.active .navbtn-icon{box-shadow:0 0 0 2px rgba(255,255,255,.35),0 2px 8px -1px rgba(0,0,0,.35);}
  .navbtn-badge{position:absolute;top:4px;right:10px;margin-left:0;padding:0;min-width:15px;height:15px;font-size:9px;line-height:15px;}
  .sidebar-account{flex-direction:column;padding:14px 10px;gap:8px;}
  .sidebar-account-info{display:none;}
  .sidebar-account-logout{width:100%;}
}

@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;
  }
  .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:
    radial-gradient(700px 420px at 15% 10%, var(--morado-100) 0%, transparent 60%),
    radial-gradient(600px 360px at 90% 90%, var(--morado-50) 0%, transparent 55%),
    var(--bg);
}
.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% + 6px);z-index:60;width:290px;
  background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:6px;
}
.pdf-menu[hidden]{display:none;}
.pdf-menu-item{
  display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:none;border:none;
  padding:10px 12px;border-radius:8px;cursor:pointer;font-family:inherit;color:var(--text);
}
.pdf-menu-item:hover{background:var(--morado-50);}
.pdf-menu-item b{font-size:13.5px;}
.pdf-menu-item span{font-size:11.5px;color:var(--muted);}
@media (max-width:1024px){.pdf-menu{left:0;right:auto;}}

.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;}}

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