:root{--bg:#f5f7fb;--card:#fff;--text:#111827;--muted:#687385;--border:#d8dee9;--primary:#1d4ed8;--success:#15803d;--warning:#b45309;--danger:#b91c1c;--soft:#f8fafc}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--text)}header{background:linear-gradient(135deg,#96c93d,#ffdc03);
  color:white;padding:28px 34px;display:flex;justify-content:space-between;gap:20px;align-items:flex-start}h1,h2,p{margin-top:0}h1{font-size:31px;letter-spacing:-.03em;margin-bottom:8px}h2{font-size:20px;margin-bottom:4px}.eyebrow{ color:#365314; text-transform:uppercase;letter-spacing:.11em;font-size:12px;color:#656a65;font-weight:800;margin-bottom:8px}header p{color:#4d4d4d;max-width:900px}.connection{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.13);font-weight:800;white-space:nowrap}.connection.ok{background:#dcfce7;color:#166534}.connection.bad{background:#fee2e2;color:#991b1b}main{max-width:1600px;margin:auto;padding:22px}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 24px rgba(15,23,42,.06);padding:18px;margin-bottom:16px}.setup{display:grid;grid-template-columns:2fr 2fr 1.3fr auto auto auto;gap:12px;align-items:end}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}.stats article{background:#fff;border:1px solid var(--border);border-radius:18px;padding:16px}.stats strong{display:block;font-size:30px;line-height:1}.stats span{font-size:12px;color:var(--muted);font-weight:800;text-transform:uppercase}label{display:block;font-size:12px;font-weight:800;text-transform:uppercase;color:var(--muted);margin-bottom:6px}input,select,button,textarea{font:inherit}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:#fff;color:var(--text)}button{border:0;border-radius:12px;padding:10px 13px;background:var(--primary);color:#fff;font-weight:800;cursor:pointer;white-space:nowrap}button:hover{filter:brightness(.93)}button.secondary{background:#e2e8f0;color:#0f172a}button.success{background:var(--success)}button.warning{background:var(--warning)}button.danger{background:var(--danger)}button.full{width:100%}.sectionTitle{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.sectionTitle p{color:var(--muted);font-size:14px;margin:0}.filtersTop{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:12px}.dynamicFilters{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:12px}.actions{display:flex;gap:8px;flex-wrap:wrap}.tableWrap{overflow:auto;border:1px solid var(--border);border-radius:16px;max-height:62vh;background:white}.tableWrap.empty{padding:40px;text-align:center;color:var(--muted)}table{border-collapse:collapse;width:100%;font-size:14px}th,td{border-bottom:1px solid var(--border);padding:10px 12px;text-align:left;white-space:nowrap;vertical-align:middle}th{position:sticky;top:0;background:#f8fafc;color:#64748b;font-size:12px;text-transform:uppercase;letter-spacing:.04em;z-index:2}tr:hover td{background:#f8fafc}.pill{display:inline-block;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:900}.asiste,.si{background:#dcfce7;color:#166534}.pendiente{background:#fef3c7;color:#92400e}.no{background:#fee2e2;color:#991b1b}.rowActions{display:flex;gap:6px}dialog{border:0;border-radius:18px;padding:0;box-shadow:0 30px 70px rgba(0,0,0,.25);width:min(1050px,94vw)}dialog form{padding:18px}.editGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-height:70vh;overflow:auto}.dialogActions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.columnsList{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:60vh;overflow:auto}.checkItem{display:flex;gap:8px;align-items:center;border:1px solid var(--border);border-radius:12px;padding:9px}.checkItem input{width:auto}.auditLog{display:grid;gap:8px;max-height:180px;overflow:auto}.auditItem{padding:10px 12px;background:var(--soft);border:1px solid var(--border);border-radius:12px;font-size:13px}.auditItem strong{display:block}@media(max-width:1100px){.setup,.filtersTop,.dynamicFilters{grid-template-columns:1fr 1fr}.stats{grid-template-columns:repeat(3,1fr)}.editGrid,.columnsList{grid-template-columns:1fr 1fr}}@media(max-width:720px){header{display:block;padding:22px}.setup,.filtersTop,.dynamicFilters,.stats,.editGrid,.columnsList{grid-template-columns:1fr}main{padding:14px}.sectionTitle{display:block}.actions{margin-top:10px}}

.hidden { display: none !important; }



.headerActions {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-top: 16px;
}

#connectionStatus {
  width: auto !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 20px;
  border-radius: 16px;
  font-weight: 700;
}

#logoutBtn {
  margin: 0;
}

.vact{ 
  text-transform:uppercase;
  letter-spacing:.11em;
  font-size:12px;
  color:#ff0000; 
  font-weight:800;
  margin-bottom:8px}
.headerRoleLabel{
  display:block;
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.08em;
  color:#454749;
}


.tribuneStats{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:16px;
}

.tribuneCard{
  background:#f8fafc;
  border:1px solid #e5e7eb;
  border-radius:12px;
  padding:16px;
}

.tribuneCard h3{
  margin:0 0 10px 0;
}

.tribuneCard strong{
  font-size:1rem;
  display:block;
}

.tribunePersonCard{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  border:1px solid #d9e0e8;
  border-radius:14px;
  padding:14px 18px;
  margin-bottom:10px;
  background:#f8fafc;
}

#tribunePeopleSearch{
  width:100%;
  margin:8px 0 16px;
}

.appHeader{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:32px;
  padding:40px 52px;
  overflow:hidden;
}

.headerText{
  max-width:760px;
}

.headerActions{
  display:flex;
  gap:12px;
  align-items:center;
  margin-top:24px;
}

.connection,
#logoutBtn{
  width:auto !important;
  min-width:140px;
  height:56px;
  padding:0 22px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:18px;
  font-weight:800;
}

.headerLogoBox{
  width:180px;
  flex:0 0 180px;
  text-align:center;
}

.eventLogo{
  width:110px !important;
  height:110px !important;
  max-width:110px !important;
  max-height:110px !important;
  object-fit:contain;
  display:block;
  margin:0 auto 14px;
}



/* Ajuste final cabecera + rol activo */
.headerRoleValue{
  display:block;
  margin-top:6px;
  color:#ffffff;
  font-weight:800;
  font-size:0.95rem;
  letter-spacing:.02em;
}

.headerLogoBox .headerRoleLabel{
  display:block;
  margin-top:12px;
  font-size:.75rem;
  font-weight:800;
  letter-spacing:.11em;
  color:#3b3c3d;
  text-transform:uppercase;
}

.setup{
  grid-template-columns:2fr 1.3fr auto auto auto;
}

@media(max-width:1100px){
  .setup{grid-template-columns:1fr 1fr;}
}
@media(max-width:720px){
  .appHeader{display:block;padding:28px 24px;}
  .headerLogoBox{margin-top:24px;text-align:left;}
  .eventLogo{margin-left:0;}
  .headerActions{flex-wrap:wrap;}
  .setup{grid-template-columns:1fr;}
}


/* Roles y gestión del equipo */
.userCreateGrid{
  display:grid;
  grid-template-columns:1fr 1.2fr 1fr 1fr auto;
  gap:12px;
  align-items:end;
  margin-bottom:16px;
}
.usersList{display:grid;gap:10px;}
.userRow{
  display:grid;
  grid-template-columns:1fr 1.2fr 1fr 1fr auto auto;
  gap:10px;
  align-items:end;
  padding:12px;
  border:1px solid var(--border);
  border-radius:14px;
  background:var(--soft);
}
@media(max-width:1100px){
  .userCreateGrid,.userRow{grid-template-columns:1fr 1fr;}
}
@media(max-width:720px){
  .userCreateGrid,.userRow{grid-template-columns:1fr;}
}


