@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@500;600;700;800&family=Inter:wght@400;500;600;700&display=swap');

:root {
  /* Paleta premium de GigMap: morado, violeta, grafito y brillo elegante */
  --bg: #f6f3ff;
  --bg-2: #eef3ff;
  --surface: rgba(255, 255, 255, 0.9);
  --surface-strong: #ffffff;
  --surface-2: #f3f0fd;
  --line: #e9e1fb;
  --text: #171329;
  --text-dim: #625b7c;
  --primary: #5a2ec7;
  --primary-hover: #4c25a8;
  --primary-soft: rgba(90, 46, 199, 0.12);
  --primary-marca: #5a2ec7;
  --ink: #101423;
  --green: #1aa67d;
  --coral: #ea5c53;
  --teal: #1c93a0;
  --brass: #d19f35;
  --purple-glow: rgba(90, 46, 199, 0.18);
  --radius: 12px;
  --radius-lg: 18px;
  --sombra: 0 10px 28px rgba(19, 15, 30, 0.08);
  --sombra-flotante: 0 18px 38px rgba(69, 40, 143, 0.2);
  --font-display: "Poppins", "Inter", -apple-system, sans-serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* ------------------------------------------------------------------ */
/* Modo oscuro: mismas variables, paleta distinta. Se activa poniendo   */
/* data-tema="oscuro" en <html> (ver el botón de la barra superior y     */
/* el script de /js/main.js que recuerda la preferencia).               */
/* ------------------------------------------------------------------ */
html[data-tema="oscuro"] {
  --bg: #12101f;
  --bg-2: #171426;
  --surface: #1a162d;
  --surface-strong: #201b38;
  --surface-2: #221d3a;
  --line: rgba(184, 167, 255, 0.16);
  --text: #f3efff;
  --text-dim: #b4a9d4;
  --primary: #b49cff;
  --primary-hover: #c9b7ff;
  --primary-soft: rgba(180, 156, 255, 0.16);
  --primary-marca: #d7c8ff;
  --green: #49d09d;
  --coral: #ff8d7d;
  --teal: #63d4d4;
  --brass: #f2c269;
  --sombra: 0 1px 2px rgba(0,0,0,0.42), 0 14px 28px rgba(0,0,0,0.28);
  --sombra-flotante: 0 16px 32px rgba(0,0,0,0.45);
}

/* Pasteles pensados para fondo claro: en oscuro necesitan su propia versión */
html[data-tema="oscuro"] body {
  background:
    radial-gradient(circle at top left, rgba(160, 132, 234, 0.16), transparent 28%),
    radial-gradient(circle at top right, rgba(76, 194, 167, 0.1), transparent 24%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
  color: var(--text);
}
html[data-tema="oscuro"] body,
html[data-tema="oscuro"] h1,
html[data-tema="oscuro"] h2,
html[data-tema="oscuro"] h3,
html[data-tema="oscuro"] h4,
html[data-tema="oscuro"] p,
html[data-tema="oscuro"] span,
html[data-tema="oscuro"] a,
html[data-tema="oscuro"] li,
html[data-tema="oscuro"] label,
html[data-tema="oscuro"] input,
html[data-tema="oscuro"] textarea,
html[data-tema="oscuro"] select,
html[data-tema="oscuro"] button {
  color: var(--text);
}
html[data-tema="oscuro"] .hero p,
html[data-tema="oscuro"] .role-card p,
html[data-tema="oscuro"] .hero-stat span,
html[data-tema="oscuro"] .footer,
html[data-tema="oscuro"] .hint,
html[data-tema="oscuro"] .card-form label,
html[data-tema="oscuro"] .muro-stats,
html[data-tema="oscuro"] .notificacion-texto time {
  color: var(--text-dim);
}
html[data-tema="oscuro"] .topbar {
  background: rgba(19, 16, 37, 0.82);
  border-bottom-color: rgba(172, 158, 203, 0.18);
}
html[data-tema="oscuro"] .topbar nav a {
  color: var(--text-dim);
}
html[data-tema="oscuro"] .topbar nav a.btn-cta {
  color: #fff;
}
html[data-tema="oscuro"] .premium-hero,
html[data-tema="oscuro"] .role-card,
html[data-tema="oscuro"] .hero-stat,
html[data-tema="oscuro"] .card-form,
html[data-tema="oscuro"] .sidebar-fb,
html[data-tema="oscuro"] .muro-eventos-sidebar,
html[data-tema="oscuro"] .publicacion,
html[data-tema="oscuro"] .chat-mensajes,
html[data-tema="oscuro"] .mensaje-otro,
html[data-tema="oscuro"] .panel-seccion,
html[data-tema="oscuro"] .panel-header,
html[data-tema="oscuro"] .fechas-gira,
html[data-tema="oscuro"] .fecha-gira-fila,
html[data-tema="oscuro"] .fecha-gira-fila-ubicacion,
html[data-tema="oscuro"] .mapa-selector,
html[data-tema="oscuro"] .lista-eventos li,
html[data-tema="oscuro"] .muro-cabecera,
html[data-tema="oscuro"] .muro-eventos,
html[data-tema="oscuro"] .muro-eventos-sidebar {
  background: linear-gradient(180deg, rgba(32, 27, 49, 0.92), rgba(21, 18, 34, 0.98));
  border-color: rgba(184, 167, 255, 0.16);
  box-shadow: var(--sombra);
}
html[data-tema="oscuro"] .btn-secondary {
  background: linear-gradient(180deg, rgba(35, 30, 56, 0.96), rgba(22, 18, 37, 0.96));
  color: var(--text);
  border-color: rgba(184, 167, 255, 0.16);
  box-shadow: 0 8px 16px rgba(0,0,0,0.18), inset 0 1px 0 rgba(255,255,255,0.04);
}
html[data-tema="oscuro"] input,
html[data-tema="oscuro"] textarea,
html[data-tema="oscuro"] select {
  background: rgba(18, 15, 29, 0.88);
  color: var(--text);
  border-color: var(--line);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);
}
html[data-tema="oscuro"] .panel-seccion::before,
html[data-tema="oscuro"] .lista-eventos li {
  border-left-color: rgba(180, 156, 255, 0.8);
}
html[data-tema="oscuro"] .muro-menu-desplegable,
html[data-tema="oscuro"] .muro-menu-boton,
html[data-tema="oscuro"] .enlace-social,
html[data-tema="oscuro"] .muro-eventos,
html[data-tema="oscuro"] .muro-eventos-sidebar {
  background: linear-gradient(180deg, rgba(34, 28, 52, 0.96), rgba(18, 15, 29, 0.98));
  border-color: rgba(184, 167, 255, 0.16);
}
html[data-tema="oscuro"] .badge-usuario { background: #163a3a; }
html[data-tema="oscuro"] .badge-grupo { background: #3a2c12; }
html[data-tema="oscuro"] .badge-local { background: #3a1620; }
html[data-tema="oscuro"] .badge-bloqueado { background: #3a1620; color: #ff9db3; }
html[data-tema="oscuro"] .alert-error { background: #3a1620; color: #ff9db3; }
html[data-tema="oscuro"] .alert-ok { background: #123522; color: #7be3ab; }
html[data-tema="oscuro"] .aviso-dev { background: #2b2312; }
html[data-tema="oscuro"] .btn-danger:hover { background: #d85a41; }
html[data-tema="oscuro"] .muro-cabecera {
  background: linear-gradient(180deg, rgba(18, 16, 31, 0.96), rgba(25, 22, 38, 0.98));
  border-color: rgba(171, 146, 255, 0.18);
  box-shadow: 0 20px 42px rgba(0, 0, 0, 0.28);
}
html[data-tema="oscuro"] .muro-identity-bar .account-eyebrow,
html[data-tema="oscuro"] .muro-identity-bar .muro-identity-pill,
html[data-tema="oscuro"] .muro-identity-bar h1,
html[data-tema="oscuro"] .muro-identity-bar h2,
html[data-tema="oscuro"] .muro-identity-bar p,
html[data-tema="oscuro"] .muro-identity-bar strong,
html[data-tema="oscuro"] .muro-identity-bar span {
  color: var(--text);
}
html[data-tema="oscuro"] button.publicacion-menu-item-peligro:hover { background: #3a1620 !important; }

/* Transición suave al cambiar de tema, sin animar cada elemento suelto */
body, .topbar, .sidebar-fb, .bottom-nav, .card-form, .muro-cabecera,
.publicacion, .lista-eventos li, .chat-mensajes, .mensaje-otro {
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}


* { box-sizing: border-box; }

html { overflow-x: hidden; }
body {
  margin: 0;
  overflow-x: hidden;
  background:
    radial-gradient(circle at top left, rgba(119, 87, 220, 0.12), transparent 28%),
    radial-gradient(circle at top right, rgba(26, 166, 125, 0.08), transparent 24%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
  color: var(--text);
  font-family: var(--font-body);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3 { font-family: var(--font-display); font-weight: 700; letter-spacing: -0.01em; color: var(--text); }
h2 { display: flex; align-items: center; gap: 10px; }

/* ------------------------------------------------------------------ */
/* Barra superior fija                                                  */
/* ------------------------------------------------------------------ */
.topbar {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
  height: 62px;
  background: rgba(255, 255, 255, 0.76);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(92, 70, 156, 0.08);
  box-shadow: 0 8px 24px rgba(25, 20, 40, 0.04);
}
.logo { display: flex; align-items: center; }
.logo-img { height: 38px; width: auto; display: block; }
.logo:hover { text-decoration: none; }
.logo-text-fallback { display: inline-flex; align-items: center; font-weight: 800; font-size: 1.2rem; letter-spacing: -0.02em; color: var(--text); white-space: nowrap; }

/* El logo nocturno solo sustituye al logo base cuando está activo el tema oscuro. */
html[data-tema="oscuro"] .logo-img,
html[data-tema="oscuro"] .hero-logo-img,
html[data-tema="oscuro"] .auth-logo-img {
  content: url('/img/gigmap_logo_noche.png');
}
.topbar-right { display: flex; align-items: center; gap: 10px; }
.fechas-gira { border: 1px solid rgba(90, 46, 199, 0.12); border-radius: 18px; margin: 12px 0; padding: 14px; background: linear-gradient(180deg, rgba(255,255,255,0.7), rgba(243,240,253,0.82)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.46); }
.fechas-gira legend { font-weight: 700; padding: 0 5px; }
.fechas-gira-lista { display: grid; gap: 12px; margin-bottom: 10px; }
.fecha-gira-fila {
  display: grid;
  grid-template-columns: minmax(190px, 1fr) auto minmax(130px, 0.8fr) auto;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.8), rgba(243,240,253,0.88));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.58);
}
.fecha-gira-cabecera { grid-column: 1 / -1; display: flex; justify-content: center; align-items: center; gap: 10px; width: 100%; border: 0; background: transparent; color: inherit; cursor: pointer; font: inherit; }
.fecha-gira-cabecera .fecha-gira-chevron { transition: transform 160ms ease; }
.fecha-gira-fila-contraida .fecha-gira-chevron { transform: rotate(-90deg); }
.fecha-gira-comprobacion { text-align: center; justify-self: center; }
.fecha-gira-fila > label { min-width: 0; }
.fecha-gira-fila > label input[type="datetime-local"] { width: 100%; }
.fecha-gira-calendario-toggle { align-self: end; white-space: nowrap; }
.fecha-gira-comprobacion { align-self: end; min-height: 1.4em; font-size: 0.85rem; font-weight: 700; }
.fecha-gira-comprobacion-disponible { color: #18864b; }
.fecha-gira-comprobacion-pendiente { color: #c58a00; }
.fecha-gira-comprobacion-ocupado,
.fecha-gira-comprobacion-error { color: #c73535; }
.boton-quitar-fecha { align-self: end; font-size: 1.25rem; line-height: 1; padding: 5px 8px; }
.fecha-gira-calendario { grid-column: 1 / -1; }
@media (max-width: 720px) {
  .fecha-gira-fila { grid-template-columns: 1fr auto; }
  .fecha-gira-comprobacion { grid-column: 1 / 2; }
  .boton-quitar-fecha { grid-column: 2; grid-row: 1; }
  .fecha-gira-calendario { grid-column: 1 / -1; }
}
.fecha-gira-datos { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.fecha-gira-fila-contraida > :not(.fecha-gira-cabecera) { display: none; }
.fecha-gira-fila-contraida { padding-block: 10px; }
@media (max-width: 720px) { .fecha-gira-datos { grid-template-columns: 1fr; } }
html[data-tema="oscuro"] .fechas-gira,
html[data-tema="oscuro"] .fecha-gira-fila,
html[data-tema="oscuro"] .fecha-gira-fila-ubicacion {
  background: linear-gradient(180deg, rgba(28, 24, 51, 0.94), rgba(22, 18, 39, 0.96));
  border-color: rgba(172, 158, 203, 0.18);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
}
.fecha-gira-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-weight: 600;
}
.fecha-gira-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  align-items: end;
}
.fecha-gira-campo {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 86px;
}
.fecha-gira-campo-fecha {
  position: relative;
}
.fecha-gira-campo label,
.fecha-gira-campo .label-fija {
  font-size: 0.8rem;
  color: var(--text-dim);
  font-weight: 600;
}
.fecha-gira-campo input {
  width: 100%;
  cursor: pointer;
}
.fecha-gira-precio-row {
  display: flex;
  align-items: stretch;
  gap: 8px;
  width: 100%;
}
.fecha-gira-precio-row input {
  flex: 1;
  min-width: 0;
}
.fecha-gira-precio-flag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: 0;
  height: 42px;
  min-height: 42px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface-2);
  color: var(--text-dim);
  font-size: 0.8rem;
  white-space: nowrap;
}
.fecha-gira-celda button[disabled],
.fecha-gira-celda button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}
.calendario-celda-vacia { background: transparent; }
.fecha-gira-celda button {
  border: 0;
  background: transparent;
  width: 100%;
  height: 100%;
  color: inherit;
  border-radius: 8px;
}
.fecha-gira-fila-ubicacion {
  background: var(--surface);
  border: 1px solid var(--line);
}
.fecha-gira-extra { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fecha-gira-extra input { flex: 1 1 210px; }
.fecha-gira-calendario {
  display: none;
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  width: min(100%, 360px);
  z-index: 40;
  margin-top: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 8px;
  background: var(--surface);
  box-shadow: 0 18px 40px rgba(12, 10, 20, 0.2);
}
.fecha-gira-calendario.abierto { display: block; }
.fecha-gira-calendario-cabecera {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}
.fecha-gira-calendario-cabecera h5 {
  margin: 0;
  min-width: 120px;
  text-align: center;
  text-transform: capitalize;
}
.fecha-gira-calendario .calendario-tabla {
  box-shadow: none;
  margin-top: 0;
}
.fecha-gira-boton-calendario {
  width: 100%;
  justify-content: center;
}
.fecha-gira-flags {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
}
.fecha-gira-flags label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
.badge-borrador { background: #6b5c2b; color: #fff; }
.topbar nav { display: flex; align-items: center; gap: 6px; }
.topbar nav a {
  display: inline-flex; align-items: center; gap: 8px;
  color: var(--text-dim); font-weight: 600; font-size: 0.9rem; padding: 8px 12px; border-radius: 8px;
}
.topbar nav a:hover { background: var(--surface-2); color: var(--primary); text-decoration: none; }
.topbar nav a.btn-cta {
  color: #fff;
}
.user-name { color: var(--text); font-weight: 600; font-size: 0.9rem; }

/* Nav del topbar en modo "solo iconos": sin texto, botones cuadrados */
.topbar-nav-iconos a,
.topbar-nav-iconos .btn-link {
  padding: 9px;
  border-radius: 10px;
  position: relative;
}
.icono-nav-grande { width: 24px; height: 24px; flex: none; color: currentColor; }

/* Interruptor de modo oscuro (visible en toda la app, con o sin sesión) */
.btn-tema {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  min-width: 34px;
  background: none;
  border: 1px solid var(--line);
  border-radius: 50%;
  cursor: pointer;
  padding: 0;
  color: var(--text-dim);
}
.btn-tema:hover { background: var(--surface-2); color: var(--text); }
.btn-tema-icono { display: none; width: 18px; height: 18px; }
.btn-tema-icono-luna { display: flex; }
html[data-tema="oscuro"] .btn-tema-icono-luna { display: none; }
html[data-tema="oscuro"] .btn-tema-icono-sol { display: flex; }

/* ------------------------------------------------------------------ */
/* Iconos (sustituyen a los antiguos emojis)                            */
/* ------------------------------------------------------------------ */
.icono { width: 20px; height: 20px; flex: none; }
.icono-nav { width: 19px; height: 19px; flex: none; color: currentColor; }
.icono-inline { width: 16px; height: 16px; flex: none; }
.icono-sm { width: 17px; height: 17px; flex: none; }
.icono-titulo { width: 22px; height: 22px; flex: none; color: var(--primary); }
.icono-clip { width: 19px; height: 19px; flex: none; }
.icono-role { width: 24px; height: 24px; flex: none; color: var(--primary); }
.role-card-icono {
  display: inline-flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; border-radius: 14px;
  background: var(--primary-soft); margin-bottom: 12px;
}
.role-card-iconos {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.role-card-iconos .icono-role {
  width: 25px;
  height: 25px;
}
.bottom-nav-icono { width: 21px; height: 21px; flex: none; }

/* ------------------------------------------------------------------ */
/* Estructura general: barra lateral + contenido                       */
/* ------------------------------------------------------------------ */
.app-shell {
  display: flex;
  align-items: flex-start;
  max-width: 1600px;
  margin: 0 auto;
  gap: 22px;
  padding: 18px 20px 40px;
}

.sidebar-fb {
  position: sticky;
  top: 82px;
  flex: 0 0 270px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 12px;
  background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(245,242,255,0.82));
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: 22px;
  box-shadow: 0 18px 30px rgba(30, 18, 52, 0.08);
  backdrop-filter: blur(10px);
}
.sidebar-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  color: var(--text);
  font-weight: 600;
  font-size: 0.95rem;
  border: 1px solid transparent;
}
.sidebar-item:hover {
  background: var(--surface-2);
  border-color: rgba(90, 46, 199, 0.08);
  text-decoration: none;
  transform: translateX(1px);
}
.sidebar-item.active,
.sidebar-item[aria-current="page"] {
  background: var(--primary-soft);
  border-color: rgba(90, 46, 199, 0.12);
  color: var(--primary);
  box-shadow: inset 0 0 0 1px rgba(90, 46, 199, 0.02);
}
.sidebar-perfil { font-weight: 700; }
.sidebar-perfil-nombre { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-salir-form { padding: 0; margin-top: 8px; border-top: 1px solid var(--line); padding-top: 10px; }
.sidebar-salir {
  width: 100%;
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
  color: var(--text);
  font-family: var(--font-body);
}

/* Botón hamburguesa (solo visible en móvil) */
.topbar-left { display: flex; align-items: center; gap: 8px; }
.btn-hamburguesa {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 4px;
  width: 34px;
  height: 34px;
  min-width: 34px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  border-radius: 6px;
}
.btn-hamburguesa:hover { background: var(--surface-2); }
.btn-hamburguesa span { display: block; width: 20px; height: 2px; background: var(--text); border-radius: 2px; }

/* Fondo oscuro tras el panel lateral cuando está abierto en móvil */
.sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.45);
  z-index: 150;
  transition: opacity 0.22s ease;
  opacity: 0;
  pointer-events: none;
}
.sidebar-overlay.overlay-visible { 
  display: block;
  opacity: 1;
  pointer-events: auto;
}

/* Barra de navegación inferior (solo móvil) */
.bottom-nav { display: none; }
.bottom-nav-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  font-size: 0.66rem;
  color: var(--text-dim);
  font-weight: 700;
  padding: 6px 4px;
  flex: 1;
  text-align: center;
}
.bottom-nav-item:hover { text-decoration: none; color: var(--primary); }
.bottom-nav-avatar { width: 22px; height: 22px; min-width: 22px; font-size: 0.7rem; border: none; }

.container { flex: 1; min-width: 0; max-width: 1280px; margin: 0 auto; padding: 24px 18px 80px; }
.container.con-sidebar-main { margin: 0; max-width: 1280px; }

/* ------------------------------------------------------------------ */
/* Avatares circulares                                                  */
/* ------------------------------------------------------------------ */
.avatar-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  min-width: 40px;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-weight: 700;
  font-size: 1rem;
  text-transform: uppercase;
}
.avatar-sm { width: 32px; height: 32px; min-width: 32px; font-size: 0.85rem; }
.avatar-lg { width: 72px; height: 72px; min-width: 72px; font-size: 1.6rem; border: 4px solid var(--surface); }
.avatar-xl {
  width: 128px; height: 128px; min-width: 128px; font-size: 2.6rem;
  border: 4px solid var(--surface);
  box-shadow: var(--sombra);
}
/* Cuando el avatar es una foto real en vez de iniciales */
.avatar-img { object-fit: cover; background: var(--surface-2); }

/* Ocultar visualmente un <input type="file"> mientras dejamos su
   disparador (icono/botón/label) accesible y clicable */
.input-oculto {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* Texto disponible para lectores de pantalla sin ocupar espacio visual. */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Botones
   Nota: envolvemos "button[type=submit]" en :where() para que su
   especificidad sea nula. Así, cualquier botón con una clase concreta
   (.btn-secondary, .btn-danger, .btn-interaccion...) manda siempre sobre
   el estilo "por defecto" de botón morado, sin depender del orden en el
   que aparezcan las reglas en este archivo. */
.btn-cta, .btn-secondary, .btn-danger, :where(button[type="submit"]) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-family: var(--font-body);
  border: none;
  border-radius: 12px;
  padding: 10px 18px;
  font-size: 0.92rem;
  cursor: pointer;
  font-weight: 700;
  letter-spacing: 0.01em;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, border-color 0.15s ease, filter 0.15s ease;
}
.btn-cta, :where(button[type="submit"]) {
  background: linear-gradient(135deg, var(--primary) 0%, #7b56e7 100%);
  color: #fff;
  box-shadow: 0 14px 24px rgba(90, 46, 199, 0.25), inset 0 1px 0 rgba(255,255,255,0.25);
}
.btn-cta:hover, :where(button[type="submit"]:hover) {
  background: linear-gradient(135deg, var(--primary-hover) 0%, #6947d2 100%);
  text-decoration: none;
  transform: translateY(-1px);
  filter: saturate(1.08);
}
.btn-cta:active, :where(button[type="submit"]:active) { transform: translateY(0); }
.btn-secondary {
  background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(245,242,255,0.85));
  border: 1px solid rgba(90, 46, 199, 0.12);
  color: var(--text);
  box-shadow: 0 8px 16px rgba(19, 15, 30, 0.05), inset 0 1px 0 rgba(255,255,255,0.7);
}
.btn-secondary:hover { background: linear-gradient(180deg, rgba(255,255,255,1), rgba(243,240,253,0.94)); border-color: rgba(90, 46, 199, 0.18); text-decoration: none; }
.btn-cta:disabled,
.btn-secondary:disabled {
  cursor: not-allowed;
  opacity: 0.58;
  box-shadow: none;
  transform: none;
}
.btn-danger { background: var(--coral); color: #fff; }
.btn-danger:hover { background: #c8452f; }
.btn-link {
  display: inline-flex; align-items: center; gap: 6px;
  background: none; border: none; color: var(--text-dim); cursor: pointer; font-size: 0.9rem; font-weight: 600;
}
.btn-link:hover { color: var(--primary); }
.inline-form { display: inline; }

/* ------------------------------------------------------------------ */
/* Hero / landing (visitante sin sesión)                                */
/* ------------------------------------------------------------------ */
.hero { text-align: center; padding: 72px 20px 40px; max-width: 860px; margin: 0 auto; }
.premium-hero {
  position: relative;
  background: linear-gradient(180deg, rgba(255,255,255,0.8), rgba(245,242,255,0.72));
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-radius: 30px;
  box-shadow: 0 26px 44px rgba(41, 28, 72, 0.08), inset 0 1px 0 rgba(255,255,255,0.7);
  backdrop-filter: blur(10px);
  padding: 34px 28px 24px;
}
.hero-logo-img {
  display: block;
  height: 84px;
  width: auto;
  margin: 0 auto 14px;
}
.hero h1 {
  margin: 0 auto 18px;
  font-size: clamp(2.1rem, 5vw, 4rem);
  line-height: 1.05;
  letter-spacing: -0.04em;
  max-width: 760px;
}
.hero p { color: var(--text-dim); max-width: 620px; margin: 0 auto 28px; font-size: 1.08rem; }
.hero-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

.hero-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 28px;
  max-width: 680px;
  margin-left: auto;
  margin-right: auto;
}
.hero-stat {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px 12px;
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(243,240,253,0.82));
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: 16px;
  box-shadow: 0 12px 20px rgba(30, 18, 52, 0.04);
}
.hero-stat strong {
  font-size: 1.2rem;
  font-family: var(--font-display);
  color: var(--text);
}
.hero-stat span {
  color: var(--text-dim);
  font-size: 0.8rem;
}

.roles-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 18px;
  margin-top: 38px;
  max-width: 980px;
  margin-left: auto;
  margin-right: auto;
}
.role-card {
  background: linear-gradient(180deg, rgba(255,255,255,0.84), rgba(246,243,255,0.8));
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: 22px;
  padding: 20px 18px 18px;
  box-shadow: 0 18px 28px rgba(32, 22, 56, 0.06);
  transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
.role-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--sombra-flotante);
  border-color: rgba(90, 46, 199, 0.14);
}
.featured-role {
  background: linear-gradient(180deg, rgba(90,46,199,0.04), rgba(122,94,234,0.08));
  border-color: rgba(90, 46, 199, 0.2);
}
.role-card h3 { margin: 0 0 8px; font-size: 1.05rem; }
.role-card p { color: var(--text-dim); font-size: 0.9rem; margin: 0; }

/* ------------------------------------------------------------------ */
/* Formularios                                                          */
/* ------------------------------------------------------------------ */
.form-page { max-width: 480px; margin: 0 auto; }
.account-center-shell,
.account-setting-shell {
  max-width: 980px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.account-setting-body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.account-setting-intro {
  margin: 0;
}
.account-setting-form {
  margin: 0;
}
.account-editor-shell {
  max-width: 860px;
}
.account-editor-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.account-setting-copy-block {
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: rgba(255,255,255,0.64);
  border: 1px solid rgba(90,46,199,0.08);
  border-radius: var(--radius-lg);
  padding: 22px;
  box-shadow: var(--sombra);
}
.account-hero-panel,
.account-setting-header {
  margin: 0;
  padding: 22px 24px;
  background: linear-gradient(135deg, rgba(90,46,199,0.06), rgba(255,255,255,0.86));
  border: 1px solid rgba(90, 46, 199, 0.12);
}
.account-hero,
.account-setting-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.account-hero h2,
.account-setting-header h2 {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.account-eyebrow {
  margin: 0 0 8px;
  font-size: 0.73rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary);
}
.account-hero-badge {
  display: flex;
  align-items: center;
}
.account-center-subtitle {
  margin: -4px 0 0;
}
.account-summary-grid,
.account-panel-grid {
  display: grid;
  gap: 18px;
}
.account-summary-grid {
  grid-template-columns: 1fr;
}
.account-panel-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.account-summary-card,
.account-panel {
  margin: 0;
  position: relative;
  overflow: hidden;
}
.account-summary-card::before,
.account-panel::before {
  content: "";
  position: absolute;
  inset: 0 auto auto 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--primary), rgba(122, 94, 234, 0.35));
}
.account-summary-card-featured {
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(245,242,255,0.9));
}
.account-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.account-card-header h3 {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.account-panel-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.account-panel-danger {
  border-color: rgba(220, 81, 93, 0.18);
}
.account-panel-danger::before {
  background: linear-gradient(90deg, #d94b59, rgba(217, 75, 89, 0.2));
}
.card-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.84), rgba(245,242,255,0.92));
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-radius: 22px;
  padding: 22px;
  margin: 16px 0;
  box-shadow: 0 18px 38px rgba(76, 56, 132, 0.08), inset 0 1px 0 rgba(255,255,255,0.72);
  backdrop-filter: blur(8px);
}
.card-form label { display: flex; flex-direction: column; gap: 6px; font-size: 0.88rem; color: var(--text-dim); font-weight: 600; }
.account-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.account-hero h2 {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.account-eyebrow {
  margin: 0 0 8px;
  font-size: 0.73rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary);
}
.account-hero-badge {
  display: flex;
  align-items: center;
}
.account-center-subtitle {
  margin: -4px 0 0;
}
.account-summary-grid,
.account-panel-grid {
  display: grid;
  gap: 18px;
}
.account-summary-grid {
  grid-template-columns: 1fr;
}
.account-panel-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.account-summary-card,
.account-panel {
  margin: 0;
  position: relative;
  overflow: hidden;
}
.account-summary-card::before,
.account-panel::before {
  content: "";
  position: absolute;
  inset: 0 auto auto 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--primary), rgba(122, 94, 234, 0.35));
}
.account-summary-card-featured {
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(245,242,255,0.9));
}
.account-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.account-card-header h3 {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.account-panel-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.account-panel-danger {
  border-color: rgba(220, 81, 93, 0.18);
}
.account-panel-danger::before {
  background: linear-gradient(90deg, #d94b59, rgba(217, 75, 89, 0.2));
}
.card-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.84), rgba(245,242,255,0.92));
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-radius: 22px;
  padding: 22px;
  margin: 16px 0;
  box-shadow: 0 18px 38px rgba(76, 56, 132, 0.08), inset 0 1px 0 rgba(255,255,255,0.72);
  backdrop-filter: blur(8px);
}
.card-form label { display: flex; flex-direction: column; gap: 6px; font-size: 0.88rem; color: var(--text-dim); font-weight: 600; }
.card-form input, .card-form select, .card-form textarea {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px 12px;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.95rem;
}
.card-form input:focus, .card-form select:focus, .card-form textarea:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px var(--primary-soft);
}
.separador-form { border: none; border-top: 1px solid var(--line); margin: 4px 0; }
.alert-error { background: #fde2e8; border: 1px solid var(--coral); color: #9c1541; padding: 10px 14px; border-radius: 8px; font-size: 0.9rem; }
.muro-bloqueado-aviso { display: flex; align-items: center; gap: 8px; max-width: 420px; margin-top: 8px; }
.alert-warning { background: #fff4d6; border: 1px solid #d9a64d; color: #855c02; padding: 10px 14px; border-radius: 8px; font-size: 0.9rem; }
.alert-ok { background: #e3f6e1; border: 1px solid var(--green); color: #2c7a1f; padding: 10px 14px; border-radius: 8px; font-size: 0.9rem; }
.hint { color: var(--text-dim); font-size: 0.85rem; }
.registro-generar-id { align-self: flex-start; padding: 0; border: 0; background: none; color: var(--primary); font: inherit; font-weight: 600; cursor: pointer; text-decoration: underline; }
.registro-estado { display: block; min-height: 1.2em; margin-top: 4px; font-size: 0.82rem; font-weight: 600; }
.registro-estado.disponible { color: #167845; }
.registro-estado.no-disponible { color: #b42338; }
.registro-seguridad { margin: -4px 0 4px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); font-size: 0.85rem; }
.registro-seguridad strong { display: block; margin-bottom: 6px; }
.registro-seguridad ul { margin: 0; padding: 0; list-style: none; }
.registro-seguridad li { color: var(--text-dim); margin: 3px 0; }
.registro-seguridad li::before { content: '○'; display: inline-block; width: 1.4em; }
.registro-seguridad li.cumplida { color: #167845; }
.registro-seguridad li.cumplida::before { content: '✓'; font-weight: 800; }
.avisos-en-vivo { position: fixed; right: 18px; bottom: 18px; z-index: 100; display: grid; gap: 10px; width: min(360px, calc(100vw - 36px)); }
.aviso-en-vivo { display: flex; align-items: center; gap: 10px; padding: 13px 14px; border-radius: 12px; background: var(--surface); color: var(--text); border: 1px solid var(--line); box-shadow: var(--sombra); font-weight: 600; animation: aviso-aparece .18s ease-out; }
.aviso-en-vivo:hover { text-decoration: none; background: var(--surface-2); }
.aviso-en-vivo-cerrar { margin-left: auto; border: 0; background: none; color: var(--text-dim); font-size: 1.35rem; cursor: pointer; line-height: 1; }
@keyframes aviso-aparece { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.checkbox-linea { flex-direction: row !important; align-items: center; gap: 8px !important; font-weight: 500 !important; }
.checkbox-linea input[type="checkbox"] { width: auto; }

.check-label { flex-direction: row !important; align-items: center; gap: 10px !important; color: var(--text) !important; }
.check-label input { width: 18px; height: 18px; accent-color: var(--primary); }

/* ------------------------------------------------------------------ */
/* Selector de ubicación en mapa (Leaflet)                              */
/* ------------------------------------------------------------------ */
.mapa-selector {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(243,240,253,0.85));
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-radius: 16px;
  padding: 14px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.7);
}
.mapa-selector-etiqueta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text);
}
.mapa-selector-buscador { display: flex; gap: 8px; flex-wrap: wrap; }
.mapa-selector-busqueda {
  flex: 1;
  min-width: 180px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px 12px;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.9rem;
}
.mapa-selector-mapa {
  width: 100%;
  height: 260px;
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--line);
  z-index: 0; /* que el mapa de Leaflet no tape menús/desplegables de la página */
}
.mapa-selector-estado {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin: 0;
}

/* ------------------------------------------------------------------ */
/* Calendario de disponibilidad del artista                             */
/* ------------------------------------------------------------------ */
.calendario-cabecera {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 12px 0;
}
.calendario-cabecera h3 { margin: 0; font-family: var(--font-display); text-transform: capitalize; }

.calendario-leyenda { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; font-size: 0.85rem; color: var(--text-dim); }
.leyenda-item { display: flex; align-items: center; gap: 6px; }
.leyenda-punto { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.leyenda-disponible { background: var(--green); }
.leyenda-ocupado { background: var(--coral); }
.leyenda-pendiente { background: #d9a64d; }
.leyenda-no_disponible { background: var(--text-dim); }

.calendario-tabla { width: 100%; border-collapse: collapse; background: var(--surface); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--sombra); }
.calendario-tabla th {
  background: var(--surface-2);
  color: var(--text-dim);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 8px 4px;
}
.calendario-celda { border: 1px solid var(--line); text-align: center; padding: 0; height: 44px; }
.calendario-celda a,
.calendario-celda button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  color: var(--text);
  font-weight: 600;
  background: none;
  border: none;
  font-family: inherit;
  font-size: inherit;
  cursor: pointer;
}
.calendario-celda a:hover,
.calendario-celda button:hover { background: var(--surface-2); text-decoration: none; }
.calendario-celda-vacia { background: var(--surface-2); }
.calendario-celda-disponible { background: color-mix(in srgb, var(--green) 18%, transparent); }
.calendario-celda-ocupado { background: color-mix(in srgb, var(--coral) 18%, transparent); }
.calendario-celda-pendiente { background: color-mix(in srgb, #d9a64d 20%, transparent); }
.calendario-horas { display: block; margin-top: 3px; font-size: 0.65rem; line-height: 1.2; color: var(--text-muted, #6b6575); }
.calendario-celda-no_disponible { background: color-mix(in srgb, var(--text-dim) 16%, transparent); }
.calendario-celda-hoy a { text-decoration: underline; }
.calendario-celda-seleccionada { outline: 2px solid var(--primary); outline-offset: -2px; }
.calendario-celda-con-eventos a { color: var(--primary); font-weight: 700; flex-direction: column; gap: 1px; }
.calendario-punto-evento {
  display: block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--coral);
}

.calendario-editor-dia h3 { margin-top: 0; text-transform: capitalize; }

/* Mini calendario de solo lectura embebido en el muro público del artista */
.calendario-mini { margin: 10px 0; }
.calendario-mini .calendario-tabla { box-shadow: none; }
.calendario-mini-proximos { display: flex; flex-direction: column; gap: 4px; margin-top: 8px; font-size: 0.85rem; }

/* ------------------------------------------------------------------ */
/* Solicitudes de contratación                                          */
/* ------------------------------------------------------------------ */
.badge-solicitud-pendiente { background: #fdf1dc; color: var(--brass); }
.badge-solicitud-en_estudio { background: #dceefd; color: #1a5f9c; }
.badge-solicitud-rechazada,
.badge-solicitud-cancelada { background: #fde2e8; color: #9c1541; }
.badge-solicitud-contrato_generado { background: #dceefd; color: #1a5f9c; }
.badge-solicitud-contrato_conforme { background: #e6e6f5; color: #4a3f8c; }
.badge-solicitud-contrato_firmado { background: color-mix(in srgb, var(--green) 22%, white); color: #1c6b3f; }
.badge-solicitud-en_curso { background: color-mix(in srgb, var(--teal) 22%, white); color: #146868; }
.badge-solicitud-finalizada { background: #e6e6f5; color: #4a3f8c; }
.badge-solicitud-cerrada { background: var(--surface-2); color: var(--text-dim); }

/* Bolitas de progreso de una solicitud (pendiente -> en estudio ->
   contrato generado -> contrato conforme -> contrato firmado -> en curso
   -> finalizada -> cerrada) */
.solicitud-stepper {
  display: flex;
  align-items: flex-start;
  list-style: none;
  padding: 4px 0 10px;
  margin: 0 0 6px;
  overflow-x: auto;
}
.stepper-paso {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 84px;
  text-align: center;
  flex-shrink: 0;
}
.stepper-punto {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid var(--line);
  background: var(--surface);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stepper-check { width: 12px; height: 12px; }
.stepper-etiqueta { font-size: 0.72rem; color: var(--text-dim); line-height: 1.2; }

.stepper-paso-completado .stepper-punto { background: var(--primary); border-color: var(--primary); color: #fff; }
.stepper-paso-completado .stepper-etiqueta { color: var(--text); }
.stepper-paso-activo .stepper-punto { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-soft); }
.stepper-paso-activo .stepper-etiqueta { color: var(--primary); font-weight: 600; }
.stepper-paso-corte .stepper-punto { background: var(--coral); border-color: var(--coral); color: #fff; }
.stepper-paso-corte .stepper-etiqueta { color: var(--coral); font-weight: 600; }

.stepper-linea { flex: 1; height: 2px; background: var(--line); margin-top: 11px; min-width: 16px; }
.stepper-linea-completado { background: var(--primary); }
.stepper-linea-corte { background: var(--coral); }

.solicitud-rechazo-form,
.solicitud-cambios-form { margin: 4px 0 14px; }

/* Bloque del contrato digital dentro de la ficha de una solicitud (ver 4.2) */
.contrato-bloque h3 { display: flex; align-items: center; gap: 8px; margin-top: 0; }
/* Bloque de conformidad de pago tras finalizar (puntos 5 y 8) */
.pago-bloque h3 { display: flex; align-items: center; gap: 8px; margin-top: 0; }

/* Bloque de incidencias de una solicitud de contratación (punto 6) */
.incidencias-bloque h3 { display: flex; align-items: center; gap: 8px; margin-top: 0; }
.incidencia-item { padding: 10px 0; border-top: 1px solid var(--line); }
.incidencia-item:first-of-type { border-top: none; padding-top: 0; }
.incidencia-item p { margin: 3px 0; }
.solicitud-incidencia-form { margin: 4px 0 14px; }

/* ------------------------------------------------------------------ */
/* Valoraciones ("mapitas", puntos 4/10/11)                             */
/* ------------------------------------------------------------------ */

/* Widget de entrada (formulario "Valorar a X"): radios ocultos en orden
   5→1, volteados visualmente con row-reverse; marcar un valor colorea con
   el combinador ~ también los pines a su izquierda (los que quedan
   "después" en el DOM invertido), sin necesidad de JS. */
.mapitas-input {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
  gap: 4px;
  margin: 4px 0 10px;
}
.mapitas-input input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
.mapitas-input label {
  cursor: pointer;
  color: var(--line);
  width: 30px;
  height: 30px;
  transition: color 0.1s;
}
.icono-mapita { width: 100%; height: 100%; }
.mapitas-input input:checked ~ label,
.mapitas-input label:hover,
.mapitas-input label:hover ~ label {
  color: var(--primary);
}

/* Visualización de solo lectura (media en el perfil, y en cada reseña) */
.mapitas-display { display: inline-flex; align-items: center; gap: 2px; flex-wrap: wrap; }
.icono-mapita-display { width: 18px; height: 18px; flex: none; }
.mapita-llena { color: var(--primary); }
.mapita-vacia { color: var(--line); }
.mapitas-numero { font-size: 0.85rem; color: var(--text-dim); margin-left: 6px; font-weight: 600; }

/* Bloque de valoraciones en el perfil público */
.muro-valoraciones { max-width: 640px; margin: 0 auto 20px; }
.muro-valoraciones h3 { display: flex; align-items: center; gap: 8px; }
.valoraciones-resumen {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 16px 18px;
  box-shadow: var(--sombra);
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.lista-valoraciones { display: flex; flex-direction: column; gap: 10px; }
.valoracion-item {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 14px 16px;
  box-shadow: var(--sombra);
}
.valoracion-item-cabecera { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.valoracion-item-cabecera time { color: var(--text-dim); font-size: 0.78rem; margin-left: auto; }
.valoracion-item p { margin: 4px 0 0; }
.contrato-texto {
  white-space: pre-wrap;
  font-family: var(--font-body);
  font-size: 0.88rem;
  line-height: 1.6;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px 18px;
  max-height: 420px;
  overflow-y: auto;
  margin: 0 0 14px;
}

/* ------------------------------------------------------------------ */
/* Selector de fecha forzado por calendario (formulario de contratación) */
/* ------------------------------------------------------------------ */
.calendario-selector { margin-bottom: 6px; }
.calendario-selector-etiqueta { display: flex; align-items: center; gap: 6px; font-weight: 600; margin: 0 0 4px; }
.calendario-selector-cabecera h4 { margin: 0; font-family: var(--font-display); text-transform: capitalize; min-width: 160px; text-align: center; }
.calendario-selector-cuerpo .calendario-tabla { margin-top: 6px; }
.calendario-celda-bloqueada { color: var(--text-dim); text-decoration: line-through; opacity: 0.6; cursor: not-allowed; }
.leyenda-seleccionada { background: var(--primary); }
.calendario-selector-estado { margin-top: 8px; }

.lista-solicitudes { list-style: none; padding: 0; margin: 0 0 20px; display: flex; flex-direction: column; gap: 8px; }
.tarjeta-solicitud { background: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--sombra); }
.tarjeta-solicitud-link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  color: var(--text);
}
.tarjeta-solicitud-link:hover { text-decoration: none; background: var(--surface-2); border-radius: var(--radius-lg); }
.tarjeta-solicitud-info { display: flex; flex-direction: column; gap: 2px; flex: 1; }

.btn-solicitar-contratacion { display: inline-flex; align-items: center; gap: 6px; }

.solicitud-datos p { margin: 4px 0; }
.solicitud-acciones { display: flex; gap: 10px; flex-wrap: wrap; margin: 14px 0; }
.mensaje-sistema {
  text-align: center;
  font-size: 0.82rem;
  color: var(--text-dim);
  background: var(--surface-2);
  border-radius: 20px;
  padding: 6px 14px;
  margin: 8px auto;
  max-width: fit-content;
}

/* ------------------------------------------------------------------ */
/* Papelera                                                              */
/* ------------------------------------------------------------------ */
.lista-papelera { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.tarjeta-papelera {
  background: var(--surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--sombra);
  padding: 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
}
.tarjeta-papelera-info { flex: 1; min-width: 200px; }
.tarjeta-papelera-contenido { margin: 0 0 4px; }
.tarjeta-papelera-acciones { display: flex; gap: 8px; flex-wrap: wrap; }

/* Tarjeta para activar/desactivar las notificaciones push del navegador */
.push-tarjeta {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 16px;
  margin: 0 0 18px;
  box-shadow: var(--sombra);
}
.push-tarjeta-icono {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--primary-soft);
  color: var(--primary);
}
.push-tarjeta-icono svg { width: 20px; height: 20px; }
.push-tarjeta-texto { flex: 1; min-width: 0; }
.push-tarjeta-texto strong { display: block; margin-bottom: 2px; }
.push-tarjeta-texto p { margin: 0; color: var(--text-dim); font-size: 0.86rem; }
.push-tarjeta-boton { flex-shrink: 0; }
.push-tarjeta[data-estado="activo"] .push-tarjeta-icono { background: var(--green); color: #fff; }
.push-tarjeta[data-estado="activo"] .push-tarjeta-boton { background: transparent; border-color: var(--coral); color: var(--coral); }
.push-tarjeta[data-estado="denegado"] .push-tarjeta-texto p,
.push-tarjeta[data-estado="no-soportado"] .push-tarjeta-texto p { color: var(--coral); }

@media (max-width: 560px) {
  .push-tarjeta { flex-wrap: wrap; }
  .push-tarjeta-boton { width: 100%; }
}

.linea-con-icono { display: flex; align-items: center; gap: 6px; }
.label-con-icono .label-texto-icono { display: inline-flex; align-items: center; gap: 8px; }

/* Auth: pantalla dividida tipo Facebook */
.auth-split {
  display: flex;
  align-items: center;
  gap: 48px;
  max-width: 980px;
  margin: 0 auto;
  padding: 40px 20px;
  flex-wrap: wrap;
}
.auth-split-brand { flex: 1 1 380px; }
.auth-logo-img { height: 84px; width: auto; max-width: 100%; margin-bottom: 18px; }
.auth-split-brand p { color: var(--text-dim); font-size: 1.15rem; max-width: 420px; }
.auth-split-form { flex: 1 1 380px; max-width: 400px; }
.campo-password { position: relative; display: block; }
.campo-password input { width: 100%; padding-right: 86px; }
.btn-visualizar-password { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); border: 0; background: transparent; color: var(--primary); font: inherit; font-size: 0.82rem; font-weight: 700; cursor: pointer; padding: 5px; }

/* ------------------------------------------------------------------ */
/* Badges por rol                                                       */
/* ------------------------------------------------------------------ */
.badge {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 4px 9px;
  border-radius: 999px;
  font-weight: 700;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.2);
}
.badge-administrador { background: var(--primary-soft); color: var(--primary); }
.badge-usuario { background: #e0f7f5; color: var(--teal); }
.badge-grupo { background: #fdf1dc; color: var(--brass); }
.badge-local { background: #fde4e9; color: var(--coral); }

/* Insignia de rol junto al nombre en la barra lateral: pegada a la
   derecha y más pequeña que el resto de insignias de la app */
.sidebar-badge {
  margin-left: auto;
  align-self: center;
  font-size: 0.6rem;
  padding: 2px 7px;
  flex: none;
}

/* ------------------------------------------------------------------ */
/* Feed / publicaciones                                                 */
/* ------------------------------------------------------------------ */
.discovery-hub {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 12px;
  margin: 10px 0 18px;
}
.discovery-card {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 92px;
  background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(246,242,255,0.92));
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: 20px;
  padding: 14px 16px;
  color: var(--text);
  box-shadow: 0 8px 18px rgba(90, 46, 199, 0.06);
  transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease, background 0.16s ease;
}
.discovery-card:hover {
  text-decoration: none;
  transform: translateY(-2px);
  border-color: rgba(90, 46, 199, 0.2);
  box-shadow: 0 14px 28px rgba(90, 46, 199, 0.12);
}
.discovery-card-activa {
  background: linear-gradient(135deg, rgba(90, 46, 199, 0.96) 0%, rgba(122, 94, 234, 0.96) 100%);
  border-color: rgba(150, 125, 245, 0.5);
  color: #ffffff;
  box-shadow: 0 14px 24px rgba(90, 46, 199, 0.28);
}
.discovery-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 14px;
  background: rgba(90, 46, 199, 0.08);
  color: var(--primary);
  flex: none;
  box-shadow: inset 0 0 0 1px rgba(90, 46, 199, 0.04);
}
.discovery-card-activa .discovery-icon {
  background: rgba(255, 255, 255, 0.14);
  color: #ffffff;
  box-shadow: none;
}
.discovery-copy {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.discovery-copy strong {
  font-size: 0.96rem;
  line-height: 1.2;
}
.discovery-copy small {
  color: var(--text-dim);
  font-size: 0.74rem;
}
.discovery-card-activa .discovery-copy small {
  color: rgba(255, 255, 255, 0.82);
}

html[data-tema="oscuro"] .discovery-card {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(196, 178, 255, 0.12);
  color: var(--text);
}
html[data-tema="oscuro"] .discovery-card-activa {
  background: linear-gradient(135deg, rgba(90, 46, 199, 0.95) 0%, rgba(122, 94, 234, 0.95) 100%);
  border-color: rgba(190, 170, 255, 0.5);
  color: #ffffff;
}
html[data-tema="oscuro"] .discovery-copy small {
  color: rgba(242, 239, 250, 0.72);
}
html[data-tema="oscuro"] .discovery-card-activa .discovery-copy small {
  color: rgba(255, 255, 255, 0.85);
}

.filtros-directorio { display: none; }
.filtro-activo { background: var(--primary-soft) !important; color: var(--primary) !important; }

.gigmap-feed-map-wrap {
  background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(244,240,255,0.96));
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: 30px;
  box-shadow: 0 20px 30px rgba(90, 46, 199, 0.08), 0 4px 10px rgba(15, 23, 42, 0.02);
  overflow: hidden;
  margin: 18px 0 22px;
  position: relative;
}
.gigmap-feed-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 22px 10px;
}
.gigmap-feed-header h3 {
  margin: 0;
  font-size: 1.12rem;
  letter-spacing: -0.02em;
  color: var(--text);
}
.gigmap-feed-header .hint {
  margin: 5px 0 0;
}
.gigmap-feed-map {
  height: min(68vh, 540px);
  min-height: 360px;
  width: 100%;
  max-width: 100%;
  background: linear-gradient(180deg, #edf7ff 0%, #f5f3ff 100%);
  border-top: 1px solid rgba(90,46,199,0.08);
  display: block;
  position: relative;
  overflow: hidden;
  contain: layout paint;
}
.gigmap-feed-map .leaflet-container {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  display: block;
  background: #dfeffd;
  border-radius: 0;
  overflow: hidden;
}
.gigmap-feed-map .leaflet-control-zoom {
  border: 0 !important;
  box-shadow: 0 12px 22px rgba(15, 23, 42, 0.12) !important;
  border-radius: 14px !important;
  overflow: hidden;
}
.gigmap-feed-map .leaflet-control-zoom a {
  background: rgba(255,255,255,0.95) !important;
  color: var(--text) !important;
  border-bottom-color: rgba(90,46,199,0.12) !important;
}
.gigmap-feed-map .leaflet-control-attribution {
  background: rgba(255,255,255,0.78) !important;
  border-radius: 10px 0 0 0;
  padding: 3px 8px;
  font-size: 0.68rem;
}
.gigmap-empty-state {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background: rgba(255,255,255,0.9);
  border: 1px solid rgba(90,46,199,0.12);
  padding: 10px 16px;
  border-radius: 999px;
  color: var(--text-dim);
  font-size: 0.8rem;
  backdrop-filter: blur(6px);
  box-shadow: 0 12px 24px rgba(90,46,199,0.08);
}
.gigmap-popup {
  min-width: 170px;
  font-size: 0.82rem;
  line-height: 1.5;
}
.gigmap-popup strong {
  display: block;
  margin-bottom: 2px;
  color: var(--text);
}
.gigmap-popup small,
.gigmap-popup span {
  color: var(--text-dim);
}
.gigmap-popup-leaflet.leaflet-popup-content-wrapper {
  background: linear-gradient(180deg, rgba(255,255,255,0.96), rgba(244,240,255,0.98));
  border: 1px solid rgba(90,46,199,0.12);
  border-radius: 16px;
  box-shadow: 0 20px 40px rgba(90,46,199,0.15);
  padding: 0;
}
.gigmap-popup-leaflet .leaflet-popup-content {
  margin: 0;
  padding: 0;
}
.gigmap-popup-luxury {
  font-size: 0.8rem;
  line-height: 1.4;
}
.gigmap-popup-imagen {
  display: block;
  width: 100%;
  height: 120px;
  overflow: hidden;
  border-radius: 16px 16px 0 0;
  margin-bottom: 0;
  background: var(--surface-2);
}
.gigmap-popup-imagen img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gigmap-popup-contenido {
  padding: 12px 12px;
}
.gigmap-popup-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 7px;
}
.gigmap-popup-header strong {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.3;
  color: var(--text);
  flex: 1;
}
.gigmap-popup-precio {
  display: inline-block;
  padding: 4px 7px;
  background: rgba(43, 182, 115, 0.12);
  color: #0d8d57;
  border-radius: 6px;
  font-weight: 700;
  font-size: 0.7rem;
  white-space: nowrap;
}
.gigmap-popup-fecha,
.gigmap-popup-lugar,
.gigmap-popup-desc {
  margin: 0 0 5px 0;
  color: var(--text-dim);
  font-size: 0.75rem;
}
.gigmap-popup-fecha,
.gigmap-popup-lugar {
  display: flex;
  align-items: center;
  gap: 4px;
}
.gigmap-popup-icon {
  font-size: 0.85rem;
}
.gigmap-popup-desc {
  line-height: 1.4;
  color: var(--text);
}
.gigmap-popup-acciones {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 9px;
  padding-top: 8px;
  border-top: 1px solid rgba(90,46,199,0.08);
}
.gigmap-popup-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 7px 10px;
  border-radius: 8px;
  font-size: 0.72rem;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  border: 0;
  transition: all 0.15s ease;
  text-align: center;
}
.gigmap-popup-detalle {
  background: var(--primary);
  color: white;
}
.gigmap-popup-detalle:hover {
  background: var(--primary-dark);
  transform: translateY(-1px);
}
.gigmap-popup-comprar,
.gigmap-popup-llegar {
  background: rgba(90,46,199,0.1);
  color: var(--primary);
}
.gigmap-popup-comprar:hover,
.gigmap-popup-llegar:hover {
  background: rgba(90,46,199,0.18);
  transform: translateY(-1px);
}

.mapa-cerca-bloque {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 12px;
  padding: 12px 14px 0;
}
.mapa-cerca-bloque label {
  flex: 1 1 190px;
  min-width: 0;
}
.lista-eventos-cerca {
  margin-top: 18px;
  padding: 24px 20px 8px;
  background: linear-gradient(180deg, rgba(255,255,255,0.72), rgba(246,241,255,0.88));
  border: 1px solid rgba(90,46,199,0.08);
  border-radius: 26px;
  box-shadow: 0 18px 30px rgba(90,46,199,0.06);
}
.lista-eventos-cerca > h3 {
  margin: 0 0 16px;
  font-size: 1.2rem;
  letter-spacing: -0.02em;
  color: var(--text);
}
.lista-eventos-cerca-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}
.tarjeta-cerca-item {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 14px;
  background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(244,240,255,0.96));
  border: 1px solid rgba(90,46,199,0.08);
  border-radius: 22px;
  box-shadow: 0 12px 22px rgba(15,23,42,0.04);
  transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
.tarjeta-cerca-item:hover {
  transform: translateY(-2px);
  border-color: rgba(90,46,199,0.16);
  box-shadow: 0 18px 30px rgba(90,46,199,0.08);
}
.tarjeta-cerca-imagen {
  display: block;
  border-radius: 16px;
  overflow: hidden;
  background: var(--surface-2);
  border: 1px solid rgba(90,46,199,0.08);
}
.tarjeta-cerca-imagen img {
  display: block;
  width: 100%;
  height: 154px;
  object-fit: cover;
}
.tarjeta-cerca-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.cerca-distancia {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(90,46,199,0.08);
  color: var(--primary);
  font-weight: 700;
  font-size: 0.72rem;
  letter-spacing: 0.03em;
}
.tarjeta-cerca-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.tarjeta-cerca-item h4 {
  margin: 0;
  font-size: 1.03rem;
  line-height: 1.35;
}
.tarjeta-cerca-item h4 a {
  color: var(--text);
}
.tarjeta-cerca-item h4 a:hover {
  color: var(--primary);
}
.tarjeta-cerca-item p {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.86rem;
  line-height: 1.5;
}
.tarjeta-cerca-fecha,
.tarjeta-cerca-lugar,
.tarjeta-cerca-precio {
  display: flex;
  align-items: center;
  gap: 7px;
}
.tarjeta-cerca-precio {
  width: fit-content;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(43, 182, 115, 0.12);
  color: #0d8d57;
  font-weight: 700;
}
.tarjeta-cerca-descripcion {
  max-width: 100%;
  color: var(--text);
  padding-top: 2px;
}
.tarjeta-cerca-acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: auto;
  padding-top: 2px;
}
.tarjeta-cerca-acciones a {
  flex: 1 1 120px;
  justify-content: center;
  min-height: 38px;
}
.btn-cerca-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
}

@media (max-width: 640px) {
  .gigmap-feed-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .lista-eventos-cerca {
    padding-left: 14px;
    padding-right: 14px;
  }
}

.chat-adjuntar-wrap {
  position: relative;
}
.chat-adjuntar-panel {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(90, 46, 199, 0.12);
  border-radius: 12px;
  padding: 8px;
  box-shadow: var(--sombra);
  z-index: 5;
}
.chat-adjuntar-panel[hidden] {
  display: none;
}
.chat-adjuntar-opcion {
  border: 0;
  background: var(--surface-2);
  color: var(--text);
  border-radius: 8px;
  padding: 8px 12px;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
.chat-adjuntar-opcion:hover {
  background: var(--primary-soft);
  color: var(--primary);
}

.chat-media {
  display: block;
  width: 100%;
  margin-top: 10px;
}
.chat-media a,
.chat-media-link a {
  color: var(--primary);
  word-break: break-word;
}
.chat-media-imagen img {
  display: block;
  max-width: 100%;
  max-height: 320px;
  border-radius: 12px;
  border: 1px solid rgba(90, 46, 199, 0.08);
  object-fit: cover;
}
.chat-media-video video,
.chat-media-embed iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  border: 0;
  border-radius: 12px;
  min-height: 220px;
  background: #0f172a;
}
.mensaje-texto {
  display: flex;
  flex-direction: column;
  gap: 8px;
  word-break: break-word;
}
.mensaje-texto a {
  color: var(--primary);
  text-decoration: underline;
}

/* Más pestañas que caben en una fila (centro de notificaciones): que
   envuelvan en vez de comprimirse, y que cada una mida lo que necesite. */
.filtros-notificaciones { flex-wrap: wrap; }
.filtros-notificaciones a { flex: none; }

.lista-publicaciones { display: flex; flex-direction: column; gap: 14px; margin-top: 16px; }
.publicacion {
  background: rgba(255, 255, 255, 0.8);
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: var(--radius-lg);
  padding: 16px 18px;
  box-shadow: var(--sombra);
  backdrop-filter: blur(8px);
}
.publicacion-header { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.publicacion-header a { color: var(--text); }
.publicacion-header a:hover { text-decoration: underline; }
.publicacion-header time { color: var(--text-dim); font-size: 0.78rem; margin-left: auto; white-space: nowrap; }
.publicacion-header-texto { display: flex; flex-direction: column; gap: 2px; }
.publicacion-header-linea1 { display: flex; align-items: center; gap: 8px; }
.publicacion p { margin: 0 0 4px; white-space: pre-line; }

/* ------------------------------------------------------------------ */
/* Dashboards / paneles                                                 */
/* ------------------------------------------------------------------ */
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px,1fr)); gap: 14px; margin: 20px 0 30px; }
.stat-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 18px;
  text-align: center;
  color: var(--text);
  font-size: 0.85rem;
  box-shadow: var(--sombra);
}
.stat-card span { display: block; font-size: 1.8rem; font-weight: 800; color: var(--primary); }
.stat-card strong { color: var(--text); display: block; margin-bottom: 4px; }

/* ------------------------------------------------------------------ */
/* Estadísticas de perfil ("insights" ligeros de grupo/local)           */
/* ------------------------------------------------------------------ */
.insight-bloque {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 18px;
  margin: 0 0 20px;
  box-shadow: var(--sombra);
}
.insight-bloque h3 { margin: 0 0 12px; font-size: 1rem; }

.mini-grafico {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 90px;
  padding: 0 2px;
}
.mini-grafico-barra {
  flex: 1;
  background: var(--primary-soft);
  border: 1px solid var(--primary);
  border-bottom: none;
  border-radius: 3px 3px 0 0;
  min-height: 3px;
  transition: background 0.15s;
}
.mini-grafico-barra:hover { background: var(--primary); }
.mini-grafico-leyenda { display: flex; justify-content: space-between; color: var(--text-dim); font-size: 0.75rem; margin: 6px 2px 0; }

/* Vista previa del cartel heredado de una plantilla de evento */
.plantilla-cartel-preview { margin: 4px 0; }
.plantilla-cartel-preview img { max-width: 140px; border-radius: var(--radius); display: block; margin-top: 6px; box-shadow: var(--sombra); }

.tabla-admin { width: 100%; min-width: 560px; border-collapse: collapse; margin-top: 12px; background: var(--surface); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--sombra); }
.tabla-admin th, .tabla-admin td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--line); font-size: 0.9rem; white-space: nowrap; }
.tabla-admin th { color: var(--text-dim); font-weight: 700; background: var(--surface-2); }
.tabla-admin select { background: var(--surface); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 4px 6px; }

.panel-artista { display: flex; flex-direction: column; gap: 18px; }
.panel-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  padding: 18px 20px;
  background: linear-gradient(135deg, rgba(90,46,199,0.04), rgba(255,255,255,0.7));
  border: 1px solid rgba(90, 46, 199, 0.08);
  border-radius: 22px;
  box-shadow: 0 18px 32px rgba(32, 22, 56, 0.04);
}
.panel-header h2 { margin: 0; }
.panel-header-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.panel-links { display: flex; flex-wrap: wrap; gap: 10px; }
.panel-links a { color: var(--primary); font-weight: 700; }
.panel-resumen-rapido {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}
.stat-card-mini {
  padding: 14px 16px;
}
.panel-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(260px, 0.9fr); gap: 20px; }
.panel-columna { display: flex; flex-direction: column; gap: 18px; }
.panel-seccion {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(246,243,255,0.9));
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-radius: 22px;
  padding: 18px;
  box-shadow: 0 18px 34px rgba(32, 22, 56, 0.08), inset 0 1px 0 rgba(255,255,255,0.75);
  backdrop-filter: blur(8px);
}
.panel-seccion::before {
  content: "";
  position: absolute;
  inset: 0 auto auto 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--primary), rgba(122, 94, 234, 0.25));
}
.panel-seccion:hover {
  box-shadow: 0 18px 36px rgba(51, 36, 83, 0.12);
}

