/* Calculadora de impacto PBM (complementa styles.css). */
.calc { padding-top: 2rem; padding-bottom: 3rem; }
.calc h1 { font-size: clamp(1.8rem, 4vw, 2.5rem); }
.calc__intro { max-width: 70ch; color: var(--texto-suave); }
.calc__aviso { max-width: 80ch; margin: 1.25rem 0 2rem; }
.calc__grid { display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 960px) { .calc__grid { grid-template-columns: minmax(0, 22rem) minmax(0, 1fr); } }
.calc__form, .calc__resultados, .calc__supuestos { background: var(--blanco); border-radius: var(--radio); box-shadow: var(--sombra); padding: 1.5rem; }
.calc__form h2, .calc__resultados h2, .calc__supuestos h2 { font-size: 1.3rem; }
.calc__form input[aria-invalid="true"] { border-color: #9B1C1C; outline: 2px solid #9B1C1C; }
.supuesto { display: inline-block; margin-left: .35rem; padding: 0 .45rem; border-radius: 999px; background: #FFF6DA; border: 1px solid #E5CB7A; color: #5C4300; font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; vertical-align: middle; }
.calc__acciones { display: flex; flex-wrap: wrap; gap: .6rem; }
.calc__base { color: var(--texto-suave); margin-bottom: .6rem; }
.calc__resumen { background: var(--verde-suave); border-left: 5px solid var(--verde); border-radius: 0 var(--radio) var(--radio) 0; padding: .8rem 1rem; margin-bottom: 1.2rem; color: #24372A; }
.calc__resumen p { margin: 0; }
.calc__resumen strong { color: var(--marino); white-space: nowrap; }
.tabla-scroll { overflow-x: auto; }
.tabla-scroll:focus-visible { outline: 3px solid var(--marino); outline-offset: 2px; }
.calc__tabla { width: 100%; border-collapse: collapse; font-size: .95rem; min-width: 34rem; }
.calc__tabla th, .calc__tabla td { padding: .55rem .6rem; border-bottom: 1px solid var(--borde); text-align: right; vertical-align: top; }
.calc__tabla th[scope="row"], .calc__tabla thead th:first-child { text-align: left; font-weight: 600; color: var(--marino); }
.calc__tabla thead th { background: var(--marino); color: #fff; }
.calc__tabla thead th:first-child { color: #fff; }
.calc__tabla td { font-variant-numeric: tabular-nums; }
.calc__fila-clave td { font-weight: 700; color: var(--marino); }
.calc__fila-total th, .calc__fila-total td { background: var(--rojo-suave); font-weight: 700; color: var(--rojo-oscuro); border-bottom: 0; }
.calc__supuestos { margin-top: 2rem; }
.calc__formulas, .calc__fuentes { padding-left: 1.25rem; }
.calc__formulas li, .calc__fuentes li { margin-bottom: .55rem; }
.calc__verificada { display: inline-block; padding: 0 .45rem; border-radius: 999px; background: var(--verde-suave); color: #24372A; font-size: .78rem; font-weight: 700; }
.calc__fuentes a { overflow-wrap: anywhere; }
.calc__nota { color: var(--texto-suave); font-size: .95rem; margin-bottom: 0; }

@media print {
  .cabecera, .pie, .saltar, .calc__acciones { display: none !important; }
  body { background: #fff; font-size: 10.5pt; }
  .calc { padding: 0; max-width: none; }
  .calc__grid { grid-template-columns: 1fr; gap: 1rem; }
  .calc__form, .calc__resultados, .calc__supuestos { box-shadow: none; border: 1px solid #bbb; padding: .8rem; break-inside: avoid; }
  .calc__form .formulario, .calc__form { gap: .4rem; }
  .calc__tabla { min-width: 0; font-size: 9.5pt; }
  .calc__tabla thead th { background: #fff; color: #000; border-bottom: 2px solid #000; }
  .tabla-scroll { overflow: visible; }
  a.cita { color: #000; }
}

/* Móvil: cada indicador se apila con sus tres escenarios para no esconder columnas. */
@media screen and (max-width: 640px) {
  .calc__form, .calc__resultados, .calc__supuestos { padding: 1.1rem; }
  .calc__tabla { min-width: 0; }
  .calc__tabla thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .calc__tabla, .calc__tabla tbody, .calc__tabla tr, .calc__tabla th, .calc__tabla td { display: block; width: 100%; }
  .calc__tabla tr { border-bottom: 1px solid var(--borde); padding: .4rem 0; }
  .calc__tabla th[scope="row"] { border: 0; padding: .3rem 0; }
  .calc__tabla td { display: flex; justify-content: space-between; gap: 1rem; border: 0; padding: .15rem 0 .15rem .8rem; }
  .calc__tabla td::before { content: attr(data-label); font-weight: 600; color: var(--texto-suave); }
  .calc__tabla td > span { text-align: right; }
  .calc__fila-total { background: var(--rojo-suave); border-radius: 8px; }
  .calc__fila-total th[scope="row"], .calc__fila-total td { padding-left: .6rem; padding-right: .6rem; }
}
