/* ============================================================
   theme2.css — rediseño de la ficha del entrenador (v51).
   Solo forma: no cambia funciones ni estructura de datos.
   Acotado a .app:not(.portal-app); el portal no lo carga.
   ============================================================ */

.app:not(.portal-app){
  --bg:#F8FAFC;
  --surface:#FFFFFF;
  --surface-2:#F8FAFC;
  --border:#E5EAF1;
  --ink:#111827;
  --ink-soft:#475467;
  --ink-faint:#667085;
  --accent:#155DFC;
  --accent-dark:#104AD0;
  --accent-soft:#EDF2FF;
  --lime:#155DFC;
  --gold-soft:#FFF5D9;
  --gold:#8B620C;
  --terracotta:#B42318;
  --terracotta-soft:#FEF3F2;
  --danger:#B42318;
  --radius:18px;
  --radius-sm:12px;
  --shadow:none;
  --font-display:'Figtree', system-ui, sans-serif;
  --font-ui:'Figtree', system-ui, sans-serif;
  --font-body:'Figtree', system-ui, sans-serif;
  font-family:var(--font-body);
  background:var(--bg);
  color:var(--ink);
}

/* ---------- Barra lateral y rail ---------- */
.app:not(.portal-app) .rail{background:var(--surface);}
.app:not(.portal-app) .rail-logo{background:var(--accent);color:#BFD3FF;border-radius:12px;}
.app:not(.portal-app) .rail-item.active{background:var(--accent-soft);color:var(--accent-dark);}
.app:not(.portal-app) .sidebar{background:var(--surface);}
.app:not(.portal-app) .brand-mark{font-weight:800;letter-spacing:-.02em;}
.app:not(.portal-app) #searchInput,
.app:not(.portal-app) .filter-row select{border-radius:12px;min-height:44px;background:var(--surface);}
.app:not(.portal-app) .btn-new{border-radius:12px;min-height:44px;font-weight:700;}
.app:not(.portal-app) .list-label{color:var(--ink-faint);}
.app:not(.portal-app) .patient-item{border-radius:14px;}
.app:not(.portal-app) .patient-item.active{background:var(--surface-2);}
.app:not(.portal-app) .patient-item.active .patient-name{color:var(--ink);}
.app:not(.portal-app) .patient-item.active .patient-avatar{background:var(--accent);color:#fff;}
.app:not(.portal-app) .patient-name{font-weight:700;}

/* ---------- Cabecera de la ficha ---------- */
.app:not(.portal-app) .topbar{
  padding:30px 36px 6px;background:var(--bg);border-bottom:0;
}
.app:not(.portal-app) .topbar-row{padding-bottom:20px;align-items:center;}
.app:not(.portal-app) .topbar-avatar{
  width:64px;height:64px;font-size:22px;font-weight:800;background:var(--accent-soft);color:var(--accent-dark);
}
.app:not(.portal-app) .topbar-name-input{font-size:28px;font-weight:800;letter-spacing:-.02em;}
.app:not(.portal-app) .topbar-meta{font-size:13px;margin-top:4px;}
.app:not(.portal-app) .badge-row{margin-top:8px;}
.app:not(.portal-app) .topbar-actions{gap:10px;align-items:center;}

/* ---------- Botones, chips y campos ---------- */
.app:not(.portal-app) .btn{
  border-radius:12px;min-height:44px;padding:0 18px;font-size:13.5px;font-weight:600;
  border:1px solid #D5DCE6;background:var(--surface);color:var(--ink);
}
.app:not(.portal-app) .btn:hover{border-color:var(--ink-faint);}
.app:not(.portal-app) .btn-sm{min-height:36px;padding:0 12px;font-size:12.5px;}
.app:not(.portal-app) .btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.app:not(.portal-app) .btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);}
.app:not(.portal-app) .btn-ghost{background:var(--surface);}
.app:not(.portal-app) .btn-danger{color:var(--danger);}
.app:not(.portal-app) .badge{font-weight:600;padding:4px 10px;}
.app:not(.portal-app) .field label{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);}
.app:not(.portal-app) .field input,
.app:not(.portal-app) .field select,
.app:not(.portal-app) .field textarea{
  background:var(--surface);border:1px solid #D5DCE6;border-radius:12px;min-height:44px;padding:9px 14px;font-size:14px;
}
.app:not(.portal-app) .field textarea{min-height:84px;}