.publicacion,
.lista-eventos li,
.card-form,
.stat-card,
.role-card,
.panel-seccion {
  transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.publicacion:hover,
.lista-eventos li:hover,
.stat-card:hover {
  transform: translateY(-1px);
  box-shadow: var(--sombra-flotante);
}
.panel-seccion h3 { margin-top: 0; }
.lista-eventos { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.lista-eventos li {
  background: linear-gradient(180deg, rgba(255,255,255,0.84), rgba(246,243,255,0.9));
  border: 1px solid rgba(90, 46, 199, 0.1);
  border-left: 4px solid var(--primary);
  border-radius: 18px;
  padding: 14px 18px;
  box-shadow: 0 12px 24px rgba(32, 22, 56, 0.06);
}
.lista-eventos.compacta li { padding: 10px 12px; }
.lista-eventos p { color: var(--text-dim); margin: 6px 0 0; }
.evento-cabecera { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.evento-cabecera a { color: var(--text); }
.evento-cabecera a:hover { color: var(--primary); }
.form-filtro-ciudad { flex-direction: row !important; align-items: flex-end; flex-wrap: wrap; gap: 12px !important; }
.form-filtro-ciudad label { flex: 1; min-width: 180px; }

.evento-item {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  min-width: 0;
  overflow: hidden;
}
.form-doble {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}
.form-acciones {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  margin-top: 8px;
}
.evento-item-compacto { padding: 10px 14px !important; }
.evento-item-cartel { flex: 0 0 auto; display: block; width: 72px; height: 96px; border-radius: var(--radius); overflow: hidden; background: var(--surface-2); }
.evento-item-cartel img { width: 100%; height: 100%; object-fit: cover; display: block; }
.evento-item-cuerpo { flex: 1; min-width: 0; }
.evento-item-acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}
.badge-estado-evento { padding: 3px 10px; border-radius: 20px; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; }
.badge-cancelado { background: #fde2e8; color: #9c1541; }
.badge-pospuesto { background: #fdf1dc; color: var(--brass); }

.acciones-panel { margin: 20px 0; }

/* ------------------------------------------------------------------ */
/* Ficha de evento                                                       */
/* ------------------------------------------------------------------ */
.container-ancho { max-width: 980px; }
.evento-detalle-cabecera { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.evento-detalle-layout { display: grid; grid-template-columns: 1fr 320px; gap: 32px; align-items: start; margin-top: 18px; }
.evento-detalle-info { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.evento-detalle-datos { display: flex; flex-direction: column; gap: 8px; }
.evento-detalle-datos p { margin: 0; display: flex; align-items: center; gap: 8px; }
.evento-detalle-descripcion { white-space: pre-line; color: var(--text); }
.evento-detalle-acciones { display: flex; flex-wrap: wrap; gap: 10px; }
.evento-detalle-lateral { display: flex; flex-direction: column; gap: 22px; }
.evento-detalle-cartel { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--sombra); background: var(--surface-2); }
.evento-detalle-cartel img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; display: block; }
.evento-detalle-cartel-vacio {
  width: 100%; aspect-ratio: 3 / 4; display: flex; align-items: center; justify-content: center;
  color: var(--text-dim); background: var(--surface-2); border-radius: var(--radius-lg); text-align: center; padding: 16px; font-size: 0.85rem;
}
.evento-proximos h3 { font-size: 1rem; margin-bottom: 10px; }
.evento-proximos .lista-eventos { gap: 8px; }
.evento-proximos .lista-eventos li { padding: 10px 14px; }
.evento-gestion { border: 1px dashed var(--line); border-radius: var(--radius-lg); padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.evento-gestion h3 { font-size: 0.95rem; margin: 0; }
.evento-gestion-acciones { display: flex; flex-wrap: wrap; gap: 10px; }
.evento-gestion details { border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 14px; }
.evento-gestion details[open] { padding-bottom: 14px; }
.evento-gestion details summary { cursor: pointer; font-weight: 600; color: var(--primary); }
.evento-gestion details form { margin-top: 12px; }
.aviso-estado-evento {
  border-radius: var(--radius-lg); padding: 14px 18px; display: flex; gap: 10px; align-items: flex-start; font-size: 0.9rem;
}
.aviso-cancelado { background: #fde2e8; color: #9c1541; }
.aviso-pospuesto { background: #fdf1dc; color: #8a5c0c; }
.aviso-estado-evento .icono-inline { flex: 0 0 auto; margin-top: 2px; }

@media (max-width: 780px) {
  .evento-detalle-layout { grid-template-columns: 1fr; }
  .evento-detalle-lateral { order: -1; }
  .panel-header { flex-direction: column; }
  .panel-grid { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------------ */
/* Directorio                                                            */
/* ------------------------------------------------------------------ */
.lista-perfiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.perfil-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 18px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 14px;
  box-shadow: var(--sombra);
}
.perfil-card-info { display: flex; flex-direction: column; gap: 2px; }
.perfil-card-info .avatar-circle { margin-bottom: 8px; }
.perfil-card h3 { margin: 8px 0 4px; font-size: 1.05rem; }
.perfil-card-info p { margin: 2px 0; }
.perfil-card-acciones { display: flex; flex-direction: column; gap: 8px; }
.perfil-card-acciones .btn-cta, .perfil-card-acciones .btn-secondary, .perfil-card-acciones form { width: 100%; }
.perfil-card-acciones button { width: 100%; }

/* ------------------------------------------------------------------ */
/* Chat: lista de conversaciones                                        */
/* ------------------------------------------------------------------ */
.lista-conversaciones { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
.conversacion-item {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 12px 16px;
  color: var(--text);
  box-shadow: var(--sombra);
}
.conversacion-item:hover { border-color: var(--primary); text-decoration: none; }
.conversacion-item-texto { flex: 1; min-width: 0; }
.conversacion-item p { margin: 2px 0 0; color: var(--text-dim); font-size: 0.85rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.contador-no-leidos {
  background: var(--coral);
  color: #fff;
  font-size: 0.72rem;
  font-weight: 700;
  border-radius: 20px;
  padding: 2px 8px;
}

/* Chat: conversación */
.chat-header { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.chat-header h2 { margin: 0; display: flex; align-items: center; gap: 10px; font-size: 1.2rem; }
.chat-mensajes {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 18px;
  height: 420px;
  overflow-y: auto;
  box-shadow: var(--sombra);
}
.mensaje { max-width: 72%; padding: 9px 14px; border-radius: 16px; }
.mensaje p { margin: 0; }
.mensaje time { display: block; font-size: 0.68rem; color: rgba(0,0,0,0.4); margin-top: 4px; }
.mensaje-otro { align-self: flex-start; background: var(--surface-2); color: var(--text); }
.mensaje-propio { align-self: flex-end; background: var(--primary); color: #fff; }
.mensaje-propio time { color: rgba(255,255,255,0.75); }

.chat-form { display: flex; gap: 10px; margin-top: 14px; }
.chat-form input {
  flex: 1;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 10px 16px;
  color: var(--text);
  font-family: var(--font-body);
}
.chat-form button { border-radius: 20px; }
.chat-oferta-form {
  margin-top: 16px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 14px;
  box-shadow: var(--sombra);
}
.chat-oferta-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}
.chat-oferta-grid label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-weight: 600;
  color: var(--text-dim);
}
.chat-oferta-grid input {
  width: 100%;
}
.mensaje-oferta {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 12px;
  background: rgba(100, 94, 255, 0.06);
}
.mensaje-oferta-etiqueta {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--primary);
}
.mensaje-oferta-precio {
  font-size: 1.15rem;
  font-weight: 700;
}
.mensaje-oferta-estado {
  font-size: 0.8rem;
  color: var(--text-dim);
}
.mensaje-oferta-acciones {
  margin-top: 4px;
}
.mensaje-oferta-acciones form {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* Chat: presencia (avatar con punto de "en línea") */
.avatar-con-estado { position: relative; display: inline-flex; flex-shrink: 0; }
.punto-en-linea {
  position: absolute;
  right: -1px;
  bottom: -1px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--green);
  border: 2px solid var(--surface);
}
.badge-bloqueado { background: #fde2e8; color: #9c1541; }

/* Chat: cabecera de conversación (estado + acciones) */
.chat-header-texto { flex: 1; min-width: 0; }
.chat-estado-conexion { margin: 2px 0 0; color: var(--text-dim); font-size: 0.8rem; }
.chat-header-acciones { display: flex; align-items: center; }
.btn-bloquear { display: inline-flex; align-items: center; gap: 6px; }

/* Chat: indicador de "escribiendo..." */
.chat-escribiendo {
  margin: 8px 2px 0;
  color: var(--text-dim);
  font-size: 0.82rem;
  font-style: italic;
}

/* Chat: publicación/evento compartido dentro de un mensaje */
.mensaje-compartido {
  display: flex;
  flex-direction: column;
  gap: 2px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 10px;
  padding: 8px 12px;
  color: inherit;
}
.mensaje-otro .mensaje-compartido { background: var(--surface); border-color: var(--line); }
.mensaje-compartido:hover { text-decoration: none; opacity: 0.9; }
.mensaje-compartido-etiqueta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  opacity: 0.85;
}
.mensaje-compartido-detalle { font-size: 0.82rem; opacity: 0.85; }
.mensaje-compartido-vista-previa {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 14px 16px;
  box-shadow: var(--sombra);
  color: var(--text);
}

/* Menciones (@usuario): enlace dentro del texto ya publicado */
.mencion { font-weight: 600; }

/* Hashtags (#estilo): enlace dentro del texto ya publicado */
.etiqueta { font-weight: 600; }

/* Insignia de verificado, junto al nombre */
.insignia-verificado { display: inline-flex; align-items: center; color: var(--primary); margin-left: 2px; vertical-align: -2px; }
.insignia-verificado .icono-inline { width: 15px; height: 15px; }

/* Género musical como enlace dentro del muro/directorio */
.etiqueta-genero { color: var(--primary); font-weight: 600; }

/* Explorar por estilo: nube de hashtags */
.nube-etiquetas { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.chip-etiqueta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 8px 16px;
  font-weight: 700;
  color: var(--text);
  box-shadow: var(--sombra);
}
.chip-etiqueta:hover { background: var(--surface-2); text-decoration: none; }
.chip-etiqueta-num { color: var(--text-dim); font-weight: 600; font-size: 0.85rem; }

/* Menciones: desplegable de autocompletado (posición fijada por JS según
   las coordenadas del campo donde se está escribiendo) */
.menciones-desplegable {
  position: fixed;
  z-index: 200;
  max-height: 240px;
  overflow-y: auto;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--sombra-flotante);
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.menciones-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  background: none;
  border: none;
  border-radius: 8px;
  padding: 6px 8px;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-body);
  color: var(--text);
}
.menciones-item:hover, .menciones-item-activo { background: var(--surface-2); }
.menciones-avatar { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; flex: none; }
.menciones-avatar-inicial {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--primary-soft);
  color: var(--primary);
  font-weight: 700;
  font-size: 0.78rem;
}
.menciones-nombre { font-weight: 600; font-size: 0.88rem; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.menciones-handle { color: var(--text-dim); font-size: 0.8rem; flex: none; }

/* Chat: elegir conversación al compartir */
.conversacion-item-compartir { justify-content: space-between; }
.btn-enviar-compartir { flex: none; padding: 8px 16px; }
.campo-comentario-compartir {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 16px;
  font-size: 0.88rem;
  color: var(--text-dim);
  font-weight: 600;
}
.campo-comentario-compartir input {
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 14px;
  color: var(--text);
  font-family: var(--font-body);
  font-weight: 400;
}

/* ------------------------------------------------------------------ */
/* Compositor de publicaciones (caja tipo chat, con clip para adjuntar) */
/* ------------------------------------------------------------------ */
.composer {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 12px 14px 10px;
  margin: 16px 0;
  box-shadow: var(--sombra);
}
.composer-textarea {
  width: 100%;
  border: none;
  resize: none;
  font-family: var(--font-body);
  font-size: 0.98rem;
  color: var(--text);
  padding: 8px 4px;
  min-height: 44px;
  background: transparent;
}
.composer-textarea:focus { outline: none; }
.composer-textarea::placeholder { color: var(--text-dim); }

.composer-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
  margin-top: 4px;
}
.composer-toolbar-izquierda { display: flex; align-items: center; gap: 6px; }

.composer-media-wrap {
  position: relative;
}
.composer-media-panel {
  position: absolute;
  left: 0;
  bottom: calc(100% + 8px);
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 130px;
  background: rgba(255,255,255,0.96);
  border: 1px solid rgba(90,46,199,0.12);
  border-radius: 12px;
  padding: 8px;
  box-shadow: var(--sombra);
  z-index: 25;
}
.composer-media-panel[hidden] {
  display: none;
}
.composer-media-opcion {
  border: none;
  background: var(--surface-2);
  color: var(--text);
  border-radius: 8px;
  padding: 8px 10px;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
}
.composer-media-opcion:hover {
  background: var(--primary-soft);
  color: var(--primary);
}

/* Botón "clip" para adjuntar foto/vídeo, y botón "cadena" para enlaces */
.composer-adjuntar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: none;
  border-radius: 50%;
  background: var(--surface-2);
  color: var(--text-dim);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.composer-adjuntar:hover { background: var(--primary-soft); color: var(--primary); }
.composer-adjuntar-activo { background: var(--primary-soft); color: var(--primary); }
/* El input real queda invisible; el icono hace de disparador */
.composer-file-input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* Campo para pegar un enlace de YouTube/Spotify/Vimeo/SoundCloud */
.composer-enlace-embed {
  display: none;
  align-items: center;
  gap: 8px;
  background: var(--surface-2);
  border-radius: 20px;
  padding: 8px 14px;
  margin: 6px 0 2px;
  color: var(--text-dim);
}
.composer-enlace-embed-activo { display: flex; }
.composer-enlace-embed input {
  flex: 1;
  border: none;
  background: transparent;
  font-family: var(--font-body);
  font-size: 0.88rem;
  color: var(--text);
}
.composer-enlace-embed input:focus { outline: none; }
.composer-enlace-quitar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: none;
  border: none;
  color: var(--text-dim);
  cursor: pointer;
  font-size: 0.75rem;
  flex: none;
}
.composer-enlace-quitar:hover { background: var(--primary-soft); color: var(--primary); }

.composer-submit { border-radius: 20px; padding: 8px 20px; }

/* Vista previa de los archivos elegidos: chips individuales removibles */
.composer-preview {
  display: none;
  flex-wrap: wrap;
  gap: 6px;
  margin: 4px 0 2px;
}
.composer-preview-activa { display: flex; }
.composer-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 220px;
  background: var(--primary-soft);
  color: var(--primary);
  border-radius: 20px;
  padding: 5px 6px 5px 12px;
  font-size: 0.8rem;
  font-weight: 600;
}
.composer-chip-nombre { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.composer-chip-quitar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(24,119,242,0.15);
  border: none;
  color: var(--primary);
  cursor: pointer;
  font-weight: 700;
  font-size: 0.75rem;
  padding: 0;
  flex: none;
}
.composer-chip-quitar:hover { background: var(--primary); color: #fff; }

/* Chip de sticker elegido en el composer */
.composer-chip-sticker { background: var(--surface-2); color: var(--text); padding: 3px 6px 3px 10px; }
.composer-chip-sticker-emoji { font-size: 1.3rem; line-height: 1; }

/* Rejilla de stickers (composer y chat) */
.sticker-panel,
.composer-sticker-panel {
  display: grid;
  grid-template-columns: repeat(10, 1fr);
  gap: 3px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 8px;
  box-shadow: var(--sombra);
  margin: 6px 0 2px;
}
/* El atributo "hidden" debe ganar siempre al "display: grid" de arriba;
   si no, el panel se queda visible aunque esté oculto (bug reportado). */
.sticker-panel[hidden],
.composer-sticker-panel[hidden] {
  display: none;
}
.sticker-opcion {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 1;
  font-size: 1.25rem;
  line-height: 1;
  background: none;
  border: none;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
}
.sticker-opcion:hover { background: var(--surface-2); transform: scale(1.12); }

/* Sticker ya publicado en una publicación */
.publicacion-sticker { font-size: 4.5rem; line-height: 1; text-align: center; margin: 4px 0; }

/* Sticker inline (p.ej. en el formulario de editar publicación) */
.mensaje-sticker-inline { font-size: 1.2rem; vertical-align: middle; }

/* Sticker enviado en el chat: sin burbuja, emoji grande */
.mensaje-sticker {
  display: block;
  font-size: 2.6rem;
  line-height: 1;
}
.mensaje:has(> .mensaje-sticker) { background: none !important; padding: 0; }

/* Fila del formulario de chat: botón de stickers + campo de texto */
.chat-input-row { display: flex; align-items: flex-end; gap: 10px; margin-top: 14px; }
.chat-input-row .chat-form { margin-top: 0; flex: 1; }
.chat-sticker-selector { position: relative; flex: none; }
.chat-boton-sticker {
  width: 40px; height: 40px; padding: 0; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
}
.chat-sticker-panel {
  position: absolute;
  bottom: 46px;
  left: 0;
  width: 260px;
  z-index: 5;
  margin: 0;
}

.footer { text-align: center; color: var(--text-dim); font-size: 0.8rem; padding: 30px 0; border-top: 1px solid var(--line); margin-top: 20px; }

/* Botón de Google */
.btn-google {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  background: #fff;
  color: var(--text);
  border: 1px solid #ccd0d5;
  border-radius: 6px;
  padding: 10px 16px;
  font-weight: 700;
  font-size: 0.95rem;
  margin-top: 8px;
}
.btn-google:hover { background: #f5f5f5; text-decoration: none; }

.separador {
  display: flex;
  align-items: center;
  text-align: center;
  color: var(--text-dim);
  font-size: 0.8rem;
  margin: 18px 0 6px;
}
.separador::before, .separador::after {
  content: '';
  flex: 1;
  border-bottom: 1px solid var(--line);
}
.separador span { padding: 0 12px; }

/* Verificación de email en modo desarrollo */
.aviso-dev {
  background: #fef8e8;
  border: 1px dashed var(--brass);
  border-radius: var(--radius-lg);
  padding: 16px;
  margin: 16px 0;
  word-break: break-all;
}
.aviso-dev .btn-cta { display: inline-block; margin: 10px 0; font-size: 0.8rem; }

/* 2FA */
.qr-2fa {
  display: block;
  margin: 16px auto;
  width: 200px;
  height: 200px;
  background: #fff;
  padding: 10px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--line);
}
.pasos-2fa { color: var(--text-dim); padding-left: 20px; }
.codigos-respaldo {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 16px;
  margin: 16px 0;
}
.codigos-respaldo code {
  font-family: monospace;
  font-size: 1rem;
  color: var(--primary);
  text-align: center;
}

/* ------------------------------------------------------------------ */
/* Muro de perfil (estilo portada + avatar tipo Facebook)               */
/* ------------------------------------------------------------------ */
.muro-cabecera {
  background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(249,247,255,0.96));
  border: 1px solid rgba(90,46,199,0.08);
  border-radius: 28px;
  margin-bottom: 20px;
  overflow: hidden;
  box-shadow: var(--sombra);
  max-width: 100%;
  box-sizing: border-box;
}
.muro-eventos {
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(246,243,255,0.9));
  border: 1px solid rgba(90,46,199,0.08);
  border-radius: 22px;
  padding: 18px 20px;
  box-shadow: 0 12px 24px rgba(32, 22, 56, 0.05);
}
.muro-identity-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 24px 8px;
}
.muro-identity-bar .account-eyebrow {
  margin: 0;
}
.muro-identity-pill {
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 0.7rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.muro-portada {
  overflow: hidden;
  position: relative;
  height: 180px;
  background: linear-gradient(135deg, rgba(90,46,199,0.9) 0%, rgba(140,79,224,0.88) 55%, rgba(201,168,245,0.8) 100%);
  background-size: cover;
  background-position: center;
  border-top: 1px solid rgba(255,255,255,0.25);
}
.muro-portada-editar-form { position: absolute; top: 14px; right: 14px; }
.muro-portada-eliminar-form { position: absolute; top: 58px; right: 14px; }
.muro-portada-editar {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(11,14,26,0.55);
  color: #fff;
  padding: 7px 14px;
  border-radius: 20px;
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  backdrop-filter: blur(2px);
}
.muro-portada-editar:hover { background: rgba(11,14,26,0.75); }
.muro-imagen-input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.muro-portada-editar-form, .muro-portada-eliminar-form, .muro-avatar-editar-form, .muro-avatar-eliminar-form { z-index: 6; }
.muro-portada-eliminar {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(11,14,26,0.55); color: #fff; border: 0;
  padding: 7px 14px; border-radius: 20px; font-size: 0.82rem;
  font-weight: 600; cursor: pointer; backdrop-filter: blur(2px);
}
.muro-portada-eliminar:hover { background: rgba(150, 25, 45, 0.88); }

.muro-avatar-wrap { position: relative; width: 128px; }
.muro-avatar-editar-form { position: absolute; bottom: 2px; right: 2px; }
.muro-avatar-eliminar-form { position: absolute; bottom: 2px; right: 40px; }
.muro-avatar-editar {
  display: flex; align-items: center; justify-content: center;
  width: 34px; height: 34px;
  background: var(--primary);
  color: #fff;
  border-radius: 50%;
  border: 3px solid var(--surface);
  cursor: pointer;
}
.muro-avatar-editar:hover { background: var(--primary-hover); }
.muro-avatar-eliminar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  padding: 0;
  background: #fff;
  color: #c6284b;
  border: 3px solid var(--surface);
  border-radius: 50%;
  box-shadow: 0 5px 14px rgba(24, 17, 48, .16);
  cursor: pointer;
  transition: transform .16s ease, background-color .16s ease, color .16s ease, box-shadow .16s ease;
}
.muro-avatar-eliminar .icono-sm { width: 16px; height: 16px; stroke-width: 2.1; }
.muro-avatar-eliminar:hover {
  background: #fff1f4;
  color: #a7193b;
  transform: translateY(-1px);
  box-shadow: 0 7px 18px rgba(24, 17, 48, .2);
}
.muro-avatar-eliminar:focus-visible {
  outline: 3px solid rgba(91, 53, 245, .28);
  outline-offset: 2px;
}

/* Menú "···" con las acciones del propio perfil, en la esquina superior
   derecha de la tarjeta (a la altura del avatar, sin pegarse a él) */
.muro-menu { position: absolute; top: 14px; right: 20px; z-index: 5; }
.muro-menu-boton {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--surface);
  border: 1px solid var(--line);
  color: var(--text-dim);
  cursor: pointer;
  box-shadow: var(--sombra);
}
.muro-menu-boton:hover { background: var(--surface-2); color: var(--text); }
.muro-menu-desplegable {
  display: none;
  position: absolute;
  top: 46px;
  right: 0;
  min-width: 210px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--sombra-flotante);
  padding: 6px;
  z-index: 10;
}
.muro-menu-desplegable.abierto { display: block; }
.muro-menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  color: var(--text);
  font-weight: 600;
  font-size: 0.9rem;
}
.muro-menu-item:hover { background: var(--surface-2); text-decoration: none; }
.muro-menu-item-deshabilitado { color: var(--text-dim) !important; cursor: default; }
.muro-menu-item-deshabilitado:hover { background: none !important; }

