/*
 * Infoposiciones Empleo Público · frontend responsive común
 * v3.1.0
 *
 * Principios:
 * - el tema de Infoposiciones controla tipografía, colores y apariencia de botones;
 * - el plugin controla estructura, espaciado, legibilidad y comportamiento responsive;
 * - un único sistema de breakpoints para buscador, landings, fichas y área personal.
 */

:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account),
:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) * {
  box-sizing: border-box;
}

:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) {
  width: 100%;
  max-width: var(--wp--style--global--wide-size, 1180px);
  margin-inline: auto;
  padding-inline: var(--wp--style--root--padding-left, 22px) var(--wp--style--root--padding-right, 22px);
  font-family: inherit;
  color: inherit;
}

:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) :where(a,button,input,select,textarea,summary) {
  -webkit-tap-highlight-color: transparent;
}

:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) :where(h1,h2,h3,p,li,a,span,strong) {
  overflow-wrap: break-word;
}

:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) :where(input,select,textarea,button) {
  max-width: 100%;
}

:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) .wp-element-button,
:where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) button.wp-element-button {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  font: inherit;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
}

/* Migas de pan: mismo ritmo y capacidad de salto de línea en todo el plugin. */
.info-empleo-search-breadcrumbs,
.info-empleo-landing-breadcrumb,
.info-empleo-breadcrumbs,
.info-empleo-account-breadcrumbs {
  max-width: 100%;
  line-height: 1.55;
}

/* Formularios: controles cómodos en táctil y sin zoom involuntario de iOS. */
.info-empleo-search-form :where(input,select),
.info-empleo-account :where(input,select,textarea) {
  min-height: 46px;
}