/* ---------- Navegación: grupos + sub-pestañas ---------- */
.app:not(.portal-app) .tabs{display:flex;flex-direction:column;gap:12px;overflow:visible;flex-wrap:nowrap;}
.app:not(.portal-app) .grp-row{
  display:inline-flex;align-self:flex-start;gap:4px;padding:4px;background:var(--surface);
  border:1px solid var(--border);border-radius:16px;max-width:100%;overflow-x:auto;
}
.app:not(.portal-app) .grp{
  min-height:44px;padding:0 20px;border-radius:12px;border:0;background:transparent;
  font-family:var(--font-ui);font-weight:600;font-size:14px;color:var(--ink-soft);white-space:nowrap;
}
.app:not(.portal-app) .grp:hover:not(.active){background:var(--surface-2);}
.app:not(.portal-app) .grp.active{background:var(--ink);color:#fff;}
.app:not(.portal-app) .sub-row{display:flex;gap:8px;flex-wrap:wrap;}
.app:not(.portal-app) .tab{
  min-height:40px;padding:0 16px;border-radius:999px;border:1px solid #D5DCE6;border-bottom:1px solid #D5DCE6;
  background:var(--surface);color:var(--ink-soft);font-weight:600;font-size:13px;
}
.app:not(.portal-app) .tab:hover:not(:disabled):not(.active){background:var(--surface-2);}
.app:not(.portal-app) .tab.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;}

/* ---------- Contenido ---------- */
.app:not(.portal-app) .panel-scroll{padding:22px 36px 64px;}
.app:not(.portal-app) .panel-content{max-width:1180px;gap:20px;}
.app:not(.portal-app) .card{
  border-radius:var(--radius);padding:24px;border:1px solid var(--border);box-shadow:none;background:var(--surface);
}
.app:not(.portal-app) .card-label{
  font-size:17px;font-weight:700;letter-spacing:-.01em;text-transform:none;color:var(--ink);margin-bottom:16px;
}
.app:not(.portal-app) .field-hint{font-size:12.5px;color:var(--ink-faint);}
.app:not(.portal-app) .vol-note{font-weight:500;color:var(--ink-faint);}

/* Filas tipo lista: separadores suaves en vez de cajas */
.app:not(.portal-app) .payment-row,
.app:not(.portal-app) .template-row,
.app:not(.portal-app) .fielddef-row,
.app:not(.portal-app) .appt-row,
.app:not(.portal-app) .injury-row,
.app:not(.portal-app) .cd-row{border-color:#EEF2F6;}

/* Cifras */
.app:not(.portal-app) .dash-kpi-num,
.app:not(.portal-app) .summary-value,
.app:not(.portal-app) .payment-amount{font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.app:not(.portal-app) .mono{font-variant-numeric:tabular-nums;}

/* Tarjetas oscuras de apoyo (generador de rutinas) */
.app:not(.portal-app) .eq-chip{background:#E4EEF9;color:#24508A;border-radius:999px;font-weight:600;}
.app:not(.portal-app) .dash-pill-porvencer,
.app:not(.portal-app) .dash-pill-vencido,
.app:not(.portal-app) .dash-pill-aldia{font-weight:600;}

@media (max-width:860px){
  .app:not(.portal-app) .topbar{padding:20px 18px 6px;}
  .app:not(.portal-app) .panel-scroll{padding:18px 18px 60px;}
}

/* ---------- Dos columnas (ver layout2.js) ---------- */
.app:not(.portal-app) .split{display:grid;grid-template-columns:minmax(0,1fr) var(--side-w,360px);gap:24px;align-items:start;}
.app:not(.portal-app) .split-main,
.app:not(.portal-app) .split-side{display:flex;flex-direction:column;gap:20px;min-width:0;}
.app:not(.portal-app) .split-side .grid,
.app:not(.portal-app) .split-side .grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr));}
@media (max-width:1280px){
  .app:not(.portal-app) .split{grid-template-columns:minmax(0,1fr);}
}

/* ---------- Cabecera: nombre a la izquierda, acciones a la derecha ---------- */
.app:not(.portal-app) .topbar-left{flex:1 1 420px;min-width:0;}
.app:not(.portal-app) .topbar-left > div:last-child{flex:1;min-width:0;}
.app:not(.portal-app) .topbar-actions{flex:none;}

