:root{
  /* Paleta MonitSal — basada en el logo (navy + blue + cyan) */
  /* Los nombres legacy (--gold, --cream, etc.) se mantienen para no romper
     el resto del CSS — solo cambian los valores hex. */
  --gold:#2E84CC;          /* blue principal del logo (acentos, botones) */
  --gold-light:#5BA3DD;    /* blue claro (hovers, highlights) */
  --gold-dark:#143057;     /* navy profundo (texto fuerte sobre claro) */
  --cream:#F5F7FA;         /* gris azulado muy claro (bg principal) */
  --dark:#1B3A6B;          /* navy del logo (topbar, headings) */
  --dark-2:#143057;        /* navy más profundo (sidebar) */
  --dark-3:#2E5089;        /* navy intermedio */
  --mid:#6B89A5;           /* gris azulado (texto secundario) */
  --light:#DCE5EE;         /* borde claro frío */
  --white:#FFFFFF;
  --sage:#B5DCE0;          /* cyan claro (compatibilidad) */
  --green:#4A7C59;         /* verde semántico (éxito) — mantenido */
  --teal:#4FC3D1;          /* cyan/agua del logo (acento secundario) */
  --terracotta:#2E84CC;    /* alias a blue principal (sin terracota) */
  --red:#8B3A3A;           /* rojo semántico — mantenido */
  --blue:#2E84CC;          /* blue principal (consolidado con --gold) */
  --amber:#8B6B2A;         /* ámbar semántico (warning) — mantenido */
  --purple:#5A3A8B;        /* púrpura admin role — mantenido */
}
*{margin:0;padding:0;box-sizing:border-box}body{font-family:'DM Sans',sans-serif;background:var(--cream);color:var(--dark);min-height:100vh;font-size:16px;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:'Cormorant Garamond',serif}
#loginScreen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--dark) 0%,var(--dark-2) 50%,#2A2318 100%);position:relative;overflow:hidden}
#loginScreen::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 50%,rgba(46,132,204,.15) 0%,transparent 60%);pointer-events:none;z-index:0}
/* Canvas de fondo animado: red de nodos conectandose (workflow vibe). */
#loginBgCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
@media (prefers-reduced-motion: reduce){#loginBgCanvas{display:none}}
/* Spinner del asistente IA en Nueva Solicitud */
@keyframes ai-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.login-card{background:rgba(255,255,255,.05);backdrop-filter:blur(20px);border:1px solid rgba(46,132,204,.3);border-radius:16px;padding:48px;width:420px;position:relative;z-index:2;box-shadow:0 32px 64px rgba(0,0,0,.4)}
.login-logo{text-align:center;margin-bottom:36px}.login-logo h1{color:var(--gold-light);font-size:2.4rem;font-weight:300;letter-spacing:.08em}.login-logo span{color:var(--mid);font-size:.8rem;letter-spacing:.2em;text-transform:uppercase}
/* Logo grafico opcional en login screen — reemplaza el texto del h1 */
.login-logo h1 .login-logo-img{display:block;max-height:80px;width:auto;margin:0 auto 8px auto;object-fit:contain}
.login-card label{display:block;color:var(--gold-light);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;margin-bottom:8px}
.login-card input{width:100%;background:rgba(255,255,255,.07);border:1px solid rgba(46,132,204,.25);border-radius:8px;padding:12px 16px;color:var(--cream);font-family:'DM Sans',sans-serif;font-size:.9rem;outline:none}
.login-card input:focus{border-color:var(--gold)}.login-card input::placeholder{color:rgba(255,255,255,.25)}.login-field{margin-bottom:20px}
.btn-login{width:100%;background:var(--gold);border:none;border-radius:8px;padding:14px;color:var(--dark);font-family:'DM Sans',sans-serif;font-size:.9rem;font-weight:600;cursor:pointer;margin-top:8px;transition:all .2s}.btn-login:hover{background:var(--gold-light)}
.login-error{color:#E87070;font-size:.8rem;margin-top:12px;text-align:center;display:none}
.demo-hints{margin-top:28px;padding-top:24px;border-top:1px solid rgba(46,132,204,.15)}.demo-hints p{color:rgba(255,255,255,.35);font-size:.72rem;margin-bottom:8px;letter-spacing:.1em;text-transform:uppercase}
.demo-user{display:flex;justify-content:space-between;padding:6px 10px;border-radius:6px;cursor:pointer}.demo-user:hover{background:rgba(46,132,204,.1)}.demo-user span:first-child{color:var(--gold-light);font-size:.78rem}.demo-user span:last-child{color:var(--mid);font-size:.72rem}
#app{display:none;flex-direction:column;min-height:100vh}
.topbar{background:var(--dark);color:var(--cream);padding:0 24px;display:flex;align-items:center;justify-content:space-between;height:60px;border-bottom:1px solid rgba(46,132,204,.2);position:sticky;top:0;z-index:200}
.topbar-left{display:flex;align-items:center;gap:20px}.topbar h1{font-size:1.4rem;font-weight:400;color:var(--gold-light);letter-spacing:.05em}
/* Logo grafico opcional (si APP_LOGO_URL esta seteada) — reemplaza el texto del h1 */
.topbar h1 .topbar-logo-img{display:block;max-height:40px;width:auto;object-fit:contain}
.topbar-search{position:relative}.topbar-search input{background:rgba(255,255,255,.08);border:1px solid rgba(46,132,204,.2);border-radius:20px;padding:7px 16px 7px 36px;color:var(--cream);font-size:.88rem;width:240px;outline:none}.topbar-search::before{content:'🔍';position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:.75rem}
.topbar-right{display:flex;align-items:center;gap:16px}
.user-pill{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.07);padding:6px 14px;border-radius:20px;border:1px solid rgba(46,132,204,.15);cursor:pointer;transition:background .15s}.user-pill:hover{background:rgba(255,255,255,.12)}
.user-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600}
.user-info span{display:block;font-size:.84rem;color:var(--gold-light)}.user-info small{font-size:.74rem;color:var(--mid)}
.btn-logout{background:none;border:1px solid rgba(46,132,204,.2);color:var(--mid);padding:5px 12px;border-radius:12px;cursor:pointer;font-size:.78rem}.btn-logout:hover{border-color:var(--gold);color:var(--gold-light)}
/* M1.5b — Selector Modo Soporte (super-admin) */
.support-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:14px;cursor:pointer;font-size:.78rem;font-weight:500;border:1px solid transparent;transition:background .15s,border-color .15s;line-height:1}
.support-pill.hq{background:rgba(46,132,204,.12);border-color:rgba(46,132,204,.35);color:var(--gold-light)}
.support-pill.hq:hover{background:rgba(46,132,204,.2);border-color:rgba(46,132,204,.55)}
.support-pill.active{background:rgba(212,120,106,.18);border-color:rgba(212,120,106,.55);color:#FFD9CF}
.support-pill.active:hover{background:rgba(212,120,106,.28)}
.support-pill .sp-ico{font-size:.92rem;line-height:1}
.support-pill .sp-label{white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}
.support-pill .sp-exit{margin-left:4px;padding:2px 6px;border-radius:8px;background:rgba(0,0,0,.25);font-size:.7rem;font-weight:600}
.support-pill .sp-exit:hover{background:rgba(0,0,0,.45)}
.sp-modal-list{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto;margin:10px 0 14px}
.sp-modal-empresa{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--light);border-radius:8px;cursor:pointer;background:var(--white);transition:border-color .15s,background .15s}
.sp-modal-empresa:hover{border-color:var(--gold);background:rgba(46,132,204,.04)}
.sp-modal-empresa.selected{border-color:var(--gold);background:rgba(46,132,204,.08)}
.sp-modal-empresa .sp-emp-color{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:var(--gold)}
.sp-modal-empresa .sp-emp-nombre{flex:1;font-weight:500;color:var(--dark)}
.sp-modal-empresa .sp-emp-id{font-size:.7rem;color:var(--mid);font-family:monospace}
@media (max-width:780px){.support-pill .sp-label{max-width:90px}}
.layout{display:flex;flex:1}
.sidebar{width:260px;background:var(--dark-2);border-right:1px solid rgba(46,132,204,.15);padding:20px 0;overflow-y:auto;position:sticky;top:60px;height:calc(100vh - 60px);flex-shrink:0}
.sidebar-section{margin-bottom:8px}.sidebar-label{padding:8px 20px 6px;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mid)}
.sidebar-item{display:flex;align-items:center;gap:12px;padding:10px 20px;cursor:pointer;color:rgba(255,255,255,.65);font-size:.91rem;transition:all .15s;border-left:3px solid transparent}
.sidebar-item:hover{background:rgba(46,132,204,.08);color:var(--cream)}.sidebar-item.active{background:rgba(46,132,204,.12);color:var(--gold-light);border-left-color:var(--gold)}
.sidebar-item .icon{font-size:1rem;width:20px;text-align:center}.sidebar-badge{margin-left:auto;background:var(--gold);color:var(--dark);font-size:.65rem;font-weight:700;padding:2px 7px;border-radius:10px;min-width:20px;text-align:center}
.sidebar-divider{height:1px;background:rgba(46,132,204,.1);margin:10px 20px}
.main{flex:1;overflow-y:auto;background:var(--cream)}.page{display:none;padding:28px}.page.active{display:block}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.page-header h2{font-size:1.9rem;font-weight:400}.page-header p{color:var(--mid);font-size:.9rem;margin-top:2px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;border-radius:8px;font-family:'DM Sans',sans-serif;font-size:.9rem;cursor:pointer;transition:all .2s;border:none;font-weight:500}
.btn-primary{background:var(--gold);color:var(--dark)}.btn-primary:hover{background:var(--gold-light);transform:translateY(-1px)}.btn-secondary{background:var(--white);color:var(--dark);border:1px solid var(--light)}.btn-secondary:hover{border-color:var(--gold)}.btn-danger{background:#8B3A3A;color:var(--white)}.btn-sm{padding:6px 13px;font-size:.83rem}
.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
.metric-card{background:var(--white);border-radius:12px;padding:20px;border:1px solid var(--light);cursor:pointer;transition:all .2s;border-top:3px solid var(--gold)}.metric-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}.metric-card .val{font-size:2rem;font-weight:600;font-family:'Cormorant Garamond',serif}.metric-card .lbl{font-size:.85rem;color:var(--mid);margin-top:4px}.metric-card .sub{font-size:.78rem;color:var(--gold);margin-top:6px;font-weight:500}
/* Dashboard — Semaforos por mesa */
.dash-mesa-section{margin-bottom:16px;background:var(--white);border:1px solid var(--light);border-radius:14px;overflow:hidden;transition:box-shadow .2s}
.dash-mesa-section:hover{box-shadow:0 4px 20px rgba(0,0,0,.06)}
.dash-mesa-default{border-color:var(--gold-light);border-width:2px}
.dash-mesa-header{display:flex;align-items:center;gap:10px;padding:16px 20px;cursor:pointer;border-bottom:1px solid var(--light);transition:background .15s}
.dash-mesa-header:hover{background:rgba(46,132,204,.04)}
.dash-mesa-icon{font-size:1.4rem}
.dash-mesa-name{font-size:1.05rem;font-weight:700;color:var(--dark);font-family:'DM Sans',sans-serif}
.dash-mesa-badge{font-size:.65rem;background:var(--gold);color:var(--dark);padding:3px 10px;border-radius:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.dash-mesa-arrow{margin-left:auto;color:var(--gold-dark);font-size:.85rem;font-weight:600;opacity:.6}
.dash-mesa-semaforos{display:grid;grid-template-columns:1fr 1fr;gap:0}
.semaforo-card{padding:20px;cursor:pointer;transition:background .15s}
.semaforo-card:hover{background:rgba(46,132,204,.03)}
.semaforo-card:first-child{border-right:1px solid var(--light)}
.semaforo-title{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--mid);margin-bottom:6px}
.semaforo-big{font-size:2.4rem;font-weight:700;font-family:'Cormorant Garamond',serif;color:var(--dark);line-height:1.1;margin-bottom:10px}
.semaforo-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-bottom:12px;background:var(--cream)}
.semaforo-bar-seg{height:100%;transition:width .3s}
.semaforo-bar-seg:first-child{border-radius:4px 0 0 4px}
.semaforo-bar-seg:last-child{border-radius:0 4px 4px 0}
.semaforo-detail{display:flex;flex-wrap:wrap;gap:6px}
.sem-chip{font-size:.72rem;font-weight:600;padding:3px 10px;border-radius:10px;display:inline-flex;align-items:center;gap:4px}
.sem-rojo{background:rgba(192,57,43,.08);color:#C0392B}
.sem-amarillo{background:rgba(212,160,23,.1);color:#9A7B00}
.sem-verde{background:rgba(39,174,96,.08);color:#1E8449}
/* Indicadores personalizados */
.dash-indicadores{display:flex;flex-wrap:wrap;gap:10px;padding:14px 20px;border-top:1px solid var(--light);background:rgba(245,247,250,.3)}
.indicador-card{flex:1;min-width:140px;max-width:220px;background:var(--white);border:1px solid var(--light);border-left:4px solid var(--teal);border-radius:10px;padding:14px 16px;transition:box-shadow .2s}
.indicador-card:hover{box-shadow:0 2px 10px rgba(0,0,0,.06)}
.indicador-val{font-size:1.6rem;font-weight:700;font-family:'Cormorant Garamond',serif;line-height:1.1}
.indicador-titulo{font-size:.75rem;color:var(--mid);margin-top:4px;font-weight:500;letter-spacing:.02em}

/* Indicador agrupado por fecha — vista calendario tipo mes */
.ind-cal-card{background:var(--white);border:1px solid var(--light);border-radius:12px;margin:14px 20px 6px;padding:16px 18px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.ind-cal-header{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--light)}
.ind-cal-title{font-size:1rem;font-weight:600;color:var(--dark);font-family:'Cormorant Garamond',serif;font-size:1.2rem}
.ind-cal-total{display:flex;align-items:baseline;gap:8px;cursor:pointer;padding:4px 10px;border-radius:8px;transition:background .15s}
.ind-cal-total:hover{background:rgba(46,132,204,.08)}
.ind-cal-total-monto{font-size:1.5rem;font-weight:700;font-family:'Cormorant Garamond',serif;line-height:1}
.ind-cal-total-count{font-size:.78rem;color:var(--mid);font-weight:500}
.ind-cal-nav{display:flex;align-items:center;gap:6px;margin-left:auto}
.ind-cal-nav-btn{background:var(--cream);border:1px solid var(--light);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:1rem;color:var(--dark);display:flex;align-items:center;justify-content:center;transition:all .15s;font-family:'DM Sans',sans-serif}
.ind-cal-nav-btn:hover{background:var(--gold);color:var(--dark);border-color:var(--gold)}
.ind-cal-month{font-size:.85rem;font-weight:600;color:var(--dark);min-width:140px;text-align:center;text-transform:capitalize}
.ind-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.ind-cal-dow{font-size:.7rem;font-weight:700;color:var(--mid);text-align:center;padding:4px 0;text-transform:uppercase;letter-spacing:.08em}
.ind-cal-cell{aspect-ratio:1;border-radius:6px;padding:4px 6px;display:flex;flex-direction:column;justify-content:flex-start;border:1px solid transparent;min-height:60px}
.ind-cal-empty{background:transparent}
.ind-cal-no-data{background:rgba(245,247,250,.4);border-color:rgba(0,0,0,.03)}
.ind-cal-no-data .ind-cal-daynum{color:var(--mid);opacity:.6}
.ind-cal-has-data{background:rgba(79,195,209,.06);border-color:rgba(79,195,209,.2);cursor:pointer;transition:all .15s}
.ind-cal-has-data:hover{background:rgba(79,195,209,.12);transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.08)}
.ind-cal-past{background:rgba(139,58,58,.06);border-color:rgba(139,58,58,.2)}
.ind-cal-past:hover{background:rgba(139,58,58,.12)}
.ind-cal-past .ind-cal-monto{color:#8B3A3A}
.ind-cal-today{background:rgba(46,132,204,.15);border-color:var(--gold)}
.ind-cal-today .ind-cal-monto{color:var(--gold-dark)}
.ind-cal-daynum{font-size:.78rem;font-weight:600;color:var(--dark);line-height:1}
.ind-cal-monto{font-size:.82rem;font-weight:700;color:var(--teal);margin-top:2px;line-height:1.2;font-family:'DM Sans',sans-serif}
.ind-cal-count{font-size:.65rem;color:var(--mid);margin-top:auto;line-height:1}

/* Mobile: calendario sigue siendo grilla 7x pero más compacto */
@media(max-width:768px){
  .ind-cal-card{margin:12px 12px 6px;padding:12px}
  .ind-cal-header{gap:10px;margin-bottom:10px}
  .ind-cal-title{font-size:1rem}
  .ind-cal-total-monto{font-size:1.2rem}
  .ind-cal-total-count{font-size:.72rem}
  .ind-cal-nav{margin-left:0;width:100%;justify-content:space-between}
  .ind-cal-month{flex:1}
  .ind-cal-grid{gap:2px}
  .ind-cal-cell{min-height:48px;padding:2px 3px}
  .ind-cal-dow{font-size:.62rem;padding:2px 0}
  .ind-cal-daynum{font-size:.7rem}
  .ind-cal-monto{font-size:.7rem}
  .ind-cal-count{font-size:.58rem}
}

.table-wrap{background:var(--white);border-radius:12px;border:1px solid var(--light);overflow:hidden}.table-header{padding:16px 20px;border-bottom:1px solid var(--light);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.filter-select{background:var(--cream);border:1px solid var(--light);border-radius:8px;padding:7px 12px;font-size:.88rem;color:var(--dark);cursor:pointer;outline:none}
table{width:100%;border-collapse:collapse}th{background:var(--cream);padding:11px 16px;text-align:left;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mid);border-bottom:1px solid var(--light)}td{padding:13px 16px;font-size:.91rem;border-bottom:1px solid rgba(0,0,0,.04);vertical-align:middle;line-height:1.45}tr:hover td{background:rgba(46,132,204,.04)}
.ticket-id{font-family:'DM Sans',sans-serif;font-weight:700;font-size:.95rem;letter-spacing:.03em;color:var(--gold-dark)}.ticket-title{font-weight:500;cursor:pointer;color:var(--dark);font-size:.92rem}.ticket-title:hover{color:var(--gold-dark);text-decoration:underline}
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:.78rem;font-weight:600}
.badge-abierta{background:rgba(122,158,126,.15);color:#4A7C59}.badge-progreso{background:rgba(79,195,209,.13);color:#143057}.badge-espera{background:rgba(46,132,204,.18);color:#143057}.badge-cerrada{background:#E8ECF1;color:#6B89A5}
.badge-alta{background:#FBEAEA;color:#8B1A1A}.badge-media{background:#FFF4E5;color:#8B5A00}.badge-baja{background:#EBF5EC;color:#2D6A35}
.badge-role-admin{background:rgba(90,58,139,.12);color:#5A3A8B}.badge-role-agente{background:rgba(79,195,209,.12);color:#1B3A6B}.badge-role-usuario{background:rgba(122,158,126,.15);color:#4A7C59}.badge-role-supervisor{background:rgba(46,132,204,.15);color:#2E84CC}
.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200}.overlay.open{display:flex;align-items:center;justify-content:center}
.modal{background:var(--white);border-radius:16px;padding:32px;width:560px;max-width:95vw;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 24px 64px rgba(0,0,0,.2)}.modal-wide{width:780px}.modal h3{font-size:1.5rem;font-weight:400;margin-bottom:8px}.modal-close{position:absolute;top:20px;right:20px;background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--mid)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mid);margin-bottom:6px}
.form-group input,.form-group select,.form-group textarea{width:100%;border:1px solid var(--light);border-radius:8px;padding:10px 14px;font-family:'DM Sans',sans-serif;font-size:.9rem;color:var(--dark);outline:none;background:var(--white)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--gold)}.form-group textarea{resize:vertical;min-height:80px}
.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px;padding-top:20px;border-top:1px solid var(--light)}
/* ---- Detail panel: full-page layout ---- */
.detail-panel{
  position:fixed;inset:0;top:60px;
  background:var(--cream);
  z-index:150;
  display:flex;flex-direction:column;
  transform:translateY(100%);
  transition:transform .38s cubic-bezier(.4,0,.2,1);
  overflow:hidden;
}
.detail-panel.open{transform:translateY(0)}

