/* Só para horarios/horarios.html. Identidade e controis base en comun.css;
   formato base de impresión en impresion.css. Ensinanza/curso/grupo son filtros. */
.sm-horarios { --sm-content-width: 72rem; }
.sm-horarios .sm-hero { padding-block: 2rem; }
.sm-horarios .sm-hero h1 { font-size: var(--sm-text-schedule-title); }
.sm-horarios .sm-hero p:last-child { margin-bottom: 0; }
.sm-schedule-intro { display: flex; justify-content: space-between; align-items: center; gap: var(--sm-space-6); }
.sm-schedule-year { display: inline-block; flex-shrink: 0; padding: 0.6rem 1rem; border: 1px solid var(--sm-on-color-border-strong); border-radius: 999px; background: var(--sm-on-color-soft); font-weight: var(--sm-weight-bold); white-space: nowrap; }
.sm-schedule-stage { margin: 0; min-width: 0; padding: var(--sm-space-4); border: 1px solid var(--sm-border); border-radius: var(--sm-radius); background: var(--sm-surface); }
.sm-schedule-stage legend { padding-inline: var(--sm-space-2); color: var(--sm-navy); font-weight: var(--sm-weight-bold); }
.sm-schedule-picker { padding: var(--sm-space-6); margin-top: var(--sm-space-4); border: 1px solid var(--sm-border); border-radius: var(--sm-radius); background: var(--sm-surface); }
.sm-schedule-picker h2 { font-size: var(--sm-text-subtitle); }
.sm-schedule-filters { display: flex; flex-wrap: wrap; align-items: start; gap: var(--sm-space-6) var(--sm-space-12); }
.sm-schedule-filters fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.sm-schedule-filters legend { margin-bottom: var(--sm-space-3); padding: 0; font-size: var(--sm-text-caption); font-weight: var(--sm-weight-bold); color: var(--sm-muted); }
.sm-schedule-choices { display: flex; flex-wrap: wrap; gap: var(--sm-space-2); }
.sm-schedule-choice { position: relative; cursor: pointer; }
.sm-schedule-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.sm-schedule-choice span { display: inline-flex; align-items: center; justify-content: center; min-height: 2.75rem; padding: 0.6rem 1rem; border: 1px solid var(--sm-border); border-radius: var(--sm-radius-sm); background: var(--sm-surface); color: var(--sm-navy); font-size: var(--sm-text-table); font-weight: var(--sm-weight-bold); }
.sm-schedule-choice:hover span { background: var(--sm-navy-light); }
.sm-schedule-choice input:checked + span { border-color: var(--sm-navy); background: var(--sm-navy); color: var(--sm-on-color); }
.sm-schedule-choice input:focus-visible + span { outline: 3px solid var(--sm-pink-dark); outline-offset: 3px; }
.sm-schedule-cycle { margin: var(--sm-space-3) 0 0; font-size: var(--sm-text-caption); color: var(--sm-muted); }
.sm-schedule-viewer { margin-top: var(--sm-space-6); padding: var(--sm-space-6); border: 1px solid var(--sm-border); border-radius: var(--sm-radius-lg); background: var(--sm-surface); box-shadow: var(--sm-shadow); }
.sm-schedule-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--sm-space-4); margin-bottom: var(--sm-space-4); }
.sm-schedule-toolbar h2 { margin-bottom: 0.3rem; font-size: var(--sm-text-section); }
.sm-schedule-toolbar p { margin: 0; font-size: var(--sm-text-caption); color: var(--sm-muted); }
.sm-schedule-actions { display: flex; flex-wrap: wrap; gap: var(--sm-space-2); }
.sm-schedule-figure { margin: 0; }
.sm-schedule-image { display: block; width: min(100%, 52rem); height: auto; margin-inline: auto; border: 1px solid var(--sm-border-soft); }
.sm-schedule-caption { margin-top: var(--sm-space-4); text-align: center; font-size: var(--sm-text-caption); color: var(--sm-muted); }
.sm-schedule-status { margin: var(--sm-space-3) 0; color: var(--sm-muted); font-size: var(--sm-text-sm); }
.sm-schedule-error { margin-block: var(--sm-space-4); }
.sm-schedule-error .sm-button { margin-top: var(--sm-space-3); }
.sm-schedule-dialog { width: min(76rem, calc(100% - 1rem)); max-height: min(95dvh, 64rem); }
.sm-schedule-dialog .sm-dialog__header { align-items: center; flex-wrap: wrap; }
.sm-schedule-dialog h2 { font-size: var(--sm-text-lg); }
.sm-schedule-zoom { max-height: min(72dvh, 52rem); overflow: auto; overscroll-behavior: contain; border: 1px solid var(--sm-border); border-radius: var(--sm-radius-sm); }
.sm-schedule-zoom img { display: block; width: 100%; height: auto; max-width: none; }
.sm-schedule-zoom[data-zoomed="true"] img { width: max(100%, 1500px); }
@media (max-width: 599px) {
  .sm-schedule-intro { flex-direction: column; align-items: start; gap: var(--sm-space-3); }
  .sm-horarios .sm-hero { padding-block: var(--sm-space-6); }
  .sm-schedule-picker, .sm-schedule-viewer { padding: var(--sm-space-4); }
  .sm-schedule-actions { width: 100%; }
  .sm-schedule-actions .sm-button { flex: 1 1 auto; }
  .sm-schedule-choice span { padding-inline: 0.8rem; }
}
@media print {
  @page { size: A4 portrait; margin: 8mm; }
  .sm-page.sm-horarios .sm-hero, .sm-page.sm-horarios .sm-footer { display: none; }
  .sm-page.sm-horarios .sm-main { padding: 0; }
  .sm-page.sm-horarios .sm-schedule-viewer { margin: 0; padding: 0; border: 0; box-shadow: none; }
  .sm-page.sm-horarios .sm-schedule-toolbar { margin: 0 0 2mm; }
  .sm-page.sm-horarios .sm-schedule-toolbar h2 { font-size: var(--sm-text-print-subtitle); margin: 0; }
  .sm-page.sm-horarios .sm-schedule-toolbar p { font-size: var(--sm-text-print-xs); }
  .sm-page.sm-horarios .sm-schedule-image { width: auto; max-width: 100%; max-height: 262mm; border: 0; }
  .sm-page.sm-horarios .sm-schedule-caption { display: none; }
}

.sm-schedule-image[role="button"] { cursor: zoom-in; }
.sm-schedule-image[role="button"]:focus-visible { outline: 3px solid var(--sm-navy); outline-offset: 4px; }
