:root {
  --bg: #f6f7f9;
  --panel: #ffffff;
  --text: #1c2430;
  --muted: #5d6878;
  --line: #dde2e8;
  --accent: #1f5fae;
  --accent-text: #ffffff;
  --ok-bg: #e3f4ea; --ok: #17693a;
  --warn-bg: #fdf1dc; --warn: #8a5300;
  --none-bg: #eef0f3; --none: #5d6878;
  --bad: #a3261b;
  --p1: #1f5fae; --p1-bg: #e8f0fb; --p2: #0c7455; --p2-bg: #e4f4ee; --paso-texto: #ffffff;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #12161c; --panel: #1a2029; --text: #e6eaf0; --muted: #9aa5b4; --line: #2d3642;
    --accent: #5b9bea; --accent-text: #0d1117;
    --ok-bg: #173826; --ok: #7fd6a2; --warn-bg: #3b2c12; --warn: #f0bf6a;
    --none-bg: #252c36; --none: #9aa5b4; --bad: #ff8a80;
    --p1: #5b9bea; --p1-bg: #16263b; --p2: #5fd0a5; --p2-bg: #12302a; --paso-texto: #0d1117;
  }
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; background: var(--bg); color: var(--text); font: 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; }
h1 { margin: 0; font-size: 1.35rem; }
h2 { font-size: 1rem; margin: 1.2rem 0 .6rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
h2:first-child { margin-top: 0; }
h3 { font-size: .95rem; margin: 1.4rem 0 .4rem; }
.lead { margin: 0; color: var(--muted); font-size: .9rem; }

.top { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; padding: 1rem 1.25rem; border-bottom: 1px solid var(--line); background: var(--panel); }
.acciones { display: flex; gap: .5rem; flex-wrap: wrap; }

.grid { display: grid; grid-template-columns: minmax(320px, 420px) 1fr; gap: 1rem; padding: 1rem 1.25rem; align-items: start; }
@media (max-width: 900px) { .grid { grid-template-columns: 1fr; padding: 1rem; } }
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 1rem 1.1rem; min-width: 0; }

