/* 20260917a · fuente del sistema (como Facebook/X): Roboto en Android, San Francisco en iPhone, Segoe UI en Windows. Sin descargas. */

/* Red Cafe Ecuador V91 admin operational patch.
   Built as a thin layer over the real V60 design. */
:root {
  --rce-cafe: #3b2318;
  --rce-crema: #f7f0df;
  --rce-latte: #a66a2c;
  --rce-acento: #f0c36a;
  --rce-hoja: #3f6b4a;
  --rce-pizarra: #25221f;
}

.redcafe-final-hidden {
  display: none !important;
}

.redcafe-more {
  position: relative;
  min-height: 2.5rem;
}

.redcafe-more > summary {
  align-items: center;
  color: rgba(247, 240, 223, .88);
  cursor: pointer;
  display: inline-flex;
  font-weight: 600;
  gap: .25rem;
  list-style: none;
  min-height: 2.5rem;
  white-space: nowrap;
}

.redcafe-more > summary::-webkit-details-marker {
  display: none;
}

.redcafe-more[open] > summary,
.redcafe-more > summary:hover {
  color: var(--rce-acento);
}

.redcafe-more-menu {
  background: var(--rce-cafe);
  border: 1px solid rgba(247, 240, 223, .18);
  box-shadow: 0 18px 40px rgba(20, 31, 26, .28);
  display: grid;
  gap: .15rem;
  min-width: 15rem;
  padding: .6rem;
  position: absolute;
  right: 0;
  top: calc(100% + .45rem);
  z-index: 90;
}

.redcafe-more-menu a {
  color: rgba(247, 240, 223, .86);
  display: block;
  font-size: 13px;
  line-height: 1.2;
  padding: .62rem .7rem;
}

.redcafe-more-menu a:hover {
  background: rgba(247, 240, 223, .08);
  color: var(--rce-acento);
}

.redcafe-mobile-menu {
  background: var(--rce-cafe);
  border-top: 1px solid rgba(247, 240, 223, .14);
  display: none;
  left: 0;
  max-height: calc(100vh - 4.5rem);
  overflow-y: auto;
  padding: .8rem 1rem 1rem;
  position: fixed;
  right: 0;
  top: 4.5rem;
  z-index: 120;
}

.redcafe-mobile-menu[aria-hidden="false"] {
  display: grid;
  gap: .35rem;
}

.redcafe-mobile-menu a {
  border: 1px solid rgba(247, 240, 223, .14);
  color: rgba(247, 240, 223, .9);
  display: block;
  font-weight: 700;
  min-height: 2.65rem;
  padding: .72rem .85rem;
}

.redcafe-mobile-menu a:hover {
  border-color: var(--rce-acento);
  color: var(--rce-acento);
}

.redcafe-launch-note {
  border: 1px solid rgba(59,35,24, .12);
  background: rgba(247, 240, 223, .68);
  color: var(--rce-pizarra);
  padding: .85rem 1rem;
}

.redcafe-profile-intro {
  border: 1px solid rgba(59,35,24, .12);
  background: #fff;
  color: var(--rce-pizarra);
  font-family: var(--font-cuerpo);
  margin-top: 1rem;
  padding: 1rem;
}

.redcafe-profile-intro h3 {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.15;
}

.redcafe-profile-intro p,
.redcafe-profile-intro li {
  color: rgba(47, 42, 36, .82);
  line-height: 1.55;
}

.redcafe-profile-intro ul {
  display: grid;
  gap: .35rem;
  margin-top: .8rem;
}

#redcafe-afiliate-login {
  border-color: rgba(247, 240, 223, .38) !important;
  color: var(--rce-crema) !important;
}

#redcafe-afiliate-login:hover {
  border-color: var(--rce-acento) !important;
  color: var(--rce-acento) !important;
}

body[data-redcafe-route="/marketplace/"] #lotes-grid,
.redcafe-service-grid,
.redcafe-panel-orders-grid {
  display: grid;
  gap: .85rem;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

body[data-redcafe-route="/marketplace/"] #lotes-grid > *,
.redcafe-service-card,
.redcafe-panel-order-card {
  min-width: 0;
}

body[data-redcafe-route="/marketplace/"] #lotes-grid article,
.redcafe-service-card {
  border-radius: .5rem !important;
  overflow: hidden;
}

body[data-redcafe-route="/marketplace/"] #lotes-grid article img {
  max-height: 8.5rem;
  object-fit: cover;
}

body[data-redcafe-route="/marketplace/"] #lotes-grid article h3,
.redcafe-service-card h3 {
  font-size: .95rem !important;
  line-height: 1.22 !important;
  overflow-wrap: anywhere;
}

body[data-redcafe-route="/marketplace/"] #lotes-grid article p,
.redcafe-service-card p {
  font-size: .82rem;
  line-height: 1.42;
}

.redcafe-service-feature {
  align-items: start;
  border-left: 3px solid var(--rce-latte);
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1.2fr) minmax(260px, .8fr);
}

.redcafe-service-feature h2 {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-size: clamp(1.45rem, 2vw, 2rem);
  font-weight: 800;
  line-height: 1.12;
  margin: .25rem 0 .55rem;
}

.redcafe-service-steps {
  background: rgba(247, 240, 223, .72);
  display: grid;
  gap: .65rem;
  padding: .85rem;
}

.redcafe-market-tabs,
.redcafe-range-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin: 1rem 0;
}

.redcafe-market-tabs button,
.redcafe-range-tabs button {
  border: 1px solid rgba(59,35,24, .18);
  color: var(--rce-cafe);
  font-weight: 700;
  min-height: 2.35rem;
  padding: .45rem .85rem;
}

.redcafe-market-tabs button[aria-pressed="true"],
.redcafe-range-tabs button[aria-pressed="true"] {
  background: var(--rce-cafe);
  color: var(--rce-crema);
}

.redcafe-service-card,
.redcafe-panel-order-card,
.redcafe-price-board {
  background: #fff;
  border: 1px solid rgba(59,35,24, .12);
  box-shadow: 0 8px 22px rgba(59,35,24, .06);
  color: var(--rce-pizarra);
  font-family: var(--font-cuerpo);
  padding: 1rem;
}

.redcafe-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: .9rem;
}

.redcafe-action-row a,
.redcafe-action-row button,
.redcafe-panel-link {
  align-items: center;
  border: 1px solid rgba(59,35,24, .22);
  color: var(--rce-cafe);
  display: inline-flex;
  font-weight: 700;
  justify-content: center;
  min-height: 2.5rem;
  padding: .5rem .85rem;
}

.redcafe-action-row button:first-child,
.redcafe-panel-link {
  background: var(--rce-cafe);
  color: var(--rce-crema);
}

.redcafe-panel-resources-head {
  border-bottom: 1px solid rgba(59,35,24, .12);
  color: var(--rce-pizarra);
  padding-bottom: .9rem;
}

.redcafe-panel-resources-head h2 {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-size: clamp(1.55rem, 4vw, 2.4rem);
  font-weight: 800;
  line-height: 1.15;
  margin-top: .35rem;
}

.redcafe-panel-resources-head p:last-child {
  color: rgba(47, 42, 36, .76);
  line-height: 1.6;
  margin-top: .6rem;
  max-width: 48rem;
}

.redcafe-panel-resources-gap {
  margin-top: 1.6rem;
}

.redcafe-panel-resource-grid {
  display: grid;
  gap: .9rem;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  margin-top: 1rem;
}

.redcafe-panel-resource-grid-tools {
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
}

.redcafe-panel-resource-card {
  background: #fff;
  border: 1px solid rgba(59,35,24, .12);
  color: var(--rce-pizarra);
  display: grid;
  font-family: var(--font-cuerpo);
  gap: .45rem;
  min-height: 10.5rem;
  padding: 1rem;
  text-decoration: none;
}

.redcafe-panel-resource-card:hover {
  border-color: rgba(166, 106, 44, .42);
  box-shadow: 0 10px 24px rgba(59,35,24, .07);
}

.redcafe-panel-resource-card h3,
.redcafe-panel-split h3 {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-size: 1.1rem;
  font-weight: 800;
  line-height: 1.18;
}

.redcafe-panel-resource-card p,
.redcafe-panel-eudr p,
.redcafe-panel-split p {
  color: rgba(47, 42, 36, .78);
  font-size: .93rem;
  line-height: 1.55;
}

.redcafe-panel-resource-card span,
.redcafe-panel-split a {
  align-self: end;
  color: var(--rce-cafe);
  font-weight: 800;
  margin-top: .35rem;
}

.redcafe-panel-eudr {
  align-items: center;
  background: rgba(247, 240, 223, .7);
  border: 1px solid rgba(59,35,24, .12);
  display: grid;
  font-family: var(--font-cuerpo);
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr) auto;
  margin-top: 1.5rem;
  padding: 1.15rem;
}

.redcafe-panel-eudr h2 {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-size: clamp(1.35rem, 3vw, 2rem);
  font-weight: 800;
  line-height: 1.15;
  margin-top: .35rem;
}

.redcafe-panel-split {
  display: grid;
  gap: .9rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: .9rem;
}

.redcafe-panel-split article {
  background: #fff;
  border: 1px solid rgba(59,35,24, .12);
  font-family: var(--font-cuerpo);
  padding: 1rem;
}

.redcafe-price-board {
  margin-bottom: 1.5rem;
  margin-top: 1.5rem;
  padding: 1rem;
}

body[data-redcafe-route="/quienes-somos/"] main,
body[data-redcafe-route="/quienes-somos/"] main p,
body[data-redcafe-route="/quienes-somos/"] main li {
  color: rgba(47, 42, 36, .84);
}

body[data-redcafe-route="/quienes-somos/"] main h1,
body[data-redcafe-route="/quienes-somos/"] main h2,
body[data-redcafe-route="/quienes-somos/"] main h3 {
  color: var(--rce-cafe);
  overflow-wrap: anywhere;
}

body[data-redcafe-route="/quienes-somos/"] main .hero-gradient,
body[data-redcafe-route="/quienes-somos/"] main .hero-gradient p,
body[data-redcafe-route="/quienes-somos/"] main .hero-gradient li {
  color: rgba(255, 250, 242, .9);
}

body[data-redcafe-route="/quienes-somos/"] main .hero-gradient h1,
body[data-redcafe-route="/quienes-somos/"] main .hero-gradient h2,
body[data-redcafe-route="/quienes-somos/"] main .hero-gradient h3 {
  color: var(--rce-crema);
}

body[data-redcafe-route="/quienes-somos/"] main .hero-gradient .badge {
  color: var(--rce-acento-claro);
}

.hero-gradient,
.hero-gradient p,
.hero-gradient li {
  color: rgba(255, 250, 242, .9);
}

.hero-gradient h1,
.hero-gradient h2,
.hero-gradient h3 {
  color: var(--rce-crema) !important;
}

.hero-gradient .badge {
  color: var(--rce-acento-claro);
}

.redcafe-service-plan-summary {
  align-items: center;
  border: 1px solid rgba(59,35,24, .14);
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin: 1rem 0;
  padding: .75rem .9rem;
}

.redcafe-service-plan-summary span {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-weight: 800;
}

.redcafe-service-plan-summary strong,
.redcafe-service-plan-badge {
  border: 1px solid rgba(59,35,24, .16);
  display: inline-flex;
  font-size: .72rem;
  font-weight: 800;
  line-height: 1;
  padding: .35rem .5rem;
  text-transform: uppercase;
}

.redcafe-service-plan-badge {
  margin-top: .45rem;
}

.redcafe-service-plan-badge.is-free,
.redcafe-service-plan-summary strong:first-of-type {
  background: rgba(47, 125, 83, .12);
  color: #1f6b45;
}

.redcafe-service-plan-badge.is-premium,
.redcafe-service-plan-summary strong:last-of-type {
  background: rgba(180, 83, 9, .12);
  color: #6f4718;
}

.redcafe-profile-collapse {
  margin-top: 1rem;
}

.redcafe-profile-collapse > summary {
  border: 1px solid rgba(255, 250, 242, .32);
  color: var(--rce-crema);
  cursor: pointer;
  display: inline-flex;
  font-weight: 800;
  min-height: 2.75rem;
  padding: .8rem 1.1rem;
}

.redcafe-profile-collapse > summary:hover {
  border-color: var(--rce-acento-claro);
  color: var(--rce-acento-claro);
}

.redcafe-profile-collapse > :not(summary) {
  margin-top: 1rem;
}

/* El plegable de perfiles de la portada ya no es un <details> que envuelve el
   bloque de React: es un botón nuestro al lado y un atributo de estado sobre
   el bloque, que no se mueve de su sitio. El botón hereda el aspecto que tenía
   el <summary>. */
button.redcafe-profile-collapse {
  background: transparent;
  border: 1px solid rgba(255, 250, 242, .32);
  color: var(--rce-crema);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-weight: 800;
  min-height: 2.75rem;
  padding: .8rem 1.1rem;
}

button.redcafe-profile-collapse:hover {
  border-color: var(--rce-acento-claro);
  color: var(--rce-acento-claro);
}

[data-redcafe-perfiles="cerrado"] { display: none !important; }
[data-redcafe-perfiles="abierto"] { margin-top: 1rem; }

.redcafe-fallback-map {
  background:
    linear-gradient(135deg, rgba(33, 107, 64, .2), rgba(201, 169, 97, .18)),
    radial-gradient(circle at 52% 44%, rgba(255, 255, 255, .92), rgba(241, 231, 209, .84));
  border: 1px solid rgba(59,35,24, .14);
  border-radius: .75rem;
  min-height: 300px;
  margin-top: .7rem;
  overflow: hidden;
  position: relative;
}

.redcafe-map-head {
  align-items: end;
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 1rem;
  justify-content: space-between;
}

.redcafe-map-head span {
  color: #5c5a50;
  font-size: .82rem;
  font-weight: 700;
}

.redcafe-fallback-map::before {
  background: rgba(33, 107, 64, .1);
  border: 2px solid rgba(33, 107, 64, .28);
  bottom: 14%;
  clip-path: polygon(16% 40%, 29% 14%, 53% 12%, 67% 22%, 82% 19%, 90% 42%, 77% 64%, 64% 58%, 49% 76%, 31% 71%, 21% 58%);
  content: "";
  left: 18%;
  position: absolute;
  right: 12%;
  top: 8%;
}

.redcafe-market-hero h1,
.redcafe-market-hero p {
  color: #f7f4ef !important;
}