.muro-datos {
  position: relative;
  padding: 0 24px 24px;
  margin-top: -46px;
  max-width: 100%;
  box-sizing: border-box;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.muro-datos .avatar-xl { display: inline-flex; line-height: 1; }
.muro-datos h2 { margin: 12px 0 4px; font-size: 1.5rem; max-width: 100%; }
.muro-datos p { margin: 4px 0; max-width: 100%; }
.muro-stats { color: var(--text-dim); font-size: 0.9rem; margin: 12px 0; }
.muro-stats strong { color: var(--text); }
.muro-handle { color: var(--text-dim); font-size: 0.92rem; margin: 0 0 4px; }

.enlaces-sociales { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0; }
.enlace-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--text);
  transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.1s;
}
.enlace-social:hover {
  border-color: var(--primary);
  text-decoration: none;
  background: var(--primary-soft);
  color: var(--primary);
  transform: translateY(-2px);
}

.muro-acciones { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; }

.perfil-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(280px, 0.7fr);
  gap: 20px;
  align-items: start;
  margin-top: 12px;
}
.perfil-main-col {
  min-width: 0;
}
.perfil-sidebar {
  position: sticky;
  top: 82px;
}
.muro-publicaciones { max-width: 100%; margin: 0; }
.muro-eventos { max-width: 100%; margin: 0 0 20px; }
.muro-eventos h3 { font-size: 1.1rem; margin-bottom: 10px; }
.muro-eventos-inline {
  margin-bottom: 18px;
}
.muro-eventos-sidebar {
  background: linear-gradient(180deg, rgba(255,255,255,0.8), rgba(245,242,255,0.9));
  border: 1px solid rgba(90,46,199,0.08);
  border-radius: 22px;
  box-shadow: 0 18px 30px rgba(32, 22, 56, 0.06);
  padding: 18px 16px;
  max-width: 100%;
  box-sizing: border-box;
}