label { display: block; font-size: .85rem; color: var(--muted); margin-bottom: .6rem; }
input, select, textarea { display: block; width: 100%; margin-top: .2rem; padding: .45rem .55rem; font: inherit; color: var(--text); background: var(--bg); border: 1px solid var(--line); border-radius: 6px; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
label.check { display: flex; gap: .45rem; align-items: flex-start; color: var(--text); }
label.check input { width: auto; margin-top: .2rem; }
label.small { font-size: .8rem; margin-bottom: .25rem; }
.fila { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
@media (max-width: 420px) { .fila { grid-template-columns: 1fr; } }
fieldset.docs { border: 1px dashed var(--line); border-radius: 6px; margin: 0 0 .7rem; padding: .5rem .7rem .2rem; }
fieldset.docs legend { font-size: .8rem; color: var(--muted); }

button { font: inherit; cursor: pointer; border-radius: 6px; padding: .45rem .9rem; border: 1px solid var(--accent); background: var(--accent); color: var(--accent-text); }
button.sec { background: transparent; color: var(--accent); }
button.icono { display: inline-grid; place-items: center; width: 2rem; height: 2rem; padding: 0; background: transparent; border-color: var(--line); color: var(--muted); align-self: center; }
button.icono:hover { border-color: var(--accent); }
button.icono svg { display: block; }
button.icono .i1 { fill: var(--p1); }
button.icono .i2 { fill: var(--p2); }
button.icono .i3 { fill: none; stroke: currentColor; stroke-width: 1.3; }
button.link { background: none; border: none; color: var(--bad); padding: 0; font-size: .8rem; }

.pista { font-size: .8rem; color: var(--muted); margin: -.3rem 0 .7rem; }
.datos-centro { border: 1px dashed var(--line); border-radius: 6px; padding: .5rem .7rem; margin-bottom: .7rem; }
.datos-centro summary { font-size: .85rem; color: var(--muted); cursor: pointer; }
.datos-centro[open] summary { margin-bottom: .5rem; }
.enlace-ext { align-self: center; font-size: .85rem; white-space: nowrap; }

.aportaciones { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: .5rem; }
.aportaciones li { border: 1px solid var(--line); border-radius: 8px; padding: .55rem .7rem; }
.aportaciones li.vacio { color: var(--muted); border-style: dashed; }
.ap-head { display: flex; justify-content: space-between; align-items: center; }
.ap-desc { margin: .25rem 0; font-weight: 500; overflow-wrap: anywhere; }
.tag { font-size: .72rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: .6rem; margin-bottom: 1rem; }
.kpi { border: 1px solid var(--line); border-radius: 8px; padding: .6rem .75rem; }
.kpi b { display: block; font-size: 1.5rem; font-variant-numeric: tabular-nums; }
.kpi span { color: var(--muted); font-size: .8rem; }

.tabla-wrap { overflow-x: auto; }
table { border-collapse: collapse; width: 100%; font-size: .88rem; }
th { text-align: left; font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); border-bottom: 2px solid var(--line); padding: .4rem .5rem; }
td { border-bottom: 1px solid var(--line); padding: .5rem; vertical-align: top; }
td.cod { font-variant-numeric: tabular-nums; white-space: nowrap; font-weight: 600; }
.sub { color: var(--muted); font-size: .78rem; margin-top: .15rem; }
.sub.aviso, .aviso { color: var(--warn); }
.badge { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .75rem; font-weight: 600; white-space: nowrap; }
.badge.ok { background: var(--ok-bg); color: var(--ok); }
.badge.warn { background: var(--warn-bg); color: var(--warn); }
.badge.bad { background: var(--none-bg); color: var(--bad); }
.aviso-box { background: var(--warn-bg); color: var(--warn); padding: .5rem .75rem; border-radius: 6px; font-size: .85rem; }
.badge.none { background: var(--none-bg); color: var(--none); }
.ok-txt { color: var(--ok); font-size: .8rem; }
input.cal { width: 5.5rem; padding: .2rem .35rem; font-size: .82rem; text-align: center; }
ul.faltan { margin: 0; padding-left: 1rem; color: var(--bad); font-size: .8rem; }
details { margin-top: .3rem; font-size: .8rem; }
details ul { padding-left: 1rem; margin: .2rem 0; }
.fuentes, .nv { font-size: .85rem; padding-left: 1.1rem; }
.nv { color: var(--warn); }
a { color: var(--accent); }
.disclaimer { font-size: .78rem; color: var(--muted); margin-top: 1.5rem; }
.pie-autor { display: flex; align-items: center; gap: .9rem; flex-wrap: wrap; margin-top: 1rem; padding-top: .9rem; border-top: 1px solid var(--line); }
/* El logotipo es oscuro sobre fondo transparente: se le pone un fondo claro
   para que se lea igual en modo claro y en modo oscuro. */
.logo-ies { width: 170px; height: auto; display: block; background: #fff; padding: .45rem .6rem; border-radius: 8px; }
.autor { font-size: .78rem; color: var(--muted); margin: 0; }

/* Pasos: 1 (ciclo de destino) y 2 (lo que aporta) se distinguen por color */
.entrada { display: grid; gap: 1rem; min-width: 0; }

/* Vista alternativa (botón de la cabecera): pasos 1 y 2 en dos columnas arriba y el resultado debajo, a todo el ancho */
body.vista-arriba .grid { grid-template-columns: 1fr; }
body.vista-arriba .entrada { grid-template-columns: 1fr 1fr; align-items: start; }
@media (max-width: 900px) {
  body.vista-arriba .entrada { grid-template-columns: 1fr; }
  #btn-vista { display: none; } /* en pantallas estrechas las dos vistas son la misma */
}
.paso { background: var(--panel); border: 1px solid var(--line); border-left: 6px solid var(--paso); border-radius: 10px; padding: 0 1.1rem 1rem; min-width: 0; }
.paso-1 { --paso: var(--p1); --paso-bg: var(--p1-bg); }
.paso-2 { --paso: var(--p2); --paso-bg: var(--p2-bg); }
.paso-3 { --paso: var(--muted); }
.paso > h2, h2.titulo-paso { display: flex; align-items: center; gap: .65rem; text-transform: none; letter-spacing: 0; font-size: 1.05rem; color: var(--text); }
.paso > h2 { margin: 0 -1.1rem .9rem; padding: .7rem 1.1rem; background: var(--paso-bg); border-bottom: 1px solid var(--line); border-radius: 0 9px 0 0; }
h2.titulo-paso { margin: 0 0 .8rem; }
.paso > h2 small { display: block; font-weight: 400; font-size: .8rem; color: var(--muted); }
.paso-num { display: inline-grid; place-items: center; flex: none; width: 1.9rem; height: 1.9rem; border-radius: 50%; background: var(--paso); color: var(--paso-texto); font-weight: 700; font-size: 1rem; }
.paso-2 form button[type="submit"] { background: var(--p2); border-color: var(--p2); color: var(--paso-texto); }
.paso-2 input:focus, .paso-2 select:focus, .paso-2 textarea:focus { outline-color: var(--p2); }
.paso-2 .aportaciones li:not(.vacio) { border-left: 3px solid var(--p2); }

/* Cuántos ciclos tienen ya su normativa cargada */
.progreso { margin-top: .45rem; font-size: .82rem; color: var(--muted); max-width: 34rem; }
.progreso b { color: var(--text); }
.progreso .barra { height: 6px; border-radius: 3px; background: var(--none-bg); margin: .3rem 0; overflow: hidden; }
.progreso .barra i { display: block; height: 100%; background: var(--ok); border-radius: 3px; }
.progreso .detalle { font-size: .76rem; }

/* Bloques plegables del final de la página */
.plegable { border: 1px solid var(--line); border-radius: 8px; padding: .5rem .8rem; margin-top: .7rem; }
.plegable summary { cursor: pointer; font-weight: 600; font-size: .9rem; }
.plegable summary span { font-weight: 400; color: var(--muted); }
.plegable[open] summary { margin-bottom: .4rem; }
.plegable ul { margin: 0; }
.print-only { display: none; }
#informe, #resolucion, #exencion, #solicitudes, #listado { display: none; }

@media print {
  @page { size: A4; margin: 14mm 12mm 16mm; }
  :root { --text: #000; --muted: #333; --line: #999; }
  html, body { background: #fff; color: #000; font-family: Georgia, "Times New Roman", serif; font-size: 9.5pt; }
  .top, main { display: none !important; }
  body.doc-anexo #informe { display: block; }
  body.doc-resolucion #resolucion { display: block; }
  body.doc-exencion #exencion { display: block; }
  body.doc-solicitudes #solicitudes { display: block; }
  body.doc-listado #listado { display: block; }

  /* Solicitud y listado */
  #solicitudes, #listado { font-size: 10.5pt; line-height: 1.45; }
  .hoja.corte { break-after: page; }
  .sol-orden { text-align: right; font-size: 8.5pt; color: #333; margin: -8pt 0 10pt; }
  .sol-docs { list-style: none; padding: 0; margin: 0 0 10pt; font-size: 9.5pt; }
  .sol-docs li { margin-bottom: 2pt; }
  .sol-destino { margin-top: 16pt; font-size: 9.5pt; }
  .sol-registro { margin-top: 10pt; border: 1px solid #000; padding: 6pt 8pt; width: 54%; font-size: 8.5pt; }

  /* Resolución de dirección */
  #resolucion, #exencion { font-size: 10.5pt; line-height: 1.45; }
  .res-membrete { font-size: 8.5pt; line-height: 1.3; margin-bottom: 18pt; }
  .res-titulo { font-size: 12pt; font-weight: bold; text-align: center; text-transform: uppercase;
                margin: 0 0 16pt; line-height: 1.3; }
  .res-p { text-align: justify; margin: 0 0 9pt; }
  .res-sub { text-align: center; font-size: 9pt; font-style: italic; margin: -10pt 0 14pt; }
  .res-datos { margin-bottom: 12pt; }
  .res-datos th { background: #f2f2f2; }
  .res-tabla { width: 100%; border-collapse: collapse; margin: 12pt 0 16pt; }
  .res-tabla th, .res-tabla td { border: 1px solid #000; padding: 4pt 5pt; text-align: left; font-size: 10pt;
                                 text-transform: none; letter-spacing: 0; color: #000; }
  .res-tabla tbody th { background: #f2f2f2; font-weight: bold; }
  .res-tabla thead th { background: #eee; font-weight: bold; }
  .res-tabla tbody td { height: 16pt; }
  .res-tabla .cod { font-family: "Courier New", monospace; }
  .res-tabla .num { text-align: center; }
  .res-tabla th.num { text-align: center; }
  .res-recursos { font-size: 8pt; line-height: 1.3; text-align: justify; margin: 10pt 0 0; }
  .res-normas { margin: 0; padding-left: 12pt; font-size: 8pt; line-height: 1.3; }
  .res-normas li { margin-bottom: 2.5pt; break-inside: avoid; }
  .res-normas a { color: #000; text-decoration: none; font-weight: bold; }
  .res-normas .url { display: block; font-size: 7pt; color: #333; overflow-wrap: anywhere; }
  .res-apartado { font-size: 10pt; font-weight: bold; margin: 10pt 0 3pt; border: none; text-transform: none; letter-spacing: 0; }
  .res-nota { font-size: 8pt; color: #333; margin-top: 2pt; }
  .res-recibi { font-size: 9pt; margin: 6pt 0 0; }
  .res-lugar { margin: 20pt 0 0; }
  .res-firma { margin-top: 10pt; text-align: center; break-inside: avoid; }
  .res-firma p { margin: 0; }
  .res-linea { height: 44pt; }

  /* Cabecera del anexo */
  .inf-head { border-bottom: 2px solid #000; padding-bottom: 6pt; margin-bottom: 10pt; }
  .inf-centro { font-size: 9pt; text-transform: uppercase; letter-spacing: .08em; min-height: 11pt; }
  #informe h1 { font-size: 13.5pt; margin: 4pt 0 2pt; letter-spacing: .01em; }
  .inf-sub { margin: 0; font-size: 8.5pt; font-style: italic; color: #333; }
  #informe h2 { font-size: 10.5pt; margin: 12pt 0 4pt; padding-bottom: 2pt; border-bottom: 1px solid #000;
                text-transform: none; letter-spacing: 0; color: #000; break-after: avoid; }

  /* Ficha de datos */
  .inf-datos { width: 100%; border-collapse: collapse; margin-bottom: 4pt; }
  .inf-datos th, .inf-datos td { border: 1px solid #999; padding: 3pt 5pt; text-align: left; font-size: 9pt; vertical-align: top; }
  .inf-datos th { width: 22%; background: #f0f0f0; font-weight: bold; text-transform: none; letter-spacing: 0; color: #000; }

  /* Tablas del anexo */
  .inf-tabla { width: 100%; border-collapse: collapse; }
  .inf-tabla th, .inf-tabla td { border: 1px solid #999; padding: 3pt 4pt; vertical-align: top; font-size: 8.5pt; text-align: left; }
  .inf-tabla thead th { background: #e8e8e8; font-weight: bold; font-size: 8pt; text-transform: uppercase;
                        letter-spacing: .03em; color: #000; }
  .inf-tabla thead { display: table-header-group; }
  .inf-tabla tr { break-inside: avoid; }
  .inf-tabla .cod { font-family: "Courier New", monospace; white-space: nowrap; font-weight: bold; }
  .inf-tabla .num { text-align: right; white-space: nowrap; }
  .inf-tabla th.num { text-align: right; }
  .inf-tabla .r-si td { background: #f4f4f4; }
  .inf-tabla .r-no td { color: #444; }
  .falta { font-weight: bold; }
  .vacio-td { text-align: center; font-style: italic; color: #444; }
  .inf-resumen th { background: #f0f0f0; text-align: left; text-transform: none; letter-spacing: 0; color: #000; }
  .inf-resumen td { width: 22%; font-weight: bold; }
  .inf-parrafo { margin: 0; font-size: 9pt; }
  .inf-lista { margin: 0; padding-left: 14pt; font-size: 8.5pt; }
  .inf-lista li { margin-bottom: 2pt; break-inside: avoid; }

  /* Firmas */
  .inf-firmas { margin-top: 18pt; break-inside: avoid; text-align: center; }
  .inf-lugar { font-size: 9pt; margin: 0 0 14pt; text-align: right; }
  .inf-firma { display: inline-block; width: 45%; vertical-align: top; font-size: 8.5pt; }
  .inf-firma p { margin: 0; }
  .inf-linea { border-bottom: 1px solid #000; height: 34pt; margin: 0 14pt; }
  .inf-fdo { margin-top: 3pt; }
  .inf-pie { margin-top: 14pt; padding-top: 4pt; border-top: 1px solid #999; font-size: 7.5pt; color: #333; }
}