.redcafe-market-hero .rotulo {
  color: var(--color-acento-claro, #e3ae6b) !important;
}

body[data-redcafe-route^="/marketplace"] main .bg-cafe h1,
body[data-redcafe-route^="/marketplace"] main .bg-cafe p:not(.rotulo) {
  color: #f7f4ef !important;
}

body[data-redcafe-route="/marketplace/"] main > div > section:first-child {
  background: var(--color-cafe, #3b2318) !important;
  border-bottom-color: rgba(251, 250, 247, .16) !important;
  color: #f7f4ef !important;
}
body[data-redcafe-route="/marketplace/"] main > div > section:first-child > div {
  padding-bottom: 1.75rem !important;
  padding-top: 1.75rem !important;
}
body[data-redcafe-route="/marketplace/"] main > div > section:first-child h1,
body[data-redcafe-route="/marketplace/"] main > div > section:first-child p:not(.badge),
body[data-redcafe-route="/marketplace/"] main > div > section:first-child .text-text-secondary,
body[data-redcafe-route="/marketplace/"] main > div > section:first-child .text-text-muted {
  color: #f7f4ef !important;
}
body[data-redcafe-route="/marketplace/"] main > div > section:first-child .badge {
  background: rgba(223, 160, 102, .18) !important;
  color: var(--color-acento-claro, #e3ae6b) !important;
}
body[data-redcafe-route="/marketplace/"] main > div > section:first-child .btn-ghost {
  border-color: rgba(251, 250, 247, .46) !important;
  color: #f7f4ef !important;
}

.redcafe-etiqueta-demo {
  background: rgba(223, 160, 102, .18);
  border: 1px solid rgba(138, 90, 34, .24);
  border-radius: 999px;
  color: var(--color-filtrado-600, #8e5328);
  display: inline-block;
  font-size: .68rem;
  font-weight: 800;
  margin-left: .45rem;
  padding: .12rem .48rem;
  text-transform: uppercase;
  vertical-align: middle;
}
.redcafe-lote-rotulo .redcafe-etiqueta-demo {
  background: rgba(223, 160, 102, .18);
  border-color: rgba(138, 90, 34, .24);
  color: var(--color-filtrado-600, #8e5328);
}

.redcafe-map-pin {
  background: #9b1c1f;
  border: 3px solid #fffaf2;
  border-radius: 999px;
  box-shadow: 0 6px 18px rgba(59,35,24, .28);
  display: block;
  height: 18px;
  position: absolute;
  transform: translate(-50%, -50%);
  width: 18px;
}

.redcafe-price-head {
  align-items: end;
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  justify-content: space-between;
}

.redcafe-price-value {
  color: var(--rce-cafe);
  font-family: var(--font-titulo);
  font-size: clamp(2rem, 8vw, 3.4rem);
  font-weight: 800;
  line-height: 1;
}

.redcafe-price-chart {
  height: 280px;
  margin-top: .7rem;
  position: relative;
  width: 100%;
}

.redcafe-price-chart svg {
  display: block;
  height: 100%;
  overflow: visible;
  width: 100%;
}

.redcafe-price-chart svg:focus-visible {
  outline: 2px solid var(--rce-cafe);
  outline-offset: 3px;
}

.redcafe-price-tooltip {
  background: #3b2318;
  border-radius: .55rem;
  bottom: 2.3rem;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .2);
  color: #fff;
  font-size: .82rem;
  font-weight: 700;
  padding: .45rem .65rem;
  pointer-events: none;
  position: absolute;
  transform: translateX(-50%);
  white-space: nowrap;
  z-index: 2;
}

.redcafe-price-table {
  border-collapse: collapse;
  margin-top: 1rem;
  width: 100%;
}

.redcafe-price-table th,
.redcafe-price-table td {
  border-bottom: 1px solid rgba(59,35,24, .1);
  color: var(--rce-pizarra);
  font-size: .86rem;
  padding: .55rem .35rem;
  text-align: left;
}

.redcafe-map-overlay {
  position: relative;
  min-height: 360px;
  border-top: 1px solid rgba(59,35,24, .1);
  background:
    linear-gradient(135deg, rgba(33, 107, 64, .18), rgba(201, 169, 97, .2)),
    radial-gradient(circle at 48% 42%, rgba(255, 255, 255, .86), rgba(244, 234, 216, .8));
  overflow: hidden;
}

[data-redcafe-map-original="1"] {
  display: none !important;
}

body:has(#lotes-grid) main .overflow-hidden.rounded-2xl > div:first-child p,
body:has(#lotes-grid) main .overflow-hidden.rounded-2xl > div:first-child span,
body:has(#lotes-grid) main .overflow-hidden.rounded-2xl > p {
  display: none !important;
}

.redcafe-map-overlay::before {
  content: "";
  position: absolute;
  inset: 11% 22% 13% 24%;
  border: 2px solid rgba(33, 107, 64, .28);
  border-radius: 48% 42% 55% 45%;
  transform: rotate(-8deg);
  background: rgba(33, 107, 64, .08);
}

.redcafe-map-pin {
  position: absolute;
  z-index: 2;
  display: inline-flex;
  max-width: 12rem;
  transform: translate(-50%, -50%);
  align-items: center;
  gap: .35rem;
  color: var(--rce-cafe);
  font-size: .72rem;
  font-weight: 800;
  line-height: 1.1;
  text-decoration: none;
}

.redcafe-map-pin span {
  width: .85rem;
  height: .85rem;
  flex: 0 0 auto;
  border: 2px solid var(--rce-crema);
  border-radius: 999px;
  background: #9b1c1f;
  box-shadow: 0 0 0 2px rgba(59,35,24, .25);
}

.redcafe-map-pin b {
  max-width: 8rem;
  padding: .2rem .35rem;
  background: rgba(255, 255, 255, .88);
  overflow-wrap: anywhere;
}

.redcafe-fallback-map .redcafe-map-pin {
  background: #b91c1c;
  border: 3px solid #fffaf2;
  border-radius: 999px;
  box-sizing: border-box;
  box-shadow: 0 4px 14px rgba(59,35,24, .32);
  color: transparent;
  display: block;
  height: 20px;
  min-height: 0 !important;
  max-width: none;
  padding: 0 !important;
  width: 20px;
}

.redcafe-fallback-map .redcafe-map-pin span {
  display: none;
}

.redcafe-map-count {
  display: none;
}

@media (max-width: 760px) {
  .redcafe-more {
    display: none;
  }

  body[data-redcafe-route="/marketplace/"] #lotes-grid,
  .redcafe-service-grid,
  .redcafe-panel-orders-grid {
    grid-template-columns: 1fr;
  }

  .redcafe-price-chart {
    height: 220px;
  }

  .redcafe-panel-eudr,
  .redcafe-panel-split,
  .redcafe-service-feature {
    grid-template-columns: 1fr;
  }

  .redcafe-map-overlay {
    min-height: 300px;
  }

  .redcafe-fallback-map {
    min-height: 260px;
  }

  .redcafe-map-pin b {
    display: none;
  }
}

/* ============================================================
   K.6 · Escala tipográfica unificada (referencia: home)
   El sitio mezclaba 7 escalas de <h1> (text-2xl … text-4xl md:text-6xl):
   las páginas interiores quedaban fijas en 24px mientras las de sección
   crecían a 48px. Se unifica por CSS, sin reescribir clases del HTML
   (evita mismatch de hidratación de React).
   El home queda excluido: es la referencia y conserva su md:text-6xl.
   ============================================================ */
/* Solo el home conserva su escala propia: es la referencia visual. El resto
   de páginas —incluidas quienes-somos, afiliate y noticias, que llevaban
   md:text-6xl— comparten la misma escala de título. */
body:not([data-redcafe-route="/"]) main h1,
main h1:not(.md\:text-6xl) {
  font-size: clamp(1.75rem, 1.15rem + 2.1vw, 3rem);
  line-height: 1.12;
}
main h2:not(.md\:text-6xl):not(.md\:text-5xl) {
  font-size: clamp(1.25rem, 1rem + 1.05vw, 1.875rem);
  line-height: 1.2;
}

/* K.11 · Títulos largos: parten palabra en vez de desbordar */
main h1,
main h2,
main h3 {
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: auto;
  text-wrap: balance;
}

/* ============================================================
   K.4 / K.5 · Contraste de rótulos (.badge)
   .badge fija color:var(--color-latte-texto) y ganaba a las utilidades
   de color del propio marcado. Efecto medido en /quienes-somos/:
   "Siguiente paso" (.badge.bg-filtrado-800.text-acento-claro) quedaba
   en #25221f sobre #3b2318 — contraste 1.1:1, texto invisible.
   Aquí la clase de color explícita del elemento vuelve a mandar.
   ============================================================ */
.badge.text-acento-claro { color: var(--color-acento-claro, #e3ae6b); }
.badge.text-crema { color: var(--color-crema, #f7f4ef); }
.badge.text-filtrado-600 { color: var(--color-filtrado-600, #8e5328); }
.badge.text-filtrado-800,
.badge.text-cafe { color: var(--color-filtrado-800, #3b2318); }
.badge.text-hoja { color: var(--color-hoja, #2f6b3a); }

/* ============================================================
   Panel · Mis publicaciones (E.3 / E.4 / E.5)
   Estilos alineados con el panel existente; no alteran la paleta.
   ============================================================ */
.redcafe-pub-seccion { background: var(--color-crema-oscuro, #efeae1); padding: 2rem 0; }
.redcafe-pub-wrap { margin: 0 auto; max-width: 72rem; padding: 0 1rem; }
.redcafe-pub-rotulo { color: var(--color-filtrado-600, #8e5328); font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.redcafe-pub-titulo { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-weight: 700; margin-top: .35rem; }
.redcafe-pub-intro { color: #5c5a50; font-size: .9rem; margin-top: .35rem; }
.redcafe-pub-vacio { color: #5c5a50; font-size: .9rem; padding: 1rem 0; }
.redcafe-pub-card { background: #fff; border: 1px solid rgba(59,35,24, .14); border-radius: .75rem; margin-top: 1rem; padding: 1rem 1.1rem; }
.redcafe-pub-head { align-items: center; display: flex; flex-wrap: wrap; gap: .6rem; justify-content: space-between; }
.redcafe-pub-head h4 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.1rem; font-weight: 700; }
.redcafe-pub-tag { background: var(--color-crema-oscuro, #efeae1); border-radius: 999px; color: var(--color-filtrado-600, #8e5328); font-size: .7rem; font-weight: 700; letter-spacing: .06em; padding: .2rem .7rem; text-transform: uppercase; }
.redcafe-pub-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); margin-top: .9rem; }
.redcafe-pub-label { display: flex; flex-direction: column; gap: .25rem; }
.redcafe-pub-label > span { color: #5c5a50; font-size: .72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.redcafe-pub-input { background: #fff; border: 1px solid rgba(59,35,24, .22); border-radius: .45rem; color: #25221f; font: inherit; font-size: .9rem; padding: .5rem .6rem; width: 100%; }
.redcafe-pub-input:focus-visible { border-color: var(--color-filtrado-600, #8e5328); outline: 2px solid rgba(138, 90, 34, .35); outline-offset: 1px; }
.redcafe-pub-acciones { align-items: center; display: flex; flex-wrap: wrap; gap: .75rem; margin-top: .9rem; }
.redcafe-pub-guardar { background: var(--color-filtrado-800, #3b2318); border-radius: 999px; color: #f7f4ef; cursor: pointer; font-size: .85rem; font-weight: 700; min-height: 2.6rem; padding: .5rem 1.4rem; }
.redcafe-pub-guardar:hover { background: var(--color-filtrado-600, #8e5328); }
.redcafe-pub-guardar[disabled] { cursor: progress; opacity: .6; }
.redcafe-pub-estado { font-size: .82rem; font-weight: 600; }
.redcafe-pub-estado.is-ok { color: #2f6b3a; }
.redcafe-pub-estado.is-error { color: #9b2c2c; }

/* ============================================================
   K.10 / K.12 · Footer sin desbordamiento horizontal
   El correo de contacto no partía y empujaba la página 9px a la
   derecha en tablet (768px), provocando scroll horizontal.
   ============================================================ */
footer a,
footer p,
footer li {
  overflow-wrap: anywhere;
  word-break: normal;
}

/* ============================================================
   A.9 · Ficha de detalle de lotes publicados por miembros
   ============================================================ */
.redcafe-lote-detalle { background: var(--color-crema, #f7f4ef); color: var(--color-pizarra, #25221f); padding: 2rem 0 2.4rem; }
.redcafe-lote-wrap { background: #fff; border: 1px solid rgba(59,35,24, .12); box-shadow: 0 12px 34px rgba(59,35,24, .08); margin: 0 auto; max-width: 72rem; padding: 1.4rem; }
.redcafe-lote-rotulo { color: var(--color-filtrado-600, #8e5328); font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.redcafe-lote-titulo { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: clamp(1.8rem, 1.2rem + 2vw, 2.6rem); font-weight: 700; line-height: 1.1; margin-top: .4rem; }
.redcafe-lote-sub { color: #5c5a50; font-size: 1rem; margin-top: .35rem; }
.redcafe-lote-desc { color: #5c5a50; margin-top: .9rem; max-width: 46rem; }
.redcafe-lote-datos { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-top: 1.2rem; }
.redcafe-lote-dato { background: var(--color-crema, #f7f4ef); border: 1px solid rgba(59,35,24, .12); border-radius: .5rem; padding: .65rem .8rem; }
.redcafe-lote-dato span { color: #6f6a5e; display: block; font-size: .68rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.redcafe-lote-dato strong { color: var(--color-filtrado-800, #3b2318); display: block; font-size: 1.05rem; font-weight: 700; margin-top: .2rem; }
.redcafe-lote-ficha { background: #fffdf8; border: 1px solid rgba(59,35,24, .12); margin-top: 1rem; padding: .85rem 1rem; }
.redcafe-lote-ficha h2 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.1rem; font-weight: 700; margin: 0 0 .45rem; }
.redcafe-lote-ficha p { color: #5c5a50; font-size: .92rem; line-height: 1.45; margin: .25rem 0; }
.redcafe-lote-ficha span { color: var(--color-filtrado-600, #8e5328); display: inline-block; font-size: .68rem; font-weight: 800; letter-spacing: .07em; margin-right: .4rem; min-width: 4.8rem; text-transform: uppercase; }
.redcafe-lote-acciones { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.5rem; }
.redcafe-lote-acciones .btn-ghost { border: 1px solid rgba(59,35,24, .24); color: var(--color-filtrado-800, #3b2318); }

/* ============================================================
   J.1 · Gráfico histórico del panel de precios
   ============================================================ */
.redcafe-grafico-caja {
  position: relative;
  /* El contenedor original fijaba 280px de alto y aplastaba el gráfico
     nuevo (cabecera + ejes). Se deja crecer al alto natural. */
  height: auto;
  min-height: 0;
}
.redcafe-grafico-caja .redcafe-grafico-svg { height: auto; max-height: 420px; }
.redcafe-grafico-cabecera { align-items: flex-end; display: flex; flex-wrap: wrap; gap: .75rem; justify-content: space-between; margin-bottom: .75rem; }
.redcafe-grafico-rot { color: #5c5a50; font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.redcafe-grafico-valor { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.75rem; font-weight: 700; line-height: 1.1; }
.redcafe-grafico-valor span { color: #5c5a50; font-family: var(--font-cuerpo); font-size: .78rem; font-weight: 600; }
.redcafe-grafico-var { border-radius: 999px; font-size: .85rem; font-weight: 700; padding: .3rem .8rem; }
.redcafe-grafico-var.is-sube { background: rgba(47, 107, 58, .12); color: #2f6b3a; }
.redcafe-grafico-var.is-baja { background: rgba(155, 44, 44, .12); color: #9b2c2c; }
.redcafe-grafico-var span { font-weight: 600; opacity: .75; }
.redcafe-grafico-svg { aspect-ratio: 760 / 300; display: block; height: auto; width: 100%; }
.redcafe-grafico-tooltip { background: var(--color-filtrado-800, #3b2318); border-radius: .5rem; color: #f7f4ef; font-size: .8rem; padding: .45rem .7rem; pointer-events: none; position: absolute; top: .25rem; transform: translateX(-50%); white-space: nowrap; z-index: 5; }
.redcafe-grafico-tooltip strong { font-size: .95rem; font-weight: 700; }
.redcafe-grafico-tooltip span { display: block; font-size: .68rem; opacity: .75; }
.redcafe-grafico-tooltip em { display: block; font-size: .7rem; font-style: normal; opacity: .85; }

/* ============================================================
   A.6 · Tarjetas del marketplace más compactas
   La grilla generaba hasta 5 columnas de ~213px: tan estrechas que el
   contenido se apilaba y cada tarjeta crecía hasta ~490px de alto.
   Con un mínimo de 240px caben 3-4 por fila y la tarjeta baja de altura.
   No cambia colores, tipografía ni estructura de la tarjeta.
   ============================================================ */
#lotes-grid > * > .p-4,
#servicios-grid > * > .p-4 {
  padding: .85rem .9rem;
}

/* La línea de disponibilidad ocupaba dos renglones en tarjetas estrechas */
#lotes-grid .rotulo.normal-case,
#servicios-grid .rotulo.normal-case {
  font-size: .74rem;
  line-height: 1.25;
}

@media (max-width: 480px) {
  #lotes-grid,
  #servicios-grid { grid-template-columns: 1fr; }
}
.redcafe-pub-ayuda { color: #5e5850; font-size: .68rem; font-style: normal; }

/* ============================================================
   Ficha de lote: evita ver dos versiones de la página
   En /marketplace/<id>/ el servidor entrega el marketplace completo y la ficha
   del lote la compone el JS. Mientras llega, se oculta el listado para que no
   se vea primero el marketplace entero y después la ficha.
   ============================================================ */
html[data-redcafe-lote="1"] main > *:not(#redcafe-lote-detalle) { display: none !important; }
html[data-redcafe-lote="1"] main::before {
  content: none;
}
html[data-redcafe-lote="1"] main:has(#redcafe-lote-detalle)::before { content: none; }

/* Panel · Mis pedidos y solicitudes */
.redcafe-pub-titulo-2 { margin-top: 2rem; }
.redcafe-ped-card {
  align-items: center; background: #fff; border: 1px solid rgba(59,35,24, .14);
  border-radius: .75rem; display: flex; flex-wrap: wrap; gap: .9rem;
  justify-content: space-between; margin-top: .75rem; padding: .85rem 1rem;
}
.redcafe-ped-info h4 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.02rem; font-weight: 700; margin-top: .2rem; }
.redcafe-ped-meta { color: #5c5a50; font-size: .82rem; margin-top: .15rem; }
.redcafe-ped-meta strong { color: var(--color-filtrado-600, #8e5328); }
.redcafe-ped-acciones { align-items: center; display: flex; flex-wrap: wrap; gap: .6rem; }
.redcafe-ped-btn {
  background: transparent; border: 1px solid rgba(59,35,24, .28); border-radius: 999px;
  color: var(--color-filtrado-800, #3b2318); cursor: pointer; font-size: .8rem;
  font-weight: 700; min-height: 2.3rem; padding: .35rem 1rem;
}
.redcafe-ped-btn:hover { border-color: var(--color-filtrado-600, #8e5328); color: var(--color-filtrado-600, #8e5328); }
.redcafe-ped-btn.is-borrar { border-color: rgba(155, 44, 44, .4); color: #9b2c2c; }

/* Panel de verificaciones de la administración */
.redcafe-ver-filtros { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .9rem; }
.redcafe-ver-filtros .redcafe-ped-btn.is-activo {
  background: var(--color-filtrado-800, #3b2318);
  border-color: var(--color-filtrado-800, #3b2318);
  color: #f7f4ef;
}
.redcafe-ver-fila .redcafe-pub-head { align-items: flex-start; }
.redcafe-ver-detalle { color: #5c5a50; font-size: .84rem; margin-top: .2rem; }
.redcafe-ver-quien { color: #2f6b3a; font-size: .76rem; margin-top: .25rem; }
.redcafe-ver-pendiente {
  background: rgba(138, 90, 34, .1); border-radius: 999px; color: #8e5328;
  font-size: .62rem; font-weight: 800; letter-spacing: .06em;
  padding: .12rem .55rem; text-transform: uppercase; white-space: nowrap;
}
.redcafe-ped-btn.is-borrar:hover { background: rgba(155, 44, 44, .08); }
.redcafe-ped-btn[disabled] { cursor: progress; opacity: .55; }
.redcafe-pub-label select.redcafe-pub-input { appearance: auto; background: #fff; }

/* Encabezado disponible para lectores de pantalla sin alterar el diseño */
.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;
}

/* ============================================================
   Panel · Certificados y documentos del lote
   ============================================================ */
.redcafe-doc-bloque { border-top: 1px solid rgba(59,35,24,.12); margin-top: 1rem; padding-top: .9rem; }
.redcafe-doc-titulo { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: .98rem; font-weight: 700; }
.redcafe-doc-lista { display: grid; gap: .4rem; list-style: none; margin: .6rem 0 .8rem; padding: 0; }
.redcafe-doc-lista li { align-items: center; background: var(--color-crema-oscuro, #efeae1); border-radius: .5rem; display: flex; gap: .6rem; justify-content: space-between; padding: .45rem .7rem; }
.redcafe-doc-lista a { align-items: baseline; color: var(--color-filtrado-800, #3b2318); display: flex; gap: .5rem; text-decoration: none; }
.redcafe-doc-lista a:hover strong { text-decoration: underline; }
.redcafe-doc-lista strong { font-size: .88rem; font-weight: 700; }
.redcafe-doc-lista em { color: #5e5850; font-size: .68rem; font-style: normal; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.redcafe-doc-vacio { color: #5e5850; font-size: .84rem; }
.redcafe-doc-quitar { background: none; border: 0; color: #9b2c2c; cursor: pointer; font-size: .76rem; font-weight: 700; }
.redcafe-doc-quitar:hover { text-decoration: underline; }
.redcafe-doc-alta { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem; }
.redcafe-doc-alta .redcafe-doc-tipo { max-width: 15rem; }
.redcafe-doc-alta .redcafe-doc-nombre { max-width: 15rem; }
.redcafe-doc-archivo { font-size: .82rem; max-width: 15rem; }
.redcafe-doc-subir { background: var(--color-filtrado-800, #3b2318); border-radius: 999px; color: #f7f4ef; cursor: pointer; font-size: .82rem; font-weight: 700; min-height: 2.4rem; padding: .4rem 1.2rem; }
.redcafe-doc-subir:hover { background: var(--color-filtrado-600, #8e5328); }
.redcafe-doc-subir[disabled] { cursor: progress; opacity: .6; }

/* Ficha pública · documentos del lote */
.redcafe-lote-docs { margin-top: 1.4rem; }
.redcafe-lote-docs h2 { color: #f7f4ef; font-family: var(--font-titulo); font-size: 1.05rem; font-weight: 700; }
.redcafe-lote-docs ul { display: flex; flex-wrap: wrap; gap: .55rem; list-style: none; margin-top: .6rem; padding: 0; }
.redcafe-lote-docs a { align-items: center; border: 1px solid rgba(251,250,247,.35); border-radius: .5rem; color: #f7f4ef; display: inline-flex; gap: .5rem; font-size: .85rem; font-weight: 600; padding: .45rem .85rem; text-decoration: none; }
.redcafe-lote-docs a:hover { background: rgba(251,250,247,.12); border-color: var(--color-acento-claro, #e3ae6b); }
.redcafe-lote-docs em { color: rgba(251,250,247,.7); font-size: .66rem; font-style: normal; letter-spacing: .05em; text-transform: uppercase; }

/* Indicación sobre las fotos del lote */
.redcafe-nota-fotos {
  background: rgba(223, 160, 102, .12);
  border-left: 3px solid var(--color-acento-claro, #e3ae6b);
  border-radius: .35rem;
  color: #5c5a50;
  font-size: .82rem;
  line-height: 1.45;
  margin: .5rem 0 .75rem;
  padding: .6rem .8rem;
}
.redcafe-nota-fotos strong { color: var(--color-filtrado-800, #3b2318); }

/* ============================================================
   Academia · visor de curso con avance
   ============================================================ */
[data-redcafe-oculto="1"] { display: none !important; }
/* El hueco mientras llega el curso: mismo sitio, sin salto ni pantalla blanca. */
.redcafe-curso-esperando { color: #5e5850; font-size: .9rem; margin: 0 auto; max-width: 56rem; min-height: 60vh; padding: 3rem 1.1rem; }
.redcafe-curso { background: var(--color-crema-oscuro, #efeae1); padding: 2rem 0 3rem; }
.redcafe-curso-wrap { margin: 0 auto; max-width: 52rem; padding: 0 1rem; }
.redcafe-curso-rotulo { color: var(--color-filtrado-600, #8e5328); font-size: .74rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.redcafe-curso-titulo { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: clamp(1.9rem, 1.3rem + 2vw, 2.6rem); font-weight: 700; line-height: 1.12; margin-top: .35rem; }
.redcafe-curso-desc { color: #5c5a50; font-size: 1.02rem; margin-top: .5rem; }
.redcafe-curso-intro { background: #fff; border-radius: .6rem; margin-top: 1.2rem; padding: 1rem 1.2rem; }
.redcafe-curso-intro p { color: #4a4740; line-height: 1.6; }
.redcafe-curso-obj { margin-top: 1.6rem; }
.redcafe-curso-obj h2, .redcafe-curso-rec h2, .redcafe-curso-cierre h2 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.15rem; font-weight: 700; }
.redcafe-curso-obj ul, .redcafe-curso-rec ul { list-style: none; margin-top: .6rem; padding: 0; }
.redcafe-curso-obj li, .redcafe-curso-rec li { color: #4a4740; line-height: 1.5; padding: .3rem 0 .3rem 1.4rem; position: relative; }
.redcafe-curso-obj li::before, .redcafe-curso-rec li::before { color: var(--color-acento-claro, #e3ae6b); content: "▸"; left: .2rem; position: absolute; }
.redcafe-curso-rec, .redcafe-curso-cierre { border-top: 1px solid rgba(59,35,24,.12); margin-top: 2rem; padding-top: 1.2rem; }
.redcafe-curso-cierre p { color: #4a4740; line-height: 1.6; margin-top: .5rem; }

.redcafe-avance { margin-top: 1.2rem; }
.redcafe-avance-barra { background: rgba(59,35,24,.12); border-radius: 999px; height: .55rem; overflow: hidden; }
.redcafe-avance-barra span { background: #2f6b3a; border-radius: 999px; display: block; height: 100%; transition: width .3s ease; }
.redcafe-avance-barra.mini { height: .35rem; margin-top: .6rem; }
.redcafe-avance-texto { color: #5c5a50; font-size: .84rem; margin-top: .35rem; }
.redcafe-avance-texto strong { color: #2f6b3a; }

.redcafe-modulo { background: #fff; border-radius: .7rem; margin-top: 1.4rem; padding: 1.2rem 1.3rem; }
.redcafe-modulo-num { color: var(--color-filtrado-600, #8e5328); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.redcafe-modulo h3 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.3rem; font-weight: 700; margin-top: .2rem; }
.redcafe-modulo-resumen { color: #5c5a50; font-size: .92rem; line-height: 1.55; margin-top: .4rem; }
.redcafe-leccion { border-top: 1px solid rgba(59,35,24,.1); margin-top: 1.1rem; padding-top: 1rem; }
.redcafe-leccion h4 { color: var(--color-filtrado-800, #3b2318); font-size: 1.02rem; font-weight: 700; }
.redcafe-leccion-texto p { color: #4a4740; line-height: 1.65; margin-top: .5rem; }
.redcafe-leccion.is-hecha h4::after { color: #2f6b3a; content: " ✓"; }
.redcafe-leccion-check { align-items: center; color: #5c5a50; cursor: pointer; display: inline-flex; font-size: .84rem; font-weight: 600; gap: .45rem; margin-top: .7rem; }
.redcafe-leccion-check input { accent-color: #2f6b3a; height: 1.05rem; width: 1.05rem; }
.redcafe-leccion-bloqueada { color: #7d6b5d; font-size: .82rem; font-weight: 700; margin-top: .65rem; }
.redcafe-ejercicio { background: rgba(223,160,102,.14); border-left: 3px solid var(--color-acento-claro, #e3ae6b); border-radius: .35rem; margin-top: 1.1rem; padding: .8rem 1rem; }
.redcafe-ejercicio-rot { color: var(--color-filtrado-800, #3b2318); font-size: .7rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.redcafe-ejercicio p + p { color: #4a4740; line-height: 1.55; margin-top: .3rem; }
.redcafe-curso-pie { align-items: center; display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }
.redcafe-curso-reiniciar { background: none; border: 1px solid rgba(59,35,24,.28); border-radius: 999px; color: #5c5a50; cursor: pointer; font-size: .82rem; font-weight: 600; padding: .45rem 1.1rem; }
.redcafe-curso-estado { font-size: .84rem; font-weight: 600; }
.redcafe-curso-estado.is-error { color: #9b2c2c; }

/* Academia · listado con avance */
.redcafe-academia-avance { background: var(--color-crema-oscuro, #efeae1); padding: 2rem 0; }
.redcafe-cursos-grid { display: grid; gap: .9rem; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); margin-top: 1rem; }
.redcafe-curso-card { background: #fff; border: 1px solid rgba(59,35,24,.12); border-radius: .7rem; display: block; overflow: hidden; padding: 0 0 1rem; text-decoration: none; transition: border-color .2s ease; }
/* La portada va dentro de la tarjeta, a lo ancho y con proporción fija para que
   todas las tarjetas queden iguales aunque la imagen cambie. Si el archivo no
   existiera, el onerror la retira y la tarjeta sigue entera. */
.redcafe-curso-card-portada { aspect-ratio: 16 / 9; background: rgba(59,35,24,.06); display: block; height: auto; object-fit: cover; width: 100%; }
.redcafe-curso-card > :not(.redcafe-curso-card-portada) { margin-left: 1.1rem; margin-right: 1.1rem; }
.redcafe-curso-card-rot { margin-top: .85rem; }
.redcafe-curso-card:hover { border-color: var(--color-acento-claro, #e3ae6b); }
.redcafe-curso-card-rot { align-items: center; color: var(--color-filtrado-600, #8e5328); display: flex; flex-wrap: wrap; gap: .4rem; font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.redcafe-curso-card h3 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.08rem; font-weight: 700; margin-top: .25rem; }
.redcafe-curso-card-desc { color: #5c5a50; font-size: .86rem; line-height: 1.45; margin-top: .35rem; }
.redcafe-curso-card-meta { color: #5e5850; font-size: .74rem; margin-top: .5rem; }
.redcafe-curso-card-avance { color: #2f6b3a; font-size: .74rem; font-weight: 700; margin-top: .25rem; }

/* Panel · editor de cursos */
.redcafe-ed-curso .redcafe-pub-label { margin-top: .6rem; }
.redcafe-ed-modulos { border-top: 1px solid rgba(59,35,24,.12); margin-top: 1rem; padding-top: .9rem; }
.redcafe-ed-modulo { background: var(--color-crema-oscuro, #efeae1); border-radius: .55rem; margin-top: .7rem; padding: .8rem .9rem; }
.redcafe-ed-modulo-cab { display: flex; flex-wrap: wrap; gap: .5rem; }
.redcafe-ed-modulo-cab .redcafe-pub-input { flex: 1 1 12rem; }
.redcafe-ed-min { flex: 0 0 5rem !important; }
.redcafe-ed-leccion { background: #fff; border-radius: .45rem; display: grid; gap: .4rem; margin-top: .5rem; padding: .6rem .7rem; }
.redcafe-ed-quitar { background: none; border: 0; color: #9b2c2c; cursor: pointer; font-size: .74rem; font-weight: 700; justify-self: start; }
.redcafe-ed-add { background: none; border: 1px dashed rgba(59,35,24,.32); border-radius: .45rem; color: var(--color-filtrado-600, #8e5328); cursor: pointer; font-size: .8rem; font-weight: 700; margin-top: .6rem; padding: .4rem .9rem; }
.redcafe-ed-add:hover { border-color: var(--color-filtrado-600, #8e5328); }

/* Foto del lote en las tarjetas del marketplace */
.redcafe-lote-foto {
  aspect-ratio: 16 / 10;
  border-radius: .45rem;
  display: block;
  object-fit: cover;
  width: 100%;
}

/* Academia · etiqueta de disponibilidad del curso */
.redcafe-curso-etiqueta {
  background: rgba(47, 107, 58, .14);
  border-radius: 999px;
  color: #2f6b3a;
  display: inline-block;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .05em;
  margin-left: .45rem;
  padding: .12rem .55rem;
  text-transform: uppercase;
  vertical-align: middle;
}
.redcafe-curso-etiqueta.es-preparacion { background: rgba(92, 90, 80, .14); color: #5c5a50; }
/* Acciones dentro de las tarjetas de pedido del panel */
.redcafe-panel-order-card .redcafe-ped-acciones { margin-top: .7rem; }

/* El grid original de React se conserva en el DOM pero oculto: así React
   mantiene sus referencias intactas y no falla al cambiar de pestaña. */
[data-redcafe-oculto-react="1"] { display: none !important; }

/* ============================================================
   Cabecera · "Precios" y menú "Más" fuera del <nav> de React
   Se insertan como hermano del nav para no alterar el árbol que React
   gestiona. El CSS los alinea igual que si estuvieran dentro.
   ============================================================ */
.redcafe-nav-extra { display: none; }
@media (min-width: 768px) {
  .redcafe-nav-extra {
    align-items: center;
    display: flex;
    gap: 1rem;
    margin-left: -0.25rem;
  }
}
.redcafe-nav-extra .redcafe-nav-precios {
  align-items: center;
  color: var(--color-acento-claro, #e3ae6b);
  display: inline-flex;
  font-weight: 700;
  min-height: 2.5rem;
  transition: color .2s ease;
  white-space: nowrap;
}
.redcafe-nav-extra .redcafe-nav-precios:hover { color: var(--rce-crema, #f7f0df); }

/* Por debajo de 768 px este contenedor se ocultaba entero, y con él la campana:
   los avisos quedaban inalcanzables en móvil, donde la hamburguesa tampoco los
   ofrece. (Que el panel de avisos ya tenga su regla para <=640 px confirma que
   era un descuido, no una decisión de diseño.) Se muestra el contenedor y se
   ocultan solo los enlaces que sí viven en la hamburguesa, para no duplicarlos. */
@media (max-width: 767.98px) {
  .redcafe-nav-extra {
    align-items: center;
    display: flex;
    gap: .25rem;
  }
  .redcafe-nav-extra > *:not(.redcafe-avisos-boton) { display: none; }
}

/* ============================================================
   Academia · bloques de contenido (visor)
   ============================================================ */
.redcafe-bloques { display: grid; gap: 1rem; margin-top: .9rem; }
.redcafe-bloque-titulo { color: var(--color-filtrado-800, #3b2318); font-size: .95rem; font-weight: 700; margin-bottom: .35rem; }
.redcafe-bloque p { color: #4a4740; line-height: 1.65; }
.redcafe-bloque p + p { margin-top: .6rem; }
.redcafe-bloque-imagen { margin: 0; }
.redcafe-bloque-imagen img { border-radius: .5rem; display: block; width: 100%; aspect-ratio: 16 / 9; max-height: 26rem; object-fit: cover; object-position: center; background-color: rgba(59,35,24,.06); }
.redcafe-bloque-imagen figcaption { color: #5e5850; font-size: .8rem; margin-top: .4rem; }
.redcafe-bloque-enlace a { align-items: flex-start; background: var(--color-crema-oscuro, #efeae1); border-radius: .5rem; color: var(--color-filtrado-800, #3b2318); display: flex; flex-direction: column; gap: .2rem; padding: .7rem .9rem; text-decoration: none; }
.redcafe-bloque-enlace a::before { content: "📎 "; }
.redcafe-bloque-enlace a:hover { background: rgba(223, 160, 102, .18); }
.redcafe-bloque-enlace span { color: #5c5a50; font-size: .84rem; }
.redcafe-embed { aspect-ratio: 16 / 9; background: #000; border-radius: .5rem; overflow: hidden; }
.redcafe-embed.es-documento { aspect-ratio: 4 / 3; background: var(--color-crema-oscuro, #efeae1); }
.redcafe-embed iframe { border: 0; display: block; height: 100%; width: 100%; }
.redcafe-bloque-pie { color: #5e5850; font-size: .8rem; margin-top: .4rem; }
.redcafe-bloque-codigo pre { background: #25221f; border-radius: .5rem; color: #f7f0df; font-size: .82rem; line-height: 1.5; overflow-x: auto; padding: .8rem 1rem; }
.redcafe-bloque-codigo code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.redcafe-tabla-wrap { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.redcafe-bloque-tabla table { border-collapse: collapse; min-width: 42rem; width: 100%; }
.redcafe-bloque-tabla th,
.redcafe-bloque-tabla td { border-bottom: 1px solid rgba(59,35,24,.12); color: #4a4740; font-size: .86rem; line-height: 1.45; padding: .65rem .7rem; text-align: left; vertical-align: top; }
.redcafe-bloque-tabla th { background: rgba(59,35,24,.06); color: var(--color-filtrado-800, #3b2318); font-weight: 800; }
.redcafe-bloque-tabla tr:last-child td { border-bottom: 0; }

/* Academia · editor de bloques */
.redcafe-ed-bloques { display: grid; gap: .6rem; margin-top: .6rem; }
.redcafe-ed-bloque { background: rgba(223, 160, 102, .08); border: 1px solid rgba(59,35,24, .14); border-radius: .5rem; padding: .7rem .8rem; }
.redcafe-ed-bloque-cab { display: flex; flex-wrap: wrap; gap: .5rem; }
.redcafe-ed-bloque-cab .redcafe-ed-bloque-tipo { flex: 0 0 14rem; }
.redcafe-ed-bloque-cab input { flex: 1 1 12rem; }
.redcafe-ed-bloque-campos { display: grid; gap: .45rem; margin-top: .5rem; }
.redcafe-ed-bloque-campos .campo-url { display: grid; gap: .35rem; }
.redcafe-ed-subir-imagen { background: var(--color-filtrado-800, #3b2318); border-radius: 999px; color: #f7f4ef; cursor: pointer; font-size: .78rem; font-weight: 700; justify-self: start; padding: .35rem 1rem; }
/* Cada tipo de bloque enseña solo lo suyo */
.redcafe-ed-bloque .campo-texto, .redcafe-ed-bloque .campo-url,
.redcafe-ed-bloque .campo-desc, .redcafe-ed-bloque .campo-alt,
.redcafe-ed-bloque .campo-tabla, .redcafe-ed-bloque .campo-codigo { display: none; }
.redcafe-ed-bloque[data-tipo="texto"] .campo-texto { display: block; }
.redcafe-ed-bloque[data-tipo="tabla"] .campo-tabla { display: block; }
.redcafe-ed-bloque[data-tipo="codigo"] .campo-codigo { display: block; }
.redcafe-ed-bloque[data-tipo="imagen"] .campo-url,
.redcafe-ed-bloque[data-tipo="enlace"] .campo-url,
.redcafe-ed-bloque[data-tipo="video"] .campo-url,
.redcafe-ed-bloque[data-tipo="documento"] .campo-url { display: grid; }
.redcafe-ed-bloque[data-tipo="imagen"] .campo-alt,
.redcafe-ed-bloque[data-tipo="imagen"] .campo-desc,
.redcafe-ed-bloque[data-tipo="enlace"] .campo-desc,
.redcafe-ed-bloque[data-tipo="video"] .campo-desc,
.redcafe-ed-bloque[data-tipo="documento"] .campo-desc { display: block; }
.redcafe-ed-bloque:not([data-tipo="imagen"]) .redcafe-ed-imagen-archivo,
.redcafe-ed-bloque:not([data-tipo="imagen"]) .redcafe-ed-subir-imagen { display: none; }

@media (max-width: 639px) {
  .redcafe-tabla-wrap { overflow-x: visible; }
  .redcafe-bloque-tabla table,
  .redcafe-bloque-tabla thead,
  .redcafe-bloque-tabla tbody,
  .redcafe-bloque-tabla tr,
  .redcafe-bloque-tabla th,
  .redcafe-bloque-tabla td { display: block; min-width: 0; width: 100%; }
  .redcafe-bloque-tabla thead { height: 1px; opacity: 0; overflow: hidden; position: absolute; width: 1px; }
  .redcafe-bloque-tabla tr { background: rgba(255,255,255,.74); border: 1px solid rgba(59,35,24,.12); border-radius: .45rem; margin: .7rem 0; overflow: hidden; }
  .redcafe-bloque-tabla td { border-bottom: 1px solid rgba(59,35,24,.09); padding: .62rem .7rem .62rem 42%; position: relative; }
  .redcafe-bloque-tabla td::before { color: var(--color-filtrado-800, #3b2318); content: attr(data-label); font-weight: 800; left: .7rem; max-width: 36%; position: absolute; top: .62rem; }
  .redcafe-bloque-tabla td:last-child { border-bottom: 0; }
}

/* Academia · solicitudes de acceso */
.redcafe-sol-card { align-items: center; background: #fff; border: 1px solid rgba(59,35,24,.14); border-radius: .6rem; display: flex; flex-wrap: wrap; gap: .8rem; justify-content: space-between; margin-top: .6rem; padding: .8rem 1rem; }
.redcafe-sol-card h4 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1rem; font-weight: 700; margin-top: .2rem; }
.redcafe-sol-meta { color: #5c5a50; font-size: .8rem; margin-top: .15rem; }
.redcafe-sol-meta strong { text-transform: capitalize; }
.redcafe-sol-meta .es-pendiente { color: #b87440; }
.redcafe-sol-meta .es-aprobado { color: #2f6b3a; }
.redcafe-sol-meta .es-rechazado { color: #9b2c2c; }
.redcafe-sol-msg { color: #5c5a50; font-size: .84rem; font-style: italic; margin-top: .3rem; max-width: 42rem; }
.redcafe-sol-acciones { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem; }
.redcafe-sol-btn { border-radius: 999px; cursor: pointer; font-size: .8rem; font-weight: 700; min-height: 2.3rem; padding: .35rem 1rem; }
.redcafe-sol-btn.is-si { background: #2f6b3a; border: 0; color: #fff; }
.redcafe-sol-btn.is-no { background: transparent; border: 1px solid rgba(155,44,44,.4); color: #9b2c2c; }
.redcafe-sol-btn[disabled] { cursor: progress; opacity: .6; }

/* Aviso de curso restringido en el visor */
.redcafe-curso-bloqueado { background: rgba(223,160,102,.14); border-left: 3px solid var(--color-acento-claro, #e3ae6b); border-radius: .4rem; margin-top: 1.2rem; padding: 1rem 1.1rem; }
.redcafe-curso-bloqueado h2 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.1rem; font-weight: 700; }
.redcafe-curso-bloqueado p { color: #4a4740; line-height: 1.55; margin-top: .4rem; }
.redcafe-curso-solicitar { background: var(--color-filtrado-800, #3b2318); border-radius: 999px; color: #f7f4ef; cursor: pointer; font-size: .85rem; font-weight: 700; margin-top: .7rem; min-height: 2.5rem; padding: .45rem 1.3rem; }

/* ═══════════════════════════════════════════════════════════════════════
   Avisos del miembro (campana en la cabecera)
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-avisos-boton { align-items: center; background: transparent; border: 0; border-radius: 999px; color: rgba(247,240,223,.88); cursor: pointer; display: inline-flex; justify-content: center; min-height: 2.5rem; min-width: 2.5rem; padding: .3rem .5rem; position: relative; }
.redcafe-avisos-boton:hover { background: rgba(247,240,223,.12); color: #fff; }
.redcafe-avisos-boton:focus-visible { outline: 2px solid var(--rce-acento); outline-offset: 2px; }
.redcafe-avisos-icono { font-size: 1.15rem; line-height: 1; }
.redcafe-avisos-boton.tiene-avisos .redcafe-avisos-icono { animation: redcafe-campana .9s ease-in-out 1; }
@keyframes redcafe-campana { 0%,100% { transform: rotate(0); } 25% { transform: rotate(12deg); } 75% { transform: rotate(-12deg); } }
@media (prefers-reduced-motion: reduce) { .redcafe-avisos-boton.tiene-avisos .redcafe-avisos-icono { animation: none; } }
.redcafe-avisos-globo { background: #b3261e; border-radius: 999px; color: #fff; font-size: .65rem; font-weight: 700; line-height: 1; min-width: 1.1rem; padding: .18rem .3rem; position: absolute; right: .1rem; text-align: center; top: .15rem; }

.redcafe-avisos-panel { background: #fff; border: 1px solid rgba(59,35,24,.16); border-radius: .7rem; box-shadow: 0 18px 50px rgba(20,31,26,.26); color: var(--rce-pizarra); display: flex; flex-direction: column; max-height: min(32rem, 80vh); position: fixed; right: 1rem; top: 4.5rem; width: min(24rem, calc(100vw - 2rem)); z-index: 1200; }
.redcafe-avisos-cabecera { align-items: center; border-bottom: 1px solid rgba(59,35,24,.12); display: flex; gap: .6rem; justify-content: space-between; padding: .85rem 1rem; }
.redcafe-avisos-cabecera h2 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.05rem; font-weight: 700; margin: 0; }
.redcafe-avisos-todos { background: transparent; border: 0; color: var(--rce-hoja); cursor: pointer; font-size: .78rem; font-weight: 600; margin-left: auto; padding: .3rem; }
.redcafe-avisos-todos:hover { text-decoration: underline; }
.redcafe-avisos-cerrar { background: transparent; border: 0; color: #6b6459; cursor: pointer; font-size: 1.4rem; line-height: 1; padding: 0 .2rem; }
.redcafe-avisos-lista { overflow-y: auto; padding: .4rem; }
.redcafe-avisos-vacio { color: #6b6459; font-size: .85rem; line-height: 1.5; padding: 1.4rem 1rem; text-align: center; }
.redcafe-aviso { align-items: flex-start; border-radius: .5rem; display: flex; gap: .65rem; padding: .7rem .6rem; }
.redcafe-aviso + .redcafe-aviso { border-top: 1px solid rgba(59,35,24,.08); }
.redcafe-aviso.es-nuevo { background: rgba(240,195,106,.14); }
.redcafe-aviso-icono { flex: 0 0 auto; font-size: 1.05rem; line-height: 1.3; }
.redcafe-aviso-cuerpo { flex: 1 1 auto; min-width: 0; }
.redcafe-aviso-titulo { color: var(--rce-cafe); display: block; font-size: .87rem; font-weight: 650; line-height: 1.35; text-decoration: none; }
a.redcafe-aviso-titulo:hover { text-decoration: underline; }
.redcafe-aviso-texto { color: #5c5a50; font-size: .8rem; line-height: 1.45; margin-top: .18rem; }
.redcafe-aviso-fecha { color: #6a645b; display: block; font-size: .72rem; margin-top: .25rem; }
.redcafe-aviso-quitar { background: transparent; border: 0; color: #a29a8d; cursor: pointer; flex: 0 0 auto; font-size: 1.1rem; line-height: 1; padding: 0 .15rem; }
.redcafe-aviso-quitar:hover { color: #b3261e; }
@media (max-width: 640px) { .redcafe-avisos-panel { left: .75rem; right: .75rem; top: 4rem; width: auto; } }

/* ═══════════════════════════════════════════════════════════════════════
   Advertencia de pagos antes de enviar un pedido
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-avisopago-fondo { align-items: center; background: rgba(17,27,22,.55); display: flex; inset: 0; justify-content: center; padding: 1rem; position: fixed; z-index: 1400; }
.redcafe-avisopago { background: #fff; border-radius: .8rem; box-shadow: 0 24px 70px rgba(14,22,18,.4); color: var(--rce-pizarra); max-height: 88vh; max-width: 34rem; overflow-y: auto; padding: 1.5rem 1.6rem; }
.redcafe-avisopago-rotulo { color: #b87440; font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.redcafe-avisopago h2 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.4rem; font-weight: 700; margin: .3rem 0 .8rem; }
.redcafe-avisopago p { color: #4a4740; font-size: .9rem; line-height: 1.6; margin-bottom: .7rem; }
.redcafe-avisopago .redcafe-avisopago-clave { background: rgba(179,38,30,.08); border-left: 3px solid #b3261e; border-radius: .3rem; color: #7a1f19; font-weight: 650; padding: .6rem .8rem; }
.redcafe-avisopago-pie { border-top: 1px solid rgba(59,35,24,.12); color: #6b6459 !important; font-size: .82rem !important; padding-top: .7rem; }
.redcafe-avisopago-acciones { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: flex-end; margin-top: .5rem; }
.redcafe-avisopago-acciones button { border-radius: 999px; cursor: pointer; font-size: .88rem; font-weight: 700; min-height: 2.7rem; padding: .5rem 1.3rem; }
.redcafe-avisopago-cancelar { background: transparent; border: 1px solid rgba(59,35,24,.28); color: var(--rce-cafe); }
.redcafe-avisopago-seguir { background: var(--rce-hoja); border: 0; color: #fff; }
.redcafe-avisopago-seguir:focus-visible, .redcafe-avisopago-cancelar:focus-visible { outline: 3px solid rgba(63,107,74,.35); outline-offset: 2px; }

.redcafe-avisopago-fijo { background: rgba(240,195,106,.16); border-left: 3px solid var(--rce-latte); border-radius: .4rem; color: #4a4740; display: block; font-size: .84rem; line-height: 1.55; margin: 2rem auto 2.5rem; max-width: 72rem; padding: .9rem 1.1rem; }
.redcafe-avisopago-fijo strong { color: var(--rce-cafe); }
.redcafe-avisopago-fijo a { color: var(--rce-hoja); font-weight: 650; text-decoration: underline; }

/* ═══════════════════════════════════════════════════════════════════════
   Registro de pedidos y actividad de la Red
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-reg-barra { align-items: flex-end; display: flex; flex-wrap: wrap; gap: .8rem; justify-content: space-between; margin-top: 1rem; }
.redcafe-reg-etiqueta { color: #5c5a50; display: flex; flex-direction: column; font-size: .78rem; font-weight: 650; gap: .25rem; }
.redcafe-reg-filtro { border: 1px solid rgba(59,35,24,.22); border-radius: .4rem; background: #fff; font-size: .85rem; min-height: 2.4rem; padding: .35rem .6rem; }
.redcafe-reg-csv { background: transparent; border: 1px solid rgba(59,35,24,.28); border-radius: 999px; color: var(--rce-cafe); cursor: pointer; font-size: .8rem; font-weight: 650; min-height: 2.4rem; padding: .35rem 1.1rem; }
.redcafe-reg-csv:hover { background: rgba(59,35,24,.06); }
.redcafe-reg-resumen { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .9rem; }
.redcafe-reg-resumen span { background: rgba(59,35,24,.06); border-radius: 999px; color: #4a4740; font-size: .78rem; font-weight: 600; padding: .3rem .8rem; }
.redcafe-reg-resumen .redcafe-reg-chip { background: rgba(63,107,74,.12); color: #3f5626; }
.redcafe-reg-lista { display: grid; gap: .8rem; margin-top: 1rem; }
.redcafe-reg-fila { background: #fff; border: 1px solid rgba(59,35,24,.14); border-left: 3px solid rgba(59,35,24,.2); border-radius: .55rem; padding: .9rem 1.1rem; }
.redcafe-reg-fila[data-estado="Entregado"] { border-left-color: #2f6b3a; }
.redcafe-reg-fila[data-estado="Cancelado"] { border-left-color: #9b2c2c; }
.redcafe-reg-fila[data-estado="En camino"] { border-left-color: #b87440; }
.redcafe-reg-cab { align-items: baseline; display: flex; flex-wrap: wrap; gap: .6rem; }
.redcafe-reg-nro { color: #6a645b; font-size: .78rem; font-weight: 700; }
.redcafe-reg-concepto { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.02rem; font-weight: 700; }
.redcafe-reg-estado { background: rgba(59,35,24,.08); border-radius: 999px; color: #4a4740; font-size: .72rem; font-weight: 700; margin-left: auto; padding: .18rem .7rem; text-transform: uppercase; }
.redcafe-reg-meta { display: grid; gap: .2rem .9rem; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); margin-top: .7rem; }
.redcafe-reg-meta dt { color: #6a645b; font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.redcafe-reg-meta dd { color: #4a4740; font-size: .86rem; margin: 0 0 .4rem; }
.redcafe-reg-traza { margin-top: .5rem; }
.redcafe-reg-traza > summary { color: var(--rce-hoja); cursor: pointer; font-size: .8rem; font-weight: 650; }
.redcafe-reg-traza ol { border-left: 2px solid rgba(59,35,24,.14); margin: .6rem 0 0 .35rem; padding-left: .9rem; }
.redcafe-reg-traza li { margin-bottom: .55rem; }
.redcafe-reg-traza li strong { color: var(--rce-cafe); font-size: .84rem; }
.redcafe-reg-traza-fecha { color: #6a645b; font-size: .76rem; }
.redcafe-reg-traza li p { color: #5c5a50; font-size: .8rem; line-height: 1.45; margin-top: .1rem; }

/* ═══════════════════════════════════════════════════════════════════════
   Café en producto terminado
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-etiqueta-terminado { background: rgba(166,106,44,.18); border-radius: 999px; color: #6f4718; display: inline-block; font-size: .62rem; font-weight: 800; letter-spacing: .08em; margin-left: .4rem; padding: .12rem .5rem; text-transform: uppercase; vertical-align: middle; }
/* En un lote de café verde, los campos de la bolsa tostada no aplican. */
.redcafe-pub-card[data-categoria="verde"] .redcafe-pub-label[data-solo="terminado"] { display: none; }

/* Mis reportes en el panel */
.redcafe-mis-reportes { margin: 2.5rem auto 0; max-width: 72rem; padding: 0 1rem; }
.redcafe-mis-reportes h3 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.35rem; font-weight: 700; }
.redcafe-mis-lista { display: grid; gap: .8rem; margin-top: 1rem; }
.redcafe-mis-card { background: #fff; border: 1px solid rgba(59,35,24,.14); border-radius: .55rem; padding: .9rem 1.1rem; }
.redcafe-mis-card h4 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1rem; font-weight: 700; }
.redcafe-mis-meta { color: #6a645b; display: flex; flex-wrap: wrap; gap: .6rem; font-size: .74rem; font-weight: 650; margin-top: .3rem; text-transform: uppercase; }
.redcafe-mis-estado { background: rgba(63,107,74,.14); border-radius: 999px; color: #3f5626; padding: .1rem .6rem; }
.redcafe-mis-card p { color: #5c5a50; font-size: .86rem; line-height: 1.5; margin-top: .5rem; }
.redcafe-mis-resp { background: rgba(59,35,24,.05); border-radius: .4rem; margin-top: .6rem; padding: .6rem .8rem; }
.redcafe-mis-resp strong { color: var(--rce-cafe); font-size: .82rem; }
.redcafe-mis-vacio { color: #6b6459; font-size: .86rem; }

/* ═══════════════════════════════════════════════════════════════════════
   Marketplace · barra propia de tipo y orden
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-market-barra { align-items: center; display: flex; flex-wrap: wrap; gap: .8rem; margin: 0 0 1rem; }
.redcafe-market-grupo { display: inline-flex; flex-wrap: wrap; gap: .3rem; }
.redcafe-market-grupo button { background: transparent; border: 1px solid rgba(59,35,24,.22); border-radius: 999px; color: #4a4740; cursor: pointer; font-size: .8rem; font-weight: 650; min-height: 2.3rem; padding: .3rem 1rem; }
.redcafe-market-grupo button:hover { background: rgba(59,35,24,.06); }
.redcafe-market-grupo button.is-activo { background: var(--rce-cafe); border-color: var(--rce-cafe); color: #f7f4ef; }
.redcafe-market-grupo button:focus-visible { outline: 2px solid var(--rce-hoja); outline-offset: 2px; }
.redcafe-market-orden { align-items: center; color: #6b6459; display: inline-flex; font-size: .76rem; font-weight: 700; gap: .4rem; letter-spacing: .05em; text-transform: uppercase; }
.redcafe-market-orden select { background: #fff; border: 1px solid rgba(59,35,24,.22); border-radius: .4rem; color: #25221f; font-size: .82rem; font-weight: 500; letter-spacing: 0; min-height: 2.3rem; padding: .3rem .6rem; text-transform: none; }
.redcafe-market-resumen { color: #6b6459; font-size: .8rem; margin-left: auto; }
.redcafe-market-vacio { color: #6b6459; font-size: .92rem; grid-column: 1 / -1; line-height: 1.6; padding: 2.5rem 1rem; text-align: center; }
@media (max-width: 640px) { .redcafe-market-resumen { margin-left: 0; width: 100%; } }

#redcafe-lotes-propio {
  gap: .7rem;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
#redcafe-lotes-propio .redcafe-lote-tarjeta {
  border-radius: .45rem;
  display: grid;
  gap: .7rem;
  grid-template-columns: 6.8rem minmax(0, 1fr);
  padding: .75rem !important;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta > a.block {
  display: contents;
}
#redcafe-lotes-propio .redcafe-lote-foto {
  align-self: stretch;
  aspect-ratio: 1 / 1;
  border-radius: .35rem;
  grid-row: 1 / span 5;
  height: 100%;
  max-height: 8rem;
  min-height: 6.8rem;
  object-fit: cover;
  width: 100%;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta p,
#redcafe-lotes-propio .redcafe-lote-tarjeta h3 {
  margin-top: 0 !important;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta h3 {
  font-size: 1.12rem !important;
  line-height: 1.16 !important;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta p {
  font-size: .82rem !important;
  line-height: 1.35 !important;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta p.text-lg {
  font-size: 1rem !important;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta > div {
  gap: .4rem !important;
  grid-column: 1 / -1;
  margin-top: .15rem !important;
}
#redcafe-lotes-propio .redcafe-lote-tarjeta .btn-primary,
#redcafe-lotes-propio .redcafe-lote-tarjeta .btn-ghost {
  min-height: 2.2rem;
  padding: .42rem .7rem !important;
}
@media (max-width: 520px) {
  #redcafe-lotes-propio .redcafe-lote-tarjeta {
    grid-template-columns: 5.4rem minmax(0, 1fr);
  }
  #redcafe-lotes-propio .redcafe-lote-foto {
    max-height: 6.4rem;
    min-height: 5.4rem;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   Bolsa de empleo en el marketplace
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-empleos-tab { display: inline-flex; }
.redcafe-empleos-tab button { background: transparent; border: 1px solid rgba(59,35,24,.22); border-radius: .5rem; color: #4a4740; cursor: pointer; font-size: .875rem; font-weight: 600; min-height: 2.4rem; padding: .5rem 1rem; }
.redcafe-empleos-tab button:hover { background: rgba(59,35,24,.06); }
.redcafe-empleos-tab button.is-activo { background: var(--rce-cafe); border-color: var(--rce-cafe); color: #f7f4ef; }
.redcafe-empleos-tab button:focus-visible { outline: 2px solid var(--rce-hoja); outline-offset: 2px; }

.redcafe-empleo-etiquetas { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .6rem; }
/* `capitalize` ponía mayúscula en cada palabra: «1 A 2 Años». Solo la primera. */
.redcafe-empleo-etiquetas span { background: rgba(63,107,74,.12); border-radius: 999px; color: #3f5626; font-size: .7rem; font-weight: 700; padding: .16rem .6rem; }
.redcafe-empleo-etiquetas span::first-letter { text-transform: uppercase; }
.redcafe-empleo-pie { color: #6a645b; font-size: .76rem; margin-top: .6rem; }
.redcafe-empleo-card button[disabled] { cursor: default; opacity: .6; }
.redcafe-empleo-aviso { font-size: .8rem; line-height: 1.45; margin-top: .5rem; min-height: 1rem; }
.redcafe-empleo-aviso.es-ok { color: #2f6b3a; font-weight: 650; }
.redcafe-empleo-aviso.es-error { color: #9b2c2c; }
.redcafe-empleo-form { border-top: 1px solid rgba(59,35,24,.12); margin-top: .8rem; padding-top: .8rem; }
.redcafe-empleo-form label { display: block; margin-bottom: .6rem; }
.redcafe-empleo-form label span { color: #5c5a50; display: block; font-size: .76rem; font-weight: 700; margin-bottom: .25rem; }
.redcafe-empleo-form textarea, .redcafe-empleo-form input { border: 1px solid rgba(59,35,24,.22); border-radius: .4rem; box-sizing: border-box; font: inherit; font-size: .86rem; padding: .5rem .6rem; width: 100%; }
.redcafe-empleo-acciones { display: flex; gap: .5rem; justify-content: flex-end; }
.redcafe-empleo-acciones button { border-radius: 999px; cursor: pointer; font-size: .82rem; font-weight: 700; min-height: 2.4rem; padding: .4rem 1.1rem; }
.redcafe-empleo-cancelar { background: transparent; border: 1px solid rgba(59,35,24,.28); color: var(--rce-cafe); }
.redcafe-empleo-enviar { background: var(--rce-hoja); border: 0; color: #fff; }

/* Listas de pasos dentro de un bloque de curso */
.redcafe-bloque-lista { list-style: none; margin: .5rem 0 0; padding: 0; }
.redcafe-bloque-lista li { color: #4a4740; line-height: 1.6; padding-left: 1.15rem; position: relative; margin-bottom: .45rem; }
.redcafe-bloque-lista li::before { color: var(--rce-hoja); content: "▸"; font-size: .85em; left: 0; position: absolute; top: .05rem; }

/* ═══════════════════════════════════════════════════════════════════════
   Registro · /afiliate/
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-afil-hero { background: linear-gradient(150deg, #3b2318 0%, #5a3523 55%, #6f4718 100%); color: #f7f0df; }
.redcafe-afil-wrap { margin: 0 auto; max-width: 72rem; padding: 3.5rem 1rem 3rem; }
.redcafe-afil-rotulo { color: var(--rce-acento); font-size: .72rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.redcafe-afil-hero h1 { color: #fff; font-family: var(--font-titulo); font-size: clamp(1.85rem, 5vw, 2.9rem); font-weight: 700; line-height: 1.12; margin-top: .7rem; max-width: 22ch; }
.redcafe-afil-bajada { color: rgba(247,240,223,.85); font-size: 1rem; line-height: 1.65; margin-top: 1rem; max-width: 46rem; }
.redcafe-afil-acciones { align-items: center; display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.6rem; }
.redcafe-afil-cta { background: var(--rce-acento); border: 0; border-radius: 999px; color: #3b2318; cursor: pointer; font-size: 1rem; font-weight: 800; min-height: 3rem; padding: .8rem 1.9rem; }
.redcafe-afil-cta:hover { background: #f5d086; }
.redcafe-afil-cta:focus-visible { outline: 3px solid rgba(247,240,223,.6); outline-offset: 3px; }
.redcafe-afil-secundario { border-bottom: 1px solid rgba(247,240,223,.4); color: rgba(247,240,223,.9); font-weight: 650; padding-bottom: .1rem; text-decoration: none; }
.redcafe-afil-secundario:hover { border-color: var(--rce-acento); color: var(--rce-acento); }
.redcafe-afil-ventajas { display: grid; gap: .9rem; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); list-style: none; margin: 2.2rem 0 0; max-width: 58rem; padding: 0; }
.redcafe-afil-ventajas li { border-left: 2px solid rgba(240,195,106,.5); padding-left: .9rem; }
.redcafe-afil-ventajas strong { color: var(--rce-acento); display: block; font-size: .9rem; font-weight: 800; }
.redcafe-afil-ventajas span { color: rgba(247,240,223,.8); display: block; font-size: .86rem; line-height: 1.5; margin-top: .2rem; }
.redcafe-afil-datos { border-top: 1px solid rgba(247,240,223,.18); color: rgba(247,240,223,.72); font-size: .85rem; margin-top: 2rem; padding-top: 1rem; }
.redcafe-afil-datos:empty { display: none; }

/* «Cómo funciona»: tres pasos en fila, entre el subtítulo y los perfiles.
   En móvil se quedan en fila con el número al lado del texto, no apilados en
   tres bloques: apilarlos costaba 169 px de scroll antes de ver un perfil. */
.redcafe-afil-pasos {
  display: grid; gap: .7rem; list-style: none;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  margin: 1.4rem 0 0; max-width: 58rem; padding: 0;
}
.redcafe-afil-pasos li {
  align-items: baseline; display: grid; gap: 0 .55rem;
  grid-template-columns: auto 1fr;
}
.redcafe-afil-num {
  align-items: center; background: rgba(240,195,106,.16); border-radius: 999px;
  color: var(--rce-acento); display: inline-flex; font-size: .72rem;
  font-weight: 800; grid-row: span 2; height: 1.5rem; justify-content: center;
  width: 1.5rem;
}
.redcafe-afil-pasos strong { color: #fff; font-size: .92rem; font-weight: 750; }
.redcafe-afil-paso-txt {
  color: rgba(247,240,223,.78); font-size: .82rem; line-height: 1.45;
}

/* Móvil es donde se medía el problema: 1.614 px de scroll antes del primer
   perfil en una pantalla de 375 px. Aquí se aprieta todo lo que está por
   encima de los perfiles sin quitar información. */
@media (max-width: 560px) {
  .redcafe-afil-wrap { padding: 1.6rem 1rem 1.4rem; }
  .redcafe-afil-hero h1 { font-size: 1.6rem; line-height: 1.15; margin-top: .45rem; max-width: none; }
  .redcafe-afil-bajada { font-size: .92rem; line-height: 1.5; margin-top: .6rem; }
  .redcafe-afil-pasos { gap: .45rem; grid-template-columns: 1fr; margin-top: 1rem; }
  .redcafe-afil-pasos li { gap: 0 .5rem; }
  .redcafe-afil-num { height: 1.3rem; width: 1.3rem; font-size: .66rem; }
  .redcafe-afil-pasos strong { font-size: .86rem; }
  .redcafe-afil-paso-txt { font-size: .78rem; line-height: 1.35; }
  /* Los dos botones en una sola fila: apilados costaban 100 px de los que
     hay que bajar antes de ver un perfil. */
  .redcafe-afil-acciones { align-items: center; flex-wrap: nowrap; gap: .8rem; margin-top: 1.1rem; }
  .redcafe-afil-cta { flex: 1 1 auto; font-size: .92rem; min-height: 2.8rem; padding: .65rem 1rem; }
  .redcafe-afil-secundario { flex: 0 0 auto; font-size: .86rem; white-space: nowrap; }
  .redcafe-afil-datos { font-size: .78rem; line-height: 1.4; margin-top: 1.1rem; padding-top: .8rem; }
  .redcafe-afil-vermas { margin: 1rem auto; }
  .redcafe-afil-guia { padding: .8rem .85rem; }
}

/* Qué hace cada perfil: justo debajo del selector, como hermano suyo y a todo
   el ancho, para que se lea como conclusión de la elección y no como una
   tarjeta más que se pueda pulsar. Va fuera de #profile-selector a propósito:
   dentro, cualquier repintado de React de sus doce tarjetas se la llevaría. */
.redcafe-afil-guia {
  background: #fffdf8; border: 1px solid rgba(47,107,58,.2);
  border-radius: .6rem; margin-top: .9rem; padding: .9rem 1rem;
}
.redcafe-afil-guia-rotulo {
  color: var(--rce-hoja, #2f6b3a); font-size: .68rem; font-weight: 800;
  letter-spacing: .08em; text-transform: uppercase;
}
.redcafe-afil-guia-titulo {
  color: var(--rce-cafe, #3b2318); font-family: var(--font-titulo);
  font-size: 1rem; font-weight: 700; margin-top: .3rem;
}
.redcafe-afil-guia-texto {
  color: #5c5a50; font-size: .86rem; line-height: 1.5; margin-top: .35rem;
}
.redcafe-afil-guia-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .6rem; }
.redcafe-afil-guia-chips span {
  background: #fff; border: 1px solid rgba(47,107,58,.22); border-radius: 999px;
  color: var(--rce-hoja, #2f6b3a); font-size: .72rem; font-weight: 700;
  padding: .18rem .6rem;
}

/* Registro: nada de ver la portada de React y que a los 700 ms cambie
   -------------------------------------------------------------------
   `redcafe-afiliate.js` marca el <html> en cuanto se ejecuta y aquí se
   esconde la portada original. El hueco se reserva con `min-height` para que
   la página no dé un salto cuando entra la nuestra. La marca se retira sola a
   los 4 s si la portada propia no llegó a montarse. */
html[data-redcafe-afiliate="1"] main > div > section:first-child {
  display: none !important;
}
html[data-redcafe-afiliate="1"] main > div:has(> section:first-child) {
  min-height: 60vh;
}
html[data-redcafe-afiliate="1"] #redcafe-afiliate-portada {
  min-height: 0;
}

/* El orden de la página de registro: título y «cómo funciona», luego los
   perfiles, y al final lo que se puede leer después de decidir. Se hace con
   `order` porque el contenedor es de React: reordenar con CSS no toca su
   árbol, mover los nodos sí lo rompería. */
.redcafe-afil-orden { display: flex; flex-direction: column; }
.redcafe-afil-orden > #redcafe-afiliate-portada { order: 1; }
.redcafe-afil-orden > #afiliar-form { order: 2; }
.redcafe-afil-orden > #redcafe-afil-vermas { order: 3; }
.redcafe-afil-orden > #redcafe-afil-ventajas { order: 4; }
.redcafe-afil-orden > [data-redcafe-plegada="1"] { order: 5; }
.redcafe-afil-orden > #redcafe-afil-datos { order: 6; }
/* La portada de React queda oculta, pero si algún día se mostrara iría antes. */
.redcafe-afil-orden > section:first-child { order: 0; }

#redcafe-afil-datos {
  margin: 0 auto; max-width: 72rem; padding: 1rem 1rem 2rem;
}

/* Las ventajas salieron del camino crítico: ahora se despliegan con
   «Ver qué incluye tu cuenta», sobre fondo claro en vez del granate. */
#redcafe-afil-ventajas {
  margin: 0 auto 1.6rem; max-width: 72rem; padding: 0 1rem;
}
#redcafe-afil-ventajas li { border-left-color: rgba(59,35,24,.2); }
#redcafe-afil-ventajas strong { color: var(--rce-cafe, #3b2318); }
#redcafe-afil-ventajas span { color: #5c5a50; }

/* Validación a la vista, sin inyectar nodos en el formulario de React.
   `:user-invalid` solo marca el campo DESPUÉS de que la persona lo haya
   tocado: `:invalid` a secas pinta de rojo un formulario recién abierto. */
main input:user-invalid, main select:user-invalid {
  border-color: #b3261e !important;
  box-shadow: 0 0 0 3px rgba(179,38,30,.12);
}
main input:user-valid:not([type="checkbox"]):not([type="radio"]) {
  border-color: #2f6b3a !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   Disponibilidad del lote
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-sello-agotado, .redcafe-sello-reservado { border-radius: 999px; display: inline-block; font-size: .62rem; font-weight: 800; letter-spacing: .08em; margin-left: .4rem; padding: .12rem .5rem; text-transform: uppercase; vertical-align: middle; }
.redcafe-sello-agotado { background: rgba(179,38,30,.14); color: #8c1e18; }
.redcafe-sello-reservado { background: rgba(176,106,18,.16); color: #8e5328; }

/* Sello de verificación concedido por la administración. Verde, distinto de
   los sellos de disponibilidad, y con `title` que dice quién revisó y cuándo. */
.redcafe-sello-verificado {
  background: rgba(47, 107, 58, .13);
  border-radius: 999px;
  color: #2f6b3a;
  cursor: help;
  display: inline-block;
  font-size: .62rem;
  font-weight: 800;
  letter-spacing: .06em;
  margin-left: .4rem;
  padding: .12rem .55rem;
  text-transform: uppercase;
  vertical-align: middle;
}
/* El lote agotado no se esconde: se apaga, para que se note sin desaparecer. */
.redcafe-lote-tarjeta[data-disponibilidad="agotado"] { opacity: .72; }
.redcafe-lote-tarjeta[data-disponibilidad="agotado"] .redcafe-lote-foto { filter: grayscale(.65); }
.redcafe-lote-tarjeta[data-disponibilidad="agotado"]:hover { opacity: 1; }

/* Confirmación de estado en el panel del dueño */
.redcafe-confirma { background: rgba(240,195,106,.16); border: 1px solid rgba(176,106,18,.3); border-radius: .5rem; margin: .8rem 0 0; padding: .9rem 1rem; }
.redcafe-confirma-rot { color: #8e5328; font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.redcafe-confirma-txt { color: #4a4740; font-size: .88rem; line-height: 1.5; margin-top: .3rem; }
.redcafe-confirma-acciones { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .7rem; }
.redcafe-confirma-acciones button { background: #fff; border: 1px solid rgba(59,35,24,.28); border-radius: 999px; color: var(--rce-cafe); cursor: pointer; font-size: .82rem; font-weight: 700; min-height: 2.4rem; padding: .4rem 1.1rem; }
.redcafe-confirma-acciones button:hover { background: rgba(59,35,24,.06); }
.redcafe-confirma-acciones button.is-agotado { border-color: rgba(179,38,30,.4); color: #8c1e18; }
.redcafe-confirma-acciones button:focus-visible { outline: 2px solid var(--rce-hoja); outline-offset: 2px; }
.redcafe-confirma-cantidad { align-items: flex-end; display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .7rem; }
.redcafe-confirma-cantidad label { display: block; }
.redcafe-confirma-cantidad span { color: #5c5a50; display: block; font-size: .76rem; font-weight: 700; margin-bottom: .25rem; }
.redcafe-confirma-cantidad input { border: 1px solid rgba(59,35,24,.25); border-radius: .4rem; font: inherit; font-size: .88rem; padding: .45rem .6rem; width: 9rem; }
.redcafe-confirma-cantidad button { background: var(--rce-hoja); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .82rem; font-weight: 700; min-height: 2.4rem; padding: .4rem 1.2rem; }
.redcafe-confirma-estado { font-size: .82rem; margin-top: .5rem; min-height: 1rem; }
.redcafe-confirma-estado.is-error { color: #9b2c2c; }

/* Registro: el bloque largo se pliega tras un enlace */
.redcafe-afil-vermas { background: transparent; border: 1px solid rgba(59,35,24,.25); border-radius: 999px; color: var(--rce-cafe); cursor: pointer; display: block; font-size: .85rem; font-weight: 650; margin: 1.6rem auto; min-height: 2.6rem; padding: .5rem 1.4rem; }
.redcafe-afil-vermas:hover { background: rgba(59,35,24,.06); }
.redcafe-afil-vermas:focus-visible { outline: 2px solid var(--rce-hoja); outline-offset: 2px; }

/* Academia: botón de matrícula */
.redcafe-curso-matricular { background: var(--rce-hoja); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .9rem; font-weight: 700; margin-top: .8rem; min-height: 2.7rem; padding: .5rem 1.5rem; }
.redcafe-curso-matricular:hover { background: #4a6a2c; }
.redcafe-curso-matricular[disabled] { cursor: progress; opacity: .65; }
.redcafe-curso-matricular:focus-visible { outline: 3px solid rgba(63,107,74,.35); outline-offset: 2px; }

/* ═══════════════════════════════════════════════════════════════════════
   Muro de la Comunidad
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-muro { margin-top: 1.6rem; }
.redcafe-muro-barra { display: flex; flex-wrap: wrap; gap: .4rem; }
.redcafe-muro-filtro { background: #fff; border: 1px solid rgba(59,35,24,.2); border-radius: 999px; color: #4a4740; cursor: pointer; font-size: .8rem; font-weight: 650; min-height: 2.2rem; padding: .3rem .9rem; }
.redcafe-muro-filtro:hover { background: rgba(59,35,24,.05); }
.redcafe-muro-filtro.is-activo { background: var(--rce-cafe); border-color: var(--rce-cafe); color: #f7f4ef; }
.redcafe-muro-filtro:focus-visible { outline: 2px solid var(--rce-hoja); outline-offset: 2px; }
.redcafe-muro-resumen { color: #6a645b; font-size: .78rem; margin-top: .7rem; }
.redcafe-muro-lista { display: grid; gap: .9rem; margin-top: .9rem; }

.redcafe-muro-item { background: #fff; border: 1px solid rgba(59,35,24,.13); border-radius: .7rem; padding: 1.1rem 1.2rem; }
/* Una novedad de la Red no debe confundirse con lo que escribe una persona. */
.redcafe-muro-item.es-aviso { background: linear-gradient(180deg, rgba(240,195,106,.10), rgba(240,195,106,0) 60%); border-left: 3px solid var(--rce-latte); }
.redcafe-muro-cab { align-items: center; display: flex; gap: .7rem; }
.redcafe-muro-avatar { align-items: center; background: var(--rce-cafe); border-radius: 50%; color: #f7f0df; display: inline-flex; flex: 0 0 auto; font-size: .95rem; font-weight: 700; height: 2.4rem; justify-content: center; width: 2.4rem; }
.redcafe-muro-item.es-aviso .redcafe-muro-avatar { background: rgba(240,195,106,.25); }
.redcafe-muro-quien { min-width: 0; }
.redcafe-muro-autor { color: var(--rce-cafe); font-size: .92rem; font-weight: 700; line-height: 1.2; }
.redcafe-muro-meta { align-items: center; color: #6a645b; display: flex; flex-wrap: wrap; font-size: .74rem; gap: .45rem; margin-top: .15rem; }
.redcafe-muro-sello { background: rgba(176,106,18,.14); border-radius: 999px; color: #8e5328; font-weight: 700; padding: .1rem .5rem; }
.redcafe-muro-rol { background: rgba(63,107,74,.13); border-radius: 999px; color: #3f5626; font-weight: 700; padding: .1rem .5rem; text-transform: capitalize; }
.redcafe-muro-titulo { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.05rem; font-weight: 700; line-height: 1.3; margin-top: .7rem; }
.redcafe-muro-texto { color: #4a4740; font-size: .9rem; line-height: 1.6; margin-top: .35rem; white-space: pre-wrap; }
.redcafe-muro-foto { border-radius: .5rem; display: block; margin-top: .7rem; max-height: 22rem; object-fit: cover; width: 100%; }
.redcafe-muro-enlace { color: var(--rce-hoja); display: inline-block; font-size: .84rem; font-weight: 700; margin-top: .6rem; text-decoration: none; }
.redcafe-muro-enlace::after { content: " →"; }
.redcafe-muro-enlace:hover { text-decoration: underline; }

.redcafe-muro-pie { border-top: 1px solid rgba(59,35,24,.08); display: flex; gap: 1rem; margin-top: .9rem; padding-top: .6rem; }
.redcafe-muro-pie button { background: transparent; border: 0; color: #6b6459; cursor: pointer; font-size: .8rem; font-weight: 650; padding: .2rem 0; }
.redcafe-muro-pie button:hover { color: var(--rce-cafe); }
.redcafe-muro-like.es-mio { color: #b3261e; }
.redcafe-muro-comentarios { border-top: 1px solid rgba(59,35,24,.08); margin-top: .7rem; padding-top: .7rem; }
.redcafe-muro-comentario { margin-bottom: .6rem; }
.redcafe-muro-comentario strong { color: var(--rce-cafe); font-size: .82rem; }
.redcafe-muro-comfecha { color: #6a645b; font-size: .74rem; }
.redcafe-muro-comentario p { color: #4a4740; font-size: .85rem; line-height: 1.5; margin-top: .1rem; }
.redcafe-muro-nuevocom { display: flex; gap: .5rem; margin-top: .5rem; }
.redcafe-muro-nuevocom input { border: 1px solid rgba(59,35,24,.2); border-radius: 999px; flex: 1 1 auto; font: inherit; font-size: .85rem; min-width: 0; padding: .45rem .9rem; }
.redcafe-muro-nuevocom button { background: var(--rce-hoja); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .8rem; font-weight: 700; padding: .45rem 1.1rem; }
.redcafe-muro-vacio { color: #6b6459; font-size: .88rem; line-height: 1.55; padding: 1.6rem .5rem; text-align: center; }
@media (max-width: 640px) { .redcafe-muro-barra { overflow-x: auto; flex-wrap: nowrap; padding-bottom: .3rem; } .redcafe-muro-filtro { white-space: nowrap; } }

/* ═══════════════════════════════════════════════════════════════════════
   Ficha del lote: galería, vendedor y datos que faltan
   ═══════════════════════════════════════════════════════════════════════ */
.redcafe-lote-galeria { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); margin: 1.2rem 0; }
.redcafe-lote-galeria img { border-radius: .6rem; display: block; height: 100%; max-height: 22rem; object-fit: cover; width: 100%; }
.redcafe-lote-galeria.es-generica { display: block; max-width: 32rem; }
.redcafe-lote-galeria figcaption { color: #6a645b; font-size: .78rem; line-height: 1.45; margin-top: .4rem; }

.redcafe-lote-vendedor { background: rgba(59,35,24,.04); border-radius: .6rem; margin-top: 1.4rem; padding: 1rem 1.2rem; }
.redcafe-lote-vendedor h2 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.05rem; font-weight: 700; }
.redcafe-lote-vendedor-nombre { color: var(--rce-cafe); font-size: 1rem; font-weight: 700; margin-top: .4rem; }
.redcafe-lote-vendedor p { color: #4a4740; font-size: .88rem; line-height: 1.55; margin-top: .2rem; }
.redcafe-lote-nota { color: #6b6459 !important; font-size: .82rem !important; font-style: italic; margin-top: .5rem !important; }

.redcafe-lote-falta { background: rgba(240,195,106,.13); border-left: 3px solid var(--rce-latte); border-radius: .5rem; margin-top: 1.2rem; padding: 1rem 1.2rem; }
.redcafe-lote-falta h2 { color: #8e5328; font-family: var(--font-titulo); font-size: 1rem; font-weight: 700; }
.redcafe-lote-falta ul { columns: 2; column-gap: 1.4rem; list-style: none; margin-top: .6rem; padding: 0; }
.redcafe-lote-falta li { break-inside: avoid; color: #4a4740; font-size: .86rem; line-height: 1.5; padding-left: .95rem; position: relative; }
.redcafe-lote-falta li::before { color: var(--rce-latte); content: "·"; font-weight: 700; left: .2rem; position: absolute; }
.redcafe-lote-falta .btn-ghost { display: inline-block; margin-top: .8rem; }
.redcafe-lote-docs.es-vacia p { color: #6b6459; font-size: .86rem; line-height: 1.55; margin-top: .4rem; }
@media (max-width: 640px) { .redcafe-lote-falta ul { columns: 1; } }

/* Fotos del lote en el panel del dueño */
.redcafe-foto-bloque { border-top: 1px solid rgba(59,35,24,.1); margin-top: 1rem; padding-top: .9rem; }
.redcafe-foto-lista { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); list-style: none; margin: .7rem 0 0; padding: 0; }
.redcafe-foto-lista li { position: relative; }
.redcafe-foto-lista img { border: 1px solid rgba(59,35,24,.14); border-radius: .45rem; display: block; height: 6.5rem; object-fit: cover; width: 100%; }
.redcafe-foto-quitar { background: rgba(17,27,22,.78); border: 0; border-radius: .3rem; color: #fff; cursor: pointer; font-size: .68rem; font-weight: 700; padding: .18rem .5rem; position: absolute; right: .3rem; top: .3rem; }
.redcafe-foto-quitar:hover { background: #b3261e; }
.redcafe-foto-vacio { color: #6b6459; font-size: .84rem; grid-column: 1 / -1; line-height: 1.5; }
.redcafe-foto-subir { background: var(--rce-hoja); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .82rem; font-weight: 700; min-height: 2.4rem; padding: .4rem 1.1rem; }
.redcafe-foto-subir[disabled] { cursor: progress; opacity: .65; }

/* Tarjetas del marketplace: todas del mismo alto.
   Al hacer variable la línea de «altura · stock · venta mínima», unas
   tarjetas quedaban 16 px más altas que otras y la rejilla se veía
   descuadrada. Con la tarjeta en columna, el bloque de botones se pega abajo
   y todas miden lo mismo. */
.redcafe-lote-tarjeta { display: flex; flex-direction: column; }
.redcafe-lote-tarjeta > a:first-of-type { display: flex; flex: 1 1 auto; flex-direction: column; }
.redcafe-lote-tarjeta > a:first-of-type > p:last-of-type { margin-top: auto; }

/* Ficha restringida: la puerta, explicada */
.redcafe-lote-registro { background: linear-gradient(150deg, rgba(59,35,24,.06), rgba(240,195,106,.10)); border: 1px solid rgba(59,35,24,.14); border-radius: .6rem; margin-top: 1.3rem; padding: 1.1rem 1.2rem; }
.redcafe-lote-registro h2 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.05rem; font-weight: 700; }
.redcafe-lote-registro p { color: #4a4740; font-size: .88rem; line-height: 1.6; margin-top: .4rem; }
.redcafe-lote-registro-acciones { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .9rem; }

/* Panel: el bloque de recursos cierra la página, siempre.
   Se ordena con `order` en vez de mover el nodo: mover un nodo de React
   rompe su reconciliación, y el momento en que lo pinta es impredecible. */
main.redcafe-panel-orden { display: flex; flex-direction: column; }
main.redcafe-panel-orden > #redcafe-panel-resources { order: 99; }

/* Botón de vuelta al panel, presente en todo el sitio para quien entró */
.redcafe-volver-panel { align-items: center; background: var(--rce-cafe); border-radius: 999px; bottom: 1.1rem; box-shadow: 0 8px 22px rgba(14,22,18,.28); color: #f7f0df; display: inline-flex; font-size: .85rem; font-weight: 700; gap: .4rem; left: 1.1rem; padding: .6rem 1.1rem; position: fixed; text-decoration: none; z-index: 9997; }
.redcafe-volver-panel:hover { background: #5a3523; color: #fff; }
.redcafe-volver-panel:focus-visible { outline: 3px solid var(--rce-acento); outline-offset: 2px; }
.redcafe-volver-panel span:first-child { font-size: 1rem; line-height: 1; }
@media (max-width: 520px) { .redcafe-volver-panel { bottom: .8rem; left: .8rem; font-size: .8rem; padding: .5rem .9rem; } }

/* Socios estratégicos: invitación, preacuerdo y administración */
/* Tipografía de las páginas de socios
   ---------------------------------------------------------------------------
   Estas dos páginas iban por libre: la marca y los títulos en Georgia, que no
   es la tipografía de la plataforma, y sin cargar el CSS de Next donde viven
   las variables. Resultado: parecían de otro sitio.
   Ahora usan las mismas variables que el resto (--font-marca es
   «DM Serif Display», --font-cuerpo es «Inter»), con la grafía anterior como
   reserva por si ese CSS no llegara a cargar. */
.redcafe-socios-page { background: #f7f0df; color: #25221f; font-family: var(--font-cuerpo, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); overflow-x: hidden; }
.redcafe-socios-page * { box-sizing: border-box; }
.redcafe-socios-main { margin: 0 auto; max-width: 1120px; padding: 2rem 1rem 3rem; width: 100%; }
.redcafe-socios-hero { background: linear-gradient(140deg, #3b2318 0%, #6f4718 54%, #2f5f3a 100%); color: #fff8ea; padding: 2.2rem 0; }
.redcafe-socios-hero > div { margin: 0 auto; max-width: 1120px; padding: 0 1rem; }
.redcafe-socios-eyebrow { color: #f0c36a; font-size: .78rem; font-weight: 800; letter-spacing: .12em; margin: 0 0 .65rem; text-transform: uppercase; }
.redcafe-socios-page .redcafe-socios-hero h1 { color: #fff8ea; font-family: var(--font-marca, var(--font-dm-sans), "DM Sans", system-ui, sans-serif); font-size: clamp(2rem, 3.2vw, 3.35rem); line-height: 1.08; margin: 0; max-width: 900px; }
.redcafe-socios-hero p { color: rgba(255,248,234,.82); font-size: 1rem; line-height: 1.65; margin: 1rem 0 0; max-width: 780px; }
.redcafe-socios-actions { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.2rem; }
.redcafe-socios-actions a { align-items: center; border-radius: 999px; display: inline-flex; font-size: .92rem; font-weight: 850; justify-content: center; min-height: 2.75rem; padding: .72rem 1rem; text-decoration: none; }
.redcafe-socios-actions a:first-child { background: #8f1d14; color: #fff8ea; }
.redcafe-socios-actions a:last-child { border: 1px solid rgba(255,248,234,.34); color: #fff8ea; }
.redcafe-socios-grid-main { display: grid; gap: 1.25rem; grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr); }
.redcafe-socios-cardbox { background: rgba(255,255,255,.86); border: 1px solid rgba(59,35,24,.12); border-radius: .5rem; box-shadow: 0 12px 30px rgba(59,35,24,.06); min-width: 0; overflow: hidden; padding: 1.15rem; }
.redcafe-socios-cardbox .redcafe-socios-eyebrow { color: #8e5328; font-size: .72rem; letter-spacing: .08em; }
.redcafe-socios-cardbox h2 { color: #3b2318; font-family: var(--font-marca, var(--font-dm-sans), "DM Sans", system-ui, sans-serif); font-size: clamp(1.35rem, 1.12rem + .8vw, 1.85rem); font-weight: 700; line-height: 1.18; margin: 0 0 .7rem; }
.redcafe-socios-cardbox h3 { color: #3b2318; font-family: var(--font-cuerpo, Inter, system-ui, -apple-system, Segoe UI, sans-serif); font-size: 1.02rem; font-weight: 800; line-height: 1.28; margin: 1rem 0 .45rem; }
.redcafe-socios-cardbox p, .redcafe-socios-cardbox li { color: #4a4740; font-size: .94rem; line-height: 1.62; overflow-wrap: anywhere; }
.redcafe-socios-cardbox ul { margin: .65rem 0 0; padding-left: 1.1rem; }
.redcafe-socios-cardbox a { color: #8e5328; font-weight: 800; text-decoration: none; }
.redcafe-socios-cardbox a:hover { color: #3b2318; text-decoration: underline; }
.redcafe-socios-wide { grid-column: 1 / -1; }
.redcafe-socios-kpis { display: grid; gap: .8rem; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); margin: 1rem 0; }
.redcafe-socios-kpi { background: #fffaf0; border: 1px solid rgba(59,35,24,.1); border-radius: .5rem; padding: .9rem; }
.redcafe-socios-kpi span { color: #8e5328; display: block; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.redcafe-socios-kpi strong { color: #3b2318; display: block; font-family: var(--font-marca, var(--font-dm-sans), "DM Sans", system-ui, sans-serif); font-size: 1.25rem; margin-top: .25rem; }
.redcafe-socios-section { margin-top: 1.25rem; }
.redcafe-socios-tablewrap { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.redcafe-socios-table { border-collapse: collapse; min-width: 720px; table-layout: fixed; width: 100%; }
.redcafe-socios-table th, .redcafe-socios-table td { border-bottom: 1px solid rgba(59,35,24,.12); font-size: .88rem; line-height: 1.45; overflow-wrap: anywhere; padding: .65rem; text-align: left; vertical-align: top; }
.redcafe-socios-table th { background: rgba(59,35,24,.06); color: #3b2318; font-weight: 800; }
.redcafe-socios-form { display: grid; gap: .85rem; }
.redcafe-socios-label { color: #3b2318; display: grid; font-size: .78rem; font-weight: 800; gap: .25rem; letter-spacing: .04em; text-transform: uppercase; }
.redcafe-socios-label input, .redcafe-socios-label select, .redcafe-socios-label textarea { background: #fff; border: 1px solid rgba(59,35,24,.22); border-radius: .42rem; color: #25221f; font: inherit; font-size: .95rem; min-height: 2.65rem; padding: .65rem .7rem; text-transform: none; width: 100%; }
.redcafe-socios-label textarea { min-height: 7.5rem; resize: vertical; }
.redcafe-socios-check { align-items: flex-start; color: #4a4740; display: flex; font-size: .86rem; gap: .55rem; line-height: 1.48; }
.redcafe-socios-check input { margin-top: .2rem; }
.redcafe-socios-privacy { background: rgba(47,95,58,.08); border-left: 3px solid #2f5f3a; border-radius: .45rem; color: #3f4038; font-size: .88rem; line-height: 1.55; padding: .85rem; }
.redcafe-socios-privacy a { color: #8e5328; font-weight: 800; }
.redcafe-socios-button { background: #8f1d14; border: 0; border-radius: 999px; color: #fff8ea; cursor: pointer; font: inherit; font-weight: 800; min-height: 2.85rem; padding: .75rem 1.25rem; }
.redcafe-socios-button:hover { background: #6f160f; }
.redcafe-socios-button[disabled] { cursor: progress; opacity: .68; }
.redcafe-socios-status { color: #5c5a50; font-size: .9rem; font-weight: 700; min-height: 1.2rem; }
.redcafe-socios-status.is-ok { color: #2f5f3a; }
.redcafe-socios-status.is-error { color: #9b2c2c; }
.redcafe-socios-bars { display: grid; gap: .55rem; margin-top: .8rem; }
.redcafe-socios-barline { display: grid; gap: .35rem; }
.redcafe-socios-barline span { color: #4a4740; font-size: .85rem; font-weight: 700; }
.redcafe-socios-barline i { background: linear-gradient(90deg, #8f1d14, #f0c36a, #2f5f3a); border-radius: 999px; display: block; height: .65rem; max-width: 100%; }
.redcafe-socios-grid { display: grid; gap: .7rem; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); margin-top: .85rem; }
.redcafe-socios-dato { background: #fffaf0; border: 1px solid rgba(59,35,24,.09); border-radius: .45rem; padding: .65rem; }
.redcafe-socios-dato span { color: #8e5328; display: block; font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.redcafe-socios-dato strong { color: #25221f; display: block; font-size: .88rem; line-height: 1.35; margin-top: .18rem; overflow-wrap: anywhere; }
.redcafe-socios-service-columns { display: grid; gap: 1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: .85rem; }
.redcafe-socios-service-columns > div { background: #fffaf0; border: 1px solid rgba(59,35,24,.1); border-radius: .5rem; padding: 1rem; }
.redcafe-socios-service-columns h3 { align-items: center; display: flex; gap: .5rem; font-size: 1rem; margin-bottom: .45rem; margin-top: 0; }
.redcafe-socios-service-columns h3::before { background: #8f1d14; border-radius: 999px; content: ""; display: inline-block; flex: 0 0 auto; height: .58rem; width: .58rem; }
.redcafe-socios-service-columns > div:nth-child(2) h3::before { background: #2f5f3a; }
.redcafe-socios-service-columns li + li { margin-top: .3rem; }
.redcafe-login-register-choice { background: #fffaf0; border: 1px solid rgba(59,35,24,.14); border-radius: .5rem; box-shadow: 0 12px 30px rgba(59,35,24,.06); margin-top: 1rem; padding: 1rem; }
.redcafe-login-register-kicker { color: #8e5328; font-size: .72rem; font-weight: 850; letter-spacing: .08em; margin: 0 0 .4rem; text-transform: uppercase; }
.redcafe-login-register-choice h2 { color: #3b2318; font-family: var(--font-marca, var(--font-dm-sans), "DM Sans", system-ui, sans-serif); font-size: 1.45rem; line-height: 1.16; margin: 0; }
.redcafe-login-register-choice p { color: #4a4740; font-size: .92rem; line-height: 1.5; margin: .55rem 0 0; }
.redcafe-login-register-choice a { align-items: center; background: #8f1d14; border-radius: 999px; color: #fff8ea; display: inline-flex; font-weight: 850; justify-content: center; margin-top: .85rem; min-height: 2.6rem; padding: .65rem 1rem; text-decoration: none; }
.redcafe-login-register-choice, .redcafe-home-profile-panel, .redcafe-socios-page { font-family: var(--font-cuerpo, Inter, system-ui, -apple-system, Segoe UI, sans-serif); letter-spacing: 0; }
.redcafe-login-register-choice p, .redcafe-login-register-choice a, .redcafe-home-profile-panel p, .redcafe-home-profile-panel span, .redcafe-home-profile-panel li, .redcafe-socios-page p, .redcafe-socios-page li, .redcafe-socios-page td, .redcafe-socios-page label, .redcafe-socios-page input, .redcafe-socios-page select, .redcafe-socios-page textarea { font-size: .94rem; line-height: 1.5; letter-spacing: 0; }
.redcafe-home-profile-panel { background: rgba(255,248,234,.96); border: 1px solid rgba(255,248,234,.24); border-radius: .5rem; box-shadow: 0 18px 52px rgba(10,16,13,.24); color: #3b2318; min-width: 0; overflow: hidden; }
.redcafe-home-profile-media { aspect-ratio: 16 / 9; background: #3b2318; overflow: hidden; width: 100%; }
.redcafe-home-profile-media img { display: block; height: 100%; object-fit: cover; width: 100%; }
.redcafe-home-profile-body { display: grid; gap: .7rem; padding: 1rem; }
.redcafe-home-profile-kicker { color: #2f5f3a; font-size: .72rem; font-weight: 850; letter-spacing: .08em; margin: 0; text-transform: uppercase; }
.redcafe-home-profile-list { display: grid; gap: .55rem; }
.redcafe-home-profile-list article { background: #fffaf0; border-left: 3px solid #2f5f3a; display: grid; gap: .18rem; min-width: 0; padding: .68rem .75rem; }
.redcafe-home-profile-list strong { color: #3b2318; font-family: var(--font-cuerpo, Inter, system-ui, -apple-system, Segoe UI, sans-serif); font-size: .96rem; font-weight: 800; line-height: 1.25; }
.redcafe-home-profile-list span { color: #5c5a50; overflow-wrap: anywhere; }
.redcafe-home-profile-included { background: #efe4c7; border-top: 1px solid rgba(59,35,24,.1); padding: .85rem 1rem 1rem; }
.redcafe-home-profile-included p { color: #8e5328; font-size: .72rem; font-weight: 850; letter-spacing: .08em; margin: 0 0 .6rem; text-transform: uppercase; }
.redcafe-home-profile-included ul { display: grid; gap: .42rem .7rem; grid-template-columns: repeat(2, minmax(0, 1fr)); list-style: none; margin: 0; padding: 0; }
.redcafe-home-profile-included li { align-items: flex-start; color: #4a4740; display: flex; gap: .4rem; min-width: 0; }
.redcafe-home-profile-included li::before { color: #2f5f3a; content: "✓"; flex: 0 0 auto; font-weight: 900; }
body[data-redcafe-route="/"] .redcafe-home-profile-native { border-radius: .6rem !important; max-width: 100%; }
body[data-redcafe-route="/"] .redcafe-home-profile-native video,
body[data-redcafe-route="/"] .redcafe-home-profile-native img { display: block; max-width: 100%; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-kicker { color: #2f5f3a !important; display: block; font-size: .76rem !important; font-weight: 850 !important; letter-spacing: .07em !important; line-height: 1.2 !important; margin: 0 !important; padding: 1rem 1rem 0 !important; text-transform: uppercase; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-list-native { display: grid !important; gap: .55rem !important; padding: .7rem 1rem 1rem !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-list-native > div { background: #fffaf0 !important; border-left: 3px solid #2f5f3a !important; border-radius: .45rem !important; min-width: 0 !important; padding: .68rem .75rem !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-list-native p,
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-list-native span { overflow-wrap: anywhere; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-list-native p:first-child { color: #3b2318 !important; font-size: .96rem !important; font-weight: 850 !important; line-height: 1.25 !important; margin: 0 0 .16rem !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-list-native p:last-child { color: #5c5a50 !important; font-size: .94rem !important; line-height: 1.42 !important; margin: 0 !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native { background: #efe4c7 !important; border-top: 1px solid rgba(59,35,24,.1) !important; padding: .85rem 1rem 1rem !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native p { color: #8e5328 !important; font-size: .76rem !important; font-weight: 850 !important; letter-spacing: .07em !important; line-height: 1.2 !important; margin: 0 0 .6rem !important; text-transform: uppercase; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native ul { display: grid !important; gap: .42rem .7rem !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; list-style: none !important; margin: 0 !important; padding: 0 !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native li { align-items: flex-start !important; color: #4a4740 !important; display: flex !important; font-size: .94rem !important; gap: .4rem !important; line-height: 1.42 !important; min-width: 0 !important; }
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native li::before { color: #2f5f3a; content: "✓"; flex: 0 0 auto; font-weight: 900; }
.fixed.bottom-5.right-5.z-40 { max-width: 3.7rem; overflow: visible; }
.fixed.bottom-5.right-5.z-40 button { overflow: visible; }
@media (max-width: 780px) {
  .redcafe-socios-grid-main { grid-template-columns: 1fr; }
  .redcafe-socios-main { padding-top: 1rem; }
  .redcafe-socios-service-columns { grid-template-columns: 1fr; }
  .redcafe-socios-actions a { flex: 1 1 220px; }
  .redcafe-home-profile-included ul { grid-template-columns: 1fr; }
  body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native ul { grid-template-columns: 1fr !important; }
}
@media (max-width: 640px) {
  .redcafe-socios-hero { padding: 1.55rem 0; }
  .redcafe-socios-page .redcafe-socios-hero h1 { font-size: clamp(1.75rem, 8vw, 2.35rem); line-height: 1.08; }
  .redcafe-socios-hero p { font-size: .95rem; line-height: 1.55; }
  .redcafe-socios-main { max-width: 100%; padding-left: 1rem; padding-right: 1rem; }
  .redcafe-socios-cardbox { max-width: 100%; overflow: hidden; padding: 1rem; }
  .redcafe-socios-grid, .redcafe-socios-kpis { grid-template-columns: 1fr; }
  .redcafe-socios-tablewrap { margin-left: 0; margin-right: 0; overflow-x: visible; }
  .redcafe-socios-table,
  .redcafe-socios-table thead,
  .redcafe-socios-table tbody,
  .redcafe-socios-table tr,
  .redcafe-socios-table th,
  .redcafe-socios-table td {
    display: block;
    min-width: 0;
    width: 100%;
  }
  .redcafe-socios-table { border-collapse: separate; border-spacing: 0; }
  .redcafe-socios-table thead { height: 1px; opacity: 0; overflow: hidden; position: absolute; width: 1px; }
  .redcafe-socios-table tr { background: rgba(255,255,255,.72); border: 1px solid rgba(59,35,24,.12); border-radius: .45rem; margin: .7rem 0; overflow: hidden; }
  .redcafe-socios-table td { border: 0; border-bottom: 1px solid rgba(59,35,24,.09); font-size: .9rem; padding: .7rem .75rem; }
  .redcafe-socios-table td:first-child { background: rgba(59,35,24,.06); color: #3b2318; font-weight: 800; }
  .redcafe-socios-table td:last-child { border-bottom: 0; }
}


/* ============================================================
   Bandeja del miembro — mensajes y pedidos en un solo sitio
   ============================================================ */
.redcafe-band-fila .redcafe-pub-head { align-items: flex-start; gap: .8rem; }
.redcafe-band-previo {
  color: #5c5a50; font-size: .86rem; line-height: 1.45; margin-top: .3rem;
  overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.redcafe-band-meta { align-items: flex-end; display: flex; flex-direction: column; gap: .3rem; }
.redcafe-band-fecha { color: #5e5850; font-size: .72rem; white-space: nowrap; }
.redcafe-band-nuevos {
  background: rgba(155,44,44,.12); border-radius: 999px; color: #9b2c2c;
  font-size: .66rem; font-weight: 800; letter-spacing: .04em; padding: .15rem .55rem;
  text-transform: uppercase; white-space: nowrap;
}
.redcafe-band-hilo { border-top: 1px solid rgba(59,35,24,.12); margin-top: .8rem; padding-top: .8rem; }
.redcafe-band-mensajes { display: flex; flex-direction: column; gap: .6rem; max-height: 22rem; overflow-y: auto; }
.redcafe-band-msg {
  background: var(--color-crema, #f7f4ef); border: 1px solid rgba(59,35,24,.1);
  border-radius: .5rem; padding: .5rem .7rem;
}
.redcafe-band-msg.es-mio { background: rgba(240,195,106,.14); border-color: rgba(240,195,106,.4); }
.redcafe-band-msg strong { color: var(--color-filtrado-800, #3b2318); font-size: .78rem; }
.redcafe-band-msg p { color: #4a4740; font-size: .88rem; line-height: 1.45; margin-top: .15rem; }
.redcafe-band-msg span { color: #5e5850; display: block; font-size: .68rem; margin-top: .2rem; }
.redcafe-band-responder { display: flex; gap: .6rem; margin-top: .7rem; }
.redcafe-band-responder textarea { flex: 1 1 auto; resize: vertical; }
.redcafe-band-responder button { flex: 0 0 auto; }

@media (max-width: 560px) {
  .redcafe-band-fila .redcafe-pub-head { flex-direction: column; }
  .redcafe-band-meta { align-items: flex-start; flex-direction: row; }
  .redcafe-band-responder { flex-direction: column; }
  .redcafe-band-responder button { width: 100%; }
}

/* Fila de pestañas del marketplace · Cafés, Servicios, Empleos, Requerimientos
   Las dos últimas las añadimos nosotros y, a 375 px, la cuarta empujaba la
   fila hasta 425 px y desbordaba la página. Se deja envolver en dos líneas en
   lugar de desplazarse: una pestaña que hay que arrastrar para encontrar es
   una pestaña que nadie encuentra. */
@media (max-width: 767.98px) {
  [data-redcafe-pestanas="1"] {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    max-width: 100%;
  }
}

/* ============================================================
   Paleta 2026 · fase 1
   ------------------------------------------------------------
   Evoluciona la paleta de la plataforma sin cambiar su estructura: se
   redefinen las variables que ya usan todos los componentes, y solo se
   tocan a mano los botones, la cabecera y las tarjetas.
     Tostado      #3b2318  cabecera, pie y fondo oscuro
     Café         #3b2318  marca (se mantiene)
     Ámbar grano  #dda35e  acento y llamada principal
     Pergamino    #f7f3ec  fondo claro de sección
     Hoja         #3f6b4a  verificado y estados (se mantiene)
     Pizarra      #2b2622  texto
   Referencia de efectos: plantilla Stradale (cabecera con desenfoque,
   halo cálido en el botón, tarjeta que se eleva). Se descartan su negro
   puro, su naranja #fa6a2e y la letra caligráfica.
   ============================================================ */
:root {
  --color-coffee-950: #3b2318;
  --color-acento-claro: #dda35e;
  --color-gold-500: #dda35e;
  --color-crema-oscuro: #f7f3ec;
  --color-pizarra: #2b2622;
  --rce-ambar: #dda35e;
  --rce-ambar-hondo: #b87440;
  --rce-tostado: #3b2318;
}

/* Cabecera: tostado profundo con desenfoque, como la de Stradale al bajar. */
header.sticky.bg-cafe {
  background-color: rgba(59,35,24, .92) !important;
  -webkit-backdrop-filter: saturate(140%) blur(10px);
  backdrop-filter: saturate(140%) blur(10px);
  box-shadow: 0 1px 0 rgba(212, 137, 63, .18);
}

/* Llamada principal sobre fondo oscuro: ámbar con texto tostado (7,4:1). */
.btn-accent {
  background: var(--rce-ambar);
  border-color: var(--rce-ambar);
  color: var(--rce-tostado);
  font-family: var(--rc-titulo, var(--font-dm-sans), "DM Sans", system-ui, sans-serif) !important;
  transition: background-color .2s, box-shadow .25s, transform .2s;
}
.btn-accent:hover {
  background: #e09a52;
  border-color: #e09a52;
  box-shadow: 0 6px 22px rgba(212, 137, 63, .38);
}

/* Botón primario sobre fondo claro: café de marca en lugar de casi negro. */
.btn-primary {
  background: var(--color-cafe);
  border-color: var(--color-cafe);
  font-family: var(--rc-titulo, var(--font-dm-sans), "DM Sans", system-ui, sans-serif) !important;
  transition: background-color .2s, box-shadow .25s, transform .2s;
}
.btn-primary:hover {
  background: var(--rce-tostado);
  box-shadow: 0 6px 20px rgba(59,35,24, .28);
}
.btn-accent:focus-visible,
.btn-primary:focus-visible {
  outline: 2px solid var(--rce-ambar);
  outline-offset: 3px;
}

/* Tarjetas: se elevan un poco al pasar el cursor. */
.card { transition: box-shadow .24s, border-color .24s, transform .24s; }
@media (hover: hover) {
  .card:hover { transform: translateY(-2px); border-color: rgba(212, 137, 63, .45); box-shadow: 0 12px 30px rgba(59,35,24, .12); }
}

/* Cifras reales de la Red, bajo la cabecera de la portada. */
.redcafe-cifras { background: var(--rce-tostado); border-top: 1px solid rgba(212, 137, 63, .22); color: #f3ebe2; }
.redcafe-cifras-caja { display: grid; gap: 1px; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 auto; max-width: 72rem; padding: 0 1rem; }
.redcafe-cifra { display: grid; gap: .2rem; padding: 1.1rem .75rem; }
.redcafe-cifra strong { color: var(--rce-ambar); font-family: var(--font-marca, var(--font-dm-sans), "DM Sans", system-ui, sans-serif); font-size: clamp(1.7rem, 3.4vw, 2.4rem); font-variant-numeric: tabular-nums; font-weight: 400; line-height: 1; }
.redcafe-cifra span { color: rgba(243, 235, 226, .78); font-size: .82rem; line-height: 1.35; }
@media (max-width: 640px) {
  .redcafe-cifras-caja { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .redcafe-cifra { padding: .9rem .5rem; }
}

/* Registro en el móvil: el botón para avanzar queda fijo abajo. Antes
   «Continuar con 1 perfil» estaba a 2.818 px, 3,5 pantallas de teléfono. */
@media (max-width: 767.98px) {
  [data-redcafe-fijo="1"] {
    background: rgba(247, 243, 236, .96);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--color-border-soft, #e8e1d8);
    bottom: 0;
    box-shadow: 0 -8px 24px rgba(59,35,24, .08);
    left: 0;
    margin: 0 !important;
    padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom));
    position: fixed;
    right: 0;
    z-index: 60;
  }
  [data-redcafe-fijo="1"] > * { flex: 1 1 auto; }
  html.redcafe-con-boton-fijo body { padding-bottom: 5.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  .btn-accent, .btn-primary, .card { transition: none; }
  .card:hover { transform: none; }
}

/* ============================================================
   Plataforma negocio café · fase 2
   ============================================================ */
body {
  background: #f6f1e8;
  color: #45291c;
}

main {
  background:
    linear-gradient(180deg, rgba(246, 241, 232, .96), rgba(255, 252, 246, .98) 36%, rgba(246, 241, 232, .96));
}

.redcafe-home-price-strip {
  background: #45291c;
  border-top: 1px solid rgba(212, 137, 63, .2);
  border-bottom: 1px solid rgba(212, 137, 63, .22);
  color: #fff7eb;
}
.redcafe-home-price-inner {
  align-items: center;
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr) auto auto;
  margin: 0 auto;
  max-width: 72rem;
  padding: 1rem;
}
.redcafe-home-price-copy {
  min-width: 0;
}
.redcafe-home-price-kicker {
  color: var(--rce-ambar, #dda35e);
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .08em;
  margin: 0 0 .25rem;
  text-transform: uppercase;
}
.redcafe-home-price-copy h2 {
  color: #fff7eb;
  font-family: var(--font-titulo, Montserrat, system-ui, sans-serif);
  font-size: 1.08rem;
  font-weight: 850;
  line-height: 1.2;
  margin: 0;
}
.redcafe-home-price-copy p:last-child {
  color: rgba(255, 247, 235, .72);
  font-size: .9rem;
  line-height: 1.45;
  margin: .25rem 0 0;
  max-width: 64ch;
}
.redcafe-home-price-metric {
  background: rgba(255, 247, 235, .08);
  border: 1px solid rgba(255, 247, 235, .14);
  border-radius: .5rem;
  display: grid;
  gap: .1rem;
  min-width: 10.5rem;
  padding: .7rem .85rem;
}
.redcafe-home-price-metric span,
.redcafe-home-price-metric small {
  color: rgba(255, 247, 235, .68);
  font-size: .72rem;
  line-height: 1.25;
}
.redcafe-home-price-metric strong {
  color: var(--rce-ambar, #dda35e);
  font-size: 1.35rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.redcafe-home-price-inner > a {
  align-items: center;
  background: var(--rce-ambar, #dda35e);
  border-radius: .5rem;
  color: #3b2318;
  display: inline-flex;
  font-size: .92rem;
  font-weight: 850;
  justify-content: center;
  min-height: 2.8rem;
  padding: .65rem 1rem;
  text-decoration: none;
  white-space: nowrap;
}

.redcafe-panel-next-actions {
  display: grid;
  gap: .85rem;
  grid-template-columns: minmax(0, 1.2fr) repeat(2, minmax(0, 1fr));
  margin: 1rem 0 1.1rem;
}
.redcafe-panel-next-card {
  background: #fffdf8;
  border: 1px solid rgba(59,35,24, .12);
  border-radius: .5rem;
  box-shadow: 0 10px 24px rgba(59,35,24, .07);
  display: grid;
  gap: .45rem;
  min-width: 0;
  padding: 1rem;
}
.redcafe-panel-next-card.is-primary {
  background: #1f3324;
  border-color: rgba(212, 137, 63, .28);
  color: #fff7eb;
}
.redcafe-panel-next-card p {
  color: #b87440;
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .06em;
  line-height: 1.2;
  margin: 0;
  text-transform: uppercase;
}
.redcafe-panel-next-card.is-primary p {
  color: #dda35e;
}
.redcafe-panel-next-card h4 {
  color: #45291c;
  font-size: 1rem;
  font-weight: 850;
  line-height: 1.25;
  margin: 0;
}
.redcafe-panel-next-card.is-primary h4 {
  color: #fff7eb;
}
.redcafe-panel-next-card span {
  color: #5a5249;
  font-size: .9rem;
  line-height: 1.42;
}
.redcafe-panel-next-card.is-primary span {
  color: rgba(255, 247, 235, .78);
}
.redcafe-panel-next-card a {
  align-items: center;
  background: #3b2318;
  border-radius: .45rem;
  color: #fff7eb;
  display: inline-flex;
  font-size: .9rem;
  font-weight: 800;
  justify-content: center;
  margin-top: .2rem;
  min-height: 2.5rem;
  padding: .55rem .85rem;
  text-decoration: none;
  width: fit-content;
}
.redcafe-panel-next-card.is-primary a {
  background: var(--rce-ambar, #dda35e);
  color: #3b2318;
}

.redcafe-pub-seccion,
.redcafe-req-seccion,
.redcafe-empleo-seccion {
  background: #f7f3ec !important;
}
.redcafe-pub-wrap,
.redcafe-req-wrap,
.redcafe-empleo-wrap {
  font-family: var(--font-cuerpo, Lato, Inter, system-ui, sans-serif);
}
.redcafe-pub-card,
.redcafe-pub-seccion article,
.redcafe-req-panel,
.redcafe-empleo-panel {
  border-radius: .5rem !important;
}

.fixed.bottom-5.right-5 {
  bottom: calc(1rem + env(safe-area-inset-bottom)) !important;
  right: 1rem !important;
  z-index: 42 !important;
}
#redcafe-reportar-problema,
.redcafe-reportar-problema {
  bottom: calc(5.4rem + env(safe-area-inset-bottom)) !important;
  left: 1rem !important;
  right: auto !important;
  z-index: 41 !important;
}

@media (max-width: 900px) {
  .redcafe-home-price-inner,
  .redcafe-panel-next-actions {
    grid-template-columns: 1fr;
  }
  .redcafe-home-price-inner > a,
  .redcafe-panel-next-card a {
    width: 100%;
  }
}

/* ==========================================================================
   Conversión · fase 1b (Claude, 15 sep 2026) — mapa real y siguiente paso
   ========================================================================== */
.redcafe-mapa-provincias small { color: var(--rce-tostado, #6f4718); font-size: .78rem; font-weight: 600; }
.redcafe-mapa-provincias .redcafe-mapa-con-lotes { border-color: rgba(212, 137, 63, .55); }
.redcafe-siguiente-paso { margin: 2.25rem auto 0; max-width: 46rem; text-align: left; }
.redcafe-siguiente-rotulo { color: #b87440; font-size: .78rem; font-weight: 800; letter-spacing: .06em; margin: 0 0 .25rem; text-align: center; text-transform: uppercase; }
.redcafe-siguiente-paso .redcafe-panel-next-actions { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }

/* ==========================================================================
   Mapa de lotes del marketplace · corrección de visualización (Claude, 15 sep 2026)
   Había dos reglas .redcafe-map-pin: la primera fija width/height 18px y la
   segunda (etiqueta) no lo anulaba. La etiqueta quedaba en ~20px de ancho y,
   con overflow-wrap:anywhere, el nombre salía letra a letra en vertical.
   Además los lotes de una misma zona (Loja) se montaban unos sobre otros.
   Ahora: punto rojo visible y nombre en una línea al pasar o enfocar.
   ========================================================================== */
.redcafe-map-overlay .redcafe-map-pin {
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  height: auto;
  max-width: none;
  padding: .35rem;
  width: auto;
}
.redcafe-map-overlay .redcafe-map-pin span {
  height: .95rem;
  width: .95rem;
}
.redcafe-map-overlay .redcafe-map-pin b {
  background: #fffdf8;
  border: 1px solid rgba(59,35,24, .14);
  border-radius: .35rem;
  box-shadow: 0 6px 16px rgba(59,35,24, .14);
  left: calc(100% - .2rem);
  max-width: 14rem;
  opacity: 0;
  overflow-wrap: normal;
  pointer-events: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  transition: opacity .15s ease;
  white-space: nowrap;
}
.redcafe-map-overlay .redcafe-map-pin:hover,
.redcafe-map-overlay .redcafe-map-pin:focus-visible { z-index: 5; }
.redcafe-map-overlay .redcafe-map-pin:hover b,
.redcafe-map-overlay .redcafe-map-pin:focus-visible b { opacity: 1; }
.redcafe-map-overlay .redcafe-map-pin:hover span,
.redcafe-map-overlay .redcafe-map-pin:focus-visible span { box-shadow: 0 0 0 4px rgba(212, 137, 63, .45); }
@media (max-width: 760px) {
  .redcafe-map-overlay .redcafe-map-pin b { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .redcafe-map-overlay .redcafe-map-pin b { transition: none; }
}

/* ==========================================================================
   Publicar lote con ficha completa (Claude, 15 sep 2026)
   Formulario propio en /panel/?ver=publicar: café en grano (cereza → oro) o
   producto terminado, ficha técnica y, al publicar, fotos y certificados.
   ========================================================================== */
#redcafe-publicar-completo .redcafe-publicar { margin-top: 0; }
.redcafe-publicar-tipo { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin-top: .7rem; }
.redcafe-publicar-tipo label { align-items: flex-start; border: 1px solid rgba(59,35,24, .18); border-radius: .6rem; cursor: pointer; display: flex; gap: .55rem; padding: .7rem .8rem; }
.redcafe-publicar-tipo label:has(input:checked) { background: #fffaf2; border-color: var(--rce-ambar, #dda35e); box-shadow: 0 0 0 2px rgba(212, 137, 63, .25); }
.redcafe-publicar-tipo input { accent-color: var(--color-filtrado-800, #3b2318); margin-top: .2rem; }
.redcafe-publicar-tipo b { color: var(--color-filtrado-800, #3b2318); display: block; font-size: .95rem; }
.redcafe-publicar-tipo small { color: #6b665c; display: block; font-size: .78rem; }
.redcafe-publicar .redcafe-pub-label[hidden] { display: none; }
.redcafe-publicar-gps, .redcafe-publicar-usar-rapido { background: none; border: 0; color: var(--color-filtrado-600, #8e5328); cursor: pointer; font-size: .85rem; font-weight: 700; margin-top: .6rem; padding: .35rem 0; text-decoration: underline; }
.redcafe-publicar-ficha { border-top: 1px solid rgba(59,35,24, .1); margin-top: .8rem; padding-top: .6rem; }
.redcafe-publicar-ficha summary { color: var(--color-filtrado-800, #3b2318); cursor: pointer; font-weight: 700; min-height: 2.75rem; display: flex; align-items: center; }
.redcafe-publicar-rapido { margin-top: .3rem; }
.redcafe-publicar-ok { background: #1f3324; border-radius: .75rem; color: #fff7eb; padding: 1rem 1.1rem; }
.redcafe-publicar-ok .redcafe-pub-rotulo { color: var(--rce-ambar, #dda35e); }
.redcafe-publicar-ok h3 { font-family: var(--font-titulo); font-size: 1.2rem; font-weight: 700; margin-top: .3rem; }
.redcafe-publicar-ok p { color: rgba(255, 247, 235, .85); font-size: .9rem; margin-top: .35rem; }
.redcafe-publicar-ok a { color: var(--rce-ambar, #dda35e); font-weight: 700; }

/* ==========================================================================
   Panel del usuario compacto · móvil y PC (Claude, 15 sep 2026)
   Medido antes: 4.886 px en PC con todo plegado y 22.309 px (25 pantallas)
   en el móvil con las secciones abiertas; «Mis publicaciones» con 2 lotes
   ocupaba 8.345 px y el campo de archivo desbordaba 34 px a la derecha.
   ========================================================================== */
body[data-redcafe-route="/panel/"] .redcafe-pub-seccion { padding: 1.1rem 0; }
#redcafe-requerimientos-panel.redcafe-req-seccion,
#redcafe-busco-empleo-panel.redcafe-req-seccion,
#redcafe-empleos-panel.redcafe-empleo-seccion { padding: 16px 0; }

/* Fichas plegadas */
.redcafe-pub-card { padding: .8rem 1rem; }
.redcafe-pub-card + .redcafe-pub-card { margin-top: .6rem; }
.redcafe-pub-resumen { color: #5c5a50; font-size: .82rem; margin-top: .2rem; }
.redcafe-pub-toggle { background: none; border: 1px solid rgba(59,35,24, .22); border-radius: 999px; color: var(--color-filtrado-800, #3b2318); cursor: pointer; font: inherit; font-size: .82rem; font-weight: 700; margin-top: .55rem; min-height: 2.5rem; padding: .4rem .9rem; }
.redcafe-pub-toggle[aria-expanded="true"] { background: var(--color-crema-oscuro, #efeae1); }
.redcafe-pub-cuerpo[hidden] { display: none !important; }

/* Campos densos */
.redcafe-pub-grid { gap: .55rem .7rem; grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr)); margin-top: .7rem; }
.redcafe-pub-label { gap: .15rem; min-width: 0; }
.redcafe-pub-label > span { font-size: .68rem; letter-spacing: .04em; }
.redcafe-pub-label:has(textarea) { grid-column: 1 / -1; }
.redcafe-pub-input { font-size: .9rem; min-height: 2.35rem; padding: .35rem .55rem; width: 100%; }
textarea.redcafe-pub-input { min-height: 4rem; }
#redcafe-requerimientos-panel .redcafe-req-form,
#redcafe-busco-empleo-panel .redcafe-req-form,
#redcafe-empleos-panel .redcafe-empleo-form { gap: .55rem .7rem; grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr)); }
#redcafe-requerimientos-panel .redcafe-req-campo input,
#redcafe-requerimientos-panel .redcafe-req-campo select,
#redcafe-busco-empleo-panel .redcafe-req-campo input,
#redcafe-busco-empleo-panel .redcafe-req-campo select,
#redcafe-empleos-panel .redcafe-empleo-campo input,
#redcafe-empleos-panel .redcafe-empleo-campo select { min-height: 2.35rem; }
#redcafe-empleos-panel .redcafe-empleo-form label { margin-bottom: 0; }

/* Desborde: el campo de archivo no se encogía (374 px en un móvil de 375) */
.redcafe-doc-alta { display: flex; flex-wrap: wrap; gap: .45rem; min-width: 0; }
.redcafe-doc-alta input[type="file"], .redcafe-foto-archivo, .redcafe-doc-archivo { max-width: 100%; min-width: 0; }
.redcafe-pub-card, .redcafe-pub-wrap, .redcafe-col-cuerpo { min-width: 0; }

@media (max-width: 640px) {
  .redcafe-pub-grid,
  #redcafe-requerimientos-panel .redcafe-req-form,
  #redcafe-busco-empleo-panel .redcafe-req-form,
  #redcafe-empleos-panel .redcafe-empleo-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .redcafe-pub-label:has(textarea),
  .redcafe-req-campo:has(textarea),
  .redcafe-empleo-campo:has(textarea) { grid-column: 1 / -1; }
  /* 44 px táctiles y 16 px de letra: con menos, iOS amplía la página al escribir */
  .redcafe-pub-input,
  #redcafe-requerimientos-panel .redcafe-req-campo input,
  #redcafe-requerimientos-panel .redcafe-req-campo select,
  #redcafe-busco-empleo-panel .redcafe-req-campo input,
  #redcafe-busco-empleo-panel .redcafe-req-campo select,
  #redcafe-empleos-panel .redcafe-empleo-campo input,
  #redcafe-empleos-panel .redcafe-empleo-campo select { font-size: 16px; min-height: 2.75rem; }
  .redcafe-pub-ayuda { font-size: .66rem; line-height: 1.3; }

  /* Acción recomendada: la principal entera, las otras dos en una fila */
  #redcafe-panel-accion { padding-top: .8rem; }
  #redcafe-panel-accion .redcafe-panel-next-actions { gap: .5rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: .4rem 0 .6rem; }
  #redcafe-panel-accion .redcafe-panel-next-card { gap: .3rem; padding: .7rem; }
  #redcafe-panel-accion .redcafe-panel-next-card.is-primary { grid-column: 1 / -1; }
  #redcafe-panel-accion .redcafe-panel-next-card:not(.is-primary) > span { display: none; }
  #redcafe-panel-accion .redcafe-panel-next-card:not(.is-primary) h4 { font-size: .86rem; }
  #redcafe-panel-accion .redcafe-panel-next-card a { font-size: .82rem; width: 100%; }
}
/* Ficha de producto terminado: fuera los campos del café en grano */
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="precioSaco"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="precioQuintal"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="stockSacos"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="humedad"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="zaranda"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="defectos"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="rendimiento"]),
.redcafe-pub-card[data-categoria="terminado"] .redcafe-pub-label:has([data-campo="empaque"]) { display: none; }
@media (max-width: 640px) {
  /* La ayuda de cada campo aparece al escribir en él: abierta, la ficha medía 3.253 px */
  .redcafe-pub-grid .redcafe-pub-label:not(:focus-within) .redcafe-pub-ayuda { display: none; }
}

/* Portada · panel de perfiles: el bloque de Codex fuerza display:flex !important
   en estos li con un selector muy específico y le ganaba a la regla general de
   ocultado. Sin esto, al pasar los textos por reemplazarTextoSeguro (en vez de
   escribir en el nodo de React) se veían el original y la copia a la vez. */
body[data-redcafe-route="/"] .redcafe-home-profile-native .redcafe-home-profile-included-native li[data-redcafe-oculto-react="1"],
body[data-redcafe-route="/"] .redcafe-home-profile-native [data-redcafe-oculto-react="1"] { display: none !important; }

/* ==========================================================================
   «Qué cuesta y qué no» al pie de la comunidad (Claude, 15 sep 2026)
   Ese bloque solo existía en la portada; quien entra por la comunidad nunca
   veía qué entra gratis ni qué cuesta. Los precios salen de la API real.
   ========================================================================== */
.redcafe-costes { background: var(--color-crema-oscuro, #f7f3ec); border-top: 1px solid rgba(59,35,24, .12); padding: 2.2rem 0; }
.redcafe-costes-caja { margin: 0 auto; max-width: 72rem; padding: 0 1rem; }
.redcafe-costes-rotulo { color: var(--color-filtrado-600, #8e5328); font-size: .75rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.redcafe-costes h2 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: clamp(1.4rem, 3.4vw, 1.9rem); font-weight: 700; margin-top: .3rem; }
.redcafe-costes-intro { color: #5c5a50; margin-top: .4rem; max-width: 52rem; }
.redcafe-costes-columnas { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr)); margin-top: 1.2rem; }
.redcafe-costes-col { background: #fff; border: 1px solid rgba(59,35,24, .14); border-radius: .75rem; padding: 1.1rem 1.2rem; }
.redcafe-costes-col.is-gratis { background: #1f3324; border-color: rgba(212, 137, 63, .3); color: #fff7eb; }
.redcafe-costes-col-rotulo { color: var(--color-filtrado-600, #8e5328); font-size: .72rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.redcafe-costes-col.is-gratis .redcafe-costes-col-rotulo { color: var(--rce-ambar, #dda35e); }
.redcafe-costes-col h3 { color: var(--color-filtrado-800, #3b2318); font-family: var(--font-titulo); font-size: 1.15rem; font-weight: 700; margin-top: .25rem; }
.redcafe-costes-col.is-gratis h3 { color: #fff7eb; }
.redcafe-costes-col ul { display: grid; gap: .55rem; list-style: none; margin: .9rem 0 0; padding: 0; }
.redcafe-costes-col.is-gratis li { color: rgba(255, 247, 235, .82); font-size: .92rem; line-height: 1.45; padding-left: 1.5rem; position: relative; }
.redcafe-costes-col.is-gratis li::before { color: var(--rce-ambar, #dda35e); content: "✓"; font-weight: 900; left: 0; position: absolute; }
.redcafe-costes-col.is-gratis b { color: #fff7eb; }
.redcafe-costes-precios li { align-items: baseline; border-bottom: 1px solid rgba(59,35,24, .1); color: #3b2318; display: flex; font-size: .92rem; gap: 1rem; justify-content: space-between; padding-bottom: .4rem; }
.redcafe-costes-precio { color: var(--color-filtrado-600, #8e5328); font-weight: 800; white-space: nowrap; }
.redcafe-costes-nota { color: #6b665c; font-size: .8rem; line-height: 1.4; margin-top: .8rem; }
.redcafe-costes-cta { background: var(--rce-ambar, #dda35e); border-radius: 999px; color: #3b2318; display: inline-flex; font-weight: 800; margin-top: 1rem; min-height: 2.75rem; padding: .6rem 1.2rem; align-items: center; text-decoration: none; }
.redcafe-costes-enlace { color: var(--color-filtrado-600, #8e5328); display: inline-block; font-weight: 800; margin-top: .7rem; text-decoration: none; }
@media (max-width: 640px) {
  .redcafe-costes { padding: 1.5rem 0; }
  .redcafe-costes-columnas { grid-template-columns: 1fr; }
}

/* === 20260916 marketplace compacto === */
.redcafe-etiqueta-aprox {
  border: 1px solid currentColor;
  border-radius: 999px;
  color: #7a5a3a;
  display: inline-flex;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: normal;
  line-height: 1.35;
  margin-left: .35rem;
  padding: .05rem .45rem;
  text-transform: none;
  vertical-align: middle;
}

@media (max-width: 639px) {
  #redcafe-lotes-propio .redcafe-lote-tarjeta {
    gap: .55rem;
    padding: .6rem !important;
  }

  #redcafe-lotes-propio .redcafe-lote-tarjeta .redcafe-lote-foto {
    height: 4.6rem;
    max-height: 5.2rem;
    min-height: 4.6rem;
    object-fit: cover;
    width: 100%;
  }

  #redcafe-lotes-propio .redcafe-lote-tarjeta h3 {
    font-size: 1rem !important;
    line-height: 1.18 !important;
    margin-top: .35rem !important;
  }

  #redcafe-lotes-propio .redcafe-lote-tarjeta p {
    margin-top: .3rem !important;
  }

  #redcafe-lotes-propio .redcafe-lote-tarjeta .btn-ghost,
  #redcafe-lotes-propio .redcafe-lote-tarjeta .btn-primary {
    font-size: .82rem !important;
    min-height: 44px;
    padding: .35rem .6rem !important;
  }
}

/* === 20260916 QA: lectura y superficies de accion === */
@media (max-width: 639px) {
  body button,
  body summary,
  body .btn-primary,
  body .btn-accent,
  body .btn-ghost {
    min-height: 44px !important;
  }
  body summary { align-content: center; }
}
body [class~="text-[10px]"],
body [class~="text-[11px]"],
body .rotulo,
body .redcafe-etiqueta-aprox,
body .redcafe-etiqueta-demo,
body .redcafe-home-price-kicker,
body .redcafe-home-price-strip span,
body .redcafe-home-price-strip small,
body .redcafe-home-price-metric span,
body .redcafe-home-price-metric small,
body .redcafe-afil-rotulo,
body .redcafe-afil-guia-rotulo,
body .redcafe-afil-guia-chips span,
body .redcafe-afil-num,
body .redcafe-avisos-globo,
body .redcafe-muro-meta,
body .redcafe-muro-sello,
body .redcafe-muro-comfecha,
body .redcafe-costes-col-rotulo,
body .redcafe-pub-label > span,
body .redcafe-pub-tag,
body .redcafe-col-cuenta,
body .redcafe-aviso-fecha,
body .redcafe-pub-ayuda {
  font-size: 12px !important;
}

/* === 20260916d densidad (la tipografía pasó al bloque 20260916d) === */

/* ==== Densidad ==== */

/* --- Secciones --- */
/* Tailwind responsivo incluido (md:py-20 = 80px en escritorio). No se añade
   relleno a secciones que no lo tenían. */
main .py-12,
main .py-14,
main .py-16,
main .py-20,
main .py-24,
main .md\:py-16,
main .md\:py-20,
main .md\:py-24,
main .lg\:py-24,
main .lg\:py-32 {
  padding-top: 28px !important;
  padding-bottom: 28px !important;
}

/* --- Márgenes --- */
main .mt-8,
main .mt-10,
main .mt-12,
main .mt-16 {
  margin-top: 16px !important;
}

main .mb-8,
main .mb-10,
main .mb-12 {
  margin-bottom: 16px !important;
}

main .mt-6 {
  margin-top: 12px !important;
}

/* --- Gaps --- */
main .gap-6,
main .gap-8,
main .gap-10 {
  gap: 12px !important;
}

main .space-y-6 > * + *,
main .space-y-8 > * + * {
  margin-top: 12px !important;
}

/* --- Tarjetas --- */
main .card,
main .p-6,
main .p-8 {
  padding: 14px !important;
}

main .p-5 {
  padding: 14px !important;
}

/* --- Escritorio --- */
@media (min-width: 640px) {
  main .py-12,
  main .py-14,
  main .py-16,
  main .py-20,
  main .py-24,
  main .md\:py-16,
  main .md\:py-20,
  main .md\:py-24,
  main .lg\:py-24,
  main .lg\:py-32 {
    padding-top: 36px !important;
    padding-bottom: 36px !important;
  }

  main .card,
  main .p-6,
  main .p-8 {
    padding: 16px !important;
  }
}


/* === 20260916d sistema tipográfico único ===================================
   El CSS acumulaba 302 tamaños sueltos (≈40 valores: .62rem, .68rem, .72rem,
   .78rem, .82rem…), pesos 400–850 y rótulos en monoespaciada: cada página se
   veía distinta. Este bloque asigna el tamaño por FUNCIÓN del texto, igual en
   toda la plataforma. Referencia: Facebook/X, unos 2–3 px por debajo de la
   versión anterior a petición del propietario.

   Escala (móvil / escritorio ≥640px):
     título de página  19 / 26   700
     título de sección 16 / 19   700
     título de tarjeta 14 / 15   600
     texto             13        400   interlineado 1.45
     metadatos         12        400
     rótulos MAYÚS     11        600   espaciado .04em
     botones           13        600
     campos de formulario 16 en móvil (menos hace zoom en iPhone) / 13

   El prefijo html:not(#rc-t1):not(#rc-t2) da especificidad de dos ids: gana a
   las reglas propias con id (#redcafe-lotes-propio …) sin tocar cada una.
   Fuera: logotipo (.marca), mapa (Leaflet), gráficos SVG y código.
   ========================================================================== */
html:not(#rc-t1):not(#rc-t2) body,
html:not(#rc-t1):not(#rc-t2) body :is(input, select, textarea) {
  font-family: var(--rc-texto) !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, header, footer, [data-redcafe-propio]) :is(p, li, td, th, dd, dt, label, blockquote, figcaption, summary) {
  font-family: var(--rc-texto) !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
  letter-spacing: normal !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, header, footer, [data-redcafe-propio]) :is(p, li, td, label, summary):not(.font-bold):not(.font-semibold):not(.font-extrabold):not(.font-black) {
  font-weight: 400 !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(strong, b, .font-bold, .font-extrabold, .font-black) {
  font-weight: 700 !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.font-semibold) {
  font-weight: 600 !important;
}

/* Metadatos */
html:not(#rc-t1):not(#rc-t2) body :is(main, header, footer, [data-redcafe-propio]) :is(small, time, .text-sm, .text-xs, [class*="-meta"], [class*="fecha"], [class*="ayuda"], [class*="-nota"], [class*="hint"]) {
  font-size: 12px !important;
  line-height: 1.4 !important;
}

/* Rótulos y etiquetas en mayúsculas: una sola voz (Inter), sin monoespaciada */
html:not(#rc-t1):not(#rc-t2) body :is(main, header, footer, [data-redcafe-propio]) :is(.badge, .rotulo, .uppercase, [class*="rotulo"], [class*="etiqueta"], [class*="-tag"], [class*="sello"], [class*="kicker"], [class*="badge"]) {
  font-family: var(--rc-texto) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: .04em !important;
  line-height: 1.35 !important;
}

/* Títulos */
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) h1,
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.text-4xl, .text-5xl, .text-6xl):not(span) {
  font-family: var(--rc-titulo) !important;
  font-size: 19px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.01em !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) h2,
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.text-3xl):not(span) {
  font-family: var(--rc-titulo) !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
  letter-spacing: normal !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio], .redcafe-avisos-panel) :is(h3, h4, h5),
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.font-titulo.text-xl, .font-titulo.text-2xl, .font-titulo.text-lg, .text-2xl, .text-xl):not(span):not(h1):not(h2) {
  font-family: var(--rc-titulo) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  letter-spacing: normal !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(p, a, span, div).text-lg:not(.badge):not(.rotulo) {
  font-size: 14px !important;
  line-height: 1.4 !important;
}
/* Cifras destacadas (72 miembros, precios grandes): mismo sistema, sin serif */
html:not(#rc-t1):not(#rc-t2) body main strong:not(.marca) {
  font-family: var(--rc-texto) !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(strong, span, p, div).font-titulo:not(h1):not(h2):not(h3) {
  font-family: var(--rc-titulo) !important;
}

/* Botones y controles */
html:not(#rc-t1):not(#rc-t2) body :is(main, header, footer, [data-redcafe-propio]) :is(button, .btn-primary, .btn-accent, .btn-ghost, [class*="-btn"], [class*="boton"], [role="button"], a[class*="min-h-11"]):not(.redcafe-avisos-boton),
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) a.btn-primary,
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) a.btn-ghost {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: normal !important;
}
html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(input, select, textarea) {
  font-size: 16px !important;
}

/* Cabecera y barra de precio */
html:not(#rc-t1):not(#rc-t2) body > header nav a,
html:not(#rc-t1):not(#rc-t2) body > header :is(a, button):not(.marca) {
  font-size: 13px !important;
}
html:not(#rc-t1):not(#rc-t2) body > header :is(p, span):not(.marca):not(.redcafe-avisos-icono):not(.redcafe-avisos-globo) {
  font-size: 12px !important;
}

/* Lo que no se toca */
html:not(#rc-t1):not(#rc-t2) body .marca { font-family: var(--font-marca, "DM Serif Display"), Georgia, serif !important; }
html:not(#rc-t1):not(#rc-t2) body :is(.leaflet-container, .leaflet-container *, svg, svg *, code, pre) {
  letter-spacing: normal !important;
}

@media (min-width: 640px) {
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) h1,
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.text-4xl, .text-5xl, .text-6xl):not(span) { font-size: 26px !important; }
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) h2,
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.text-3xl):not(span) { font-size: 19px !important; }
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio], .redcafe-avisos-panel) :is(h3, h4, h5),
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(.font-titulo.text-xl, .font-titulo.text-2xl, .font-titulo.text-lg, .text-2xl, .text-xl):not(span):not(h1):not(h2) { font-size: 15px !important; }
  html:not(#rc-t1):not(#rc-t2) body :is(main, [data-redcafe-propio]) :is(input, select, textarea) { font-size: 13px !important; }
}


/* === 20260916d tema Origen =================================================
   17 sep: el propietario vio los colores «como hechos con IA». Los tonos
   venían de pasar la paleta a Stradale y devolverla «por rol», sin recuperar
   los colores exactos del diseño original. Se restauraron los 216 colores
   literales del paquete 20260916b (paleta original) y este bloque ya NO
   redefine colores: solo fija las fuentes de Origen (DM Serif Display en
   títulos, Inter en texto, rótulos y botones). Escala tipográfica intacta.
   ========================================================================== */
:root {
  --rc-titulo: "DM Serif Display", Georgia, "Times New Roman", serif;
  --rc-texto: "Inter", "Segoe UI", Helvetica, Arial, sans-serif;
  /* Acento de foco y hover de «Efectos»: el ámbar original del sitio. */
  --rc-oro: #dda35e;
  --rc-oro-rgb: 212, 137, 63;
}
html:not(#rc-t1):not(#rc-t2) body :is(.btn-primary, .btn-accent, .btn-ghost) {
  font-family: var(--rc-texto) !important;
}

/* Efectos */
html:not(#rc-t1):not(#rc-t2) body main a:not([class*="btn"]) {
  transition: color .2s ease;
}
html:not(#rc-t1):not(#rc-t2) body main :is(.card, .redcafe-lote-tarjeta, .redcafe-service-card, .redcafe-pub-card, article.group, a.group) {
  transition: box-shadow .3s ease, transform .3s ease, border-color .3s ease !important;
}
html:not(#rc-t1):not(#rc-t2) body main :is(.card, .redcafe-lote-tarjeta, .redcafe-service-card, article.group, a.group):hover {
  box-shadow: 0 10px 28px rgba(59,35,24, .12) !important;
  border-color: rgba(var(--rc-oro-rgb), .55) !important;
  transform: translateY(-2px);
}
html:not(#rc-t1):not(#rc-t2) body main :is(.redcafe-lote-foto, .card img, a.group img) {
  transition: filter .35s ease;
}
html:not(#rc-t1):not(#rc-t2) body main :is(.redcafe-lote-tarjeta, .card, a.group):hover :is(.redcafe-lote-foto, img) {
  filter: brightness(1.06) saturate(1.08);
}
/* OJO con el `>`: sin él esta regla pinta de café oscuro CUALQUIER <header>,
   y las lecciones de un curso llevan uno por módulo. El encabezado del módulo
   salía con texto oscuro sobre fondo oscuro, ilegible. Solo la del sitio. */
html:not(#rc-t1):not(#rc-t2) body > header {
  background-color: rgba(59,35,24, .96) !important;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
html:not(#rc-t1):not(#rc-t2) body > header nav a:hover {
  color: var(--rc-oro) !important;
}
html:not(#rc-t1):not(#rc-t2) body :focus-visible {
  outline: 2px solid var(--rc-oro) !important;
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  /* Sin transform global: el mapa (Leaflet) coloca teselas y marcadores con transform. */
  html:not(#rc-t1):not(#rc-t2) body main :is(.card, .redcafe-lote-tarjeta, .redcafe-service-card, article.group, a.group, .btn-primary, .btn-accent, .btn-ghost) {
    transition: none !important;
    transform: none !important;
  }
}

/* Botones propios con estilo suelto (p. ej. «Solicitar servicio» / «WhatsApp» del servicio destacado) */
html:not(#rc-t1):not(#rc-t2) body .redcafe-action-row a {
  border-radius: 8px !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-family: var(--rc-texto) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  transition: background-color .25s ease, color .25s ease, box-shadow .25s ease !important;
}
html:not(#rc-t1):not(#rc-t2) body .redcafe-action-row a:first-child {
  background: var(--rc-oro) !important;
  border-color: var(--rc-oro) !important;
  color: #fff !important;
}
html:not(#rc-t1):not(#rc-t2) body .redcafe-action-row a:hover {
  box-shadow: 0 4px 14px rgba(var(--rc-oro-rgb), .2) !important;
}

/* ==========================================================================
   @media (max-width: 375px) · MÓVIL ESTRECHO (iPhone SE 1ª gen 320 / SE 375 /
   Android 360-375) — ORIGEN 20260916d · 1 columna + CTA ancho completo.
   Cubre el hueco entre ≤480px existente y los paneles densos. NO desplegar.
   ========================================================================== */
@media (max-width: 375px) {
  html:not(#rc-t1):not(#rc-t2) body :is(.redcafe-lote-tarjeta, #redcafe-lotes-propio .redcafe-lote-tarjeta) {
    grid-template-columns: 1fr !important;
  }
  html:not(#rc-t1):not(#rc-t2) body :is(.redcafe-market-grid, #redcafe-market .redcafe-market-item, .redcafe-muro-grid, #redcafe-muro .redcafe-entrada) {
    grid-template-columns: 1fr !important;
  }
  html:not(#rc-t1):not(#rc-t2) body :is(.btn-primary, .btn-accent, .btn-ghost, .redcafe-cta, a.redcafe-lote-cta) {
    width: 100% !important;
    box-sizing: border-box;
  }
  html:not(#rc-t1):not(#rc-t2) body .redcafe-lote-tarjeta { padding: 1rem .9rem; }
  html:not(#rc-t1):not(#rc-t2) body :is(.redcafe-market-item, .redcafe-entrada) { min-width: 0; }
}

/* ======================================================================
   NOTIFICACIONES · Origen 20260916d · MÓVIL-FIRST
   Campana flotante (fab) + centro desplegable + toasts.
   Prefijo .redcafe-notif-* · reutiliza var(--rc-*) existentes.
   Auto-inyectado por JS: no requiere tocar HTML del dueño.
   ====================================================================== */
.redcafe-notif-fab {
  position: fixed; right: 1rem; bottom: 1rem; z-index: 998;
  width: 3.4rem; height: 3.4rem; border-radius: 50%;
  background: var(--rc-oro, #8e5328); color: var(--rc-oro-texto, #fff);
  display: grid; place-items: center; cursor: pointer;
  border: 2px solid rgba(var(--rc-oro-rgb), .35);
  box-shadow: 0 .4rem 1rem rgba(var(--rc-oro-rgb), .35);
  transition: transform .18s ease, box-shadow .18s ease;
}
.redcafe-notif-fab:hover { transform: translateY(-2px); }
.redcafe-notif-fab:focus-visible { outline: 3px solid var(--rc-acento, #3f6b4a); outline-offset: 2px; }
.redcafe-notif-fab svg { width: 1.7rem; height: 1.7rem; }
.redcafe-notif-badge {
  position: absolute; top: -.25rem; right: -.25rem;
  min-width: 1.35rem; height: 1.35rem; padding: 0 .3rem;
  border-radius: 999px; background: var(--rc-alerta, #b3261e);
  color: #fff; font-size: .72rem; font-weight: 700; line-height: 1.35rem;
  text-align: center; display: none;
}
.redcafe-notif-badge.tiene { display: block; }
.redcafe-notif-centro {
  position: fixed; inset: 0; z-index: 999; display: none;
  background: var(--rc-negro, #3b2318); color: var(--rc-oro-texto, #fff);
}
.redcafe-notif-centro.abierto { display: flex; flex-direction: column; }
.redcafe-notif-cabecera {
  display: flex; align-items: center; justify-content: space-between;
  gap: .5rem; padding: 1rem; border-bottom: 1px solid rgba(var(--rc-oro-rgb), .3);
}
.redcafe-notif-cabecera h3 { margin: 0; font-family: var(--rc-titulo, "DM Sans"), Georgia, serif; font-size: 1.25rem; }
.redcafe-notif-cerrar {
  width: 2.2rem; height: 2.2rem; border-radius: 50%;
  background: rgba(var(--rc-oro-rgb), .15); border: 0; color: #fff;
  font-size: 1.2rem; cursor: pointer; display: grid; place-items: center;
}
.redcafe-notif-lista { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: .75rem; }
.redcafe-notif-item {
  background: rgba(var(--rc-oro-rgb), .12); border: 1px solid rgba(var(--rc-oro-rgb), .25);
  border-radius: .75rem; padding: .8rem .9rem;
}
.redcafe-notif-item .t { font-family: var(--rc-titulo, "DM Sans"), Georgia, serif; font-size: 1rem; font-weight: 700; }
.redcafe-notif-item .d { font-size: .85rem; opacity: .92; margin-top: .2rem; }
.redcafe-notif-item .h { font-size: .72rem; opacity: .65; margin-top: .35rem; }
.redcafe-notif-vacio {
  margin: auto; text-align: center; padding: 2rem 1.5rem; opacity: .85;
}
.redcafe-notif-vacio p { margin: .5rem 0 0; }
.redcafe-notif-toast-wrap {
  position: fixed; left: 1rem; right: 1rem; bottom: 5rem; z-index: 1000;
  display: flex; flex-direction: column; gap: .5rem; pointer-events: none;
}
.redcafe-notif-toast {
  pointer-events: auto; border-radius: .75rem; padding: .8rem 1rem;
  background: var(--rc-negro, #3b2318); color: var(--rc-oro-texto, #fff);
  border: 1px solid rgba(var(--rc-oro-rgb), .35);
  box-shadow: 0 .4rem 1rem rgba(0,0,0,.25);
  font-size: .88rem; animation: redcafe-notif-in .25s ease;
}
.redcafe-notif-toast.exito { border-color: var(--rc-exito, #2f6b3a); background: var(--rc-exito, #2f6b3a); }
.redcafe-notif-toast.alerta { border-color: var(--rc-alerta, #b3261e); background: var(--rc-alerta, #b3261e); }
@keyframes redcafe-notif-in {
  from { opacity: 0; transform: translateY(.6rem); }
  to { opacity: 1; transform: none; }
}
@media (min-width: 768px) {
  .redcafe-notif-centro { inset: auto; top: 5rem; right: 1.5rem; width: 22rem; max-height: 70vh; border-radius: 1rem; box-shadow: 0 1rem 2.5rem rgba(0,0,0,.3); }
  .redcafe-notif-fab { bottom: 1.5rem; right: 1.5rem; }
}


/* ======================================================================
   NOTIFICACIONES Origen · 20260916d · MÓVIL-FIRST (campana + centro + toasts)
   Paleta: var(--rc-oro)/--rc-negro/--rc-crema/--rc-exito/--rc-alerta
   Botones/marca: DM Serif Display. Nada de Stradale. No toca contenido.
   ====================================================================== */
.redcafe-notif-campana {
  --tam: 3.4rem;
  position: fixed; right: 1rem; bottom: 5.6rem; z-index: 900;
  display: grid; place-items: center;
  width: var(--tam); height: var(--tam); border-radius: 50%;
  background: var(--rc-negro, #3b2318); color: var(--rc-crema, #f7f4ef);
  border: 1px solid rgba(var(--rc-oro-rgb), .45);
  box-shadow: 0 .45rem 1.1rem rgba(59,35,24, .35);
  font-family: var(--rc-titulo, "DM Sans"), Georgia, serif !important;
  transition: transform .18s ease, box-shadow .18s ease;
}
.redcafe-notif-campana:hover { transform: translateY(-2px); box-shadow: 0 .6rem 1.4rem rgba(59,35,24, .45); }
.redcafe-notif-campana svg { width: 1.7rem; height: 1.7rem; }
.redcafe-notif-contador {
  position: absolute; top: -.35rem; right: -.35rem;
  min-width: 1.35rem; height: 1.35rem; padding: 0 .3rem;
  border-radius: 999px; background: var(--rc-alerta, #b3261e); color: #fff;
  font-size: .78rem; font-weight: 700; line-height: 1.35rem; text-align: center;
  display: none;
}
.redcafe-notif-contador.activo { display: block; }
.redcafe-notif-panel {
  position: fixed; left: 0; right: 0; bottom: 0; top: auto;
  z-index: 999; display: flex; flex-direction: column;
  max-height: 75vh; border-radius: 1.1rem 1.1rem 0 0;
  background: var(--rc-crema-oscuro, #f7f4ef); color: var(--rc-texto, #2c1a12);
  box-shadow: 0 -1rem 2.5rem rgba(59,35,24, .3);
  transform: translateY(110%); transition: transform .28s ease;
  font-family: inherit;
}
.redcafe-notif-panel.abierto { transform: translateY(0); }
.redcafe-notif-panel-cab {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  padding: 1rem 1.1rem .9rem; border-bottom: 1px solid rgba(var(--rc-oro-rgb), .25);
}
.redcafe-notif-panel-cab h3 {
  margin: 0; font-family: var(--rc-titulo, "DM Sans"), Georgia, serif !important;
  font-size: 1.15rem; font-weight: 700; color: var(--rc-negro, #3b2318);
}
.redcafe-notif-cerrar {
  width: 2rem; height: 2rem; border-radius: 50%; border: 0;
  background: rgba(var(--rc-oro-rgb), .15); color: var(--rc-negro, #3b2318);
  font-size: 1.1rem; line-height: 1; cursor: pointer; place-items: center;
}
.redcafe-notif-lista { overflow-y: auto; padding: .6rem .9rem 1.1rem; display: flex; flex-direction: column; gap: .55rem; }
.redcafe-notif-item {
  display: flex; gap: .7rem; align-items: flex-start;
  padding: .75rem .85rem; border-radius: .8rem;
  background: var(--rc-superficie, #ffffff); border: 1px solid rgba(var(--rc-oro-rgb), .22);
}
.redcafe-notif-item .rc-notif-punto {
  width: .55rem; height: .55rem; border-radius: 50%; flex: 0 0 auto;
  margin-top: .42rem; background: var(--rc-oro, #8e5328);
}
.redcafe-notif-item.rc-no-leida .rc-notif-punto { background: var(--rc-alerta, #b3261e); }
.redcafe-notif-item-txt { font-size: .9rem; line-height: 1.4; color: var(--rc-texto, #2c1a12); }
.redcafe-notif-item .rc-notif-hora { display: block; font-size: .74rem; color: var(--rc-texto-secundario, #6d5a49); margin-top: .3rem; }
.redcafe-notif-table-actions button {
  font-family: var(--rc-titulo, "DM Sans"), Georgia, serif !important;
  font-size: .82rem; font-weight: 600;
}
.redcafe-toast-wrap {
  position: fixed; left: .9rem; right: .9rem; bottom: 5.6rem; z-index: 1000;
  display: flex; flex-direction: column; gap: .5rem; pointer-events: none;
}
.redcafe-toast {
  pointer-events: auto; display: flex; gap: .6rem; align-items: flex-start;
  padding: .8rem .95rem; border-radius: .85rem;
  background: var(--rc-negro, #3b2318); color: var(--rc-crema, #f7f4ef);
  border: 1px solid rgba(var(--rc-oro-rgb), .5);
  box-shadow: 0 .5rem 1.3rem rgba(59,35,24, .4);
  font-size: .88rem; line-height: 1.4;
  animation: redcafe-toast-in .28s ease;
}
.redcafe-toast .rc-toast-tipo {
  font-family: var(--rc-titulo, "DM Sans"), Georgia, serif !important;
  font-weight: 700; font-size: .8rem; letter-spacing: .04em;
  text-transform: uppercase; flex: 0 0 auto;
}
.redcafe-toast.rc-exito { border-color: rgba(var(--rc-exito-rgb, 47, 107, 58), .75); }
.redcafe-toast.rc-exito .rc-toast-tipo { color: var(--rc-exito, #2f6b3a); }
.redcafe-toast.rc-alerta { border-color: rgba(var(--rc-alerta-rgb, 179, 38, 30), .75); }
.redcafe-toast.rc-alerta .rc-toast-tipo { color: var(--rc-alerta, #b3261e); }
@keyframes redcafe-toast-in { from { opacity: 0; transform: translateY(.7rem); } to { opacity: 1; transform: none; } }
@media (min-width: 760px) {
  .redcafe-notif-panel {
    left: auto; right: 1.2rem; bottom: auto; top: 4.6rem;
    width: 24rem; max-height: 70vh; border-radius: 1rem;
    transform: translateY(-0.4rem) scale(.98); transform-origin: top right;
  }
  .redcafe-notif-panel.abierto { transform: none; }
}

/* 20260917 correcciones QA */
.rc-recordatorios-contador {
  display: none !important;
}

@media (max-width: 639px) {
  body[data-redcafe-route="/servicios/contratar/"] main img,
  body[data-redcafe-route="/servicios/contratar/"] main picture img {
    max-height: 200px !important;
    width: 100% !important;
    object-fit: contain !important;
  }
  /* La ilustración es un <svg class="w-full"> dentro de un div, no un <img>. */
  body[data-redcafe-route="/servicios/contratar/"] main .lg\:col-span-5 > .relative svg.w-full {
    height: 200px !important;
    width: 100% !important;
  }
}

/* 20260917 portada acceso */
#redcafe-acceso {
  background: #f7f4ef;
  color: var(--rc-texto, #2c1a12);
  padding: 24px 16px;
}

#redcafe-acceso .redcafe-acceso-caja {
  max-width: 72rem;
  margin: 0 auto;
}

#redcafe-acceso .redcafe-acceso-rotulo {
  color: var(--rc-oro, #8e5328);
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .08em;
  line-height: 1.2;
  margin: 0 0 .45rem;
  text-transform: uppercase;
}

#redcafe-acceso h2 {
  color: var(--rc-negro, #3b2318);
  font-family: var(--rc-titulo, "DM Sans"), Georgia, serif;
  font-size: clamp(1.75rem, 1.48rem + 1.2vw, 2.45rem);
  font-weight: 700;
  line-height: 1.04;
  margin: 0;
  max-width: 13.5em;
}

#redcafe-acceso .redcafe-acceso-subtitulo {
  color: var(--rc-texto-secundario, #6d5a49);
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .98rem;
  line-height: 1.45;
  margin: .65rem 0 0;
  max-width: 42rem;
}

#redcafe-acceso .redcafe-acceso-acciones {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1rem;
}

#redcafe-acceso .redcafe-acceso-btn {
  align-items: center;
  border-radius: 999px;
  display: inline-flex;
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .92rem;
  font-weight: 800;
  justify-content: center;
  line-height: 1.15;
  min-height: 44px;
  padding: .78rem 1rem;
  text-align: center;
  text-decoration: none;
}

#redcafe-acceso .redcafe-acceso-btn-principal {
  background: var(--rc-negro, #3b2318);
  color: #fff;
}

#redcafe-acceso .redcafe-acceso-btn-secundario {
  background: #fff;
  border: 1px solid rgba(59,35,24, .18);
  color: var(--rc-negro, #3b2318);
}

#redcafe-acceso .redcafe-acceso-pregunta {
  color: var(--rc-negro, #3b2318);
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .86rem;
  font-weight: 850;
  line-height: 1.2;
  margin: 1.25rem 0 .65rem;
}

#redcafe-acceso .redcafe-acceso-grid {
  display: grid;
  gap: .6rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

#redcafe-acceso .redcafe-acceso-card {
  align-items: flex-start;
  background: #fff;
  border: 1px solid rgba(59,35,24, .12);
  border-radius: 12px;
  box-shadow: 0 10px 28px rgba(59,35,24, .06);
  color: var(--rc-texto, #2c1a12);
  display: flex;
  gap: .65rem;
  min-height: 72px;
  min-width: 0;
  padding: 12px;
  text-decoration: none;
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

#redcafe-acceso .redcafe-acceso-card:hover {
  border-color: rgba(212, 137, 63, .58);
  box-shadow: 0 14px 32px rgba(59,35,24, .1);
  transform: translateY(-2px);
}

#redcafe-acceso .redcafe-acceso-icono {
  align-items: center;
  background: rgba(212, 137, 63, .14);
  border-radius: 10px;
  display: inline-flex;
  flex: 0 0 34px;
  font-size: 1.15rem;
  height: 34px;
  justify-content: center;
  line-height: 1;
  width: 34px;
}

#redcafe-acceso .redcafe-acceso-card-texto {
  display: grid;
  gap: .2rem;
  min-width: 0;
}

#redcafe-acceso .redcafe-acceso-card strong {
  color: var(--rc-negro, #3b2318);
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .9rem;
  font-weight: 850;
  line-height: 1.16;
}

#redcafe-acceso .redcafe-acceso-card small {
  color: var(--rc-texto-secundario, #6d5a49);
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .76rem;
  line-height: 1.24;
}

#redcafe-acceso .redcafe-acceso-pie {
  color: var(--rc-texto-secundario, #6d5a49);
  font-family: var(--rc-texto, "DM Sans"), system-ui, sans-serif;
  font-size: .82rem;
  line-height: 1.45;
  margin: .9rem 0 0;
}

#redcafe-acceso .redcafe-acceso-pie a {
  color: var(--rc-oro, #8e5328);
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (min-width: 640px) {
  #redcafe-acceso {
    padding: 36px 24px;
  }
  #redcafe-acceso .redcafe-acceso-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  #redcafe-acceso .redcafe-acceso-card {
    min-height: 86px;
  }
}

@media (max-width: 420px) {
  #redcafe-acceso {
    padding-left: 12px;
    padding-right: 12px;
  }
  #redcafe-acceso .redcafe-acceso-card {
    gap: .5rem;
  }
  #redcafe-acceso .redcafe-acceso-icono {
    flex-basis: 30px;
    height: 30px;
    width: 30px;
  }
}

@media (prefers-reduced-motion: reduce) {
  #redcafe-acceso .redcafe-acceso-card {
    transition: none;
  }
  #redcafe-acceso .redcafe-acceso-card:hover {
    transform: none;
  }
}

body[data-redcafe-route="/"] main > #redcafe-acceso ~ section:not(#redcafe-cifras-red):not(#redcafe-home-price-strip) {
  padding-top: 24px;
  padding-bottom: 24px;
}

@media (min-width: 640px) {
  body[data-redcafe-route="/"] main > #redcafe-acceso ~ section:not(#redcafe-cifras-red):not(#redcafe-home-price-strip) {
    padding-top: 36px;
    padding-bottom: 36px;
  }
}

/* 20260917a fuente del sistema — una sola familia en toda la plataforma.
   Sustituye DM Serif Display + Inter. No cambia tamaños ni colores. */
:root {
  --rc-sistema: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";
  --rc-titulo: var(--rc-sistema);
  --rc-texto: var(--rc-sistema);
  --font-marca: var(--rc-sistema);
  --font-cuerpo: var(--rc-sistema);
  --font-titulo: var(--rc-sistema);
  --font-sans: var(--rc-sistema);
}
html:not(#rc-t1):not(#rc-t2) body,
html:not(#rc-t1):not(#rc-t2) body :is(h1, h2, h3, h4, h5, h6, p, a, span, li, label, strong, b, em, small, div, dt, dd, th, td, button, input, select, textarea, summary, .marca, .font-serif, .font-display, .font-marca) {
  font-family: var(--rc-sistema) !important;
}
/* DM Serif solo tenía peso 400; con la fuente del sistema los títulos necesitan peso. */
html:not(#rc-t1):not(#rc-t2) body :is(h1, h2, h3, .marca, .redcafe-cifra strong) {
  font-weight: 700;
  letter-spacing: -0.01em;
}
html:not(#rc-t1):not(#rc-t2) body :is(code, pre, kbd, .font-mono, .font-ficha) {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important;
}

/* 20260917a iconos de línea en el bloque de acceso */
#redcafe-acceso .redcafe-acceso-icono { color: #b87440; background: rgba(212, 137, 63, .12); }
#redcafe-acceso .redcafe-acceso-icono svg { width: 19px; height: 19px; display: block; }
#redcafe-acceso .redcafe-acceso-card:hover .redcafe-acceso-icono { color: #fff; background: #dda35e; }

/* ═══════════════════════════════════════════════════════════════════════
   20260917 comunidad: botón «Ver más»
   La lista se pinta por tandas de 12; este es el botón que añade la
   siguiente. El aspecto de la línea de tiempo va en el bloque de abajo.
   ═══════════════════════════════════════════════════════════════════════ */
#redcafe-muro .redcafe-muro-vermas {
  background: var(--rce-hoja, #3f6b4a);
  border: 0;
  border-radius: 999px;
  color: #fff;
  cursor: pointer;
  font-size: .85rem;
  font-weight: 700;
  justify-self: center;
  margin-top: .4rem;
  min-height: 2.6rem;
  padding: .6rem 1.7rem;
}
#redcafe-muro .redcafe-muro-vermas:hover { background: #4a6a2c; }
#redcafe-muro .redcafe-muro-vermas:focus-visible { outline: 2px solid var(--rce-hoja); outline-offset: 2px; }

/* ═══════════════════════════════════════════════════════════════════════
   20260917 comunidad en línea de tiempo (estilo X)
   Cada entrada conserva todos sus detalles —título, texto, fotos, enlace,
   me gusta y comentarios—, pero se ve como un hilo: avatar a la izquierda,
   cabecera en una sola línea y una raya fina entre entradas, sin tarjetas.
   ═══════════════════════════════════════════════════════════════════════ */
#redcafe-muro .redcafe-muro-lista { display: block; margin-top: .4rem; }
#redcafe-muro .redcafe-muro-item {
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(59,35,24, .12);
  border-radius: 0;
  display: flex;
  gap: .7rem;
  padding: .85rem .25rem;
}
#redcafe-muro .redcafe-muro-item:hover { background: rgba(59,35,24, .025); }
#redcafe-muro .redcafe-muro-item.es-aviso { background: transparent; border-left: 0; }
#redcafe-muro .redcafe-muro-item.es-aviso:hover { background: rgba(240, 195, 106, .08); }
#redcafe-muro .redcafe-muro-avatar { flex: 0 0 2.5rem; height: 2.5rem; width: 2.5rem; }
#redcafe-muro .redcafe-muro-cuerpo { flex: 1 1 auto; min-width: 0; }
#redcafe-muro .redcafe-muro-cab { align-items: baseline; display: flex; gap: .35rem; }
#redcafe-muro .redcafe-muro-quien {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  min-width: 0;
}
#redcafe-muro .redcafe-muro-autor { font-size: .92rem; font-weight: 700; }
#redcafe-muro .redcafe-muro-meta { display: inline-flex; gap: .35rem; margin-top: 0; }
#redcafe-muro .redcafe-muro-meta time::before { content: "· "; }
#redcafe-muro .redcafe-muro-sello,
#redcafe-muro .redcafe-muro-rol { font-size: .72rem; padding: 0 .4rem; }
#redcafe-muro .redcafe-muro-titulo { font-size: .96rem; margin-top: .25rem; }
#redcafe-muro .redcafe-muro-texto { color: #3f3b34; font-size: .92rem; margin-top: .15rem; }
#redcafe-muro .redcafe-muro-foto {
  border: 1px solid rgba(59,35,24, .12);
  border-radius: .9rem;
  margin-top: .55rem;
  max-height: 20rem;
}
#redcafe-muro .redcafe-muro-enlace { margin-top: .45rem; }
#redcafe-muro .redcafe-muro-pie {
  border-top: 0;
  display: flex;
  gap: 2.2rem;
  margin-top: .35rem;
  max-width: 22rem;
  padding-top: .2rem;
}
#redcafe-muro .redcafe-muro-pie button { font-size: .8rem; min-height: 2.25rem; }
#redcafe-muro .redcafe-muro-comentarios { margin-top: .5rem; padding-top: .5rem; }
#redcafe-muro .redcafe-muro-vermas { display: block; margin: .9rem auto 0; }

@media (max-width: 639px) {
  #redcafe-muro .redcafe-muro-barra {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: .25rem;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  #redcafe-muro .redcafe-muro-barra::-webkit-scrollbar { display: none; height: 0; width: 0; }
  #redcafe-muro .redcafe-muro-filtro { flex: 0 0 auto; min-height: 2.25rem; }
  #redcafe-muro .redcafe-muro-foto { max-height: 15rem; }
}

/* ═══════════════════════════════════════════════════════════════════════
   20260917 respaldos de datos (panel de administración)
   ═══════════════════════════════════════════════════════════════════════ */
#redcafe-admin-respaldos { margin: 1.6rem auto; max-width: 72rem; padding: 0 1rem; }
#redcafe-admin-respaldos .redcafe-resp-h2 { color: var(--rce-cafe); font-family: var(--font-titulo); font-size: 1.15rem; font-weight: 700; }
#redcafe-admin-respaldos .redcafe-resp-intro { color: #6b6459; font-size: .86rem; line-height: 1.5; margin-top: .2rem; }
#redcafe-admin-respaldos .redcafe-resp-estado { background: #fff; border: 1px solid rgba(59,35,24,.13); border-left: 4px solid var(--rce-hoja); border-radius: .6rem; margin-top: .9rem; padding: .9rem 1rem; }
#redcafe-admin-respaldos .redcafe-resp-estado.es-alerta { border-left-color: #b3261e; }
#redcafe-admin-respaldos .redcafe-resp-titulo { color: var(--rce-cafe); font-size: .95rem; font-weight: 700; }
#redcafe-admin-respaldos .redcafe-resp-detalle { color: #6b6459; font-size: .82rem; line-height: 1.5; margin-top: .25rem; }
#redcafe-admin-respaldos .redcafe-resp-acciones { align-items: center; display: flex; flex-wrap: wrap; gap: .7rem; margin-top: .7rem; }
#redcafe-admin-respaldos .redcafe-resp-crear { background: var(--rce-hoja); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .84rem; font-weight: 700; min-height: 2.75rem; padding: .5rem 1.3rem; }
#redcafe-admin-respaldos .redcafe-resp-crear[disabled] { opacity: .6; }
#redcafe-admin-respaldos .redcafe-resp-msg { color: #6b6459; font-size: .82rem; }
#redcafe-admin-respaldos .redcafe-resp-tabla { border-collapse: collapse; margin-top: .9rem; width: 100%; }
#redcafe-admin-respaldos .redcafe-resp-tabla th { color: #6a645b; font-size: .74rem; letter-spacing: .04em; padding: .4rem .5rem; text-align: left; text-transform: uppercase; }
#redcafe-admin-respaldos .redcafe-resp-tabla td { border-top: 1px solid rgba(59,35,24,.1); color: #4a4740; font-size: .85rem; padding: .55rem .5rem; }
#redcafe-admin-respaldos .redcafe-resp-fila-acciones { display: flex; flex-wrap: wrap; gap: .8rem; }
#redcafe-admin-respaldos .redcafe-resp-fila-acciones a { color: var(--rce-hoja); font-weight: 700; text-decoration: none; }
#redcafe-admin-respaldos .redcafe-resp-fila-acciones button { background: transparent; border: 0; color: #b3261e; cursor: pointer; font: inherit; font-size: .85rem; font-weight: 650; min-height: 2.75rem; padding: 0; }
#redcafe-admin-respaldos .redcafe-resp-vacio { color: #6b6459; font-size: .86rem; margin-top: .9rem; }
#redcafe-admin-respaldos .redcafe-resp-ayuda { margin-top: 1rem; }
#redcafe-admin-respaldos .redcafe-resp-ayuda summary { color: var(--rce-cafe); cursor: pointer; font-size: .86rem; font-weight: 700; min-height: 2.75rem; padding: .6rem 0; }
#redcafe-admin-respaldos .redcafe-resp-ayuda p { color: #4a4740; font-size: .84rem; line-height: 1.55; margin-top: .5rem; }
#redcafe-admin-respaldos .redcafe-resp-ayuda code { background: rgba(59,35,24,.06); border-radius: .3rem; font-size: .8rem; padding: .1rem .35rem; word-break: break-all; }

/* 20260917 foto propia en la tarjeta de servicio del marketplace */
.redcafe-servicio-foto { border: 1px solid rgba(59,35,24,.12); border-radius: .6rem; display: block; height: 9rem; margin-bottom: .75rem; object-fit: cover; width: 100%; }

/* 20260917 comunidad: editar lo propio */
#redcafe-muro .redcafe-muro-editar,
#redcafe-muro .redcafe-muro-borrar { background: transparent; border: 0; color: #6b6459; cursor: pointer; font-size: .8rem; font-weight: 650; min-height: 2.25rem; }
#redcafe-muro .redcafe-muro-borrar { color: #b3261e; }
#redcafe-muro .redcafe-muro-editado { color: #6a645b; font-size: .74rem; }
#redcafe-muro .redcafe-muro-editor { display: grid; gap: .45rem; margin-top: .5rem; }
#redcafe-muro .redcafe-muro-editor input,
#redcafe-muro .redcafe-muro-editor textarea { border: 1px solid rgba(59,35,24,.2); border-radius: .5rem; font: inherit; font-size: .9rem; padding: .5rem .7rem; width: 100%; }
#redcafe-muro .redcafe-muro-editar-guardar { background: var(--rce-hoja); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .82rem; font-weight: 700; justify-self: start; min-height: 2.5rem; padding: .45rem 1.2rem; }
#redcafe-muro .redcafe-muro-editar-estado { color: #6b6459; font-size: .78rem; }

/* ═══════════════════════════════════════════════════════════════════════
   20260917 panel del miembro: herramientas al alcance y menos altura
   La barra de atajos es nodo propio (#redcafe-atajos). Lo demás solo baja
   el aire de las secciones del panel; no oculta ni cambia contenido.
   ═══════════════════════════════════════════════════════════════════════ */
#redcafe-atajos { margin: 0 auto; max-width: 72rem; padding: 12px 1rem 4px; }
#redcafe-atajos .redcafe-atajos-rotulo { color: #6a645b; font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
#redcafe-atajos .redcafe-atajos-grid { display: grid; gap: .5rem; grid-template-columns: repeat(3, 1fr); margin-top: .45rem; }
@media (min-width: 640px) { #redcafe-atajos .redcafe-atajos-grid { grid-template-columns: repeat(5, 1fr); } }
@media (min-width: 1024px) { #redcafe-atajos .redcafe-atajos-grid { grid-template-columns: repeat(9, 1fr); } }
#redcafe-atajos .redcafe-atajo {
  align-items: center; background: #fff; border: 1px solid rgba(59,35,24,.12); border-radius: .7rem;
  color: var(--rce-cafe, #3b2318); display: flex; flex-direction: column; gap: .3rem; justify-content: center;
  min-height: 4.4rem; padding: .55rem .35rem; text-align: center; text-decoration: none;
}
#redcafe-atajos .redcafe-atajo:hover { background: rgba(212,137,63,.10); border-color: rgba(212,137,63,.5); }
#redcafe-atajos .redcafe-atajo-icono { align-items: center; background: rgba(212,137,63,.12); border-radius: .5rem; color: #b87440; display: inline-flex; height: 1.9rem; justify-content: center; width: 1.9rem; }
#redcafe-atajos .redcafe-atajo-icono svg { display: block; height: 17px; width: 17px; }
#redcafe-atajos .redcafe-atajo-texto { font-size: .72rem; font-weight: 650; line-height: 1.2; }

/* Menos aire en todas las vistas del panel: se navegaba demasiado. */
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main > section,
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main > div { padding-top: 14px; padding-bottom: 14px; }
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .mt-8 { margin-top: 1rem; }
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .mt-5 { margin-top: .7rem; }
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .space-y-6 > * + * { margin-top: .85rem; }
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .space-y-3 > * + * { margin-top: .5rem; }
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] .redcafe-pub-seccion,
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] .redcafe-empleo-seccion,
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] .redcafe-req-seccion,
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] .redcafe-mis-reportes { padding-top: 10px; padding-bottom: 10px; }
/* Las seis cifras del resumen, en dos columnas y con menos relleno: en móvil
   ocupaban 494 px apiladas y hay que pasar por ellas en cada visita. */
@media (max-width: 639px) {
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .grid.gap-4.sm\:grid-cols-2 { gap: .5rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .grid.gap-4.sm\:grid-cols-2 > .rounded-2xl { padding: .6rem .7rem; }
}
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .rounded-2xl.p-5 { padding: .8rem .9rem; }
html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] main .rounded-2xl.p-4 { padding: .7rem .8rem; }
/* Secciones plegables del panel en una sola línea: rótulo, título y botón
   ocupaban tres renglones cada una (112–200 px × 8 secciones). El contenido
   no cambia: al abrir sigue todo igual. */
@media (max-width: 1023px) {
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] :is(.redcafe-pub-seccion, .redcafe-empleo-seccion, .redcafe-req-seccion, .redcafe-mis-reportes) .redcafe-pub-wrap,
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] :is(.redcafe-empleo-seccion, .redcafe-req-seccion) > .redcafe-empleo-wrap,
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] :is(.redcafe-empleo-seccion, .redcafe-req-seccion) > .redcafe-req-wrap {
    align-items: center;
    column-gap: .6rem;
    display: flex;
    flex-wrap: wrap;
  }
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] :is(.redcafe-pub-seccion, .redcafe-empleo-seccion, .redcafe-req-seccion, .redcafe-mis-reportes) .redcafe-pub-rotulo { display: none; }
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] :is(.redcafe-pub-seccion, .redcafe-empleo-seccion, .redcafe-req-seccion, .redcafe-mis-reportes) :is(.redcafe-pub-titulo, h3, h4) { flex: 1 1 60%; margin: 0; }
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] :is(.redcafe-empleo-seccion, .redcafe-req-seccion) > :is(div, section) > p:not([class*="boton"]) {
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 1;
    display: -webkit-box;
    flex: 1 1 100%;
    margin: 0;
    overflow: hidden;
  }
  html:not(#rc-t1):not(#rc-t2) body[data-redcafe-route^="/panel"] .redcafe-col-boton { margin-top: .35rem; }
}

/* 20260923 ver contraseña */
button.redcafe-ver-clave {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: .55rem;
  color: var(--color-filtrado-500, #8a5a2b);
  cursor: pointer;
  display: flex;
  justify-content: center;
  margin: 0;
  min-height: 44px;
  min-width: 44px;
  padding: 0;
  z-index: 8;
}
button.redcafe-ver-clave svg { display: block; }
button.redcafe-ver-clave .redcafe-ojo-oculto { display: none; }
button.redcafe-ver-clave.redcafe-ver-clave-activa .redcafe-ojo { display: none; }
button.redcafe-ver-clave.redcafe-ver-clave-activa .redcafe-ojo-oculto { display: block; }
button.redcafe-ver-clave:hover { color: var(--color-filtrado-700, #6f4718); }
/* Que el botón flote sobre el borde derecho sin tapar lo escrito en móvil. */
input[type="password"] { padding-right: 3.2rem; }

/* 20260923 visibilidad de publicaciones */
.redcafe-pub-tag-vis { background: #eef4ee; color: #3c6e47; }
.redcafe-pub-visibilidad .redcafe-visibilidad-aviso { display: block; margin: .25rem 0 0; text-transform: none; }

/* 20260923 ficha de un lote de ejemplo: sin contacto, con salida a los reales */
.redcafe-lote-demo-aviso { background: rgba(240,195,106,.14); border-left: 3px solid var(--rce-latte, #f0c36a); border-radius: .5rem; margin-top: 1rem; padding: .9rem 1rem; }
.redcafe-lote-demo-aviso p { color: #4a4740; font-size: .88rem; line-height: 1.5; margin-bottom: .7rem; }

/* 20260923 equivalencia por quintal en las tarjetas del marketplace */
.redcafe-precio-equivalente { color: #6b6459; display: block; font-size: .72rem; font-weight: 600; margin-top: .15rem; text-transform: none; }
.redcafe-precio-equivalente.es-falta { color: #9a6a1c; }
.redcafe-precio-equivalente.es-falta { color: #9a6a1c; }

/* 20260923 cursos: panel del autor */
   Sección de «Mis cursos: estudiantes» en /panel/: tabla de matriculados,
   modo de acceso, filtros, exportar CSV y aviso a inactivos. Móvil primero:
   cada fila es una tarjeta hasta 639 px y otra cosa no debe esperarse de
   quien ve el panel desde un teléfono. La barra de avance va SIN transición
   (la del visor sí la tiene; aquí no — lección aprendida). */
#redcafe-cursos-autor { background: var(--color-crema-oscuro, #efeae1); padding: 2rem 0; }

.redcafe-autor-curso { background: #f7f4ef; border: 1px solid rgba(59,35,24,.12); border-radius: 14px; margin-top: 1.1rem; padding: 1rem; }
.redcafe-autor-curso:first-of-type { margin-top: 1.4rem; }

.redcafe-autor-cab { display: flex; flex-direction: column; gap: .55rem; }
.redcafe-autor-titulo { color: var(--color-filtrado-800, #3b2318); font-size: 1.02rem; font-weight: 800; line-height: 1.25; margin: 0; }

.redcafe-autor-metricas { display: flex; flex-wrap: wrap; gap: .35rem .85rem; }
.redcafe-autor-metrica { color: #4a4740; font-size: .78rem; }
.redcafe-autor-metrica strong { color: var(--color-filtrado-800, #3b2318); }

.redcafe-autor-modo { align-items: center; color: #4a4740; display: flex; flex-wrap: wrap; gap: .4rem; font-size: .8rem; }
.redcafe-autor-modo select { background: #fff; border: 1px solid rgba(59,35,24,.25); border-radius: 8px; color: var(--color-filtrado-800, #3b2318); font: inherit; min-height: 2.75rem; padding: .3rem .5rem; }

.redcafe-autor-estado { display: block; font-size: .78rem; font-weight: 600; margin-top: .2rem; }
.redcafe-autor-estado.is-ok { color: #2f6b3a; }
.redcafe-autor-estado.is-error { color: #9a1f1f; }

.redcafe-autor-barra-acciones { align-items: stretch; display: flex; flex-direction: column; gap: .55rem; margin-top: .9rem; }
.redcafe-autor-filtros { display: flex; flex-wrap: wrap; gap: .35rem; }
.redcafe-autor-filtro { background: transparent; border: 1px solid rgba(59,35,24,.25); border-radius: 999px; color: var(--color-filtrado-800, #3b2318); cursor: pointer; font: inherit; font-size: .78rem; font-weight: 600; min-height: 2.5rem; padding: .25rem .75rem; }
.redcafe-autor-filtro.is-activo { background: var(--color-filtrado-800, #3b2318); color: #f7f4ef; }

.redcafe-autor-curso-botones { display: flex; flex-wrap: wrap; gap: .45rem; }
.redcafe-autor-btn { align-items: center; background: transparent; border: 1px solid rgba(59,35,24,.25); border-radius: 999px; color: var(--color-filtrado-800, #3b2318); cursor: pointer; display: inline-flex; font: inherit; font-size: .78rem; font-weight: 700; justify-content: center; min-height: 2.75rem; padding: .4rem .9rem; text-align: center; text-decoration: none; }
.redcafe-autor-btn:hover { background: rgba(59,35,24,.06); }
.redcafe-autor-btn[disabled] { cursor: progress; opacity: .6; }
.redcafe-autor-btn.es-ok { background: #2f6b3a; border-color: #2f6b3a; color: #f7f4ef; }
.redcafe-autor-btn.es-ok:hover { background: #275a31; }
.redcafe-autor-btn.es-no { background: #9a1f1f; border-color: #9a1f1f; color: #f7f4ef; }
.redcafe-autor-btn.es-no:hover { background: #841b1b; }
.redcafe-autor-btn.es-wa { background: #25d366; border-color: #25d366; color: #222222; }
.redcafe-autor-btn.es-wa:hover { background: #1fc05b; }
.redcafe-autor-btn.es-link { text-decoration: none; }

.redcafe-autor-tabla { display: grid; gap: .55rem; margin-top: .9rem; }
.redcafe-autor-fila { background: #fff; border: 1px solid rgba(59,35,24,.1); border-radius: 12px; box-shadow: 0 1px 2px rgba(59,35,24,.05); display: grid; gap: .45rem .8rem; grid-template-columns: 1fr auto; padding: .75rem; }
.redcafe-autor-quien { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.redcafe-autor-nombre { color: var(--color-filtrado-800, #3b2318); font-size: .9rem; }
.redcafe-autor-perfil, .redcafe-autor-provincia { color: #6b6459; font-size: .74rem; }

.redcafe-autor-chip { align-self: start; border-radius: 999px; font-size: .68rem; font-weight: 700; padding: .15rem .6rem; white-space: nowrap; }
.redcafe-autor-chip.es-pendiente { background: #f5e9d0; color: #8a6114; }
.redcafe-autor-chip.es-matriculado { background: #e2efe4; color: #24532c; }
.redcafe-autor-chip.es-aprobado { background: #d9efe1; color: #1f5b33; }
.redcafe-autor-chip.es-rechazado { background: #f6dfdd; color: #8c2727; }

.redcafe-autor-avance { align-items: center; display: flex; flex-wrap: wrap; gap: .45rem; grid-column: 1 / -1; }
.redcafe-autor-avance .redcafe-avance-barra { flex: 1 1 7rem; }
.redcafe-autor-avance .redcafe-avance-barra span,
.redcafe-autor-avance-barra span { transition: none; }
.redcafe-autor-avance-txt { color: #4a4740; font-size: .74rem; font-weight: 600; white-space: nowrap; }

.redcafe-autor-fecha { color: #6b6459; font-size: .72rem; grid-column: 1 / -1; }

.redcafe-autor-acciones { display: flex; flex-wrap: wrap; gap: .4rem; grid-column: 1 / -1; }

.redcafe-autor-asociados { background: rgba(59,35,24,.035); border: 1px solid rgba(59,35,24,.1); border-radius: 12px; margin-top: .85rem; padding: .75rem; }
.redcafe-autor-asociados h4 { color: var(--color-filtrado-800, #3b2318); font-size: .88rem; font-weight: 800; margin: 0 0 .55rem; }
.redcafe-autor-asociados ul { display: grid; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.redcafe-autor-asociado { align-items: center; background: #fff; border: 1px solid rgba(59,35,24,.08); border-radius: 10px; display: flex; flex-wrap: wrap; gap: .5rem; justify-content: space-between; padding: .55rem; }
.redcafe-autor-asociado span { display: flex; flex-direction: column; gap: .08rem; min-width: 0; }
.redcafe-autor-asociado strong { color: var(--color-filtrado-800, #3b2318); font-size: .82rem; }
.redcafe-autor-asociado small, .redcafe-autor-asociado-vacio { color: #6b6459; font-size: .74rem; }
.redcafe-autor-asociar-form { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: .6rem; }
.redcafe-autor-asociar-form input { background: #fff; border: 1px solid rgba(59,35,24,.22); border-radius: 10px; color: var(--color-filtrado-800, #3b2318); flex: 1 1 16rem; font: inherit; min-height: 2.75rem; padding: .45rem .65rem; }

.redcafe-autor-vacio { color: #6b6459; font-size: .85rem; padding: .4rem 0; }
.redcafe-autor-aviso-contacto { color: #7a7668; font-size: .72rem; margin-top: .7rem; }

/* Curso abierto: la leyenda que acompañó al botón «Empezar gratis». */
.redcafe-curso-consentimiento { color: #6b6459; font-size: .76rem; line-height: 1.45; margin-top: .5rem; max-width: 34rem; }

@media (min-width: 640px) {
  .redcafe-autor-curso { padding: 1.2rem; }
  .redcafe-autor-fila { align-items: center; grid-template-columns: 1.4fr auto 1fr auto; }
  .redcafe-autor-avance, .redcafe-autor-fecha, .redcafe-autor-acciones { grid-column: auto; }
  .redcafe-autor-fecha { min-width: 9rem; }
  .redcafe-autor-acciones { justify-content: flex-end; }
  .redcafe-autor-barra-acciones { align-items: center; flex-direction: row; justify-content: space-between; }
}

/* ═══════════════════════════════════════════════════════════════════════
   20260923 guías paso a paso (panel del miembro)
   ═══════════════════════════════════════════════════════════════════════ */
#redcafe-guias .redcafe-guia-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .7rem; }
#redcafe-guias .redcafe-guia-tab { background: #fff; border: 1px solid rgba(59,35,24,.2); border-radius: 999px; color: #4a4740; cursor: pointer; font-size: .82rem; font-weight: 650; min-height: 2.5rem; padding: .35rem 1rem; }
#redcafe-guias .redcafe-guia-tab.es-activa { background: var(--rce-cafe, #3b2318); border-color: var(--rce-cafe, #3b2318); color: #f7f4ef; }
#redcafe-guias .redcafe-guia-resumen { color: #6b6459; font-size: .86rem; line-height: 1.5; margin-bottom: .8rem; }
#redcafe-guias .redcafe-guia-avance-general { align-items: center; background: rgba(59,35,24,.04); border-radius: .6rem; display: flex; flex-wrap: wrap; gap: .5rem .8rem; margin-bottom: 1rem; padding: .7rem .9rem; }
#redcafe-guias .redcafe-guia-avance-general strong { color: var(--rce-cafe, #3b2318); font-size: 1.15rem; }
#redcafe-guias .redcafe-guia-avance-general span { color: #6b6459; font-size: .8rem; }
#redcafe-guias .redcafe-guia-ficha { background: var(--rce-hoja, #3f6b4a); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .8rem; font-weight: 700; margin-left: auto; min-height: 2.5rem; padding: .45rem 1.1rem; }
#redcafe-guias .redcafe-guia-barra { background: rgba(59,35,24,.12); border-radius: 999px; display: block; flex: 1 1 6rem; height: .4rem; overflow: hidden; }
#redcafe-guias .redcafe-guia-barra span { background: var(--rce-hoja, #3f6b4a); display: block; height: 100%; }
#redcafe-guias .redcafe-guia-etapa { border-top: 1px solid rgba(59,35,24,.12); padding: .55rem 0; }
#redcafe-guias .redcafe-guia-etapa > summary { align-items: center; cursor: pointer; display: flex; gap: .6rem; list-style: none; min-height: 2.75rem; }
#redcafe-guias .redcafe-guia-etapa > summary::-webkit-details-marker { display: none; }
#redcafe-guias .redcafe-guia-etapa-titulo { color: var(--rce-cafe, #3b2318); flex: 1 1 auto; font-size: .92rem; font-weight: 700; }
#redcafe-guias .redcafe-guia-etapa-avance { color: #6a645b; font-size: .78rem; }
#redcafe-guias .redcafe-guia-intro { color: #6b6459; font-size: .84rem; line-height: 1.5; margin: .3rem 0 .6rem; }
#redcafe-guias .redcafe-guia-pasos { display: grid; gap: .7rem; list-style: none; margin: 0; padding: 0; }
#redcafe-guias .redcafe-guia-paso { background: #fff; border: 1px solid rgba(59,35,24,.12); border-radius: .6rem; padding: .7rem .8rem; }
#redcafe-guias .redcafe-guia-paso.es-hecho { background: rgba(63,107,74,.06); border-color: rgba(63,107,74,.35); }
#redcafe-guias .redcafe-guia-check { align-items: flex-start; display: flex; gap: .55rem; }
#redcafe-guias .redcafe-guia-check input { height: 1.5rem; margin-top: .05rem; width: 1.5rem; }
#redcafe-guias .redcafe-guia-check span { color: var(--rce-cafe, #3b2318); font-size: .9rem; font-weight: 700; }
#redcafe-guias .redcafe-guia-revisar { background: rgba(240,195,106,.25); border-radius: 999px; color: #8e5328; display: inline-block; font-size: .7rem; font-weight: 700; margin-top: .3rem; padding: .1rem .5rem; }
#redcafe-guias .redcafe-guia-hacer { color: #3f3b34; font-size: .86rem; line-height: 1.5; margin-top: .4rem; }
#redcafe-guias .redcafe-guia-fijarse,
#redcafe-guias .redcafe-guia-error { color: #4a4740; font-size: .82rem; line-height: 1.45; margin-top: .3rem; }
#redcafe-guias .redcafe-guia-error strong { color: #8e5328; }
#redcafe-guias .redcafe-guia-fuente { color: #6a645b; font-size: .72rem; margin-top: .35rem; }
#redcafe-guias .redcafe-guia-nota { display: block; margin-top: .5rem; }
#redcafe-guias .redcafe-guia-nota span { color: #6b6459; font-size: .75rem; font-weight: 650; }
#redcafe-guias .redcafe-guia-nota textarea { border: 1px solid rgba(59,35,24,.2); border-radius: .45rem; font: inherit; font-size: .85rem; padding: .45rem .6rem; width: 100%; }
#redcafe-guias .redcafe-guia-registro { background: rgba(59,35,24,.035); border-radius: .5rem; margin-top: .6rem; padding: .6rem .7rem; }
#redcafe-guias .redcafe-guia-registro-titulo { color: var(--rce-cafe, #3b2318); font-size: .82rem; font-weight: 700; }
#redcafe-guias .redcafe-guia-registro-campos { display: grid; gap: .45rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: .5rem; }
#redcafe-guias .redcafe-guia-registro-campos label { display: block; }
#redcafe-guias .redcafe-guia-registro-campos span { color: #6b6459; display: block; font-size: .72rem; font-weight: 650; }
#redcafe-guias .redcafe-guia-registro-campos input { border: 1px solid rgba(59,35,24,.2); border-radius: .4rem; font: inherit; font-size: .85rem; min-height: 2.5rem; padding: .35rem .5rem; width: 100%; }
#redcafe-guias .redcafe-guia-registro-acciones { align-items: center; display: flex; gap: .6rem; margin-top: .5rem; }
#redcafe-guias .redcafe-guia-guardar-registro { background: var(--rce-cafe, #3b2318); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .78rem; font-weight: 700; min-height: 2.5rem; padding: .4rem 1rem; }
#redcafe-guias .redcafe-guia-registro-estado { color: #6b6459; font-size: .76rem; }
#redcafe-guias .redcafe-guia-registro-lista { list-style: none; margin: .55rem 0 0; padding: 0; }
#redcafe-guias .redcafe-guia-registro-lista li { align-items: center; border-top: 1px dashed rgba(59,35,24,.15); color: #4a4740; display: flex; font-size: .8rem; gap: .5rem; justify-content: space-between; padding: .35rem 0; }
#redcafe-guias .redcafe-guia-borrar { background: transparent; border: 0; color: #b3261e; cursor: pointer; font-size: .76rem; font-weight: 650; min-height: 2.25rem; }
#redcafe-guias .redcafe-guia-vacio { color: #6a645b; font-size: .8rem; }
#redcafe-guias .redcafe-guia-academia { margin-top: .6rem; }
#redcafe-guias .redcafe-guia-academia a { color: var(--rce-hoja, #3f6b4a); font-size: .82rem; font-weight: 700; text-decoration: none; }
@media (max-width: 480px) {
  #redcafe-guias .redcafe-guia-registro-campos { grid-template-columns: 1fr; }
  #redcafe-guias .redcafe-guia-ficha { margin-left: 0; width: 100%; }
}

/* 20260923 cursos: material adjunto y enlaces */
.redcafe-mat-bloque { border-top: 1px solid rgba(59,35,24,.12); margin-top: 1rem; padding-top: .9rem; }
.redcafe-mat-lista { list-style: none; margin: .6rem 0 0; padding: 0; }
.redcafe-mat-fila { align-items: flex-start; border: 1px solid rgba(59,35,24,.12); border-radius: .5rem; display: flex; gap: .6rem; margin-bottom: .45rem; padding: .55rem .7rem; }
.redcafe-mat-datos { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; }
.redcafe-mat-datos strong { color: var(--rce-cafe, #3b2318); font-size: .88rem; }
.redcafe-mat-datos small { color: #6b6459; font-size: .74rem; word-break: break-all; }
.redcafe-mat-url { color: #6a645b !important; }
.redcafe-mat-quitar { background: transparent; border: 0; color: #b3261e; cursor: pointer; font-size: .78rem; font-weight: 650; min-height: 2.75rem; }
.redcafe-mat-vacio { color: #6b6459; font-size: .84rem; }
.redcafe-mat-alta { display: grid; gap: .45rem; margin-top: .7rem; }
.redcafe-mat-alta input[type="text"], .redcafe-mat-alta input[type="url"] { border: 1px solid rgba(59,35,24,.2); border-radius: .5rem; font: inherit; font-size: .88rem; padding: .5rem .7rem; }
.redcafe-mat-alta button { background: var(--rce-hoja, #3f6b4a); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font-size: .82rem; font-weight: 700; justify-self: start; min-height: 2.75rem; padding: .45rem 1.1rem; }
.redcafe-curso-mat { margin-top: 1.4rem; }
.redcafe-curso-mat ul { list-style: none; margin: .6rem 0 0; padding: 0; }
.redcafe-curso-mat li { border-bottom: 1px solid rgba(59,35,24,.1); padding: .6rem 0; }
.redcafe-curso-mat a { color: var(--rce-hoja, #3f6b4a); font-weight: 700; text-decoration: none; }
.redcafe-curso-mat small { color: #6b6459; display: block; font-size: .8rem; margin-top: .2rem; }
.redcafe-curso-mat-aviso { color: #6b6459; font-size: .86rem; }

/* 20260923 avisos del sistema */
.redcafe-push { align-items: center; background: #fff; border: 1px solid rgba(59,35,24,.14); border-radius: .65rem; box-shadow: 0 1px 2px rgba(59,35,24,.05); color: #3b2318; display: flex; gap: .75rem; justify-content: space-between; margin: .75rem 0; padding: .75rem .85rem; }
.redcafe-push-texto { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }
.redcafe-push-texto strong { color: var(--rce-cafe, #3b2318); font-size: .9rem; line-height: 1.2; }
.redcafe-push-texto span { color: #6b6459; font-size: .78rem; line-height: 1.35; }
.redcafe-push-acciones { align-items: center; display: flex; flex-wrap: wrap; gap: .4rem; justify-content: flex-end; }
.redcafe-push-btn { background: var(--rce-cafe, #3b2318); border: 1px solid var(--rce-cafe, #3b2318); border-radius: 999px; color: #f7f4ef; cursor: pointer; font-size: .75rem; font-weight: 700; min-height: 2.25rem; padding: .35rem .8rem; white-space: nowrap; }
.redcafe-push-btn:hover { filter: brightness(1.08); }
.redcafe-push-btn.es-secundario { background: transparent; color: var(--rce-cafe, #3b2318); }
.redcafe-push-btn[disabled] { cursor: progress; opacity: .6; }
.redcafe-push-ayuda { color: #8e5328; font-size: .74rem; line-height: 1.3; max-width: 13rem; }
.redcafe-push-seccion { margin-bottom: 1rem; }
/* Ya activo: no hace falta un recuadro grande recordándolo en cada visita. */
.redcafe-push.es-activo { background: transparent; border-color: rgba(59,35,24,.10); box-shadow: none; padding: .45rem .6rem; }
.redcafe-push.es-activo .redcafe-push-texto strong { font-size: .8rem; font-weight: 600; }
.redcafe-push.es-activo .redcafe-push-texto span { font-size: .72rem; }
.redcafe-push.es-activo .redcafe-push-btn { background: transparent; color: #6b6459; border-color: rgba(59,35,24,.16); font-weight: 600; min-height: 1.9rem; padding: .25rem .6rem; }
@media (max-width: 760px) {
  .redcafe-push { align-items: flex-start; flex-direction: column; }
  .redcafe-push-acciones { justify-content: flex-start; }
}

/* Advertencia de información referencial (cursos y guías).
   Sobria a propósito: tiene que leerse, no asustar. */
.redcafe-aviso-referencial { background: rgba(138,83,16,.06); border: 1px solid rgba(138,83,16,.22); border-left-width: 3px; border-radius: .5rem; color: #3a3530; margin: 1.25rem 0; padding: .85rem 1rem; }
.redcafe-aviso-referencial strong { color: #8e5328; display: block; font-size: .78rem; letter-spacing: .04em; margin-bottom: .35rem; text-transform: uppercase; }
.redcafe-aviso-referencial p { font-size: .82rem; line-height: 1.5; margin: 0 0 .5rem; }
.redcafe-aviso-referencial p:last-child { margin-bottom: 0; }

/* ═══════════════════════════════════════════════════════════════════════════
   Vidrio esmerilado — los mismos colores oficiales, con profundidad
   ---------------------------------------------------------------------------
   Café #3b2318, crema #f7f4ef, miel #6f4718 y acento #f0c36a no cambian: lo
   que cambia es que las superficies que flotan por encima del contenido dejan
   entrever lo que hay debajo y lo desenfocan. Es lo que hacen hoy iOS, Windows
   y la mayoría de sitios cuidados, y aquí además ayuda: la cabecera marrón
   maciza cortaba la página en dos.

   Tres reglas que me impuse:
   · Solo en lo que flota (cabecera, menús, botones fijos) y en tarjetas
     propias. Nada de aplicarlo a contenedores grandes.
   · Nunca sobre el mapa: `backdrop-filter` crea un bloque de contención y
     Leaflet se descoloca.
   · Si el navegador no lo soporta, todo queda como estaba (opaco y legible).
     Por eso el color sólido va primero y la versión traslúcida dentro de
     @supports.
   ═══════════════════════════════════════════════════════════════════════════ */

@supports ((backdrop-filter: blur(12px)) or (-webkit-backdrop-filter: blur(12px))) {

  /* Cabecera: de marrón macizo a marrón con fondo. El texto crema sobre
     rgba(59,35,24,.72) mantiene contraste AA de sobra. */
  /* Ojo con la especificidad: ya existía una regla
     `html:not(#rc-t1):not(#rc-t2) body header` con !important que dejaba la
     cabecera al 96 % y un desenfoque de 6px. Sin igualar ese prefijo, esto no
     se aplicaba y el desenfoque no se veía. */
  html:not(#rc-t1):not(#rc-t2) body > header.sticky {
    /* .80 y no menos: medido, al 72 % el dorado de «Precios» caía a 3,92:1
       sobre fondo claro y la norma pide 4,5:1. Al 80 % sube a 5,14:1 y el
       desenfoque se sigue viendo perfectamente. */
    background-color: rgba(59,35,24, .80) !important;
    -webkit-backdrop-filter: blur(18px) saturate(150%) !important;
    backdrop-filter: blur(18px) saturate(150%) !important;
    border-bottom-color: rgba(247, 240, 223, .14);
  }

  /* Paneles y menús que se abren por encima de la página.
     El menú móvil llevaba texto claro (rgba(247,240,223,.9)) por diseño: al
     ponerle este mismo cristal claro, texto y fondo casi coinciden.
     Medido: contraste 1,09:1, muy por debajo del mínimo 4,5:1 — el menú se
     abría pero no se leía nada. Se le da su propio cristal oscuro. */
  .redcafe-notif-panel {
    background-color: rgba(251, 250, 247, .82);
    -webkit-backdrop-filter: blur(18px) saturate(160%);
    backdrop-filter: blur(18px) saturate(160%);
    border: 1px solid rgba(59,35,24, .10);
  }
  .redcafe-mobile-menu {
    background-color: rgba(59,35,24, .92) !important;
    -webkit-backdrop-filter: blur(18px) saturate(160%);
    backdrop-filter: blur(18px) saturate(160%);
    border-top: 1px solid rgba(247, 240, 223, .18) !important;
  }

  /* Botones fijos: la campana, el de reportar y la taza de la comunidad. */
  .redcafe-notif-fab,
  .redcafe-rep-fab {
    -webkit-backdrop-filter: blur(10px) saturate(140%);
    backdrop-filter: blur(10px) saturate(140%);
  }
  div.fixed.bottom-5.right-5[data-redcafe-propio="1"] > a {
    background-color: rgba(20, 20, 15, .78) !important;
    -webkit-backdrop-filter: blur(12px) saturate(150%);
    backdrop-filter: blur(12px) saturate(150%);
  }

  /* Tarjetas propias: un velo, no un cristal. Si se pasa, el texto pierde
     nitidez sobre fotos de café. */
  #redcafe-acceso .redcafe-acceso-card,
  .redcafe-atajos-grid > a,
  .redcafe-pub-seccion,
  .redcafe-push,
  .redcafe-panel-next-card,
  .redcafe-panel-order-card,
  .redcafe-panel-resource-card,
  .redcafe-mis-card,
  .redcafe-pub-card,
  .redcafe-service-card,
  .redcafe-curso-card,
  .redcafe-empleo-card,
  .redcafe-ped-card {
    background-color: rgba(251, 250, 247, .60);
    -webkit-backdrop-filter: blur(14px) saturate(150%);
    backdrop-filter: blur(14px) saturate(150%);
  }

  /* La tarjeta verde de acción recomendada mantiene SU verde (#1f3324), solo
     algo traslúcido. Antes le puse pizarra y se comió el color de la marca. */
  .redcafe-panel-next-card.is-primary {
    background-color: rgba(31, 51, 36, .88);
  }

  /* El aviso referencial también, para que se integre. */
  .redcafe-aviso-referencial {
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
  }

  /* Excepción explícita: el mapa y lo que va dentro, intactos. */
  .leaflet-container,
  .leaflet-container * {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
}

/* Quien pide menos movimiento suele pedirlo por mareo o por batería: se deja
   el color, se quita el desenfoque. */
@media (prefers-reduced-transparency: reduce) {
  header.sticky { background-color: #3b2318 !important; }
  .redcafe-notif-panel,
  #redcafe-acceso .redcafe-acceso-card, .redcafe-atajos-grid > a,
  .redcafe-pub-seccion, .redcafe-push, .redcafe-panel-next-card {
    background-color: #f7f4ef !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
  .redcafe-mobile-menu {
    background-color: #3b2318 !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════════════
   Profundidad: lo que hace que la transparencia se VEA
   ---------------------------------------------------------------------------
   Primer intento fallido y por qué: puse las superficies traslúcidas sobre un
   fondo de color plano. Una tarjeta al 74 % sobre un plano crema se ve igual
   que una opaca: no hay nada detrás que dejar entrever. El efecto estaba
   aplicado y era invisible.

   Lo que hacen los sitios actuales no es «poner transparencia»: es poner algo
   DEBAJO y dejar que se insinúe. Aquí eso son dos manchas de luz muy suaves en
   los tonos de la marca —miel y hoja— fijas al fondo, y el filo claro de 1px
   en el borde superior de cada superficie, que es lo que lee el ojo como
   «cristal».
   ═══════════════════════════════════════════════════════════════════════════ */

/* El fondo animado: el video de la portada
   ---------------------------------------------------------------------------
   El mismo video que ya se ve en la portada, ahora de fondo en todo el sitio.
   La portada no se toca: sigue con el suyo, en su calidad original.

   Dos cosas costaron encontrarse y conviene dejarlas escritas:

   1. Una capa en `z-index: -1` NO se ve en este documento. Se probó con rojo
      puro y no aparecía. Hay que ponerla en 0 y subir el contenido a 1. A la
      cabecera no se le toca: es `sticky` y darle `position: relative` la
      rompería; ya está por encima con su propio z-index.
   2. El `<main>` pintaba un degradado crema al 96 % sobre todo el contenido y
      enterraba cualquier cosa detrás. Se levanta más abajo, dentro de
      @supports, para que un navegador viejo siga viendo lo de siempre.

   El archivo es la versión ligera (480x270, 10 fps, 259 KB frente a 1,6 MB):
   va desenfocado, con un velo encima y detrás de las tarjetas, así que la
   resolución no aporta nada y el ahorro sí. */
html:not(#rc-t1):not(#rc-t2) { background-color: #f6f1e8; }
html:not(#rc-t1):not(#rc-t2) body { background-color: transparent !important; }

#redcafe-video-fondo {
  background-position: center;
  background-size: cover;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  position: fixed;
  z-index: 0;
}

/* El contenido, por encima del fondo. La cabecera queda fuera a propósito. */
html:not(#rc-t1):not(#rc-t2) body > main,
html:not(#rc-t1):not(#rc-t2) body > footer,
/* Los paneles flotantes propios cuelgan del <body> y llevan su propio
   `position: fixed`. Esta regla, pensada para levantar el contenido sobre el
   video, se los llevaba por delante: medido el 24/09/2026, al pulsar la campana
   el panel de avisos aparecia en `position: relative` a 7439 px del inicio, es
   decir, fuera de la pantalla. Parecia que no abria. Se excluyen por id. */
html:not(#rc-t1):not(#rc-t2) body > div:not(#redcafe-video-fondo):not([class*="fixed"]):not(#redcafe-avisos-panel):not(#redcafe-notif-panel):not(#redcafe-mobile-menu):not(#redcafe-reportes-root):not([data-redcafe-flotante]) {
  position: relative;
  z-index: 1;
}

#redcafe-video-fondo video {
  filter: blur(7px) saturate(115%);
  height: 100%;
  left: 0;
  object-fit: cover;
  position: absolute;
  top: 0;
  transform: scale(1.06);   /* tapa el borde que deja el desenfoque */
  width: 100%;
}

/* El velo. Sin él, un video a todo color detrás del texto es ilegible. */
#redcafe-video-fondo::after {
  /* .84 y no menos: medido contra un fotograma negro del video detrás del
     texto. Al .62 el gris secundario caía a 3,68:1, por debajo del mínimo de
     4,5. Al .84 queda en 4,61:1 y el video se sigue viendo. */
  background: rgba(246, 241, 232, .84);
  content: "";
  inset: 0;
  position: absolute;
  z-index: 1;
}

/* Si el navegador no deja reproducir solo, o el visitante pide menos
   movimiento, o el teléfono está en ahorro de datos: queda el póster quieto.
   Ojo: esto NO debe tocar la opacidad de la capa, que fue justo el error que
   dejó todo el fondo al 5 % sin que se notara por qué. */
#redcafe-video-fondo.es-quieto {
  background-image: url("/video/transformacion-poster.webp");
  filter: blur(7px) saturate(115%);
}
#redcafe-video-fondo.es-quieto video { display: none; }

@supports ((backdrop-filter: blur(12px)) or (-webkit-backdrop-filter: blur(12px))) {

  /* Las tarjetas del marketplace, la academia y los servicios son de React
     (clases bg-crema / bg-white de Tailwind). Mis reglas anteriores solo
     tocaban las mías, por eso ahí no se notaba nada. Se hace por CSS: no se
     toca el árbol de React. */
  html:not(#rc-t1):not(#rc-t2) body main :is(.bg-crema, .bg-white):not(.leaflet-container):not(.leaflet-container *):not(button):not(a):not(input):not(select):not(textarea):not(label) {
    background-color: rgba(251, 250, 247, .55) !important;
    -webkit-backdrop-filter: blur(16px) saturate(155%);
    backdrop-filter: blur(16px) saturate(155%);
  }

  /* El filo de cristal: una línea clara arriba y una sombra suave abajo. Es el
     detalle pequeño que separa «traslúcido» de «con cristal delante». */
  html:not(#rc-t1):not(#rc-t2) body main :is(.bg-crema, .bg-white):not(.leaflet-container):not(.leaflet-container *):not(button):not(a):not(input):not(select):not(textarea):not(label),
  #redcafe-acceso .redcafe-acceso-card,
  .redcafe-atajos-grid > a,
  .redcafe-pub-seccion,
  .redcafe-push,
  .redcafe-panel-next-card,
  .redcafe-panel-order-card,
  .redcafe-panel-resource-card,
  .redcafe-mis-card,
  .redcafe-pub-card,
  .redcafe-service-card,
  .redcafe-curso-card,
  .redcafe-empleo-card,
  .redcafe-ped-card {
    border-color: rgba(255, 255, 255, .55);
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, .75),
      0 1px 2px rgba(59,35,24, .05),
      0 8px 24px -12px rgba(59,35,24, .22);
  }

  /* Aquí había una regla que buscaba «rounded-2xl» o «rounded-xl» por
     coincidencia de texto en el atributo class. Se pasaba de largo: alcanzaba
     botones de los módulos de un curso y los pasos de las recetas, que
     quedaban con desenfoque sin motivo. Retirada: el cristal se aplica en la
     regla de tarjetas de abajo, que es la que corresponde. */

  /* ESTA era la causa de que no se viera NADA del ambiente:
     `main { background: linear-gradient(... .96 ... .98 ...) }`, de la fase 2,
     pinta una lámina crema casi opaca sobre toda el área de contenido. Todo lo
     que se pusiera detrás quedaba enterrado, incluido un rojo puro (probado).
     Aquí se levanta esa lámina; fuera de @supports sigue intacta, así que un
     navegador viejo ve exactamente lo de antes. */
  html:not(#rc-t1):not(#rc-t2) body main {
    background: transparent !important;
  }

  /* Y el mapa, fuera de todo esto, otra vez y explícito. */
  .leaflet-container,
  .leaflet-container *,
  .leaflet-pane,
  .leaflet-pane * {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    box-shadow: none;
  }
}

@media (prefers-reduced-transparency: reduce) {
  #redcafe-video-fondo { display: none; }
  html:not(#rc-t1):not(#rc-t2) { background-color: #f6f1e8; }
  html:not(#rc-t1):not(#rc-t2) body main :is(.bg-crema, .bg-white):not(button):not(a):not(input):not(select):not(textarea):not(label) {
    background-color: #f7f4ef !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════════════
   Una sola versión de cada pantalla
   ---------------------------------------------------------------------------
   El problema: en /academia/ y en la ficha de un curso convivían DOS versiones
   —la de React y la nuestra—. React pinta enseguida; nuestros scripts van con
   `defer` y tardan. El usuario veía la de React y, medio segundo después, cómo
   cambiaba por la nuestra. Ocultarla desde JavaScript no llegaba a tiempo.

   La marca `data-rc-vista` la pone un script de dos líneas en la cabecera, que
   corre ANTES del primer pintado. Con eso, la versión de React ya nace oculta y
   no llega a verse nunca.

   Red de seguridad: ese mismo script retira la marca a los 5 segundos si
   nuestra capa no ha aparecido. Si nuestro JavaScript fallara, la página vuelve
   a mostrarse tal como la sirve React en vez de quedarse en blanco.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-rc-vista="curso"] body > main > *:not([data-redcafe-propio]) {
  display: none !important;
}

/* La tabla y el gráfico React quedan como respaldo cuando el histórico propio
   no carga. Con datos del histórico se muestra un solo gráfico. */
main[data-redcafe-precio-propio="listo"] [data-precios-respaldo] {
  display: none;
}

/* ===== Fusión: menú móvil propio en las rutas donde React ya no arranca ===== */
html:not(#rc-t1):not(#rc-t2) header details.redcafe-more.redcafe-menu-abierto {
  display: block !important;
  position: absolute !important;
  top: 100% !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 60 !important;
  max-height: 70vh !important;
  overflow-y: auto !important;
  background-color: rgba(59,35,24, .98) !important;
  border-top: 1px solid rgba(240, 230, 214, .22) !important;
  padding: .75rem 1rem 1.25rem !important;
}
html:not(#rc-t1):not(#rc-t2) header details.redcafe-more.redcafe-menu-abierto .redcafe-more-menu a {
  display: block !important;
  padding: .6rem .25rem !important;
  color: #F0E6D6 !important;
  border-bottom: 1px solid rgba(240, 230, 214, .12) !important;
}

/* ===== Un solo marco para las imágenes que suben los miembros =====
   Medido el 24/09/2026: un servicio publicado con una foto de 1024x1535
   estiraba su tarjeta y rompía la retícula. Ninguna imagen de miembro puede
   decidir el alto de su contenedor: se encuadra en 16/9 y se recorta al
   centro. Vale también para las que ya estaban subidas. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-lote-foto,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-servicio-foto,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-card-portada,
html:not(#rc-t1):not(#rc-t2) body main img[src^="/uploads/user-content/"],
html:not(#rc-t1):not(#rc-t2) body main img[src^="/uploads/"] {
  display: block;
  width: 100%;
  max-width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  max-height: 22rem;
  object-fit: cover;
  object-position: center;
  background-color: rgba(59,35,24, .06);
}
/* En el muro y en la ficha de un servicio la foto puede ser más alta, pero
   nunca libre: se limita por altura y se mantiene la proporción. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-muro img[src^="/uploads/"],
html:not(#rc-t1):not(#rc-t2) body main .redcafe-servicio-detalle img[src^="/uploads/"] {
  aspect-ratio: auto;
  max-height: 26rem;
  width: auto;
  object-fit: contain;
}

/* La portada se repite en la ficha del curso: es la imagen que el miembro
   acaba de ver en la tarjeta, y sin ella la ficha abría sin referencia visual. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-portada {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 24rem;
  object-fit: cover;
  object-position: center;
  border-radius: .7rem;
  margin: 0 0 1.1rem;
  background-color: rgba(59,35,24, .06);
}

/* ===== Respuesta al pedir matrícula =====
   Medido el 24/09/2026: la confirmación salía en 13 px, peso 400 y gris, en una
   línea de 19 px bajo el botón, que seguía diciendo «Pedir matrícula». Se leía
   como letra pequeña y no como respuesta. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-estado.is-ok,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-estado.is-error {
  display: block;
  margin: .9rem 0 0;
  padding: .75rem .9rem;
  border-radius: .55rem;
  border-left: 4px solid;
  font-size: .95rem !important;
  font-weight: 600 !important;
  line-height: 1.45;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-estado.is-ok {
  background-color: #DCF5E3;   /* 7,91:1 con el texto */
  border-left-color: #2F7D46;
  color: #14532D;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-estado.is-error {
  background-color: #FDE8E8;
  border-left-color: #B42318;
  color: #7F1D1D;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-matricular.es-pedida {
  opacity: .75;
  cursor: default;
}

/* Botón de salir propio en la cabecera, para las rutas donde React no arranca. */
html:not(#rc-t1):not(#rc-t2) header .redcafe-salir {
  background: transparent;
  border: 1px solid rgba(240, 230, 214, .38);
  border-radius: 999px;
  color: #F0E6D6;            /* 11,4:1 sobre el café #3b2318 de la cabecera */
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  margin-left: .55rem;
  min-height: 2.2rem;
  padding: .35rem .8rem;
  white-space: nowrap;
}
html:not(#rc-t1):not(#rc-t2) header .redcafe-salir:hover {
  border-color: rgba(240, 230, 214, .7);
}
html:not(#rc-t1):not(#rc-t2) header .redcafe-salir[disabled] { opacity: .6; cursor: default; }

/* Aviso de sesión ausente en el panel. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-panel-sinsesion {
  margin: .9rem 0 0;
  padding: .75rem .9rem;
  border-radius: .55rem;
  border-left: 4px solid #C4914A;
  background-color: #FBF1DE;    /* con el texto #25221f: 9,1:1 */
  color: #25221f;
  font-size: .95rem;
  line-height: 1.5;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-panel-sinsesion a {
  color: #6f4718;
  font-weight: 700;
  text-decoration: underline;
}

/* ===== 20260924 panel perdido: ficha del miembro recuperada ===== */
.redcafe-perfil {
  box-sizing: border-box;
  color: #3b2318;
  margin: 0 auto;
  max-width: 72rem;
  padding: .75rem 1rem .4rem;
  width: 100%;
}
.redcafe-perfil *,
.redcafe-perfil *::before,
.redcafe-perfil *::after { box-sizing: border-box; }
.redcafe-perfil-wrap {
  background: #FFFDF9;
  border: 1px solid rgba(59,35,24, .16);
  border-radius: 8px;
  box-shadow: 0 14px 36px rgba(59,35,24, .08);
  display: grid;
  gap: .9rem;
  padding: 1rem;
}
.redcafe-perfil-head {
  align-items: start;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
}
.redcafe-perfil-rotulo {
  color: #6C4A2F;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .11em;
  margin: 0 0 .25rem;
  text-transform: uppercase;
}
.redcafe-perfil h2 {
  color: #3b2318;
  font-size: 1.45rem;
  font-weight: 800;
  line-height: 1.2;
  margin: 0;
}
.redcafe-perfil-meta {
  color: #25221f;
  font-size: .95rem;
  line-height: 1.45;
  margin: .4rem 0 0;
}
.redcafe-perfil-top-actions {
  align-items: flex-end;
  display: flex;
  flex-direction: column;
  gap: .45rem;
}
/* Fila "Perfil activo" + chip, como en la referencia (Perfil activo / <Rol> · principal),
   no un unico distintivo inventado. */
.redcafe-perfil-fila-activo {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin: .9rem 0 0;
}
.redcafe-perfil-rotulo-activo {
  color: rgba(58, 53, 48, .68);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.redcafe-perfil-chip {
  background: #3b2318;
  border-radius: 999px;
  color: #F0E6D6;             /* 12,69:1 */
  font-size: .74rem;
  font-weight: 700;
  padding: .3rem .75rem;
  white-space: nowrap;
}
.redcafe-perfil-chat,
.redcafe-perfil-chat-card a,
.redcafe-perfil-accion {
  text-decoration: none;
}
.redcafe-perfil-chat {
  align-items: center;
  background: #DEB26E;
  border: 1px solid rgba(59,35,24, .18);
  border-radius: 7px;
  color: #3b2318;
  display: inline-flex;
  font-size: .9rem;
  font-weight: 800;
  min-height: 2.45rem;
  padding: .45rem .8rem;
}
.redcafe-perfil-selector {
  align-items: center;
  background: #F0E6D6;
  border: 1px solid rgba(59,35,24, .16);
  border-radius: 7px;
  color: #3b2318;
  display: flex;
  gap: .65rem;
  justify-content: space-between;
  padding: .65rem .75rem;
}
.redcafe-perfil-selector span {
  color: #25221f;
  font-size: .82rem;
  font-weight: 750;
}
.redcafe-perfil-selector select {
  background: #FFFDF9;
  border: 1px solid rgba(59,35,24, .28);
  border-radius: 6px;
  color: #3b2318;
  font: inherit;
  min-height: 2.35rem;
  min-width: min(16rem, 100%);
  padding: .35rem .5rem;
}
.redcafe-perfil-tabs {
  background: #F0E6D6;
  border: 1px solid rgba(59,35,24, .14);
  border-radius: 7px;
  display: grid;
  gap: .25rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  padding: .25rem;
}
.redcafe-perfil-tabs button {
  background: transparent;
  border: 0;
  border-radius: 5px;
  color: #25221f;
  cursor: pointer;
  font: inherit;
  font-size: .84rem;
  font-weight: 800;
  min-height: 2.3rem;
  padding: .45rem .35rem;
}
.redcafe-perfil-tabs button.is-active {
  background: #3b2318;
  color: #F0E6D6;
}
.redcafe-perfil-tabpanels {
  display: grid;
  gap: .75rem;
}
.redcafe-perfil-tabpanel {
  background: #FBF7EF;
  border: 1px solid rgba(59,35,24, .12);
  border-radius: 7px;
  color: #25221f;
  font-size: .92rem;
  line-height: 1.5;
  padding: .75rem .85rem;
}
.redcafe-perfil-tabpanel p { margin: 0; }
.redcafe-perfil-chat-card {
  align-items: center;
  background: #3b2318;
  border-radius: 8px;
  color: #F0E6D6;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  padding: .9rem;
}
.redcafe-perfil-chat-card p {
  color: #F0E6D6;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .08em;
  margin: 0 0 .25rem;
  text-transform: uppercase;
}
.redcafe-perfil-chat-card span {
  color: #F0E6D6;
  display: block;
  font-size: .92rem;
  line-height: 1.45;
}
.redcafe-perfil-chat-card a {
  background: #7A9E56;
  border-radius: 7px;
  color: #101A0C;
  flex: 0 0 auto;
  font-size: .88rem;
  font-weight: 850;
  min-height: 2.45rem;
  padding: .62rem .8rem;
}
.redcafe-perfil-grid {
  display: grid;
  gap: .55rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.redcafe-perfil-accion {
  background: #FFFDF9;
  border: 1px solid rgba(59,35,24, .18);
  border-radius: 7px;
  color: #3b2318;
  display: flex;
  flex-direction: column;
  gap: .2rem;
  min-height: 4.4rem;
  padding: .75rem;
}
.redcafe-perfil-accion:hover {
  border-color: rgba(122, 158, 86, .72);
  box-shadow: 0 8px 18px rgba(59,35,24, .08);
}
.redcafe-perfil-accion span {
  color: #3b2318;
  font-size: .9rem;
  font-weight: 850;
  line-height: 1.25;
}
.redcafe-perfil-accion small {
  color: #25221f;
  font-size: .75rem;
  line-height: 1.25;
}
@media (min-width: 720px) {
  .redcafe-perfil-wrap { padding: 1.15rem; }
  .redcafe-perfil-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 1040px) {
  .redcafe-perfil-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .redcafe-perfil { padding-left: .75rem; padding-right: .75rem; }
  .redcafe-perfil-head,
  .redcafe-perfil-chat-card,
  .redcafe-perfil-selector {
    align-items: stretch;
    flex-direction: column;
  }
  .redcafe-perfil-top-actions { align-items: flex-start; }
  .redcafe-perfil-tabs { grid-template-columns: 1fr; }
  .redcafe-perfil-grid { grid-template-columns: 1fr; }
  .redcafe-perfil-selector select { width: 100%; }
}

/* El gancho del curso en su tarjeta: la frase que dice para qué sirve.
   Texto #3b2318 sobre la tarjeta crema #FBF7F0 → 14,6:1. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-card-gancho {
  margin: .35rem 0 .2rem;
  color: #3b2318;
  font-size: .93rem;
  font-weight: 700;
  line-height: 1.35;
}

/* Comunidad: recupera el max-w-3xl/px-4 que tenia la referencia.
   Contrastes:
   - texto #2c1a12 sobre #f7f4ef = 16,41:1
   - texto #3b2318 sobre #DEB26E = 7,99:1 */
body[data-redcafe-route="/comunidad/"] main > #redcafe-muro {
  box-sizing: border-box;
  color: #2c1a12;
  margin: 1.25rem auto 2.75rem;
  max-width: 48rem;
  padding-left: 1rem;
  padding-right: 1rem;
}

body[data-redcafe-route="/comunidad/"] main > #redcafe-muro .redcafe-muro-barra {
  background: #f7f4ef;
  border: 1px solid rgba(59,35,24, .12);
  border-radius: .7rem;
  padding: .55rem;
}

body[data-redcafe-route="/comunidad/"] main > #redcafe-muro .redcafe-muro-filtro.is-activo {
  background: #DEB26E;
  border-color: #DEB26E;
  color: #3b2318;
}

/* Academia y fichas: la capa propia ya reconstruye tarjetas y reticulas.
   Solo se evita una union brusca entre el hueco de titulo y la seccion propia.
   Contraste #3b2318 sobre #7A9E56 = 5,12:1 cuando se usa hoja como acento. */
body[data-redcafe-route="/academia/"] main > .redcafe-academia-avance,
body[data-redcafe-route^="/academia/"] main > .redcafe-curso {
  border-top: 1px solid rgba(59,35,24, .12);
}

body[data-redcafe-route="/academia/"] main .redcafe-curso-card:focus-visible,
body[data-redcafe-route^="/academia/"] main .redcafe-curso-matricular:focus-visible,
body[data-redcafe-route^="/academia/"] main .redcafe-leccion-check:focus-within {
  outline: 3px solid #7A9E56;
  outline-offset: 3px;
}

/* ===== Etiqueta de costo de los cursos ===== */
/* Verde #0F3D1E sobre #C8E6CE (gratis) = 8,86:1. Café #3b2318 sobre oro
   #DEB26E (pago) = 7,99:1. Calculado, ambos por encima de 4,5:1. */
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-etiqueta {
  margin-right: .4rem;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo-ficha {
  display: inline-block;
  padding: .18rem .55rem;
  border-radius: 999px;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .02em;
  white-space: nowrap;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo-ficha {
  font-size: .8rem;
  margin: 0 0 .6rem;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo.es-gratis,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo-ficha.es-gratis {
  background-color: #C8E6CE;
  color: #0F3D1E;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo.es-pago,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo-ficha.es-pago {
  background-color: #DEB26E;
  color: #3b2318;
}
html:not(#rc-t1):not(#rc-t2) body main .redcafe-curso-costo.es-pago {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
  border-radius: .7rem;
}

/* ===== Tarjeta CTA de /comunidad/: separada del subtítulo, como en el original ===== */
/* Café #3b2318 sobre crema #F0E6D6 = 12,69:1. Enlace café-oscuro subrayado. */
body[data-redcafe-route="/comunidad/"] main .redcafe-comunidad-cta {
  max-width: 42rem;
  margin: 1.1rem auto 0;
  padding: .9rem 1.1rem;
  border: 1px solid rgba(59,35,24, .16);
  border-radius: .6rem;
  background-color: rgba(255, 255, 255, .45);
}
body[data-redcafe-route="/comunidad/"] main .redcafe-comunidad-cta h3 {
  margin: 0 0 .3rem;
  font-size: 1.05rem;
  font-weight: 800;
  color: #3b2318;
}
body[data-redcafe-route="/comunidad/"] main .redcafe-comunidad-cta p {
  margin: 0 0 .8rem;
  font-size: .92rem;
  color: #25221f;
}
body[data-redcafe-route="/comunidad/"] main .redcafe-comunidad-cta-boton {
  display: inline-block;
  padding: .55rem 1.1rem;
  border-radius: .5rem;
  background-color: #3b2318;
  color: #F0E6D6;             /* 12,69:1 */
  font-weight: 700;
  font-size: .88rem;
  text-decoration: none;
}
body[data-redcafe-route="/comunidad/"] main .redcafe-comunidad-cta-boton:hover {
  background-color: #25221f;
}

/* ===== 20260925 esqueletos de carga para capa propia ===== */
html:not(#rc-t1):not(#rc-t2) body > header img[src*="/img/bandera-ecuador-"] {
  aspect-ratio: 3 / 2;
  display: inline-block;
  flex: 0 0 1.25rem;
  height: .875rem;
  max-width: 1.25rem;
  min-width: 1.25rem;
  object-fit: contain;
  width: 1.25rem;
}

html:not(#rc-t1):not(#rc-t2) body main [data-redcafe-propio="1"] .redcafe-skeleton,
html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton[data-redcafe-propio="1"] {
  color: transparent;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  width: 100%;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-lista {
  display: grid;
  gap: .8rem;
  width: 100%;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-card {
  background: var(--color-surface, #fff);
  border: 1px solid var(--color-border-soft, #E8E1D8);
  border-radius: 0;
  box-sizing: border-box;
  display: grid;
  gap: .65rem;
  min-height: 10.5rem;
  padding: 1rem;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-bloque {
  animation: redcafeSkeletonPulse 1.5s ease-in-out infinite;
  background: linear-gradient(90deg, rgba(232, 225, 216, .72), rgba(251, 250, 247, .96), rgba(232, 225, 216, .72));
  background-size: 220% 100%;
  border: 1px solid var(--color-border-soft, #E8E1D8);
  border-radius: 0;
  display: block;
  min-height: .85rem;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-media {
  aspect-ratio: 16 / 9;
  min-height: 8.5rem;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-portada {
  aspect-ratio: 16 / 7;
  min-height: 13rem;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-linea {
  height: .95rem;
  width: 100%;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-linea.titulo {
  height: 1.8rem;
  max-width: 34rem;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-linea.intro {
  max-width: 42rem;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-linea.media {
  max-width: 72%;
}

html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-linea.corta {
  max-width: 42%;
}

@keyframes redcafeSkeletonPulse {
  0% { background-position: 0% 50%; opacity: .72; }
  50% { background-position: 100% 50%; opacity: 1; }
  100% { background-position: 0% 50%; opacity: .72; }
}

@media (prefers-reduced-motion: reduce) {
  html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-bloque {
    animation: none;
  }
}

@media (max-width: 640px) {
  html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-grid {
    grid-template-columns: 1fr;
  }
  html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-card {
    min-height: 9rem;
  }
  html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-media {
    min-height: 7.5rem;
  }
  html:not(#rc-t1):not(#rc-t2) body main .redcafe-skeleton-portada {
    min-height: 10rem;
  }
}

/* Academia: beneficio visible en portada y acceso externo independiente del curso libre. */
body[data-redcafe-route="/academia/"] main .redcafe-curso-card { position: relative; }
body[data-redcafe-route="/academia/"] main .redcafe-curso-card-grupo { display: flex; flex-direction: column; min-width: 0; }
body[data-redcafe-route="/academia/"] main .redcafe-curso-card-grupo > .redcafe-curso-card { flex: 1; }
body[data-redcafe-route="/academia/"] main .redcafe-curso-portada-sello {
  position: absolute; top: .8rem; left: .8rem; right: .8rem; width: fit-content; max-width: calc(100% - 1.6rem);
  padding: .4rem .7rem; border-radius: .45rem; background: #3b2318; color: #FFF7E8;
  font-size: .78rem; font-weight: 750; line-height: 1.3; letter-spacing: .01em;
  box-shadow: 0 2px 10px rgba(0,0,0,.18);
}
body[data-redcafe-route="/academia/"] main .redcafe-curso-card > .redcafe-curso-portada-sello { margin: 0; }
body main .redcafe-curso-demo {
  display: flex; justify-content: space-between; align-items: center; gap: .75rem;
  margin: .7rem 0 0; padding: .8rem 1rem; border-radius: .6rem;
  background: #154F2C; color: #FFFFFF; font-size: .9rem; font-weight: 750;
  text-decoration: none; box-shadow: 0 3px 12px rgba(21,79,44,.17);
}
body main .redcafe-curso-demo:hover { background: #0D3C20; color: #FFFFFF; }
body main .redcafe-curso-demo:focus-visible { outline: 3px solid #DEB26E; outline-offset: 3px; }
body main .redcafe-curso-demo.es-ficha { width: fit-content; margin: .8rem 0 1rem; }

/* ═══ Tema Stradale (Starter V0.1) — tipografía única DM Sans ═══ */
/* DM Sans variable, alojada en el sitio (CSP 'self'). */
@font-face { font-family: "DM Sans"; src: url("/fonts/dm-sans-latin.woff2") format("woff2");
  font-weight: 300 700; font-style: normal; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "DM Sans"; src: url("/fonts/dm-sans-latin-ext.woff2") format("woff2");
  font-weight: 300 700; font-style: normal; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
/* Variables del React compilado (Tailwind v4 las define en @layer theme;
   esta regla sin capa las redefine sin recompilar). Mapeo por rol. */
:root {
  --color-crema: #FBF6EF; --color-crema-oscuro: #F3EADF; --color-arena: #E8DCCD;
  --color-pizarra: #222222; --color-pizarra-suave: #5E5850;
  --color-cafe: #3b2318; --color-cafe-oscuro: #2c1a12; --color-tostado: #615B53; --color-tostado-claro: #F3EADF;
  --color-latte: #8E5328; --color-latte-texto: #5E5850; --color-latte-claro: #F6E9D8; --color-miel: #7A4424;
  --color-cereza: #3b2318; --color-cereza-roja: #8E5328; --color-cereza-roja-suave: #F6E9D8;
  --color-filtrado-900: #2c1a12; --color-filtrado-800: #3b2318; --color-filtrado-600: #8E5328;
  --color-filtrado-500: #B87440; --color-filtrado-300: #DDA35E; --color-filtrado-100: #F0DCC0;
  --color-acento-claro: #E3AE6B; --color-hoja-clara: #7FB08A;
  --color-coffee-950: #2c1a12; --color-coffee-900: #3b2318; --color-coffee-800: #5a3523;
  --color-coffee-700: #8E5328; --color-coffee-600: #B87440; --color-gold-500: #DDA35E;
  --color-text-primary: #222222; --color-text-secondary: #5E5850; --color-text-muted: #615B53;
  --color-cream-50: #FDFAF5; --color-cream-100: #FBF6EF; --color-cream-200: #F3EADF; --color-sand-300: #E8DCCD;
  --color-surface-soft: #FDFAF5; --color-border-soft: #E8DCCD;
  --font-titulo: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-cuerpo: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-marca: "DM Sans", system-ui, sans-serif;
  --rc-titulo: "DM Sans", system-ui, sans-serif;
  --rc-texto: "DM Sans", system-ui, sans-serif;
}
/* Componentes de React (antes en globals.css del fuente). */
.btn-primary, .btn-accent, .btn-ghost, a.min-h-11.border, button.min-h-11.border {
  font-size: .8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; border-radius: 0;
}
.btn-primary { background: #3b2318; border-color: #3b2318; color: #FBF6EF; }
.btn-primary:hover { background: #2c1a12; }
.btn-accent { background: #DDA35E; border-color: #DDA35E; color: #3b2318; }
.btn-accent:hover { background: #E3AE6B; border-color: #E3AE6B; }
.btn-ghost { border-color: rgba(59,35,24,.45); color: #3b2318; }
:is(.hero-gradient, .bg-cafe, .bg-cafe-oscuro, .bg-filtrado-800, .bg-filtrado-900, .bg-coffee-950, .bg-coffee-900) .btn-primary {
  background: #DDA35E; border-color: #DDA35E; color: #3b2318; }
:is(.hero-gradient, .bg-cafe, .bg-cafe-oscuro, .bg-filtrado-800, .bg-filtrado-900, .bg-coffee-950, .bg-coffee-900) .btn-ghost {
  color: #FBF6EF; border-color: rgba(247,244,239,.45); }
.badge { border-radius: 0; background: transparent; color: #8E5328; border: 1px solid rgba(221,163,94,.55);
  font-size: .6875rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
footer a.rounded-full { border-radius: 0; }
/* En secciones verdes, «cereza» (verde) era invisible: p. ej. la bajada del
   precio en la barra. Ahí pasa a rojo claro (7.3:1). */
:is(.hero-gradient, .bg-cafe, .bg-cafe-oscuro, .bg-filtrado-800, .bg-filtrado-900) .text-cereza { color: #F09A8A; }
h1 { font-weight: 400; letter-spacing: -.035em; }
h2 { font-weight: 500; letter-spacing: -.025em; }
h3 { font-weight: 600; letter-spacing: -.015em; }
/* Botones y tarjetas de acceso de la capa propia: rectos, voz Stradale. */
.redcafe-acceso-btn {
  border-radius: 0 !important;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.redcafe-acceso-card { border-radius: 0 !important; }
/* La capa oscurece el hero del marketplace (section:first-child); su botón
   primario verde quedaba invisible sobre el verde. Ahí va en caramelo. */
body[data-redcafe-route="/marketplace/"] main > div > section:first-child .btn-primary {
  background: var(--color-filtrado-300, #dda35e) !important;
  border-color: var(--color-filtrado-300, #dda35e) !important;
  color: var(--color-cafe, #3b2318) !important;
}
/* Cabecera casi opaca (Starter: 94 %): la capa la dejaba al 80 % y sobre
   contenido claro el dorado de «Ecuador» caía a 3.1:1. */
html:not(#rc-t1):not(#rc-t2):not(#rc-t3) body > header.sticky { background-color: rgba(59,35,24,.90) !important;
  -webkit-backdrop-filter: blur(14px) saturate(150%); backdrop-filter: blur(14px) saturate(150%); }
/* Caramelo claro solo sirve sobre verde; sobre crema, el caramelo oscuro (AA). */
.redcafe-acceso-rotulo,
.redcafe-acceso-pie a { color: #8e5328 !important; }
.redcafe-precio-equivalente.es-falta { color: #6a645b !important; }
/* Ajustes finos para no bajar de AA donde el fondo crema es más oscuro. */
.redcafe-muro-sello { color: #7a4424 !important; }
.redcafe-bloque-lista a { color: #3f6b4a !important; }
/* Tarjetas, avisos y controles de la capa: cantos rectos como el Starter. */
.redcafe-curso-card,
.redcafe-service-card,
.redcafe-home-price-metric,
#redcafe-avisopago-fijo,
main article,
main :is(select, input:not([type=checkbox]):not([type=radio]), textarea) {
  border-radius: 0 !important;
}
.redcafe-home-price-inner a {
  border-radius: 0 !important;
  font-size: .8125rem;
  letter-spacing: .06em;
  text-transform: uppercase;
}
/* Titulares ligeros (Stradale). La capa los fuerza a 700 con !important y
   selectores html:not(#rc-t1):not(#rc-t2); aquí uno más gana solo para
   h1–h3. Las negritas de texto (strong, b) no se tocan. */
html:not(#rc-t1):not(#rc-t2):not(#rc-t3) body :is(main, [data-redcafe-propio]) h1 { font-weight: 400 !important; letter-spacing: -.035em; }
html:not(#rc-t1):not(#rc-t2):not(#rc-t3) body :is(main, [data-redcafe-propio]) h2 { font-weight: 500 !important; letter-spacing: -.025em; }
html:not(#rc-t1):not(#rc-t2):not(#rc-t3) body :is(main, [data-redcafe-propio]) h3 { font-weight: 600 !important; }
/* ═ Espresso recién hecho: cuerpo rojizo con la luz de la crema arriba y el
   fondo de la taza abajo; la crema avellana es el acento. Brillo y algo de
   transparencia, sin bajar de AA (texto claro 12–14:1, crema 6,6:1). ═ */
.hero-gradient, body > footer, footer.bg-cafe, .bg-coffee-950, .bg-filtrado-900 {
  background-image: radial-gradient(120% 70% at 50% -15%, rgba(221,163,94,.26), rgba(221,163,94,0) 62%),
                    linear-gradient(165deg, #5A3523 0%, #3B2318 48%, #2C1A12 100%) !important;
}
.bg-cafe:not(footer), .bg-coffee-900, .bg-filtrado-800 {
  background-image: linear-gradient(165deg, rgba(90,53,35,.55), rgba(44,26,18,.15));
}
.btn-accent, :is(.hero-gradient, .bg-cafe, .bg-cafe-oscuro, .bg-filtrado-800, .bg-filtrado-900, .bg-coffee-950, .bg-coffee-900) .btn-primary {
  background-image: linear-gradient(180deg, #E8B774 0%, #DDA35E 55%, #C98C4A 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 6px 18px -8px rgba(201,140,74,.7);
}
.btn-primary { box-shadow: inset 0 1px 0 rgba(255,255,255,.12); }
::selection { background: rgba(221,163,94,.45); color: #2C1A12; }
/* Móvil: con una sección o formulario abierto, su botón «Ocultar…» / «Cerrar
   formulario» se queda pegado arriba al hacer scroll; nadie queda atrapado
   en un formulario largo. */
.redcafe-col-boton[aria-expanded="true"], .redcafe-form-abrir[aria-expanded="true"], .redcafe-pub-toggle[aria-expanded="true"] {
  position: sticky !important; top: var(--rc-alto-cabecera, 74px); z-index: 6;
  background: rgba(251,246,239,.94) !important; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  box-shadow: 0 8px 14px -12px rgba(44,26,18,.55);
}
/* «Eliminar» en lo propio: discreto pero claro, con área táctil de 44 px. */
.redcafe-pub-eliminar { min-height: 44px; margin-left: 8px; padding: 0 14px; background: transparent;
  border: 1px solid rgba(166,52,38,.55); color: #a63426; font-weight: 700; cursor: pointer; }
.redcafe-pub-eliminar:hover { background: rgba(166,52,38,.08); }