.qrActions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.qrReader{width:min(480px,100%);min-height:260px;border:1px dashed var(--border);border-radius:16px;background:#f8fafc;overflow:hidden;margin-top:12px}
.qrResult,.qrAssociationInfo{margin-top:12px;padding:14px 16px;border:1px solid #bbf7d0;background:#dcfce7;color:#14532d;border-radius:14px;line-height:1.5}
.qrResult.qrError{border-color:#fecaca;background:#fee2e2;color:#7f1d1d}
.qrResult code{display:inline-block;margin-top:6px;padding:4px 6px;border-radius:8px;background:rgba(255,255,255,.7);word-break:break-all}


.tribunePersonCard.personInside{
  background:#dcfce7;
  border-color:#86efac;
}

.tribunePersonCard.personOutside{
  background:#fee2e2;
  border-color:#fecaca;
}
/* === Mejoras visuales: dashboard, mapa, informe, PWA, modo oscuro y kiosco === */
[data-theme="dark"]{
  --bg:#0f172a;--card:#111827;--text:#e5e7eb;--muted:#9ca3af;--border:#334155;--soft:#1f2937;--primary:#60a5fa;
}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{background:#0b1220;color:var(--text);border-color:#334155}
[data-theme="dark"] th{background:#1f2937;color:#cbd5e1}
[data-theme="dark"] tr:hover td{background:#172033}
[data-theme="dark"] .card,[data-theme="dark"] .stats article{background:#111827}
.tribuneStats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.tribuneCard{border:1px solid var(--border);border-radius:18px;padding:16px;background:var(--soft);cursor:pointer;transition:.15s transform,.15s box-shadow}.tribuneCard:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(15,23,42,.12)}.tribuneCardTop{display:flex;justify-content:space-between;gap:10px;align-items:center}.tribuneCard h3{margin:0}.tribuneCard strong{display:block;font-size:24px;margin:6px 0}.progressBar{height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin:10px 0}.progressBar span{display:block;height:100%;background:currentColor;border-radius:999px}.occOk{color:#15803d}.occWarn{color:#b45309}.occDanger{color:#c2410c}.occFull{color:#b91c1c}.capacityAlert{margin-top:10px;padding:8px 10px;border-radius:12px;background:rgba(185,28,28,.12);font-weight:900}.tribuneMap{margin-top:18px;border-top:1px solid var(--border);padding-top:16px}.stageBox{text-align:center;border:2px dashed var(--border);border-radius:18px;padding:18px;font-weight:900;letter-spacing:.08em;color:var(--muted);margin-bottom:14px}.tribuneMapGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.mapTribune{background:var(--card);border:1px solid var(--border);color:var(--text);display:flex;flex-direction:column;gap:4px;align-items:center}.mapTribune strong{font-size:22px}.mediaStats{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.statBlock{background:var(--soft);border:1px solid var(--border);border-radius:16px;padding:16px}.statBlock h3{margin-top:0}.statBlock p strong{font-size:28px}.statLine{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);padding:7px 0}.statLine span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kioskMode #setupPanel,.kioskMode #filtersPanel,.kioskMode #listPanel,.kioskMode .auditCard,.kioskMode #userManagementPanel,.kioskMode #mediaStatsPanel,.kioskMode #tribuneDashboard .sectionTitle,.kioskMode #tribuneAdminPanel,.kioskMode #logoutBtn,.kioskMode #themeToggle{display:none!important}.kioskMode main{max-width:760px}.kioskMode #qrScannerPanel{display:block!important}.kioskMode .qrReader{min-height:360px}@media print{.headerActions,#setupPanel,#filtersPanel,#listPanel,#qrScannerPanel,.auditCard,#userManagementPanel button{display:none!important}body{background:white}.card{box-shadow:none}}

.eventSwitcher{display:grid;grid-template-columns:minmax(220px,360px) auto;gap:10px;align-items:end;margin-top:14px;max-width:560px}
.eventSwitcher label{grid-column:1/-1;color:#365314;margin:0}
.eventSwitcher select{background:rgba(255,255,255,.92);font-weight:800}
@media(max-width:720px){.eventSwitcher{grid-template-columns:1fr}.eventSwitcher label{grid-column:auto}}


/* === GTRIB V4.1 multipágina === */
.appNav{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
  margin:0 0 16px;
  padding:10px;
  background:var(--card);
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow:0 10px 24px rgba(15,23,42,.04);
}
.appNav a{
  text-decoration:none;
  color:var(--text);
  background:#eef2f7;
  border:1px solid var(--border);
  border-radius:999px;
  padding:9px 13px;
  font-size:14px;
  font-weight:800;
}
.appNav a.active{
  background:var(--primary);
  color:#fff;
  border-color:var(--primary);
}
.pageIntro h2{margin-bottom:4px}
.pageIntro p{color:var(--muted);margin:0}
body.page-eventos .eventSwitcher{
  padding:14px;
  border-radius:18px;
  background:rgba(255,255,255,.35);
}
body:not(.page-eventos) #createEventBtn,
body:not(.page-eventos) #editEventBtn,
body:not(.page-eventos) #duplicateEventBtn,
body:not(.page-eventos) #archiveEventBtn,
body:not(.page-eventos) #restoreEventBtn,
body:not(.page-eventos) #lockEventBtn,
body:not(.page-eventos) #deleteEventBtn{
  display:none !important;
}
body.page-inicio #statsPanel{display:grid}
#statsPanel{margin-bottom:16px}
@media(max-width:720px){
  .appNav{position:sticky;top:0;z-index:20;border-radius:0;margin-left:-14px;margin-right:-14px;overflow:auto;flex-wrap:nowrap}
  .appNav a{white-space:nowrap}
}

/* === GTRIB V4.2: tarjeta de gestión de eventos === */
.eventSwitcher {
  display: grid;
  grid-template-columns: minmax(260px, 520px);
  max-width: 560px;
}
.eventManagementPanel .sectionTitle { align-items: center; }
.eventsList {
  display: grid;
  gap: 10px;
  margin: 14px 0 18px;
}
.eventListItem {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  text-align: left;
  background: #f8fafc;
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 14px 16px;
}
.eventListItem:hover,
.eventListItem.selected {
  background: #eef6c9;
  border-color: #96c93d;
  filter: none;
}
.eventListItem strong { display: block; font-size: 18px; }
.eventListItem small { display: block; color: var(--muted); margin-top: 3px; }
.eventStatusBadge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  padding: 7px 11px;
  font-size: 12px;
  font-weight: 900;
  font-style: normal;
  text-transform: uppercase;
  white-space: nowrap;
}
.eventStatusBadge.active { background: #dcfce7; color: #166534; }
.eventStatusBadge.archived { background: #fef3c7; color: #92400e; }
.eventStatusBadge.locked { background: #fee2e2; color: #991b1b; }
.eventDetailsPanel {
  border-top: 1px solid var(--border);
  padding-top: 18px;
  margin-top: 8px;
}
.eventActionsGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.eventActionsGrid button { width: 100%; }
@media (max-width: 1100px) {
  .eventActionsGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .eventActionsGrid { grid-template-columns: 1fr; }
  .eventListItem { align-items: flex-start; flex-direction: column; }
}

/* V4.3: ficha de evento tipo modal */
.eventInfoDialog form{padding:22px;}
.eventInfoBody{display:grid;gap:14px;}
.eventInfoCard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.eventInfoCard div,.eventInfoDescription{border:1px solid var(--border);background:var(--soft);border-radius:16px;padding:14px;}
.eventInfoCard span,.eventInfoDescription span{display:block;color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;}
.eventInfoCard strong{display:block;font-size:16px;word-break:break-word;}
.eventInfoDescription p{margin:0;white-space:pre-wrap;color:var(--text);}
@media(max-width:720px){.eventInfoCard{grid-template-columns:1fr;}}

/* V4.4 - edición de ficha de evento */
.eventInfoEditGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px;}
.eventInfoEditGrid label{border:1px solid var(--border);background:var(--soft);border-radius:16px;padding:14px;margin:0;}
.eventInfoEditGrid textarea{resize:vertical;min-height:110px;}
.eventInfoEditGrid label:has(textarea){grid-column:1 / -1;}
.eventInfoReadonly{margin-top:10px;}
@media(max-width:720px){.eventInfoEditGrid{grid-template-columns:1fr;}}

/* === GTRIB V4.5: Listado prensa integrado === */
body.page-listado #qrScannerPanel { order: 1; }
body.page-listado #filtersPanel { order: 2; }
body.page-listado #listPanel { order: 3; }
body.page-listado #setupPanel { order: 4; }

.qrWorkArea {
  display: grid;
  grid-template-columns: minmax(280px, 1.1fr) minmax(280px, .9fr);
  gap: 16px;
  align-items: start;
  margin-top: 14px;
}

.qrSidePanel {
  min-height: 280px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: var(--soft);
  padding: 16px;
}

.qrSidePanel.qrError {
  background: #fff7ed;
  border-color: #fed7aa;
}

.qrPersonSummary h3 {
  margin: 6px 0 10px;
  font-size: 24px;
}

.qrPersonSummary p {
  margin: 6px 0;
  color: var(--text);
}

.qrLabel {
  display: inline-block;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  color: var(--muted);
  letter-spacing: .04em;
}

.qrSideActions {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin: 16px 0;
}

.qrAssociationResults {
  display: grid;
  gap: 8px;
  margin-top: 12px;
  max-height: 320px;
  overflow: auto;
}

.qrAssociateOption {
  width: 100%;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: #fff;
  color: var(--text);
  border: 1px solid var(--border);
}

.qrAssociateOption span {
  color: var(--muted);
  font-size: 13px;
}

@media (max-width: 900px) {
  .qrWorkArea { grid-template-columns: 1fr; }
  .qrSidePanel { min-height: auto; }
}

/* GTRIB V4.6 · QR seguro */
.qrPendingRequestsPanel{margin-top:14px;border-top:1px solid var(--border);padding-top:14px;display:grid;gap:10px}
.qrPendingItem{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;background:var(--soft);border:1px solid var(--border);border-radius:14px;padding:12px}
.qrPendingItem p{margin:2px 0;color:var(--muted)}
.qrPendingItem small{display:block;color:var(--muted);margin-top:3px}
.qrWarningText{color:var(--warning)!important;font-weight:800}
.qrSelectedPerson{display:grid;gap:8px;background:var(--soft);border:1px solid var(--border);border-radius:14px;padding:12px;margin-top:10px}
.qrSelectedPerson span{color:var(--muted)}
.qrAssociateOption small{display:block;color:var(--warning);font-weight:700;margin-top:4px}
@media(max-width:720px){.qrPendingItem{grid-template-columns:1fr}.qrPendingItem .rowActions{justify-content:flex-start}}

/* GTRIB V4.7 · Cupos de tribuna por rol */
.roleQuotaRow{
  grid-template-columns:1.2fr repeat(3, .9fr) .6fr auto;
  align-items:end;
}
.quotaTotal{
  border:1px solid var(--border);
  border-radius:12px;
  padding:9px 12px;
  background:var(--soft);
  min-height:42px;
}
.quotaTotal span{
  display:block;
  font-size:11px;
  font-weight:800;
  color:var(--muted);
  text-transform:uppercase;
}
.quotaTotal strong{font-size:18px;}
.fieldHint{
  display:block;
  margin-top:6px;
  color:var(--muted);
  font-size:12px;
  text-transform:none;
  font-weight:600;
}
.roleQuotaMini{
  display:grid;
  gap:2px;
  margin-top:8px;
  text-align:left;
}
.roleQuotaMini small{
  color:var(--muted);
  font-weight:700;
}
@media(max-width:900px){
  .roleQuotaRow{grid-template-columns:1fr;}
}

/* GTRIB V4.7.1 · corrección visual de tarjetas de tribuna */
.tribuneCard{
  color:var(--text) !important;
  background:#f8fafc !important;
  border:1px solid #cbd5e1 !important;
  box-shadow:0 8px 22px rgba(15,23,42,.06);
}
.tribuneCard h3,
.tribuneCard strong,
.tribuneCard small,
.tribuneCard span,
.tribuneCard .tribuneRoleLine,
.tribuneCard .tribuneRoleStats{
  color:var(--text) !important;
}
.tribuneCard small,
.tribuneCard .tribuneRoleStats{
  color:#475569 !important;
  font-weight:800;
}
.tribuneCardTop span{
  background:rgba(255,255,255,.75);
  border:1px solid rgba(15,23,42,.08);
  border-radius:999px;
  padding:4px 10px;
  font-weight:900;
}
.tribuneCard .progressBar{
  background:rgba(15,23,42,.12) !important;
}
.tribuneCard .progressBar span{
  background:currentColor !important;
}
.tribuneCard.occOk{
  background:#ecfdf5 !important;
  border-color:#86efac !important;
  color:#166534 !important;
}
.tribuneCard.occWarn{
  background:#fffbeb !important;
  border-color:#fcd34d !important;
  color:#92400e !important;
}
.tribuneCard.occDanger{
  background:#fff7ed !important;
  border-color:#fdba74 !important;
  color:#9a3412 !important;
}
.tribuneCard.occFull{
  background:#fef2f2 !important;
  border-color:#fca5a5 !important;
  color:#991b1b !important;
}
.tribuneCard.occOk .progressBar span{background:#22c55e !important;}
.tribuneCard.occWarn .progressBar span{background:#f59e0b !important;}
.tribuneCard.occDanger .progressBar span{background:#f97316 !important;}
.tribuneCard.occFull .progressBar span{background:#dc2626 !important;}
.mapTribune.occOk{background:#ecfdf5 !important;color:#166534 !important;border-color:#86efac !important;}
.mapTribune.occWarn{background:#fffbeb !important;color:#92400e !important;border-color:#fcd34d !important;}
.mapTribune.occDanger{background:#fff7ed !important;color:#9a3412 !important;border-color:#fdba74 !important;}
.mapTribune.occFull{background:#fef2f2 !important;color:#991b1b !important;border-color:#fca5a5 !important;}

/* GTRIB V4.7.3 · roles configurables y cupos por rol */
.pressRolesBox{
  border:1px solid var(--border);
  border-radius:18px;
  background:var(--soft);
  padding:16px;
  margin:12px 0 18px;
}
.compactTitle{margin-bottom:10px;}
.pressRolesList{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px;}
.pressRoleRow{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;}
.roleQuotaRows{gap:12px;}
.roleQuotaRow{grid-template-columns:1.1fr repeat(3,minmax(90px,1fr)) auto auto;align-items:end;}
.roleQuotaRow label{min-width:0;}
.quotaTotal{border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:#fff;min-width:96px;}
.quotaTotal span{display:block;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;}
.quotaTotal strong{font-size:20px;}
.roleQuotaMini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;margin-top:10px;text-align:left;}
.roleQuotaMini small{font-size:13px;color:#475569;font-weight:800;}
.tribuneCard.tribuneOk{background:#ecfdf5;border-color:#86efac;color:#14532d;}
.tribuneCard.tribuneWarn{background:#fff7ed;border-color:#fdba74;color:#7c2d12;}
.tribuneCard.tribuneHigh{background:#ffedd5;border-color:#fb923c;color:#7c2d12;}
.tribuneCard.tribuneFull{background:#fee2e2;border-color:#fca5a5;color:#7f1d1d;}
.tribuneCard.tribuneOk h3,.tribuneCard.tribuneWarn h3,.tribuneCard.tribuneHigh h3,.tribuneCard.tribuneFull h3,
.tribuneCard.tribuneOk strong,.tribuneCard.tribuneWarn strong,.tribuneCard.tribuneHigh strong,.tribuneCard.tribuneFull strong{
  color:inherit;
}
@media(max-width:1100px){.pressRolesList{grid-template-columns:1fr 1fr}.roleQuotaRow{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.pressRolesList,.roleQuotaRow{grid-template-columns:1fr}.pressRoleRow{grid-template-columns:1fr}}

/* GTRIB V4.8 · Tribunas redefinidas */
.tribuneCard{
  text-align:left !important;
  color:var(--text) !important;
}
.tribuneCard h3,
.tribuneCard strong,
.tribuneCard small,
.tribuneCard span,
.tribuneCard div{
  color:inherit !important;
}
.tribuneMainMetric{
  font-size:34px !important;
  line-height:1.05;
  letter-spacing:-.04em;
  margin:10px 0 8px !important;
}
.observerTribuneCard{
  min-height:168px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
.observerTribuneCard .tribuneMainMetric{
  font-size:42px !important;
  text-align:center;
}
.roleQuotaMiniTable{
  display:grid;
  gap:7px;
  margin-top:12px;
}
.tribuneRoleLine{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:10px;
  align-items:center;
  padding:7px 9px;
  background:rgba(255,255,255,.55);
  border:1px solid rgba(15,23,42,.08);
  border-radius:10px;
  font-size:13px;
}
.tribuneRoleLine span{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tribuneRoleLine strong{font-size:13px !important;margin:0 !important;}
.tribuneRoleLine small{font-size:12px !important;margin:0 !important;opacity:.85;}
.tribuneOk{background:#ecfdf5 !important;border-color:#86efac !important;color:#14532d !important;}
.tribuneWarn{background:#fff7ed !important;border-color:#fdba74 !important;color:#7c2d12 !important;}
.tribuneHigh{background:#ffedd5 !important;border-color:#fb923c !important;color:#7c2d12 !important;}
.tribuneFull{background:#fee2e2 !important;border-color:#fca5a5 !important;color:#7f1d1d !important;}
.tribuneOk .progressBar span{background:#22c55e !important;}
.tribuneWarn .progressBar span{background:#f59e0b !important;}
.tribuneHigh .progressBar span{background:#f97316 !important;}
.tribuneFull .progressBar span{background:#dc2626 !important;}
.mapTribune.tribuneOk{background:#ecfdf5 !important;color:#14532d !important;border-color:#86efac !important;}
.mapTribune.tribuneWarn{background:#fff7ed !important;color:#7c2d12 !important;border-color:#fdba74 !important;}
.mapTribune.tribuneHigh{background:#ffedd5 !important;color:#7c2d12 !important;border-color:#fb923c !important;}
.mapTribune.tribuneFull{background:#fee2e2 !important;color:#7f1d1d !important;border-color:#fca5a5 !important;}
.tribuneDialogSummary{margin-bottom:18px;}
.tribuneDialogSummaryCards{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  margin-bottom:12px;
}
.tribuneDialogSummaryCards article{
  background:var(--soft);
  border:1px solid var(--border);
  border-radius:16px;
  padding:14px;
}
.tribuneDialogSummaryCards strong{
  display:block;
  font-size:30px;
  line-height:1;
}
.tribuneDialogSummaryCards span{
  display:block;
  color:var(--muted);
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  margin-top:6px;
}
.tribuneDialogRoles{
  display:grid;
  gap:8px;
}
.tribuneDialogRole{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  border:1px solid var(--border);
  border-radius:12px;
  padding:10px 12px;
}
.tribuneDialogRole span{font-weight:800;}
.tribuneDialogRole small{color:var(--muted);font-weight:800;}
.inlineWarning{
  margin-top:8px;
  padding:8px 10px;
  border-radius:10px;
  background:#fef3c7;
  color:#92400e;
  font-size:12px;
  font-weight:800;
}
.fieldHint{
  display:block;
  margin-top:6px;
  color:var(--muted);
  font-size:12px;
  font-weight:700;
  text-transform:none;
}
@media(max-width:720px){
  .tribuneDialogSummaryCards{grid-template-columns:1fr;}
  .tribuneDialogRole,.tribuneRoleLine{grid-template-columns:1fr auto;}
  .tribuneDialogRole small,.tribuneRoleLine small{grid-column:1/-1;}
}


/* GTRIB V4.9 · Tribunas estable y legible */
.tribuneStats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;}
.tribuneCard{display:block;width:100%;min-height:170px;text-align:left;border:1px solid var(--border);border-radius:18px;padding:16px;color:#111827;background:#ecfdf5;box-shadow:0 8px 20px rgba(15,23,42,.08);filter:none;}
.tribuneCard:hover{filter:none;transform:translateY(-1px);}
.tribuneCardTop{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;}
.tribuneCardTop h3{margin:0;color:#111827;font-size:18px;}
.tribuneCardTop span{background:rgba(255,255,255,.75);color:#111827;border:1px solid rgba(15,23,42,.12);border-radius:999px;padding:5px 9px;font-weight:900;}
.tribuneMainMetric{display:block;color:#111827;font-size:32px;line-height:1.1;margin:10px 0 6px;}
.tribuneCard small,.tribuneCard div{color:#1f2937;}
.tribuneOk{background:#dcfce7;border-color:#86efac;}
.tribuneWarn{background:#fef3c7;border-color:#facc15;}
.tribuneHigh{background:#fed7aa;border-color:#fb923c;}
.tribuneFull{background:#fee2e2;border-color:#f87171;}
.progressBar{height:9px;border-radius:999px;background:rgba(255,255,255,.75);overflow:hidden;margin:10px 0;}
.progressBar span{display:block;height:100%;background:#111827;border-radius:999px;}
.roleQuotaMiniTable{display:grid;gap:6px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(15,23,42,.12);}
.tribuneRoleLine{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;font-size:13px;color:#111827;}
.tribuneRoleLine span,.tribuneRoleLine strong,.tribuneRoleLine small{color:#111827;}
.observerTribuneCard .roleQuotaMini{display:none;}
.observerTribuneCard{min-height:145px;}
.tribuneMap{margin-top:16px;}
.tribuneMapGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:10px;}
.stageBox{border:1px dashed var(--border);border-radius:16px;padding:12px;text-align:center;font-weight:900;color:var(--muted);background:#fff;}
.mapTribune{border:1px solid var(--border);border-radius:16px;color:#111827;padding:12px;text-align:left;background:#f8fafc;}
.mapTribune strong,.mapTribune span,.mapTribune small{display:block;color:#111827;}
.tribuneDialogSummaryCards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px;}
.tribuneDialogSummaryCards article{background:var(--soft);border:1px solid var(--border);border-radius:16px;padding:12px;}
.tribuneDialogSummaryCards strong{display:block;font-size:24px;color:var(--text);}
.tribuneDialogSummaryCards span{font-size:12px;color:var(--muted);font-weight:900;text-transform:uppercase;}
.tribuneDialogRoles{display:grid;gap:8px;margin-bottom:12px;}
.tribuneDialogRole{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:#fff;}
.pressRolesEditor{display:grid;gap:10px;margin-bottom:16px;}
.pressRoleRow{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:8px;align-items:end;}
.roleQuotaRow{grid-template-columns:minmax(160px,220px) 1fr auto;align-items:start;}
.roleQuotaGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;}
.quotaTotal{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--soft);font-weight:900;}
.inlineWarning,.fieldHint{display:block;margin-top:6px;color:#92400e;font-size:12px;font-weight:800;}
@media(max-width:720px){.roleQuotaRow{grid-template-columns:1fr}.tribuneDialogSummaryCards{grid-template-columns:1fr}.tribuneRoleLine,.tribuneDialogRole{grid-template-columns:1fr auto}.pressRoleRow{grid-template-columns:1fr}.tribuneMainMetric{font-size:28px}}


/* GTRIB V5.0 · Navegación multipágina limpia */
body[data-page] .appNav {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  margin: 0 0 16px;
  padding: 10px;
  background: rgba(255,255,255,.92);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: 0 8px 20px rgba(15,23,42,.06);
  backdrop-filter: blur(8px);
}
body[data-page] .appNav a {
  text-decoration: none;
  color: var(--text);
  font-weight: 800;
  padding: 10px 12px;
  border-radius: 12px;
  background: #f8fafc;
  border: 1px solid var(--border);
}
body[data-page] .appNav a.active,
body[data-page] .appNav a:hover {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}
body[data-page] .pageIntro {
  border-left: 6px solid var(--primary);
}
@media (min-width: 1180px) {
  body[data-page] main#appContainer {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    grid-template-areas:
      "header header"
      "nav intro"
      "nav content";
    gap: 16px;
  }
  body[data-page] .appHeader { grid-area: header; }
  body[data-page] .appNav {
    grid-area: nav;
    position: sticky;
    top: 18px;
    align-self: start;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    margin: 0;
  }
  body[data-page] #pageIntro { grid-area: intro; }
  body[data-page] #appContainer > section:not(#pageIntro),
  body[data-page] #appContainer > .auditCard { grid-column: 2; }
}

/* GTRIB V5.1.1 · Ficha de evento */
.eventInfoInlineList{display:block;margin-top:6px;color:var(--muted);font-size:13px;font-weight:700;line-height:1.35;text-transform:none;}

/* V5.2 · Filtros del módulo Equipo */
.userFiltersGrid{
  display:grid;
  grid-template-columns: minmax(240px,2fr) minmax(220px,1fr) auto;
  gap:12px;
  align-items:end;
  margin:18px 0 14px;
  padding:14px;
  border:1px solid var(--border);
  border-radius:16px;
  background:var(--soft);
}
.userFilterActions{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}
.filterCount{
  color:var(--muted);
  font-size:13px;
  font-weight:800;
  white-space:nowrap;
}
@media(max-width:900px){
  .userFiltersGrid{grid-template-columns:1fr;}
}

/* GTRIB V5.3 */
.forbiddenPageCard{border-color:#f59e0b;background:#fffbeb;}
.pageForbidden .pageIntro{display:none!important;}
.eventSwitcher.eventLocked select{opacity:.65;cursor:not-allowed;}
.appNav a.hidden{display:none!important;}

.warningText{color:#92400e;font-weight:900}.passwordResetCard{max-width:560px}.tempPasswordBox{display:grid;gap:6px;background:#f8fafc;border:1px solid var(--border);border-radius:14px;padding:14px;margin:12px 0}.tempPasswordBox code{font-size:28px;font-weight:900;letter-spacing:.08em;background:white;border:1px dashed var(--border);border-radius:12px;padding:12px;text-align:center}.copyMessageText{min-height:130px;margin-top:10px}.formError{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:12px;padding:10px;font-weight:800}


/* GTRIB V5.4.2 · Paneles accesorios compactos y modales */
.compactActionPanel{
  margin-top:14px;
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:10px;
  border-top:0!important;
  padding-top:0!important;
}
.getribModal{
  border:0;
  border-radius:20px;
  padding:0;
  width:min(760px,94vw);
  box-shadow:0 30px 80px rgba(15,23,42,.28);
}
.getribModal::backdrop{background:rgba(15,23,42,.45);}
.getribModalCard{padding:20px;}
.getribModalBody{display:grid;gap:12px;max-height:70vh;overflow:auto;}
.getribModal [data-close-modal]{font-size:22px;line-height:1;padding:8px 12px;}

/* GTRIB V5.4.3 · Limpieza definitiva de módulos fantasma */
.getribGhostHidden,
#getribHiddenFallbacks,
#getribHiddenFallbacks *{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
#qrPendingRequestsPanel.getribGhostHidden{
  display:none!important;
}
#qrPendingRequestsLauncher{
  margin-left:auto;
}
.getribModal[open]{
  display:block;
}
.getribModalCard .sectionTitle{
  margin-bottom:14px;
}


/* === GTRIB V5.5 · paneles de solicitudes === */
.requestPanelCard{width:min(920px,94vw);}
.requestPanelBody{gap:18px;}
.requestPanelSection{display:grid;gap:10px;}
.requestPanelSection h3{margin:0 0 4px;font-size:16px;}
.requestItem{border:1px solid var(--border);border-radius:16px;padding:14px;background:var(--soft);display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;}
.requestItemMain{display:grid;gap:4px;}
.requestItemMain p,.requestItemMain small{margin:0;color:var(--muted);}
.requestItemActions{display:flex;gap:8px;align-items:end;flex-wrap:wrap;justify-content:flex-end;}
.requestItemActions label{width:100%;margin:0;}
.requestItemActions select{min-width:190px;}
.requestTag{display:inline-flex;width:max-content;border-radius:999px;padding:4px 8px;background:#dbeafe;color:#1e40af;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;}
.requestTagNote{background:#fef3c7;color:#92400e;}
@media(max-width:720px){.requestItem{grid-template-columns:1fr}.requestItemActions{justify-content:flex-start}.requestItemActions select{width:100%;}}


/* === GTRIB V6.0 · solicitudes separadas === */
.requestCounters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:14px 0;}
.requestCounter{display:block;text-decoration:none;background:#f7f9fb;border:1px solid #e3e8ef;border-radius:16px;padding:16px;color:inherit;}
.requestCounter strong{display:block;font-size:2rem;line-height:1;}
.requestCounter span{display:block;margin-top:6px;color:#64748b;font-weight:700;}
.requestCounter.urgent{background:#fff7ed;border-color:#fed7aa;}
.logisticsForm{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:16px 0 22px;padding:16px;border:1px solid #e3e8ef;border-radius:18px;background:#fafafa;}
.logisticsForm .wide{grid-column:1/-1;}
.logisticsForm input,.logisticsForm select,.logisticsForm textarea,.logisticsActions textarea{width:100%;box-sizing:border-box;}
.logisticsSubmitRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.logisticsActions{min-width:220px;display:flex;flex-direction:column;gap:8px;}
.logisticsRequestItem.priority-urgente{border-left:6px solid #f97316;}
.logisticsRequestItem.priority-alta{border-left:6px solid #f59e0b;}
.muted{color:#64748b;font-size:.9rem;}
.v6RequestsDashboard .requestCounters{margin-bottom:0;}
@media (max-width:720px){.logisticsActions{min-width:0;width:100%;}.requestItem{align-items:stretch;}}

/* GTRIB V6.0.1 · Modal de petición logística desde QR */
.qrLogisticsPersonBox{
  border:1px solid var(--border);
  border-radius:16px;
  background:var(--soft);
  padding:14px;
  display:grid;
  gap:4px;
}
.qrLogisticsPersonBox p,.qrLogisticsPersonBox small{margin:0;color:var(--muted);}
.modalActions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:4px;}


/* GTRIB V6.0.4 · avisos numéricos en menú lateral */
.appNav a .navLabel{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  width:100%;
}
.navBadge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px;
  border-radius:999px;
  background:#dc2626;
  color:white;
  font-size:12px;
  font-weight:900;
  line-height:1;
  box-shadow:0 0 0 2px rgba(255,255,255,.85);
}
.appNav a.hasNotification:not(.active){
  font-weight:900;
}

/* GTRIB V7.0.2 · Modales reales centrados para avisos y contraseñas temporales */
.modalOverlay{
  position:fixed;
  inset:0;
  z-index:10000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(15,23,42,.45);
  backdrop-filter:blur(3px);
}
.modalCard{
  width:min(620px,96vw);
  max-height:88vh;
  overflow:auto;
  background:var(--card,#fff);
  color:var(--text,#0f172a);
  border:1px solid var(--border,#e2e8f0);
  border-radius:20px;
  box-shadow:0 30px 80px rgba(15,23,42,.35);
  padding:22px;
}
.modalCard h2{margin-bottom:8px;}
.modalCard p{color:var(--muted,#64748b);}
.passwordResetCard{max-width:560px;}
.passwordResetCard .dialogActions{position:sticky;bottom:0;background:var(--card,#fff);padding-top:12px;}
@media(max-width:720px){
  .modalOverlay{align-items:flex-start;padding:16px;overflow:auto;}
  .modalCard{max-height:none;}
}

/* GTRIB V7.0.3 · Modales responsive sin desbordes horizontales */
.getribModal,
.getribModal *,
.modalOverlay,
.modalOverlay *{
  box-sizing:border-box;
}
.getribModal{
  width:min(980px,94vw);
  max-width:calc(100vw - 24px);
  overflow:hidden;
}
.getribModal.requestPanelModal{
  width:min(1120px,94vw);
}
.getribModalCard,
.requestPanelCard{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow:hidden;
}
.getribModalBody,
.requestPanelBody{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden;
  overflow-y:auto;
}
.getribModal .sectionTitle,
.modalCard .sectionTitle{
  min-width:0;
  flex-wrap:wrap;
}
.getribModal .sectionTitle > div,
.modalCard .sectionTitle > div{
  min-width:0;
}
.getribModal h1,
.getribModal h2,
.getribModal h3,
.getribModal p,
.getribModal small,
.getribModal strong,
.getribModal span,
.modalCard h1,
.modalCard h2,
.modalCard h3,
.modalCard p,
.modalCard small,
.modalCard strong,
.modalCard span{
  overflow-wrap:anywhere;
  word-break:normal;
}
.requestItem,
.qrPendingItem,
.tribunePersonCard,
.logisticsRequestItem,
.userRequestItem,
.pressRequestItem,
.qrRequestItem{
  max-width:100%;
  min-width:0;
}
.requestItem{
  grid-template-columns:minmax(0,1fr) minmax(220px,auto);
}
.requestItemMain,
.requestItemActions,
.logisticsActions,
.rowActions{
  min-width:0;
  max-width:100%;
}
.requestItemActions{
  justify-content:flex-end;
}
.requestItemActions select,
.requestItemActions input,
.requestItemActions textarea,
.requestItemActions button,
.rowActions button,
.modalActions button,
.dialogActions button{
  max-width:100%;
}
.getribModal button,
.modalCard button{
  white-space:normal;
}
.getribModal select,
.getribModal input,
.getribModal textarea,
.modalCard select,
.modalCard input,
.modalCard textarea{
  max-width:100%;
}
.modalCard{
  max-width:calc(100vw - 32px);
  overflow-x:hidden;
}
@media(max-width:900px){
  .getribModal,
  .getribModal.requestPanelModal{
    width:calc(100vw - 24px);
  }
  .requestItem{
    grid-template-columns:1fr;
  }
  .requestItemActions,
  .rowActions,
  .modalActions,
  .dialogActions{
    justify-content:flex-start;
  }
  .requestItemActions select,
  .requestItemActions button{
    width:100%;
  }
}
@media(max-width:520px){
  .getribModalCard,
  .requestPanelCard,
  .modalCard{
    padding:16px;
  }
  .getribModal .sectionTitle,
  .modalCard .sectionTitle{
    display:grid;
    grid-template-columns:1fr auto;
    align-items:start;
  }
  .rowActions,
  .modalActions,
  .dialogActions{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }
}

/* V7.0.4 - Cabecera: logo mayor y tarjeta blanca para rol activo */
.headerLogoBox{
  width:260px !important;
  flex:0 0 260px !important;
  text-align:center;
}

.eventLogo{
  width:150px !important;
  height:150px !important;
  max-width:150px !important;
  max-height:150px !important;
  object-fit:contain;
  display:block;
  margin:0 auto 16px;
}

.headerLogoBox .headerRoleLabel{
  width:230px;
  margin:16px auto 0 !important;
  padding:14px 18px 4px;
  background:#ffffff;
  border-radius:20px 20px 0 0;
  color:#3b3c3d !important;
  text-transform:uppercase;
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.16em;
  box-shadow:0 14px 28px rgba(15,23,42,.08);
}

.headerLogoBox .headerRoleValue{
  width:230px;
  margin:0 auto !important;
  padding:6px 18px 16px;
  background:#ffffff;
  border-radius:0 0 20px 20px;
  color:#111827 !important;
  text-transform:uppercase;
  font-size:.92rem;
  font-weight:900;
  letter-spacing:.14em;
  line-height:1.35;
  overflow-wrap:anywhere;
  word-break:break-word;
  box-shadow:0 14px 28px rgba(15,23,42,.08);
}

@media(max-width:720px){
  .headerLogoBox{
    width:100% !important;
    flex:0 0 auto !important;
    text-align:center;
  }
  .eventLogo{
    width:132px !important;
    height:132px !important;
    max-width:132px !important;
    max-height:132px !important;
    margin:0 auto 14px !important;
  }
  .headerLogoBox .headerRoleLabel,
  .headerLogoBox .headerRoleValue{
    width:min(100%,260px);
  }
}


/* V7.0.5 - Ajustes visuales de cabecera solicitados */
.eyebrow{
  color:#5f6468 !important;
  font-size:13px !important;
  letter-spacing:.16em !important;
  font-weight:900 !important;
}

.headerActions .connection,
.headerActions button.secondary,
#connectionStatus,
#kioskToggle,
#logoutBtn{
  min-width:170px;
  height:58px;
  border-radius:22px !important;
  font-weight:900;
  letter-spacing:.01em;
  box-shadow:none;
}

.headerActions button.secondary,
#kioskToggle,
#logoutBtn{
  background:#eef2f7 !important;
  color:#111827 !important;
}

#connectionStatus.connection.ok,
.connection.ok{
  background:#e9f8eb !important;
  color:#2f5b3f !important;
}

#connectionStatus.connection.bad,
.connection.bad{
  background:#fde8e8 !important;
  color:#8f1f1f !important;
}

.headerLogoBox{
  width:320px !important;
  flex:0 0 320px !important;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding-top:4px;
}

.eventLogo{
  width:190px !important;
  height:190px !important;
  max-width:190px !important;
  max-height:190px !important;
  margin:0 auto 10px !important;
}

.vact{
  display:none !important;
}

.headerLogoBox .headerRoleLabel{
  width:300px !important;
  margin:4px auto 0 !important;
  padding:18px 22px 6px !important;
  border-radius:24px 24px 0 0 !important;
  color:#3f444a !important;
  background:#ffffff !important;
  font-size:.82rem !important;
  font-weight:900 !important;
  letter-spacing:.18em !important;
  text-align:center;
}

.headerLogoBox .headerRoleValue{
  width:300px !important;
  margin:0 auto !important;
  padding:8px 22px 18px !important;
  border-radius:0 0 24px 24px !important;
  color:#111827 !important;
  background:#ffffff !important;
  font-size:1rem !important;
  font-weight:900 !important;
  letter-spacing:.16em !important;
  text-align:center;
}

@media(max-width:900px){
  .headerLogoBox{
    width:100% !important;
    flex:0 0 auto !important;
    margin-top:26px;
  }
  .eventLogo{
    width:160px !important;
    height:160px !important;
    max-width:160px !important;
    max-height:160px !important;
  }
  .headerLogoBox .headerRoleLabel,
  .headerLogoBox .headerRoleValue{
    width:min(100%,320px) !important;
  }
}

/* V7.0.6 - Adaptación del modo kiosco a la nueva cabecera */
body.kioskMode[data-page] main#appContainer{
  max-width:1180px !important;
  width:100% !important;
  padding:18px 22px !important;
  display:block !important;
}

body.kioskMode[data-page] .appHeader{
  width:100% !important;
  min-height:auto !important;
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(280px,360px) !important;
  align-items:center !important;
  gap:28px !important;
  padding:42px 56px !important;
  border-radius:0 !important;
  overflow:visible !important;
}

body.kioskMode[data-page] .headerText{
  max-width:720px !important;
  min-width:0 !important;
}

body.kioskMode[data-page] .headerText h1{
  max-width:650px;
  font-size:clamp(34px,4vw,58px) !important;
  line-height:1.08 !important;
}

body.kioskMode[data-page] .eyebrow{
  max-width:650px;
  line-height:1.35 !important;
}

body.kioskMode[data-page] .eventSwitcher{
  max-width:560px !important;
}

body.kioskMode[data-page] .headerActions{
  flex-wrap:wrap !important;
  gap:14px !important;
}

body.kioskMode[data-page] .headerActions .connection,
body.kioskMode[data-page] .headerActions button.secondary,
body.kioskMode[data-page] #connectionStatus,
body.kioskMode[data-page] #kioskToggle{
  min-width:190px !important;
  max-width:100% !important;
}

body.kioskMode[data-page] .headerLogoBox{
  width:100% !important;
  flex:0 1 auto !important;
  min-width:0 !important;
  align-self:center !important;
}

body.kioskMode[data-page] .eventLogo{
  width:220px !important;
  height:220px !important;
  max-width:min(220px,100%) !important;
  max-height:220px !important;
}

body.kioskMode[data-page] .headerLogoBox .headerRoleLabel,
body.kioskMode[data-page] .headerLogoBox .headerRoleValue{
  width:min(100%,340px) !important;
}

body.kioskMode[data-page] .appNav,
body.kioskMode[data-page] #pageIntro,
body.kioskMode[data-page] .pageIntro{
  display:none !important;
}

body.kioskMode[data-page] #appContainer > section:not(#pageIntro):not(.hidden),
body.kioskMode[data-page] #appContainer > .auditCard:not(.hidden){
  margin-top:18px !important;
}

body.kioskMode[data-page] #qrScannerPanel{
  max-width:760px !important;
  margin-left:auto !important;
  margin-right:auto !important;
}

body.kioskMode[data-page="qr"] main#appContainer{
  max-width:980px !important;
}

body.kioskMode[data-page="qr"] .appHeader{
  grid-template-columns:1fr !important;
  text-align:center !important;
}

body.kioskMode[data-page="qr"] .headerText,
body.kioskMode[data-page="qr"] .eventSwitcher{
  margin-left:auto !important;
  margin-right:auto !important;
}

body.kioskMode[data-page="qr"] .headerActions{
  justify-content:center !important;
}

body.kioskMode[data-page="qr"] .headerLogoBox{
  display:none !important;
}

body.kioskMode[data-page="qr"] #qrScannerPanel{
  margin-top:18px !important;
}

@media(max-width:900px){
  body.kioskMode[data-page] main#appContainer{
    padding:0 !important;
  }
  body.kioskMode[data-page] .appHeader{
    grid-template-columns:1fr !important;
    padding:32px 24px !important;
    text-align:left !important;
  }
  body.kioskMode[data-page] .headerText h1{
    font-size:38px !important;
  }
  body.kioskMode[data-page] .eventLogo{
    width:170px !important;
    height:170px !important;
    max-width:170px !important;
    max-height:170px !important;
  }
  body.kioskMode[data-page] #appContainer > section:not(#pageIntro):not(.hidden),
  body.kioskMode[data-page] #appContainer > .auditCard:not(.hidden){
    margin:14px !important;
  }
}

@media(max-width:560px){
  body.kioskMode[data-page] .headerActions,
  body.kioskMode[data-page] .headerActions .connection,
  body.kioskMode[data-page] .headerActions button.secondary,
  body.kioskMode[data-page] #connectionStatus,
  body.kioskMode[data-page] #kioskToggle{
    width:100% !important;
  }
}

/* GTRIB V7.0.11 · mejoras de peticiones logísticas */
.logisticsClosedBox{margin-top:16px;border:1px solid #dfe5ee;border-radius:16px;background:#f8fafc;padding:12px;}
.logisticsClosedBox summary{cursor:pointer;font-weight:800;color:#4b5563;padding:6px 4px;}
.logisticsClosedItem{opacity:.78;background:#f7f8fa;}
.logisticsAssignedNotice{border-color:#f0c36a;background:#fff9eb;}
.logisticsEditDialog{width:min(980px,94vw);border:0;border-radius:20px;padding:22px;box-shadow:0 24px 70px rgba(15,23,42,.25);}
.logisticsEditDialog::backdrop{background:rgba(15,23,42,.42);backdrop-filter:blur(2px);}
.logisticsActions button{white-space:nowrap;}
@media (max-width:800px){.logisticsEditDialog{width:96vw;padding:14px}.logisticsActions button{width:100%;}}

/* GTRIB V7.0.17 · Mantenimiento */
.maintenanceGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin:16px 0;}
.miniCard{border:1px solid #dfe6ee;border-radius:16px;padding:16px;background:#fff;box-shadow:0 8px 24px rgba(20,30,50,.04);}
.maintenanceStatus{padding:12px 14px;border-radius:12px;background:#f4f7fb;border:1px solid #dfe6ee;margin-bottom:12px;}
.maintenanceStatus.ok{background:#edf8f0;border-color:#b7e2bf;}
.maintenanceStatus.error{background:#fff1f1;border-color:#f0b6b6;}
.maintenanceStats{margin-top:12px;}
.userProtectedBadge{display:inline-block;margin-left:8px;padding:3px 8px;border-radius:999px;background:#111827;color:#fff;font-size:.78rem;font-weight:700;}
.userRow.ownerProtected{border:2px solid #111827;}


/* GTRIB V8.0.5 · PWA instalable */
.pwaInstallBtn{white-space:nowrap;}
.pwaInstallBtn.is-installed{display:none !important;}
.pwaHelpOverlay{position:fixed;inset:0;z-index:9999;background:rgba(15,23,42,.52);display:flex;align-items:center;justify-content:center;padding:18px;}
.pwaHelpDialog{width:min(680px,94vw);background:#fff;border-radius:22px;box-shadow:0 24px 70px rgba(0,0,0,.25);padding:22px;color:#172033;}
.pwaHelpDialog h2{margin:0 0 8px;font-size:1.35rem;}
.pwaHelpDialog p{margin:8px 0;line-height:1.45;}
.pwaHelpDialog ol{padding-left:22px;line-height:1.55;}
.pwaHelpActions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;flex-wrap:wrap;}
.pwaProtocolWarning{background:#fff7db;border:1px solid #f3d273;color:#594100;border-radius:14px;padding:10px 12px;margin:10px 0;}
@media(max-width:700px){.pwaHelpDialog{padding:18px;border-radius:18px}.pwaHelpActions{justify-content:stretch}.pwaHelpActions button{width:100%;}}

/* === GTRIB V9.0.0 · Miembros/Cuentas/Roles por evento === */
.memberRowV9{
  border-left:4px solid #96c93d;
}
.memberRowHeaderV9{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  grid-column:1 / -1;
  margin-bottom:8px;
}
.memberRowHeaderV9 strong{display:block;font-size:1.05rem;}
.memberRowHeaderV9 small{display:block;color:#5f6b7a;margin-top:2px;}
.memberBadgesV9{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;}
.memberBadgesV9 span{
  display:inline-flex;
  align-items:center;
  border:1px solid #dbe4ef;
  border-radius:999px;
  padding:4px 8px;
  background:#fff;
  color:#1f2937;
  font-size:.78rem;
  font-weight:700;
}
@media (max-width:700px){
  .memberRowHeaderV9{flex-direction:column;}
  .memberBadgesV9{justify-content:flex-start;}
}

/* === GTRIB V9.1.0 · Categoría APP en inicio y menú === */
.navGroupLabel{
  display:block;
  margin:10px 10px 6px;
  padding:7px 10px;
  border-radius:12px;
  background:#e8edf4;
  color:#657386;
  font-size:.76rem;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.navGroupApp{background:#eef2ff;color:#3730a3;}
.homeV905Grid,
#homeDashboardV905{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px;
  align-items:start;
}
.homeV905Column{
  border:1px solid #dfe6ee;
  border-radius:20px;
  padding:16px;
  background:#fff;
  min-height:180px;
}
.homeV905Column.appColumn{background:#f8faff;border-color:#d9e2ff;}
.homeModuleGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:12px;}
.homeModuleCard{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-height:102px;
  padding:14px;
  border:1px solid #e2e8f0;
  border-radius:16px;
  background:#f8fafc;
  text-decoration:none;
  color:#111827;
}
.homeModuleCard span{font-size:1.45rem;}
.homeModuleCard strong{font-size:1rem;}
.homeModuleCard small{color:#64748b;line-height:1.25;}
.homeModuleCard.app{background:#eef2ff;border-color:#d9e2ff;}
@media(max-width:1100px){#homeDashboardV905,.homeV905Grid{grid-template-columns:1fr;}}

/* === GTRIB V9.1.1 · Ficha de miembro legible y solicitudes de contraseña === */
.userRow.memberRowV9{
  display:block;
  padding:18px;
  border-radius:18px;
}
.memberRowHeaderV9{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:16px;
}
.memberRowHeaderV9 > div:first-child{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.memberBadgesV9{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:8px;
}
.memberBadgesV9 span{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 12px;
  border-radius:999px;
  border:1px solid #dfe6ee;
  background:#fff;
  font-weight:800;
  color:#111827;
}
.userRow.memberRowV9 > label{
  display:inline-flex;
  flex-direction:column;
  gap:6px;
  width:min(100%, 300px);
  margin:0 10px 14px 0;
  vertical-align:top;
}
.userRow.memberRowV9 > label input,
.userRow.memberRowV9 > label select{
  width:100%;
  min-width:0;
}
.memberQrBoxV901{
  display:block;
  margin:4px 0 16px;
  padding:14px 16px;
  border:1px dashed #cbd5e1;
  border-radius:14px;
  background:#f8fafc;
}
.memberQrBoxV901 strong,
.memberQrBoxV901 span,
.memberQrBoxV901 small{
  display:block;
  margin:3px 0;
}
.userRow.memberRowV9 > button{
  margin:0 10px 10px 0;
}
.userRow.memberRowV9 > .userHint{
  display:inline-block;
  margin:8px 18px 8px 0;
  max-width:520px;
  vertical-align:middle;
}
.passwordResetRequestItem .requestItemActions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:end;
}
@media(max-width:800px){
  .memberRowHeaderV9{flex-direction:column;}
  .memberBadgesV9{justify-content:flex-start;}
  .userRow.memberRowV9 > label{width:100%;margin-right:0;}
  .userRow.memberRowV9 > button{width:100%;margin-right:0;}
}

/* === GTRIB V9.1.2 · mejoras estéticas solicitadas === */
body{background:#f3f6ef;}
main#appContainer{max-width:1680px;}
.appHeader{
  min-height:250px;
  padding:34px 58px 36px;
  align-items:center;
  border-radius:0;
  position:relative;
}
.headerText h1{font-size:34px;margin-bottom:18px;}
.headerText > p:not(.eyebrow){display:none;}
.headerLogoBox{width:320px;flex:0 0 320px;display:flex;flex-direction:column;align-items:center;}
.eventLogo{
  width:190px !important;
  height:150px !important;
  max-width:220px !important;
  max-height:170px !important;
  object-fit:contain;
  margin-bottom:18px !important;
}
.headerRoleLabel{letter-spacing:.22em !important;}
.headerRoleValue{
  background:#fff;
  color:#111827 !important;
  border-radius:20px;
  min-width:300px;
  min-height:84px;
  padding:18px 22px;
  display:flex !important;
  align-items:center;
  justify-content:center;
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.16em !important;
  line-height:1.35;
  box-shadow:0 14px 34px rgba(15,23,42,.08);
}
.headerActions .pwaInstallBtn,
#kioskToggle{display:none !important;}
.headerActions{gap:16px;flex-wrap:wrap;}
.headerActions .connection,
#logoutBtn{min-width:190px;}

/* Inicio: solo accesos por bloques y solicitudes pendientes. */
body.page-inicio #pageIntro,
body.page-inicio #statsPanel,
body.page-inicio #tribuneDashboard,
body.page-inicio #mediaStatsPanel{display:none !important;}
body.page-inicio #homeDashboardV905{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);
  gap:22px;
  align-items:start;
  margin-bottom:18px;
}
.homeV905Column{
  border-radius:24px;
  padding:24px;
  min-height:250px;
  box-shadow:0 14px 36px rgba(15,23,42,.06);
}
.homeV905Column.accountColumn{border-left:6px solid #2563eb;}
.homeV905Column.eventColumn{border-left:6px solid #16a34a;}
.homeV905Column.appColumn{
  grid-column:1 / -1;
  min-height:0;
  border-left:6px solid #4f46e5;
}
.homeModuleGrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;}
.homeModuleCard{
  min-height:118px;
  border-radius:18px;
  padding:18px;
  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.homeModuleCard:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(15,23,42,.10);border-color:#cbd5e1;}
.homeModuleCard span{font-size:1.65rem;}
.homeModuleCard strong{font-size:1.08rem;}
#homeLogisticsNotice{margin-top:18px;border-left:6px solid #991b1b;}
#homeLogisticsNotice .requestCounters{grid-template-columns:repeat(3,minmax(0,1fr));}
#homeLogisticsNotice .requestCounter:nth-child(n+4){display:none !important;}

/* Listado/importación: quitar el bloque superior y acercar filtros/contenido. */
body.page-listado #pageIntro,
body.page-importar #pageIntro{display:none !important;}
body.page-listado main#appContainer,
body.page-importar main#appContainer{padding-top:16px;}
body.page-listado #filtersPanel,
body.page-importar #setupPanel{margin-top:0;}
body.page-listado #filtersPanel{padding:16px;}
body.page-listado #filtersPanel .sectionTitle{margin-bottom:8px;}
body.page-listado #tableWrap{max-height:70vh;}
body.page-importar #setupPanel{padding-top:18px;}

/* Menú por categorías más compacto y legible. */
.appNav{align-items:stretch;gap:8px;}
.navGroupLabel{display:flex;align-items:center;min-height:38px;margin:0 4px 0 10px;}
.appNav a{display:flex;align-items:center;justify-content:center;min-height:38px;}

/* Ficha de miembros: que no vuelva a comprimirse. */
.userRow.memberRowV9{display:block !important;}
.userRow.memberRowV9 > label{width:min(100%, 360px);}
.userRow.memberRowV9.ownProfileRowV912{border-left-color:#2563eb;}

@media(max-width:1100px){
  .appHeader{padding:30px 28px;}
  .headerLogoBox{width:260px;flex-basis:260px;}
  .headerRoleValue{min-width:250px;}
  body.page-inicio #homeDashboardV905{grid-template-columns:1fr;}
  .homeV905Column.appColumn{grid-column:auto;}
}
@media(max-width:720px){
  .appHeader{min-height:auto;display:block;padding:28px 22px;}
  .headerLogoBox{width:100%;margin-top:18px;align-items:flex-start;}
  .headerRoleValue{min-width:0;width:100%;}
  .eventLogo{width:150px !important;height:120px !important;margin-left:0 !important;}
  .headerActions .connection,#logoutBtn{width:100%;min-width:0;}
  #homeLogisticsNotice .requestCounters{grid-template-columns:1fr;}
}
