/* ============ ESTRUCTURA GENERAL DEL PANEL ============ */
.panel-body{ margin:0; background:var(--cream-deep); }
.panel-shell{ display:flex; min-height:100vh; }

/* ---------- Menú lateral (compacto, sin barra de desplazamiento) ---------- */
.panel-sidebar{
  width:236px; flex-shrink:0;
  background:var(--navy-deep); color:var(--cream-soft);
  display:flex; flex-direction:column;
  position:sticky; top:0; height:100vh;
}
.panel-brand{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:16px 14px 14px 18px;
  border-bottom:1px solid rgba(248,243,232,0.1);
}
.panel-brand-logo{ display:flex; flex-direction:column; line-height:1; text-decoration:none; }
.panel-brand .b1{ font-size:0.56rem; letter-spacing:0.36em; color:var(--teal-soft); font-weight:600; }
.panel-brand .b2{ font-family:'Fraunces', serif; font-style:italic; font-size:1.22rem; color:var(--cream-soft); font-weight:600; margin-top:3px; }
.panel-brand-extra{ display:flex; flex-direction:column; align-items:center; gap:3px; }
.panel-brand-web{
  display:flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:8px;
  color:rgba(248,243,232,0.75); background:rgba(248,243,232,0.08); transition:background .2s ease, color .2s ease;
}
.panel-brand-web:hover{ background:rgba(248,243,232,0.18); color:var(--cream-soft); }
.panel-brand-web .icono{ width:16px; height:16px; }
.panel-version{ font-size:0.62rem; color:rgba(248,243,232,0.42); letter-spacing:.04em; }

.menu{
  flex:1; overflow-y:auto; padding:8px 10px 16px;
  scrollbar-width:none;                 /* sin barra visible (Firefox) */
}
.menu::-webkit-scrollbar{ display:none; } /* sin barra visible (Chrome, Safari, Edge) */
.menu-grupo{ display:flex; flex-direction:column; gap:1px; }
.menu-seccion{ margin-top:8px; }
.menu-seccion > summary{
  display:flex; align-items:center; justify-content:space-between;
  padding:8px 10px 4px; list-style:none; cursor:pointer; user-select:none;
  font-size:0.64rem; font-weight:600; letter-spacing:0.14em; text-transform:uppercase;
  color:rgba(248,243,232,0.42);
}
.menu-seccion > summary::-webkit-details-marker{ display:none; }
.menu-seccion > summary::after{
  content:""; width:6px; height:6px; margin-right:4px;
  border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor;
  transform:rotate(45deg); transition:transform .2s ease;
}
.menu-seccion:not([open]) > summary::after{ transform:rotate(-45deg); }
.menu-seccion > summary:hover{ color:rgba(248,243,232,0.75); }
.menu-enlace{
  display:flex; align-items:center; gap:10px;
  padding:6px 10px; border-radius:8px; margin-top:1px;
  font-size:0.86rem; font-weight:500; line-height:1.3; text-decoration:none;
  color:rgba(248,243,232,0.74);
  transition:background .15s ease, color .15s ease;
}
.menu-enlace .icono{ width:17px; height:17px; flex-shrink:0; opacity:.85; }
.menu-enlace:hover{ background:rgba(248,243,232,0.07); color:var(--cream-soft); }
.menu-enlace.activo{ background:rgba(248,243,232,0.13); color:var(--cream-soft); box-shadow:inset 3px 0 0 var(--rosa); }
.menu-enlace.activo .icono{ opacity:1; }
.menu-enlace.pronto{ color:rgba(248,243,232,0.45); }
.menu-insignia{
  margin-left:auto; min-width:19px; height:19px; padding:0 6px; border-radius:10px;
  display:flex; align-items:center; justify-content:center;
  background:var(--rosa-emp); color:#fff; font-size:0.68rem; font-weight:700;
}
.menu-insignia.suave{ background:rgba(248,243,232,0.16); color:var(--cream-soft); }
.menu-pronto{
  margin-left:auto; padding:1px 6px; border-radius:4px; background:rgba(248,243,232,0.1);
  font-size:0.58rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
}
.menu-alerta{ margin-left:auto; width:9px; height:9px; border-radius:50%; background:#E5484D; }

/* ---------- Zona principal ---------- */
.panel-main{ flex:1; min-width:0; display:flex; flex-direction:column; }

.panel-topbar{
  display:flex; align-items:center; gap:18px;
  padding:16px 32px;
  background:var(--cream-soft);
  border-bottom:1px solid rgba(31,58,87,0.08);
}
.panel-page-title{ font-size:1.3rem; font-weight:600; flex:1; }

.panel-toggle{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
.panel-toggle span{ display:block; width:22px; height:2px; background:var(--navy); margin:5px 0; border-radius:2px; }

.panel-content{ padding:32px; flex:1; }

.panel-messages{ margin-bottom:24px; display:flex; flex-direction:column; gap:10px; }
.panel-message{ padding:12px 18px; border-radius:12px; font-size:0.88rem; background:var(--cream-soft); border-left:4px solid var(--teal); }
.panel-message-error{ border-color:var(--rose); }
.panel-message-success{ border-color:var(--teal); }

/* ============ TOPBAR: notificaciones y usuario ============ */
.panel-topbar-actions{ display:flex; align-items:center; gap:8px; }

.panel-icon-btn{
  position:relative;
  width:40px; height:40px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:transparent; border:none; cursor:pointer;
  color:var(--navy);
  transition:background .2s ease;
}
.panel-icon-btn:hover{ background:rgba(31,58,87,0.06); }
.panel-icon-btn svg{ width:20px; height:20px; }

.panel-badge-dot{
  position:absolute; top:5px; right:6px;
  background:var(--rose); color:var(--cream-soft);
  font-size:0.62rem; font-weight:700;
  min-width:16px; height:16px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  padding:0 4px;
  border:2px solid var(--cream-soft);
}

.panel-notifications, .panel-user{ position:relative; }

/* Desplegable genérico (lo usan tanto notificaciones como usuario) */
.panel-dropdown{
  position:absolute; top:calc(100% + 10px); right:0;
  background:var(--cream-soft);
  border:1px solid rgba(31,58,87,0.1);
  border-radius:18px;
  box-shadow:0 20px 45px -18px rgba(22,40,63,0.28);
  opacity:0; visibility:hidden; transform:translateY(-8px);
  transition:opacity .18s ease, transform .18s ease, visibility .18s;
  z-index:1200;
}
.panel-dropdown.open{ opacity:1; visibility:visible; transform:translateY(0); }

.panel-notif-dropdown{ width:340px; padding:8px 0; }
.panel-dropdown-header{
  font-size:0.78rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--teal); padding:12px 20px 10px;
  border-bottom:1px solid rgba(31,58,87,0.08);
}
.panel-notif-item{ display:flex; gap:12px; align-items:flex-start; padding:14px 20px; border-bottom:1px solid rgba(31,58,87,0.06); }
.panel-notif-item:last-child{ border-bottom:none; }
.panel-notif-dot{ width:8px; height:8px; border-radius:50%; margin-top:6px; flex-shrink:0; background:rgba(31,58,87,0.18); }
.panel-notif-item.unread .panel-notif-dot{ background:var(--rose); }
.panel-notif-title{ font-size:0.87rem; font-weight:600; color:var(--navy); margin:0 0 2px; }
.panel-notif-detail{ font-size:0.8rem; opacity:0.7; margin:0 0 4px; line-height:1.4; }
.panel-notif-time{ font-size:0.72rem; color:var(--teal); margin:0; font-weight:500; }
.panel-dropdown-empty{ padding:20px; text-align:center; font-size:0.85rem; opacity:0.6; }

.panel-user-toggle{
  display:flex; align-items:center; gap:10px;
  background:transparent; border:none; cursor:pointer; padding:6px 8px 6px 6px;
  border-radius:100px;
  transition:background .2s ease;
}
.panel-user-toggle:hover{ background:rgba(31,58,87,0.06); }
.panel-user-avatar{
  width:34px; height:34px; border-radius:50%;
  background:var(--navy); color:var(--cream-soft);
  display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces', serif; font-weight:600; font-size:0.95rem;
  flex-shrink:0;
}
.panel-user-chevron{ width:14px; height:14px; color:var(--navy); opacity:0.5; }

.panel-user-dropdown{ width:200px; padding:8px; }
.panel-user-dropdown a, .panel-user-dropdown button{
  display:block; width:100%; text-align:left;
  padding:10px 12px; border-radius:10px;
  font-family:var(--font-sans); font-size:0.86rem; color:var(--ink);
  background:none; border:none; cursor:pointer;
}
.panel-user-dropdown a:hover, .panel-user-dropdown button:hover{ background:var(--cream-deep); }
.panel-user-dropdown form{ margin:0; }
.panel-user-dropdown button{ color:var(--rose); font-weight:500; }

/* ---------- Tarjeta genérica de contenido ---------- */
.panel-card{ background:var(--cream-soft); border:1px solid rgba(31,58,87,0.08); border-radius:20px; padding:28px; }
.panel-card-header{ display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }
.panel-card-header h3{ font-size:1.05rem; font-weight:600; }

.panel-appointments{ display:flex; flex-direction:column; gap:2px; }
.panel-appointment-item{ display:flex; align-items:center; gap:16px; padding:12px 0; border-bottom:1px solid rgba(31,58,87,0.06); }
.panel-appointment-item:last-child{ border-bottom:none; }
.panel-appointment-time{ font-family:'Fraunces', serif; font-weight:600; color:var(--navy); font-size:0.95rem; width:56px; flex-shrink:0; }
.panel-appointment-patient{ font-size:0.9rem; font-weight:500; color:var(--ink); }
.panel-appointment-type{ font-size:0.78rem; opacity:0.6; }

/* ---------- Estado vacío ("en construcción") ---------- */
.panel-empty-state{ text-align:center; padding:80px 24px; max-width:420px; margin:0 auto; }
.panel-empty-icon{ width:56px; height:56px; margin:0 auto 20px; color:var(--teal); }
.panel-empty-state h2{ font-size:1.3rem; margin-bottom:10px; }
.panel-empty-state p{ opacity:0.65; font-size:0.92rem; }

/* ============ RESPONSIVE ============ */
@media (max-width: 900px){
  .panel-sidebar{ position:fixed; left:0; top:0; bottom:0; transform:translateX(-100%); z-index:1000; transition:transform .28s ease; }
  .panel-sidebar.open{ transform:translateX(0); }
  .panel-toggle{ display:block; }
}
@media (max-width: 600px){
  .panel-user-name{ display:none; }
  .panel-notif-dropdown{ width:290px; right:-40px; }
  /* El botón de la página (p. ej. «+ Nueva cita») baja a una segunda línea */
  .panel-topbar{ flex-wrap:wrap; padding:12px 16px; gap:10px 12px; }
  .panel-topbar > .btn-brush{ order:3; }
  /* Salto de línea antes de esos botones, para que el título tenga sitio */
  .panel-topbar:has(> .btn-brush)::after{ content:""; order:2; flex-basis:100%; height:0; }
  .panel-page-title{ font-size:1.1rem; line-height:1.25; min-width:0; overflow-wrap:anywhere; }
}

/* ---------- Login (sin cambios respecto al paso anterior) ---------- */
.panel-auth-body{ margin:0; min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--navy-deep); padding:24px; }
.panel-auth-wrap{ width:100%; max-width:400px; }

.panel-auth-brand{ text-align:center; margin-bottom:6px; }
.panel-auth-brand .b1{ display:block; font-size:0.62rem; letter-spacing:0.38em; color:var(--teal); font-weight:600; }
.panel-auth-brand .b2{ font-family:'Fraunces', serif; font-style:italic; font-size:1.7rem; color:var(--navy); font-weight:600; }

.panel-auth-subtitle{ text-align:center; opacity:0.65; font-size:0.88rem; margin-bottom:26px; }

.panel-auth-links{ text-align:center; margin-top:20px; }
.panel-auth-links a{ font-size:0.85rem; color:var(--teal); text-decoration:underline; }
.panel-auth-links a:hover{ color:var(--rose); }

.panel-auth-icon{ width:52px; height:52px; margin:0 auto 20px; color:var(--teal); }