/* ---------- Rutina: bloques y cardio lado a lado, generador compacto ---------- */
.app:not(.portal-app) #panelRutina{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start;}
.app:not(.portal-app) #panelRutina > *{grid-column:1 / -1;}
.app:not(.portal-app) #panelRutina > .card:nth-child(1),
.app:not(.portal-app) #panelRutina > .card:nth-child(2){grid-column:auto;height:100%;}
.app:not(.portal-app) #panelRutina > .card:nth-child(5){order:30;}
.app:not(.portal-app) #panelRutina > .copy-bar{order:-1;justify-self:end;}
.app:not(.portal-app) .gen-card:not(.gen-open) > :not(.card-label){display:none;}
.app:not(.portal-app) .gen-card:not(.gen-open){background:var(--ink);border-color:var(--ink);color:#fff;}
.app:not(.portal-app) .gen-card:not(.gen-open) .card-label{margin:0;color:#fff;}
.app:not(.portal-app) .gen-card:not(.gen-open) .gen-toggle{background:var(--lime);border-color:var(--lime);color:var(--ink);}

/* ---------- Alimentación: comidas ---------- */
.app:not(.portal-app) .meal-label-input{font-weight:700;}

/* Filas de comida más compactas dentro de la columna principal */
.app:not(.portal-app) .split-main .food-table-head,
.app:not(.portal-app) .split-main .food-row{grid-template-columns:84px minmax(140px,1.5fr) 70px 46px 42px 42px 46px;column-gap:8px;}
.app:not(.portal-app) .split-main .food-row .food-slot-label{font-size:12px;}
.app:not(.portal-app) .split-main .card{padding:20px;}
.app:not(.portal-app) .split-main .food-table-inner{min-width:0;}

/* ---------- Pagos ---------- */
.app:not(.portal-app) .payments-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;}
.app:not(.portal-app) .summary-tile{background:var(--surface-2);border-radius:14px;padding:16px 18px;gap:4px;}
.app:not(.portal-app) .summary-tile:first-child{background:var(--ink);}
.app:not(.portal-app) .summary-tile:first-child .summary-value{color:#BFD3FF;}
.app:not(.portal-app) .summary-tile:first-child .summary-label{color:#B8C2D0;}
.app:not(.portal-app) .summary-value{font-size:32px;font-family:var(--font-ui);}
.app:not(.portal-app) .payment-amount{font-family:var(--font-ui);font-size:17px;}
.app:not(.portal-app) .payment-amount.mono,
.app:not(.portal-app) .summary-value.mono{font-family:var(--font-ui);}

/* ---------- Datos: casillas del portal más limpias ---------- */
.app:not(.portal-app) input[type="checkbox"]{accent-color:var(--accent);width:18px;height:18px;}

/* ---------- Rutina: selector de días ---------- */
.app:not(.portal-app) .day-split{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start;}
.app:not(.portal-app) .day-pane{display:flex;flex-direction:column;gap:20px;min-width:0;}
.app:not(.portal-app) .day-card.day-hide{display:none;}
.app:not(.portal-app) .day-nav{padding:14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;}
.app:not(.portal-app) .day-nav-label{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);padding:4px 8px 6px;}
.app:not(.portal-app) .day-pick{
  display:flex;align-items:center;gap:12px;width:100%;text-align:left;min-height:56px;padding:8px 10px;
  border-radius:14px;border:1px solid transparent;background:transparent;font-family:var(--font-ui);color:var(--ink);
}
.app:not(.portal-app) .day-pick:hover:not(.on){background:var(--surface-2);}
.app:not(.portal-app) .day-pick.on{background:var(--accent-soft);border-color:#B2CCFF;}
.app:not(.portal-app) .dp-n{
  width:36px;height:36px;border-radius:11px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:14px;flex:none;
}
.app:not(.portal-app) .day-pick.on .dp-n{background:var(--accent);color:#fff;}
.app:not(.portal-app) .dp-t{display:flex;flex-direction:column;min-width:0;}
.app:not(.portal-app) .dp-t b{font-size:14px;font-weight:700;}
.app:not(.portal-app) .dp-t small{font-size:12px;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.app:not(.portal-app) .day-pick.rest .dp-t b{color:var(--ink-faint);}
@media (max-width:1100px){
  .app:not(.portal-app) .day-split{grid-template-columns:minmax(0,1fr);}
  .app:not(.portal-app) .day-nav{flex-direction:row;flex-wrap:wrap;position:static;}
  .app:not(.portal-app) .day-nav-label{width:100%;}
  .app:not(.portal-app) .day-pick{width:auto;}
}

/* ---------- Contadores de pendientes ---------- */
.app:not(.portal-app) .nav-badge{
  display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:8px;
  border-radius:9px;background:#F04438;color:#fff;font-size:11px;font-weight:700;line-height:1;vertical-align:middle;
}
.app:not(.portal-app) .grp.active .nav-badge{box-shadow:0 0 0 2px var(--ink);}
.app:not(.portal-app) .day-split{grid-template-columns:232px minmax(0,1fr);}
.app:not(.portal-app) .day-pane .exercise-table-head,
.app:not(.portal-app) .day-pane .exercise-main{grid-template-columns:18px minmax(100px,1.4fr) 108px 50px 62px 62px 150px 34px;column-gap:6px;}
.app:not(.portal-app) .day-pane .routine-day-body{flex-direction:column;gap:12px;}
.app:not(.portal-app) .day-pane .muscle-sidebar{
  width:100%;border-right:0;border-bottom:1px solid var(--border);padding:0 0 12px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));column-gap:20px;
}
.app:not(.portal-app) .day-pane .muscle-sidebar-label{grid-column:1 / -1;}