/* Autocompletado: zona táctil grande y altura contenida para no quedar bajo el teclado. */
.info-empleo-autocomplete-list {
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
.info-empleo-autocomplete-option {
  min-height: 48px;
}
.info-empleo-autocomplete-label {
  line-height: 1.35;
}

/* Resultados: reglas compartidas entre buscador y landings. */
.info-empleo-results,
.info-empleo-result {
  min-width: 0;
}
.info-empleo-result > * {
  min-width: 0;
}
.info-empleo-result h2 {
  text-wrap: pretty;
}
.info-empleo-result-meta,
.info-empleo-result-facts {
  min-width: 0;
}
.info-empleo-result-category-chip,
.info-empleo-filter-chip {
  max-width: 100%;
}
.info-empleo-result-category-chip {
  white-space: normal;
}

/* Paginación: estado móvil añadido por PHP y oculto en escritorio. */
.info-empleo-pagination__mobile-status {
  display: none !important;
}

/* Mi cuenta: navegación móvil semántica sin depender de JavaScript. */
.info-empleo-account-nav__mobile {
  display: none;
}
.info-empleo-account-nav__mobile summary {
  display: flex;
  min-height: 48px;
  padding: .72rem 1rem;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  font-weight: 700;
  list-style: none;
}
.info-empleo-account-nav__mobile summary::-webkit-details-marker {
  display: none;
}
.info-empleo-account-nav__mobile summary::after {
  content: "▾";
  margin-left: 1rem;
}
.info-empleo-account-nav__mobile[open] summary::after {
  content: "▴";
}
.info-empleo-account-nav__mobile-menu {
  border-top: 1px solid var(--ie-border, #dedfeb);
}
.info-empleo-account-nav__mobile-menu a {
  display: flex;
  min-height: 48px;
  align-items: center;
  padding: .68rem 1rem;
  border-bottom: 1px solid var(--ie-border, #dedfeb);
  color: inherit;
  text-decoration: none;
}
.info-empleo-account-nav__mobile-menu a[aria-current="page"] {
  font-weight: 700;
}
.info-empleo-account-nav__mobile-menu a:last-child {
  border-bottom: 0;
}

/* Tablas o contenido excepcionalmente ancho en el área personal. */
.info-empleo-account table {
  max-width: 100%;
}

/* -------------------------------------------------------------------------
 * TABLET · 768–1024 px
 * ---------------------------------------------------------------------- */
@media (min-width: 768px) and (max-width: 1024px) {
  :where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) {
    padding-top: 34px;
    padding-bottom: 64px;
  }

  .info-empleo-search .entry-header,
  .info-empleo-landing .entry-header,
  .info-empleo-public .entry-header {
    margin-bottom: 1.65rem;
  }

  .info-empleo-primary-filters,
  .info-empleo-advanced-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .info-empleo-search-form {
    padding: 20px !important;
  }

  .info-empleo-filter-actions {
    align-items: center;
  }

  .info-empleo-live-count {
    flex: 1 1 260px;
    text-align: right;
  }

  .info-empleo-results-toolbar {
    align-items: center;
  }

  .info-empleo-result-facts {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, max-content));
    gap: .55rem 1.25rem !important;
  }

  .info-empleo-user-tools__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .info-empleo-account-stats,
  .info-empleo-account-stats--extended {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .info-empleo-alert-form__grid,
  .info-empleo-account-auth {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .info-empleo-account-section-head {
    gap: 1rem;
  }

  .info-empleo-tracking-card__actions {
    align-items: flex-end;
  }
}

/* -------------------------------------------------------------------------
 * MÓVIL · hasta 767 px
 * ---------------------------------------------------------------------- */
@media (max-width: 767px) {
  :where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) {
    width: 100% !important;
    max-width: none !important;
    padding-top: 26px !important;
    padding-right: var(--wp--style--root--padding-right, 16px) !important;
    padding-bottom: 50px !important;
    padding-left: var(--wp--style--root--padding-left, 16px) !important;
  }

  .info-empleo-search-breadcrumbs,
  .info-empleo-landing-breadcrumb,
  .info-empleo-breadcrumbs,
  .info-empleo-account-breadcrumbs {
    margin-bottom: 1rem !important;
    font-size: .88em;
  }

  .info-empleo-search .entry-header,
  .info-empleo-landing .entry-header,
  .info-empleo-public .entry-header,
  .info-empleo-account__header {
    margin-bottom: 1.35rem !important;
  }

  .info-empleo-search .entry-title,
  .info-empleo-landing .entry-title,
  .info-empleo-public .entry-title,
  .info-empleo-account .entry-title {
    text-wrap: balance;
  }

  /* Buscador */
  .info-empleo-search-form {
    margin-bottom: 1rem !important;
    padding: 15px !important;
    border-radius: 8px !important;
  }

  .info-empleo-search-query-row {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }

  .info-empleo-search-query-row .info-empleo-search-button {
    width: 100% !important;
    min-width: 0 !important;
  }

  .info-empleo-search-form :where(input,select),
  .info-empleo-account :where(input,select,textarea) {
    min-height: 48px !important;
    font-size: 16px !important;
  }

  .info-empleo-mobile-filter-toggle {
    display: flex !important;
    width: 100% !important;
    min-height: 48px !important;
    align-items: center;
    justify-content: space-between;
    margin-top: 12px !important;
  }

  .info-empleo-filter-panel {
    display: none !important;
  }
  .info-empleo-filter-panel.is-open {
    display: block !important;
  }

  .info-empleo-primary-filters,
  .info-empleo-advanced-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .info-empleo-filter-actions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .55rem !important;
    align-items: stretch !important;
  }

  .info-empleo-filter-actions .info-empleo-search-button {
    width: 100% !important;
  }

  .info-empleo-search-reset {
    min-height: 44px !important;
    justify-content: flex-start;
  }

  .info-empleo-live-count {
    margin: .15rem 0 0 !important;
    order: -1;
    font-size: .92em !important;
  }

  .info-empleo-autocomplete-list {
    max-height: min(42vh, 290px) !important;
  }

  .info-empleo-autocomplete-option {
    min-height: 50px !important;
    gap: .55rem !important;
    padding: .7rem .75rem !important;
  }

  .info-empleo-autocomplete-type {
    min-width: 62px !important;
    font-size: .72em !important;
  }

  .info-empleo-filter-chips-wrap {
    flex-direction: column !important;
    gap: .65rem !important;
    margin-bottom: 1rem !important;
  }

  .info-empleo-filter-chips {
    gap: .45rem !important;
  }

  .info-empleo-filter-chip {
    min-height: 36px;
    padding: .35rem .62rem !important;
  }

  .info-empleo-clear-filters {
    min-height: 40px;
    display: inline-flex;
    align-items: center;
  }

  .info-empleo-results-toolbar,
  .info-empleo-result-summary {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: .65rem !important;
  }

  .info-empleo-results-toolbar {
    margin-top: 1.25rem !important;
  }

  .info-empleo-order-form {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
  }

  .info-empleo-order-form select {
    width: 100% !important;
    max-width: none !important;
  }

  .info-empleo-alert-box {
    margin: .75rem 0 1rem !important;
    padding: .95rem !important;
  }

  .info-empleo-alert-box__actions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .45rem !important;
  }

  .info-empleo-alert-box__actions .wp-element-button {
    width: 100%;
  }

  .info-empleo-alert-box__secondary {
    min-height: 42px !important;
    align-items: center;
  }

  /* Tarjetas/listados de convocatorias */
  .info-empleo-result {
    padding: 1.25rem 0 !important;
  }

  .info-empleo-result h2 {
    margin: .45rem 0 .65rem !important;
    line-height: 1.25;
  }

  .info-empleo-result-meta {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .25rem !important;
    margin-bottom: .65rem !important;
  }

  .info-empleo-result-meta > span {
    display: block;
  }

  .info-empleo-result-facts {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .35rem !important;
    margin-top: .45rem !important;
  }

  .info-empleo-result-fact {
    display: grid !important;
    grid-template-columns: minmax(78px, auto) 1fr;
    gap: .5rem !important;
    align-items: baseline !important;
  }

  .info-empleo-result-footer {
    justify-content: flex-start !important;
    margin-top: .9rem !important;
  }

  .info-empleo-result-category-chip {
    min-height: 36px !important;
    padding: .35rem .65rem !important;
  }

  /* Paginación compacta: anterior · página X/Y · siguiente. */
  .info-empleo-pagination {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    gap: .5rem !important;
    width: 100%;
    align-items: stretch !important;
  }

  .info-empleo-pagination > :not(.info-empleo-pagination__prev):not(.info-empleo-pagination__next):not(.info-empleo-pagination__mobile-status) {
    display: none !important;
  }

  .info-empleo-pagination__mobile-status {
    display: inline-flex !important;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    padding: 0 .4rem;
    white-space: nowrap;
    font-size: .9em;
  }

  .info-empleo-pagination__prev {
    justify-self: start;
  }
  .info-empleo-pagination__next {
    justify-self: end;
  }

  /* Fichas */
  .info-empleo-public .entry-content h2 {
    margin-top: 1.65em !important;
  }
  .info-empleo-public .entry-content h3 {
    margin-top: 1.35em !important;
  }
  .info-empleo-public .entry-content :where(p,ul,ol) {
    margin-bottom: 1.05em !important;
  }
  .info-empleo-key-data,
  .info-empleo-official-links,
  .info-empleo-related-list {
    padding-left: 1.1rem !important;
  }
  .info-empleo-actions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .65rem !important;
  }
  .info-empleo-actions .wp-element-button,
  .info-empleo-actions .info-empleo-action {
    width: 100%;
    margin: 0 !important;
  }
  .info-empleo-source-meta {
    font-size: .88em !important;
  }

  /* Herramientas personales de una ficha */
  .info-empleo-user-tools {
    margin: 1.8rem 0 1.4rem !important;
    padding: .9rem !important;
  }
  .info-empleo-user-tools__header {
    margin-bottom: .9rem !important;
  }
  .info-empleo-user-tools__grid {
    grid-template-columns: 1fr !important;
    gap: .75rem !important;
  }
  .info-empleo-user-tools .info-empleo-personal-tools,
  .info-empleo-user-tools .info-empleo-deadline-reminders {
    padding: 1rem !important;
  }
  .info-empleo-user-tools .wp-element-button,
  .info-empleo-user-tools button.wp-element-button {
    width: 100%;
  }
  .info-empleo-reminder-options {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .45rem !important;
  }
  .info-empleo-reminder-options label {
    min-height: 40px;
  }

  /* Mi cuenta */
  .info-empleo-account__header {
    align-items: flex-start !important;
    flex-direction: column !important;
    gap: .9rem !important;
    padding-bottom: 1rem !important;
  }
  .info-empleo-account__header-copy,
  .info-empleo-account__lede {
    max-width: none !important;
  }
  .info-empleo-account__search-link {
    width: 100%;
  }

  .info-empleo-account-nav {
    display: block !important;
    margin-bottom: 1.6rem !important;
  }
  .info-empleo-account-nav__links,
  .info-empleo-account-nav > .info-empleo-account-nav__logout {
    display: none !important;
  }
  .info-empleo-account-nav__mobile {
    display: block !important;
  }

  .info-empleo-account-section {
    margin-bottom: 2.2rem !important;
  }
  .info-empleo-account-section-head,
  .info-empleo-alert-card__head {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: .75rem !important;
  }
  .info-empleo-account-section-head .wp-element-button {
    width: 100%;
  }

  .info-empleo-account-stats,
  .info-empleo-account-stats--extended,
  .info-empleo-alert-form__grid,
  .info-empleo-account-auth {
    grid-template-columns: 1fr !important;
  }

  .info-empleo-field--wide {
    grid-column: auto !important;
  }

  .info-empleo-alert-card,
  .info-empleo-tracking-card,
  .info-empleo-reminder-card,
  .info-empleo-account-auth section {
    padding: 1rem !important;
  }

  .info-empleo-alert-card__meta,
  .info-empleo-tracking-card__meta {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .3rem !important;
  }

  .info-empleo-alert-card__actions,
  .info-empleo-tracking-card__actions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .55rem !important;
    align-items: stretch !important;
  }

  .info-empleo-alert-card__actions form,
  .info-empleo-tracking-card__actions form {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .45rem !important;
    width: 100%;
  }

  .info-empleo-alert-card__actions .wp-element-button,
  .info-empleo-tracking-card__actions .wp-element-button,
  .info-empleo-tracking-card__actions select {
    width: 100% !important;
  }

  .info-empleo-alert-form__actions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    align-items: stretch !important;
    gap: .55rem !important;
  }
  .info-empleo-alert-form__actions .wp-element-button {
    width: 100%;
  }

  .info-empleo-frequency__option {
    min-height: 52px;
    padding: .8rem .65rem !important;
  }

  .info-empleo-reminder-card {
    display: block !important;
  }
  .info-empleo-reminder-card form {
    margin-top: .8rem !important;
  }

  .info-empleo-empty-state {
    padding: 1.35rem !important;
  }

  .info-empleo-account table {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* -------------------------------------------------------------------------
 * MÓVIL PEQUEÑO · hasta 480 px
 * ---------------------------------------------------------------------- */
@media (max-width: 480px) {
  :where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) {
    padding-top: 22px !important;
    padding-bottom: 44px !important;
  }

  .info-empleo-search-form {
    margin-inline: 0 !important;
    padding: 13px !important;
  }

  .info-empleo-order-form {
    grid-template-columns: 1fr !important;
    gap: .35rem !important;
  }

  .info-empleo-pagination {
    grid-template-columns: 1fr 1fr !important;
  }
  .info-empleo-pagination__mobile-status {
    grid-column: 1 / -1;
    grid-row: 1;
  }
  .info-empleo-pagination__prev,
  .info-empleo-pagination__next {
    grid-row: 2;
    width: 100%;
  }
  .info-empleo-pagination__prev {
    justify-self: stretch;
  }
  .info-empleo-pagination__next {
    justify-self: stretch;
  }

  .info-empleo-account-stats,
  .info-empleo-account-stats--extended {
    grid-template-columns: 1fr !important;
  }

  .info-empleo-result-fact {
    grid-template-columns: 1fr !important;
    gap: .08rem !important;
  }

  .info-empleo-alert-box__actions .wp-element-button,
  .info-empleo-account__search-link,
  .info-empleo-account-section-head .wp-element-button,
  .info-empleo-actions .wp-element-button,
  .info-empleo-actions .info-empleo-action {
    width: 100% !important;
  }
}

/* Respeta usuarios que reducen animación. */
@media (prefers-reduced-motion: reduce) {
  :where(.info-empleo-search,.info-empleo-landing,.info-empleo-public,.info-empleo-account) * {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }
}