/* ---------- Calendario ---------- */
.cal-toolbar{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.cal-month-title{ font-size:1.2rem; text-transform:capitalize; }

/* minmax(0,1fr): los textos largos se cortan con «…» en vez de ensanchar la columna */
.cal-grid{ display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:6px; }
.cal-head{ margin-bottom:6px; }
.cal-cell-head{ text-align:center; font-size:.78rem; font-weight:600; color:var(--navy); opacity:.7; padding:6px 0; }

.cal-cell{ min-height:104px; background:var(--cream-soft); border:1px solid rgba(31,58,87,0.08);
           border-radius:12px; padding:6px; display:flex; flex-direction:column; gap:4px; }
.cal-cell-empty{ background:transparent; border:none; }
.cal-cell-today{ border-color:var(--rose); box-shadow:0 0 0 1px var(--rose) inset; }
.cal-day-num{ font-family:'Fraunces', serif; font-size:.85rem; font-weight:600; color:var(--navy); }

.cal-event{ display:block; font-size:.72rem; line-height:1.3; padding:3px 6px; border-radius:8px;
            color:var(--navy-deep); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-event-time{ font-weight:600; margin-right:4px; }
.cal-event:hover{ filter:brightness(.96); }

/* Colores por tipo, reutilizando la paleta de la marca */
.cal-individual{ background:var(--teal-soft); }
.cal-grupal{ background:var(--rose-soft); }
.cal-taller{ background:#E4D3A8; }              /* variación cálida del tan */
.cal-cancelado{ opacity:.5; text-decoration:line-through; }

/* Badges de la lista */
.cal-badge{ display:inline-block; font-size:.68rem; padding:2px 8px; border-radius:100px; margin-left:6px; vertical-align:middle; }
.cal-badge.cal-individual{ background:var(--teal-soft); color:var(--navy-deep); }
.cal-badge.cal-grupal{ background:var(--rose-soft); color:var(--navy-deep); }
.cal-badge.cal-taller{ background:#E4D3A8; color:var(--navy-deep); }
.cal-badge.cal-cancelado{ background:#e5e5e5; color:#777; text-decoration:none; }

/* Formulario */
.cal-form-row{ margin-bottom:16px; display:flex; flex-direction:column; gap:6px; }
.cal-form-row label{ font-size:.85rem; font-weight:500; color:var(--navy); }
.cal-form-row textarea.form-control-brush{ resize:vertical; }
.cal-field-error{ color:var(--rose); font-size:.78rem; margin:2px 0 0; }
.cal-field-help{ opacity:.6; font-size:.75rem; margin:2px 0 0; }
.cal-form-actions{ display:flex; gap:12px; justify-content:flex-end; margin-top:8px; }

@media (max-width:720px){
  .cal-cell{ min-height:72px; }
  .cal-event{ font-size:.65rem; }
}



/* ---------- Calendario: selector de vista y navegación ---------- */
.cal-nav{ display:flex; gap:6px; }
.cal-switch{ display:flex; gap:4px; background:var(--cream-deep); padding:4px; border-radius:100px; }
.cal-switch-btn{ padding:6px 14px; border-radius:100px; font-size:.8rem; font-weight:500;
                 color:var(--navy); text-decoration:none; transition:background .2s ease, color .2s ease; }
.cal-switch-btn:hover{ background:rgba(31,58,87,0.08); }
.cal-switch-btn.active{ background:var(--rose); color:var(--cream-soft); }

.cal-day-num-link{ font-family:'Fraunces', serif; font-size:.85rem; font-weight:600;
                   color:var(--navy); text-decoration:none; }
.cal-day-num-link:hover{ color:var(--rose); }

/* ---------- Vista semana ---------- */
.cal-week{ display:grid; grid-template-columns:repeat(7, 1fr); gap:6px; }
.cal-week-col{ background:var(--cream-soft); border:1px solid rgba(31,58,87,0.08);
               border-radius:12px; padding:8px; min-height:220px; display:flex; flex-direction:column; }
.cal-week-head{ display:flex; flex-direction:column; align-items:center; gap:2px;
                padding-bottom:8px; margin-bottom:8px; border-bottom:1px solid rgba(31,58,87,0.08); }
.cal-week-dayname{ font-size:.7rem; font-weight:600; text-transform:uppercase; letter-spacing:.08em; opacity:.6; }
.cal-week-body{ display:flex; flex-direction:column; gap:4px; }
.cal-week-empty{ opacity:.35; text-align:center; font-size:.9rem; }

/* ---------- Vista año ---------- */
.cal-year{ display:grid; grid-template-columns:repeat(4, 1fr); gap:14px; }
.cal-year-month{ display:flex; flex-direction:column; gap:6px; padding:22px 18px;
                 background:var(--cream-soft); border:1px solid rgba(31,58,87,0.08);
                 border-radius:16px; text-decoration:none; transition:transform .2s ease, box-shadow .2s ease; }
.cal-year-month:hover{ transform:translateY(-2px); box-shadow:0 10px 24px -12px var(--ring-shadow); }
.cal-year-name{ font-family:'Fraunces', serif; font-size:1.05rem; font-weight:600; color:var(--navy); }
.cal-year-count{ font-size:.8rem; opacity:.6; }

@media (max-width:900px){
  .cal-toolbar{ flex-wrap:wrap; justify-content:center; }
  .cal-year{ grid-template-columns:repeat(2, 1fr); }
  .cal-week{ grid-template-columns:1fr; }        /* semana en columna en móvil */
  .cal-week-col{ min-height:auto; }
}

/* Botón eliminar en el formulario de edición */
.cal-form-actions-spacer{ flex:1; }
.cal-btn-danger{ border-color:var(--rose); color:var(--rose); }
.cal-btn-danger:hover{ background:var(--rose); color:var(--cream-soft); }



/* ---------- Rejilla horaria (día / semana) ---------- */
.cal-timegrid{ display:grid; gap:0; }
.cal-timegrid-day{ grid-template-columns:56px 1fr; }
.cal-timegrid-week{ grid-template-columns:56px repeat(7, minmax(0, 1fr)); }

/* Columna de horas a la izquierda */
.cal-hours{ position:relative; }
.cal-hour-label{ position:absolute; right:8px; transform:translateY(-50%);
                 font-size:.7rem; color:var(--navy); opacity:.55; font-weight:500; }

/* Cabecera de cada columna-día */
.cal-day-col-head{ display:flex; flex-direction:column; align-items:center; gap:2px;
                   padding:6px 0 8px; border-bottom:1px solid rgba(31,58,87,0.08); }
.cal-cell-today-head{ background:rgba(217,139,118,0.10); border-radius:8px 8px 0 0; }

/* Pista donde se posicionan los eventos */
.cal-day-track{ position:relative; border-left:1px solid rgba(31,58,87,0.08); }
.cal-hline{ position:absolute; left:0; right:0; height:1px; background:rgba(31,58,87,0.06); }

/* Evento posicionado de forma absoluta */
.cal-slot{ position:absolute; left:4px; right:4px; overflow:hidden;
           border-radius:8px; padding:4px 8px; text-decoration:none;
           color:var(--navy-deep); box-shadow:0 1px 3px rgba(22,40,63,0.12);
           display:flex; flex-direction:column; gap:1px; line-height:1.25; }
.cal-slot-time{ font-size:.68rem; font-weight:600; }
.cal-slot-title{ font-size:.74rem; font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-slot-meta{ font-size:.65rem; opacity:.7; }
.cal-slot:hover{ filter:brightness(.97); box-shadow:0 4px 10px rgba(22,40,63,0.18); }

/* Colores por tipo (reutilizan las variables de marca) */
.cal-slot.cal-individual{ background:var(--teal-soft); }
.cal-slot.cal-grupal{ background:var(--rose-soft); }
.cal-slot.cal-taller{ background:#E4D3A8; }
.cal-slot.cal-cancelado{ opacity:.5; }
.cal-slot.cal-cancelado .cal-slot-title{ text-decoration:line-through; }

.cal-day-empty{ position:absolute; top:16px; left:50%; transform:translateX(-50%);
                opacity:.6; font-size:.9rem; white-space:nowrap; }

@media (max-width:900px){
  /* En móvil, la semana con 7 columnas horarias no cabe; mostramos scroll horizontal */
  .cal-timegrid-week{ min-width:640px; }
  .panel-card:has(.cal-timegrid-week){ overflow-x:auto; }
}

/* ---------- Modal de nuevo evento ---------- */
.cal-modal-overlay{
  position:fixed; inset:0; background:rgba(22,40,63,0.45);
  display:flex; align-items:center; justify-content:center; padding:20px;
  opacity:0; visibility:hidden; transition:opacity .2s ease, visibility .2s;
  z-index:2000;
}
.cal-modal-overlay.open{ opacity:1; visibility:visible; }

.cal-modal{
  background:var(--cream-soft); border-radius:20px; padding:28px;
  width:100%; max-width:480px; max-height:90vh; overflow-y:auto;
  box-shadow:0 30px 60px -20px rgba(22,40,63,0.4);
  transform:translateY(10px); transition:transform .2s ease;
}
.cal-modal-overlay.open .cal-modal{ transform:translateY(0); }

.cal-modal-header{ display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
.cal-modal-header h3{ font-size:1.2rem; font-weight:600; }
.cal-modal-close{
  background:none; border:none; font-size:1.6rem; line-height:1;
  color:var(--navy); cursor:pointer; opacity:.6; padding:0 4px;
}
.cal-modal-close:hover{ opacity:1; color:var(--rose); }

.cal-form-grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }

/* Cursor que indica que la celda del mes es clicable */
.cal-cell-click{ cursor:pointer; }
.cal-cell-click:hover{ background:var(--cream-deep); }

@media (max-width:520px){
  .cal-form-grid-2{ grid-template-columns:1fr; }
}
/* ---------- Mensajes del formulario de contacto ---------- */
.msg-item{ padding:18px 0; border-bottom:1px solid rgba(31,58,87,0.08); }
.msg-item:last-of-type{ border-bottom:none; }
.msg-item.unread{ border-left:3px solid var(--rose); padding-left:14px; }
/* Al llegar desde un aviso (campana o Inicio), el mensaje o la solicitud se resalta */
.msg-item:target, .solicitud-item:target{
  background:var(--aviso-tinte); box-shadow:0 0 0 10px var(--aviso-tinte); border-radius:2px; scroll-margin-top:24px;
}
.msg-header{ display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:12px; }
.msg-name{ font-weight:600; color:var(--navy); }
.msg-meta{ font-size:0.8rem; opacity:0.7; margin-top:2px; }
.msg-meta a{ text-decoration:underline; text-underline-offset:2px; }
.msg-body{ margin:10px 0 0; font-size:0.92rem; white-space:normal; overflow-wrap:anywhere; }
.msg-pagination{ display:flex; align-items:center; justify-content:center; gap:16px; margin-top:22px; font-size:0.85rem; }

/* ---------- Contenido de la web: talleres, tarifas y horario ---------- */
.cont-intro{ max-width:760px; font-size:.9rem; opacity:.75; margin:0 0 20px; }
.cont-intro a{ text-decoration:underline; text-underline-offset:2px; }
.cont-card + .cont-card{ margin-top:24px; }
.cont-card .panel-card-header{ flex-wrap:wrap; gap:12px; }
.cont-item{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 20px;
            padding:16px 0; border-bottom:1px solid rgba(31,58,87,0.08); }
.cont-item:last-child{ border-bottom:none; }
.cont-main{ min-width:0; flex:1 1 280px; }
.cont-title{ font-weight:600; color:var(--navy); }
.cont-meta{ display:flex; flex-wrap:wrap; gap:4px 8px; font-size:.82rem; opacity:.75; margin-top:4px; }
.cont-meta span + span::before{ content:"·"; margin-right:8px; opacity:.6; }
.cont-precio{ font-weight:600; }
.cont-actions{ display:flex; flex-wrap:wrap; gap:8px; }
.cont-vacio{ opacity:.6; font-size:.9rem; margin:0; }

@media (max-width:720px){
  .cont-meta{ flex-direction:column; gap:2px; }
  .cont-meta span + span::before{ content:none; }
}

.cont-badge{ display:inline-block; font-size:.68rem; font-weight:600; padding:2px 9px; border-radius:100px;
             margin-left:8px; vertical-align:middle; }
.cont-badge.publicado{ background:var(--verde-tinte); color:var(--verde-prof); }
.cont-badge.borrador{ background:var(--arena); color:var(--arena-prof); }
.cont-badge.pasado{ background:#ececec; color:#666; }

/* Casilla «Publicar en la web» en los formularios */
.cal-form-check label{ display:flex; align-items:center; gap:10px; cursor:pointer; }
.cal-form-check input[type="checkbox"]{ width:18px; height:18px; accent-color:var(--navy); }

/* ---------- Kit para redes de un taller ---------- */
.redes-aviso a{ text-decoration:underline; }
.redes-grid{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:24px; align-items:start; }
.redes-ancho{ grid-column:1 / -1; }
.redes-num{
  display:inline-flex; align-items:center; justify-content:center;
  width:26px; height:26px; margin-right:8px; border-radius:50%;
  background:var(--serenity-tinte); color:var(--navy); font-size:.85rem; font-family:var(--font-sans);
}
.redes-imagen{ display:block; width:100%; max-width:340px; border-radius:14px; border:1px solid rgba(31,58,87,0.08); margin-bottom:10px; }
.redes-nota{ font-size:.84rem; opacity:.75; margin:10px 0 0; }
.redes-alerta{ color:var(--rose); opacity:1; font-weight:600; }
.redes-botones{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.redes-textarea{ font-size:.92rem; line-height:1.55; resize:vertical; }
.redes-pasos{ margin:0 0 6px; padding-left:20px; font-size:.92rem; }
.redes-pasos li{ margin-bottom:6px; }
.redes-registro{ display:grid; grid-template-columns:1.2fr 1fr 2fr auto; gap:12px; align-items:end;
                 margin-top:18px; padding-top:18px; border-top:1px solid rgba(31,58,87,0.08); }
.redes-registro .cal-form-row{ margin-bottom:0; }
.redes-registro .btn-brush{ margin-bottom:2px; }
.cont-badge.redes{ background:var(--serenity-tinte); color:var(--navy); }
.cont-badge.sin-anunciar{ background:var(--rosa-tinte); color:var(--rosa-prof); }
.cont-badge.por-revisar{ background:var(--rosa-emp); color:#fff; text-decoration:none; }
.cont-badge.por-revisar:hover{ background:var(--rosa-prof); color:#fff; }
.cont-img-actual{ display:block; max-width:180px; border-radius:12px; border:1px solid rgba(31,58,87,0.08); margin-bottom:6px; }

.redes-botones .btn-brush{ white-space:normal; text-align:center; }

@media (max-width:900px){
  .redes-grid{ grid-template-columns:minmax(0, 1fr); }
  .redes-registro{ grid-template-columns:minmax(0, 1fr); }
}
.redes-titulo{ font-size:1.5rem; margin:0 0 6px; }
.cont-check{ display:flex; align-items:center; gap:8px; font-size:.85rem; margin:2px 0 8px; cursor:pointer; }

/* Menú de usuario: quién ha iniciado sesión */
.panel-user-cuenta{ margin:0 0 6px; padding:8px 12px 10px; font-size:.82rem; font-weight:600; color:var(--navy);
                    border-bottom:1px solid rgba(31,58,87,0.08); overflow-wrap:anywhere; }
.panel-user-cuenta span{ font-weight:400; opacity:.65; }

/* ---------- Inicio: próximos talleres ---------- */
.panel-card-link{ font-size:.82rem; font-weight:500; color:var(--teal); text-decoration:underline; text-underline-offset:2px; }
.panel-taller-fila{ display:flex; align-items:center; gap:12px; border-bottom:1px solid rgba(31,58,87,0.06); }
.panel-taller-fila:last-child{ border-bottom:none; }
.panel-taller-item{ flex:1; min-width:0; color:inherit; margin:0 -10px; padding:12px 10px; border-radius:12px; border-bottom:none; transition:background .2s ease; }
.panel-taller-item:hover{ background:var(--cream-deep); }
.panel-taller-etiquetas{ display:flex; flex-wrap:wrap; gap:4px; margin:4px 0 3px; }
.panel-taller-etiquetas .cont-badge{ margin-left:0; }
.panel-taller-redes{ flex-shrink:0; font-size:.78rem; font-weight:600; color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.cal-field-help ul{ margin:2px 0 0; padding-left:18px; }

/* ---------- Agenda (fase 3): tipos y estados de cita, cierres ---------- */
.cal-evaluacion{ background:#C9DCE6; }
.cal-reunion_familia{ background:#DDD3EA; }
.cal-coordinacion_colegio{ background:#D3E2C3; }
.cal-badge.cal-evaluacion,
.cal-badge.cal-reunion_familia,
.cal-badge.cal-coordinacion_colegio{ color:var(--navy-deep); }
.cal-badge.cal-estado-realizada{ background:var(--verde-tinte); color:var(--verde-prof); }
.cal-badge.cal-estado-cancelada_familia,
.cal-badge.cal-estado-cancelada_gabinete{ background:#e5e5e5; color:#666; }

/* Días cerrados: rayado suave; las vacaciones de un profesional solo se anotan */
.cal-cell-cerrado{ background:repeating-linear-gradient(135deg, var(--arena) 0 8px, var(--cream-soft) 8px 16px); }
.cal-track-cerrado{ background:repeating-linear-gradient(135deg, rgba(244,238,230,.9) 0 8px, transparent 8px 16px); }
.cal-cierre{ display:block; max-width:100%; font-size:.68rem; line-height:1.3; padding:2px 6px; border-radius:6px;
             background:var(--arena); color:var(--arena-prof); font-weight:600;
             overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-cierre-prof{ background:var(--serenity-tinte); color:var(--serenity-prof); font-weight:500; }
.cal-day-col-head .cal-cierre{ margin-top:2px; }
.cal-cierres-dia{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.cal-cierres-dia .cal-cierre{ font-size:.8rem; padding:4px 10px; }

.panel-message-warning{ border-color:var(--tan); background:var(--arena); }
.panel-aviso-cierre{ margin:0 0 10px; padding:8px 12px; border-radius:10px; background:var(--arena);
                     color:var(--arena-prof); font-size:.85rem; font-weight:600; }
.cierre-afectadas{ margin-top:10px; padding:10px 14px; border-radius:12px; background:var(--rosa-tinte); font-size:.84rem; }
.cierre-afectadas p{ margin:0 0 4px; font-weight:600; color:var(--rosa-prof); }
.cierre-afectadas ul{ margin:0; padding-left:18px; }
.cierre-afectadas a{ text-decoration:underline; text-underline-offset:2px; }

/* Agenda del mes (lista bajo la rejilla): en el móvil los botones bajan a otra línea */
.cal-agenda-datos{ flex:1; min-width:0; }
.cal-agenda-acciones{ display:flex; gap:8px; flex-shrink:0; }
@media (max-width:720px){
  .cal-agenda .panel-appointment-item{ flex-wrap:wrap; row-gap:10px; }
  .cal-agenda-acciones{ width:100%; padding-left:72px; }
}

/* Semana: todas las cabeceras miden lo mismo (también el hueco de la columna
   de horas), para que las horas cuadren con las citas aunque un día tenga
   la etiqueta de un festivo. */
.cal-timegrid-week .cal-day-col-head{ box-sizing:border-box; height:82px; justify-content:flex-start; padding:6px 4px 8px; }
.cal-timegrid-week .cal-day-col-head .cal-cierre{ flex-shrink:0; }

/* ---------- Alumnos y familias (fase 3, entrega 2) ---------- */
.panel-filtros-cabecera{ align-items:flex-start; }
.panel-filtros{ display:flex; flex-wrap:wrap; gap:6px; }
.panel-filtro{ padding:6px 12px; border-radius:100px; font-size:.8rem; font-weight:500; text-decoration:none;
               background:var(--cream-deep); color:var(--navy); }
.panel-filtro span{ opacity:.6; margin-left:2px; }
.panel-filtro.activo{ background:var(--navy); color:var(--cream-soft); }
.panel-filtro.activo span{ opacity:.8; }
.panel-buscador{ display:flex; gap:8px; flex:1 1 260px; max-width:420px; }
.panel-buscador .form-control-brush{ padding-top:8px; padding-bottom:8px; }

.ficha-grid{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:24px; align-items:start; }
.ficha-columna{ display:flex; flex-direction:column; gap:24px; min-width:0; }
.ficha-datos{ display:grid; grid-template-columns:minmax(0, 11rem) minmax(0, 1fr); gap:8px 16px; margin:0; font-size:.9rem; }
.ficha-datos dt{ font-weight:500; color:var(--navy); opacity:.75; }
.ficha-datos dd{ margin:0; overflow-wrap:anywhere; }
.ficha-subtitulo{ font-size:.95rem; margin:20px 0 6px; }
.ficha-texto{ font-size:.9rem; margin:0; overflow-wrap:anywhere; }
.ficha-salud{ border:1px solid var(--rosa); }
.ficha-alergias{ font-weight:600; color:var(--rosa-prof); margin:0; overflow-wrap:anywhere; }
.ficha-nota{ font-size:.76rem; opacity:.6; margin:10px 0 0; }
.ficha-aviso{ margin:0 0 20px; padding:10px 14px; border-radius:12px; background:var(--arena);
              color:var(--arena-prof); font-size:.86rem; font-weight:600; }
.panel-card .ficha-aviso{ margin-bottom:12px; }
.ficha-borrar{ margin:24px 0 0; font-size:.82rem; }
.ficha-borrar a{ color:var(--rose); text-decoration:underline; text-underline-offset:2px; }
.ficha-formulario{ display:flex; flex-direction:column; gap:24px; }
.contacto-relacion{ font-size:.8rem; opacity:.65; margin-left:6px; }
.contacto-etiquetas{ display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; }
.contacto-etiquetas .cont-badge{ margin-left:0; }
.cont-meta a{ text-decoration:underline; text-underline-offset:2px; }
.espera-num{ display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
             width:30px; height:30px; border-radius:50%; background:var(--serenity-tinte);
             color:var(--navy); font-family:'Fraunces', serif; font-weight:600; }
.msg-familia{ margin:8px 0 0; font-size:.84rem; }
.msg-familia a{ text-decoration:underline; text-underline-offset:2px; }
@media (max-width:900px){
  .ficha-grid{ grid-template-columns:minmax(0, 1fr); }
}
@media (max-width:520px){
  .ficha-datos{ grid-template-columns:minmax(0, 1fr); gap:2px; }
  .ficha-datos dd{ margin-bottom:8px; }
}

/* ---------- Traza de auditoría ---------- */
.traza-filtros{ display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:0 12px; align-items:end; }
.traza-filtros .cal-form-row{ margin-bottom:12px; }
.traza-filtros-botones{ grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.traza-tabla-caja{ overflow-x:auto; }
.traza-tabla{ width:100%; min-width:820px; border-collapse:collapse; font-size:.82rem; }   /* en el móvil se desliza de lado */
.traza-tabla th{ text-align:left; font-weight:600; color:var(--navy); padding:8px 10px;
                 border-bottom:1px solid rgba(31,58,87,0.15); white-space:nowrap; }
.traza-tabla td{ padding:8px 10px; border-bottom:1px solid rgba(31,58,87,0.06); vertical-align:top; }
.traza-fecha{ white-space:nowrap; }
.traza-valor{ max-width:260px; white-space:pre-wrap; overflow-wrap:anywhere; }
.traza-accion{ display:inline-block; padding:2px 8px; border-radius:100px; font-size:.72rem; font-weight:600;
               white-space:nowrap; background:var(--cream-deep); color:var(--navy); }
.traza-alta{ background:var(--verde-tinte); color:var(--verde-prof); }
.traza-baja, .traza-borrado{ background:var(--rosa-tinte); color:var(--rosa-prof); }
.traza-traza_desactivada, .traza-purgado{ background:var(--arena); color:var(--arena-prof); }
.traza-resumen{ margin-top:20px; padding-top:20px; border-top:1px solid rgba(31,58,87,0.08); }
@media (max-width:900px){
  .traza-filtros{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
}
@media (max-width:520px){
  .traza-filtros{ grid-template-columns:minmax(0, 1fr); }
}


/* ==================================================================
   PANEL ÁGIL (octubre 2026): barra superior, botones, formularios
   compactos, listas de valores (Tom Select) y calendarios (flatpickr)
   ================================================================== */
:root{
  --panel-borde:#D3DCE3;
  --panel-borde-fuerte:#AEBBC6;
  --peligro:#C62828; --peligro-osc:#A31F1F; --peligro-tinte:#FDECEA;
  --exito:#2E7D5B;   --exito-osc:#23634A;
  --aviso:#8A5A00;   --aviso-borde:#E0B252; --aviso-tinte:#FFF4DB;
}

/* ---------- Barra superior y contenido, más compactos ---------- */
.panel-topbar{ padding:10px 28px; gap:14px; min-height:60px; box-sizing:border-box; }
.panel-page-title{ font-size:1.2rem; }
.panel-content{ padding:24px 28px; }
.panel-card{ padding:20px 22px; border-radius:14px; }
.panel-card-header{ margin-bottom:14px; }

/* Campana: cada mensaje sin leer lleva a su sitio en «Mensajes» */
.panel-notif-item{ text-decoration:none; color:inherit; padding:12px 18px; }
.panel-notif-item:hover{ background:var(--cream-deep); }
.panel-notif-item > span:last-child{ display:flex; flex-direction:column; min-width:0; }
.panel-notif-title, .panel-notif-detail, .panel-notif-time{ display:block; }
.panel-notif-detail{ overflow-wrap:anywhere; }
.panel-dropdown-pie{
  display:block; padding:10px 18px 6px; text-align:center; font-size:.82rem; font-weight:600;
  color:var(--azul); border-top:1px solid rgba(31,58,87,0.08); text-decoration:none;
}
.panel-dropdown-pie:hover{ text-decoration:underline; }
.panel-icon-btn .icono{ width:20px; height:20px; }

/* Perfil: punto rojo si la traza está apagada */
.panel-user-avatar{ position:relative; }
.panel-user-alerta{
  position:absolute; top:-2px; right:-2px; width:11px; height:11px; border-radius:50%;
  background:#E5484D; border:2px solid var(--cream-soft);
}
.panel-user-dropdown{ width:250px; }
.panel-user-dropdown a.panel-user-aviso{
  display:flex; gap:8px; align-items:flex-start; margin:2px 0 6px;
  background:var(--peligro-tinte); color:var(--peligro-osc); font-size:.8rem; line-height:1.35;
}
.panel-user-dropdown a.panel-user-aviso:hover{ background:#F9DCD8; }
.panel-user-aviso .icono{ width:16px; height:16px; flex-shrink:0; margin-top:1px; }

/* ---------- Botones: colores claros según lo que hacen ---------- */
.panel-body .btn-brush{
  gap:6px; padding:8px 15px; border-radius:8px; border-width:1px;
  font-size:.84rem; font-weight:600; box-shadow:none;
}
.panel-body .btn-brush:hover{ transform:none; }
.panel-body .btn-brush.small{ padding:6px 12px; font-size:.82rem; }
.panel-body .btn-brush .icono{ width:15px; height:15px; flex-shrink:0; }
.panel-body .btn-brush.filled{ background:var(--azul); border-color:var(--azul); color:#fff; box-shadow:none; }
.panel-body .btn-brush.filled:hover{ background:var(--azul-osc); border-color:var(--azul-osc); color:#fff; }
.panel-body .btn-brush.outline{ background:#fff; border-color:var(--panel-borde); color:var(--azul); }
.panel-body .btn-brush.outline:hover{ background:var(--serenity-tinte); border-color:var(--azul); color:var(--azul-osc); }
/* Borrar: rojo de verdad, para no confundirlo con nada más */
.panel-body .btn-brush.btn-peligro{ background:var(--peligro); border-color:var(--peligro); color:#fff; }
.panel-body .btn-brush.btn-peligro:hover{ background:var(--peligro-osc); border-color:var(--peligro-osc); color:#fff; }
.panel-body .btn-brush.btn-peligro-suave{ background:#fff; border-color:#E8B4B0; color:var(--peligro); }
.panel-body .btn-brush.btn-peligro-suave:hover{ background:var(--peligro-tinte); border-color:var(--peligro); color:var(--peligro-osc); }
.panel-body .btn-brush.btn-exito{ background:var(--exito); border-color:var(--exito); color:#fff; }
.panel-body .btn-brush.btn-exito:hover{ background:var(--exito-osc); border-color:var(--exito-osc); color:#fff; }
.panel-body .btn-brush.btn-aviso{ background:#fff; border-color:var(--aviso-borde); color:var(--aviso); }
.panel-body .btn-brush.btn-aviso:hover{ background:var(--aviso-tinte); }
/* Los botones antiguos de «Eliminar» del calendario, también en rojo */
.panel-body .cal-btn-danger{ background:#fff; border-color:#E8B4B0; color:var(--peligro); }
.panel-body .cal-btn-danger:hover{ background:var(--peligro-tinte); border-color:var(--peligro); color:var(--peligro-osc); }

/* ---------- Formularios compactos, en dos columnas ---------- */
.panel-body .form-control-brush{
  margin-bottom:0; min-height:38px; box-sizing:border-box;
  padding:7px 11px; border:1px solid var(--panel-borde); border-radius:8px;
  background:#fff; font-size:.9rem; line-height:1.4;
}
.panel-body .form-control-brush:hover{ border-color:var(--panel-borde-fuerte); }
.panel-body .form-control-brush:focus{ border-color:var(--azul); box-shadow:0 0 0 3px rgba(35,79,123,0.14); }
.panel-body textarea.form-control-brush{ min-height:76px; }
.cal-form-card{ max-width:920px; }
.form-campos{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px 20px; }
.form-campo{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.form-campo.ancho{ grid-column:1 / -1; }
.form-campo > label{ font-size:.8rem; font-weight:600; color:var(--navy); }
.form-campo .obligatorio{ color:var(--peligro); margin-left:2px; }
.form-campo.form-check{ justify-content:center; }
.form-check-etiqueta{ display:flex; align-items:center; gap:8px; font-size:.87rem; color:var(--texto); cursor:pointer; }
.form-check-etiqueta input{ width:17px; height:17px; flex-shrink:0; accent-color:var(--azul); }
.form-campo.con-error .form-control-brush, .form-campo.con-error .ts-control{ border-color:var(--peligro); }
.panel-body .cal-field-help{ font-size:.72rem; opacity:.65; margin:0; line-height:1.4; }
.panel-body .cal-field-error{ font-size:.76rem; color:var(--peligro); margin:0; }
.panel-body .cal-form-row{ margin-bottom:12px; gap:4px; }
.panel-body .cal-form-row label{ font-size:.8rem; font-weight:600; }
.panel-body .cal-form-actions{ margin-top:18px; padding-top:14px; border-top:1px solid rgba(31,58,87,0.08); align-items:center; }
@media (max-width:760px){
  .form-campos{ grid-template-columns:minmax(0, 1fr); }
}

/* ---------- Listas de valores con búsqueda (Tom Select) ---------- */
.panel-body .ts-wrapper.form-control-brush{ padding:0; border:0; background:none; box-shadow:none; min-height:0; }
.panel-body .ts-wrapper.single{ --ts-pr-caret:1.6rem; }
.panel-body .ts-control{
  min-height:38px; padding:7px 11px; border:1px solid var(--panel-borde); border-radius:8px;
  background:#fff; font-size:.9rem; line-height:1.4; color:var(--texto); align-items:center;
}
.panel-body .ts-control input{ font-size:.9rem; color:var(--texto); }
.panel-body .ts-wrapper:hover .ts-control{ border-color:var(--panel-borde-fuerte); }
.panel-body .ts-wrapper.focus .ts-control{ border-color:var(--azul); box-shadow:0 0 0 3px rgba(35,79,123,0.14); }
.panel-body .ts-wrapper.single .ts-control::after{
  content:""; position:absolute; right:12px; top:50%; width:7px; height:7px; margin-top:-6px;
  border-right:1.5px solid #6B7B87; border-bottom:1.5px solid #6B7B87; transform:rotate(45deg);
}
.panel-body .ts-wrapper.single.dropdown-active .ts-control::after{ transform:rotate(-135deg); margin-top:-2px; }
.panel-body .ts-dropdown{
  margin-top:4px; border:1px solid var(--panel-borde); border-radius:8px; overflow:hidden;
  box-shadow:0 14px 30px -14px rgba(22,40,63,0.35); font-size:.88rem; color:var(--texto); z-index:1500;
}
.panel-body .ts-dropdown-content{ max-height:260px; }
/* Listas de la ventana del calendario: se abren colgadas del <body> y deben
   quedar por encima del fondo oscuro de la ventana (z-index 2000). */
.panel-body > .ts-dropdown{ z-index:2100; }
.panel-body .ts-dropdown .option, .panel-body .ts-dropdown .create, .panel-body .ts-dropdown .no-results{ padding:7px 11px; }
.panel-body .ts-dropdown .active{ background:var(--serenity-tinte); color:var(--azul-osc); }
.panel-body .ts-dropdown .create{ color:var(--azul); font-weight:600; }
.panel-body .ts-dropdown .no-results{ opacity:.6; }
.panel-body .ts-dropdown [data-selectable] .highlight{ background:rgba(229,190,92,.35); }
.panel-body .plugin-clear_button .clear-button{ font-size:1.1rem; color:#6B7B87; }

/* ---------- Calendarios (flatpickr): lo común con la web está en synergia.css ---------- */
.flatpickr-day.inRange{ background:var(--serenity-tinte); border-color:var(--serenity-tinte); box-shadow:-5px 0 0 var(--serenity-tinte), 5px 0 0 var(--serenity-tinte); }
.flatpickr-day.dia-con-cierre::after{
  content:""; position:absolute; left:50%; bottom:3px; width:5px; height:5px; margin-left:-2.5px;
  border-radius:50%; background:var(--tan);
}
.flatpickr-day.selected.dia-con-cierre::after, .flatpickr-day.startRange.dia-con-cierre::after,
.flatpickr-day.endRange.dia-con-cierre::after{ background:#fff; }
.flatpickr-time input{ font-family:var(--font-sans); }

/* Calendario de rango de los cierres */
.rango-bloque .flatpickr-calendar.inline{ box-shadow:none; border:1px solid var(--panel-borde); margin-top:4px; }
.rango-resumen{ margin:6px 0 0; font-size:.88rem; font-weight:600; color:var(--navy); }
.rango-leyenda{ display:flex; align-items:center; gap:6px; margin:4px 0 0; font-size:.74rem; opacity:.7; }
.rango-leyenda::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--tan); }

/* ---------- Ficha que se modifica en el sitio ---------- */
.ficha-form fieldset{ border:0; margin:0; padding:0; min-width:0; }
.ficha-form fieldset:disabled .form-control-brush,
.ficha-form fieldset:disabled .ts-control{
  background:transparent; border-color:transparent; box-shadow:none; padding-left:0; padding-right:0;
  min-height:0; color:var(--texto); -webkit-text-fill-color:var(--texto); opacity:1; cursor:default;
}
.ficha-form fieldset:disabled .ts-wrapper.disabled .ts-control{ opacity:1; }
.ficha-form fieldset:disabled ::placeholder{ color:transparent; }
.ficha-form fieldset:disabled select.form-control-brush{ appearance:none; }
.ficha-form fieldset:disabled .ts-wrapper.single .ts-control::after,
.ficha-form fieldset:disabled .clear-button{ display:none; }
.ficha-form fieldset:disabled textarea.form-control-brush{ resize:none; min-height:0; }
.ficha-form fieldset:disabled .cal-field-help,
.ficha-form fieldset:disabled .obligatorio{ display:none; }
.ficha-form fieldset:disabled .form-campo > label{ color:var(--texto-suave); font-weight:500; }
.ficha-form .solo-editando{ display:none; }
.ficha-form.editando .solo-editando{ display:flex; }
.ficha-form.editando .solo-leyendo{ display:none; }
.ficha-form.editando .panel-card{ border-color:rgba(35,79,123,0.35); }
.ficha-barra{
  position:sticky; bottom:0; z-index:20; margin-top:18px; padding:12px 16px; gap:10px;
  align-items:center; justify-content:flex-end; border-radius:12px;
  background:var(--cream-soft); border:1px solid rgba(35,79,123,0.25);
  box-shadow:0 -10px 24px -18px rgba(22,40,63,0.4);
}
.ficha-barra-texto{ margin-right:auto; font-size:.84rem; color:var(--navy); font-weight:600; }
.ficha-card-cabecera{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:14px; }
.ficha-card-cabecera h3{ margin:0; }
.ficha-pie{ display:flex; justify-content:flex-end; margin-top:20px; }

/* ---------- Configuración ---------- */
.config-lista{ display:flex; flex-direction:column; gap:18px; max-width:920px; }
.config-bloque{ border-left:4px solid var(--exito); }
.config-bloque.apagada{ border-left-color:var(--peligro); }
.config-cabecera{ display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.config-cabecera h3{ margin:0 0 4px; font-size:1.05rem; }
.config-texto{ margin:0; font-size:.86rem; opacity:.75; max-width:640px; }
.config-datos{ margin-top:14px; }
.config-acciones{ display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.config-acciones form{ margin:0; }
.config-cabecera > .btn-brush{ flex-shrink:0; }
.config-usuarios{ margin-top:10px; }

/* Opiniones del Inicio de la web (opiniones.html) */
.opinion-texto{ margin:8px 0 6px; padding:8px 12px; border-left:3px solid var(--panel-borde); font-size:.9rem; color:var(--texto); white-space:normal; }
.opinion-item .cont-actions form{ margin:0; }
.opiniones-ocultas > summary{ cursor:pointer; font-weight:600; color:var(--navy); }

/* Solicitudes de inscripción desde la web (_solicitud.html) */
.solicitud-item{ padding:14px 0; border-bottom:1px solid var(--linea); }
.solicitud-item:last-child{ border-bottom:0; }
.solicitud-cabecera{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.solicitud-cabecera .cont-badge{ margin-left:0; }
.solicitud-tramitar{ margin-top:10px; }
.solicitud-acciones{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:10px; }
.solicitud-acciones form{ margin:0; }
.solicitud-aviso{ font-size:.8rem; font-weight:600; color:var(--aviso); }
p.solicitud-aviso{ margin:8px 0 0; }
/* Fase 5B: revisión manual, confirmar, notas e historial */
.solicitud-confirmar{ margin-top:10px; }
.solicitud-confirmar > summary{ list-style:none; display:inline-flex; cursor:pointer; }
.solicitud-confirmar > summary::-webkit-details-marker{ display:none; }
.solicitud-confirmar[open] > summary{ margin-bottom:8px; }
.solicitud-confirmar .ficha-card-sub{ margin:0 0 8px; }
.solicitud-cierre{ padding-top:10px; border-top:1px dashed var(--linea); }
.solicitud-nota{ display:flex; flex:1 1 100%; gap:6px; min-width:0; }
.solicitud-nota input{ flex:1; min-width:0; padding:6px 10px; font-size:.84rem; }
.solicitud-historial{ margin-top:10px; font-size:.8rem; }
.solicitud-historial summary{ cursor:pointer; font-weight:600; color:var(--navy); }
.solicitud-historial ol{ list-style:none; margin:6px 0 0; padding:0; display:flex; flex-direction:column; gap:3px; }
.solicitud-historial li{ display:flex; flex-wrap:wrap; gap:4px 10px; color:var(--texto); }
.solicitud-historial-fecha{ color:var(--texto-suave); font-variant-numeric:tabular-nums; }
.solicitudes-cerradas{ margin-top:12px; }
.solicitudes-cerradas > summary{ cursor:pointer; font-weight:600; font-size:.86rem; color:var(--navy); }

/* Privacidad */
.privacidad-plazo{ display:flex; align-items:flex-end; gap:10px; max-width:420px; margin-top:12px; }
.privacidad-plazo .form-campo{ flex:1 1 auto; margin:0; }
.anonimizar-lista{ margin:0 0 12px; padding-left:18px; font-size:.88rem; }
.cal-form-card > .cuenta-aviso{ margin:0 0 14px; }
.familia-exportar{ display:inline-flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:.8rem; color:var(--texto-suave); }

/* Una cuenta del panel (usuario.html) */
.cuenta-estado{ display:flex; flex-wrap:wrap; gap:4px; }
.cuenta-estado .cont-badge{ margin-left:0; }
.cuenta-clave .form-campo{ margin-bottom:10px; }
.cuenta-aviso{ display:flex; gap:6px; margin:10px 0 0; padding:8px 10px; border-radius:8px;
               background:var(--aviso-tinte); color:var(--aviso); font-size:.8rem; font-weight:600; }
.cuenta-aviso .icono{ flex-shrink:0; width:15px; height:15px; margin-top:1px; }
.cuenta-confirmar{ margin-top:12px; }
.cuenta-confirmar > summary{ list-style:none; display:inline-flex; cursor:pointer; }
.cuenta-confirmar > summary::-webkit-details-marker{ display:none; }
.cuenta-confirmar[open] > summary{ display:none; }
.cuenta-confirmar form{ display:flex; flex-direction:column; align-items:flex-start; gap:8px; margin:0; }
@media (max-width:600px){
  .config-cabecera{ flex-wrap:wrap; }
}
.estado-interruptor{
  flex-shrink:0; padding:4px 10px; border-radius:100px; font-size:.74rem; font-weight:700;
  background:var(--peligro-tinte); color:var(--peligro-osc);
}
.estado-interruptor.encendido{ background:var(--verde-tinte); color:var(--verde-prof); }
.traza-estado-linea{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin:0 0 16px; font-size:.86rem; color:var(--texto-suave); }
.traza-estado-linea a{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }

/* ---------- Buscadores con lista de valores ---------- */
.panel-buscador .ts-wrapper{ flex:1; min-width:0; }

@media (max-width:900px){
  .panel-sidebar{ height:100vh; height:100dvh; }
}
@media (max-width:600px){
  .panel-topbar{ padding:10px 16px; }
  .panel-content{ padding:18px 16px; }
  .panel-card{ padding:16px; }
}


/* En una ficha, mientras solo se lee, los campos vacíos no se muestran */
.ficha-form:not(.editando) .form-campo.vacio{ display:none; }
.ficha-form:not(.editando) .campo-alergias textarea{ color:var(--rosa-prof); -webkit-text-fill-color:var(--rosa-prof); font-weight:600; }
.ficha-edad{ margin:-6px 0 0; font-size:.8rem; color:var(--texto-suave); }
.ficha-cabecera-acciones{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.ficha-sin-dato{ margin:0; font-size:.88rem; color:var(--texto-suave); }
.ficha-form.editando .ficha-sin-dato{ display:none; }
/* Tarjetas de un solo campo (Notas, Alergias): la etiqueta repetiría el título */
.ficha-form .ficha-tarjeta-unica .form-campo > label{
  position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;
}
.ficha-form fieldset:disabled textarea.form-control-brush{ field-sizing:content; height:auto; }
.ficha-valor{ margin:0; padding:7px 0; font-size:.9rem; line-height:1.4; color:var(--texto); }
.ficha-form .solo-editando > .form-campo{ flex:1; }
/* Buscador dentro del desplegable de la lista de valores */
.panel-body .plugin-dropdown_input .dropdown-input{ padding:8px 11px; border-bottom:1px solid var(--panel-borde); font-size:.88rem; }
.panel-body .plugin-dropdown_input .dropdown-input:focus{ outline:none; background:var(--serenity-tinte); }
.panel-body .plugin-dropdown_input.focus.dropdown-active .ts-control{ border-color:var(--azul); box-shadow:0 0 0 3px rgba(35,79,123,0.14); }
/* «hidden» manda aunque el elemento tenga su propio display (p. ej. .form-campo) */
.panel-body [hidden]{ display:none !important; }
/* El campo interno del calendario de rango no se ve: solo el calendario */
.rango-bloque input.rango-oculto{ display:none !important; }
/* Leyendo la ficha, las casillas no se muestran: su estado ya se ve en el texto o en la etiqueta */
.ficha-form:not(.editando) .form-campo.form-check{ display:none; }

/* ==================================================================
   INICIO (16/10/2026): saludo, buscador y accesos, cifras que llevan
   a su pantalla, agenda de hoy, próximos días y pendientes. Retocado el
   30/10/2026: cifras a 0 en gris y las que piden algo en naranja; lo
   pendiente se lee entero y va por urgencia
   ================================================================== */
.inicio-cabecera{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:14px 24px; margin-bottom:20px; }
.inicio-saludo h2{ margin:0; font-size:1.45rem; line-height:1.2; }
.inicio-saludo p{ margin:4px 0 0; font-size:.9rem; color:var(--texto-suave); }
.inicio-herramientas{ display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:10px; flex:1 1 520px; max-width:780px; }
.inicio-buscador{ flex:1 1 280px; min-width:0; margin:0; }
.inicio-buscador .ts-wrapper{ width:100%; }
.inicio-acciones{ display:flex; flex-wrap:wrap; gap:8px; }
.ts-dropdown .optgroup-header{
  padding:8px 12px 4px; font-size:.7rem; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--serenity-prof); background:#fff;
}

.inicio-cifras{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:12px; margin-bottom:20px; }
.inicio-cifra{
  display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"etiqueta etiqueta" "valor icono" "detalle detalle";
  align-items:center; column-gap:8px; padding:12px 14px; min-width:0;
  background:#fff; border:1px solid var(--panel-borde); border-radius:12px;
  color:inherit; text-decoration:none; transition:border-color .15s ease, box-shadow .15s ease;
}
.inicio-cifra:hover{ border-color:var(--azul); box-shadow:var(--sombra-s); }
.inicio-cifra-etiqueta{ grid-area:etiqueta; font-size:.8rem; font-weight:600; color:var(--texto); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.inicio-cifra-valor{ grid-area:valor; margin:4px 0 2px; font-family:var(--font-display); font-size:1.65rem; font-weight:600; line-height:1; color:var(--navy); }
.inicio-cifra-icono{
  grid-area:icono; width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center;
  background:var(--serenity-tinte); color:var(--azul);
}
.inicio-cifra-icono .icono{ width:17px; height:17px; }
.inicio-cifra-detalle{ grid-area:detalle; font-size:.75rem; color:var(--texto-suave); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.inicio-cifra.aviso{ border-color:var(--aviso-borde); background:var(--aviso-tinte); }
.inicio-cifra.aviso .inicio-cifra-valor{ color:var(--aviso); }
/* A 0, en gris: no hay nada que mirar */
.inicio-cifra.cero{ background:#f7f8fa; }
.inicio-cifra.cero .inicio-cifra-valor, .inicio-cifra.cero .inicio-cifra-etiqueta{ color:#8a96a0; }
.inicio-cifra.cero .inicio-cifra-icono{ background:#eceff2; color:#9aa5ae; }
/* Con cinco o seis cifras y poco ancho, en filas de tres (sin una cifra suelta) */
@media (min-width:601px) and (max-width:1250px){
  .inicio-cifras:has(> :nth-child(5)){ grid-template-columns:repeat(3, minmax(0,1fr)); }
}
.inicio-cifra.aviso .inicio-cifra-icono{ background:#fff; color:var(--aviso); }

.inicio-grid{ display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:20px; align-items:start; }
.inicio-grid.sin-agenda{ grid-template-columns:minmax(0,1fr); max-width:780px; }
.inicio-col{ display:flex; flex-direction:column; gap:20px; min-width:0; }
.inicio-col .panel-card-header{ gap:12px; }
.inicio-col .panel-card-header h3{ margin:0; }
.inicio-col .panel-card-link{ white-space:nowrap; }
.inicio-sub{ margin:2px 0 0; font-size:.8rem; color:var(--texto-suave); }
.inicio-vacio{ margin:0; font-size:.88rem; color:var(--texto-suave); }
.inicio-vacio a, .inicio-mas{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.inicio-mas{ display:inline-block; margin-top:12px; font-size:.84rem; font-weight:600; }
.inicio-al-dia{ display:flex; align-items:center; gap:8px; margin:0; font-size:.88rem; font-weight:600; color:var(--verde-prof); }
.inicio-al-dia .icono{ width:18px; height:18px; }

/* Agenda de hoy */
.agenda{ list-style:none; margin:0; padding:0; }
.agenda-cita{ display:flex; align-items:stretch; gap:12px; margin:0 -10px; padding:10px; border-radius:10px; }
.agenda-cita + .agenda-cita{ border-top:1px solid var(--linea); }
.agenda-cita.ahora{ background:var(--serenity-tinte); border-top-color:transparent; }
.agenda-cita.ahora + .agenda-cita{ border-top-color:transparent; }
.agenda-hora{ width:46px; flex-shrink:0; display:flex; flex-direction:column; font-variant-numeric:tabular-nums; }
.agenda-hora strong{ font-size:.92rem; color:var(--navy); }
.agenda-hora span{ font-size:.76rem; color:var(--texto-suave); }
.agenda-tipo{ width:5px; flex-shrink:0; align-self:stretch; border-radius:3px; }
.agenda-cuerpo{ flex:1; min-width:0; }
.agenda-linea{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; }
.agenda-titulo{ font-size:.92rem; font-weight:600; color:var(--texto); text-decoration:none; overflow-wrap:anywhere; }
a.agenda-titulo:hover{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.agenda-meta{ display:flex; flex-wrap:wrap; gap:2px 8px; margin-top:2px; font-size:.78rem; color:var(--texto-suave); }
/* El punto va detrás de cada dato: si la línea se parte, no queda al principio */
.agenda-meta span:not(:last-child)::after{ content:"·"; margin-left:8px; opacity:.6; }
.agenda-marca{ padding:2px 8px; border-radius:100px; font-size:.66rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.agenda-marca.ahora{ background:var(--azul); color:#fff; }
.agenda-marca.siguiente{ background:var(--serenity-tinte); color:var(--azul); }
.agenda-marca.realizada{ background:var(--verde-tinte); color:var(--verde-prof); }
.agenda-marca.por-marcar{ background:var(--aviso-tinte); color:var(--aviso); }
.agenda-marca.cancelada{ background:#ececec; color:#666; }
.agenda-cita.pasada .agenda-hora{ opacity:.6; }
.agenda-cita.cancelada .agenda-titulo{ color:var(--texto-suave); text-decoration:line-through; }
.agenda-cita.cancelada .agenda-tipo{ opacity:.35; }

/* Asistencia: sus dos pestañas, «Por niño» y «Resumen del mes» (07/11/2026) */
.asis-pestanas{ display:flex; gap:4px; margin:0 0 16px; border-bottom:1px solid var(--panel-borde); }
.asis-pestana{ margin-bottom:-1px; padding:9px 16px; border:1px solid transparent; border-radius:10px 10px 0 0;
  font-size:.88rem; font-weight:600; color:var(--texto-suave); text-decoration:none; }
.asis-pestana:hover{ color:var(--azul); }
.asis-pestana.activa{ background:#fff; border-color:var(--panel-borde); border-bottom-color:#fff; color:var(--navy); }

/* Calendario: la asistencia de cada cita y su panel (07/11/2026) */
.cal-tira{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 18px; margin:0 0 14px; padding:10px 16px; border-radius:12px;
  background:#fff; border:1px solid var(--panel-borde); font-size:.8rem; color:var(--texto-suave); }
.cal-pendientes{ display:inline-flex; flex-wrap:wrap; align-items:center; gap:4px; padding:5px 12px; border-radius:100px;
  background:var(--aviso-tinte); color:var(--aviso); font-weight:700; }
.cal-pendientes a{ color:var(--aviso); text-decoration:underline; text-underline-offset:2px; }
.cal-al-dia{ padding:5px 12px; border-radius:100px; background:var(--verde-tinte); color:var(--exito-osc); font-weight:700; }
.cal-leyenda{ display:flex; flex-wrap:wrap; gap:6px 14px; margin-left:auto; }
.cal-leyenda > span{ display:inline-flex; align-items:center; gap:5px; }
.cal-marca{ display:inline-flex; align-items:center; justify-content:center; gap:3px; min-width:18px; height:17px; padding:0 5px;
  border-radius:100px; font-size:.64rem; font-weight:800; line-height:1; background:#fff; box-shadow:0 0 0 1px rgba(0,0,0,.08);
  text-decoration:none; white-space:nowrap; }
.cal-marca.vino{ color:var(--exito-osc); }
.cal-marca.no{ color:var(--peligro-osc); }
.cal-marca.justificada, .cal-marca.parcial{ color:var(--aviso); }
.cal-marca.marcar{ color:#fff; background:var(--aviso); box-shadow:none; }
.cal-slot .cal-marca{ position:absolute; top:3px; right:4px; }
.cal-event .cal-marca{ margin-left:4px; vertical-align:1px; }
.cal-marca-texto{ height:20px; padding:0 8px; font-size:.68rem; }
.cal-slot.cal-por-marcar, .cal-event.cal-por-marcar{ outline:2px dashed var(--aviso); outline-offset:-2px; }
/* El panel de una cita */
.cp-velo{ position:fixed; inset:0; z-index:900; background:rgba(22,40,63,.28); }
.cp-panel{ position:fixed; top:0; right:0; bottom:0; z-index:901; width:420px; max-width:100%; display:flex; flex-direction:column;
  background:#fff; box-shadow:-12px 0 32px rgba(22,40,63,.18); }
body.con-panel-cita{ overflow:hidden; }
.cp-cab{ position:relative; padding:20px 22px 14px; border-bottom:1px solid var(--panel-borde); }
.cp-cerrar{ position:absolute; top:14px; right:14px; width:32px; height:32px; display:flex; align-items:center; justify-content:center;
  border-radius:50%; border:1px solid var(--panel-borde); background:#fff; font-size:1.1rem; color:var(--texto-suave); text-decoration:none; }
.cp-cerrar:hover{ border-color:var(--azul); color:var(--azul); }
.cp-tipo{ display:inline-flex; align-items:center; gap:6px; font-size:.72rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--serenity-prof); }
.cp-tipo i{ display:inline-block; width:9px; height:9px; border-radius:3px; }
.cp-cab h3{ margin:6px 40px 4px 0; font-family:var(--font-display); font-size:1.3rem; color:var(--navy); }
.cp-cuando{ margin:0; font-size:.86rem; font-weight:600; color:var(--texto); }
.cp-cuando::first-letter{ text-transform:uppercase; }
.cp-donde{ margin:2px 0 0; font-size:.8rem; color:var(--texto-suave); }
.cp-estado.cancelada{ margin:8px 0 0; padding:6px 10px; border-radius:8px; background:#ececec; color:#555; font-size:.8rem; font-weight:600; }
.cp-cuerpo{ flex:1; overflow:auto; padding:16px 22px; }
.cp-cuerpo h4{ margin:0 0 10px; font-family:var(--font-sans); font-size:.76rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--serenity-prof); }
.cp-botones{ display:flex; flex-wrap:wrap; gap:8px; }
.cp-b{ display:inline-flex; align-items:center; gap:4px; padding:9px 14px; border-radius:100px; font:inherit; font-size:.84rem; font-weight:700; line-height:1.2;
  border:1.5px solid var(--panel-borde-fuerte); background:#fff; color:var(--azul); cursor:pointer; }
.cp-b.si{ border-color:var(--exito); color:var(--exito-osc); }
.cp-b.no{ border-color:#E7B4B0; color:var(--peligro-osc); }
.cp-b.ju{ border-color:#EBCB91; color:var(--aviso); }
.cp-b.si.elegido, .cp-b.si:hover{ background:var(--exito); color:#fff; }
.cp-b.no.elegido, .cp-b.no:hover{ background:var(--peligro-osc); border-color:var(--peligro-osc); color:#fff; }
.cp-b.ju.elegido, .cp-b.ju:hover{ background:var(--aviso); border-color:var(--aviso); color:#fff; }
.cp-b:focus-visible, .cp-op:focus-within{ outline:2px solid var(--azul); outline-offset:2px; }
.cp-nota-campo{ width:100%; margin-top:12px; }
.cp-ayuda, .cp-nota{ margin:10px 0 0; font-size:.76rem; line-height:1.45; color:var(--texto-suave); }
.cp-nota{ margin:0; font-size:.86rem; }
.cp-fila{ display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:center; gap:6px 8px; padding:10px 0; border-bottom:1px solid var(--linea); }
.cp-nombre{ font-size:.88rem; font-weight:600; color:var(--texto); }
.cp-alergias{ display:block; font-size:.72rem; font-weight:700; color:var(--peligro-osc); }
.cp-opciones{ display:flex; gap:5px; }
.cp-op{ position:relative; display:inline-flex; align-items:center; justify-content:center; width:34px; height:30px; border-radius:100px;
  border:1.5px solid var(--panel-borde-fuerte); background:#fff; font-size:.82rem; font-weight:800; cursor:pointer; }
.cp-op input{ position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.cp-op.si{ border-color:var(--exito); color:var(--exito-osc); }
.cp-op.no{ border-color:#E7B4B0; color:var(--peligro-osc); }
.cp-op.ju{ border-color:#EBCB91; color:var(--aviso); }
.cp-op.si:has(input:checked){ background:var(--exito); color:#fff; }
.cp-op.no:has(input:checked){ background:var(--peligro-osc); border-color:var(--peligro-osc); color:#fff; }
.cp-op.ju:has(input:checked){ background:var(--aviso); border-color:var(--aviso); color:#fff; }
.cp-nota-fila{ grid-column:1 / -1; padding:5px 10px; font-size:.8rem; }
.cp-todos{ display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0; }
.cp-lectura{ list-style:none; margin:0; padding:0; }
.cp-lectura li{ display:flex; justify-content:space-between; gap:10px; padding:8px 0; border-bottom:1px solid var(--linea); font-size:.86rem; }
.cp-hecha{ margin:0; font-weight:700; color:var(--exito-osc); }
.cp-pie{ display:flex; flex-wrap:wrap; gap:8px; padding:14px 22px; border-top:1px solid var(--panel-borde); }
@media (max-width:700px){
  .cp-panel{ top:auto; width:100%; max-height:88vh; border-radius:18px 18px 0 0; }
  .cal-leyenda{ margin-left:0; }
}

/* Ficha del alumno con su familia (07/11/2026) */
.ficha-form .solo-editando-bloque{ display:none; }
.ficha-form.editando .solo-editando-bloque{ display:block; }
.ficha-form.editando .solo-leyendo-bloque{ display:none; }
.ficha-compartido{ margin:0 0 12px; padding:8px 12px; border-radius:8px; background:var(--serenity-tinte); color:var(--azul); font-size:.8rem; }
.ficha-tutores{ margin:0 0 16px; padding:0 0 14px; border-bottom:1px dashed var(--panel-borde); }
.ficha-tutores .ficha-subtitulo{ margin-top:2px; }
.ficha-subtitulo-nota{ font-weight:600; letter-spacing:0; text-transform:none; color:var(--texto-suave); }
.ficha-tutor{ margin:6px 0 12px; }
.ficha-tutor-titulo{ display:block; margin:0 0 4px; font-size:.8rem; font-weight:700; color:var(--azul); }
.ficha-valor a{ color:var(--azul); }
.form-campos .ficha-sin-dato.ancho{ grid-column:1 / -1; margin:0; }
.campo-recibe > div, .campo-quien > div{ display:flex; flex-wrap:wrap; gap:6px 18px; padding:6px 0 2px; }
.campo-recibe > div label, .campo-quien > div label{ display:flex; align-items:center; gap:6px; font-size:.86rem; font-weight:500; color:var(--texto); }
.campo-recibe input, .campo-quien input, .opcion-familia input{ accent-color:var(--azul); }
.ficha-cambiar-familia{ margin-top:14px; padding-top:12px; border-top:1px dashed var(--panel-borde); }
.ficha-exportar{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; margin:12px 0 0; padding-top:10px;
  border-top:1px solid var(--linea); font-size:.76rem; color:var(--texto-suave); }
.ficha-exportar a{ color:var(--azul); font-weight:600; }
/* «Datos de la familia», compactos al leer (07/11/2026) */
.ficha-campos-familia{ min-width:0; margin:0; padding:0; border:0; }
.ficha-familia-datos .ficha-card-cabecera h3{ font-size:1.12rem; }
.ficha-familia-datos .ficha-compartido{ padding:0; background:none; font-size:.76rem; }
.ficha-datos-compactos{ display:grid; grid-template-columns:150px minmax(0, 1fr); gap:6px 14px; margin:0; font-size:.84rem; line-height:1.45; }
.ficha-datos-compactos dt{ color:var(--texto-suave); font-weight:600; }
.ficha-datos-compactos dd{ margin:0; color:var(--texto); overflow-wrap:anywhere; }
.ficha-datos-compactos dd a{ color:var(--azul); }
.ficha-datos-compactos dd small{ color:var(--texto-suave); }
.ficha-datos-compactos .ficha-sin-dato{ margin:0; }
@media (max-width:700px){
  .ficha-datos-compactos{ grid-template-columns:minmax(0, 1fr); gap:0; }
  .ficha-datos-compactos dt{ margin-top:8px; }
}
.ficha-hermanos{ list-style:none; margin:2px 0 0; padding:0; }
.ficha-hermanos li{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; padding:5px 0; font-size:.88rem; }
.ficha-hermanos a{ font-weight:600; color:var(--texto); }
.ficha-hermanos a:hover{ color:var(--azul); }
.ficha-hermanos-anadir{ margin:10px 0 0; }
#familia .ficha-subtitulo{ margin-top:12px; }
/* Nuevo alumno: familia nueva o la de un hermano */
.opciones-familia{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:0 0 14px; }
.opcion-familia{ display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border:1px solid var(--panel-borde); border-radius:10px; background:#fff; cursor:pointer; }
.opcion-familia:has(input:checked){ border-color:var(--azul); background:var(--serenity-tinte); }
.opcion-familia input{ margin-top:3px; }
.opcion-familia strong{ display:block; font-size:.88rem; color:var(--navy); }
.opcion-familia small{ display:block; font-size:.76rem; line-height:1.35; color:var(--texto-suave); }
.alumno-nuevo .panel-card + .panel-card{ margin-top:16px; }
.alumno-nuevo .ficha-subtitulo{ margin:18px 0 6px; }
@media (max-width:760px){
  .opciones-familia{ grid-template-columns:minmax(0, 1fr); }
}

/* Confirmar la asistencia desde el Inicio (05/11/2026) */
.ag-acciones{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:7px 0 0; }
.ag-boton{
  display:inline-flex; align-items:center; gap:5px; padding:4px 11px; border-radius:100px;
  font:inherit; font-size:.78rem; font-weight:600; line-height:1.4; text-decoration:none; cursor:pointer;
  border:1px solid var(--panel-borde-fuerte); background:#fff; color:var(--azul);
}
.ag-boton:hover{ border-color:var(--azul); }
.ag-boton:focus-visible{ outline:2px solid var(--azul); outline-offset:2px; }
.ag-boton.si{ background:var(--exito); border-color:var(--exito); color:#fff; }
.ag-boton.si:hover{ background:var(--exito-osc); border-color:var(--exito-osc); }
.ag-boton.no{ color:var(--peligro-osc); border-color:#E7B4B0; }
.ag-boton.no:hover{ border-color:var(--peligro-osc); }
.ag-hecho{ font-size:.78rem; font-weight:700; color:var(--exito); }
.ag-hecho.no{ color:var(--peligro-osc); }
.ag-hecho.justificada{ color:var(--aviso); }
.ag-cambiar{ font-size:.76rem; font-weight:600; color:var(--texto-suave); }
.ag-cambiar:hover{ color:var(--azul); }

/* Próximos días */
.proximo-dia + .proximo-dia{ margin-top:12px; padding-top:12px; border-top:1px solid var(--linea); }
.proximo-dia h4{ margin:0 0 4px; font-family:var(--font-sans); font-size:.84rem; font-weight:700; color:var(--navy); }
.proximo-dia h4::first-letter{ text-transform:uppercase; }
.proximo-cierre{ display:flex; align-items:center; gap:6px; margin:0 0 4px; font-size:.8rem; font-weight:600; color:var(--arena-prof); }
.proximo-cierre .icono{ width:15px; height:15px; flex-shrink:0; }
.proximo-citas{ list-style:none; margin:0; padding:0; }
.proximo-citas li{ display:flex; align-items:center; gap:10px; padding:4px 0; font-size:.86rem; min-width:0; }
.proximo-hora{ width:40px; flex-shrink:0; font-weight:600; color:var(--navy); font-variant-numeric:tabular-nums; }
.proximo-citas .agenda-tipo{ width:4px; height:16px; align-self:center; }
.proximo-titulo{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:500; color:var(--texto); text-decoration:none; }
a.proximo-titulo:hover{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.proximo-meta{ flex-shrink:0; max-width:45%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.76rem; color:var(--texto-suave); }

/* Pendiente */
.pendiente{ display:flex; gap:12px; padding:12px 0; }
.panel-card-header + .pendiente{ padding-top:0; }
.pendiente + .pendiente, .pendiente + .inicio-al-dia{ border-top:1px solid var(--linea); }
.pendiente-icono{
  width:32px; height:32px; border-radius:9px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
  background:var(--serenity-tinte); color:var(--azul);
}
.pendiente-icono.aviso{ background:var(--aviso-tinte); color:var(--aviso); }
.pendiente-icono .icono{ width:17px; height:17px; }
.pendiente-cuerpo{ flex:1; min-width:0; font-size:.85rem; }
.pendiente-cuerpo strong{ display:block; font-size:.9rem; color:var(--texto); }
.pendiente-cuerpo p{ margin:2px 0 0; color:var(--texto-suave); }
.pendiente-cuerpo p a{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.pendiente-lista{ list-style:none; margin:6px 0 0; padding:0; }
.pendiente-lista li{ padding:3px 0; }
.pendiente-lista a{ color:var(--texto); text-decoration:none; }
.pendiente-lista a:hover{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.pendiente-fecha{ margin-right:4px; font-weight:600; color:var(--navy); font-variant-numeric:tabular-nums; }
.pendiente-nota{ font-size:.8rem; }
.pendiente-enlace{ display:inline-block; margin-top:6px; font-size:.8rem; font-weight:600; color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.pendiente-alerta{ font-weight:600; color:var(--aviso); }

@media (max-width:1000px){
  /* Una sola columna, con lo pendiente justo después de la agenda de hoy */
  .inicio-grid{ grid-template-columns:minmax(0,1fr); }
  .inicio-col{ display:contents; }
  .inicio-hoy{ order:1; }
  .inicio-pendiente{ order:2; }
  .inicio-proximos{ order:3; }
  .inicio-talleres{ order:4; }
}
@media (max-width:600px){
  .inicio-cabecera{ align-items:stretch; }
  .inicio-herramientas{ justify-content:stretch; }
  .inicio-buscador{ flex-basis:100%; }
  .inicio-cifras{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px; }
  .inicio-cifra{ padding:10px 12px; }
  .proximo-citas li{ flex-wrap:wrap; row-gap:0; }
  .proximo-titulo{ flex-basis:calc(100% - 64px); }
  .proximo-meta{ max-width:none; flex-basis:100%; padding-left:54px; }
}

/* ==================================================================
   CITAS (fase 3, entrega 3): formulario por bloques, columna lateral
   con avisos, recordatorio y cita fija; citas en las fichas
   ================================================================== */
.cita-pantalla{ display:grid; grid-template-columns:minmax(0, 860px); gap:20px; align-items:start; }
.cita-pantalla.con-lateral{ grid-template-columns:minmax(0, 1fr) 300px; max-width:1180px; }
.cita-bloque{ border:0; margin:0 0 16px; padding:0; min-width:0; }
.cita-bloque legend{
  margin-bottom:8px; padding:0; font-size:.7rem; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--serenity-prof);
}
.form-campos.tres{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
.cita-bloque .form-campos + .form-campos{ margin-top:12px; }
.cita-alcance{
  margin:4px 0 0; padding:12px 14px; border-radius:10px;
  background:var(--serenity-tinte); font-size:.86rem;
}
.cita-alcance p{ margin:0 0 6px; }
.cita-alcance label{ display:flex; align-items:center; gap:8px; padding:3px 0; cursor:pointer; }
.cita-alcance input[type=radio]{ accent-color:var(--azul); margin:0; }
.cita-alcance-nota{ margin-top:6px !important; font-size:.78rem; color:var(--texto-suave); }

.cita-lateral{ display:flex; flex-direction:column; gap:14px; min-width:0; }
.cita-lateral .panel-card{ padding:16px 18px; }
.cita-lateral h3{ display:flex; align-items:center; gap:6px; margin:0 0 8px; font-size:.95rem; }
.cita-lateral h3 .icono{ width:17px; height:17px; }
.cita-lateral form{ margin:8px 0 0; }
.cita-lateral-texto{ margin:0; font-size:.85rem; }
.cita-lateral-nota{ margin:8px 0 0; font-size:.78rem; color:var(--texto-suave); }
.cita-avisos{ border-color:var(--aviso-borde); background:var(--aviso-tinte); }
.cita-avisos h3{ color:var(--aviso); }
.cita-avisos ul{ margin:0; padding-left:18px; font-size:.84rem; }
.cita-avisos li + li{ margin-top:4px; }
.serie-alargar{ display:flex; align-items:flex-end; gap:8px; margin-top:12px !important; }
.serie-alargar .form-campo{ flex:1 1 auto; min-width:0; margin:0; }
.cita-recordado{ display:flex; align-items:center; gap:6px; margin:6px 0 0; font-size:.82rem; font-weight:600; color:var(--exito); }
.cita-recordado .icono{ width:15px; height:15px; }

.cal-badge.cal-fija{ background:var(--serenity-tinte); color:var(--azul); }
.cal-modal-mas{ font-size:.8rem; color:var(--azul); text-decoration:underline; text-underline-offset:2px; }

/* Citas en las fichas de alumno y familia */
.ficha-card-sub{ margin:2px 0 0; font-size:.78rem; color:var(--texto-suave); }
.ficha-subtitulo{ margin:10px 0 4px; font-family:var(--font-sans); font-size:.7rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--serenity-prof); }
.cita-lista{ list-style:none; margin:0; padding:0; }
.cita-linea{ display:flex; align-items:center; gap:8px; padding:5px 0; font-size:.85rem; min-width:0; }
.cita-linea + .cita-linea{ border-top:1px solid var(--linea); }
.cita-linea-fecha{ flex-shrink:0; width:150px; white-space:nowrap; font-weight:600; color:var(--navy); font-variant-numeric:tabular-nums; }
.cita-linea .agenda-tipo{ width:4px; height:16px; }
.cita-linea-texto{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--texto); text-decoration:none; }
a.cita-linea-texto:hover{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.cita-linea .cal-badge{ margin-left:0; flex-shrink:0; }
.cita-linea-estado{ flex-shrink:0; font-size:.72rem; font-weight:600; color:var(--texto-suave); }
.cita-linea-estado.realizada{ color:var(--exito); }
.cita-linea.cancelada .cita-linea-texto{ text-decoration:line-through; color:var(--texto-suave); }

/* Inicio: recordatorio de las citas de mañana */
.proximo-recordar{ margin:0; flex-shrink:0; }
.panel-body .proximo-recordar .btn-brush.small{ padding:3px 9px; font-size:.74rem; }
.proximo-recordado{ display:inline-flex; align-items:center; gap:4px; flex-shrink:0; font-size:.74rem; font-weight:600; color:var(--exito); }
.proximo-recordado .icono{ width:13px; height:13px; }

@media (max-width:1100px){
  /* Una columna: los avisos, antes del formulario; lo demás, después */
  .cita-pantalla.con-lateral{ grid-template-columns:minmax(0, 1fr); }
  .cita-lateral{ display:contents; }
  .cita-avisos{ order:-1; }
}
@media (max-width:600px){
  .form-campos.tres{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .form-campos.tres .campo-fecha{ grid-column:1 / -1; }
  .cita-linea{ flex-wrap:wrap; row-gap:0; }
  .cita-linea-fecha{ width:auto; }
  .cita-linea-texto{ flex-basis:100%; order:5; }
}

/* ==================================================================
   AGENDA (fase 3, entrega 4): grupos, citas del día con la asistencia
   y resumen mensual
   ================================================================== */
a.cont-title{ text-decoration:none; }
a.cont-title:hover{ text-decoration:underline; text-underline-offset:2px; }

/* Grupos: alumnos del grupo */
.miembro-nuevo{ margin:0 0 12px; padding:12px; border-radius:10px; background:var(--piedra-claro); }
.miembro-nuevo .form-campos{ margin-bottom:10px; }
.miembro-lista{ list-style:none; margin:0; padding:0; }
.miembro{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; }
.miembro + .miembro{ border-top:1px solid var(--linea); }
.miembro form{ margin:0; flex-shrink:0; }
.miembro-datos{ display:flex; flex-direction:column; min-width:0; }
.miembro-nombre{ font-size:.9rem; font-weight:600; color:var(--texto); text-decoration:none; }
a.miembro-nombre:hover{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.miembro-fechas{ font-size:.76rem; color:var(--texto-suave); }
.miembro-antiguos{ margin-top:12px; font-size:.85rem; }
.miembro-antiguos summary{ cursor:pointer; color:var(--azul); font-weight:600; }

/* Citas del día */
.dia-cabecera{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 20px; margin-bottom:16px; }
.dia-navegacion{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.dia-titulo{ margin:0 0 0 6px; font-size:1.25rem; }
.dia-aviso{
  display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:100px;
  background:var(--aviso-tinte); color:var(--aviso); font-size:.82rem; font-weight:600; text-decoration:none;
}
.dia-aviso .icono{ width:15px; height:15px; }
.dia-aviso:hover{ text-decoration:underline; }
.dia-cita + .dia-cita{ margin-top:12px; }
.dia-cita{ scroll-margin-top:80px; }
/* Al llegar desde el Inicio («Citas sin cerrar» o «Pendiente»), la cita se resalta */
.dia-cita:target{ background:var(--aviso-tinte); border-color:var(--aviso-borde); box-shadow:0 0 0 1px var(--aviso-borde); }
.dia-cita.cancelada{ opacity:.7; }
.dia-cita.cancelada .agenda-titulo{ text-decoration:line-through; }
.dia-cita-cabecera{ display:flex; align-items:stretch; gap:12px; }
.dia-nota{ margin:0; font-size:.84rem; color:var(--texto-suave); }
.dia-cerrar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; margin-top:12px; }
.dia-cerrar form{ margin:0; }
.agenda-marca.estado-programada{ background:var(--serenity-tinte); color:var(--azul); }
.agenda-marca.estado-realizada{ background:var(--verde-tinte); color:var(--verde-prof); }
.agenda-marca.estado-cancelada_familia, .agenda-marca.estado-cancelada_gabinete{ background:#ececec; color:#666; }

.asistencia-form{ margin-top:12px; padding-top:12px; border-top:1px solid var(--linea); }
.asistencia-fila{ display:grid; grid-template-columns:minmax(0, 1.2fr) auto minmax(0, 1fr); align-items:center; gap:8px 14px; padding:6px 0; }
.asistencia-alumno{ font-size:.9rem; font-weight:600; color:var(--texto); }
.asistencia-alergias{ display:block; width:fit-content; margin-top:3px; padding:1px 8px; border-radius:100px;
                      background:var(--peligro-tinte); color:var(--peligro-osc); font-size:.72rem; font-weight:600; }
.asistencia-opciones{ display:flex; border:1px solid var(--panel-borde); border-radius:8px; overflow:hidden; }
.asistencia-opcion{ position:relative; cursor:pointer; }
.asistencia-opcion + .asistencia-opcion{ border-left:1px solid var(--panel-borde); }
.asistencia-opcion input{ position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.asistencia-opcion span{ display:block; padding:6px 11px; font-size:.8rem; font-weight:600; color:var(--texto-suave); background:#fff; white-space:nowrap; }
.asistencia-opcion input:focus-visible + span{ outline:2px solid var(--azul); outline-offset:-2px; }
.asistencia-opcion.asistio input:checked + span{ background:var(--exito); color:#fff; }
.asistencia-opcion.no_asistio input:checked + span{ background:var(--peligro); color:#fff; }
.asistencia-opcion.justificada input:checked + span{ background:var(--aviso-tinte); color:var(--aviso); }
.panel-body .asistencia-nota{ padding:6px 10px; font-size:.82rem; }
.asistencia-acciones{ display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:10px; margin-top:10px; }
.asistencia-estado{ margin-right:auto; font-size:.8rem; color:var(--exito); font-weight:600; }
.asistencia-estado.pendiente{ color:var(--aviso); }
.asistencia-lectura{ list-style:none; margin:12px 0 0; padding:12px 0 0; border-top:1px solid var(--linea); font-size:.86rem; }
.asistencia-lectura li{ display:flex; justify-content:space-between; gap:10px; padding:3px 0; }
.asistencia-valor{ color:var(--texto-suave); }
.asistencia-valor.asistio{ color:var(--exito); font-weight:600; }
.asistencia-valor.no_asistio{ color:var(--peligro); font-weight:600; }
.asistencia-valor.justificada{ color:var(--aviso); font-weight:600; }

/* Resumen mensual */
.resumen-bloque + .resumen-bloque{ margin-top:16px; }
.tabla-caja{ overflow-x:auto; }
.tabla-panel{ width:100%; border-collapse:collapse; font-size:.86rem; }
.tabla-panel th{ padding:8px 10px; text-align:right; font-size:.72rem; font-weight:700; letter-spacing:.03em; text-transform:uppercase; color:var(--serenity-prof); border-bottom:1px solid var(--panel-borde); white-space:nowrap; }
.tabla-panel td{ padding:8px 10px; text-align:right; border-bottom:1px solid var(--linea); font-variant-numeric:tabular-nums; }
.tabla-panel th:first-child, .tabla-panel td:first-child{ text-align:left; }
.tabla-panel td:first-child{ font-weight:600; color:var(--texto); }
.tabla-panel td:first-child .agenda-tipo{ display:inline-block; width:4px; height:14px; margin-right:8px; vertical-align:-2px; }
.tabla-panel a{ color:var(--texto); text-decoration:none; }
.tabla-panel a:hover{ color:var(--azul); text-decoration:underline; }
.tabla-panel .tabla-aviso{ color:var(--aviso); font-weight:700; }
/* «A cobrar» del resumen mensual (05/11/2026): en verde si todo el mes está cerrado */
.inicio-cifra.cobro .inicio-cifra-detalle{ white-space:normal; }      /* «falta 1 por cerrar: puede subir», entero */
.inicio-cifra.cobro-cerrado{ border-color:#9CCBB2; background:var(--verde-tinte); }
.inicio-cifra.cobro-cerrado .inicio-cifra-valor{ color:var(--exito-osc); }
.tabla-panel td.tabla-importe{ font-weight:700; color:var(--navy); white-space:nowrap; }
.tabla-panel tr.tabla-total td{ font-weight:700; color:var(--navy); border-top:2px solid var(--panel-borde); border-bottom:none; }
.resumen-nota{ margin-top:14px; font-size:.8rem; }
div.inicio-cifra:hover{ border-color:var(--panel-borde); box-shadow:none; }
div.inicio-cifra{ grid-template-areas:"etiqueta" "valor" "detalle"; grid-template-columns:minmax(0, 1fr); }

@media (max-width:760px){
  .asistencia-fila{ grid-template-columns:minmax(0, 1fr); }
  .asistencia-opciones{ width:100%; }
  .asistencia-opcion{ flex:1; text-align:center; }
  .tabla-panel{ min-width:560px; }
}
.inicio-enlaces{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:4px 14px; }
.cierre-otras{ margin:6px 0 0 !important; font-weight:400 !important; color:var(--texto-suave) !important; }

/* Aviso de cierre de sesión por inactividad */
.aviso-inactividad{
  position:fixed; left:50%; bottom:24px; transform:translateX(-50%); z-index:3000;
  display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; max-width:min(560px, calc(100% - 32px));
  padding:14px 18px; border-radius:12px; background:var(--azul-osc); color:#fff; box-shadow:var(--sombra-m);
  font-size:.88rem;
}
.aviso-inactividad p{ margin:0; flex:1 1 260px; }
.panel-body .aviso-inactividad .btn-brush.filled{ background:#fff; border-color:#fff; color:var(--azul-osc); }
.aviso-inactividad[hidden]{ display:none !important; }

/* Configuración → Accesos; aviso en el acceso tras cerrar por inactividad */
/* Configuración: una tarjeta por ajuste con su semáforo y las cuentas en tabla (configuracion.html) */
.config-panel{ display:flex; flex-direction:column; gap:20px; max-width:1180px; }
.config-tarjetas{ display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:14px; align-items:stretch; }
.config-tarjeta{ --estado:var(--azul); --estado-tinte:var(--serenity-tinte); --estado-texto:var(--azul);
  display:flex; flex-direction:column; gap:10px; min-width:0; padding:16px 18px 14px; border-radius:14px; background:#fff;
  border:1px solid var(--panel-borde); border-top:4px solid var(--estado); }
.config-tarjeta.ok{ --estado:var(--exito); --estado-tinte:var(--verde-tinte); --estado-texto:var(--verde-prof); }
.config-tarjeta.aviso{ --estado:var(--aviso-borde); --estado-tinte:var(--aviso-tinte); --estado-texto:var(--aviso); }
.config-tarjeta.apagado{ --estado:var(--peligro); --estado-tinte:var(--peligro-tinte); --estado-texto:var(--peligro-osc); }
.config-tarjeta-cabecera{ display:flex; align-items:center; gap:10px; min-width:0; }
.config-tarjeta-cabecera h3{ flex:1; min-width:0; margin:0; font-size:.98rem; line-height:1.25; }
.config-tarjeta-icono{ display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; width:34px; height:34px;
  border-radius:10px; background:var(--estado-tinte); color:var(--estado-texto); }
.config-tarjeta-icono .icono{ width:18px; height:18px; }
.config-semaforo{ display:inline-flex; align-items:center; gap:6px; flex-shrink:0; padding:3px 10px; border-radius:100px;
  background:var(--estado-tinte); color:var(--estado-texto); font-size:.74rem; font-weight:700; white-space:nowrap; }
.config-semaforo::before{ content:""; width:8px; height:8px; border-radius:50%; background:var(--estado); }
.config-hechos{ list-style:none; display:flex; flex-direction:column; gap:3px; margin:0; padding:0; font-size:.84rem; color:var(--texto); }
.config-ayuda{ margin:0; font-size:.78rem; line-height:1.45; color:var(--texto-suave); }
.config-tarjeta-acciones{ display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; padding-top:2px; }
.config-tarjeta-acciones form{ margin:0; }
.config-comprobaciones{ list-style:none; display:flex; flex-wrap:wrap; gap:6px; margin:0; padding:0; }
.config-comprobaciones li{ display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:8px; font-size:.78rem; font-weight:600; }
.config-comprobaciones li.si{ background:var(--verde-tinte); color:var(--verde-prof); }
.config-comprobaciones li.si::before{ content:"✓"; }
.config-comprobaciones li.no{ background:#F1F3F5; color:var(--texto-suave); }
.config-comprobaciones li.no::before{ content:"✗"; }
.config-bloqueada{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin:0; padding:6px 8px;
  border-radius:8px; background:var(--peligro-tinte); font-size:.8rem; }
.config-tarjeta .config-detalle{ margin-top:0; }
.config-cuentas-cabecera{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:10px; }
.config-cuentas-cabecera h3{ display:flex; align-items:center; gap:8px; margin:0 0 2px; font-size:1.05rem; }
.config-cuentas-cabecera > .btn-brush{ flex-shrink:0; }
.config-contador{ display:inline-flex; align-items:center; justify-content:center; min-width:22px; height:22px; padding:0 6px;
  border-radius:100px; background:var(--serenity-tinte); color:var(--azul); font-family:var(--font-sans); font-size:.74rem; font-weight:700; }
.config-tabla{ width:100%; border-collapse:collapse; font-size:.86rem; }
.config-tabla th{ padding:6px 8px; border-bottom:1px solid var(--panel-borde); text-align:left; font-size:.7rem; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; color:var(--texto-suave); }
.config-tabla td{ padding:8px; border-bottom:1px solid var(--linea); vertical-align:middle; }
.config-tabla tr:last-child td{ border-bottom:0; }
.config-tabla .cont-badge{ margin-left:0; }
.config-tabla tr.desactivada td{ color:var(--texto-suave); }
.config-tabla-accion{ text-align:right; white-space:nowrap; }
.config-estado-cuenta{ display:inline-flex; align-items:center; gap:6px; font-weight:600; color:var(--exito); }
.config-estado-cuenta::before{ content:""; width:8px; height:8px; border-radius:50%; background:currentColor; }
.config-tabla tr.desactivada .config-estado-cuenta{ color:var(--peligro); }
.visualmente-oculto{ position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0, 0, 0, 0);
  white-space:nowrap; border:0; }
@media (max-width:760px){
  .config-cuentas-cabecera{ flex-direction:column; }
}
@media (max-width:1100px){
  /* Cada cuenta en un bloque: nombre; usuario, tipo y estado en una línea; último acceso; botón. */
  .config-tabla thead{ display:none; }
  .config-tabla, .config-tabla tbody{ display:block; }
  .config-tabla tr{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; padding:10px 0; border-bottom:1px solid var(--linea); }
  .config-tabla tr:last-child{ border-bottom:0; }
  .config-tabla td{ display:block; padding:0; border:0; }
  .config-tabla td[data-titulo="Nombre"], .config-tabla td[data-titulo="Último acceso"], .config-tabla-accion{ width:100%; }
  .config-tabla td[data-titulo="Usuario"]{ font-size:.82rem; color:var(--texto-suave); }
  .config-tabla td[data-titulo="Último acceso"]{ font-size:.78rem; color:var(--texto-suave); }
  .config-tabla td[data-titulo="Último acceso"]::before{ content:"Último acceso: "; }
  .config-tabla-accion{ padding-top:4px !important; text-align:left; }
}

.config-detalle{ margin-top:12px; font-size:.85rem; }
.config-detalle summary{ cursor:pointer; color:var(--azul); font-weight:600; }
.config-fallos{ list-style:none; margin:8px 0 0; padding:0; }
.config-fallos li{ display:grid; grid-template-columns:130px minmax(0, 1fr) auto; gap:10px; padding:4px 0; border-bottom:1px solid var(--linea); font-variant-numeric:tabular-nums; }
.config-fallos li span:last-child{ color:var(--texto-suave); }
.panel-auth-aviso{ margin:0 0 16px; padding:10px 14px; border-radius:10px; background:var(--serenity-tinte); color:var(--azul-osc); font-size:.86rem; }

/* ==================================================================
   INSCRIPCIONES EN TALLERES (fase 5)
   ================================================================== */
.taller-cabecera{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 24px; margin-bottom:20px; }
.taller-cabecera h2{ margin:0 0 4px; font-size:1.3rem; }
.taller-cabecera .cont-meta{ margin:0; }
.taller-plazas{ display:flex; flex-direction:column; align-items:flex-end; gap:2px; text-align:right; }
.taller-plazas strong{ font-family:var(--font-display); font-size:1.6rem; line-height:1; color:var(--verde-prof); }
.taller-plazas span{ font-size:.82rem; color:var(--texto-suave); }
.taller-plazas.completo strong{ color:var(--rosa-prof); }
.inscripcion{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 16px; padding:10px 0; }
.inscripcion + .inscripcion{ border-top:1px solid var(--linea); }
.inscripcion-datos{ flex:1 1 300px; min-width:0; }
.inscripcion-nombre{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; font-weight:600; color:var(--texto); }
.inscripcion-nombre a{ color:var(--texto); text-decoration:none; }
.inscripcion-nombre a:hover{ color:var(--azul); text-decoration:underline; text-underline-offset:2px; }
.inscripcion-nombre .cont-badge{ margin-left:0; }
.inscripcion-posicion{ color:var(--serenity-prof); font-variant-numeric:tabular-nums; }
.inscripcion-edad{ font-size:.8rem; font-weight:400; color:var(--texto-suave); }
.inscripcion .cont-meta a{ color:inherit; }
.inscripcion-acciones{ display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:8px; }
.inscripcion-acciones form{ margin:0; }
.inscripcion-pagado{ display:inline-flex; align-items:center; gap:5px; font-size:.8rem; font-weight:600; color:var(--exito); }
.inscripcion-pagado .icono{ width:14px; height:14px; }
.inscripcion-sin-pagar{ font-size:.8rem; color:var(--aviso); font-weight:600; }
.inscripcion-pago summary{ list-style:none; cursor:pointer; }
.inscripcion-pago summary::-webkit-details-marker{ display:none; }
.inscripcion-pago[open] summary{ display:none; }
.inscripcion-pago-form{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.panel-body .inscripcion-pago-form .form-control-brush{ width:auto; min-width:0; padding:5px 8px; font-size:.82rem; }
.panel-body .inscripcion-pago-form input[type=number]{ width:90px; }
.inscripcion-pago-form .flatpickr-input + input{ width:110px; }
.inscripcion-bajas{ margin-top:20px; }
.inscripcion-bajas summary{ cursor:pointer; font-weight:600; color:var(--azul); }
@media (max-width:600px){
  .taller-plazas{ align-items:flex-start; text-align:left; }
  .inscripcion-acciones{ justify-content:flex-start; }
}
/* En una columna (móvil), apuntar va antes que las listas */
@media (max-width:900px){
  .inscripciones-grid .inscripciones-apuntar{ order:-1; }
}

/* Área de familias: resumen y material (area_familias.html), código en la ficha del alumno (alumno.html) */
.area-resumen{ display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:12px; margin-bottom:20px; }
.area-dato{ display:flex; flex-direction:column; gap:2px; padding:12px 16px; border-radius:14px; background:#fff; border:1px solid var(--panel-borde); }
.area-dato strong{ font-family:var(--font-display); font-size:1.6rem; line-height:1.1; color:var(--navy); font-variant-numeric:tabular-nums; }
.area-dato span{ font-size:.8rem; color:var(--texto-suave); }
.area-dato.aviso{ border-color:var(--aviso-borde); background:var(--aviso-tinte); }
.area-dato.aviso strong, .area-dato.aviso span{ color:var(--aviso); }
a.area-dato{ text-decoration:none; }
a.area-dato.aviso:hover{ border-color:var(--aviso); }
/* Alumnos de alta sin código de acceso */
.area-sin-codigo{ margin-bottom:20px; border-color:var(--aviso-borde); }
.area-sin-codigo-texto{ margin:-6px 0 10px; font-size:.86rem; color:var(--texto-suave); }
.area-sin-codigo-lista{ margin:0; padding:0; list-style:none; }
.area-sin-codigo-lista li{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0;
  border-top:1px solid var(--linea); }
.area-sin-codigo-lista form{ margin:0; }
.area-sin-codigo-quien a{ font-weight:600; color:var(--navy); text-decoration:none; }
.area-sin-codigo-quien a:hover{ text-decoration:underline; }
.area-sin-codigo-quien span{ display:block; font-size:.78rem; color:var(--texto-suave); }
.cont-archivo-actual{ margin:0 0 6px; font-size:.86rem; }
.area-codigo{ display:flex; flex-direction:column; margin:4px 0 6px; }
.area-codigo span{ font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--texto-suave); }
.area-codigo strong{ font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size:1.55rem; letter-spacing:.1em; color:var(--navy); user-select:all; }
.area-datos{ margin:0 0 10px; font-size:.8rem; color:var(--texto-suave); }
.area-acciones{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.area-mas{ margin-top:4px; font-size:.84rem; }
.area-mas summary{ cursor:pointer; font-weight:600; color:var(--navy); }
.area-mas p{ margin:8px 0; color:var(--texto-suave); }

/* ---------- Asistencia: cada niño con lo que se le cobra y sus citas (asistencia.html) ---------- */
.asis-vista{ margin-left:6px; }
/* El total, arriba y en una barra fija abajo */
.asis-banda{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:16px;
  padding:18px 24px; border-radius:18px; background:var(--navy); color:#fff; }
.asis-banda-etiqueta{ display:block; font-size:.78rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase; opacity:.8; }
.asis-banda-desglose{ display:block; margin-top:4px; font-size:.84rem; opacity:.92; }
.asis-banda-todos{ display:block; margin-top:4px; font-size:.8rem; opacity:.75; }
.asis-banda-aviso{ display:block; margin-top:6px; font-size:.8rem; color:#FFD98A; }
.asis-banda-aviso a{ color:inherit; }
.asis-banda-total{ font-family:var(--font-serif, inherit); font-size:2.2rem; line-height:1; white-space:nowrap; }
.asis-pie{ position:sticky; bottom:0; z-index:20; display:flex; justify-content:space-between; align-items:center; gap:12px;
  margin-top:14px; padding:12px 22px; border-radius:14px; background:var(--navy); color:#fff;
  box-shadow:0 -6px 20px -12px rgba(22,40,63,.45); }
.asis-pie small{ font-size:.76rem; opacity:.7; }
.asis-pie strong{ font-size:1.25rem; white-space:nowrap; }
/* Botones y filtros */
.asis-barra{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; margin-bottom:10px; }
.asis-selects{ display:flex; flex-wrap:wrap; gap:8px; }
.asis-selects select, .asis-selects .ts-wrapper{ width:auto; min-width:210px; font-size:.84rem; }
.asis-selects select{ padding-top:6px; padding-bottom:6px; }
.panel-filtro.asis-filtro-aviso:not(.activo){ background:var(--aviso-tinte); color:var(--aviso); }
.asis-ayuda{ margin:0 0 4px; font-size:.84rem; color:var(--texto-suave); }
/* Cada niño */
.asis-bloque{ border-bottom:1px solid var(--linea); }
.asis-bloque summary{ list-style:none; display:grid; grid-template-columns:18px minmax(0, 1.3fr) minmax(0, 2fr) auto;
  align-items:center; gap:12px; padding:14px 4px; cursor:pointer; }
.asis-bloque summary::-webkit-details-marker{ display:none; }
.asis-bloque summary:hover .asis-nino{ text-decoration:underline; }
.asis-flecha::before{ content:"›"; display:inline-block; font-size:1.3rem; color:var(--serenity-prof); transition:transform .15s; }
.asis-bloque[open] .asis-flecha::before{ transform:rotate(90deg); }
.asis-nino{ display:block; font-weight:600; color:var(--navy); }
.asis-sub{ display:block; margin-top:2px; font-size:.78rem; color:var(--texto-suave); }
.asis-cuenta{ font-size:.84rem; color:var(--texto-suave); }
.asis-aviso{ color:var(--aviso); font-weight:600; }
.asis-subtotal{ font-size:1.05rem; color:var(--navy); white-space:nowrap; }
.asis-detalle{ margin:0 0 14px 30px; padding:4px 14px 10px; border-radius:12px; background:var(--cream-deep); }
.asis-ficha{ display:inline-block; margin-top:8px; font-size:.8rem; font-weight:600; color:var(--azul); }
/* Sus citas */
.asis-tabla{ width:100%; border-collapse:collapse; font-size:.88rem; }
.asis-tabla td{ padding:10px 6px; border-bottom:1px solid rgba(31,58,87,.07); vertical-align:top; }
.asis-tabla tr:last-child td{ border-bottom:0; }
.asis-tabla tr:target td{ background:var(--aviso-tinte); }
.asis-tabla tr{ scroll-margin-top:24px; }
.asis-cuando{ width:1%; white-space:nowrap; }
.asis-cuando span{ display:block; font-size:.78rem; color:var(--texto-suave); }
.asis-resultado{ width:26%; }
.asis-importe{ width:1%; text-align:right; white-space:nowrap; }
.asis-importe strong{ color:var(--navy); }
.asis-res{ display:inline-block; padding:3px 10px; border-radius:100px; font-size:.76rem; font-weight:600; white-space:nowrap; }
.asis-vino, .asis-realizada{ background:var(--verde-tinte); color:var(--verde-prof); }
.asis-no_vino{ background:var(--rosa-tinte); color:var(--rosa-prof); }
.asis-justificada{ background:var(--serenity-tinte); color:var(--navy); }
.asis-cancelada_familia, .asis-cancelada_gabinete{ background:#eef0f3; color:#56626d; }
.asis-sin_marcar{ background:var(--aviso-tinte); color:var(--aviso); border:1px solid var(--aviso-borde); }
.asis-pasar{ display:block; margin-top:4px; font-size:.8rem; font-weight:600; color:var(--azul); }
.asis-pagado{ display:inline-block; padding:2px 8px; border-radius:100px; font-size:.72rem; font-weight:600;
  background:var(--verde-tinte); color:var(--verde-prof); }
.asis-pagado.pendiente{ background:var(--aviso-tinte); color:var(--aviso); }
.asis-plaza td{ background:rgba(255,255,255,.45); }
.asis-nada{ color:var(--texto-suave); opacity:.6; }
.asis-no{ text-decoration:line-through; color:var(--texto-suave); }
.asis-incluido{ font-size:.76rem; color:var(--texto-suave); }
.asis-sin-tarifa{ font-size:.8rem; font-weight:600; color:var(--aviso); }
.asis-cobra{ margin:3px 0 0; }
.asis-cobra label{ display:flex; justify-content:flex-end; align-items:center; gap:5px; font-size:.74rem; color:var(--serenity-prof); cursor:pointer; }
.asis-cobra input{ margin:0; accent-color:var(--navy); }
.asis-cobra-texto{ display:block; font-size:.74rem; color:var(--texto-suave); }
.asis-nota{ margin:12px 0 0; font-size:.76rem; color:var(--texto-suave); }
@media (max-width:760px){
  .asis-banda{ padding:16px 18px; }
  .asis-banda-total{ font-size:1.8rem; }
  .asis-pie small{ display:none; }
  .asis-selects, .asis-selects select, .asis-selects .ts-wrapper{ width:100%; min-width:0; }
  .asis-bloque summary{ grid-template-columns:14px minmax(0, 1fr) auto; gap:4px 10px; }
  .asis-cuenta{ grid-column:2 / -1; grid-row:2; }
  .asis-detalle{ margin-left:0; }
  .asis-tabla, .asis-tabla tbody{ display:block; width:100%; }
  .asis-tabla tr{ display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:2px 10px; padding:10px 0; border-bottom:1px solid rgba(31,58,87,.07); }
  .asis-tabla tr:last-child{ border-bottom:0; }
  .asis-tabla td{ padding:0; border:0; width:auto; }
  .asis-tabla td.asis-cuando{ grid-column:1 / -1; display:flex; gap:6px; font-size:.8rem; }
  .asis-cuando span{ display:inline; font-size:.8rem; }
  .asis-tabla td.asis-que, .asis-tabla td.asis-resultado{ grid-column:1; }
  .asis-tabla td.asis-importe{ grid-column:2; grid-row:2 / span 2; align-self:start; }
}

/* ---------- Tarifas y Editar tarifa: precios por fechas (fase 5C), rehechas más claras el 31/10/2026 ---------- */
.tp-card{ margin-bottom:20px; }
.tp-card .panel-card-header{ gap:12px; align-items:flex-start; }
.tp-card .panel-card-header h3{ display:flex; align-items:center; gap:8px; margin:0; }
.tp-sub{ margin:3px 0 0; max-width:640px; font-size:.8rem; line-height:1.45; color:var(--texto-suave); }
.tp-nota{ margin:12px 0 0; font-size:.78rem; line-height:1.45; color:var(--texto-suave); }
.tp-subtitulo{ margin:0 0 8px; font-family:var(--font-sans); font-size:.7rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--serenity-prof); }
.tp-etiqueta{ display:block; margin-bottom:4px; font-size:.7rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--serenity-prof); }
.tp-sin{ color:var(--texto-suave); }

.tp-tabla{ width:100%; border-collapse:collapse; font-size:.9rem; }
.tp-tabla th{ padding:6px 10px; border-bottom:1px solid var(--panel-borde); text-align:left; font-size:.7rem; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; color:var(--texto-suave); }
.tp-tabla td{ padding:12px 10px; border-bottom:1px solid var(--linea); vertical-align:middle; }
.tp-tabla tbody tr:last-child td, .tp-tabla tbody tr:last-child th{ border-bottom:0; }
.tp-num{ text-align:right; white-space:nowrap; }
.tp-tabla th.tp-num{ text-align:right; }
.tp-lista tbody tr{ position:relative; }
.tp-lista tbody tr:hover td{ background:var(--piedra-claro); }
.tp-fila-enlace::after{ content:""; position:absolute; inset:0; }
.tp-nombre{ display:block; font-weight:600; color:var(--navy); text-decoration:none; }
.tp-detalle{ display:block; margin-top:1px; font-size:.78rem; color:var(--texto-suave); }
.tp-hoy{ font-family:var(--font-display); font-size:1.25rem; font-weight:600; color:var(--navy); }
.tp-hoy .tp-sin{ font-family:var(--font-sans); font-size:.85rem; font-weight:400; }
.tp-cambio{ font-size:.86rem; }
.tp-cambio small{ display:block; font-size:.76rem; color:var(--texto-suave); }
.tp-nada{ font-size:.85rem; color:var(--texto-suave); }
.tp-acc{ text-align:right; white-space:nowrap; }
.tp-tipos th[scope=row]{ width:34%; padding:8px 10px; border-bottom:1px solid var(--linea); font-size:.88rem; font-weight:600;
  letter-spacing:0; text-transform:none; color:var(--texto); }
.tp-tipos th label{ font:inherit; color:inherit; }
.tp-tipos td{ padding:8px 10px; }
.tp-tipos td.tp-c-tarifa select{ width:100%; max-width:420px; }
.tp-tipos .tp-num{ width:7rem; font-size:.85rem; color:var(--texto-suave); }
.tp-tipos .tp-num strong{ font-size:.95rem; color:var(--navy); }

.tp-volver{ display:inline-flex; align-items:center; gap:4px; margin:0 0 12px; font-size:.85rem; font-weight:600; color:var(--serenity-prof); text-decoration:none; }
.tp-volver:hover{ color:var(--azul); }
.tp-editar{ display:grid; grid-template-columns:minmax(0, 1.6fr) minmax(280px, 1fr); gap:20px; align-items:start; max-width:1180px; }
.tp-editar .tp-card{ margin:0; }
.tp-editar .tp-datos .form-campos{ grid-template-columns:minmax(0, 1fr); }
.tp-datos:only-of-type{ max-width:920px; }
.tp-resumen{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px 36px; margin-bottom:16px; padding-bottom:16px; border-bottom:1px solid var(--linea); }
.tp-grande{ font-family:var(--font-display); font-size:2.3rem; font-weight:600; line-height:1; color:var(--navy); }
.tp-grande.tp-sin{ font-size:1.4rem; }
.tp-resumen .tp-detalle{ display:inline; margin-left:6px; font-size:.85rem; }
.tp-proximo{ padding-bottom:3px; font-size:.92rem; }

.tp-linea{ list-style:none; display:flex; margin:0 0 20px; padding:0; border:1px solid var(--panel-borde); border-radius:12px; overflow:hidden; }
.tp-linea li{ position:relative; flex:1 1 0; min-width:0; padding:10px 12px 9px; border-left:1px solid var(--panel-borde); background:#fff; }
.tp-linea li:first-child{ border-left:0; }
.tp-linea li span{ display:block; font-size:.76rem; line-height:1.35; color:var(--texto-suave); }
.tp-linea li strong{ display:block; margin-top:2px; font-family:var(--font-display); font-size:1.2rem; font-weight:600; color:var(--navy); }
.tp-linea li em{ display:block; font-style:normal; font-size:.66rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--exito-osc); }
.tp-linea li.hoy{ background:var(--verde-tinte); }
.tp-linea li.nuevo{ background:var(--aviso-tinte); }
.tp-linea li.hoy::before, .tp-linea li.nuevo::before{ content:""; position:absolute; top:0; left:0; right:0; height:3px; background:var(--exito); }
.tp-linea li.nuevo::before{ background:var(--aviso-borde); }
.tp-linea li.nuevo em{ color:var(--aviso); }

.tp-precios{ list-style:none; margin:0 0 14px; padding:0; }
.tp-precios > li{ display:grid; grid-template-columns:4.8rem minmax(0, 1fr) auto; align-items:center; gap:4px 14px; padding:10px 0; border-bottom:1px solid var(--linea); }
.tp-precios > li:first-child{ border-top:1px solid var(--linea); }
.tp-precios > li.tp-pasado .tp-p-importe, .tp-precios > li.tp-pasado .tp-p-cuando{ color:var(--texto-suave); }
.tp-precios > li.tp-corrigiendo, .tp-precios > li.tp-vacio{ display:block; }
.tp-precios > li.tp-vacio{ font-size:.9rem; color:var(--texto-suave); }
.tp-p-importe{ font-family:var(--font-display); font-size:1.2rem; font-weight:600; color:var(--navy); white-space:nowrap; }
.tp-p-cuando{ font-size:.9rem; font-weight:600; color:var(--texto); }
.tp-p-cuando small{ display:block; font-size:.75rem; font-weight:400; color:var(--texto-suave); }
.tp-p-acc{ display:flex; gap:6px; justify-content:flex-end; }
.tp-p-acc form{ margin:0; }
.tp-marca{ display:inline-block; margin-left:6px; padding:1px 8px; border-radius:100px; background:#F1F3F5; color:var(--texto-suave);
  font-size:.7rem; font-weight:700; vertical-align:1px; }
.tp-marca.hoy{ background:var(--verde-tinte); color:var(--exito-osc); }

.tp-nuevo > summary{ list-style:none; display:inline-flex; }
.tp-nuevo > summary::-webkit-details-marker{ display:none; }
.tp-nuevo[open] > summary{ display:none; }
.tp-form{ margin-top:4px; padding:16px; border:1px solid var(--panel-borde-fuerte); border-radius:12px; background:var(--piedra-claro); }
.tp-form h4{ margin:0 0 10px; font-size:.98rem; color:var(--navy); }
.tp-form .tp-nota{ margin-top:10px; }
.tp-opciones{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:12px; }
.tp-opcion{ display:flex; gap:10px; align-items:flex-start; padding:10px 12px; border:1px solid var(--panel-borde); border-radius:10px; background:#fff; cursor:pointer; }
.tp-opcion input{ margin-top:3px; accent-color:var(--azul); }
.tp-opcion strong{ display:block; font-size:.88rem; color:var(--texto); }
.tp-opcion small{ display:block; font-size:.76rem; line-height:1.35; color:var(--texto-suave); }
.tp-opcion:has(input:checked){ border-color:var(--azul); box-shadow:0 0 0 1px var(--azul); }
.tp-campos{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:10px 12px; }
.tp-campos .form-campo[hidden]{ display:none; }
.tp-botones{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; margin-top:14px; }
.tp-aviso{ margin-top:14px; padding:12px 14px; border-radius:10px; background:var(--aviso-tinte); border:1px solid var(--aviso-borde); color:#5a3d00; font-size:.86rem; line-height:1.45; }
.tp-aviso strong{ color:#5a3d00; }
.tp-aviso .tp-linea{ margin:8px 0 6px; }
.tp-aviso .tp-linea strong{ color:var(--navy); }
.tp-aviso ul{ margin:4px 0 6px 1.1rem; padding:0; }
.tp-aviso p{ margin:0; }
.tp-uso{ margin-top:16px; padding-top:14px; border-top:1px solid var(--linea); font-size:.85rem; }
.tp-uso ul{ margin:0; padding:0 0 0 1.1rem; }
.tp-uso a{ color:var(--azul); }
.precio-del-dia{ font-size:.8rem; color:var(--exito-osc); margin-top:.25rem; line-height:1.4; }
.precio-del-dia:empty{ display:none; }

@media (max-width:900px){
  .tp-editar{ grid-template-columns:minmax(0, 1fr); }
}
@media (max-width:760px){
  .tp-lista thead{ display:none; }
  .tp-lista, .tp-lista tbody{ display:block; }
  .tp-lista tr{ display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:4px 12px; padding:12px 0; border-bottom:1px solid var(--linea); }
  .tp-lista tr:last-child{ border-bottom:0; }
  .tp-lista td{ display:block; padding:0; border:0 !important; }
  .tp-lista .tp-c-nombre{ grid-column:1; grid-row:1; }
  .tp-lista .tp-hoy{ grid-column:2; grid-row:1; }
  .tp-lista .tp-c-cambio{ grid-column:1 / -1; grid-row:2; }
  .tp-lista .tp-acc, .tp-lista .tp-nada{ display:none; }
  .tp-tipos, .tp-tipos tbody{ display:block; }
  .tp-tipos tr{ display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:4px 10px; padding:10px 0; border-bottom:1px solid var(--linea); }
  .tp-tipos tr:last-child{ border-bottom:0; }
  .tp-tipos th[scope=row], .tp-tipos td, .tp-tipos .tp-num{ display:block; width:auto; padding:0; border:0; }
  .tp-tipos td.tp-c-tarifa{ grid-column:1 / -1; grid-row:2; }
  .tp-tipos td.tp-c-tarifa select{ max-width:none; }
  .tp-tipos td.tp-num{ grid-column:2; grid-row:1; }
  .tp-linea{ flex-direction:column; }
  .tp-linea li{ display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:center; border-left:0; border-top:1px solid var(--panel-borde); }
  .tp-linea li:first-child{ border-top:0; }
  .tp-linea li strong{ grid-column:2; grid-row:1 / span 2; margin:0; }
  .tp-linea li.hoy::before, .tp-linea li.nuevo::before{ right:auto; bottom:0; width:3px; height:auto; }
  .tp-precios > li{ grid-template-columns:4.2rem minmax(0, 1fr); }
  .tp-p-acc{ grid-column:2; justify-content:flex-start; }
  .tp-opciones, .tp-campos{ grid-template-columns:minmax(0, 1fr); }
}

/* ---------- Copias de seguridad (Configuración, 07/11/2026) ---------- */
.copia-historial{ list-style:none; margin:6px 0 0; padding:0; font-size:.78rem; }
.copia-historial li{ display:flex; justify-content:space-between; gap:8px; padding:4px 0; border-bottom:1px solid var(--linea); color:var(--texto-suave); }
.copia-historial li span:first-child{ color:var(--texto); font-variant-numeric:tabular-nums; white-space:nowrap; }
.copia-modal{ max-width:540px; }
.copia-form .copia-intro{ margin:0 0 14px; font-size:.86rem; color:var(--texto-suave); line-height:1.5; }
.copia-opcion{ display:flex; gap:10px; align-items:flex-start; padding:9px 12px; border:1px solid var(--panel-borde);
  border-radius:10px; margin-bottom:8px; font-size:.86rem; cursor:pointer; }
.copia-opcion input{ margin-top:3px; flex-shrink:0; }
.copia-opcion small{ display:block; color:var(--texto-suave); font-size:.78rem; }
.copia-cifrado{ border:0; padding:0; margin:12px 0 4px; }
.copia-cifrado legend{ font-size:.78rem; font-weight:600; color:var(--texto-suave); margin-bottom:6px; padding:0; }
.copia-campos{ margin-top:10px; }
.copia-dos{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.copia-dos .form-campo label{ display:block; font-size:.78rem; font-weight:600; color:var(--texto-suave); margin-bottom:4px; }
.copia-dos input{ width:100%; box-sizing:border-box; }
.copia-aviso{ background:var(--aviso-tinte); border:1px solid var(--aviso-borde); color:var(--aviso); border-radius:10px;
  padding:9px 12px; font-size:.8rem; margin:10px 0 0; line-height:1.45; }
.copia-botones{ display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap; margin-top:16px; }
.copia-preparando{ margin:10px 0 0; font-size:.82rem; color:var(--azul); font-weight:600; text-align:right; }
.copia-pagina{ max-width:600px; }
@media (max-width:520px){ .copia-dos{ grid-template-columns:1fr; } }

/* ---------- «Lo que se ha ganado» en el Inicio (07/11/2026) ---------- */
.gn-cabecera{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.gn-cabecera h3{ margin:0; font-size:1.05rem; font-weight:600; }
.gn-sub{ margin:2px 0 0; font-size:.8rem; color:var(--texto-suave); }
.gn-seg{ display:inline-flex; border:1px solid var(--panel-borde); border-radius:999px; padding:2px; background:var(--blanco); }
.gn-seg[hidden]{ display:none; }
.gn-seg button{ border:0; background:none; font:inherit; font-size:.8rem; font-weight:600; color:var(--texto-suave);
  padding:5px 14px; border-radius:999px; cursor:pointer; }
.gn-seg button[aria-pressed="true"]{ background:var(--azul); color:#fff; }
.gn-cifras{ display:flex; gap:28px; flex-wrap:wrap; margin:0 0 10px; }
.gn-cifra{ display:flex; flex-direction:column; }
.gn-cifra-et{ font-size:.76rem; color:var(--texto-suave); }
.gn-cifra-valor{ font-size:1.5rem; font-weight:600; color:var(--texto); line-height:1.2; }
.gn-cifra-detalle{ font-size:.74rem; color:var(--texto-suave); }
.gn-grafica{ position:relative; }
.gn-grafica svg{ display:block; width:100%; overflow:visible; }
.gn-grafica text{ font-family:var(--font-sans); fill:var(--texto-suave); font-size:11px; font-variant-numeric:tabular-nums; }
.gn-grafica text.gn-valor{ fill:var(--texto); font-weight:600; }
.gn-grafica text.gn-curso{ font-style:italic; }
.gn-grafica .gn-rejilla{ stroke:#E6ECF0; stroke-width:1; }
.gn-grafica .gn-base{ stroke:var(--panel-borde-fuerte); stroke-width:1; }
.gn-grafica .gn-relleno{ fill:var(--azul); }
.gn-grafica .gn-rayado-fondo{ fill:var(--serenity-tinte); }
.gn-grafica .gn-rayado-raya{ fill:var(--azul); }
.gn-grafica .gn-diana{ fill:transparent; }
.gn-grafica .gn-barra{ cursor:pointer; outline:none; }
.gn-grafica .gn-barra.activa path{ filter:brightness(1.3); }
.gn-grafica .gn-barra:focus-visible .gn-diana{ fill:rgba(35,79,123,.06); }
.gn-tip{ position:absolute; pointer-events:none; background:var(--blanco); border:1px solid var(--panel-borde); border-radius:10px;
  box-shadow:var(--sombra-s); padding:8px 11px; font-size:.78rem; color:var(--texto-suave); white-space:nowrap;
  transform:translate(-50%, -100%); z-index:5; }
.gn-tip strong{ display:block; font-size:.95rem; color:var(--texto); }
.gn-tip .gn-tip-ir{ margin-top:3px; color:var(--azul); }
.gn-detalle summary{ cursor:pointer; color:var(--azul); font-weight:600; font-size:.8rem; margin-top:6px; }
.gn-tabla{ width:100%; border-collapse:collapse; margin-top:8px; font-size:.8rem; font-variant-numeric:tabular-nums; }
.gn-tabla th, .gn-tabla td{ padding:5px 6px; border-bottom:1px solid var(--linea); text-align:right; }
.gn-tabla th:first-child, .gn-tabla td:first-child{ text-align:left; }
.gn-tabla th{ font-size:.72rem; color:var(--texto-suave); font-weight:600; text-transform:uppercase; letter-spacing:.03em; }
.gn-tabla a{ color:var(--azul); }
.gn-pie{ margin:10px 0 0; font-size:.76rem; color:var(--texto-suave); }

/* --- Autorizaciones en la ficha del alumno (08/11/2026, boceto aprobado) --- */
.aut-falta{ color:var(--aviso); font-weight:600; }
.aut-quien{ margin:0 0 10px; padding:8px 12px; border-radius:8px; background:var(--serenity-tinte); color:var(--azul); font-size:.8rem; }
.aut-lista{ list-style:none; margin:4px 0 0; padding:0; }
.aut-item{ padding:12px 0; border-top:1px solid var(--panel-borde); }
.aut-item:first-child{ border-top:0; padding-top:4px; }
.aut-item.aut-atencion{ background:var(--aviso-tinte); margin:0 -16px; padding:12px 16px; border-radius:10px; border-top:0; }
.aut-item.aut-atencion + .aut-item{ border-top:0; }
.aut-cab{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.aut-cab strong{ font-size:.92rem; color:var(--navy); }
.aut-cab .cont-badge{ flex-shrink:0; }
.aut-texto{ margin:4px 0 0; font-size:.82rem; color:var(--texto-suave); line-height:1.45; }
.aut-detalle{ display:grid; grid-template-columns:auto 1fr; gap:2px 10px; margin:6px 0 0; font-size:.8rem; }
.aut-detalle dt{ color:var(--texto-suave); }
.aut-detalle dd{ margin:0; color:var(--texto); }
.aut-usos{ display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0; padding:0; list-style:none; }
.aut-usos li{ font-size:.76rem; padding:3px 9px; border-radius:999px; border:1px solid var(--panel-borde); background:#fff; color:var(--texto-suave); }
.aut-usos li.si{ border-color:var(--exito); background:var(--verde-tinte); color:var(--verde-prof); font-weight:600; }
.aut-usos li.no{ text-decoration:line-through; text-decoration-color:rgba(0,0,0,.25); }
.aut-usos li.sin-dato{ border-style:dashed; }
.aut-preparada{ margin:6px 0 0; font-size:.8rem; color:var(--aviso); font-weight:600; }
.aut-acciones{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:8px; }
.aut-enlace{ font-size:.8rem; color:var(--azul); text-decoration:underline; text-underline-offset:2px; background:none; border:0; padding:0; cursor:pointer; font-family:inherit; }
.aut-enlace.aut-peligro{ color:var(--peligro); }
.aut-en-linea{ display:inline; margin:0; }
.aut-historial{ margin:12px 0 0; font-size:.8rem; }
.aut-historial summary{ cursor:pointer; color:var(--azul); }
.aut-historial ol{ margin:6px 0 0; padding-left:18px; color:var(--texto-suave); }
.aut-historial li{ margin:3px 0; }
.aut-historial a{ color:var(--azul); }
.aut-oculto{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* La ventana (o la página, sin JavaScript) para preparar, apuntar la firma o retirar */
.cal-modal.aut-modal{ max-width:600px; max-height:calc(100vh - 40px); }
.aut-pagina{ max-width:640px; }
.aut-ventana-alumno{ margin:-12px 0 10px; font-size:.82rem; color:var(--texto-suave); }
.aut-ventana-explicacion{ margin:0 0 14px; padding:8px 12px; border-radius:8px; background:var(--serenity-tinte); color:var(--azul); font-size:.8rem; }
.aut-form .form-campo{ margin-bottom:14px; }
.aut-version{ margin:-8px 0 12px; font-size:.76rem; color:var(--texto-suave); }
.aut-firmantes > label:first-child{ display:block; }
.aut-casilla{ display:flex; gap:8px; align-items:center; font-size:.86rem; margin:4px 0; font-weight:400; }
.aut-sino-bloque{ margin:0 0 14px; }
.aut-sino-titulo{ margin:0 0 4px; font-size:.8rem; font-weight:600; color:var(--navy); }
.aut-sino-tabla{ width:100%; border-collapse:collapse; font-size:.86rem; }
.aut-sino-tabla td{ padding:7px 0; border-bottom:1px solid var(--panel-borde); vertical-align:middle; }
.aut-sino-tabla td:last-child{ text-align:right; white-space:nowrap; padding-left:10px; }
.aut-sino-tabla small{ display:block; font-size:.74rem; color:var(--texto-suave); }
.aut-sino-tabla tr.con-error td:first-child{ color:var(--peligro); }
.aut-sino{ display:inline-flex; border:1px solid var(--panel-borde-fuerte); border-radius:8px; overflow:hidden; }
.aut-sino label{ position:relative; margin:0; cursor:pointer; }
.aut-sino label + label{ border-left:1px solid var(--panel-borde-fuerte); }
.aut-sino input{ position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.aut-sino span{ display:block; padding:5px 13px; font-size:.8rem; background:#fff; }
.aut-sino label:first-child input:checked + span{ background:var(--verde-tinte); color:var(--verde-prof); font-weight:700; }
.aut-sino label:last-child input:checked + span{ background:var(--rosa-tinte); color:var(--rosa-prof); font-weight:700; }
.aut-sino input:focus-visible + span{ outline:2px solid var(--azul); outline-offset:-2px; }
.aut-botones{ display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.btn-brush.aut-boton-peligro{ background:var(--peligro); border-color:var(--peligro); }

/* Fotografías y vídeos al pasar lista */
.cp-imagenes{ display:inline-block; margin-left:6px; font-size:.7rem; font-weight:600; color:var(--rosa-prof); }

/* ---------- Fotos del Inicio (carrusel «Nuestro espacio», 11/11/2026) ---------- */
.fotos-resumen{ display:flex; flex-wrap:wrap; gap:6px 18px; font-size:.86rem; margin:-4px 0 16px; opacity:.85; }
.fotos-resumen strong{ color:var(--navy); }
.fotos-rejilla{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:16px; }
.foto-tarjeta{ border:1px solid rgba(31,58,87,.1); border-radius:14px; overflow:hidden; background:#fff; display:flex; flex-direction:column; scroll-margin-top:90px; }
.foto-miniatura{ position:relative; aspect-ratio:4/3; background:var(--piedra-claro); overflow:hidden; }
.foto-miniatura img{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; display:block; }
.foto-tarjeta.retirada .foto-miniatura img{ opacity:.4; filter:grayscale(.7); }
.foto-numero{ position:absolute; top:8px; left:8px; background:rgba(255,255,255,.94); color:var(--navy); border-radius:100px;
  font-weight:600; font-size:.74rem; padding:2px 9px; box-shadow:0 1px 3px rgba(23,56,90,.15); }
.foto-estado{ position:absolute; top:8px; right:8px; }
.foto-cuerpo{ padding:10px 12px 8px; flex:1; }
.foto-alt{ font-size:.8rem; line-height:1.4; margin:0; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.foto-acciones{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:0 12px 12px; }
.foto-acciones form{ margin:0; }
.foto-mover{ display:flex; gap:4px; margin-right:auto !important; }
.btn-icono{ width:32px; height:32px; padding:0 !important; justify-content:center; }
.btn-icono .icono{ margin:0 !important; }
.btn-icono:disabled{ opacity:.35; cursor:default; }
/* Formulario: la foto al lado del selector */
.cont-img-campo.con-previa{ display:flex; flex-wrap:wrap; gap:14px; align-items:flex-start; }
.cont-img-campo.con-previa .cont-img-actual{ width:180px; max-width:100%; aspect-ratio:4/3; object-fit:contain; background:var(--piedra-claro); margin:0; }
.cont-img-campo.con-previa .cont-img-selector{ flex:1 1 220px; }
.cont-img-actual[hidden]{ display:none; }
