/* Contacto (vista previa) · sets_v2/mapa_de_sucursales. Usa los tokens de /css/dx.css. */
.dx-con-head { padding-block: clamp(28px, 4vw, 48px); }

/* Sedes: lista + mapa */
.dx-con-branches { padding-top: clamp(40px, 5vw, 64px); }
.dx-con-grid { display: grid; gap: clamp(24px, 3vw, 40px); grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); align-items: start; }
.dx-con-list .dx-head__title { margin-bottom: clamp(20px, 2.5vw, 28px); }
.dx-con-cards { display: grid; gap: 14px; list-style: none; margin: 0; padding: 0; }
.dx-con-card {
    display: grid; grid-template-columns: 132px minmax(0, 1fr); gap: 18px; align-items: center;
    padding: 12px; border: 1px solid var(--dx-line); border-radius: var(--dx-radius); background: var(--dx-white);
    transition: border-color var(--dx-ease), box-shadow var(--dx-ease);
}
.dx-con-card:hover { border-color: #D5DADE; box-shadow: 0 12px 26px -20px rgba(30, 37, 43, .4); }
.dx-con-card.is-marked { background: var(--dx-soft); border-color: #D5DADE; }
.dx-con-card__img { display: block; width: 132px; height: 100%; min-height: 104px; max-height: 132px; object-fit: cover; border-radius: 8px; background: var(--dx-soft); }
.dx-con-card__img--icon { object-fit: contain; padding: 12px; }
.dx-con-card__body { display: grid; gap: 6px; min-width: 0; }
.dx-con-card__title { margin: 0 0 2px; color: var(--dx-ink); font: 800 19px/1.25 var(--dx-font); letter-spacing: -.01em; }
.dx-con-card__row { display: flex; align-items: flex-start; gap: 8px; margin: 0; color: var(--dx-muted); font-size: 15px; line-height: 1.5; }
.dx-con-card__row svg { flex: none; margin-top: 3px; color: #B9A700; }
.dx-con-card__row a { color: var(--dx-ink); overflow-wrap: break-word; text-decoration: none; transition: color var(--dx-ease); }
.dx-con-card__row a:hover { text-decoration: underline; text-decoration-color: var(--dx-yellow); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.dx-con-phones { display: flex; flex-wrap: wrap; gap: 2px 14px; }

.dx-con-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px; justify-self: start;
    min-height: 40px; margin-top: 4px; padding: 8px 16px; border: 1.5px solid var(--dx-charcoal); border-radius: 8px;
    background: var(--dx-white); color: var(--dx-charcoal); font: 700 14px/1 var(--dx-font); cursor: pointer; text-decoration: none;
    transition: background-color var(--dx-ease), color var(--dx-ease), border-color var(--dx-ease);
}
.dx-con-btn:hover { background: var(--dx-yellow); border-color: var(--dx-yellow); color: var(--dx-ink); }
.dx-con-btn:focus-visible { outline: 2px solid var(--dx-yellow); outline-offset: 3px; }
.dx-con-btn--dark { background: var(--dx-charcoal); color: var(--dx-white); }
.dx-con-btn--dark:hover { background: var(--dx-ink); border-color: var(--dx-ink); color: var(--dx-white); }

.dx-con-mapwrap { position: sticky; top: calc(var(--dx-header-h) + 16px); }
.dx-con-map { width: 100%; height: clamp(380px, 46vw, 560px); border-radius: 12px; overflow: hidden; background: #E6E9EC; border: 1px solid var(--dx-line); }
.dx-con-iw { display: grid; gap: 4px; max-width: 250px; font-family: var(--dx-font); color: var(--dx-ink); }
.dx-con-iw img { display: block; width: 100%; height: auto; border-radius: 6px; margin-bottom: 4px; }
.dx-con-iw strong { font-size: 15px; }
.dx-con-iw span { color: var(--dx-muted); font-size: 13px; }

/* Servicio al cliente y política */
.dx-con-support { background: var(--dx-soft); }
.dx-con-support__grid { display: grid; gap: clamp(16px, 2vw, 24px); grid-template-columns: 1fr 1.2fr; align-items: stretch; }
.dx-con-panel { padding: clamp(24px, 3vw, 36px); border: 1px solid var(--dx-line); border-radius: 12px; background: var(--dx-white); }
.dx-con-panel__title { margin: 0 0 10px; color: var(--dx-ink); font: 800 clamp(21px, 2vw, 26px)/1.25 var(--dx-font); letter-spacing: -.015em; text-wrap: balance; }
.dx-con-panel__title::before { content: ""; display: block; width: 32px; height: 4px; margin-bottom: 14px; border-radius: 2px; background: var(--dx-yellow); }
.dx-con-panel__text { margin: 0 0 18px; max-width: 60ch; color: var(--dx-muted); font-size: 16px; line-height: 1.65; }
.dx-con-contact { display: grid; gap: 12px; list-style: none; margin: 0; padding: 0; }
.dx-con-contact li { display: flex; align-items: center; gap: 12px; font-size: 17px; font-weight: 700; }
.dx-con-contact svg { flex: none; width: 38px; height: 38px; padding: 10px; border-radius: 50%; background: var(--dx-yellow-soft); color: var(--dx-charcoal); }
.dx-con-contact a { color: var(--dx-ink); overflow-wrap: break-word; text-decoration: none; }
.dx-con-contact a:hover { text-decoration: underline; text-decoration-color: var(--dx-yellow); text-decoration-thickness: 2px; text-underline-offset: 3px; }

.dx-con-policy { display: grid; grid-template-columns: minmax(120px, 200px) minmax(0, 1fr); gap: clamp(16px, 2.5vw, 32px); align-items: center; }
.dx-con-policy__img { display: block; width: 100%; height: auto; }
.dx-con-policy__body .dx-con-btn { margin-top: 6px; }
.dx-con-flipbook { grid-column: 1 / -1; }
.dx-con-flipbook iframe { display: block; width: 100%; height: 556px; border: 1px solid var(--dx-line); border-radius: 12px; background: var(--dx-white); }

/* Denuncias */
.dx-con-ethics { padding-top: 0; background: var(--dx-soft); }
.dx-con-ethics__card {
    position: relative; overflow: hidden; padding: clamp(24px, 3.5vw, 44px);
    border: 1px solid #E9DE8A; border-radius: 12px; background: linear-gradient(180deg, #FFFBDF 0%, #FBF3B4 100%);
}
.dx-con-ethics__intro .dx-con-panel__title::before { background: var(--dx-charcoal); }
.dx-con-ethics__intro .dx-con-panel__text { color: #4B555D; max-width: 72ch; }
.dx-con-ethics__form { margin-top: 24px; padding: clamp(16px, 2.5vw, 28px); border-radius: 10px; background: var(--dx-white); }
.dx-con-ethics__ok { margin: 0; color: var(--dx-ink); font-weight: 700; }

@media (max-width: 1023px) {
    .dx-con-grid { grid-template-columns: 1fr; }
    .dx-con-mapwrap { position: static; order: -1; }
    .dx-con-map { height: clamp(300px, 56vw, 440px); }
    .dx-con-support__grid { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
    .dx-con-iw img { display: none; } /* como antes: en móvil la ventana del mapa va sin foto */
}
@media (max-width: 559px) {
    .dx-con-card { grid-template-columns: 96px minmax(0, 1fr); gap: 14px; }
    .dx-con-card__row { font-size: 14px; }
    .dx-con-card__row a, .dx-con-contact a { overflow-wrap: break-word; word-break: break-word; }
    .dx-con-panel { padding: 22px 18px; }
    .dx-con-contact li { gap: 10px; font-size: 15px; }
    .dx-con-contact svg { width: 34px; height: 34px; padding: 9px; }
    .dx-con-card__img { width: 96px; min-height: 96px; }
    .dx-con-card__title { font-size: 17px; }
    .dx-con-policy { grid-template-columns: 110px minmax(0, 1fr); }
    .dx-con-ethics__card { border-radius: 10px; }
}
@media (prefers-reduced-motion: reduce) {
    .dx-con-card, .dx-con-btn { transition: none; }
}

/* Sedes: mapa horizontal a todo el ancho y debajo tres tarjetas (1/3 cada una), sin fotos. */
.dx-con-grid { display: block; }
.dx-con-grid > .dx-head__title { margin-bottom: clamp(20px, 2.5vw, 28px); }
.dx-con-mapwrap { position: static; }
.dx-con-map { height: clamp(300px, 34vw, 440px); }
.dx-con-list { margin-top: clamp(16px, 2vw, 24px); }
.dx-con-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 20px); }
.dx-con-card { grid-template-columns: 1fr; align-items: start; height: 100%; padding: 22px 22px 20px; }
.dx-con-card__body { display: flex; flex-direction: column; gap: 8px; height: 100%; }
.dx-con-card__body .dx-con-onmap { margin-top: auto; align-self: flex-start; }
.dx-con-card__row a { overflow-wrap: anywhere; }
@media (max-width: 899px) {
    .dx-con-cards { grid-template-columns: 1fr; }
    .dx-con-card { grid-template-columns: 1fr; }
}