/* Header barra oscura con info ticket */
.detail-header{
  padding:0 28px;
  height:58px;
  border-bottom:2px solid rgba(46,132,204,.25);
  background:var(--dark);
  color:var(--cream);
  flex-shrink:0;
  display:flex;
  align-items:center;
  gap:16px;
}
.dp-back-btn{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.07);
  border:1px solid rgba(46,132,204,.25);
  color:var(--gold-light);
  padding:5px 14px;
  border-radius:20px;
  font-size:.78rem;
  cursor:pointer;
  font-family:'DM Sans',sans-serif;
  white-space:nowrap;
  transition:all .15s;
  flex-shrink:0;
}
.dp-back-btn:hover{background:rgba(46,132,204,.15);border-color:var(--gold)}
.dp-header-info{flex:1;min-width:0;display:flex;align-items:center;gap:14px}
.dp-header-id{font-family:'DM Sans',sans-serif;font-size:1.1rem;font-weight:800;letter-spacing:.04em;color:var(--gold);white-space:nowrap}
.dp-header-sep{color:rgba(255,255,255,.2);font-size:1.1rem}
.dp-header-title{font-size:1rem;font-weight:500;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:500px}

/* Dos columnas — el ancho de la columna izquierda es variable (--dp-left)
   para poder arrastrar el divisor. Por defecto 42%. La columna central de 6px
   es el divisor (splitter); la derecha ocupa el resto (1fr). */
.detail-columns{
  display:grid;
  grid-template-columns:var(--dp-left,42%) 6px 1fr;
  flex:1;
  overflow:hidden;
}
.detail-col-left{
  overflow-y:auto;
  padding:24px 28px;
  background:var(--white);
}
/* Divisor arrastrable entre las dos columnas (solo desktop) */
.detail-splitter{
  background:var(--light);
  cursor:col-resize;
  transition:background .15s;
}
.detail-splitter:hover,.detail-splitter.dragging{background:var(--gold)}
.detail-col-right{
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:var(--cream);
}
.detail-activity-feed{
  flex:1;
  overflow-y:auto;
  padding:20px 24px;
}
.detail-footer{padding:12px 20px;border-top:1px solid var(--light);background:var(--white);flex-shrink:0}

