@import url("./variables.css");

/* IES San Mamede · Base compartida v1. Require class="sm-page" no body.
   Sen Tailwind nin descargas automáticas. Fontes: véxase AGENTS.md. */
.sm-page {
  margin: 0;
  background: var(--sm-background);
  color: var(--sm-text);
  font-family: var(--sm-font-body);
  font-size: var(--sm-text-body);
  line-height: var(--sm-leading-body);
  overflow-wrap: anywhere;
}
.sm-page *, .sm-page *::before, .sm-page *::after { box-sizing: border-box; }
.sm-page [hidden] { display: none !important; }
.sm-page [id] { scroll-margin-top: var(--sm-anchor-offset); }
.sm-page :where(h1, h2, h3, h4, h5, h6) {
  margin: 0 0 var(--sm-space-4);
  color: var(--sm-navy);
  font-family: var(--sm-font-heading);
  font-weight: var(--sm-weight-heavy);
  line-height: var(--sm-leading-heading);
  text-wrap: balance;
}
.sm-page h1 { font-size: var(--sm-text-hero); }
.sm-page h2 { font-size: var(--sm-text-h2); }
.sm-page h3 { font-size: var(--sm-text-lg); }
.sm-page :where(p, ul, ol, dl, blockquote) { margin: 0 0 var(--sm-space-4); }
.sm-page :where(ul, ol) { padding-inline-start: 1.5rem; }
.sm-page li + li { margin-top: var(--sm-space-2); }
.sm-page a { color: var(--sm-navy); text-underline-offset: 0.2em; }
.sm-page a:hover { color: var(--sm-pink-dark); }
.sm-page :where(button, input, select, textarea) { font: inherit; }
.sm-page :where(button, select) { cursor: pointer; }
.sm-page :where(button, input, select, textarea):disabled { cursor: not-allowed; opacity: 0.6; }
.sm-page :focus-visible { outline: 3px solid var(--sm-navy); outline-offset: 4px; }
.sm-page :where(img, video, svg) { max-width: 100%; }
.sm-page :where(img, video) { height: auto; }
.sm-page iframe { max-width: 100%; border: 0; }
.sm-page hr { border: 0; border-top: 1px solid var(--sm-border); margin-block: var(--sm-space-8); }
.sm-container { width: min(100% - 2rem, var(--sm-content-width)); margin-inline: auto; }
.sm-main { padding-block: var(--sm-space-8); }
.sm-section + .sm-section { margin-top: var(--sm-space-12); }
.sm-stack > * + * { margin-top: var(--sm-space-4); }
.sm-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: var(--sm-space-6); }
.sm-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--sm-space-3); }
.sm-muted { color: var(--sm-muted); }
.sm-lead { font-size: var(--sm-text-lead); }
.sm-eyebrow { font-size: var(--sm-text-label); font-weight: var(--sm-weight-heavy); letter-spacing: 0.08em; text-transform: uppercase; }
.sm-hero { padding-block: clamp(2rem, 5vw, 4rem); background: linear-gradient(135deg, var(--sm-navy), var(--sm-navy-dark)); color: var(--sm-on-color); }
.sm-hero :where(h1, h2, h3, a) { color: var(--sm-on-color); }
.sm-hero p { max-width: 65ch; }
.sm-hero :focus-visible { outline-color: var(--sm-on-color); }
.sm-card { min-width: 0; 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-card > :last-child { margin-bottom: 0; }
.sm-card--accent { border-top: 4px solid var(--sm-pink); }
.sm-card--soft { background: var(--sm-navy-light); }
.sm-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--sm-pink-light); color: var(--sm-pink-dark); }
.sm-page .sm-button {
  display: inline-flex; justify-content: center; align-items: center; gap: var(--sm-space-2);
  min-height: 2.75rem; padding: 0.65rem 1.1rem;
  border: 2px solid transparent; border-radius: var(--sm-radius-sm);
  background: var(--sm-navy); color: var(--sm-on-color); font-weight: var(--sm-weight-bold);
  line-height: 1.3; text-align: center; text-decoration: none;
  transition: background-color 150ms, box-shadow 150ms;
}
.sm-page .sm-button:hover { background: var(--sm-navy-dark); color: var(--sm-on-color); }
.sm-page .sm-button--accent { background: var(--sm-pink-dark); }
.sm-page .sm-button--accent:hover { background: var(--sm-pink-hover); }
.sm-page .sm-button--secondary { border-color: var(--sm-border); background: var(--sm-on-color); color: var(--sm-navy); }
.sm-page .sm-button--secondary:hover { background: var(--sm-navy-light); color: var(--sm-navy); }
.sm-page .sm-button--small { min-height: 2.5rem; padding: 0.4rem 0.75rem; font-size: var(--sm-text-sm); }
.sm-badge { display: inline-block; padding: 0.2rem 0.65rem; border-radius: 999px; background: var(--sm-navy-light); color: var(--sm-navy); font-size: var(--sm-text-label); font-weight: var(--sm-weight-bold); }
.sm-alert { padding: var(--sm-space-4) var(--sm-space-6); border-inline-start: 4px solid var(--sm-navy); border-radius: var(--sm-radius-sm); background: var(--sm-navy-light); color: var(--sm-navy); }
.sm-alert > :last-child { margin-bottom: 0; }
.sm-alert--success { background: var(--sm-success-light); color: var(--sm-success); border-color: var(--sm-success); }
.sm-alert--warning { background: var(--sm-warning-light); color: var(--sm-warning); border-color: var(--sm-warning); }
.sm-alert--danger { background: var(--sm-danger-light); color: var(--sm-danger); border-color: var(--sm-danger); }
.sm-field { display: grid; gap: var(--sm-space-2); }
.sm-field > label { font-weight: var(--sm-weight-bold); }
.sm-input { width: 100%; min-height: 2.75rem; padding: 0.65rem 0.85rem; border: 1px solid var(--sm-border); border-radius: var(--sm-radius-sm); background: var(--sm-surface); color: var(--sm-text); }
.sm-input[aria-invalid="true"] { border-color: var(--sm-danger); }
.sm-table-wrap { overflow-x: auto; border: 1px solid var(--sm-border); border-radius: var(--sm-radius); }
.sm-table { width: 100%; border-collapse: collapse; background: var(--sm-surface); font-size: var(--sm-text-table); }
.sm-table caption { padding: var(--sm-space-4); text-align: start; font-weight: var(--sm-weight-bold); }
.sm-table :where(th, td) { padding: 0.85rem 1rem; border-bottom: 1px solid var(--sm-border); text-align: start; vertical-align: top; }
.sm-table thead th { background: var(--sm-navy); color: var(--sm-on-color); }
.sm-table tbody tr:nth-child(even) { background: var(--sm-background); }
.sm-table tbody tr:last-child > * { border-bottom: 0; }
.sm-accordion { border: 1px solid var(--sm-border); border-radius: var(--sm-radius); background: var(--sm-surface); }
.sm-accordion > summary { padding: var(--sm-space-4); cursor: pointer; font-weight: var(--sm-weight-bold); color: var(--sm-navy); }
.sm-accordion > .sm-accordion__content { padding: 0 var(--sm-space-4) var(--sm-space-4); }
.sm-dialog { width: min(56rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: var(--sm-space-6); border: 0; border-radius: var(--sm-radius-lg); background: var(--sm-surface); color: var(--sm-text); box-shadow: var(--sm-shadow-lg); overflow: auto; }
.sm-dialog::backdrop { background: var(--sm-dialog-backdrop); }
.sm-dialog__header { display: flex; justify-content: space-between; align-items: start; gap: var(--sm-space-4); margin-bottom: var(--sm-space-4); }
.sm-dialog__header > :first-child { margin: 0; }
.sm-dialog__image { display: block; margin-inline: auto; max-height: 70dvh; object-fit: contain; }
.sm-search-match { background: var(--sm-search-background); color: var(--sm-text); border-radius: 0.15rem; padding-inline: 0.1rem; }
.sm-footer { padding-block: var(--sm-space-6); border-top: 1px solid var(--sm-border); color: var(--sm-muted); font-size: var(--sm-text-sm); }
.sm-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.sm-skip-link { position: fixed; top: 0.5rem; left: 0.5rem; z-index: 100; transform: translateY(-200%); padding: 0.75rem; background: var(--sm-on-color); }
.sm-skip-link:focus { transform: none; }
.sm-print-only { display: none; }
@media (max-width: 479px) {
  .sm-card { padding: var(--sm-space-4); border-radius: var(--sm-radius); }
  .sm-dialog { padding: var(--sm-space-4); }
}
@media (prefers-reduced-motion: reduce) {
  .sm-page *, .sm-page *::before, .sm-page *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}