@media (max-width: 980px) {
  .perfil-layout {
    grid-template-columns: 1fr;
  }
  .perfil-sidebar {
    position: static;
  }
}

/* Multimedia dentro de una publicación (galería de 1 o varios archivos) */
.publicacion-galeria {
  display: grid;
  gap: 4px;
  margin-top: 8px;
  border-radius: 8px;
  overflow: hidden;
}
.publicacion-galeria.galeria-1 { grid-template-columns: 1fr; }
.publicacion-galeria.galeria-2,
.publicacion-galeria.galeria-3,
.publicacion-galeria.galeria-4 { grid-template-columns: 1fr 1fr; }

.publicacion-media {
  display: block;
  width: 100%;
  height: 100%;
  max-height: 480px;
  object-fit: cover;
  background: #000;
}
.galeria-1 .publicacion-media { max-height: 480px; }
.galeria-2 .publicacion-media,
.galeria-3 .publicacion-media,
.galeria-4 .publicacion-media { max-height: 220px; }

/* Enlaces embebidos (YouTube, Spotify, Vimeo, SoundCloud) dentro de una
   publicación: siempre ocupan el ancho completo, aunque haya más fotos */
.publicacion-embed {
  grid-column: 1 / -1;
  border-radius: 8px;
  overflow: hidden;
  background: #000;
}
.publicacion-embed iframe { width: 100%; border: none; display: block; }
.publicacion-embed-youtube iframe,
.publicacion-embed-vimeo iframe {
  aspect-ratio: 16 / 9;
  height: auto;
}
.publicacion-embed-spotify iframe { height: 152px; background: #121212; }
.publicacion-embed-soundcloud iframe { height: 166px; }

/* Menú "···" con Editar/Borrar de una publicación (evita mostrar los
   botones sueltos; nótese el selector "button." para que gane con
   seguridad al estilo genérico de los botones de tipo submit) */
.publicacion-menu { position: relative; margin-left: auto; flex: none; }
.publicacion-menu-boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: none;
  border: none;
  color: var(--text-dim);
  cursor: pointer;
}
.publicacion-menu-boton:hover { background: var(--surface-2); color: var(--text); }
.publicacion-menu-desplegable {
  display: none;
  position: absolute;
  top: 38px;
  right: 0;
  min-width: 170px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--sombra-flotante);
  padding: 6px;
  z-index: 20;
}
.publicacion-menu-desplegable.abierto { display: block; }
.publicacion-menu-form { margin: 0; }
button.publicacion-menu-item, a.publicacion-menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 9px 12px;
  border-radius: 8px;
  color: var(--text) !important;
  font-weight: 600;
  font-size: 0.88rem;
  background: none !important;
  box-shadow: none !important;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-body);
}
button.publicacion-menu-item:hover, a.publicacion-menu-item:hover { background: var(--surface-2) !important; text-decoration: none; }
button.publicacion-menu-item-peligro { color: var(--coral) !important; }
button.publicacion-menu-item-peligro:hover { background: #fde2e8 !important; }

/* Resumen de likes/comentarios (encima de los botones de interacción) */
.publicacion-resumen {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  color: var(--text-dim);
  font-size: 0.85rem;
}
.icono-corazon-lleno { color: var(--coral); fill: var(--coral); }
.btn-ver-comentarios { padding: 0; font-size: 0.85rem; }

/* Botones de "Me gusta" / "Comentar" */
.publicacion-interacciones {
  display: flex;
  gap: 4px;
  margin-top: 6px;
  padding-top: 6px;
}
.publicacion-resumen + .publicacion-interacciones { border-top: none; padding-top: 0; margin-top: 4px; }
.btn-interaccion {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  background: none;
  border: none;
  border-radius: 8px;
  padding: 8px;
  color: var(--text-dim);
  font-weight: 600;
  font-size: 0.88rem;
  cursor: pointer;
}
.btn-interaccion:hover { background: var(--surface-2); }
.btn-interaccion-activo { color: var(--coral); }
.btn-interaccion-activo .icono-inline { color: var(--coral); fill: var(--coral); }

.evento-interes {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.evento-interes .btn-interaccion {
  flex: 0 1 auto;
  padding: 8px 12px;
  white-space: nowrap;
}
.evento-interes-contador {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 24px;
  padding: 0 8px;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 0.8rem;
  font-weight: 700;
}

/* Lista de comentarios (oculta hasta que se pulsa "Comentar") */
.publicacion-comentarios { display: none; margin-top: 10px; }
.publicacion-comentarios.abierta { display: block; }
.comentario { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
.comentario-cuerpo {
  background: var(--surface-2);
  border-radius: 14px;
  padding: 8px 12px;
  flex: 1;
}
.comentario-cuerpo strong { font-size: 0.85rem; }
.comentario-cuerpo p { margin: 2px 0 0; font-size: 0.9rem; }
.comentario-form { position: relative; display: flex; align-items: center; gap: 10px; }
.comentario-form input[type="text"] {
  flex: 1;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 9px 14px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  color: var(--text);
}
.comentario-form button { border-radius: 20px; padding: 9px 16px; }
.comentario-reportar {
  flex-shrink: 0;
  align-self: center;
  color: var(--text-dim);
  opacity: 0.5;
  padding: 4px;
}
.comentario-reportar:hover { opacity: 1; color: var(--coral); }
.comentario-reportar .icono-sm { width: 15px; height: 15px; }

/* ------------------------------------------------------------------ */
/* Moderación: cola de reportes del admin y formulario de "Reportar"    */
/* ------------------------------------------------------------------ */

.stat-card-enlace { text-decoration: none; display: block; transition: transform 0.15s ease; }
.stat-card-enlace:hover { transform: translateY(-2px); }
.stat-card-aviso { border: 1px solid var(--coral); }
.stat-card-aviso span { color: var(--coral); }

.tabs-filtro { display: flex; gap: 6px; margin: 4px 0 18px; border-bottom: 1px solid var(--line); }
.tab-filtro {
  padding: 8px 14px;
  color: var(--text-dim);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 600;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.tab-filtro:hover { color: var(--text); }
.tab-filtro-activa { color: var(--primary); border-bottom-color: var(--primary); }

.lista-reportes { display: flex; flex-direction: column; gap: 14px; }
.reporte-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 16px;
  box-shadow: var(--sombra);
}
.reporte-card-cabecera { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.reporte-card-cabecera time { font-size: 0.78rem; color: var(--text-dim); margin-left: auto; }
.badge-reporte-tipo { background: var(--primary-soft); color: var(--primary); padding: 3px 10px; border-radius: 20px; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; }
.reporte-motivo { font-size: 0.85rem; font-weight: 600; color: var(--coral); }
.reporte-contenido { margin: 8px 0; font-size: 0.92rem; }
.reporte-contenido-borrado { color: var(--text-dim); font-style: italic; }
.reporte-cita-enlace { color: var(--text); text-decoration: underline; text-decoration-color: var(--line); }
.reporte-acciones { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.reporte-resolucion { margin-top: 8px; }
.badge-reporte-estado-pendiente { background: #fdf1dc; color: var(--brass); padding: 3px 10px; border-radius: 20px; font-size: 0.72rem; font-weight: 700; }
.badge-reporte-estado-resuelto { background: color-mix(in srgb, var(--green) 22%, white); color: #1c6b3f; padding: 3px 10px; border-radius: 20px; font-size: 0.72rem; font-weight: 700; }
.badge-reporte-estado-descartado { background: var(--surface-2); color: var(--text-dim); padding: 3px 10px; border-radius: 20px; font-size: 0.72rem; font-weight: 700; }

.reportar-contexto {
  background: var(--surface-2);
  border-radius: var(--radius-lg);
  padding: 14px 16px;
  margin-bottom: 18px;
}
.reportar-cita {
  margin: 8px 0 0;
  padding-left: 12px;
  border-left: 3px solid var(--line);
  font-style: italic;
  color: var(--text-dim);
}

/* ------------------------------------------------------------------ */
/* Notificaciones                                                        */
/* ------------------------------------------------------------------ */
.enlace-notificaciones { position: relative; }
.contador-notificaciones {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  border-radius: 20px;
  background: var(--coral);
  color: #fff;
  font-size: 0.66rem;
  font-weight: 700;
  margin-left: 4px;
}
.sidebar-contador-notif { margin-left: auto; }
.bottom-nav-icono-wrap { position: relative; display: inline-flex; }
.contador-notificaciones-bottom-nav {
  position: absolute;
  top: -2px;
  right: -4px;
  width: 9px;
  height: 9px;
  min-width: 0;
  padding: 0;
  border-radius: 50%;
  background: var(--coral);
  border: 2px solid var(--surface);
}

.lista-notificaciones { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.notificacion-item {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 12px 16px;
  color: var(--text);
  box-shadow: var(--sombra);
}
.notificacion-item:hover { border-color: var(--primary); text-decoration: none; }
.notificacion-no-leida { background: var(--primary-soft); border-color: var(--primary-soft); }
.notificacion-icono { color: var(--primary); flex: none; }
.notificacion-texto { flex: 1; font-size: 0.9rem; }
.notificacion-texto time { display: block; color: var(--text-dim); font-size: 0.78rem; margin-top: 2px; }

/* ------------------------------------------------------------------ */
/* Editar publicación: archivos actuales con opción de quitarlos       */
/* ------------------------------------------------------------------ */
.editar-archivos-actuales { display: flex; flex-direction: column; gap: 8px; }
.editar-archivos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 10px; }
.editar-archivo-item {
  position: relative;
  border-radius: 10px;
  overflow: hidden;
  background: var(--surface-2);
  border: 1px solid var(--line);
}
.editar-archivo-item img, .editar-archivo-item video {
  width: 100%;
  height: 90px;
  object-fit: cover;
  display: block;
}
.editar-archivo-enlace {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  width: 100%;
  height: 90px;
  color: var(--primary);
  background: var(--primary-soft);
  text-transform: capitalize;
  font-size: 0.8rem;
  font-weight: 600;
}
.editar-archivo-quitar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--coral);
  background: var(--surface);
  padding: 5px;
}
.editar-archivo-quitar input { width: 13px; height: 13px; accent-color: var(--coral); }

/* ------------------------------------------------------------------ */
/* Responsive                                                           */
/* ------------------------------------------------------------------ */

/* Tablero de administración: permite scroll horizontal en vez de desbordar */
.tabla-admin-wrapper { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.admin-cola-filtros,
.admin-busqueda-usuarios { display: flex; align-items: end; gap: 10px; }
.admin-cola-filtros label,
.admin-busqueda-usuarios label { flex: 1; margin: 0; }
.paginacion-admin { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 22px 0 8px; }

/* Cuando hay barra de navegación inferior fija, dejamos hueco debajo */
body.con-nav-inferior { padding-bottom: 0; }

@media (max-width: 900px) {
  /* La barra lateral pasa a ser un panel deslizante (drawer) sobre el contenido */
  .sidebar-fb {
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: 260px;
    max-width: 80vw;
    background: var(--surface);
    box-shadow: 2px 0 16px rgba(0,0,0,0.18);
    transform: translateX(-100%);
    transition: transform 0.22s ease;
    z-index: 200;
    overflow-y: auto;
    padding: 20px 12px calc(20px + env(safe-area-inset-bottom));
    margin: 0;
  }
  .sidebar-fb.sidebar-abierta { transform: translateX(0); }

  .btn-hamburguesa { display: flex; }
  .topbar-nav-desktop { display: none; }

  .container.con-sidebar-main { max-width: 680px; margin: 0 auto; }
}

@media (max-width: 700px) {
  /* Barra de navegación inferior tipo app, en vez del menú lateral */
  .bottom-nav {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--surface);
    border-top: 1px solid var(--line);
    padding: 6px 4px calc(4px + env(safe-area-inset-bottom));
    z-index: 120;
  }
  body.con-nav-inferior .container { padding-bottom: 84px; }
  body.con-nav-inferior .footer { padding-bottom: 90px; }
  .admin-cola-filtros,
  .admin-busqueda-usuarios { align-items: stretch; flex-direction: column; }
}

@media (max-width: 600px) {
  .topbar { padding: 0 10px; }
  .logo { font-size: 1.1rem; }
  .container { padding: 14px 10px 70px; }

  /* La cabecera de la publicación puede necesitar dos líneas en pantallas muy estrechas */
  .publicacion-header { flex-wrap: wrap; row-gap: 4px; }

  .auth-split { flex-direction: column; gap: 24px; padding: 24px 16px; }
  .auth-split-brand { text-align: center; }
  .auth-split-brand p { margin-left: auto; margin-right: auto; }
  .auth-split-form { width: 100%; max-width: 100%; }

  /* Formularios y tarjetas ocupan todo el ancho disponible con menos aire */
  .card-form, .composer { padding: 14px; }
  .form-page { max-width: 100%; }

  /* Rejilla de stickers algo más compacta en móvil */
  .sticker-panel, .composer-sticker-panel { grid-template-columns: repeat(6, 1fr); }
  .chat-sticker-panel { width: 220px; }

  /* Portada y avatar del muro un poco más compactos */
  .muro-portada { height: 100px; }
  .muro-datos { padding: 0 16px 20px; margin-top: -40px; }
  .avatar-xl { width: 96px; height: 96px; min-width: 96px; font-size: 2rem; }
  .muro-avatar-wrap { width: 96px; }
  .muro-portada-editar span { display: none; }
  .muro-acciones { flex-direction: column; }
  .muro-acciones .btn-cta, .muro-acciones .btn-secondary, .muro-acciones form { width: 100%; }

  /* El chat ocupa el alto disponible en vez de una altura fija */
  .chat-mensajes { height: calc(100vh - 300px); min-height: 260px; }
  .mensaje { max-width: 86%; }

  /* Los chips de archivos adjuntos no se salen del ancho de pantalla */
  .composer-chip { max-width: 68vw; }

  /* Los códigos de respaldo de 2FA en una sola columna */
  .codigos-respaldo { grid-template-columns: 1fr; }
  .qr-2fa { width: 100%; max-width: 200px; height: auto; aspect-ratio: 1 / 1; }

  /* Menos columnas en la galería de una publicación para que las fotos se vean bien */
  .publicacion-galeria.galeria-3,
  .publicacion-galeria.galeria-4 { grid-template-columns: 1fr 1fr; }
  .galeria-2 .publicacion-media,
  .galeria-3 .publicacion-media,
  .galeria-4 .publicacion-media { max-height: 160px; }

  .stats-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 380px) {
  .stats-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .roles-grid { grid-template-columns: 1fr; }
}


/* --- Radar + EPK profesional --- */
.panel-radar { max-width: 1100px; margin: 0 auto; }
.radar-filtros { display:flex; flex-wrap:wrap; gap:1rem; align-items:end; margin-bottom:1.25rem; }
.radar-filtros label { min-width:180px; }
.radar-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:1rem; }
.radar-card { padding:1.1rem; border:1px solid var(--borde,#ddd); border-radius:14px; background:var(--fondo-tarjeta,#fff); }
.radar-card-top { display:flex; gap:.8rem; align-items:flex-start; }
.radar-card-top h3 { margin:.1rem 0 .25rem; }
.radar-score { width:58px; height:58px; border-radius:50%; display:grid; place-items:center; font-weight:800; border:3px solid currentColor; flex:0 0 auto; }
.radar-score.alto { color:#16734a; }.radar-score.medio { color:#9a6a00; }.radar-score.bajo { color:#a63c3c; }
.radar-meta { display:flex; flex-wrap:wrap; gap:.45rem .8rem; margin:1rem 0; font-size:.9rem; }
.radar-explicacion { margin:0 0 1rem; }.radar-explicacion summary { cursor:pointer; font-weight:600; }.radar-explicacion ul { margin:.6rem 0 0 1.1rem; padding:0; }
.perfil-acciones-profesionales { display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1rem; }

.epk-publico { margin:0; background:#f3f4f6; color:#171717; }
.epk-documento { max-width:920px; margin:2rem auto; background:#fff; box-shadow:0 8px 30px rgba(0,0,0,.08); }
.epk-portada { position:relative; overflow:hidden; }.epk-banner { width:100%; height:230px; object-fit:cover; display:block; }.epk-identidad { display:flex; gap:1.2rem; align-items:center; padding:1.5rem; }.epk-avatar { width:120px; height:120px; object-fit:cover; border-radius:50%; border:5px solid #fff; margin-top:-70px; background:#eee; }.epk-marca { text-transform:uppercase; letter-spacing:.08em; font-size:.75rem; margin:0 0 .25rem; opacity:.65; }.epk-identidad h1 { margin:.1rem 0; font-size:2rem; }.epk-titular { margin:.25rem 0; font-size:1.05rem; }.epk-seccion,.epk-grid { padding:0 1.5rem 1.4rem; }.epk-seccion h2,.epk-grid h2 { margin-bottom:.65rem; }.epk-text { white-space:pre-line; line-height:1.65; }.epk-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.5rem; }.epk-paquetes { display:grid; gap:.8rem; }.epk-paquetes article { padding:1rem; border:1px solid #ddd; border-radius:10px; }.epk-paquetes h3 { margin:.1rem 0 .35rem; }.epk-historial { display:grid; gap:.65rem; }.epk-historial > div,.historial-completo article { display:flex; justify-content:space-between; gap:1rem; padding:.75rem; border-bottom:1px solid #eee; }.epk-historial span { display:block; opacity:.7; font-size:.9rem; }.historial-completo article { align-items:center; }.historial-completo article > div { display:grid; gap:.25rem; }.epk-seccion-cabecera { display:flex; justify-content:space-between; gap:1rem; align-items:center; }.epk-enlaces { display:flex; flex-wrap:wrap; gap:.6rem; }.epk-enlaces a { padding:.55rem .8rem; border:1px solid #ddd; border-radius:999px; }.epk-footer { padding:1rem 1.5rem; border-top:1px solid #eee; font-size:.8rem; opacity:.6; }
@media (max-width:700px) { .epk-documento { margin:0; }.epk-banner { height:170px; }.epk-identidad { align-items:flex-end; }.epk-avatar { width:90px; height:90px; margin-top:-55px; }.epk-identidad h1 { font-size:1.5rem; }.epk-grid { grid-template-columns:1fr; }.historial-completo article { display:grid; } }
@media print { .epk-publico { background:#fff; }.epk-documento { margin:0; box-shadow:none; max-width:none; } .epk-footer { page-break-inside:avoid; } a { color:inherit; text-decoration:none; } }

/* ==========================================================
   Satélite P3 — recomendaciones, reputación y colaboraciones
   ========================================================== */
.recomendaciones-cabecera{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:20px}
.recomendaciones-ubicacion{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.recomendaciones-grid,.colaboraciones-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.recomendaciones-panel{min-width:0}
.recomendaciones-lista{display:grid;gap:12px}
.recomendacion-card{border:1px solid var(--borde,#ddd);border-radius:14px;padding:14px;display:grid;gap:10px;background:var(--fondo-tarjeta,#fff)}
.recomendacion-identidad{display:flex;gap:10px;align-items:center;text-decoration:none;color:inherit}
.recomendacion-identidad>div,.recomendacion-evento-contenido{display:grid;gap:3px;min-width:0}
.recomendacion-identidad span,.recomendacion-evento-contenido>span{font-size:.86rem;color:var(--texto-secundario,#777);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.recomendacion-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.9rem}
.recomendacion-meta span{color:var(--texto-secundario,#777)}
.recomendacion-razones{display:flex;flex-wrap:wrap;gap:6px}
.recomendacion-razones span,.reputacion-badges span{font-size:.78rem;border-radius:999px;padding:4px 8px;background:var(--fondo-secundario,#f2f2f2)}
.recomendacion-evento-fecha{font-weight:700;font-size:1.1rem;min-width:62px}
.recomendacion-evento-contenido{flex:1}
.recomendacion-card:has(.recomendacion-evento-contenido){display:flex;align-items:flex-start}
.reputacion-resumen-grid{display:grid;grid-template-columns:110px repeat(2,minmax(0,1fr));gap:18px;align-items:center}
.reputacion-score{display:grid;justify-items:center;gap:2px;padding:10px;border-radius:14px;background:var(--fondo-secundario,#f2f2f2)}
.reputacion-score strong{font-size:2rem;line-height:1}
.reputacion-score span,.reputacion-score small{font-size:.8rem;color:var(--texto-secundario,#777)}
.reputacion-metrica{display:flex;justify-content:space-between;gap:10px;font-size:.85rem;margin-top:8px}
.reputacion-barra{height:6px;background:var(--fondo-secundario,#eee);border-radius:99px;overflow:hidden;margin-top:4px}
.reputacion-barra i{display:block;height:100%;background:currentColor;border-radius:99px}
.reputacion-badges{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}
.colaboraciones-lista{display:grid;gap:12px}
.colaboracion-item{border:1px solid var(--borde,#ddd);border-radius:14px;padding:14px;display:grid;gap:8px}
.colaboracion-item>div:first-child{display:grid;gap:3px}
.colaboracion-item span,.colaboracion-item small{color:var(--texto-secundario,#777)}
.colaboracion-acciones{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.colaboraciones-mini-lista{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.colaboracion-mini{border:1px solid var(--borde,#ddd);border-radius:12px;padding:11px;text-decoration:none;color:inherit;display:grid;gap:3px}
.colaboracion-mini span,.colaboracion-mini small{font-size:.82rem;color:var(--texto-secundario,#777)}
.valoracion-detalle{border:0;padding:0;margin:8px 0}
.valoracion-detalle legend{font-size:.9rem;font-weight:600;margin-bottom:8px}
.valoracion-detalle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.valoracion-detalle-grid label{font-size:.84rem}
@media(max-width:800px){.recomendaciones-grid,.colaboraciones-grid{grid-template-columns:1fr}.recomendaciones-cabecera{align-items:flex-start;flex-direction:column}.reputacion-resumen-grid{grid-template-columns:1fr 1fr}.reputacion-score{grid-column:1/-1}.colaboraciones-mini-lista{grid-template-columns:1fr}}
.gigmap-map{height:calc(100vh - 240px);min-height:420px;border-radius:18px;overflow:hidden;border:1px solid var(--borde,#ddd);z-index:1}.mapa-toolbar{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:14px 0}.mapa-toolbar label{display:flex;gap:7px;align-items:center}.eyebrow{font-size:.72rem;letter-spacing:.12em;font-weight:700;color:var(--texto-secundario,#666)}
.estadisticas-resumen{display:flex;gap:28px;flex-wrap:wrap;margin:22px 0}.estadisticas-resumen div{display:flex;flex-direction:column}.estadisticas-resumen strong{font-size:1.8rem}.estadisticas-resumen span{color:var(--texto-secundario,#666)}

/* ==========================================================
   P8 — Premium UI: administración pública + seguimiento financiero
   ========================================================== */
.public-sector-page{max-width:1180px;margin:0 auto;padding:8px 0 48px}
.ps-hero{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:flex-end;gap:28px;padding:34px!important;margin-bottom:22px;border:1px solid rgba(90,46,199,.13)!important;background:radial-gradient(circle at 85% 10%,rgba(115,75,210,.2),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.96),rgba(246,243,255,.94))!important}
html[data-tema="oscuro"] .ps-hero{background:radial-gradient(circle at 85% 10%,rgba(180,156,255,.18),transparent 30%),linear-gradient(135deg,rgba(32,27,49,.96),rgba(24,20,42,.98))!important;border-color:rgba(180,156,255,.16)!important}
.ps-hero:after{content:"";position:absolute;width:240px;height:240px;border-radius:50%;right:-100px;bottom:-145px;background:rgba(90,46,199,.08);pointer-events:none}
.ps-hero h1{font-family:var(--font-display);font-size:clamp(1.8rem,3vw,2.7rem);margin:7px 0 8px;letter-spacing:-.035em}
.ps-hero p{max-width:700px;color:var(--text-dim);margin:0;line-height:1.65}
.ps-hero.compact{padding:27px!important}
.finance-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 22px}
.finance-kpis article{position:relative;padding:19px 20px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--sombra);overflow:hidden}
.finance-kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary);opacity:.65}
.finance-kpis article.kpi-alert:before{background:var(--green)}.finance-kpis article.kpi-danger:before{background:var(--coral)}
.finance-kpis span,.finance-kpis small{display:block;color:var(--text-dim);font-size:.82rem}.finance-kpis strong{display:block;font-family:var(--font-display);font-size:1.45rem;letter-spacing:-.025em;margin:5px 0 3px}
.premium-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px}.ps-main-grid{align-items:start}
.premium-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sombra);padding:22px}
.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.section-heading h2{font-family:var(--font-display);font-size:1.25rem;margin:5px 0 0;letter-spacing:-.02em}.eyebrow{font-size:.68rem;letter-spacing:.14em;font-weight:800;color:var(--primary);text-transform:uppercase}
.ps-list,.invoice-list{display:grid;gap:8px}.ps-expediente-row,.invoice-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:14px;border:1px solid transparent;border-radius:14px;text-decoration:none;color:inherit;transition:.18s ease;background:var(--surface-2)}.ps-expediente-row:hover,.invoice-row:hover{transform:translateY(-1px);border-color:var(--line);box-shadow:0 8px 20px rgba(69,40,143,.08)}
.ps-exp-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:var(--primary-soft);color:var(--primary);font-weight:900}.ps-exp-main,.invoice-row>div:first-child{min-width:0;display:grid;gap:3px}.ps-exp-main strong,.invoice-row strong{font-size:.94rem}.ps-exp-main span,.invoice-row span{font-size:.79rem;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-exp-money{text-align:right;display:grid;gap:2px}.ps-exp-money strong{font-size:.9rem}.ps-exp-money span{font-size:.72rem;color:var(--text-dim)}
.status-pill{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:6px 9px;border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.04em;background:var(--surface-2);color:var(--text-dim);border:1px solid var(--line)}.status-paid,.status-conformed,.status-accepted{background:rgba(26,166,125,.11);color:var(--green);border-color:rgba(26,166,125,.2)}.status-overdue,.status-disputed,.status-rejected,.status-cancelled{background:rgba(234,92,83,.1);color:var(--coral);border-color:rgba(234,92,83,.18)}.status-payment_due,.status-processing,.status-in_process,.status-under_review{background:rgba(209,159,53,.12);color:#a47818;border-color:rgba(209,159,53,.2)}
.premium-form{display:grid;gap:13px}.premium-form label{display:grid;gap:6px;font-size:.8rem;font-weight:700;color:var(--text-dim)}.premium-form input,.premium-form select,.premium-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;background:var(--surface-strong);color:var(--text);padding:10px 11px;font:inherit;font-weight:500;outline:none;transition:.15s}.premium-form input:focus,.premium-form select:focus,.premium-form textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.form-grid-2,.form-grid-3{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ps-checks{display:grid;grid-template-columns:1fr 1fr;gap:9px}.ps-checks label{display:flex;align-items:center;gap:8px;padding:10px 11px;border-radius:10px;background:var(--surface-2);font-size:.78rem}.ps-checks input{width:auto}.btn-sm{padding:8px 11px!important;font-size:.78rem!important}
.empty-state{display:grid;gap:5px;padding:28px 12px;text-align:center;border:1px dashed var(--line);border-radius:14px;color:var(--text-dim)}.empty-state strong{color:var(--text);font-size:.9rem}.empty-state span{font-size:.8rem;line-height:1.5}.back-link{display:inline-flex;margin:0 0 13px;color:var(--text-dim);text-decoration:none;font-size:.85rem;font-weight:700}.back-link:hover{color:var(--primary)}
.invoice-dates,.invoice-amount{display:grid;gap:2px;text-align:right;min-width:100px}.invoice-dates span,.invoice-amount span{font-size:.68rem!important;color:var(--text-dim)}.invoice-dates strong,.invoice-amount strong{font-size:.86rem}.invoice-amount strong{color:var(--primary)}
.timeline-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.timeline-steps>div{position:relative;padding:12px 9px;border-radius:12px;background:var(--surface-2);display:grid;gap:5px}.timeline-steps>div:not(:last-child):after{content:"";position:absolute;right:-8px;top:50%;width:8px;height:1px;background:var(--line)}.timeline-steps span{font-size:.68rem;color:var(--text-dim)}.timeline-steps strong{font-size:.78rem}.timeline-steps .highlight{background:var(--primary-soft);border:1px solid rgba(90,46,199,.14)}.inline-actions{display:flex;gap:9px;align-items:center;margin-bottom:18px}.inline-actions select{flex:1;border:1px solid var(--line);border-radius:10px;background:var(--surface-strong);color:var(--text);padding:10px}.compact-form{border-top:1px solid var(--line);padding-top:17px}.mini-history{display:grid;gap:7px;margin-top:14px}.mini-history>div{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:10px;background:var(--surface-2)}.mini-history span{font-size:.75rem;color:var(--text-dim)}.mini-history strong{font-size:.8rem}
@media(max-width:900px){.finance-kpis{grid-template-columns:repeat(2,1fr)}.premium-grid-2{grid-template-columns:1fr}.timeline-steps{grid-template-columns:1fr 1fr}.timeline-steps>div:after{display:none}.form-grid-3{grid-template-columns:1fr 1fr}.ps-hero{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.public-sector-page{padding-top:0}.finance-kpis{grid-template-columns:1fr 1fr;gap:9px}.finance-kpis article{padding:14px}.finance-kpis strong{font-size:1.1rem}.premium-card{padding:16px;border-radius:15px}.ps-hero,.ps-hero.compact{padding:22px!important;border-radius:16px}.ps-expediente-row,.invoice-row{grid-template-columns:auto 1fr auto;gap:10px}.ps-exp-money,.invoice-dates{display:none}.status-pill{font-size:.6rem}.form-grid-2,.form-grid-3,.ps-checks{grid-template-columns:1fr}.timeline-steps{grid-template-columns:1fr}.inline-actions{align-items:stretch;flex-direction:column}.inline-actions select{width:100%}}

/* P8 — refinamiento visual del centro de operaciones */
.notice-premium{display:flex;gap:12px;align-items:center;padding:13px 15px;border-radius:13px;margin:0 0 14px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--sombra)}.notice-premium span{color:var(--text-dim);font-size:.84rem}.notice-premium.success{border-color:rgba(26,166,125,.2)}.notice-premium.danger{border-color:rgba(234,92,83,.2)}
.ops-list{display:grid;gap:8px}.ops-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(180px,auto);align-items:center;gap:12px;padding:12px;border-radius:12px;background:var(--surface-2)}.ops-row.simple{grid-template-columns:minmax(0,1fr) auto auto}.ops-row>div{min-width:0;display:grid;gap:3px}.ops-row strong{font-size:.84rem}.ops-row span{font-size:.73rem;color:var(--text-dim)}.ops-row form{display:flex;gap:7px}.ops-row input{min-width:120px;border:1px solid var(--line);border-radius:9px;background:var(--surface-strong);color:var(--text);padding:8px}.ops-latency{font-size:.78rem!important;color:var(--text-dim)!important}.ops-principle{display:flex;gap:13px;align-items:flex-start;padding:16px;border-radius:14px;background:var(--primary-soft);margin-bottom:14px}.ops-principle-icon{width:32px;height:32px;border-radius:10px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.ops-principle p{color:var(--text-dim);font-size:.8rem;line-height:1.55;margin:.35rem 0 0}
@media(max-width:700px){.ops-row,.ops-row.simple{grid-template-columns:1fr}.ops-row form{width:100%}.ops-row input{flex:1}.ops-row .status-pill{justify-self:start}}

/* =========================================================
   IA NAVIGACIÓN v1 · jerarquía por áreas de trabajo
   ========================================================= */
.sidebar-navigation { display:grid; gap:6px; }
.sidebar-section { padding:0 4px; }
.sidebar-section-title,
.sidebar-section-kicker { margin:14px 10px 6px; font-size:.66rem; line-height:1; font-weight:800; letter-spacing:.11em; text-transform:uppercase; color:var(--text-dim); }
.sidebar-section-kicker { color:var(--primary); }
.sidebar-profile-card { display:flex; align-items:center; gap:10px; margin:0 4px 10px; padding:10px; border:1px solid var(--line); border-radius:15px; background:var(--surface-2); color:var(--text); text-decoration:none; }
.sidebar-profile-card:hover { text-decoration:none; border-color:rgba(90,46,199,.28); background:var(--surface-strong); }
.sidebar-profile-avatar { flex:none; }
.sidebar-profile-copy { min-width:0; display:grid; gap:2px; flex:1; }
.sidebar-profile-copy strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.84rem; }
.sidebar-profile-copy span { color:var(--text-dim); font-size:.7rem; }
.sidebar-profile-arrow { color:var(--text-dim); font-size:1.2rem; }
.sidebar-quick-actions { padding:0 4px 7px; }
.sidebar-quick-action { display:flex; align-items:center; justify-content:center; gap:7px; min-height:36px; border-radius:10px; background:var(--primary); color:#fff; font-size:.76rem; font-weight:800; text-decoration:none; box-shadow:0 7px 18px rgba(90,46,199,.16); }
.sidebar-quick-action:hover { color:#fff; text-decoration:none; transform:translateY(-1px); }
.sidebar-quick-action span { font-size:1rem; line-height:1; }
.sidebar-item { position:relative; min-height:38px; border-radius:10px; }
.sidebar-item span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sidebar-item.active { font-weight:800; }
.sidebar-item.active::before { content:""; position:absolute; left:-4px; top:9px; bottom:9px; width:3px; border-radius:999px; background:var(--primary); }
.sidebar-section-divider { height:1px; margin:14px 10px 0; background:var(--line); }
.admin-nav { margin-top:4px; padding-top:2px; border-top:0; }
.admin-nav .sidebar-section-title { color:var(--primary); }
.bottom-nav-item.active { color:var(--primary); font-weight:800; }
.bottom-nav-item.active .bottom-nav-icono { transform:translateY(-1px); }

@media (max-width: 760px) {
  .sidebar-section-title { margin-top:12px; }
  .sidebar-profile-card { margin-bottom:8px; }
  .sidebar-quick-action { min-height:40px; }
}

/* IA NAVIGACIÓN v1 — arquitectura por áreas de trabajo */
.sidebar-navigation { display:grid; gap:4px; }
.sidebar-section { padding:0 4px; }
.sidebar-section-title,.sidebar-section-kicker { margin:14px 10px 6px; font-size:.66rem; line-height:1; font-weight:800; letter-spacing:.11em; text-transform:uppercase; color:var(--text-dim); }
.sidebar-section-kicker { color:var(--primary); }
.sidebar-profile-card { display:flex; align-items:center; gap:10px; margin:0 4px 10px; padding:10px; border:1px solid var(--line); border-radius:15px; background:var(--surface-2); color:var(--text); text-decoration:none; }
.sidebar-profile-card:hover { text-decoration:none; border-color:rgba(90,46,199,.28); background:var(--surface-strong); }
.sidebar-profile-avatar { flex:none; }
.sidebar-profile-copy { min-width:0; display:grid; gap:2px; flex:1; }
.sidebar-profile-copy strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.84rem; }
.sidebar-profile-copy span { color:var(--text-dim); font-size:.7rem; }
.sidebar-profile-arrow { color:var(--text-dim); font-size:1.2rem; }
.sidebar-quick-actions { padding:0 4px 7px; }
.sidebar-quick-action { display:flex; align-items:center; justify-content:center; gap:7px; min-height:36px; border-radius:10px; background:var(--primary); color:#fff; font-size:.76rem; font-weight:800; text-decoration:none; box-shadow:0 7px 18px rgba(90,46,199,.16); }
.sidebar-quick-action:hover { color:#fff; text-decoration:none; transform:translateY(-1px); }
.sidebar-quick-action span { font-size:1rem; line-height:1; }
.sidebar-item { position:relative; min-height:38px; border-radius:10px; }
.sidebar-item span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sidebar-item.active { font-weight:800; }
.sidebar-item.active::before { content:""; position:absolute; left:-4px; top:9px; bottom:9px; width:3px; border-radius:999px; background:var(--primary); }
.sidebar-section-divider { height:1px; margin:14px 10px 0; background:var(--line); }
.admin-nav { margin-top:4px; }
.admin-nav .sidebar-section-title { color:var(--primary); }
.bottom-nav-item.active { color:var(--primary); font-weight:800; }
.bottom-nav-item.active .bottom-nav-icono { transform:translateY(-1px); }
@media (max-width:760px) { .sidebar-section-title { margin-top:12px; } .sidebar-profile-card { margin-bottom:8px; } .sidebar-quick-action { min-height:40px; } }


/* ====================================================================== */
/* P11 — Workspace UX: jerarquía, densidad y responsive                    */
/* ====================================================================== */
.workspace-page { max-width: 1180px; margin: 0 auto; padding-block: 8px 28px; }
.workspace-hero { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding:28px; margin-bottom:18px; border:1px solid var(--line); border-radius:24px; background:linear-gradient(135deg,var(--surface-strong),var(--surface-2)); box-shadow:var(--sombra); }
.workspace-hero h1 { margin:3px 0 6px; font-size:clamp(1.65rem,3vw,2.35rem); }
.workspace-hero p { margin:0; }
.workspace-eyebrow { margin:0 0 6px !important; color:var(--primary); font-size:.68rem !important; line-height:1.1; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.workspace-subtitle { color:var(--text-dim); max-width:700px; }
.workspace-hero-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.workspace-profile-link { white-space:nowrap; font-weight:800; }
.workspace-actions-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:0 0 28px; }
.workspace-action-card { display:flex; align-items:center; gap:12px; min-width:0; padding:15px; border:1px solid var(--line); border-radius:16px; background:var(--surface); color:var(--text); box-shadow:0 8px 22px rgba(20,14,35,.05); transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease; }
.workspace-action-card:hover { text-decoration:none; transform:translateY(-2px); border-color:var(--primary); box-shadow:var(--sombra); }
.workspace-action-card > span:last-child { min-width:0; display:grid; gap:2px; }
.workspace-action-card strong { font-size:.9rem; }
.workspace-action-card small { color:var(--text-dim); font-size:.72rem; line-height:1.35; }
.workspace-action-icon { width:38px; height:38px; flex:0 0 38px; display:grid; place-items:center; border-radius:12px; background:var(--primary-soft); color:var(--primary); }
.workspace-action-icon svg { width:20px; height:20px; }
.workspace-section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin:8px 0 14px; }
.workspace-section-heading h2 { margin:0; }
.workspace-counter { color:var(--text-dim); font-size:.8rem; font-weight:700; }
.workspace-kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:0 0 26px; }
.workspace-kpi { display:grid; gap:3px; padding:17px; border:1px solid var(--line); border-radius:17px; background:var(--surface); color:var(--text); box-shadow:0 8px 22px rgba(20,14,35,.045); }
.workspace-kpi:hover { text-decoration:none; border-color:var(--primary); }
.workspace-kpi span,.workspace-kpi small { color:var(--text-dim); font-size:.72rem; }
.workspace-kpi strong { font-family:var(--font-display); font-size:1.55rem; line-height:1.1; }
.workspace-two-column { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.premium-workspace-card { padding:20px; border:1px solid var(--line); border-radius:18px; background:var(--surface); box-shadow:var(--sombra); }
.card-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.card-heading h2 { margin:0; font-size:1.05rem; }
.workspace-data-list { display:grid; gap:0; margin:0; }
.workspace-data-list div { display:grid; grid-template-columns:110px 1fr; gap:12px; padding:11px 0; border-bottom:1px solid var(--line); }
.workspace-data-list div:last-child { border-bottom:0; }
.workspace-data-list dt { color:var(--text-dim); font-size:.78rem; font-weight:700; }
.workspace-data-list dd { margin:0; font-weight:600; overflow-wrap:anywhere; }
.stack-actions { display:grid; gap:8px; }
.stack-actions .btn-secondary { justify-content:flex-start; }
.dashboard-disclosure,.admin-disclosure { border:1px solid var(--line); border-radius:18px; background:var(--surface); box-shadow:var(--sombra); overflow:hidden; }
.dashboard-disclosure summary,.admin-disclosure summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:17px 19px; font-weight:700; }
.dashboard-disclosure summary::-webkit-details-marker,.admin-disclosure summary::-webkit-details-marker { display:none; }
.dashboard-disclosure summary > span:first-child,.admin-disclosure summary > span:first-child { display:grid; gap:2px; }
.dashboard-disclosure summary small,.admin-disclosure summary small { color:var(--text-dim); font-size:.75rem; font-weight:500; }
.disclosure-chevron { color:var(--text-dim); font-size:1.2rem; transition:transform .18s ease; }
.dashboard-disclosure[open] .disclosure-chevron,.admin-disclosure[open] .disclosure-chevron { transform:rotate(180deg); }
.disclosure-body { padding:0 18px 18px; }
.admin-disclosure { margin-top:16px; }
.admin-disclosure-body { padding:0 18px 18px; }
.empty-state-premium { display:grid; justify-items:start; gap:8px; padding:32px; border:1px dashed var(--line); border-radius:18px; background:var(--surface); color:var(--text-dim); }
.empty-state-premium strong { color:var(--text); font-family:var(--font-display); font-size:1.05rem; }
.empty-state-premium .btn-cta { margin-top:6px; }
.legacy-dashboard-header { margin-top:8px; }

html[data-tema="oscuro"] .workspace-hero,
html[data-tema="oscuro"] .workspace-action-card,
html[data-tema="oscuro"] .workspace-kpi,
html[data-tema="oscuro"] .premium-workspace-card,
html[data-tema="oscuro"] .dashboard-disclosure,
html[data-tema="oscuro"] .admin-disclosure,
html[data-tema="oscuro"] .empty-state-premium {
  background:linear-gradient(180deg,rgba(31,27,49,.94),rgba(21,18,34,.98));
}

@media (max-width: 980px) {
  .workspace-actions-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workspace-kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workspace-two-column { grid-template-columns:1fr; }
}
@media (max-width: 760px) {
  .workspace-page { padding-top:0; }
  .workspace-hero { align-items:flex-start; flex-direction:column; padding:21px; border-radius:18px; }
  .workspace-hero-actions { width:100%; justify-content:flex-start; }
  .workspace-hero-actions > * { flex:1 1 auto; }
  .workspace-actions-grid { grid-template-columns:1fr 1fr; gap:9px; }
  .workspace-action-card { padding:13px; }
  .workspace-action-card small { display:none; }
  .workspace-kpi-grid { gap:9px; }
  .workspace-kpi { padding:14px; }
  .workspace-kpi strong { font-size:1.3rem; }
}
@media (max-width: 480px) {
  .workspace-actions-grid { grid-template-columns:1fr; }
  .workspace-kpi-grid { grid-template-columns:1fr 1fr; }
  .workspace-section-heading { align-items:flex-start; flex-direction:column; }
  .workspace-data-list div { grid-template-columns:1fr; gap:3px; }
  .workspace-hero-actions > * { width:100%; }
  .dashboard-disclosure summary,.admin-disclosure summary { padding:15px; }
  .disclosure-body,.admin-disclosure-body { padding:0 12px 12px; }
}

/* ========================================================================== 
   UX AUDIT — PRODUCT CONSISTENCY / PREMIUM RESPONSIVE LAYER
   ========================================================================== */
:root{
  --ux-radius:18px;
  --ux-radius-sm:12px;
  --ux-shadow:0 16px 40px rgba(24,18,48,.08);
  --ux-shadow-hover:0 20px 48px rgba(24,18,48,.13);
  --ux-focus:0 0 0 4px rgba(91,27,176,.13);
}

.workspace-page{max-width:1180px;margin:0 auto;padding:4px 0 32px;}
.workspace-page > h1,.workspace-page > h2{margin-top:0;}
.page-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:4px 0 24px;padding:24px 26px;border:1px solid var(--line);border-radius:var(--ux-radius);background:linear-gradient(135deg,var(--surface),var(--surface-2));box-shadow:var(--ux-shadow);}
.page-hero h1,.page-hero h2{margin:5px 0 7px;letter-spacing:-.025em;}
.page-hero .hint{margin:0;max-width:760px;}
.eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:.68rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase;color:var(--primary);}

.workspace-page .card,.workspace-page .panel-seccion,.workspace-page .reporte-card,.workspace-page .tarjeta-solicitud{border-radius:var(--ux-radius-sm);border:1px solid var(--line);box-shadow:0 8px 26px rgba(24,18,48,.045);transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease;}
.workspace-page .tarjeta-solicitud:hover,.workspace-page .reporte-card:hover{box-shadow:var(--ux-shadow-hover);border-color:rgba(91,27,176,.2);}

.workspace-page h2{font-size:clamp(1.35rem,2vw,1.8rem);}
.workspace-page h3{font-size:1.02rem;margin:22px 0 10px;}
.workspace-page .hint{line-height:1.55;}

.card-form{border-radius:var(--ux-radius-sm);box-shadow:0 8px 24px rgba(24,18,48,.045);}
.card-form input,.card-form select,.card-form textarea,.premium-form input,.premium-form select,.premium-form textarea{min-height:44px;border-radius:11px;border:1px solid var(--line);background:var(--surface);}
.card-form textarea,.premium-form textarea{min-height:104px;resize:vertical;}
.card-form input:focus,.card-form select:focus,.card-form textarea:focus,.premium-form input:focus,.premium-form select:focus,.premium-form textarea:focus{outline:0;box-shadow:var(--ux-focus);border-color:rgba(91,27,176,.45);}

.btn-cta,.btn-secondary,.btn-link,.btn-small{transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease;}
.btn-cta:hover,.btn-secondary:hover{transform:translateY(-1px);}
.btn-cta{box-shadow:0 8px 20px rgba(91,27,176,.16);}

.filtros-directorio,.tabs-filtro,.tabs-simple{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:5px;border:1px solid var(--line);border-radius:13px;background:var(--surface-2);width:max-content;max-width:100%;}
.filtros-directorio a,.tab-filtro,.tabs-simple a{border-radius:9px;padding:8px 12px;text-decoration:none;white-space:nowrap;font-size:.82rem;font-weight:750;color:var(--text-dim);}
.filtros-directorio a:hover,.tab-filtro:hover,.tabs-simple a:hover,.filtros-directorio .filtro-activo,.tabs-simple a.active,.tab-filtro-activa{background:var(--surface);color:var(--text);box-shadow:0 2px 8px rgba(24,18,48,.07);}

.lista-solicitudes{gap:10px;}
.tarjeta-solicitud{background:var(--surface);padding:0;overflow:hidden;}
.tarjeta-solicitud-link{padding:14px 16px;min-height:66px;}
.tarjeta-solicitud-info{min-width:0;}
.tarjeta-solicitud-info strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tarjeta-solicitud-acciones{padding:0 16px 14px;align-items:center;}

.empty-state{padding:34px 22px;border:1px dashed var(--line);border-radius:14px;background:var(--surface-2);display:grid;gap:7px;text-align:center;}
.empty-state strong{font-size:1rem;}

.grid-cards,.grid-tarjetas{gap:16px;}
.grid-cards .card,.grid-tarjetas .card{padding:20px;}
.grid-cards .card h2,.grid-cards .card h3,.grid-tarjetas .card h2,.grid-tarjetas .card h3{margin-top:7px;}

/* Tables and dense admin views */
.workspace-page table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--surface);}
.workspace-page th{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);background:var(--surface-2);}
.workspace-page th,.workspace-page td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;}
.workspace-page tr:last-child td{border-bottom:0;}

/* Profile */
.page-profile .muro-datos,.page-profile .perfil-layout{max-width:1180px;margin-left:auto;margin-right:auto;}
.page-profile .muro-valoraciones,.page-profile .muro-reputacion{border-radius:var(--ux-radius-sm);}
.perfil-acciones-profesionales{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}

/* Career / portfolio / tours */
.page-career .form-grid,.page-tours .form-grid{padding:22px;border-radius:var(--ux-radius);background:var(--surface);box-shadow:var(--ux-shadow);border:1px solid var(--line);}
.page-career .grid-cards,.page-tours .grid-cards{margin-top:22px;}
.page-career .grid-cards .card,.page-tours .grid-cards .card{min-width:0;}

/* Emergency / public sector / admin */
.page-emergency .panel-header{padding:4px 0 16px;}
.page-emergency .panel-seccion{background:var(--surface);padding:20px;margin-top:16px;}
.page-public-sector .premium-hero{box-shadow:var(--ux-shadow);}
.page-public-sector .finance-kpis article{border-radius:14px;transition:transform .16s ease,box-shadow .16s ease;}
.page-public-sector .finance-kpis article:hover{transform:translateY(-2px);box-shadow:var(--ux-shadow-hover);}
.page-admin-queue .admin-cola-filtros{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:12px;}
.page-admin-queue .reporte-card{padding:20px;background:var(--surface);}

/* Navigation hierarchy */
.sidebar-fb{scrollbar-width:thin;}
.sidebar-section-title{user-select:none;}
.sidebar-item{font-size:.79rem;}
.sidebar-item.active{background:rgba(91,27,176,.08);color:var(--primary);}
.sidebar-item.active::before{box-shadow:0 0 10px rgba(91,27,176,.3);}
.bottom-nav{backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}

/* Touch + tablet */
@media (max-width:980px){
  .workspace-page{max-width:none;}
  .page-hero{align-items:flex-start;}
  .grid-cards,.grid-tarjetas{grid-template-columns:repeat(2,minmax(0,1fr));}
  .page-admin-queue .admin-cola-filtros{grid-template-columns:1fr auto auto;}
}

@media (max-width:760px){
  .workspace-page{padding-bottom:24px;}
  .page-hero{padding:19px 18px;margin-bottom:18px;border-radius:16px;flex-direction:column;align-items:stretch;gap:14px;}
  .page-hero .btn-cta,.page-hero .btn-secondary{width:100%;justify-content:center;}
  .grid-cards,.grid-tarjetas{grid-template-columns:1fr;}
  .workspace-page .card,.workspace-page .panel-seccion{border-radius:14px;}
  .workspace-page table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;}
  .page-admin-queue .admin-cola-filtros{grid-template-columns:1fr;align-items:stretch;}
  .page-admin-queue .admin-cola-filtros .btn-secondary,.page-admin-queue .admin-cola-filtros .btn-link{width:100%;text-align:center;}
  .filtros-directorio,.tabs-filtro,.tabs-simple{width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
  .filtros-directorio::-webkit-scrollbar,.tabs-filtro::-webkit-scrollbar,.tabs-simple::-webkit-scrollbar{display:none;}
  .filtros-directorio a,.tab-filtro,.tabs-simple a{min-height:40px;display:inline-flex;align-items:center;justify-content:center;}
  .card-form{padding:16px;}
  .card-form .grid-2,.card-form .grid-3,.page-career .form-grid,.page-tours .form-grid{grid-template-columns:1fr;}
  .page-career .form-grid .span-2,.page-tours .form-grid .span-2{grid-column:auto;}
  .tarjeta-solicitud-link{padding:13px;gap:10px;}
  .tarjeta-solicitud-acciones{padding:0 13px 13px;flex-wrap:wrap;}
}

@media (max-width:480px){
  .workspace-page{padding-left:0;padding-right:0;}
  .workspace-page h2{font-size:1.3rem;}
  .page-hero{padding:17px 15px;}
  .eyebrow{font-size:.62rem;}
  .btn-cta,.btn-secondary{min-height:42px;}
  .grid-cards .card,.grid-tarjetas .card{padding:16px;}
  .page-profile .perfil-acciones-profesionales .btn-small{flex:1 1 100%;text-align:center;}
  .finance-kpis{grid-template-columns:1fr 1fr!important;}
}

@media (prefers-reduced-motion:reduce){
  .workspace-page *,.workspace-page *::before,.workspace-page *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important;}
}

/* Feature Flags v2 — consola central de producto */
.feature-control-panel { margin-top: 1rem; }
.feature-catalog { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.feature-card { border:1px solid var(--border,#e6e9ef); border-radius:18px; padding:1rem; background:var(--surface,#fff); }
.feature-card-top { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; margin-bottom:.9rem; }
.feature-card h3 { margin:.15rem 0 .25rem; }
.feature-card code { font-size:.72rem; opacity:.62; }
.feature-form { display:grid; gap:.75rem; }
.form-grid-3 { display:grid; grid-template-columns:1fr 1fr 1.5fr; gap:.75rem; }
@media (max-width:980px){ .feature-catalog{grid-template-columns:1fr;} .form-grid-3{grid-template-columns:1fr 1fr;} .form-grid-3 label:last-child{grid-column:1/-1;} }
@media (max-width:600px){ .form-grid-3{grid-template-columns:1fr;} .form-grid-3 label:last-child{grid-column:auto;} .feature-card-top{flex-direction:column;} }

/* ========================================================================== 
   P22 — FRONTEND ART DIRECTION / BOLD VISUAL SYSTEM
   Objetivo: una GigMap más editorial, atrevida y reconocible sin romper
   las vistas existentes. Esta capa redefine el lenguaje visual global y
   mantiene compatibilidad con los componentes ya construidos.
   ========================================================================== */
:root {
  --gm-violet: #6d36ff;
  --gm-violet-deep: #32147a;
  --gm-lime: #d8ff3e;
  --gm-cyan: #56e0e7;
  --gm-pink: #ff5ca8;
  --gm-orange: #ff7a45;
  --gm-ink: #14111f;
  --gm-paper: #faf9ff;
  --gm-grid: rgba(109,54,255,.055);
  --gm-radius-xl: 28px;
  --gm-radius-lg: 20px;
  --gm-radius-md: 14px;
  --gm-ease: cubic-bezier(.2,.8,.2,1);
}

html { scroll-behavior: smooth; }
body {
  background:
    radial-gradient(circle at 8% 0%, rgba(109,54,255,.12), transparent 24rem),
    radial-gradient(circle at 94% 14%, rgba(86,224,231,.10), transparent 22rem),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background-image: linear-gradient(var(--gm-grid) 1px, transparent 1px), linear-gradient(90deg, var(--gm-grid) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.9), transparent 70%);
}
::selection { background: var(--gm-lime); color: #16121e; }
:focus-visible { outline: 0; box-shadow: 0 0 0 3px var(--surface), 0 0 0 6px rgba(109,54,255,.55) !important; }

.topbar {
  height: 70px;
  padding: 0 clamp(14px, 2.5vw, 30px);
  background: color-mix(in srgb, var(--surface-strong) 78%, transparent);
  backdrop-filter: blur(18px) saturate(150%);
  border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
  box-shadow: 0 8px 30px rgba(26,18,53,.055);
}
.logo-img { height: 40px; }
.topbar-nav-iconos a, .topbar-nav-iconos .btn-link {
  width: 42px; height: 42px; padding: 0; justify-content: center;
  border-radius: 13px;
  transition: transform .18s var(--gm-ease), background .18s ease, color .18s ease;
}
.topbar-nav-iconos a:hover, .topbar-nav-iconos .btn-link:hover { transform: translateY(-2px); background: var(--primary-soft); }
.topbar-nav-iconos a.active, .topbar-nav-iconos a[aria-current="page"] { color: var(--primary); background: var(--primary-soft); }
.btn-tema { width: 38px; height: 38px; border-radius: 12px; background: var(--surface); }

.app-shell { max-width: 1680px; gap: 26px; padding: 20px clamp(12px, 2vw, 28px) 44px; }
.sidebar-fb {
  flex-basis: 278px;
  top: 90px;
  padding: 12px;
  border-radius: var(--gm-radius-xl);
  background: color-mix(in srgb, var(--surface-strong) 86%, transparent);
  backdrop-filter: blur(16px);
  border-color: color-mix(in srgb, var(--primary) 11%, var(--line));
  box-shadow: 0 22px 50px rgba(37,25,71,.09);
}
.sidebar-item { min-height: 43px; border-radius: 13px; font-size: .88rem; transition: transform .16s var(--gm-ease), background .16s ease, color .16s ease; }
.sidebar-item:hover { transform: translateX(3px); }
.sidebar-item.active, .sidebar-item[aria-current="page"] {
  position: relative; background: linear-gradient(90deg, rgba(109,54,255,.13), rgba(109,54,255,.045));
  border-color: rgba(109,54,255,.12); color: var(--primary);
}
.sidebar-item.active::before, .sidebar-item[aria-current="page"]::before {
  content: ""; width: 4px; height: 22px; border-radius: 999px; background: var(--gm-violet); position: absolute; left: -12px;
  box-shadow: 0 0 18px rgba(109,54,255,.4);
}
.container { max-width: 1320px; padding-top: 28px; }

h1,h2,h3 { letter-spacing: -.035em; }
h1 { font-weight: 800; }
h2 { font-weight: 800; }
.card-form, .panel-seccion, .publicacion, .premium-card, .feature-card, .radar-card, .recomendacion-card, .colaboracion-item {
  border-radius: var(--gm-radius-lg);
  border-color: color-mix(in srgb, var(--line) 88%, var(--primary));
  box-shadow: 0 12px 32px rgba(30,20,55,.055);
}
.card-form:hover, .panel-seccion:hover, .radar-card:hover, .recomendacion-card:hover, .colaboracion-item:hover { box-shadow: 0 18px 42px rgba(30,20,55,.09); }

.btn-cta, .btn-secondary, :where(button[type="submit"]) {
  min-height: 44px;
  border-radius: 13px;
  padding-inline: 18px;
  transition: transform .18s var(--gm-ease), box-shadow .18s ease, filter .18s ease;
}
.btn-cta { background: linear-gradient(135deg, var(--gm-violet), #9a6cff); box-shadow: 0 12px 24px rgba(109,54,255,.23); }
.btn-cta:hover { transform: translateY(-2px); box-shadow: 0 16px 30px rgba(109,54,255,.3); }
.btn-secondary { border-color: color-mix(in srgb, var(--primary) 18%, var(--line)); }

input, textarea, select { border-radius: 12px !important; min-height: 44px; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
input:hover, textarea:hover, select:hover { border-color: color-mix(in srgb, var(--primary) 28%, var(--line)); }
input:focus, textarea:focus, select:focus { transform: translateY(-1px); }

.badge, .status-pill { border-radius: 999px; font-weight: 800; letter-spacing: .01em; }
.alert-error, .alert-warning, .alert-ok { border-radius: 14px; box-shadow: 0 8px 20px rgba(30,20,55,.04); }

/* Landing: dirección editorial / festival poster */
.landing-hero {
  position: relative; isolation: isolate; overflow: hidden;
  max-width: 1180px; margin: 8px auto 0; padding: clamp(34px, 7vw, 82px) clamp(20px, 6vw, 76px) 34px;
  border: 1px solid rgba(109,54,255,.15); border-radius: 34px;
  background:
    radial-gradient(circle at 82% 18%, rgba(86,224,231,.24), transparent 19%),
    radial-gradient(circle at 15% 86%, rgba(255,92,168,.16), transparent 23%),
    linear-gradient(135deg, color-mix(in srgb, var(--surface-strong) 95%, transparent), color-mix(in srgb, var(--surface-2) 92%, transparent));
  box-shadow: 0 30px 80px rgba(49,29,98,.11), inset 0 1px 0 rgba(255,255,255,.65);
}
.landing-hero::after {
  content: "LIVE • GIGS • CULTURE • PEOPLE • PLACES";
  position: absolute; right: -62px; top: 28%; transform: rotate(90deg);
  font-size: .62rem; font-weight: 900; letter-spacing: .22em; color: var(--primary); opacity: .34;
}
.landing-hero-grid { position:absolute; inset:0; z-index:-1; opacity:.8; background-image: linear-gradient(rgba(109,54,255,.055) 1px, transparent 1px), linear-gradient(90deg, rgba(109,54,255,.055) 1px, transparent 1px); background-size:34px 34px; mask-image: radial-gradient(circle at center, #000, transparent 76%); }
.landing-signal { display:inline-flex; align-items:center; gap:8px; margin:0 auto 24px; padding:7px 11px; border:1px solid rgba(109,54,255,.14); border-radius:999px; background:rgba(255,255,255,.52); color:var(--text-dim); font-size:.64rem; font-weight:900; letter-spacing:.14em; }
.landing-signal-dot { width:7px; height:7px; border-radius:50%; background:#38d39f; box-shadow:0 0 0 5px rgba(56,211,159,.13), 0 0 16px rgba(56,211,159,.7); animation: gmPulse 1.8s ease-in-out infinite; }
@keyframes gmPulse { 50% { transform:scale(.72); opacity:.6; } }
.landing-hero .hero-logo-img { height: 72px; margin-bottom: 18px; }
.landing-hero h1 { max-width: 920px; margin:0 auto 20px; font-size:clamp(2.65rem, 7vw, 6.5rem); line-height:.93; letter-spacing:-.065em; }
.landing-hero h1 em, .landing-section-heading h2 span, .landing-manifesto h2 em { color:var(--gm-violet); font-style:normal; }
.landing-hero p { max-width: 720px; margin:0 auto 30px; color:var(--text-dim); font-size:clamp(1rem,1.5vw,1.18rem); }
.btn-hero-primary { min-width: 190px; }
.btn-hero-secondary { min-width: 155px; }
.hero-signal-row { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin:32px auto 0; }
.hero-signal-row span { display:inline-flex; align-items:center; gap:7px; padding:8px 11px; border-radius:999px; background:rgba(255,255,255,.46); border:1px solid rgba(109,54,255,.09); color:var(--text-dim); font-size:.7rem; font-weight:800; }
.hero-signal-row b { color:var(--gm-violet); font-size:.62rem; }
.landing-proof { max-width:1180px; margin:16px auto 0; display:grid; grid-template-columns:repeat(4,1fr); border:1px solid var(--line); border-radius:18px; overflow:hidden; background:var(--surface); box-shadow:0 10px 28px rgba(30,20,55,.045); }
.landing-proof-item { padding:16px 18px; border-right:1px solid var(--line); }
.landing-proof-item:last-child { border-right:0; }
.landing-proof-item strong { display:block; font-size:.8rem; text-transform:uppercase; letter-spacing:.1em; }
.landing-proof-item span { color:var(--text-dim); font-size:.72rem; }
.landing-roles { max-width:1180px; margin:76px auto 0; }
.section-kicker { font-size:.66rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; color:var(--gm-violet); }
.landing-section-heading { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(260px,.7fr); gap:50px; align-items:end; margin:8px 0 24px; }
.landing-section-heading h2 { margin:0; font-size:clamp(2rem,4vw,3.8rem); line-height:.98; }
.landing-section-heading p { margin:0; color:var(--text-dim); }
.landing-roles .roles-grid { margin-top:0; max-width:none; gap:14px; }
.landing-roles .role-card { position:relative; min-height:270px; overflow:hidden; padding:24px; border-radius:24px; }
.landing-roles .role-card::after { content:""; position:absolute; width:120px; height:120px; right:-36px; bottom:-46px; border-radius:50%; background:rgba(109,54,255,.07); }
.landing-roles .role-card:nth-child(2) { background:linear-gradient(145deg, rgba(109,54,255,.13), rgba(216,255,62,.13)); border-color:rgba(109,54,255,.22); }
.landing-roles .role-card:nth-child(3) { background:linear-gradient(145deg, rgba(86,224,231,.12), rgba(255,255,255,.55)); }
.landing-roles .role-card:nth-child(4) { background:linear-gradient(145deg, rgba(255,92,168,.10), rgba(255,255,255,.55)); }
.role-index { position:absolute; right:18px; top:18px; font-size:.62rem; font-weight:900; letter-spacing:.12em; opacity:.42; }
.landing-roles .role-card-icono { width:54px; height:54px; border-radius:16px; margin-bottom:34px; }
.landing-roles .role-card h3 { font-size:1.35rem; margin-bottom:9px; }
.landing-roles .role-card p { max-width:300px; }
.role-arrow { position:absolute; right:20px; bottom:18px; font-size:1.4rem; font-weight:800; color:var(--gm-violet); }
.landing-manifesto { max-width:1180px; margin:70px auto 30px; display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:center; padding:28px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.landing-manifesto-mark { width:66px; height:66px; display:grid; place-items:center; border-radius:18px; background:var(--gm-ink); color:var(--gm-lime); font-weight:900; letter-spacing:-.06em; transform:rotate(-5deg); box-shadow:8px 8px 0 rgba(109,54,255,.16); }
.landing-manifesto h2 { max-width:850px; margin:6px 0 0; font-size:clamp(1.8rem,3.8vw,3.5rem); line-height:1; }

/* Auth */
.auth-login-premium { max-width:1120px; min-height:calc(100vh - 150px); margin:0 auto; border-radius:30px; overflow:hidden; box-shadow:0 30px 80px rgba(39,25,78,.1); border:1px solid var(--line); }
.auth-login-premium .auth-split-brand { position:relative; overflow:hidden; background:linear-gradient(145deg, var(--gm-ink), #2d185f 62%, #5732b9); color:#fff; padding:clamp(30px,6vw,70px); }
.auth-login-premium .auth-split-brand::before { content:""; position:absolute; width:340px; height:340px; border-radius:50%; right:-120px; top:-100px; background:radial-gradient(circle, rgba(216,255,62,.32), transparent 66%); }
.auth-login-premium .auth-split-brand::after { content:"LIVE NETWORK"; position:absolute; left:28px; bottom:28px; font-size:.6rem; letter-spacing:.2em; font-weight:900; opacity:.45; }
.auth-brand-kicker { position:relative; z-index:1; font-size:.64rem; letter-spacing:.18em; font-weight:900; color:var(--gm-lime); margin-bottom:34px; }
.auth-login-premium .auth-logo-img { position:relative; z-index:1; width:min(250px,70%); height:auto; filter:brightness(0) invert(1); }
.auth-login-premium .auth-split-brand h1 { position:relative; z-index:1; margin:34px 0 12px; color:#fff; font-size:clamp(2.2rem,4.5vw,4.3rem); line-height:.95; }
.auth-login-premium .auth-split-brand p { position:relative; z-index:1; max-width:460px; color:rgba(255,255,255,.72); }
.auth-brand-points { position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:7px; margin-top:28px; }
.auth-brand-points span { padding:7px 9px; border:1px solid rgba(255,255,255,.16); border-radius:999px; font-size:.58rem; font-weight:900; letter-spacing:.12em; }
.auth-login-premium .auth-split-form { padding:clamp(24px,5vw,60px); background:var(--surface); }
.auth-form-heading h2 { margin:6px 0 4px; font-size:clamp(1.8rem,3vw,2.6rem); }
.auth-form-heading p { margin:0 0 20px; color:var(--text-dim); }
.auth-form-card { margin:0; padding:20px; box-shadow:none; background:var(--surface-2); }
.auth-submit { width:100%; }
.auth-forgot { display:block; margin-top:2px; text-align:right; font-size:.82rem; font-weight:700; }
.auth-google { width:100%; border-radius:13px; }
.auth-register { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:22px; padding-top:20px; border-top:1px solid var(--line); color:var(--text-dim); font-size:.82rem; }
.auth-register .btn-secondary { flex:none; }
.auth-verification { text-align:center; color:var(--text-dim); font-size:.78rem; }

/* Media, cards and dense layouts */
img, video, iframe { max-width:100%; }
.publicacion-media, .publicacion img, .evento-imagen, .galeria img { border-radius:16px; }
.publicacion-galeria { gap:6px !important; }
.publicacion-galeria .publicacion-media { border-radius:14px; }
.stats-grid { gap:12px; }
.stats-grid > * { border-radius:16px; border:1px solid var(--line); box-shadow:0 8px 22px rgba(30,20,55,.04); }
.empty-state { border-radius:18px; padding:42px 24px; }
.footer { margin-top:42px; padding:28px 18px 38px; }

/* Motion polish — only where it helps orientation */
@keyframes gmRise { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
.container > * { animation:gmRise .34s var(--gm-ease) both; }
.container > *:nth-child(2) { animation-delay:.025s; }
.container > *:nth-child(3) { animation-delay:.05s; }
.container > *:nth-child(4) { animation-delay:.075s; }

html[data-tema="oscuro"] {
  --gm-ink:#090812;
  --gm-grid:rgba(180,156,255,.055);
}
html[data-tema="oscuro"] .landing-hero { background:radial-gradient(circle at 82% 18%, rgba(86,224,231,.11), transparent 19%), radial-gradient(circle at 15% 86%, rgba(255,92,168,.09), transparent 23%), linear-gradient(135deg, rgba(31,27,51,.96), rgba(20,17,34,.98)); }
html[data-tema="oscuro"] .landing-signal, html[data-tema="oscuro"] .hero-signal-row span { background:rgba(255,255,255,.035); }
html[data-tema="oscuro"] .landing-proof { background:rgba(28,24,47,.9); }
html[data-tema="oscuro"] .landing-roles .role-card:nth-child(2) { background:linear-gradient(145deg, rgba(109,54,255,.18), rgba(216,255,62,.05)); }
html[data-tema="oscuro"] .landing-roles .role-card:nth-child(3) { background:linear-gradient(145deg, rgba(86,224,231,.08), rgba(30,26,48,.9)); }
html[data-tema="oscuro"] .landing-roles .role-card:nth-child(4) { background:linear-gradient(145deg, rgba(255,92,168,.08), rgba(30,26,48,.9)); }

@media (max-width: 900px) {
  .landing-proof { grid-template-columns:repeat(2,1fr); }
  .landing-proof-item:nth-child(2) { border-right:0; }
  .landing-proof-item:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .landing-section-heading { grid-template-columns:1fr; gap:14px; }
  .landing-roles .roles-grid { grid-template-columns:1fr 1fr; }
  .auth-login-premium { grid-template-columns:1fr; }
  .auth-login-premium .auth-split-brand { min-height:360px; }
}
@media (max-width: 760px) {
  body::before { background-size:30px 30px; opacity:.65; }
  .topbar { height:62px; }
  .app-shell { padding:10px 10px 86px; }
  .container { padding:18px 8px 88px; }
  .landing-hero { margin-top:0; border-radius:24px; padding:30px 18px 22px; }
  .landing-hero::after { display:none; }
  .landing-hero .hero-logo-img { height:58px; }
  .landing-hero h1 { font-size:clamp(2.45rem,12vw,4.4rem); }
  .landing-hero p { font-size:.98rem; }
  .hero-actions { flex-direction:column; }
  .btn-hero-primary, .btn-hero-secondary { width:100%; }
  .hero-signal-row { justify-content:flex-start; overflow-x:auto; flex-wrap:nowrap; margin-left:-2px; margin-right:-2px; padding-bottom:2px; }
  .hero-signal-row span { flex:none; }
  .landing-proof { border-radius:15px; }
  .landing-proof-item { padding:13px 12px; }
  .landing-proof-item strong { font-size:.68rem; }
  .landing-proof-item span { font-size:.62rem; }
  .landing-roles { margin-top:52px; }
  .landing-roles .roles-grid { grid-template-columns:1fr; }
  .landing-roles .role-card { min-height:220px; }
  .landing-manifesto { grid-template-columns:1fr; margin-top:52px; padding:24px 8px; }
  .auth-login-premium { min-height:auto; border-radius:22px; margin:0; }
  .auth-login-premium .auth-split-brand { min-height:300px; padding:28px 22px; }
  .auth-login-premium .auth-split-brand h1 { margin-top:26px; }
  .auth-login-premium .auth-split-form { padding:22px 16px 28px; }
  .auth-register { align-items:stretch; flex-direction:column; }
  .auth-register .btn-secondary { width:100%; }
  .bottom-nav { border-top:1px solid var(--line); box-shadow:0 -12px 30px rgba(20,15,35,.1); }
  .bottom-nav-item { min-height:56px; padding-top:7px; }
  .bottom-nav-item.active { background:var(--primary-soft); border-radius:14px; margin:4px; min-height:48px; }
  .sidebar-fb { border-radius:0 24px 24px 0; }
}
@media (max-width: 420px) {
  .landing-proof { grid-template-columns:1fr 1fr; }
  .landing-proof-item { min-height:70px; }
  .landing-hero h1 { letter-spacing:-.055em; }
  .topbar-right { gap:4px; }
  .topbar-nav-iconos a, .topbar-nav-iconos .btn-link { width:38px; height:38px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  .landing-signal-dot, .container > * { animation:none !important; }
}

/* P22 — el login pasa realmente a composición 50/50 en desktop. */
.auth-login-premium { display:grid; grid-template-columns:1.02fr .98fr; align-items:stretch; gap:0; padding:0; }
.auth-login-premium .auth-split-brand,
.auth-login-premium .auth-split-form { width:auto; max-width:none; }
@media (max-width:900px) { .auth-login-premium { grid-template-columns:1fr; } }
html[data-tema="oscuro"] .auth-login-premium .auth-logo-img { filter:none; }

/* ======================================================================
   P23 — PRODUCT POLISH / SCREEN-BY-SCREEN UX
   La capa anterior define la marca. Esta capa hace que cada pantalla
   se sienta como parte del mismo producto: ritmo, foco, densidad y estados.
   ====================================================================== */
:root {
  --gm-border-strong: color-mix(in srgb, var(--primary) 18%, var(--line));
  --gm-card-shadow: 0 14px 38px rgba(25, 17, 48, .055);
  --gm-card-shadow-hover: 0 22px 52px rgba(25, 17, 48, .095);
  --gm-focus: 0 0 0 3px var(--surface), 0 0 0 6px color-mix(in srgb, var(--primary) 55%, transparent);
}

.skip-link {
  position: fixed;
  z-index: 1000;
  left: 14px;
  top: 10px;
  transform: translateY(-150%);
  padding: 10px 14px;
  border-radius: 12px;
  background: var(--gm-ink);
  color: var(--gm-lime) !important;
  font-size: .78rem;
  font-weight: 900;
  box-shadow: 0 12px 30px rgba(0,0,0,.2);
  transition: transform .18s var(--gm-ease);
}
.skip-link:focus { transform: translateY(0); text-decoration:none; }

/* Ritmo de página */
.container > section,
.container > .workspace-page,
.container > .public-sector-page,
.container > .page-settings,
.container > .page-career {
  width: 100%;
}
.container > section > h1:first-child,
.container > section > h2:first-child,
.container > .page-settings > h1:first-child,
.container > .page-career > h1:first-child {
  margin-top: 0;
}

.page-hero,
.workspace-hero,
.premium-hero,
.ps-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-color: var(--gm-border-strong);
}
.page-hero::after,
.workspace-hero::after,
.premium-hero::after,
.ps-hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 180px;
  height: 180px;
  right: -70px;
  top: -90px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--gm-cyan) 18%, transparent), transparent 68%);
  pointer-events: none;
}
.page-hero h1,
.workspace-hero h1,
.premium-hero h1,
.ps-hero h1 { font-size: clamp(1.8rem, 3.6vw, 2.8rem); }

/* Secciones: pequeño gesto editorial que evita que todo parezca una lista */
.section-heading {
  position: relative;
  padding-bottom: 3px;
}
.section-heading::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: -3px;
  width: 34px;
  height: 3px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--gm-violet), var(--gm-lime));
}

/* Cards: profundidad consistente, sin sobredecorar */
.card,
.stat-card,
.stat-box,
.card-form,
.panel-seccion,
.discovery-card,
.reporte-card,
.tarjeta-solicitud,
.feature-card,
.premium-card,
.radar-card,
.recomendacion-card,
.colaboracion-item,
.account-setting-shell,
.account-card-header {
  border-color: var(--line);
  box-shadow: var(--gm-card-shadow);
}
.card:hover,
.stat-card:hover,
.discovery-card:hover,
.reporte-card:hover,
.feature-card:hover,
.account-setting-shell:hover {
  border-color: var(--gm-border-strong);
  box-shadow: var(--gm-card-shadow-hover);
}

.card-heading h2,
.panel-header h2,
.section-heading h2 { font-weight: 850; }

/* Stats más legibles: número primero, contexto después */
.stat-card,
.stat-box {
  position: relative;
  overflow: hidden;
}
.stat-card::after,
.stat-box::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: 10px;
  width: 34px;
  height: 4px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--gm-violet), var(--gm-cyan));
  opacity: .55;
}

/* Formularios: el campo activo debe ser inequívoco */
label { color: var(--text); }
input:focus-visible,
textarea:focus-visible,
select:focus-visible { box-shadow: var(--gm-focus) !important; }
input::placeholder,
textarea::placeholder { color: color-mix(in srgb, var(--text-dim) 72%, transparent); }
input[type="checkbox"], input[type="radio"] { accent-color: var(--gm-violet); }

.form-acciones,
.form-actions,
.account-setting-actions,
.premium-actions,
.inline-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 9px;
}

/* Filtros como control de navegación, no como formulario perdido */
.tabs-filtro,
.tabs-simple,
.filtros-directorio {
  scrollbar-width: thin;
}
.tabs-filtro::-webkit-scrollbar,
.tabs-simple::-webkit-scrollbar,
.filtros-directorio::-webkit-scrollbar { height: 4px; }

/* Tablas y listas densas */
.table-responsive,
.data-table {
  border-radius: 16px;
}
.table-responsive { overflow-x: auto; }
.data-table { width: 100%; border-collapse: separate; border-spacing: 0; overflow: hidden; }
.data-table th {
  font-size: .68rem;
  text-transform: uppercase;
  letter-spacing: .09em;
  color: var(--text-dim);
  background: var(--surface-2);
}
.data-table td,
.data-table th { padding: 12px 14px; border-bottom: 1px solid var(--line); }
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover { background: color-mix(in srgb, var(--primary-soft) 42%, transparent); }

/* Feed / contenido social */
.feed,
.contenido-principal { max-width: 920px; margin-inline: auto; }
.lista-publicaciones { gap: 16px; }
.publicacion {
  position: relative;
  overflow: hidden;
}
.publicacion::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--gm-violet), transparent 72%);
  opacity: .32;
}
.publicacion:hover::before { opacity: .85; }

/* Empty states: más útiles y menos “página vacía” */
.empty-state {
  position: relative;
  background: linear-gradient(145deg, var(--surface), var(--surface-2));
  border-style: solid;
  border-color: var(--line);
}
.empty-state::before {
  content: "✦";
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  margin: 0 auto 8px;
  border-radius: 12px;
  background: var(--gm-ink);
  color: var(--gm-lime);
  font-size: 1rem;
}

/* Sidebar: menos “menú de administración”, más workspace */
.sidebar-fb { overflow-y: auto; scrollbar-width: thin; }
.sidebar-fb::-webkit-scrollbar { width: 5px; }
.sidebar-fb::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--primary) 25%, transparent); border-radius: 99px; }
.sidebar-item.active,
.sidebar-item[aria-current="page"] { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary) 12%, transparent); }
.sidebar-item .icono-nav { flex: 0 0 auto; }

/* El JS añade .gm-area-title para crear jerarquía sin duplicar HTML en 100 vistas. */
.gm-area-title {
  margin: 18px 10px 5px;
  font-size: .61rem;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-weight: 900;
  color: var(--text-dim);
}
.gm-area-title:first-child { margin-top: 4px; }

/* Navegación móvil: “dock” flotante, no barra pegada a la pantalla */
.bottom-nav {
  margin: 0 10px 10px;
  border: 1px solid var(--line);
  border-radius: 20px;
  bottom: 10px;
  width: auto;
  left: 10px;
  right: 10px;
  box-shadow: 0 18px 45px rgba(18, 13, 35, .15);
  backdrop-filter: blur(18px) saturate(150%);
}
.bottom-nav-item { border-radius: 14px; }
.bottom-nav-item.active { background: color-mix(in srgb, var(--primary-soft) 90%, transparent); }

/* Acciones destructivas: siempre separadas visualmente del camino principal */
.btn-danger { box-shadow: none; }
form:has(> .btn-danger) { isolation: isolate; }

/* Estados de interacción */
button, a, .card, .stat-card, .discovery-card, .reporte-card { -webkit-tap-highlight-color: transparent; }
button:active:not(:disabled),
a.btn-cta:active,
a.btn-secondary:active { transform: translateY(1px); }

/* Dark mode: mantener contraste y el gesto lime sin romper la UI */
html[data-tema="oscuro"] .gm-area-title { color: #9f95bd; }
html[data-tema="oscuro"] .empty-state::before { background: #08070e; }
html[data-tema="oscuro"] .data-table th { background: rgba(255,255,255,.035); }
html[data-tema="oscuro"] .data-table tbody tr:hover { background: rgba(180,156,255,.07); }
html[data-tema="oscuro"] .bottom-nav { box-shadow: 0 18px 45px rgba(0,0,0,.42); }

@media (max-width: 760px) {
  .page-hero,
  .workspace-hero,
  .premium-hero,
  .ps-hero { border-radius: 18px; padding: 20px !important; }
  .page-hero h1,
  .workspace-hero h1,
  .premium-hero h1,
  .ps-hero h1 { font-size: clamp(1.65rem, 8vw, 2.25rem); }
  .section-heading { gap: 10px; }
  .section-heading h2 { font-size: 1.12rem; }
  .card,
  .stat-card,
  .card-form,
  .panel-seccion,
  .discovery-card,
  .reporte-card,
  .premium-card { border-radius: 16px; }
  .form-acciones,
  .form-actions,
  .account-setting-actions,
  .premium-actions { align-items: stretch; }
  .form-acciones > .btn-cta,
  .form-acciones > .btn-secondary,
  .form-acciones > .btn-danger,
  .form-actions > .btn-cta,
  .form-actions > .btn-secondary { flex: 1 1 160px; }
  .gm-area-title { margin-top: 14px; }
  .bottom-nav { margin: 0 7px 7px; left: 7px; right: 7px; bottom: 7px; }
}

@media (prefers-reduced-motion: reduce) {
  .card:hover,
  .stat-card:hover,
  .discovery-card:hover,
  .reporte-card:hover,
  .feature-card:hover,
  .account-setting-shell:hover { transform: none !important; }
}


/* ========================================================================== */
/* P24 — UX FLOW / SCREEN-BY-SCREEN POLISH                                  */
/* ========================================================================== */
:root {
  --gm-content-max: 1120px;
  --gm-readable: 760px;
  --gm-page-gap: clamp(18px, 2.8vw, 34px);
  --gm-hero-shadow: 0 24px 70px rgba(35, 20, 78, .11);
}

/* A single rhythm for every workspace screen. */
.workspace-page,
.feed,
.form-page,
.public-sector-page,
.page-contracts,
.page-events,
.page-directory,
.page-chat {
  width: min(100%, var(--gm-content-max));
  margin-inline: auto;
}

.workspace-page > :first-child,
.feed > :first-child { margin-top: 0; }

.workspace-page h2,
.feed h2 { letter-spacing: -.035em; }

.page-hero,
.workspace-hero,
.premium-hero,
.ps-hero {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid var(--line);
  box-shadow: var(--gm-hero-shadow);
}

.page-hero::after,
.workspace-hero::after,
.premium-hero::after,
.ps-hero::after {
  content: "";
  position: absolute;
  width: 220px;
  height: 220px;
  right: -70px;
  top: -110px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--gm-cyan) 22%, transparent), transparent 68%);
  pointer-events: none;
  z-index: -1;
}

.gm-page-intro {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: end;
  gap: 20px;
  margin-bottom: 22px;
}
.gm-page-intro-copy { min-width: 0; }
.gm-page-intro .eyebrow { margin-bottom: 7px; }
.gm-page-intro h1,
.gm-page-intro h2 { margin: 0; font-size: clamp(1.75rem, 3vw, 2.55rem); line-height: 1.02; letter-spacing: -.045em; }
.gm-page-intro p { max-width: var(--gm-readable); margin: 9px 0 0; color: var(--text-dim); line-height: 1.6; }
.gm-page-intro-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:9px; }

/* Make the primary action visually obvious without making secondary actions disappear. */
.workspace-page .btn-cta,
.feed .btn-cta { font-weight: 800; }
.workspace-page .btn-secondary,
.feed .btn-secondary { background: color-mix(in srgb, var(--surface-strong) 82%, var(--surface-2)); }

/* Search/filter bars become compact control surfaces. */
.form-filtro-ciudad,
.mapa-toolbar,
.tabs-filtro,
.filtros-directorio,
.tabs-simple {
  border-radius: 16px;
}
.form-filtro-ciudad {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(170px,.45fr) auto auto;
  align-items: end;
  gap: 10px;
  padding: 13px;
}
.form-filtro-ciudad label { min-width: 0; }
.form-filtro-ciudad + .form-filtro-ciudad { margin-top: 10px; }

/* Lists read like objects, not database rows. */
.lista-solicitudes,
.lista-conversaciones,
.lista-eventos,
.lista-perfiles { gap: 12px; }
.tarjeta-solicitud,
.conversacion-item,
.perfil-card {
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
}
.tarjeta-solicitud:hover,
.conversacion-item:hover,
.perfil-card:hover {
  transform: translateY(-2px);
  border-color: var(--gm-border-strong);
  box-shadow: 0 16px 35px rgba(24, 16, 48, .08);
}
.tarjeta-solicitud-link,
.conversacion-item { min-width: 0; }
.tarjeta-solicitud-info,
.conversacion-item-texto { min-width: 0; }
.tarjeta-solicitud-info strong,
.conversacion-item-texto strong { letter-spacing: -.015em; }

/* Chat: emphasize the last message and make unread state feel intentional. */
.conversacion-item-texto p {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.contador-no-leidos { box-shadow: 0 0 0 4px var(--primary-soft); }

/* Profile: turn the identity area into a strong editorial focal point. */
.muro-cabecera { max-width: var(--gm-content-max); }
.muro-portada {
  min-height: clamp(190px, 27vw, 320px);
  background-position: center;
  background-size: cover;
  border-radius: 22px 22px 0 0;
  position: relative;
}
.muro-portada::after {
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, transparent 40%, rgba(12,9,24,.38));
  pointer-events:none;
}
.muro-datos {
  position: relative;
  margin-top: -48px;
  border-radius: 0 0 22px 22px;
  padding: 0 24px 24px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-top: 0;
  box-shadow: var(--gm-card-shadow);
}
.muro-avatar-wrap { position: relative; z-index: 2; }
.muro-avatar-wrap .avatar-xl { box-shadow: 0 0 0 7px var(--surface), 0 14px 35px rgba(20,14,40,.18); }
.muro-datos h2 { letter-spacing: -.04em; font-size: clamp(1.55rem, 3vw, 2.35rem); }
.muro-stats strong { font-weight: 850; }

/* Composer: treat publishing as the most important social action. */
.composer {
  border: 1px solid var(--line) !important;
  box-shadow: 0 16px 38px rgba(36, 20, 75, .07) !important;
  background: linear-gradient(145deg, var(--surface-strong), var(--surface)) !important;
}
.composer:focus-within { border-color: color-mix(in srgb, var(--gm-violet) 35%, var(--line)) !important; box-shadow: 0 20px 50px rgba(74, 38, 160, .12) !important; }

/* Map: toolbar should float over the map, visually separating controls from geography. */
.mapa-toolbar {
  position: relative;
  z-index: 3;
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:10px;
  padding:9px;
  background: color-mix(in srgb, var(--surface) 90%, transparent);
  border:1px solid var(--line);
  box-shadow: 0 12px 30px rgba(25,17,48,.08);
  backdrop-filter: blur(16px) saturate(140%);
}
.mapa-toolbar label { display:inline-flex; align-items:center; gap:7px; padding:8px 10px; border-radius:11px; background:var(--surface-2); font-size:.84rem; font-weight:700; }
.mapa-toolbar .btn-secundario { margin-left:auto; }
.gigmap-map { min-height: clamp(430px, 62vh, 700px); border:1px solid var(--line); border-radius:22px; overflow:hidden; box-shadow:var(--gm-hero-shadow); }

/* Dense forms: preserve breathing room while keeping the next action nearby. */
.card-form { gap: 15px; }
.card-form > label { line-height: 1.35; }
.card-form > label > input,
.card-form > label > select,
.card-form > label > textarea { margin-top: 6px; }

/* Empty states should explain the next move. */
.empty-state,
.lista-publicaciones > p:only-child,
.lista-conversaciones > p:only-child,
.lista-solicitudes > p:only-child,
.lista-perfiles > p:only-child,
.lista-eventos > p:only-child {
  min-height: 150px;
  display:grid;
  place-items:center;
  text-align:center;
  padding:28px;
}

/* Reduce the visual noise of utility copy while preserving hierarchy. */
.hint { line-height: 1.5; }
.workspace-page > h3,
.workspace-page .panel-seccion > h3 { letter-spacing: -.02em; }

@media (max-width: 900px) {
  .gm-page-intro { grid-template-columns: 1fr; align-items:start; }
  .gm-page-intro-actions { justify-content:flex-start; }
  .form-filtro-ciudad { grid-template-columns: 1fr 1fr; }
  .form-filtro-ciudad > .btn-secondary,
  .form-filtro-ciudad > .btn-link { justify-self:start; }
}

@media (max-width: 640px) {
  .gm-page-intro { margin-bottom:16px; }
  .gm-page-intro h1,
  .gm-page-intro h2 { font-size: 1.7rem; }
  .form-filtro-ciudad { grid-template-columns: 1fr; }
  .form-filtro-ciudad > .btn-secondary,
  .form-filtro-ciudad > .btn-cta { width:100%; }
  .mapa-toolbar .btn-secundario { margin-left:0; width:100%; }
  .mapa-toolbar label { flex:1 1 30%; justify-content:center; }
  .gigmap-map { min-height: 60vh; border-radius:18px; }
  .muro-datos { margin-top:-34px; padding:0 15px 20px; }
  .muro-portada { min-height:200px; border-radius:18px 18px 0 0; }
}

@media (prefers-reduced-motion: reduce) {
  .tarjeta-solicitud,
  .conversacion-item,
  .perfil-card { transition:none; }
}

.gm-home-signal { display:flex; align-items:center; gap:8px; padding:15px 17px; margin:4px 0 10px; background:linear-gradient(100deg,color-mix(in srgb,var(--gm-violet) 7%,var(--surface)),var(--surface)); }
.gm-home-signal strong { font-size:1.25rem; letter-spacing:-.04em; }
.page-opportunities > .panel-header { margin-top:14px; }
.page-opportunities > .panel-header:empty { display:none !important; }

/* P25 — Conversion & journey polish */
.conversion-progress{display:flex;gap:0;margin:0 0 1.35rem;padding:0;border-bottom:1px solid var(--gm-border-strong,#dfe2ea);overflow:hidden}
.conversion-progress span{position:relative;flex:1;padding:.65rem .45rem;text-align:center;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted,#697080)}
.conversion-progress span.is-active{color:var(--text,#17181c)}
.conversion-progress span.is-active:after{content:"";position:absolute;left:12%;right:12%;bottom:-1px;height:3px;background:var(--gm-violet,#7c3aed);border-radius:999px}
.account-intent{display:grid;gap:.15rem;margin:.25rem 0 .7rem;padding:.8rem 1rem;border:1px solid var(--gm-border-strong,#dfe2ea);border-radius:14px;background:linear-gradient(135deg,rgba(124,58,237,.07),rgba(34,211,238,.05))}
.account-intent strong{font-size:.9rem}
.account-intent .hint{margin:0}
.btn-cta-primary-flow{display:flex!important;align-items:center;justify-content:center;gap:.7rem;min-height:48px}
.btn-cta-primary-flow span{transition:transform .2s ease}.btn-cta-primary-flow:hover span{transform:translateX(4px)}
.profile-onboarding-page{max-width:720px;margin-inline:auto}
.onboarding-lead{max-width:600px;font-size:1.05rem}
.conversion-journey{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem;padding:.55rem .75rem;border:1px solid var(--gm-border-strong,#dfe2ea);border-radius:999px;background:rgba(255,255,255,.55);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted,#697080)}
.conversion-journey span{padding:.2rem .4rem}.conversion-journey .is-current{color:var(--text,#17181c);background:rgba(124,58,237,.1);border-radius:999px}
.opportunity-toolbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:0 0 1rem;padding:1rem 1.1rem;border:1px solid var(--gm-border-strong,#dfe2ea);border-radius:16px;background:rgba(255,255,255,.65)}
.opportunity-toolbar>div{display:grid;gap:.15rem}.opportunity-toolbar .hint{margin:0}.opportunity-count{white-space:nowrap;font-weight:800;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.opportunity-title{font-size:1.02rem;line-height:1.2}
.professional-hero .hero-flow{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin-top:1rem;font-size:.76rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.professional-hero .hero-flow span{padding:.38rem .55rem;border:1px solid var(--gm-border-strong,#dfe2ea);border-radius:999px;background:rgba(255,255,255,.5)}.professional-hero .hero-flow b{opacity:.45}
.professional-card-featured{position:relative;overflow:hidden}.professional-card-featured:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--gm-violet,#7c3aed)}.card-kicker{display:block;margin-bottom:.45rem;font-size:.68rem;font-weight:900;letter-spacing:.08em;color:var(--gm-violet,#7c3aed)}
@media (max-width:700px){.conversion-journey{border-radius:14px;overflow:auto;flex-wrap:nowrap}.conversion-journey span{white-space:nowrap}.opportunity-toolbar{align-items:flex-start;flex-direction:column}.opportunity-count{font-size:.7rem}.professional-hero .hero-flow{gap:.35rem}.professional-hero .hero-flow b{display:none}.professional-hero .hero-flow span{font-size:.65rem}}
@media (prefers-reduced-motion:reduce){.btn-cta-primary-flow span{transition:none}}
.role-quick-picks{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:0 0 .55rem}.role-quick-pick{border:1px solid var(--gm-border-strong,#dfe2ea);border-radius:12px;background:var(--surface,#fff);padding:.65rem .5rem;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer}.role-quick-pick[aria-pressed="true"]{border-color:var(--gm-violet,#7c3aed);box-shadow:0 0 0 2px rgba(124,58,237,.12);background:rgba(124,58,237,.06)}.role-select-enhanced{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}@media(max-width:520px){.role-quick-picks{grid-template-columns:1fr}.conversion-progress span{font-size:.65rem}}

/* ========================================================================== */
/* P26 — DESIGN SYSTEM + ACCESSIBILITY DEEP DIVE                             */
/* ========================================================================== */
:root {
  --gm-space-1: 4px;
  --gm-space-2: 8px;
  --gm-space-3: 12px;
  --gm-space-4: 16px;
  --gm-space-5: 20px;
  --gm-space-6: 24px;
  --gm-space-7: 32px;
  --gm-control-h: 44px;
  --gm-control-h-sm: 40px;
  --gm-touch: 44px;
  --gm-focus-ring: 0 0 0 3px var(--surface), 0 0 0 6px color-mix(in srgb, var(--primary) 72%, transparent);
  --gm-danger-soft: color-mix(in srgb, var(--coral) 10%, var(--surface));
  --gm-success-soft: color-mix(in srgb, var(--green) 11%, var(--surface));
  --gm-warning-soft: color-mix(in srgb, var(--brass) 12%, var(--surface));
}

/* Focus is always visible, including for keyboard users navigating links. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 0 !important;
  box-shadow: var(--gm-focus-ring) !important;
}
:where(a, button, summary):focus:not(:focus-visible) { outline: 0; }

/* Never rely on colour alone for disabled controls. */
:where(button, input, select, textarea):disabled,
:where(button, input, select, textarea)[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: .58;
  filter: saturate(.7);
}

/* Native controls: one predictable touch target across the product. */
:where(button, [type="button"], [type="submit"], [type="reset"], select) {
  min-height: var(--gm-control-h);
}
:where(input:not([type="checkbox"]):not([type="radio"]), textarea, select) {
  font: inherit;
  color: var(--text);
}
:where(input:not([type="checkbox"]):not([type="radio"]), textarea, select) {
  accent-color: var(--gm-violet);
}

/* Error / success states can be applied server-side without changing markup. */
:where(input, select, textarea)[aria-invalid="true"] {
  border-color: var(--coral) !important;
  background: var(--gm-danger-soft);
}
:where(input, select, textarea)[aria-invalid="true"]:focus-visible {
  box-shadow: 0 0 0 3px var(--surface), 0 0 0 6px color-mix(in srgb, var(--coral) 62%, transparent) !important;
}
.form-error,
.field-error {
  display: block;
  margin-top: 5px;
  color: var(--coral);
  font-size: .78rem;
  font-weight: 700;
  line-height: 1.45;
}
.form-success { background: var(--gm-success-soft); border-color: color-mix(in srgb, var(--green) 35%, var(--line)); }
.form-warning { background: var(--gm-warning-soft); border-color: color-mix(in srgb, var(--brass) 35%, var(--line)); }

/* Checkboxes/radios: preserve a comfortable hit area without distorting native UI. */
:where(label):has(> input[type="checkbox"], > input[type="radio"]) {
  min-height: var(--gm-touch);
}

/* Disclosure / menu affordances: keyboard and pointer states feel intentional. */
details.disclosure,
details.card.disclosure { overflow: clip; }
details > summary {
  min-height: var(--gm-touch);
  display: flex;
  align-items: center;
  gap: 9px;
  cursor: pointer;
  list-style: none;
  font-weight: 800;
}
details > summary::-webkit-details-marker { display: none; }
details > summary::after {
  content: "⌄";
  margin-left: auto;
  font-size: 1rem;
  transition: transform .18s var(--gm-ease);
  opacity: .65;
}
details[open] > summary::after { transform: rotate(180deg); }

/* Dense tables remain readable and usable on touch devices. */
.table-responsive { position: relative; }
.table-responsive::after {
  content: "Desliza para ver más";
  display: none;
  position: absolute;
  right: 10px;
  bottom: 8px;
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--gm-ink);
  color: var(--gm-lime);
  font-size: .62rem;
  font-weight: 900;
  letter-spacing: .04em;
  pointer-events: none;
}
.data-table th { position: sticky; top: 0; z-index: 1; }
.data-table td { vertical-align: middle; }

/* Loading primitives: usable by server-rendered and future async screens. */
.gm-skeleton {
  display: block;
  min-height: 1em;
  border-radius: 8px;
  background: linear-gradient(90deg, var(--surface-2) 25%, color-mix(in srgb, var(--surface-strong) 85%, var(--primary-soft)) 50%, var(--surface-2) 75%);
  background-size: 220% 100%;
  animation: gmSkeleton 1.25s linear infinite;
}
.gm-skeleton-line { width: 100%; height: 12px; margin: 7px 0; }
.gm-skeleton-line.short { width: 42%; }
.gm-skeleton-block { min-height: 110px; }
@keyframes gmSkeleton { to { background-position: -220% 0; } }

/* Async form feedback: visual state is subtle and does not change layout. */
form.is-submitting { position: relative; }
form.is-submitting::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--gm-violet), var(--gm-cyan), var(--gm-lime));
  transform-origin: left;
  animation: gmSubmitProgress 1.1s ease-in-out infinite;
}
@keyframes gmSubmitProgress { 0%,100% { transform: scaleX(.15); opacity:.45; } 50% { transform: scaleX(.8); opacity:1; } }

/* Link affordance for long-form content. */
.contenido-principal :where(p, li) a:not(.btn-cta):not(.btn-secondary):not(.btn-link) {
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
.contenido-principal :where(p, li) a:not(.btn-cta):not(.btn-secondary):not(.btn-link):hover { text-decoration-thickness: 2px; }

/* Mobile: touch targets first, density second. */
@media (max-width: 760px) {
  :where(button, [type="button"], [type="submit"], [type="reset"], select) { min-height: 46px; }
  .table-responsive::after { display: block; }
  .data-table th { position: static; }
}

@media (max-width: 480px) {
  :where(input:not([type="checkbox"]):not([type="radio"]), textarea, select) { min-height: 46px; }
  .gm-skeleton-block { min-height: 88px; }
}

html[data-tema="oscuro"] {
  --gm-focus-ring: 0 0 0 3px var(--surface-strong), 0 0 0 6px color-mix(in srgb, var(--primary) 78%, transparent);
  --gm-danger-soft: color-mix(in srgb, var(--coral) 15%, var(--surface));
  --gm-success-soft: color-mix(in srgb, var(--green) 15%, var(--surface));
  --gm-warning-soft: color-mix(in srgb, var(--brass) 15%, var(--surface));
}

@media (prefers-reduced-motion: reduce) {
  .gm-skeleton,
  form.is-submitting::after,
  details > summary::after { animation: none !important; transition: none !important; }
}

/* P27 — QA integral: consistencia entre roles, estados y responsive */
:root {
  --gm-sticky-offset: max(12px, env(safe-area-inset-bottom));
  --gm-content-measure: 1180px;
}

/* Route/role context is exposed by main.js as data attributes; these hooks
   keep the final pass deterministic without multiplying template classes. */
body[data-gm-role="grupo"] .btn-solicitar-contratacion,
body[data-gm-role="local"] .btn-solicitar-contratacion { display: none; }

/* Primary action hierarchy: one visually dominant action per action group. */
:where(.page-hero, .workspace-hero, .premium-hero, .ps-hero, .panel-header, .muro-acciones, .form-actions, .inline-actions) {
  --gm-action-gap: 9px;
}
:where(.page-hero, .workspace-hero, .premium-hero, .ps-hero) .btn-cta:first-of-type,
:where(.muro-acciones, .form-actions, .inline-actions) .btn-cta:first-of-type {
  box-shadow: 0 10px 24px color-mix(in srgb, var(--primary) 18%, transparent);
}

/* Consistent keyboard navigation for composite surfaces. */
:where(.card, .premium-card, .panel, .card-form, .workspace-page, .page-hero):focus-visible {
  outline: none;
  box-shadow: var(--gm-focus-ring), var(--gm-shadow-card, 0 12px 34px rgba(20, 14, 40, .08));
}

/* Dialog-like mobile sheets already present in the app should never exceed
   the viewport or hide their close action behind the keyboard. */
:where(.modal, .dialog, .drawer, .sheet, [role="dialog"]) {
  max-height: min(90dvh, 760px);
  overscroll-behavior: contain;
}
:where(.modal, .dialog, .drawer, .sheet, [role="dialog"]) :where(.modal-body, .dialog-body, .drawer-body, .sheet-body) {
  overflow: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Long labels and action clusters must wrap rather than force horizontal
   overflow on narrow devices. */
:where(.panel-header, .section-heading, .page-hero, .workspace-hero, .premium-hero, .form-actions, .inline-actions, .muro-acciones) {
  min-width: 0;
}
:where(.panel-header, .section-heading, .page-hero, .workspace-hero, .premium-hero) > * { min-width: 0; }
:where(.panel-header h1, .panel-header h2, .panel-header h3, .section-heading h1, .section-heading h2, .section-heading h3) {
  overflow-wrap: anywhere;
}

/* Images cannot silently distort their cards during slow loading. */
:where(img:not(.avatar-img):not(.logo-img)) { max-width: 100%; }
:where(.card img, .premium-card img, .feed-media img, .evento-media img, .muro-portada img) {
  content-visibility: auto;
}

/* Mobile action areas: when the existing markup provides an action cluster,
   it gets a comfortable wrapping rhythm instead of tiny inline buttons. */
@media (max-width: 760px) {
  :where(.page-hero, .workspace-hero, .premium-hero, .ps-hero) {
    gap: 16px;
  }
  :where(.page-hero, .workspace-hero, .premium-hero, .ps-hero) :where(.btn-cta, .btn-secondary, .btn-danger) {
    width: 100%;
    justify-content: center;
  }
  :where(.form-actions, .inline-actions, .muro-acciones) {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gm-action-gap, 9px);
  }
  :where(.form-actions, .inline-actions, .muro-acciones) > * {
    min-width: min(100%, 180px);
  }
  :where(.muro-acciones) .inline-form { flex: 1 1 180px; }
  :where(.muro-acciones) .inline-form > button,
  :where(.muro-acciones) > a { width: 100%; justify-content: center; }

  /* Safe-area aware bottom spacing for the existing floating navigation. */
  body.con-nav-inferior .container { padding-bottom: calc(96px + var(--gm-sticky-offset)); }
}

@media (max-width: 480px) {
  :where(.panel-header, .section-heading) { align-items: flex-start; }
  :where(.panel-header, .section-heading) :where(.badge, .status-pill) { max-width: 100%; white-space: normal; }
  :where(.data-table) { font-size: .82rem; }
}

@media (min-width: 761px) {
  body[data-gm-breakpoint="desktop"] :where(.page-hero, .workspace-hero, .premium-hero, .ps-hero) {
    max-width: var(--gm-content-measure);
  }
}

/* High-contrast preference: reinforce borders and non-text affordances. */
@media (prefers-contrast: more) {
  :where(button, a, input, textarea, select, .card, .premium-card, .panel, .badge, .status-pill) {
    border-width: 2px;
  }
  :where(.hint, .texto-secundario) { opacity: 1; }
}

/* Prevent animation-driven layout changes for users who request reduced
   motion, including P27's runtime state transitions. */
@media (prefers-reduced-motion: reduce) {
  :where(*, *::before, *::after) { scroll-behavior: auto !important; }
}

/* ──────────────────────────────────────────────────────────────────────────
   GIGMAP · PROJECTS / FESTIVALS EXPERIENCE
   Scoped visual layer: replaces the legacy utilitarian project cards.
   ────────────────────────────────────────────────────────────────────────── */
.page-projects{max-width:1180px!important;padding-bottom:72px}
.projects-hero{position:relative;overflow:hidden;min-height:310px;margin:0 0 18px;padding:42px 44px;border:1px solid rgba(116,91,255,.24);border-radius:28px;background:radial-gradient(circle at 82% 22%,rgba(80,221,255,.16),transparent 28%),radial-gradient(circle at 68% 90%,rgba(210,61,255,.15),transparent 32%),linear-gradient(135deg,#151127,#21153c 54%,#12172c);color:#fff;display:flex;align-items:center;justify-content:space-between;box-shadow:0 24px 60px rgba(32,18,74,.18)}
.projects-hero:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.12;background-image:linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(90deg,#000,transparent 75%)}
.projects-hero-copy{position:relative;z-index:2;max-width:700px}.projects-kicker,.projects-section-label{display:inline-flex;align-items:center;gap:8px;font-size:.68rem;letter-spacing:.16em;font-weight:900;text-transform:uppercase}.projects-kicker{color:#c9ff55}.projects-hero h1{margin:10px 0 12px;font-size:clamp(2.25rem,5vw,4.7rem);line-height:.94;letter-spacing:-.055em}.projects-hero p{max-width:650px;margin:0;color:rgba(255,255,255,.7);font-size:1rem;line-height:1.65}.projects-hero-actions{display:flex;align-items:center;gap:16px;margin-top:26px}.projects-hero .btn-cta{border:0;box-shadow:0 12px 28px rgba(0,0,0,.25)}.projects-hero-note{font-size:.78rem;color:rgba(255,255,255,.58)}.projects-hero-note strong{color:#fff;font-size:1rem}
.projects-hero-orbit{position:relative;width:270px;height:270px;flex:0 0 270px;margin-right:28px;z-index:1}.projects-orbit-ring{position:absolute;border:1px solid rgba(255,255,255,.15);border-radius:50%;inset:18px}.ring-b{inset:50px;border-color:rgba(201,255,85,.22);transform:rotate(24deg)}.projects-orbit-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:102px;height:102px;border-radius:28px;display:grid;place-content:center;text-align:center;background:linear-gradient(145deg,#a8ff4d,#d9ff76);color:#11152a;box-shadow:0 0 0 10px rgba(201,255,85,.08),0 18px 50px rgba(0,0,0,.28);font-size:.7rem;letter-spacing:.12em}.projects-orbit-core strong{font-size:1.35rem;letter-spacing:-.05em}.projects-orbit-node{position:absolute;padding:7px 10px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.08);backdrop-filter:blur(8px);font-size:.58rem;font-weight:900;letter-spacing:.12em}.node-a{right:0;top:50px}.node-b{left:4px;bottom:50px}.node-c{right:22px;bottom:18px}
.projects-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:26px}.projects-kpi{padding:18px 20px;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 8px 28px rgba(28,18,66,.05)}.projects-kpi span,.projects-kpi small{display:block;color:var(--text-dim);font-size:.7rem}.projects-kpi strong{display:block;margin:6px 0 2px;font-size:1.65rem;letter-spacing:-.04em}.projects-kpi-accent{background:linear-gradient(135deg,rgba(201,255,85,.15),rgba(86,214,255,.08));border-color:rgba(130,190,65,.28)}
.projects-builder,.project-detail-main,.project-detail-side{border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 12px 40px rgba(28,18,66,.055)}.projects-builder{overflow:hidden;margin-bottom:38px}.projects-builder-head,.projects-list-head,.projects-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.projects-builder-head{padding:26px 28px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--surface-2),var(--surface))}.projects-section-label{color:var(--primary)}.projects-builder h2,.projects-list-head h2,.projects-panel-head h2{margin:5px 0 0;font-size:1.3rem;letter-spacing:-.025em}.projects-builder p,.projects-side-copy{margin:5px 0 0;color:var(--text-dim);font-size:.82rem;line-height:1.5}.projects-step{font-size:.68rem;font-weight:900;color:var(--text-dim);white-space:nowrap}.projects-step i{display:inline-block;width:30px;height:1px;background:var(--line);vertical-align:middle;margin:0 7px}.projects-form{display:grid;grid-template-columns:minmax(0,1fr) 260px}.projects-form-main{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:26px}.projects-field{display:grid;gap:7px}.projects-field-wide{grid-column:1/-1}.projects-field span{font-size:.73rem;font-weight:800;color:var(--text-dim)}.projects-field em{font-style:normal;font-weight:600;opacity:.6}.projects-field input,.projects-field select,.projects-field textarea,.project-add-form select{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--text);padding:12px 13px;font:inherit;outline:none;transition:border-color .16s,box-shadow .16s,background .16s}.projects-field textarea{resize:vertical;min-height:88px}.projects-field input:focus,.projects-field select:focus,.projects-field textarea:focus,.project-add-form select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);background:var(--surface)}.projects-form-aside{padding:26px;background:linear-gradient(160deg,rgba(124,87,255,.1),rgba(91,226,255,.05));border-left:1px solid var(--line);display:flex;flex-direction:column}.projects-aside-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;margin-bottom:16px;background:var(--primary-soft);color:var(--primary);font-size:1.2rem}.projects-form-aside strong{font-size:.95rem}.projects-form-aside p{font-size:.78rem;color:var(--text-dim);line-height:1.6;margin:8px 0 auto}.projects-submit{margin-top:24px;width:100%;justify-content:space-between}
.projects-list-section{margin-top:10px}.projects-list-head{align-items:end;margin-bottom:15px}.projects-count{font-size:.7rem;font-weight:800;color:var(--text-dim);padding:7px 10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line)}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project-card{position:relative;overflow:hidden;min-width:0;display:flex;flex-direction:column;text-decoration:none;color:var(--text);border:1px solid var(--line);border-radius:21px;background:var(--surface);box-shadow:0 8px 30px rgba(28,18,66,.05);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.project-card:hover{transform:translateY(-4px);box-shadow:0 18px 42px rgba(28,18,66,.12);border-color:rgba(124,87,255,.35)}.project-card-top{position:absolute;z-index:2;left:14px;right:14px;top:14px;display:flex;justify-content:space-between;gap:8px}.project-type,.project-status{padding:6px 9px;border-radius:999px;background:rgba(18,17,33,.62);backdrop-filter:blur(9px);color:#fff;font-size:.58rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.project-status-borrador{color:#e4e0ef}.project-status-planificado{color:#bfeaff}.project-status-activo{color:#d6ff8d}.project-status-finalizado{color:#b6ffc8}.project-status-cancelado{color:#ffb3b3}.project-card-art{height:150px;display:grid;place-items:center;background:linear-gradient(135deg,#1b1538,#412060);position:relative;overflow:hidden}.project-card-art:before,.project-card-art:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.12)}.project-card-art:before{width:190px;height:190px;transform:translate(30px,-35px)}.project-card-art:after{width:110px;height:110px;transform:translate(-50px,42px);border-color:rgba(201,255,85,.28)}.project-card-1 .project-card-art{background:linear-gradient(135deg,#102d3b,#1d5570)}.project-card-2 .project-card-art{background:linear-gradient(135deg,#301a32,#71324d)}.project-card-3 .project-card-art{background:linear-gradient(135deg,#182f25,#4d6930)}.project-card-art span{position:relative;z-index:1;font-size:3.2rem;font-weight:950;letter-spacing:-.08em;color:#fff}.project-card-body{padding:18px 18px 14px;flex:1}.project-card-body h3{margin:0;font-size:1.05rem;letter-spacing:-.025em}.project-card-body p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:7px 0 15px;color:var(--text-dim);font-size:.76rem;line-height:1.5}.project-card-meta{display:flex;flex-wrap:wrap;gap:7px}.project-card-meta span{padding:6px 8px;border-radius:8px;background:var(--surface-2);font-size:.63rem;color:var(--text-dim)}.project-card-meta strong{color:var(--text)}.project-card-foot{display:flex;justify-content:space-between;padding:13px 18px;border-top:1px solid var(--line);font-size:.68rem;font-weight:800;color:var(--primary)}.projects-empty{text-align:center;padding:56px 24px;border:1px dashed var(--line);border-radius:20px;background:var(--surface)}.projects-empty-mark{width:50px;height:50px;margin:0 auto 15px;display:grid;place-items:center;border-radius:16px;background:var(--surface-2);color:var(--primary);font-weight:950}.projects-empty h3{margin:0;font-size:1.05rem}.projects-empty p{max-width:460px;margin:8px auto 18px;color:var(--text-dim);font-size:.8rem;line-height:1.55}.btn-secondary{display:inline-flex;align-items:center;padding:10px 13px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--text);font-weight:800;font-size:.75rem;background:var(--surface)}
.projects-back{display:inline-flex;margin:2px 0 13px;color:var(--text-dim);text-decoration:none;font-size:.76rem;font-weight:800}.projects-back:hover{color:var(--primary)}.project-detail-hero{display:flex;justify-content:space-between;align-items:center;gap:30px;padding:32px 34px;margin-bottom:16px;border-radius:24px;background:linear-gradient(135deg,#17132b,#28204a);color:#fff;box-shadow:0 20px 50px rgba(28,18,66,.14)}.project-detail-hero .projects-kicker{color:#c9ff55}.project-detail-hero h1{margin:8px 0 9px;font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.05em}.project-detail-hero p{max-width:680px;margin:0;color:rgba(255,255,255,.68);line-height:1.6}.project-detail-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.project-detail-meta span{padding:7px 10px;border:1px solid rgba(255,255,255,.13);border-radius:999px;color:rgba(255,255,255,.72);font-size:.66rem}.project-detail-number{min-width:120px;text-align:center}.project-detail-number strong{display:block;font-size:4rem;line-height:.85;letter-spacing:-.07em;color:#c9ff55}.project-detail-number span{font-size:.62rem;font-weight:900;letter-spacing:.14em;color:rgba(255,255,255,.5)}.project-detail-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:16px}.project-detail-main,.project-detail-side{padding:24px}.project-gig-list{margin-top:18px}.project-gig-row{display:grid;grid-template-columns:45px 1fr auto;align-items:center;gap:13px;padding:14px 0;border-top:1px solid var(--line)}.project-gig-order{font-size:.72rem;font-weight:950;color:var(--primary)}.project-gig-main{display:grid;gap:3px;min-width:0}.project-gig-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem}.project-gig-main span{color:var(--text-dim);font-size:.68rem}.project-remove{border:0;background:transparent;color:var(--text-dim);font-size:.66rem;font-weight:800;cursor:pointer}.project-remove:hover{color:var(--danger)}.project-detail-empty{margin-top:18px}.project-add-form{display:grid;gap:10px;margin-top:18px}.project-add-form .btn-cta{width:100%;justify-content:center}.project-side-note{margin-top:12px;padding:11px;border-radius:10px;background:var(--surface-2);color:var(--text-dim);font-size:.67rem;line-height:1.5}
@media(max-width:900px){.projects-hero{padding:32px}.projects-hero-orbit{width:210px;height:210px;flex-basis:210px;margin-right:0}.projects-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.projects-form{grid-template-columns:1fr}.projects-form-aside{border-left:0;border-top:1px solid var(--line)}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-detail-layout{grid-template-columns:1fr}}
@media(max-width:620px){.page-projects{padding-bottom:42px}.projects-hero{min-height:0;padding:26px 22px;border-radius:20px}.projects-hero-orbit{display:none}.projects-hero h1{font-size:2.35rem}.projects-hero-actions{align-items:flex-start;flex-direction:column;gap:10px}.projects-kpis{gap:9px}.projects-kpi{padding:14px}.projects-kpi strong{font-size:1.35rem}.projects-builder-head,.projects-builder{border-radius:18px}.projects-builder-head{padding:20px}.projects-form-main{grid-template-columns:1fr;padding:20px;gap:13px}.projects-field-wide{grid-column:auto}.projects-form-aside{padding:20px}.projects-grid{grid-template-columns:1fr}.projects-list-head{align-items:flex-start}.project-detail-hero{align-items:flex-start;padding:24px;flex-direction:column}.project-detail-number{min-width:0;text-align:left}.project-detail-number strong{font-size:3rem}.project-detail-main,.project-detail-side{padding:19px}.project-gig-row{grid-template-columns:34px 1fr}.project-remove{grid-column:2;text-align:left;padding:0}.projects-panel-head{align-items:flex-end}}
/* P37 · Centro de facturación */
.facturacion-page{max-width:1240px}.facturacion-kpis .card{display:flex;flex-direction:column;gap:.3rem}.facturacion-kpis strong{font-size:1.65rem}.facturacion-kpis span,.facturacion-kpis small{color:var(--texto-secundario,#70758a)}.facturacion-control{margin:1.2rem 0}.inline-filter{display:flex;gap:.55rem;align-items:end;flex-wrap:wrap}.inline-filter input,.inline-filter select{min-height:42px}.finance-breakdown{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1rem}.finance-breakdown span{padding:.8rem 1rem;border:1px solid var(--borde,#ddd);border-radius:14px}.invoice-list{display:grid;gap:.65rem}.invoice-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:1rem;align-items:center;padding:1rem;border:1px solid var(--borde,#ddd);border-radius:16px;text-decoration:none;color:inherit}.invoice-row>div:first-child{display:grid;gap:.18rem}.invoice-row span,.invoice-row small{color:var(--texto-secundario,#70758a)}.invoice-document dl{display:grid;grid-template-columns:1fr auto;gap:.75rem 1rem}.invoice-document dt{color:var(--texto-secundario,#70758a)}.invoice-document dd{margin:0;text-align:right;font-weight:700}.invoice-total{padding:1.2rem;border-radius:18px;background:rgba(91,27,176,.08);margin-bottom:1.2rem;display:grid;gap:.25rem}.invoice-total strong{font-size:2.2rem}.invoice-form-card{max-width:900px;margin:auto}.invoice-form-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1rem}.linked-contract{padding:1rem;border:1px solid var(--borde,#ddd);border-radius:16px;display:grid;gap:.25rem;margin-bottom:1rem}.invoice-notes{white-space:pre-wrap;padding:1rem;border-top:1px solid var(--borde,#ddd);margin-top:1rem}@media(max-width:760px){.invoice-row{grid-template-columns:1fr}.invoice-row .status-pill{justify-self:start}.invoice-form-actions{flex-direction:column}.invoice-form-actions button{width:100%}.finance-breakdown{display:grid;grid-template-columns:1fr 1fr}.inline-filter{align-items:stretch}.inline-filter>*{flex:1 1 140px}}

/* P38 · control financiero admin + alta de entidades públicas */
.admin-finance-stats .stat-card strong { font-variant-numeric: tabular-nums; }
.admin-finance-grid { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(320px,.9fr); gap:1.25rem; margin-top:1.25rem; }
.finance-kpi-list { display:grid; gap:.7rem; margin:1rem 0 1.5rem; }
.finance-kpi-list > div { display:flex; justify-content:space-between; gap:1rem; padding:.9rem 1rem; border:1px solid var(--gm-border,rgba(255,255,255,.1)); border-radius:14px; }
.finance-kpi-list strong { font-variant-numeric:tabular-nums; }
.admin-mini-list { display:grid; gap:.4rem; }
.admin-mini-row { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem .8rem; border-radius:12px; background:rgba(255,255,255,.025); }
.admin-mini-row small { display:block; opacity:.65; margin-top:.15rem; }
.registro-entidad-publica { padding:1rem; border:1px solid rgba(150,100,255,.28); border-radius:18px; background:rgba(120,80,255,.06); display:grid; gap:.8rem; margin:.5rem 0 1rem; }
.registro-entidad-publica[hidden] { display:none; }
.registro-entidad-cabecera { display:grid; gap:.2rem; }
.registro-entidad-cabecera small { opacity:.7; }
@media (max-width: 900px) { .admin-finance-grid { grid-template-columns:1fr; } }

/* P39 · Acceso social compacto: solo iconos, con accesibilidad y tooltip nativo. */
.auth-social-icons{display:flex;align-items:center;justify-content:center;gap:10px;margin:8px 0 2px}
.auth-social-icon{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid var(--line,#d9dbe5);border-radius:14px;background:var(--surface,#fff);color:var(--text,#232536);text-decoration:none;box-shadow:0 5px 16px rgba(26,20,54,.06);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;cursor:pointer;padding:0}
.auth-social-icon svg{width:21px;height:21px;display:block}
.auth-social-icon:hover{transform:translateY(-2px);border-color:var(--primary,#7657ff);box-shadow:0 9px 22px rgba(26,20,54,.11);text-decoration:none}
.auth-social-facebook{color:#1877f2}
.auth-social-google{background:#fff}
.auth-social-icon.is-unavailable,.auth-social-icon:disabled{opacity:.42;cursor:not-allowed;transform:none;box-shadow:none}
.auth-social-icon.is-unavailable:hover,.auth-social-icon:disabled:hover{border-color:var(--line,#d9dbe5);box-shadow:none}
@media (max-width:480px){.auth-social-icon{width:46px;height:46px;border-radius:13px}.auth-social-icons{gap:8px}}

/* P41 — Red profesional transversal */
.necesidades-page .necesidades-hero{align-items:flex-end;gap:28px}.necesidades-page .necesidades-hero p{max-width:720px}.necesidades-hero-cta{white-space:nowrap}.necesidades-builder{display:grid;grid-template-columns:minmax(220px,.55fr) minmax(0,1.45fr);gap:28px;margin:28px 0}.necesidades-builder-copy{padding:8px 4px}.necesidades-builder-copy h2{margin:8px 0}.necesidades-form{margin:0}.necesidades-form-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.necesidades-list-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:34px 0 18px}.necesidades-list-head h2{margin:5px 0 0}.necesidades-list-head .tabs-simple{margin:0;max-width:100%;overflow:auto}.necesidad-card{display:flex;flex-direction:column;gap:10px}.necesidad-card-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.necesidad-card h3{margin:2px 0}.necesidad-card p{margin:0}.necesidad-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:auto;padding-top:8px;font-size:.88rem}.tabs-simple a.active{font-weight:800}.empty-state{padding:40px;text-align:center}
@media(max-width:900px){.necesidades-builder{grid-template-columns:1fr}.necesidades-list-head{align-items:flex-start;flex-direction:column}.necesidades-hero{align-items:flex-start!important;flex-direction:column}.necesidades-hero-cta{width:100%;text-align:center}}


/* P42 — Red profesional: búsqueda y taxonomía transversal */
.necesidades-list-head{align-items:end}
.necesidades-search{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:min(100%,520px)}
.necesidades-search input{min-width:280px;flex:1;height:42px}
.necesidades-filtros{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:0 0 22px;padding:6px;border:1px solid var(--line);border-radius:15px;background:var(--surface-2);max-height:112px;overflow:auto}
.necesidad-filtro{padding:8px 11px;border-radius:10px;color:var(--text-dim);font-size:.82rem;font-weight:750;text-decoration:none;white-space:nowrap}
.necesidad-filtro:hover,.necesidad-filtro.active{background:var(--surface);color:var(--text);box-shadow:0 2px 8px rgba(24,18,48,.07)}

/* P42 — Perfil: menú flotante y resumen compacto de confianza */
.muro-cabecera{overflow:visible;position:relative}
.muro-menu-desplegable{max-height:min(70vh,560px);overflow-y:auto;overscroll-behavior:contain;z-index:30}
.perfil-confianza-resumen{margin:14px 0 4px;padding:12px 0 0;border-top:1px solid var(--line)}
.perfil-confianza-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.perfil-confianza-heading .hint{margin:0;font-size:.76rem}
.perfil-confianza-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.perfil-confianza-card{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label score" "meta score";gap:2px 8px;padding:10px 12px;border:1px solid var(--line);border-radius:13px;background:var(--surface-2);color:inherit;text-decoration:none;min-width:0}
.perfil-confianza-card:hover{border-color:var(--primary);background:var(--surface);text-decoration:none;transform:translateY(-1px)}
.perfil-confianza-card span{grid-area:label;font-size:.76rem;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.perfil-confianza-card strong{grid-area:score;align-self:center;font-size:1.25rem}
.perfil-confianza-card small{grid-area:meta;color:var(--text-dim);font-size:.68rem}
.muro-valoraciones-detalle,.muro-reputacion-detalle{scroll-margin-top:90px}.perfil-confianza-card{border:1px solid var(--line);font:inherit;cursor:pointer;text-align:left;width:100%}.perfil-confianza-card[aria-expanded="true"]{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.muro-valoraciones-detalle[hidden],.muro-reputacion-detalle[hidden]{display:none}
@media(max-width:760px){
  .necesidades-search{width:100%}.necesidades-search input{min-width:0;width:100%}.necesidades-search .btn-secondary{flex:1}.necesidades-filtros{flex-wrap:nowrap;overflow-x:auto;max-height:none;scrollbar-width:none}.necesidades-filtros::-webkit-scrollbar{display:none}
  .perfil-confianza-heading{align-items:flex-start;flex-direction:column;gap:2px}.perfil-confianza-grid{grid-template-columns:1fr}
  .perfil-confianza-card{grid-template-columns:1fr auto;min-height:54px}
}

/* P43 · Identidad colectiva / grupos */
.org-builder-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,.8fr);gap:20px;margin:20px 0 32px}.org-create-card,.org-explainer{padding:24px}.org-hero{display:flex;justify-content:space-between;align-items:center}.org-hero-mark{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;background:var(--gm-surface-strong,#f2ecff);font-size:30px;font-weight:800;color:var(--gm-primary,#5b35f5)}.org-create-form{margin-top:18px}.org-explainer-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--gm-surface-strong,#f2ecff);font-size:28px;font-weight:700}.org-explainer ul{padding-left:18px;line-height:1.8}.org-invitations{padding:20px;margin-bottom:20px}.org-invite-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 0;border-top:1px solid var(--gm-border,#e8e0f5)}.org-invite-row>div:first-child,.org-member-row>div{display:flex;align-items:center;gap:12px}.org-invite-row span,.org-member-row small{display:block;color:var(--gm-muted,#777);font-size:.85rem}.org-inline-actions{display:flex;gap:8px}.org-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.org-card{display:block;padding:20px;text-decoration:none;color:inherit;transition:transform .18s ease,box-shadow .18s ease}.org-card:hover{transform:translateY(-2px)}.org-card-top{display:flex;justify-content:space-between;align-items:center}.org-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,#5b35f5,#8d6cff);color:#fff;font-weight:800}.org-card h3{margin:16px 0 6px}.org-card p{min-height:42px;color:var(--gm-muted,#777)}.org-card-meta,.org-detail-meta{display:flex;gap:14px;flex-wrap:wrap;color:var(--gm-muted,#777);font-size:.86rem}.org-detail-meta a{color:inherit}.org-detail-grid{margin-top:20px}.org-member-row img{flex:none}.org-member-row>div>span{display:block}.perfil-entidades{margin:18px 0 10px;padding:14px 0;border-top:1px solid var(--gm-border,#e8e0f5);border-bottom:1px solid var(--gm-border,#e8e0f5)}.perfil-entidades-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.perfil-entidades-heading a{font-size:.82rem;font-weight:700}.perfil-entidades-list{display:flex;gap:8px;flex-wrap:wrap}.perfil-entidad-chip{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--gm-border,#e8e0f5);border-radius:14px;text-decoration:none;color:inherit;background:rgba(255,255,255,.55)}.perfil-entidad-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--gm-surface-strong,#f2ecff);font-size:.78rem;font-weight:800}.perfil-entidad-chip strong,.perfil-entidad-chip small{display:block}.perfil-entidad-chip small{color:var(--gm-muted,#777);font-size:.72rem}@media(max-width:900px){.org-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.org-builder-grid{grid-template-columns:1fr}}@media(max-width:620px){.org-grid{grid-template-columns:1fr}.org-invite-row{align-items:flex-start;flex-direction:column}.org-inline-actions{width:100%}.org-inline-actions form{flex:1}.org-inline-actions button{width:100%}.org-hero-mark{width:48px;height:48px}.org-create-card,.org-explainer{padding:18px}}

/* P43 · origen colectivo en necesidades */
.necesidad-origin{font-size:.78rem;color:var(--gm-muted,#777);margin:.35rem 0}.necesidad-origin strong{color:inherit}


/* P46 · RED PROFESIONAL — composición editorial y formulario limpio */
.necesidades-page{max-width:1180px!important;padding-bottom:72px}
.gm-network-hero{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:30px;min-height:250px;margin-bottom:22px;padding:38px 40px;border:1px solid rgba(111,76,255,.18);border-radius:28px;background:radial-gradient(circle at 88% 10%,rgba(91,215,255,.20),transparent 30%),radial-gradient(circle at 68% 100%,rgba(123,69,255,.13),transparent 34%),linear-gradient(135deg,var(--surface),var(--surface-2));box-shadow:0 18px 50px rgba(45,27,90,.08)}
.gm-network-hero:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.25;background-image:linear-gradient(rgba(112,78,230,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(112,78,230,.08) 1px,transparent 1px);background-size:30px 30px;mask-image:linear-gradient(90deg,#000,transparent 85%)}
.gm-network-hero-copy{position:relative;z-index:1;max-width:760px}.gm-network-hero h1{margin:9px 0 12px;font-size:clamp(2.2rem,4.6vw,4rem);line-height:.98;letter-spacing:-.055em}.gm-network-hero p{max-width:700px;margin:0;color:var(--text-dim);font-size:.98rem;line-height:1.6}.gm-network-hero-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.gm-network-hero-meta span{padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.55);font-size:.67rem;font-weight:850;color:var(--text-dim)}.necesidades-hero-cta{position:relative;z-index:1;white-space:nowrap}
.necesidades-builder{overflow:hidden;margin:0 0 40px;border:1px solid var(--line);border-radius:24px;background:var(--surface);box-shadow:0 12px 42px rgba(31,19,70,.055)}
.necesidades-builder-head{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;padding:24px 28px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--surface-2),var(--surface))}.necesidades-builder-head h2{margin:5px 0 4px;font-size:1.45rem;letter-spacing:-.035em}.necesidades-builder-head p{margin:0;color:var(--text-dim);font-size:.8rem}.necesidades-builder-steps{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}.necesidades-builder-steps span{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text-dim);font-size:.68rem;font-weight:800;line-height:1}.necesidades-builder-steps b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:.62rem}
.necesidades-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 18px;padding:26px 28px}.necesidades-field{display:grid;gap:7px;min-width:0}.necesidades-field-wide{grid-column:1/-1}.necesidades-field label{font-size:.72rem;font-weight:850;color:var(--text)}.necesidades-field label span{font-weight:600;color:var(--text-dim)}.necesidades-field input,.necesidades-field select,.necesidades-field textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--text);padding:12px 13px;font:inherit;font-size:.82rem;outline:none;transition:border-color .16s,box-shadow .16s,background .16s}.necesidades-field textarea{resize:vertical;min-height:104px;line-height:1.5}.necesidades-field input::placeholder,.necesidades-field textarea::placeholder{color:var(--text-dim);opacity:.72}.necesidades-field input:focus,.necesidades-field select:focus,.necesidades-field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);background:var(--surface)}.necesidades-form-footer{grid-column:1/-1;display:flex;align-items:center;gap:15px;padding-top:4px}.necesidades-form-footer p{margin:0;color:var(--text-dim);font-size:.73rem;line-height:1.45}
.necesidades-list-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:16px}.necesidades-list-head h2{margin:5px 0 3px;font-size:1.5rem;letter-spacing:-.035em}.necesidades-list-head .hint{margin:0;color:var(--text-dim);font-size:.78rem}.necesidades-search{display:flex;align-items:center;gap:8px;min-width:min(100%,530px)}.necesidades-search-input{position:relative;flex:1}.necesidades-search-input>span{position:absolute;left:13px;top:50%;transform:translateY(-51%);font-size:1.05rem;color:var(--text-dim)}.necesidades-search-input input{width:100%;height:42px;box-sizing:border-box;padding:0 13px 0 36px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);font:inherit;font-size:.78rem;outline:none}.necesidades-search-input input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.necesidades-search .btn-secondary{height:42px}.necesidades-filtros{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0 0 20px;padding:5px;border:1px solid var(--line);border-radius:15px;background:var(--surface);max-height:none;overflow:auto}.necesidad-filtro{padding:8px 11px;border-radius:10px;color:var(--text-dim);font-size:.68rem;font-weight:800;text-decoration:none;white-space:nowrap}.necesidad-filtro:hover{background:var(--surface-2);color:var(--text)}.necesidad-filtro.active{background:var(--text);color:var(--surface);box-shadow:0 3px 10px rgba(25,19,45,.12)}
.necesidades-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.necesidad-card{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;padding:19px;border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:0 7px 26px rgba(31,19,70,.045);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.necesidad-card:hover{transform:translateY(-3px);border-color:rgba(112,76,230,.28);box-shadow:0 15px 35px rgba(31,19,70,.09)}.necesidad-card-accent{width:34px;height:4px;margin-bottom:14px;border-radius:999px;background:linear-gradient(90deg,var(--primary),#55d9ff)}.necesidad-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.necesidad-category{padding:5px 8px;border-radius:8px;background:var(--primary-soft);color:var(--primary);font-size:.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.045em}.necesidad-time{color:var(--text-dim);font-size:.65rem;white-space:nowrap}.necesidad-origin{margin:12px 0 0;color:var(--text-dim);font-size:.67rem}.necesidad-card h3{margin:10px 0 7px;font-size:1rem;line-height:1.18;letter-spacing:-.02em}.necesidad-card h3 a{color:inherit;text-decoration:none}.necesidad-card h3 a:hover{color:var(--primary)}.necesidad-card>p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;min-height:54px;margin:0;color:var(--text-dim);font-size:.75rem;line-height:1.52}.necesidad-card-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:17px;padding-top:13px;border-top:1px solid var(--line);color:var(--text-dim);font-size:.67rem}.necesidad-card-bottom strong{color:var(--text);font-size:.7rem}.necesidades-empty{padding:55px 24px;text-align:center;border:1px dashed var(--line);border-radius:20px;background:var(--surface)}.necesidades-empty-mark{width:48px;height:48px;margin:0 auto 12px;display:grid;place-items:center;border-radius:15px;background:var(--primary-soft);color:var(--primary);font-weight:900}.necesidades-empty h3{margin:0;font-size:1rem}.necesidades-empty p{margin:7px 0 16px;color:var(--text-dim);font-size:.76rem}
@media(max-width:980px){.gm-network-hero{align-items:flex-start;flex-direction:column}.necesidades-list-head{align-items:flex-start;flex-direction:column}.necesidades-search{width:100%}.necesidades-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.gm-network-hero{padding:28px 22px;min-height:0}.gm-network-hero h1{font-size:2.35rem}.necesidades-hero-cta{width:100%;text-align:center}.necesidades-builder-head{padding:20px;align-items:flex-start;flex-direction:column}.necesidades-builder-steps{width:100%;align-items:flex-start}.necesidades-builder-steps span{flex:1 1 auto;justify-content:center}.necesidades-form{grid-template-columns:1fr;padding:20px}.necesidades-field-wide{grid-column:auto}.necesidades-form-footer{grid-column:auto;align-items:flex-start;flex-direction:column}.necesidades-search{flex-wrap:wrap}.necesidades-search-input{flex:1 1 100%}.necesidades-search .btn-secondary{flex:1}.necesidades-filtros{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.necesidades-filtros::-webkit-scrollbar{display:none}.necesidades-grid{grid-template-columns:1fr}}

/* P47 — identidad colectiva: composición estable y responsive */
.page-organizations{max-width:1120px;margin:0 auto;padding-bottom:48px}
.org-create-shell{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:18px;margin:20px 0 36px}
.org-create-main,.org-explainer{background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--ux-shadow,0 14px 36px rgba(30,20,80,.08))}
.org-create-main{padding:28px}
.org-create-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:22px}
.org-create-heading h2{margin:5px 0 7px;font-size:1.45rem}
.org-create-heading p{margin:0;max-width:650px;color:var(--text-dim)}
.org-create-symbol{display:grid;place-items:center;width:50px;height:50px;border-radius:16px;background:var(--primary-soft);color:var(--primary);font-size:1.7rem;font-weight:800;flex:none}
.org-create-form{display:grid;gap:15px}
.org-form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.org-create-form label{display:grid;gap:7px;font-size:.78rem;font-weight:750;color:var(--text-dim)}
.org-create-form input,.org-create-form select,.org-create-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:var(--surface-strong,var(--surface));color:var(--text);padding:12px 13px;font:inherit;font-weight:500;outline:none;min-width:0}
.org-create-form textarea{resize:vertical;min-height:96px}
.org-create-form input:focus,.org-create-form select:focus,.org-create-form textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.label-optional{font-weight:500;color:var(--text-dim);opacity:.8}
.org-form-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:3px}.org-form-footer .hint{margin:0;max-width:560px}
.org-explainer{padding:26px;align-self:stretch}.org-explainer-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:var(--primary-soft);color:var(--primary);font-size:1.35rem;font-weight:800;margin-bottom:20px}.org-explainer h3{font-size:1.15rem;margin:7px 0}.org-explainer p{color:var(--text-dim);line-height:1.65}.org-explainer ul{margin:20px 0 0;padding-left:18px;color:var(--text-dim);line-height:1.75}.org-list-section{margin-top:8px}.org-list-section .section-heading{margin-bottom:14px}.org-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.org-card{min-height:190px;border-radius:18px}.org-card h3{font-size:1.08rem}.org-card p{font-size:.86rem;line-height:1.5}.empty-state.card{padding:34px;display:grid;place-items:center;text-align:center;gap:6px}
@media(max-width:900px){.org-create-shell{grid-template-columns:1fr}.org-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.page-organizations{padding-left:14px;padding-right:14px}.org-create-main,.org-explainer{padding:20px;border-radius:18px}.org-create-heading{gap:10px}.org-create-heading h2{font-size:1.25rem}.org-form-row{grid-template-columns:1fr}.org-form-footer{align-items:stretch;flex-direction:column}.org-form-footer .btn-cta{width:100%}.org-grid{grid-template-columns:1fr}}

/* P51 — Perfil: alinear y contener todo el contenido inferior dentro del mismo lienzo. */
.perfil-layout {
  width: 100%;
  max-width: var(--gm-content-max);
  margin-inline: auto;
  box-sizing: border-box;
  grid-template-columns: minmax(0, 1.6fr) minmax(0, .7fr);
}
.perfil-main-col,
.perfil-sidebar { min-width: 0; max-width: 100%; }
.perfil-main-col > * { max-width: 100%; box-sizing: border-box; }
@media (max-width: 980px) {
  .perfil-layout { grid-template-columns: minmax(0, 1fr); }
  .perfil-sidebar { position: static; }
}


/* P52 — Red profesional: creador bajo demanda y pasos compactos */
.necesidades-builder[hidden]{display:none!important}
.necesidades-builder.is-visible{animation:necesidadBuilderIn .24s ease both}
@keyframes necesidadBuilderIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.necesidades-builder-head{display:flex;align-items:center;justify-content:space-between;gap:24px}
.necesidades-builder-steps{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex:0 0 auto;flex-wrap:wrap}
.necesidades-builder-steps span{flex:0 0 auto!important;white-space:nowrap}
.muro-avatar-eliminar{width:34px;height:34px;border-width:2px;box-shadow:0 4px 12px rgba(24,17,48,.13)}
.muro-avatar-eliminar .icono-sm{width:14px;height:14px;stroke-width:1.85}
@media(max-width:900px){.necesidades-builder-head{align-items:flex-start;flex-direction:column}.necesidades-builder-steps{justify-content:flex-start;width:100%}}
@media(max-width:700px){.necesidades-builder-steps{gap:6px}.necesidades-builder-steps span{padding:6px 9px;font-size:.64rem}.necesidades-builder-steps b{width:18px;height:18px;font-size:.58rem}}