/* Compatibilidad mobile: seguimos usando detail-body para overrides */
.detail-body{flex:1;overflow-y:auto;padding:20px 24px}
.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 16px}.detail-meta-item{background:var(--cream);border:1px solid var(--light);border-radius:8px;padding:10px 12px}.detail-meta-item .key{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mid);margin-bottom:4px}.detail-meta-item .val{font-size:.93rem;font-weight:500;color:var(--dark)}
.activity-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--light);font-size:.88rem;line-height:1.55}.activity-dot{width:9px;height:9px;border-radius:50%;background:var(--gold);margin-top:6px;flex-shrink:0;box-shadow:0 0 0 2px rgba(46,132,204,.2)}.activity-item .act-time{color:var(--mid);font-size:.78rem;margin-top:4px}
/* === Historial diferenciado: filtro + comentarios (burbuja) vs eventos de sistema === */
/* Fila del titulo: "Historial de actividad" a la izquierda, filtro a la derecha. */
.activity-feed-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--light)}
.act-filter-bar{display:flex;gap:4px;margin-bottom:14px}
.activity-feed-head .act-filter-bar{margin-bottom:0}
.act-filter-btn{background:var(--cream);border:1px solid var(--light);border-radius:8px;padding:5px 12px;font-size:.76rem;cursor:pointer;color:var(--mid);font-family:'DM Sans',sans-serif;display:flex;align-items:center;gap:5px}
.act-filter-btn:hover{border-color:var(--gold)}
.act-filter-btn.active{background:var(--dark);color:var(--gold-light);border-color:var(--dark)}
/* Comentario humano: avatar + cabecera (nombre/rol/hora) + burbuja */
.act-comment{align-items:flex-start}
.act-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;color:#fff;flex-shrink:0}
.act-cmt-main{flex:1;min-width:0}
.act-cmt-head{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.act-cmt-who{font-weight:700;font-size:.86rem;color:var(--dark)}
.act-role{font-size:.62rem;font-weight:700;border-radius:8px;padding:1px 8px;text-transform:uppercase;letter-spacing:.03em}
.act-role-ag{background:rgba(46,132,204,.12);color:#2E6FA8}
.act-role-us{background:rgba(107,101,96,.14);color:var(--mid)}
.act-cmt-time{font-size:.72rem;color:var(--mid);margin-left:auto;white-space:nowrap}
.act-cmt-bubble{background:var(--white);border:1px solid var(--light);border-radius:0 10px 10px 10px;padding:9px 13px;font-size:.88rem;line-height:1.55;color:var(--dark);word-break:break-word}
.act-comment.act-private .act-cmt-bubble{background:rgba(139,58,58,.04);border-color:rgba(139,58,58,.18);border-left:3px solid #8B3A3A}
/* Evento de sistema: fila compacta muteada con chip de icono */
.act-sys{display:flex;align-items:center;gap:8px;padding:6px 2px;font-size:.78rem;color:var(--mid);border-bottom:1px solid rgba(0,0,0,.03)}
.act-sys-chip{display:inline-flex;align-items:center;gap:4px;background:var(--cream);border:1px solid var(--light);border-radius:8px;padding:1px 8px;font-size:.7rem;font-weight:600;flex-shrink:0;white-space:nowrap;color:var(--mid)}
.act-sys-text{flex:1;min-width:0}
.act-sys-time{font-size:.7rem;color:var(--mid);opacity:.8;flex-shrink:0;white-space:nowrap}
/* Hitos del historial: tarea finalizada / formulario respondido. Tono y tamano
   distintos a un evento de sistema normal (tarjeta con acento de color). */
.act-milestone{margin:8px 0;padding:10px 12px;border:1px solid var(--light);border-left:3px solid var(--teal);border-radius:0 10px 10px 0;background:rgba(79,195,209,.06)}
.act-milestone-tarea{border-left-color:#2E7D32;background:rgba(46,125,50,.06)}
.act-milestone-formulario{border-left-color:#3B8FC1;background:rgba(59,143,193,.06)}
.act-milestone-mail{border-left-color:#7C5CBF;background:rgba(124,92,191,.06)}
.act-mil-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.act-mil-ic{font-size:.98rem}
.act-mil-title{font-size:.72rem;font-weight:700;color:var(--dark);text-transform:uppercase;letter-spacing:.04em}
.act-mil-name{font-size:.86rem;font-weight:600;color:var(--dark)}
.act-mil-time{font-size:.7rem;color:var(--mid);margin-left:auto;white-space:nowrap}
.act-mil-sub{margin-top:2px}
.act-mil-by{font-size:.74rem;color:var(--mid)}
.act-mil-answers{margin-top:8px}
.act-mil-ans{display:flex;gap:8px;padding:5px 0;border-top:1px solid rgba(0,0,0,.05);font-size:.82rem}
.act-mil-ans:first-child{border-top:none}
.act-mil-ans-lbl{font-weight:700;color:var(--dark);min-width:34%;max-width:50%}
.act-mil-ans-val{color:#555;flex:1;word-break:break-word}
/* === Banda resumen del workflow (clickeable, abre el mapa) === */
.wf-band{background:rgba(79,195,209,.05);border:1px solid rgba(79,195,209,.28);border-radius:12px;padding:12px 14px;margin-bottom:14px;cursor:pointer;transition:box-shadow .15s,border-color .15s}
.wf-band:hover{border-color:var(--teal);box-shadow:0 2px 12px rgba(46,132,204,.12)}
.wf-band-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.wf-band-title{font-size:.9rem;font-weight:700;color:var(--dark)}
.wf-band-sub{font-size:.76rem;color:var(--mid);margin-top:2px}
.wf-band-link{font-size:.74rem;color:var(--teal);font-weight:600;white-space:nowrap;flex-shrink:0}
.wf-band-pipe{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-bottom:10px}
.wf-band-node{display:inline-flex;align-items:center;gap:5px;border:1px solid;border-radius:8px;padding:3px 8px;background:var(--white);font-size:.72rem;font-weight:600;color:var(--dark);white-space:nowrap}
.wf-band-count{font-size:.62rem;font-weight:700;color:#fff;border-radius:9px;padding:0 6px;min-width:15px;text-align:center}
.wf-band-arrow{color:var(--mid);font-size:.85rem}
.wf-band-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:rgba(0,0,0,.04);margin-bottom:8px}
.wf-band-legend{display:flex;flex-wrap:wrap;gap:5px 14px;font-size:.72rem;color:var(--mid)}
.wf-band-legend span{display:inline-flex;align-items:center;gap:5px}
.wf-band-legend i{width:9px;height:9px;border-radius:2px;display:inline-block}
.wf-band-legend b{color:var(--dark)}
/* Acciones pendientes del workflow */
.wf-acciones{border:1px solid var(--light);border-radius:10px;padding:10px 12px;margin-bottom:14px;background:var(--white)}
.wf-acciones-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gold-dark);margin-bottom:8px}
.wf-acc-item{padding:6px 0;border-top:1px solid rgba(0,0,0,.04)}
.wf-acc-item:first-of-type{border-top:none}
.wf-acc-node{font-size:.78rem;font-weight:600;color:var(--dark)}
/* === Mapa del workflow (modal de flujo literal) === */
.wf-map-panel{background:var(--cream);border-radius:14px;width:min(1180px,96vw);height:min(820px,92vh);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.4);margin:auto}
.wf-map-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;background:var(--dark);flex-shrink:0}
.wf-map-head-l{display:flex;align-items:center;gap:12px;min-width:0}
.wf-map-head-ic{font-size:1.3rem}
.wf-map-head-title{font-size:1.02rem;font-weight:700;color:#fff}
.wf-map-head-sub{font-size:.76rem;color:var(--gold-light);margin-top:2px}
.wf-map-head-r{display:flex;align-items:center;gap:10px;flex-shrink:0}
.wf-map-select{border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:6px 10px;font-size:.82rem;font-family:'DM Sans',sans-serif;background:rgba(255,255,255,.95);color:var(--dark);cursor:pointer;outline:none}
.wf-map-close{width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.1);color:var(--gold-light);cursor:pointer;font-size:1.1rem}
.wf-map-banner{display:flex;align-items:center;gap:10px;padding:9px 20px;background:rgba(79,195,209,.12);border-bottom:1px solid var(--light);font-size:.78rem;color:var(--dark);flex-shrink:0;flex-wrap:wrap}
.wf-map-clear{border:none;background:none;color:var(--teal);cursor:pointer;font-size:.76rem;font-weight:600}
.wf-map-canvas{flex:1;overflow:auto;background:radial-gradient(rgba(60,80,120,.10) 1px,transparent 1px);background-size:20px 20px}
.wf-map-stage{position:relative;margin:0 auto}
.wf-map-svg{position:absolute;inset:0;pointer-events:none}
.wf-map-node{position:absolute;box-sizing:border-box;background:var(--white);border:1px solid var(--light);border-top:3px solid var(--mid);border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06);z-index:2;transition:opacity .2s,box-shadow .2s;overflow:hidden}
.wf-map-node-head{display:flex;align-items:center;gap:6px;padding:5px 8px 3px;font-size:.82rem}
.wf-map-node-ic{font-size:.82rem}
.wf-map-chip{margin-left:auto;font-size:.58rem;font-weight:700;padding:1px 6px;border-radius:8px;white-space:nowrap}
.wf-map-node-desc{padding:0 8px 5px;font-size:.74rem;font-weight:700;color:var(--dark);line-height:1.25}
/* Lineas de info ricas del nodo (responsable/destino, plazo) + flag bloqueante */
.wf-map-node-meta{padding:0 8px 2px;font-size:.66rem;color:var(--mid);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wf-map-node-bloq{padding:1px 8px 4px;font-size:.62rem;font-weight:700;color:#B7472A}
/* Estado "quizas": el nodo podria aplicar al doc si cambia su estado (tentativo) */
.wf-map-node-quizas{border-style:dashed;background:rgba(197,160,39,.05)}
.wf-map-quizas-tag{margin-left:auto;font-size:.56rem;font-weight:700;color:#8B6D1F;background:rgba(197,160,39,.16);border-radius:8px;padding:1px 6px;white-space:nowrap}
.wf-map-tokens{display:flex;flex-wrap:wrap;gap:3px;padding:5px 8px;border-top:1px dashed var(--light)}
.wf-map-token{color:#fff;font-size:.6rem;font-weight:700;padding:2px 6px;border-radius:5px;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.wf-map-foot{display:flex;align-items:center;gap:12px;padding:10px 20px;background:var(--white);border-top:1px solid var(--light);flex-shrink:0;overflow-x:auto}
.wf-map-foot-lbl{font-size:.72rem;font-weight:700;text-transform:uppercase;color:var(--mid);flex-shrink:0}
.wf-map-roster{display:flex;gap:6px;flex-wrap:wrap}
.wf-map-roster-item{border:1px solid var(--light);border-radius:18px;padding:4px 12px;font-size:.74rem;color:var(--dark);cursor:pointer;background:var(--white);font-family:'DM Sans',sans-serif}
.wf-map-roster-item.active{border-color:var(--gold);background:rgba(197,160,39,.1)}
/* Control documental en el detalle: chevron del bloque colapsable + tabla responsive */
.cdoc-chevron{background:none;border:none;cursor:pointer;color:#5BA3CC;font-size:.95rem;line-height:1;padding:2px 6px;border-radius:6px;transition:background .15s}
.cdoc-chevron:hover{background:rgba(91,163,204,.14)}
.cdoc-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.catalog-card{background:var(--white);border-radius:12px;border:1px solid var(--light);padding:18px;cursor:pointer;transition:all .2s}.catalog-card:hover{border-color:var(--gold);box-shadow:0 4px 16px rgba(46,132,204,.15);transform:translateY(-2px)}
.catalog-card .cat-mesa{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--gold);font-weight:600;margin-bottom:6px}.catalog-card .cat-name{font-size:1rem;font-weight:500;margin-bottom:6px}.catalog-card .cat-desc{font-size:.83rem;color:var(--mid);line-height:1.5}
.users-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.user-card{background:var(--white);border-radius:12px;border:1px solid var(--light);padding:18px}.uc-avatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:600;color:var(--white);flex-shrink:0}.user-card-actions{display:flex;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--light)}
.abm-layout{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}.abm-list{background:var(--white);border-radius:12px;border:1px solid var(--light);overflow:hidden;max-height:calc(100vh - 200px);overflow-y:auto}
.abm-list-header{padding:12px 16px;border-bottom:1px solid var(--light);background:var(--cream);display:flex;align-items:center}.abm-list-search{width:100%;border:none;background:transparent;font-size:.88rem;outline:none}
.abm-list-item{padding:11px 14px;border-bottom:1px solid rgba(0,0,0,.04);cursor:pointer;display:flex;align-items:center;gap:10px}.abm-list-item:hover{background:rgba(46,132,204,.06)}.abm-list-item.selected{background:rgba(46,132,204,.12);border-left:3px solid var(--gold)}
.abm-form-panel{background:var(--white);border-radius:12px;border:1px solid var(--light);padding:24px}
.mesa-group-header{padding:7px 14px;background:var(--cream);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mid);font-weight:600;border-bottom:1px solid var(--light);position:sticky;top:0;z-index:1}
.vis-layout{display:grid;grid-template-columns:280px 1fr;gap:20px}.vis-service-list{background:var(--white);border-radius:12px;border:1px solid var(--light);overflow:hidden;max-height:calc(100vh - 200px);overflow-y:auto}.vis-service-header{padding:12px 16px;border-bottom:1px solid var(--light);background:var(--cream);position:sticky;top:0;z-index:2}
.vis-search{width:100%;border:1px solid var(--light);border-radius:8px;padding:8px 12px;font-size:.82rem;outline:none;font-family:'DM Sans',sans-serif}
.vis-service-item{padding:10px 14px;border-bottom:1px solid rgba(0,0,0,.04);cursor:pointer}.vis-service-item:hover{background:rgba(46,132,204,.06)}.vis-service-item.selected{background:rgba(46,132,204,.12);border-left:3px solid var(--gold)}.vis-service-item .vsn{font-size:.88rem;font-weight:500}.vis-service-item .vsm{font-size:.76rem;color:var(--mid);margin-top:2px}
.vis-panel{background:var(--white);border-radius:12px;border:1px solid var(--light);padding:24px}
.vis-panel-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--light)}
.vis-legend{display:flex;gap:16px;font-size:.75rem;color:var(--mid);margin-bottom:16px;padding:10px 14px;background:var(--cream);border-radius:8px}.vis-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.access-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:8px;margin-bottom:4px}.access-row:hover{background:rgba(0,0,0,.02)}.access-row-left{display:flex;align-items:center;gap:10px}.access-row-name{font-size:.85rem;font-weight:500}.access-row-sub{font-size:.72rem;color:var(--mid)}
.acc-btn{padding:5px 12px;border-radius:6px;font-size:.72rem;font-weight:600;cursor:pointer;border:1.5px solid transparent;opacity:.6}.acc-btn.active-btn{opacity:1;transform:scale(1.05)}.acc-btn-visible{background:#EBF5EC;color:#2D6A35;border-color:#2D6A35}.acc-btn-hidden{background:#FBEAEA;color:#8B1A1A;border-color:#8B1A1A}.acc-btn-inherit{background:var(--cream);color:var(--mid);border-color:var(--light)}.acc-btn:hover{opacity:1}
.acc-btn-partial{background:#FFF4E5;color:#8B5A00;border-color:#8B5A00}
.vis-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;color:var(--mid);gap:12px}.vis-empty .ve-icon{font-size:2.5rem;opacity:.4}
.tickets-tabs{display:flex;gap:4px;margin-bottom:16px;background:var(--white);padding:4px;border-radius:10px;border:1px solid var(--light);width:fit-content}
.tickets-tab{padding:8px 16px;border-radius:8px;cursor:pointer;font-size:.88rem;display:flex;align-items:center;gap:4px}.tickets-tab.active{background:var(--dark);color:var(--gold-light)}.tickets-tab:not(.active):hover{background:var(--cream)}
.observer-section{margin:16px 0;padding:14px;background:rgba(79,195,209,.05);border:1px solid rgba(79,195,209,.18);border-radius:10px}.observer-section-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--teal);margin-bottom:10px;display:flex;justify-content:space-between}
.observer-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.observer-chip{display:flex;align-items:center;gap:6px;background:var(--white);border:1px solid rgba(79,195,209,.22);border-radius:20px;padding:4px 10px 4px 4px;font-size:.78rem}
.oc-avatar{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;color:#fff}.oc-remove{background:none;border:none;font-size:.7rem;cursor:pointer;color:var(--mid)}
.add-observer-btn{background:none;border:1px dashed rgba(79,195,209,.35);color:var(--teal);padding:4px 12px;border-radius:20px;font-size:.75rem;cursor:pointer;font-family:'DM Sans',sans-serif}
.act-observer-badge{background:rgba(79,195,209,.1);color:var(--teal);font-size:.68rem;padding:2px 8px;border-radius:10px;font-weight:600;margin-left:8px}
.comment-toolbar{display:flex;gap:6px;margin-bottom:8px;align-items:center;padding:6px 0}.comment-type-btn{background:var(--cream);border:1.5px solid var(--light);padding:6px 14px;border-radius:8px;font-size:.82rem;cursor:pointer;font-family:'DM Sans',sans-serif;font-weight:600;color:var(--mid)}.comment-type-btn.selected{background:var(--dark);color:var(--gold-light);border-color:var(--dark)}.comment-type-btn.selected-private{background:#8B3A3A;color:#fff;border-color:#8B3A3A}
.act-private{background:rgba(139,58,58,.04);border-radius:8px;padding:6px 0 6px 6px;border-left:3px solid #8B3A3A}.act-private-badge{background:rgba(139,58,58,.1);color:#8B3A3A;font-size:.65rem;padding:1px 6px;border-radius:6px;font-weight:700;margin-left:6px}
.act-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.act-attach-thumb{width:60px;height:60px;object-fit:cover;border-radius:6px;border:1px solid var(--light);cursor:pointer}
.comment-attach-bar{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}.attach-btn{background:none;border:1px dashed var(--light);color:var(--mid);padding:5px 12px;border-radius:8px;font-size:.75rem;cursor:pointer;font-family:'DM Sans',sans-serif}
.attach-file-chip{display:flex;align-items:center;gap:6px;background:var(--cream);border:1px solid var(--light);border-radius:8px;padding:4px 8px;font-size:.75rem}.afc-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px}.afc-remove{background:none;border:none;font-size:.72rem;cursor:pointer;color:var(--mid)}
.obs-search-input{width:100%;border:1px solid var(--light);border-radius:8px;padding:10px 14px;font-size:.88rem;outline:none;font-family:'DM Sans',sans-serif}
.obs-suggestion-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer}.obs-suggestion-item:hover{background:rgba(46,132,204,.08)}
.obs-od-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;color:#fff;flex-shrink:0}
.notif-check{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:.82rem}.notif-check input[type=checkbox]{accent-color:var(--gold);width:16px;height:16px}
.mesas-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.mesa-select-card{background:var(--white);border:2px solid var(--light);border-radius:12px;padding:16px;cursor:pointer;text-align:center}.mesa-select-card:hover,.mesa-select-card.selected{border-color:var(--gold);background:rgba(46,132,204,.05)}
.toast{position:fixed;bottom:24px;right:24px;background:var(--dark);color:var(--cream);padding:14px 20px;border-radius:10px;font-size:.85rem;z-index:9999;border-left:3px solid var(--gold);box-shadow:0 8px 24px rgba(0,0,0,.3);transform:translateY(100px);opacity:0;transition:all .3s}.toast.show{transform:translateY(0);opacity:1}
/* Barra de progreso global — para operaciones largas (Drive, batch). Visible solo cuando se llama showProgressBar(). */
.progress-bar-toast{position:fixed;bottom:24px;right:24px;background:var(--dark);color:var(--cream);padding:14px 18px;border-radius:10px;font-size:.85rem;z-index:10001;border-left:3px solid var(--blue);box-shadow:0 8px 24px rgba(0,0,0,.3);min-width:280px;max-width:380px;transform:translateY(120px);opacity:0;transition:all .3s;pointer-events:none}
.progress-bar-toast.show{transform:translateY(0);opacity:1}
.progress-bar-toast .pb-text{display:block;margin-bottom:8px;font-weight:500;line-height:1.35}
.progress-bar-toast .pb-track{height:6px;background:rgba(255,255,255,.12);border-radius:3px;overflow:hidden;position:relative}
.progress-bar-toast .pb-fill{height:100%;background:var(--blue);border-radius:3px;width:0%;transition:width .3s ease}
.progress-bar-toast .pb-fill.indeterminate{width:40%;animation:pb-indet 1.4s ease-in-out infinite}
.progress-bar-toast .pb-meta{display:block;margin-top:6px;font-size:.72rem;color:rgba(255,255,255,.65)}
@keyframes pb-indet{0%{margin-left:-40%}50%{margin-left:60%}100%{margin-left:100%}}
.empty-state{text-align:center;padding:60px 20px;color:var(--mid)}.empty-state .es-icon{font-size:3rem;margin-bottom:16px;opacity:.5}.empty-state h3{font-size:1.2rem;margin-bottom:8px;color:var(--dark)}
.task-section{margin:16px 0;padding:16px;background:var(--white);border:1px solid var(--light);border-radius:12px}
.task-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.task-header-title{font-size:.88rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;display:flex;align-items:center;gap:6px}
.task-progress-wrap{flex:1;display:flex;align-items:center;gap:8px}.task-progress-bar{flex:1;height:7px;background:var(--light);border-radius:4px;overflow:hidden}.task-progress-fill{height:100%;background:#4A7C59;border-radius:4px;transition:width .3s}.task-progress-text{font-size:.72rem;font-weight:700;color:var(--mid)}
.task-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.task-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:8px;border:1px solid var(--light);background:var(--cream)}.task-item.task-done{opacity:.55;background:rgba(74,124,89,.04)}.task-item.task-done .task-desc-text{text-decoration:line-through;color:var(--mid)}
.task-check{width:22px;height:22px;border-radius:50%;border:2px solid var(--light);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.7rem;background:var(--white)}.task-check:hover{border-color:var(--gold)}.task-check.checked{background:#4A7C59;border-color:#4A7C59;color:#fff}
.task-desc-text{font-size:.9rem;font-weight:500}.task-meta{display:flex;gap:8px;margin-top:4px;font-size:.78rem;color:var(--mid);flex-wrap:wrap}.task-meta-tag{background:var(--white);border:1px solid var(--light);padding:1px 7px;border-radius:8px;font-size:.74rem}.task-meta-overdue{color:#8B3A3A;font-weight:600}.task-resp-editable{cursor:pointer;transition:background .15s}.task-resp-editable:hover{background:rgba(79,195,209,.12);border-color:var(--teal)}
.task-del{background:none;border:none;font-size:.75rem;cursor:pointer;color:var(--mid);opacity:.5}.task-del:hover{opacity:1;color:#8B3A3A}
.task-add-btn{background:none;border:1px dashed var(--light);color:var(--mid);padding:6px 14px;border-radius:8px;font-size:.78rem;cursor:pointer;font-family:'DM Sans',sans-serif;width:100%;text-align:left}.task-add-btn:hover{border-color:var(--gold);color:var(--gold-dark)}
/* Pestañas de filtro de tareas: Abiertas / Cerradas / Todas */
.task-tabs{display:flex;gap:4px;margin-bottom:10px;flex-wrap:wrap}
.task-tab{background:var(--cream);border:1px solid var(--light);border-radius:8px;padding:4px 10px;font-size:.74rem;cursor:pointer;color:var(--mid);font-family:'DM Sans',sans-serif;display:flex;align-items:center;gap:5px}
.task-tab:hover{border-color:var(--gold)}
.task-tab.active{background:var(--dark);color:var(--gold-light);border-color:var(--dark)}
.tt-count{font-size:.66rem;background:rgba(0,0,0,.12);border-radius:8px;padding:0 5px;min-width:14px;text-align:center}
.task-tab.active .tt-count{background:rgba(255,255,255,.18)}
.task-done-group{margin-top:6px}
.task-done-toggle{background:none;border:none;color:var(--mid);font-size:.78rem;cursor:pointer;padding:6px 2px;font-family:'DM Sans',sans-serif;width:100%;text-align:left}
.task-done-toggle:hover{color:var(--gold-dark)}
.task-done-body{margin-top:4px}
.task-empty{padding:14px;text-align:center;font-size:.8rem;color:var(--mid);font-style:italic}
.mt-card{background:var(--white);border:1px solid var(--light);border-radius:12px;padding:16px;margin-bottom:10px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.mt-card:hover{border-color:var(--gold);box-shadow:0 2px 8px rgba(0,0,0,.06)}.mt-card-header{display:flex;align-items:flex-start;gap:10px}.mt-ticket-ref{font-size:.82rem;color:var(--gold-dark);font-weight:700;font-family:'DM Sans',sans-serif;letter-spacing:.03em}.mt-overdue{border-left:3px solid #8B3A3A}
/* Tag "Sin fecha" — invita al click con un estilo punteado */
.task-meta-nodate{border-style:dashed !important;color:var(--mid);font-style:italic}
.task-meta-nodate:hover{background:rgba(197,160,39,.08);border-color:var(--gold) !important;color:var(--gold-dark)}
.task-meta-overdue:hover{background:rgba(139,58,58,.08)}
.rte-wrap{border:1px solid var(--light);border-radius:8px;overflow:hidden;margin-bottom:16px}
.rte-toolbar{display:flex;gap:2px;padding:6px 8px;background:var(--cream);border-bottom:1px solid var(--light);flex-wrap:wrap;align-items:center}
.rte-btn{width:30px;height:30px;border:none;background:transparent;border-radius:4px;cursor:pointer;font-size:.85rem;color:var(--dark);display:flex;align-items:center;justify-content:center;font-family:'DM Sans',serif;padding:0}.rte-btn:hover{background:var(--light)}
.rte-sep{width:1px;height:20px;background:var(--light);margin:0 3px}
.rte-body{min-height:180px;max-height:400px;padding:12px 16px;outline:none;font-size:.9rem;line-height:1.75;color:var(--dark);overflow-y:auto;font-family:'DM Sans',sans-serif}
.rte-body:focus{box-shadow:inset 0 0 0 1px var(--gold)}.rte-body img{max-width:100%;border-radius:6px;margin:8px 0}.rte-body blockquote{border-left:3px solid var(--gold);padding-left:12px;margin:8px 0;color:var(--mid)}.rte-body ul,.rte-body ol{padding-left:24px;margin:6px 0}.rte-body a{color:var(--blue)}
.cf-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--light)}.cf-section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cf-list{display:flex;flex-direction:column;gap:6px}.cf-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--light);border-radius:8px;background:var(--cream)}.cf-item-drag{color:var(--mid);font-size:1rem}.cf-item-info{flex:1;min-width:0}
.cf-item-name{font-size:.83rem;font-weight:600}.cf-item-meta{font-size:.72rem;color:var(--mid);margin-top:2px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.cf-type-badge{background:rgba(27,58,107,.1);color:#1B3A6B;padding:1px 7px;border-radius:6px;font-size:.68rem;font-weight:700}.cf-id-badge{background:rgba(90,58,139,.08);color:#5A3A8B;padding:1px 7px;border-radius:6px;font-size:.68rem;font-family:monospace;font-weight:600}
.cf-val-tag{background:rgba(139,106,42,.1);color:#8B6B2A;padding:1px 6px;border-radius:6px;font-size:.65rem}
.cf-item-actions{display:flex;gap:4px}.cf-req{color:#8B3A3A;font-weight:700}
.cf-field-group{margin-bottom:14px}.cf-field-group label{display:block;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mid);margin-bottom:6px}
.cf-field-group label .req{color:#8B3A3A;margin-left:2px}.cf-field-group input,.cf-field-group select,.cf-field-group textarea{width:100%;border:1px solid var(--light);border-radius:8px;padding:10px 14px;font-size:.85rem;color:var(--dark);outline:none;font-family:'DM Sans',sans-serif;background:var(--white)}.cf-field-group input:focus,.cf-field-group select:focus,.cf-field-group textarea:focus{border-color:var(--gold)}
.cf-field-group .field-error{border-color:#8B3A3A!important;background:rgba(139,58,58,.03)}.cf-error-msg{color:#8B3A3A;font-size:.72rem;margin-top:4px}
.cf-checkbox-group{display:flex;flex-wrap:wrap;gap:6px}.cf-checkbox-item{display:flex;align-items:center;gap:6px;background:var(--white);border:1px solid var(--light);border-radius:8px;padding:6px 12px;font-size:.82rem;cursor:pointer;transition:all .15s}.cf-checkbox-item:hover{border-color:var(--gold)}.cf-checkbox-item.checked{background:rgba(74,124,89,.08);border-color:#4A7C59}
.cf-checkbox-item input{accent-color:var(--gold);width:16px;height:16px}
.cf-dropzone{border:2px dashed var(--light);border-radius:10px;padding:24px;text-align:center;cursor:pointer;transition:all .15s;color:var(--mid);font-size:.82rem}.cf-dropzone:hover,.cf-dropzone.dragover{border-color:var(--gold);background:rgba(46,132,204,.04)}
.desc-html{font-size:.85rem;line-height:1.6;color:var(--dark)}.desc-html img{max-width:100%;border-radius:6px;margin:6px 0}.desc-html blockquote{border-left:3px solid var(--gold);padding-left:10px;margin:6px 0;color:var(--mid)}.desc-html ul,.desc-html ol{padding-left:20px;margin:4px 0}.desc-html a{color:var(--blue)}
.badge-resuelta{background:#E8E2D9;color:#555}.badge-cancelada{background:#FBEAEA;color:#8B1A1A}.badge-pendiente-cierre{background:rgba(46,132,204,.15);color:#2E84CC}
.btn-cancel{background:#6B89A5;color:var(--white);border:none}.btn-cancel:hover{background:#555}
.estado-group{display:flex;border:1px solid var(--light);border-radius:10px;overflow:hidden;background:var(--white)}
.estado-group .eg-btn{flex:1;padding:8px 4px;font-size:.82rem;font-weight:600;text-align:center;cursor:pointer;border:none;background:transparent;color:var(--mid);transition:all .15s;font-family:'DM Sans',sans-serif;white-space:nowrap}
.estado-group .eg-btn:not(:last-child){border-right:1px solid var(--light)}
.estado-group .eg-btn:hover{background:var(--cream);color:var(--dark)}
.estado-group .eg-btn.eg-active{background:var(--teal);color:var(--white)}
.estado-actions{display:flex;gap:8px;margin-top:10px;align-items:center}
.estado-actions .ea-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:8px;font-size:.8rem;font-weight:500;cursor:pointer;border:1px solid var(--light);background:var(--white);color:var(--mid);transition:all .15s;font-family:'DM Sans',sans-serif}
.estado-actions .ea-btn:hover{border-color:var(--gold);color:var(--dark)}
.estado-actions .ea-btn.ea-espera.ea-active{background:rgba(46,132,204,.15);border-color:var(--gold);color:var(--gold-dark)}
.estado-actions .ea-btn.ea-autorizacion{border-color:rgba(46,132,204,.3);color:#2E84CC}
.estado-actions .ea-btn.ea-autorizacion:hover{background:rgba(46,132,204,.08)}
.estado-actions .ea-cancel{margin-left:auto;background:none;border:none;color:var(--mid);font-size:.78rem;cursor:pointer;padding:6px 8px;font-family:'DM Sans',sans-serif;opacity:.7}
.estado-actions .ea-cancel:hover{color:#8B3A3A;opacity:1}
/* Workflow designer */
.wf-n{min-width:140px;padding:10px;font-size:.78rem}
.wf-n-start{background:rgba(79,195,209,.1);border-left:3px solid var(--teal);padding:10px 14px;border-radius:6px;color:var(--teal)}
.wf-n-end{background:rgba(107,101,96,.1);border-left:3px solid var(--mid);padding:10px 14px;border-radius:6px;color:var(--mid)}
.wf-n-tarea{background:rgba(46,132,204,.08);border-left:3px solid #2E84CC;padding:10px;border-radius:6px}
.wf-n-aprob{background:rgba(197,160,39,.1);border-left:3px solid #C5A027;padding:10px;border-radius:6px}
.wf-n-decision{background:rgba(20,48,87,.08);border-left:3px solid #143057;padding:10px;border-radius:6px;min-width:180px}
.wf-n-decision .wf-decision-summary{max-height:120px;overflow-y:auto}
.wf-n-accion{background:rgba(122,90,139,.08);border-left:3px solid #7A5A8B;padding:10px;border-radius:6px;min-width:180px}
#wf-drawflow .drawflow-node{background:var(--white);border:1px solid var(--light);border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.05);padding:0}
#wf-drawflow .drawflow-node.selected{border-color:var(--teal)}
/* Multi-selección (marquee Shift+drag): borde + glow azul. Compatibilidad
   con .selected nativo de Drawflow (se pueden combinar). */
#wf-drawflow .drawflow-node.wf-multi-selected{outline:2px solid #5BA3CC;outline-offset:2px;box-shadow:0 0 14px rgba(91,163,204,.45)}
/* Etiquetas sobre conexiones (1, 2, default) — solo en nodos multi-output */
#wf-drawflow svg.connection .wf-conn-label{font-family:'DM Sans',sans-serif;font-size:11px;font-weight:700;fill:#fff;pointer-events:none;user-select:none}
#wf-drawflow svg.connection .wf-conn-label-bg{fill:#5BA3CC;stroke:#fff;stroke-width:1.5px;pointer-events:none}
#wf-drawflow svg.connection.output_1 .wf-conn-label-bg{fill:#4A7C59}
#wf-drawflow svg.connection.output_2 .wf-conn-label-bg{fill:#B7472A}
#wf-drawflow svg.connection.output_3 .wf-conn-label-bg{fill:#7E5BCC}
#wf-drawflow svg.connection.output_4 .wf-conn-label-bg{fill:#C77F3D}
/* Modo reconectar: resalta los inputs disponibles con outline pulsante */
#wf-drawflow.wf-reconnect-mode .input{outline:2px solid #C5A027;outline-offset:3px;box-shadow:0 0 12px rgba(197,160,39,.6);cursor:crosshair !important;animation:wfReconnectPulse 1.2s ease-in-out infinite}
@keyframes wfReconnectPulse{0%,100%{box-shadow:0 0 12px rgba(197,160,39,.6)}50%{box-shadow:0 0 18px rgba(197,160,39,.9)}}
/* Multi-input: cuando un input recibe >1 conexión, lo engrosamos y le ponemos
   un anillo dorado + badge con el contador para que se vea evidente que es un
   punto de convergencia (sino las N líneas se pisan en un solo píxel y parece
   que es una sola flecha). */
#wf-drawflow .input.wf-input-multi{width:22px !important;height:22px !important;background:#C5A027 !important;border:3px solid #fff !important;box-shadow:0 0 0 2px #C5A027,0 2px 6px rgba(0,0,0,.2);position:relative;z-index:5}
#wf-drawflow .input.wf-input-multi .wf-input-count{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-family:'DM Sans',sans-serif;font-size:10px;font-weight:800;pointer-events:none;user-select:none;line-height:1;letter-spacing:-.02em}
#wf-drawflow .input,#wf-drawflow .output{background:var(--teal);border-color:var(--teal)}
/* Conectores: por default azul más visible + hover + selected. Cada output
   tiene su color: output_1 (primera/positiva) verde, output_2 (segunda/negativa)
   rojo, output_default (else) gris. Para nodos con N outputs (>3) caen al azul
   default. marker-end aplica una flecha (definida en #wf-svg-defs) al último
   segmento — context-stroke hace que herede el color del path. */
#wf-drawflow svg.connection .main-path{stroke:#5BA3CC;stroke-width:2.4px;fill:none;transition:stroke-width .15s,stroke .15s}
#wf-drawflow svg.connection .main-path:last-of-type{marker-end:url(#wf-arrow)}
#wf-drawflow svg.connection:hover .main-path{stroke-width:3.4px;stroke:#3B8FC1;cursor:pointer}
#wf-drawflow svg.connection .main-path.selected{stroke:#C5A027;stroke-width:3.4px}
#wf-drawflow svg.connection.output_1 .main-path{stroke:#4A7C59}
#wf-drawflow svg.connection.output_1:hover .main-path{stroke:#3a6248}
#wf-drawflow svg.connection.output_2 .main-path{stroke:#B7472A}
#wf-drawflow svg.connection.output_2:hover .main-path{stroke:#8e371f}
#wf-drawflow svg.connection.output_3 .main-path{stroke:#7E5BCC}
#wf-drawflow svg.connection.output_3:hover .main-path{stroke:#6444a5}
#wf-drawflow svg.connection.output_4 .main-path{stroke:#C77F3D}
#wf-drawflow svg.connection.output_4:hover .main-path{stroke:#a06330}
/* Reroute points: bolitas más grandes y visibles para arrastrarlas */
#wf-drawflow .point{fill:#5BA3CC;stroke:#fff;stroke-width:2px;r:5}
#wf-drawflow .point:hover{fill:#C5A027;cursor:move;r:7}
#wf-drawflow .point.selected{fill:#C5A027;r:7}
/* Cuadrícula visible (toggle desde toolbar). Aplicada al precanvas para que
   escale con el zoom. Línea cada 20px (igual que WF_SNAP_GRID) + línea más
   marcada cada 100px para referencia gruesa. */
.wf-grid-visible{
  background-image:
    linear-gradient(to right, rgba(60,80,120,.10) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(60,80,120,.10) 1px, transparent 1px),
    linear-gradient(to right, rgba(60,80,120,.18) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(60,80,120,.18) 1px, transparent 1px);
  background-size: 20px 20px, 20px 20px, 100px 100px, 100px 100px;
}
.modal-wide{max-width:1100px;width:95vw}
.modal.wf-designer-modal{width:98vw;max-width:none;height:96vh;max-height:96vh;padding:20px;display:flex;flex-direction:column;overflow:hidden}
.modal.wf-designer-modal #modalContent{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.modal.wf-designer-modal .wf-designer-body{flex:1;min-height:0;display:flex;gap:12px}
.modal.wf-designer-modal #wf-drawflow{flex:1;height:100%;min-height:0}
.links-section{margin:16px 0;padding:14px;background:rgba(90,58,139,.04);border:1px solid rgba(90,58,139,.12);border-radius:10px}
.links-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#5A3A8B;margin-bottom:10px;display:flex;justify-content:space-between}
.link-chip{display:flex;align-items:center;gap:8px;background:var(--white);border:1px solid rgba(90,58,139,.15);border-radius:8px;padding:8px 12px;margin-bottom:6px;cursor:pointer;transition:all .15s}.link-chip:hover{border-color:var(--purple)}
.link-chip-id{font-family:'Cormorant Garamond',serif;font-weight:600;color:var(--purple);font-size:.85rem}
.link-chip-title{font-size:.78rem;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.link-chip-remove{background:none;border:none;font-size:.72rem;cursor:pointer;color:var(--mid);opacity:.5;padding:2px}.link-chip-remove:hover{opacity:1;color:#8B3A3A}
.cancel-banner{background:#FBEAEA;border:1px solid rgba(139,58,58,.2);border-radius:10px;padding:14px;margin-bottom:16px}
.cancel-banner-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#8B3A3A;margin-bottom:6px}
.cancel-banner-reason{font-size:.82rem;line-height:1.5}.cancel-banner-meta{font-size:.72rem;color:var(--mid);margin-top:6px}
.tr-cancelled td{opacity:.45;text-decoration:line-through}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(46,132,204,.3);border-radius:3px}


/* ============================================================
   MOBILE RESPONSIVE
   ============================================================ */

.hamburger-btn{display:none;background:none;border:none;color:var(--gold-light);font-size:1.4rem;cursor:pointer;padding:4px 8px;line-height:1;flex-shrink:0}
.btn-nav-back{align-items:center;gap:4px;background:rgba(46,132,204,.1);border:1px solid rgba(46,132,204,.25);color:var(--gold-light);padding:5px 12px;border-radius:14px;cursor:pointer;font-size:.78rem;font-weight:500;line-height:1;transition:background .15s,border-color .15s;flex-shrink:0}
.btn-nav-back:hover{background:rgba(46,132,204,.18);border-color:rgba(46,132,204,.45);color:var(--gold)}
.notification-bell{position:relative;cursor:pointer;padding:4px}
.mobile-sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:199}
.mobile-sidebar-overlay.open{display:block}
.fab-nuevo-ticket{display:none;position:fixed;bottom:24px;right:20px;width:52px;height:52px;border-radius:50%;background:var(--gold);color:var(--dark);border:none;font-size:1.5rem;font-weight:700;cursor:pointer;z-index:140;box-shadow:0 4px 20px rgba(0,0,0,.25);align-items:center;justify-content:center;line-height:1}
.mob-info-toggle-btn{display:none}.mob-search-btn{display:none}.mob-search-bar{display:none}

@media(max-width:768px){

  /* ── BASE ── */
  body{font-size:17px}

  /* ── TOPBAR ── */
  .hamburger-btn{display:flex;align-items:center}
  .topbar{padding:0 12px;gap:8px}
  .topbar-left{gap:8px;flex:1;min-width:0}
  .topbar-left h1{font-size:1.15rem}
  .topbar-left h1 .topbar-logo-img{max-height:32px}
  .topbar-search{display:none}
  .mob-search-bar{display:none;position:fixed;top:0;left:0;right:0;z-index:300;background:var(--dark);padding:10px 14px;gap:10px;align-items:center}
  .mob-search-bar.open{display:flex}
  .mob-search-bar input{flex:1;background:rgba(255,255,255,.1);border:1px solid rgba(46,132,204,.3);border-radius:20px;padding:10px 16px;color:var(--cream);font-size:.92rem;outline:none}
  .mob-search-bar input::placeholder{color:rgba(255,255,255,.35)}
  .mob-search-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid rgba(46,132,204,.2);color:var(--gold-light);font-size:1rem;cursor:pointer;flex-shrink:0}
  .topbar-right{gap:8px}
  .user-info{display:none}
  .user-pill{padding:4px 8px;gap:6px}
  .btn-logout{padding:6px 12px;font-size:.82rem}

  /* ── SIDEBAR drawer ── */
  .sidebar{position:fixed;left:0;top:60px;bottom:0;height:calc(100vh - 60px);z-index:200;transform:translateX(-100%);transition:transform .3s ease;width:280px}
  .sidebar.mobile-open{transform:translateX(0)}
  .sidebar-item{font-size:.98rem;padding:13px 20px}
  .sidebar-label{font-size:.74rem}

  /* ── LAYOUT ── */
  .layout{display:block}
  .main{width:100%;min-height:calc(100vh - 60px)}
  .page{padding:14px 12px}

  /* ══════════════════════════════════════════════
     DETAIL PANEL MOBILE — MODO CHAT WHATSAPP
     1. Header fijo (ID + Volver + "Ver info")
     2. Info del ticket (colapsable, cerrada por defecto)
     3. Feed de actividad scrolleable (último abajo)
     4. Footer fijo: input + adjuntar + comentar
  ══════════════════════════════════════════════ */

  /* Panel: flex column contenido, sin scroll propio */
  .detail-panel{
    display:flex;
    flex-direction:column;
    overflow:hidden;
  }

  /* Header compacto */
  .detail-header{
    flex-shrink:0;
    height:auto;
    min-height:52px;
    padding:8px 10px;
    gap:6px;
    flex-wrap:wrap;
    position:relative;
    z-index:5;
  }
  .dp-back-btn{padding:7px 12px;font-size:.82rem;min-height:36px;border-radius:20px}
  .dp-header-info{gap:4px;min-width:0;flex:1;flex-wrap:wrap}
  .dp-header-id{font-size:.88rem}
  .dp-header-sep{color:rgba(255,255,255,.2);font-size:.82rem}
  .dp-header-title{font-size:.82rem;font-weight:400;color:var(--gold-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55vw}
  #dp-badges{order:1;width:100%;gap:4px;flex-wrap:wrap;margin-top:2px}
  #dp-badges .badge{font-size:.68rem;padding:2px 6px}

  /* Botón "Ver info" — solo mobile */
  .mob-info-toggle-btn{
    display:inline-flex;align-items:center;gap:4px;
    background:rgba(46,132,204,.15);
    border:1px solid rgba(46,132,204,.3);
    color:var(--gold-light);
    padding:5px 11px;border-radius:16px;
    font-size:.78rem;font-weight:600;
    cursor:pointer;font-family:"DM Sans",sans-serif;
    white-space:nowrap;flex-shrink:0;order:1;
  }

  /* Columnas: flex vertical ocupando todo el espacio restante */
  .detail-columns{
    display:flex;flex-direction:column;
    flex:1;overflow:hidden;min-height:0;
  }
  /* En mobile las columnas se apilan: el divisor no aplica */
  .detail-splitter{display:none}

  /* INFO: colapsable, cerrada por defecto */
  .detail-col-left{
    flex-shrink:0;max-height:0;overflow:hidden;
    padding:0 14px;
    background:var(--white);border-right:none;border-bottom:none;
    transition:max-height .3s cubic-bezier(.4,0,.2,1),padding .3s ease;
  }
  .detail-col-left.mob-info-open{
    max-height:75vh;overflow-y:auto;
    padding:14px 14px 80px;
    border-bottom:2px solid var(--light);
  }

  /* Columna derecha: flex:1 para llenar espacio */
  .detail-col-right{
    flex:1;display:flex;flex-direction:column;
    overflow:hidden;min-height:0;background:var(--cream);
  }

  /* Feed de actividad: scrolleable, contenido hacia abajo */
  .detail-activity-feed{
    flex:1;overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding:12px 12px 6px;
    display:flex;flex-direction:column;
  }
  /* Mensajes en orden cronologico, empujados al fondo como WhatsApp */
  #dp-activity{
    margin-top:auto;
  }
  /* Ocultar título en mobile (queda solo el filtro, sin borde colgando) */
  .activity-feed-title{display:none}
  .activity-feed-head{border-bottom:none;padding-bottom:0;margin-bottom:8px}

  /* Burbuja de chat */
  .activity-item{
    font-size:.93rem;line-height:1.55;
    padding:0;border-bottom:none;margin-bottom:8px;
    align-items:flex-start;
    gap:0;
  }
  .activity-item > div:last-child{
    background:var(--white);
    border-radius:4px 14px 14px 14px;
    padding:9px 13px;
    box-shadow:0 1px 3px rgba(0,0,0,.07);
    border:1px solid var(--light);
    max-width:90%;display:inline-block;
    word-break:break-word;
  }
  .act-private > div:last-child{
    background:rgba(139,58,58,.05);
    border-color:rgba(139,58,58,.18);
    border-radius:4px 14px 14px 14px;
  }
  .activity-dot{display:none}
  .activity-item .act-time{font-size:.74rem;color:var(--mid);margin-top:4px;display:block}
  /* Historial diferenciado en mobile: el comentario usa la burbuja del wrapper
     (la columna derecha ya hace de burbuja), por eso anulamos la burbuja propia
     y ocultamos el avatar para mantener el estilo chat existente. */
  .act-comment .act-avatar{display:none}
  .act-comment .act-cmt-bubble{background:transparent;border:none;border-left:none;padding:0;border-radius:0}
  .act-comment.act-private .act-cmt-bubble{border-left:none}
  .act-cmt-time{margin-left:0}
  /* Eventos de sistema: filas finas centradas tipo separador de chat */
  .act-sys{justify-content:center;flex-wrap:wrap;gap:6px;border-bottom:none;padding:4px 0;text-align:center}
  /* La barra de filtro queda visible y fija arriba del feed */
  .act-filter-bar{margin-bottom:10px}

  /* FOOTER fijo dentro del flex (no fixed en viewport) */
  .detail-footer{
    flex-shrink:0;
    padding:8px 12px calc(8px + env(safe-area-inset-bottom));
    background:var(--white);
    border-top:1.5px solid var(--light);
    box-shadow:0 -3px 14px rgba(0,0,0,.08);
  }

  /* Toolbar público/privado */
  .comment-toolbar{gap:6px;margin-bottom:8px;padding:0}
  .comment-type-btn{font-size:.82rem;padding:7px 14px;min-height:38px;border-radius:18px}
  .add-observer-btn{font-size:.78rem;padding:6px 11px;min-height:38px}

  /* Ocultar barra RTE (negrita etc.) */
  .rte-toolbar{display:none}

  /* Input chat: redondeado tipo iMessage */
  .rte-wrap{
    border-radius:22px;border:1.5px solid var(--light);
    overflow:hidden;margin-bottom:0;background:var(--cream);
  }
  .rte-wrap:focus-within{border-color:var(--gold)}
  #dp-comment-rte{
    min-height:44px !important;max-height:100px !important;
    font-size:.97rem !important;padding:10px 14px !important;
    line-height:1.5 !important;background:transparent;
  }

  /* Fila adjuntar + botón enviar */
  .comment-attach-bar{
    margin-top:8px;gap:8px;
    display:flex;align-items:center;flex-wrap:nowrap;
  }
  .attach-btn{
    background:var(--cream);border:1.5px solid var(--light);
    border-radius:22px;font-size:1.1rem;padding:9px 12px;
    min-height:44px;min-width:44px;
    display:flex;align-items:center;justify-content:center;
    flex-shrink:0;cursor:pointer;gap:5px;
  }
  .attach-btn-label{display:none} /* solo ícono */

  /* BOTÓN COMENTAR full-width */
  .btn-comentar{
    width:100%;justify-content:center;
    font-size:1rem;font-weight:600;
    padding:13px 20px;border-radius:14px;
    letter-spacing:.02em;margin-top:8px;
    box-shadow:0 3px 12px rgba(46,132,204,.35);
  }

  /* Detail meta: 1 col */
  .detail-meta{grid-template-columns:1fr;width:100%;min-width:0}
  .detail-meta-item{padding:12px 14px;min-width:0;max-width:100%;overflow:hidden}
  .detail-meta-item .key{font-size:.76rem}
  .detail-meta-item .val{font-size:1rem;word-break:break-word;overflow-wrap:anywhere;max-width:100%}
  /* Evitar que campos personalizados (ficha izquierda en mobile) desborden a la derecha.
     min-width:0 es necesario en flex children para permitir que el contenido se ajuste. */
  .detail-col-left{width:100%;min-width:0;max-width:100%}
  .detail-col-left.mob-info-open{max-width:100%;box-sizing:border-box}
  .cf-field-group{min-width:0;max-width:100%}
  .cf-field-group input,
  .cf-field-group select,
  .cf-field-group textarea{max-width:100%;box-sizing:border-box}
  #dp-custom-fields,#dp-meta,#dp-desc,#dp-links,#dp-tasks{max-width:100%;overflow-wrap:anywhere;word-break:break-word}

  /* Badges generales */
  .badge{font-size:.82rem;padding:3px 10px}

  /* Tickets tabla */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  table{min-width:560px}
  td{font-size:.97rem;padding:14px 12px}
  th{font-size:.8rem}
  .ticket-id{font-size:1rem}
  .ticket-title{font-size:.97rem}

  /* Tabs */
  .tickets-tabs{overflow-x:auto;white-space:nowrap;width:100%;padding-bottom:2px}
  .tickets-tab{flex-shrink:0;font-size:.92rem;padding:9px 16px}

  /* Filtros */
  .table-header{gap:6px;padding:10px 12px}
  .filter-select{padding:8px 10px;font-size:.92rem}

  /* Botones */
  .btn{font-size:.95rem;padding:10px 18px}
  .btn-sm{font-size:.88rem;padding:9px 14px}

  /* Métricas */
  .metrics-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}
  .metric-card{padding:14px}
  .metric-card .val{font-size:1.7rem}
  .metric-card .lbl{font-size:.9rem}
  .dash-mesa-semaforos{grid-template-columns:1fr}
  .semaforo-card:first-child{border-right:none;border-bottom:1px solid var(--light)}
  .semaforo-big{font-size:2rem}
  .semaforo-card{padding:16px}
  .dash-mesa-section{margin-bottom:12px}
  .sem-chip{font-size:.68rem;padding:2px 8px}

  /* Formularios */
  .form-grid{grid-template-columns:1fr}
  .form-group input,.form-group select,.form-group textarea{font-size:.97rem;padding:12px 14px}
  .form-group label{font-size:.82rem}

  /* Modal */
  .modal{padding:20px 14px;border-radius:12px;padding-bottom:0;display:flex;flex-direction:column}
  #modalContent{flex:1;overflow-y:auto;padding-bottom:8px}
  .modal .form-actions{
    position:sticky;bottom:0;background:var(--white);
    margin:0 -14px -20px;padding:12px 14px 20px;
    border-top:1px solid var(--light);z-index:10;
  }

  /* ABM layouts */
  .abm-layout{grid-template-columns:1fr}
  .vis-layout{grid-template-columns:1fr}

  /* Page header */
  .page-header{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:16px}
  .page-header h2{font-size:1.65rem}
  .page-header p{font-size:.95rem}
  .page-header>div:last-child{width:100%}
  .page-header .btn{width:100%;justify-content:center}

  /* Catálogo */
  .catalog-grid{grid-template-columns:1fr}
  .catalog-card .cat-name{font-size:1.05rem}
  .catalog-card .cat-desc{font-size:.88rem}

  /* Usuarios */
  .users-grid{grid-template-columns:1fr}
  .user-card-actions{flex-wrap:wrap}
  .user-card-actions .btn{flex:1;justify-content:center;min-width:80px}

  /* Mesas wizard */
  .mesas-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .mesa-select-card{padding:14px 8px;font-size:.95rem}

  /* Tasks */
  .task-desc-text{font-size:.97rem}
  .task-meta{font-size:.82rem}
  .task-check{width:26px;height:26px;flex-shrink:0}

  /* Observer chips */
  .observer-chips{flex-wrap:wrap}
  .observer-chip{font-size:.85rem;padding:5px 12px 5px 5px}

  /* Login */
  .login-card{width:96vw;padding:28px 18px}

  /* FAB */
  .fab-nuevo-ticket{display:flex}
  /* Padding para que el FAB no tape paginado / ultima fila */
  .main{padding-bottom:90px}

  /* Toast */
  .toast{right:12px;left:12px;bottom:24px;text-align:center}

  /* Notificaciones */
  .notif-item .nt{font-size:.95rem}
  .notif-item .nm{font-size:.82rem}

}

.mention{background:rgba(27,58,107,.12);color:#1B3A6B;border-radius:4px;padding:1px 5px;font-weight:600;display:inline-block;cursor:default}
.notif-panel{position:absolute;top:44px;right:0;width:340px;max-height:440px;background:var(--white);border:1px solid var(--light);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.15);z-index:200;overflow:hidden;display:none;flex-direction:column}
.notif-panel.open{display:flex}
.notif-panel-head{padding:12px 16px;border-bottom:1px solid var(--light);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.notif-panel-head h4{font-family:'Cormorant Garamond',serif;font-size:1rem}
.notif-list{overflow-y:auto;flex:1}
.notif-item{padding:12px 16px;border-bottom:1px solid rgba(0,0,0,.04);cursor:pointer;transition:background .1s}
.notif-item:hover{background:var(--cream)}
.notif-unread{background:rgba(255,255,255,.85)}
.notif-item .nt{font-size:.88rem;line-height:1.45;color:var(--dark)}
.notif-item .nm{font-size:.78rem;color:var(--mid);margin-top:3px}
.notif-unread .nt{font-weight:600}
.notif-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);flex-shrink:0}
.mpd-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:.82rem;border-bottom:1px solid rgba(0,0,0,.04)}
.mpd-item:hover{background:var(--cream)}
.mpd-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600;color:#fff;flex-shrink:0}

/* === TEMAS DE COLOR === */
body.theme-dark{--cream:#0E1E3A;--white:#152A4A;--light:#2A3F66;--dark:#F5F7FA;--dark-2:#0A1628;--dark-3:#152A4A;--mid:#9CB1CC;--gold:#5BA3DD;--gold-light:#7FB8E5;--gold-dark:#2E84CC}
body.theme-dark .topbar,body.theme-dark .sidebar,body.theme-dark .detail-header{background:#0A1628;border-color:rgba(46,132,204,.18)}
body.theme-dark .login-card{background:#152A4A}
body.theme-dark input,body.theme-dark select,body.theme-dark textarea{background:var(--white);color:var(--dark);border-color:var(--light)}
body.theme-blue{--cream:#EEF2F7;--white:#FFFFFF;--light:#D0D9E6;--gold:#3A6FA0;--gold-light:#5A8FC0;--gold-dark:#2A4F70;--teal:#2A6A8A;--sage:#7AA0C0}
body.theme-blue .topbar,body.theme-blue .sidebar{background:#1A2A3A}
body.theme-blue .detail-header{background:#1A2A3A}
body.theme-green{--cream:#F0F5F0;--white:#FFFFFF;--light:#C8DCC8;--gold:#4A7C59;--gold-light:#6A9C79;--gold-dark:#3A5C49;--teal:#1B3A6B;--sage:#A8BDA2}
body.theme-green .topbar,body.theme-green .sidebar{background:#1A2A1A}
body.theme-green .detail-header{background:#1A2A1A}
/* === TAMANO FUENTE === */
body.font-sm{font-size:14px}
body.font-lg{font-size:18px}
/* === PERFIL === */
.profile-page{max-width:600px;margin:0 auto}
.profile-section{background:var(--white);border:1px solid var(--light);border-radius:12px;padding:20px;margin-bottom:16px}
.profile-section h3{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--mid);margin-bottom:14px}
.profile-avatar-wrap{display:flex;align-items:center;gap:16px;margin-bottom:16px}
.profile-avatar-img{width:72px;height:72px;border-radius:50%;object-fit:cover;border:2px solid var(--gold)}
.profile-avatar-initials{width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;color:#fff}
.theme-btn{width:40px;height:40px;border-radius:10px;border:2px solid var(--light);cursor:pointer;transition:all .15s}
.theme-btn:hover,.theme-btn.active{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}
.font-btn{padding:6px 14px;border-radius:8px;border:1px solid var(--light);cursor:pointer;font-family:'DM Sans',sans-serif;background:var(--white);transition:all .15s}
.font-btn:hover,.font-btn.active{border-color:var(--gold);background:var(--gold);color:#fff}
.mention-dropdown{position:absolute;background:var(--white);border:1px solid var(--light);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.12);max-height:180px;overflow-y:auto;z-index:1000;min-width:200px}
.mention-item{padding:8px 14px;cursor:pointer;font-size:.85rem;display:flex;align-items:center;gap:8px}
.mention-item:hover,.mention-item.active{background:var(--cream)}
.mention-item .mi-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;color:#fff;flex-shrink:0}
.mention-item .mi-name{font-weight:500}
.mention-item .mi-role{font-size:.72rem;color:var(--mid);margin-left:auto}
.mention-chip{background:rgba(79,195,209,.12);color:var(--teal);border-radius:4px;padding:1px 4px;font-weight:600;cursor:default}
.ayuda-contenido h4{margin:16px 0 8px;color:var(--gold-dark);font-size:.92rem;font-weight:700}
.ayuda-contenido h4:first-child{margin-top:0}
.ayuda-contenido ul,.ayuda-contenido ol{margin:8px 0;padding-left:24px}
.ayuda-contenido li{margin-bottom:6px}
.ayuda-contenido p{margin:8px 0}
/* ============================================================ */

@media(max-width:768px){
  /* Re-aplicamos notif-panel aquí abajo para pisar la .notif-panel base que estaba suelta fuera del media query principal */
  .notif-panel{
    position:fixed !important;
    top:60px !important;
    left:4px !important;
    right:4px !important;
    width:auto !important;
    max-height:70vh !important;
    border-radius:12px !important;
    z-index:250 !important;
    box-shadow:0 8px 32px rgba(0,0,0,.25) !important;
  }
}

/* ============================================================
   Columnas dinamicas en listado de tickets (Fase 1 — 2026-05-13)
   ============================================================
   - .view-divider: separa filtros de los controles de vista (codigo + boton columnas)
   - .view-btn-cols: boton "Columnas (N)" que abre el popover
   - .col-popover*: popover con checkboxes para mostrar/ocultar columnas
   - .col-extra: celdas de columnas extra (mas sutiles que las del sistema)
*/
.view-divider{
  display:inline-block;
  width:1px;
  height:24px;
  background:var(--light);
  margin:0 4px;
  align-self:center;
  flex-shrink:0;
}
.view-btn-cols{
  font-family:'DM Sans',sans-serif;
  display:inline-flex;
  align-items:center;
  gap:5px;
  background:var(--cream);
  border:1px solid var(--light);
  color:var(--dark);
  font-weight:500;
}
.view-btn-cols:hover{background:rgba(46,132,204,.06);border-color:var(--blue)}
.view-btn-cols #col-count{color:var(--mid);font-size:.78rem;font-weight:600}

/* El popover usa position:fixed porque vive fuera del .table-wrap (que tiene
   overflow:hidden por los bordes redondeados). Las coords top/right se setean
   en JS al abrirlo, segun el rect del boton. */
.col-popover{
  position:fixed;
  background:var(--white);
  border:1px solid var(--light);
  border-radius:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
  min-width:280px;
  max-width:340px;
  max-height:560px;
  overflow-y:auto;
  z-index:600;
}
.col-popover-inner{padding:10px 4px}
.col-popover-title{
  font-size:.72rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--mid);
  padding:6px 12px 8px;
}
.col-svc-name{
  font-size:.7rem;
  font-weight:500;
  letter-spacing:0;
  text-transform:none;
  color:var(--mid);
  font-style:italic;
}
.col-popover-list{display:flex;flex-direction:column;gap:2px}
.col-popover-item{
  display:flex;
  align-items:center;
  gap:8px;
  padding:7px 12px;
  cursor:pointer;
  font-size:.86rem;
  color:var(--dark);
  border-radius:6px;
  margin:0 4px;
  transition:background .12s;
}
.col-popover-item:hover{background:rgba(46,132,204,.06)}
.col-popover-item input[type=checkbox]{
  accent-color:var(--blue);
  width:15px;
  height:15px;
  cursor:pointer;
  flex-shrink:0;
}
.col-popover-item.col-locked{cursor:not-allowed;opacity:.7}
.col-popover-item.col-locked:hover{background:transparent}
.col-popover-item.col-locked input[type=checkbox]{cursor:not-allowed}
.col-lock-note{font-size:.72rem;color:var(--mid);font-style:italic;font-weight:400}
.col-field-type{font-size:.7rem;color:var(--mid);font-style:italic}
.col-popover-divider{
  height:1px;
  background:var(--light);
  margin:8px 12px;
}
.col-popover-empty{
  padding:10px 14px;
  font-size:.78rem;
  color:var(--mid);
  line-height:1.45;
  font-style:italic;
}

/* Celdas de columnas extra: mas sutiles para no competir con las del sistema */
th.col-extra{
  background:rgba(46,132,204,.04);
  color:var(--blue);
}
td.col-extra{
  font-size:.86rem;
  color:var(--dark);
  background:rgba(46,132,204,.02);
}
/* Total al lado del label en columnas currency. Tipografia "normal" para
   contrastar con el UPPERCASE/letter-spacing del <th>. */
.col-extra-total{
  font-size:.72rem;
  font-weight:600;
  color:var(--mid);
  margin-left:5px;
  letter-spacing:0;
  text-transform:none;
}

/* Sort + Filter en headers (2026-05-13 parte 2) */
.col-sortable{
  user-select:none;
  transition:background .12s;
}
.col-sortable:hover{background:rgba(46,132,204,.1)}

/* Icono triangulo para filtro en headers de cols filtrables */
.col-filter-icon{
  display:inline-flex;
  align-items:center;
  gap:2px;
  margin-left:6px;
  padding:2px 5px;
  border-radius:4px;
  font-size:.72rem;
  color:var(--mid);
  cursor:pointer;
  transition:background .12s,color .12s;
  letter-spacing:0;
  text-transform:none;
  font-weight:500;
  vertical-align:middle;
}
.col-filter-icon:hover{background:rgba(46,132,204,.15);color:var(--blue)}
.col-filter-icon.active{
  background:var(--blue);
  color:#fff;
}
.col-filter-icon.active:hover{background:#1f5e94}
.col-filter-badge{
  font-size:.66rem;
  font-weight:700;
  background:rgba(255,255,255,.25);
  border-radius:8px;
  padding:0 5px;
}
/* Resaltado del header cuando hay filtro activo */
th.col-has-filter{border-bottom:2px solid var(--blue)}

/* Popover de filtro: muy similar al de columnas pero con boton clear/close */
.col-filter-popover{
  position:fixed;
  background:var(--white);
  border:1px solid var(--light);
  border-radius:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
  min-width:300px;
  max-width:360px;
  max-height:540px;
  overflow:hidden;
  z-index:601;
  display:flex;
  flex-direction:column;
}
.col-filter-inner{
  display:flex;
  flex-direction:column;
  min-height:0;
  flex:1;
}
.col-filter-title{
  font-size:.78rem;
  color:var(--dark);
  padding:10px 14px 8px;
  border-bottom:1px solid var(--light);
}
.col-filter-title strong{color:var(--blue);font-weight:700}
.col-filter-search{
  margin:8px 12px 4px;
  padding:7px 10px;
  border:1px solid var(--light);
  border-radius:6px;
  font-size:.84rem;
  font-family:'DM Sans',sans-serif;
  outline:none;
}
.col-filter-search:focus{border-color:var(--blue)}
.col-filter-list{
  flex:1;
  overflow-y:auto;
  padding:4px 4px 8px;
  display:flex;
  flex-direction:column;
  gap:1px;
}
.col-filter-item{
  display:flex;
  align-items:center;
  gap:8px;
  padding:6px 12px;
  cursor:pointer;
  font-size:.85rem;
  color:var(--dark);
  border-radius:6px;
  margin:0 4px;
  transition:background .12s;
}
.col-filter-item:hover{background:rgba(46,132,204,.06)}
.col-filter-item input[type=checkbox]{
  accent-color:var(--blue);
  width:15px;
  height:15px;
  cursor:pointer;
  flex-shrink:0;
}
.col-filter-item span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  flex:1;
}
.col-filter-actions{
  display:flex;
  gap:8px;
  padding:10px 12px;
  border-top:1px solid var(--light);
  background:var(--cream);
}
.col-filter-btn{
  flex:1;
  padding:7px 12px;
  border-radius:6px;
  border:1px solid var(--light);
  font-size:.82rem;
  font-weight:600;
  cursor:pointer;
  font-family:'DM Sans',sans-serif;
  transition:all .12s;
}
.col-filter-btn-clear{
  background:var(--white);
  color:var(--mid);
}
.col-filter-btn-clear:hover{background:#f6e8e8;color:#8B3A3A;border-color:#d4a8a8}
.col-filter-btn-close{
  background:var(--blue);
  color:#fff;
  border-color:var(--blue);
}
.col-filter-btn-close:hover{background:#1f5e94}

@media (max-width:768px){
  .col-filter-popover{
    left:8px;
    right:8px;
    min-width:0;
    max-width:none;
  }
}

/* Boton Exportar + dropdown (2026-05-14) */
.view-btn-export{
  font-family:'DM Sans',sans-serif;
  display:inline-flex;
  align-items:center;
  gap:5px;
  background:var(--cream);
  border:1px solid var(--light);
  color:var(--dark);
  font-weight:500;
}
.view-btn-export:hover{background:rgba(46,132,204,.06);border-color:var(--blue)}

.export-menu{
  position:fixed;
  background:var(--white);
  border:1px solid var(--light);
  border-radius:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
  min-width:200px;
  padding:6px;
  z-index:602;
}
.export-menu-item{
  display:flex;
  align-items:center;
  gap:10px;
  padding:9px 12px;
  cursor:pointer;
  font-size:.88rem;
  color:var(--dark);
  border-radius:6px;
  transition:background .12s;
}
.export-menu-item:hover{background:rgba(46,132,204,.08)}
.export-menu-icon{font-size:1.1rem;line-height:1;flex-shrink:0}
.export-menu-hint{
  margin-left:auto;
  font-size:.7rem;
  color:var(--mid);
  font-style:italic;
}

@media (max-width:768px){
  .export-menu{
    left:8px;
    right:8px;
    min-width:0;
  }
}

/* Mobile: ocultar columnas extra (la tabla ya scrollea horizontal pero
   las extra inflan demasiado el ancho). Si las quiere ver, modo desktop. */
@media (max-width:768px){
  .col-popover{
    right:8px;
    left:8px;
    min-width:0;
    max-width:none;
  }
  th.col-extra, td.col-extra{display:none}
}

/* ============================================================
   EMOJI PICKER — popup flotante por encima del modal (z-index>200)
   ============================================================ */
.emoji-picker-pop{
  position:fixed;
  width:320px;
  max-height:360px;
  background:var(--white);
  border:1px solid var(--light);
  border-radius:12px;
  box-shadow:0 12px 32px rgba(0,0,0,.18);
  z-index:9000;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  font-family:'DM Sans',sans-serif;
}
.emoji-picker-search-wrap{padding:10px 10px 6px;border-bottom:1px solid var(--light);background:var(--cream)}
.emoji-picker-search{width:100%;border:1px solid var(--light);border-radius:8px;padding:7px 10px;font-size:.85rem;outline:none;background:var(--white)}
.emoji-picker-search:focus{border-color:var(--gold)}
.emoji-picker-body{flex:1;overflow-y:auto;padding:6px 10px 10px}
.emoji-picker-cat-header{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--mid);padding:10px 2px 4px;position:sticky;top:0;background:var(--white)}
.emoji-picker-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}
.emoji-picker-cell{background:none;border:1px solid transparent;border-radius:6px;padding:5px 0;font-size:1.25rem;line-height:1.1;cursor:pointer;transition:background .12s,border-color .12s;display:flex;align-items:center;justify-content:center}
.emoji-picker-cell:hover{background:var(--cream);border-color:var(--light)}
.emoji-picker-cell:active{background:rgba(46,132,204,.12)}
.emoji-picker-trigger{background:var(--cream);border:1px solid var(--light);border-radius:8px;cursor:pointer;padding:0 10px;font-size:.85rem;color:var(--mid);transition:all .15s;display:inline-flex;align-items:center;gap:5px;height:38px;white-space:nowrap}
.emoji-picker-trigger:hover{background:var(--white);border-color:var(--gold);color:var(--dark)}
.emoji-picker-input-row{display:flex;gap:6px;align-items:stretch}
.emoji-picker-input-row > input{flex:1}
@media(max-width:480px){
  .emoji-picker-pop{width:calc(100vw - 16px);max-width:320px}
  .emoji-picker-grid{grid-template-columns:repeat(7,1fr)}
}

/* #14 — confirmModal: primitiva de confirmación reutilizable.
   Overlay propio (z-index alto) para poder apilarse sobre otros modales. */
.cmodal-overlay{position:fixed;inset:0;background:rgba(20,48,87,.45);z-index:12000;display:flex;align-items:center;justify-content:center;padding:20px;animation:cmodalFade .12s ease-out}
@keyframes cmodalFade{from{opacity:0}to{opacity:1}}
.cmodal-box{background:var(--white,#fff);border-radius:14px;padding:22px;max-width:440px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.cmodal-title{margin:0 0 10px;font-size:1.05rem;color:var(--gold-dark,#143057)}
.cmodal-msg{font-size:.88rem;color:var(--mid,#6B6560);line-height:1.5;margin-bottom:18px}
.cmodal-actions{display:flex;justify-content:flex-end;gap:8px}
/* min-height 44px = target táctil accesible (regla a11y del review) */
.cmodal-btn{min-height:44px;padding:0 18px;font-size:.9rem;font-weight:600;border-radius:8px;cursor:pointer;border:1px solid var(--light,#E5E1DA);background:var(--white,#fff);color:var(--dark,#143057)}
.cmodal-btn:focus-visible{outline:2px solid var(--gold,#2E84CC);outline-offset:2px}
.cmodal-cancel:hover{background:var(--cream,#F5F2EC)}
.cmodal-ok:hover{filter:brightness(1.06)}
@media(max-width:480px){
  .cmodal-actions{flex-direction:column-reverse}
  .cmodal-btn{width:100%}
}
