/* Arzúa+Concilia · panel de xestión */
:root {
  --violeta: #9b2c98;
  --violeta-escuro: #7a1f78;
  --violeta-suave: #f6eaf6;
  --violeta-medio: #e7c8e6;
  --azul: #68ace5;
  --azul-texto: #23679f;
  --azul-suave: #eaf4fc;
  --tinta: #1f1a24;
  --tinta-suave: #635c6b;
  --tinta-tenue: #8d8794;
  --liña: #e8e4ec;
  --fondo: #f6f5f8;
  --branco: #fff;
  --ok: #1a7f37;
  --ok-suave: #e7f5ec;
  --aviso: #9a5b00;
  --aviso-suave: #fff3df;
  --erro: #b42318;
  --erro-suave: #fdeceb;
  --gris-suave: #f0eef2;
  --raio: 14px;
  --raio-p: 10px;
  --sombra: 0 1px 2px rgba(31, 26, 36, .05), 0 2px 12px rgba(31, 26, 36, .04);
  --sombra-alta: 0 10px 40px rgba(31, 26, 36, .14);
  --titulos: 'Quicksand', 'Nunito', system-ui, sans-serif;
  --texto: 'Nunito', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-padding-top: 24px; }
body { margin: 0; font: 15.5px/1.55 var(--texto); color: var(--tinta); background: var(--fondo); -webkit-font-smoothing: antialiased; }
a { color: var(--violeta); text-underline-offset: 3px; }
img { display: block; max-width: 100%; }
h1, h2, h3, h4 { font-family: var(--titulos); font-weight: 700; line-height: 1.25; margin: 0; letter-spacing: -.01em; }
h1 { font-size: 1.75rem; }
h2 { font-size: 1.15rem; }
h3 { font-size: 1rem; }
p { margin: 0 0 .8em; }
:focus-visible { outline: 3px solid var(--azul); outline-offset: 2px; border-radius: 6px; }
.tenue { color: var(--tinta-suave); }
.mini { font-size: .85rem; }
.num { font-variant-numeric: tabular-nums; }
[hidden] { display: none !important; }
.visualmente-oculto { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Estrutura ---------- */
.app { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; }
.lateral { background: var(--branco); border-right: 1px solid var(--liña); display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; padding: 20px 14px; }
.lateral .marca { display: flex; flex-direction: column; gap: 8px; padding: 4px 10px 20px; text-decoration: none; }
.lateral .marca img { width: 150px; }
.lateral .marca span { font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--azul-texto); }
.menu { display: grid; gap: 2px; }
.menu .grupo { font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-tenue); padding: 18px 12px 6px; }
.menu a { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: var(--raio-p); color: var(--tinta-suave); text-decoration: none; font-weight: 700; }
.menu a svg { flex: none; color: var(--tinta-tenue); }
.menu a:hover { background: var(--gris-suave); color: var(--tinta); }
.menu a.activo { background: var(--violeta-suave); color: var(--violeta); }
.menu a.activo svg { color: var(--violeta); }
.menu .contador { margin-left: auto; background: var(--violeta); color: #fff; font-size: .75rem; padding: 1px 8px; border-radius: 999px; }
.lateral .usuario { margin-top: auto; border-top: 1px solid var(--liña); padding: 16px 8px 0; display: flex; align-items: center; gap: 10px; }
.avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--azul-suave); color: var(--azul-texto); display: grid; place-items: center; font-weight: 800; flex: none; text-transform: uppercase; }
.usuario .nome { font-weight: 700; line-height: 1.2; font-size: .92rem; }
.usuario form { margin-left: auto; }
.usuario button { background: none; border: 0; color: var(--tinta-tenue); cursor: pointer; padding: 6px; border-radius: 8px; }
.usuario button:hover { background: var(--gris-suave); color: var(--erro); }

.principal { min-width: 0; padding: 28px 36px 64px; }
.cabeceira { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px 24px; flex-wrap: wrap; margin-bottom: 24px; }
.cabeceira .subtitulo { color: var(--tinta-suave); margin: 6px 0 0; }
.migas { font-size: .88rem; color: var(--tinta-tenue); margin-bottom: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
.migas a { color: var(--tinta-suave); text-decoration: none; }
.migas a:hover { color: var(--violeta); }

.barra-movil { display: none; }
/* Contorna de probas: no escritorio a franxa queda fixa arriba e o menú lateral debaixo dela */
@media (min-width: 981px) {
  .aviso-probas { position: sticky; top: 0; z-index: 60; height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .aviso-probas ~ .app .lateral { top: 36px; height: calc(100vh - 36px); }
}
@media (max-width: 980px) {
  .app { grid-template-columns: 1fr; }
  .lateral { position: fixed; inset: 0 auto 0 0; width: 270px; z-index: 50; transform: translateX(-100%); transition: transform .2s; box-shadow: var(--sombra-alta); }
  .app.menu-aberto .lateral { transform: none; }
  .app.menu-aberto::after { content: ''; position: fixed; inset: 0; background: rgba(31,26,36,.35); z-index: 40; }
  .barra-movil { display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: var(--branco); border-bottom: 1px solid var(--liña); position: sticky; top: 0; z-index: 30; }
  .barra-movil img { width: 110px; }
  .principal { padding: 20px 16px 48px; }
}

/* ---------- Botóns ---------- */
.boton { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font: 700 .93rem var(--texto); text-decoration: none; padding: 9px 16px; border-radius: var(--raio-p); border: 1.5px solid var(--violeta); background: var(--violeta); color: #fff; cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s; }
.boton:hover { background: var(--violeta-escuro); border-color: var(--violeta-escuro); color: #fff; }
.boton.secundario { background: var(--branco); color: var(--tinta); border-color: var(--liña); }
.boton.secundario:hover { border-color: var(--violeta-medio); background: var(--violeta-suave); color: var(--violeta-escuro); }
.boton.fantasma { background: none; border-color: transparent; color: var(--tinta-suave); }
.boton.fantasma:hover { background: var(--gris-suave); color: var(--tinta); }
.boton.pequeno { padding: 6px 12px; font-size: .85rem; }
.boton.icona { padding: 8px; }
.botons { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.boton-menu { background: none; border: 0; padding: 6px; cursor: pointer; color: var(--tinta); }

/* ---------- Tarxetas ---------- */
.tarxeta { background: var(--branco); border: 1px solid var(--liña); border-radius: var(--raio); box-shadow: var(--sombra); }
.tarxeta > .cab { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--liña); flex-wrap: wrap; }
.tarxeta > .corpo { padding: 20px 22px; }
.tarxeta > .corpo.sen-recheo { padding: 0; }
.tarxeta + .tarxeta { margin-top: 20px; }
.reixa { display: grid; gap: 20px; }
.reixa.dous { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); align-items: start; }
.reixa.tres { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
@media (max-width: 1180px) { .reixa.dous { grid-template-columns: 1fr; } }
.columna { display: grid; gap: 20px; align-content: start; }
.columna > .tarxeta + .tarxeta { margin-top: 0; }

/* Indicadores */
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 24px; }
.kpi { background: var(--branco); border: 1px solid var(--liña); border-radius: var(--raio); padding: 18px 20px; box-shadow: var(--sombra); display: flex; gap: 14px; align-items: center; text-decoration: none; color: inherit; transition: border-color .15s, transform .15s; }
a.kpi:hover { border-color: var(--violeta-medio); transform: translateY(-1px); }
.kpi .icona-kpi { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--violeta-suave); color: var(--violeta); flex: none; }
.kpi.azul .icona-kpi { background: var(--azul-suave); color: var(--azul-texto); }
.kpi.aviso .icona-kpi { background: var(--aviso-suave); color: var(--aviso); }
.kpi.ok .icona-kpi { background: var(--ok-suave); color: var(--ok); }
.kpi .valor { font: 700 1.7rem/1 var(--titulos); }
.kpi .etiqueta { color: var(--tinta-suave); font-size: .9rem; margin-top: 4px; }

/* Etiquetas de estado */
.estado { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; font-size: .78rem; padding: 3px 10px; border-radius: 999px; white-space: nowrap; background: var(--gris-suave); color: var(--tinta-suave); }
.estado::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.estado.presentada, .estado.proximamente { background: var(--azul-suave); color: var(--azul-texto); }
.estado.subsanacion, .estado.agarda { background: var(--aviso-suave); color: var(--aviso); }
.estado.validada, .estado.admitida, .estado.aberta { background: var(--ok-suave); color: var(--ok); }
.estado.excluida { background: var(--erro-suave); color: var(--erro); }
.estado.renuncia, .estado.pechada, .estado.pendente, .estado.borrador { background: var(--gris-suave); color: var(--tinta-suave); }
.etiqueta-sit { display: inline-block; font-size: .75rem; font-weight: 700; padding: 1px 8px; border-radius: 6px; background: var(--violeta-suave); color: var(--violeta-escuro); margin: 1px 2px 1px 0; white-space: nowrap; }
.chips { display: flex; flex-wrap: wrap; gap: 4px; }
.chip { font-size: .78rem; font-weight: 800; padding: 2px 8px; border-radius: 6px; background: var(--gris-suave); color: var(--tinta-suave); white-space: nowrap; }
.chip.admitida { background: var(--ok-suave); color: var(--ok); }
.chip.agarda { background: var(--aviso-suave); color: var(--aviso); }
.chip.excluida { background: var(--erro-suave); color: var(--erro); text-decoration: line-through; }
.docs-ok { color: var(--ok); font-weight: 700; display: inline-flex; gap: 4px; align-items: center; white-space: nowrap; }
.docs-faltan { color: var(--aviso); font-weight: 700; display: inline-flex; gap: 4px; align-items: center; white-space: nowrap; }

/* Ocupación */
.ocupacion { display: grid; gap: 14px; }
.ocupacion .fila { display: grid; grid-template-columns: 150px minmax(0, 1fr) 92px; gap: 14px; align-items: center; }
.ocupacion .fila .nome { font-weight: 700; line-height: 1.2; }
.ocupacion .fila .nome small { display: block; font-weight: 400; color: var(--tinta-tenue); font-size: .8rem; }
.ocupacion .cifras { text-align: right; font-size: .88rem; color: var(--tinta-suave); }
.ocupacion .cifras strong { color: var(--tinta); font-size: 1rem; }
.barra { position: relative; height: 12px; border-radius: 999px; background: var(--gris-suave); overflow: hidden; display: flex; }
.barra .concedidas { background: var(--ok); }
.barra .pendentes { background: var(--azul); }
.barra .limite { position: absolute; top: -2px; bottom: -2px; width: 2px; background: var(--tinta); border-radius: 2px; }
.barra.chea { box-shadow: inset 0 0 0 1px var(--ok); }
.lenda { display: flex; gap: 16px; flex-wrap: wrap; font-size: .82rem; color: var(--tinta-suave); }
.lenda span::before { content: ''; display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; background: var(--gris-suave); }
.lenda .l-concedidas::before { background: var(--ok); }
.lenda .l-pendentes::before { background: var(--azul); }
.lenda .l-limite::before { width: 2px; background: var(--tinta); }
@media (max-width: 640px) { .ocupacion .fila { grid-template-columns: 1fr auto; } .ocupacion .barra { grid-column: 1 / -1; order: 3; } }
.demanda-alta { color: var(--erro); font-weight: 800; }

/* Táboas */
.taboa-envoltorio { overflow-x: auto; }
.taboa { width: 100%; border-collapse: collapse; font-size: .93rem; }
.taboa th { text-align: left; font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--tinta-tenue); padding: 12px 16px; border-bottom: 1px solid var(--liña); background: #fcfbfd; white-space: nowrap; }
.taboa td { padding: 12px 16px; border-bottom: 1px solid var(--liña); vertical-align: middle; }
.taboa tr:last-child td { border-bottom: 0; }
.taboa tbody tr { transition: background .1s; }
.taboa tbody tr.ligazon { cursor: pointer; }
.taboa tbody tr.ligazon:hover { background: var(--violeta-suave); }
.taboa .codigo { font-weight: 800; color: var(--violeta); text-decoration: none; white-space: nowrap; font-variant-numeric: tabular-nums; }
.taboa .persoa { font-weight: 700; }
.taboa .persoa small { display: block; font-weight: 400; color: var(--tinta-tenue); }
.taboa .dereita { text-align: right; }

/* Filtros */
.filtros { display: grid; gap: 12px; padding: 16px 22px; border-bottom: 1px solid var(--liña); }
.filtros .liña { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.filtros .busca { flex: 1 1 280px; position: relative; }
.filtros .busca svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--tinta-tenue); }
.filtros .busca input { padding-left: 38px; }
.filtros select { flex: 0 1 auto; width: auto; }
.interruptor { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; border: 1.5px solid var(--liña); border-radius: var(--raio-p); background: var(--branco); cursor: pointer; font-weight: 700; font-size: .88rem; color: var(--tinta-suave); user-select: none; }
.interruptor input { accent-color: var(--violeta); width: 16px; height: 16px; margin: 0; }
.interruptor:has(input:checked) { border-color: var(--violeta); background: var(--violeta-suave); color: var(--violeta-escuro); }
.resumo-lista { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 22px; font-size: .9rem; color: var(--tinta-suave); border-bottom: 1px solid var(--liña); }

/* Campos */
input[type=text], input[type=search], input[type=email], input[type=url], input[type=number], input[type=date], input[type=datetime-local], input[type=password], select, textarea {
  font: inherit; font-size: .95rem; padding: 9px 12px; border: 1.5px solid #d9d3df; border-radius: var(--raio-p); background: var(--branco); color: var(--tinta); width: 100%; transition: border-color .15s, box-shadow .15s;
}
select { padding-right: 32px; appearance: none; background: var(--branco) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23635c6b' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") right 12px center no-repeat; cursor: pointer; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--violeta); box-shadow: 0 0 0 4px rgba(155,44,152,.12); }
textarea { resize: vertical; }
.campo { display: flex; flex-direction: column; gap: 5px; }
.campo > label { font-weight: 700; font-size: .9rem; }
.campo .axuda { font-size: .82rem; color: var(--tinta-tenue); margin: 0; }
.campo.erro input, .campo.erro select, .campo.erro textarea { border-color: var(--erro); }
.erros { list-style: none; margin: 0; padding: 0; color: var(--erro); font-weight: 700; font-size: .85rem; }
.erros-xerais { background: var(--erro-suave); color: var(--erro); border-radius: var(--raio-p); padding: 12px 16px; margin-bottom: 16px; }
.casilla { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; font-weight: 700; font-size: .92rem; }
.casilla input { width: 18px; height: 18px; accent-color: var(--violeta); margin-top: 2px; flex: none; }
.formulario { display: grid; gap: 16px 20px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.formulario .ancho { grid-column: 1 / -1; }
@media (max-width: 720px) { .formulario { grid-template-columns: 1fr; } }

/* Ficha de solicitude */
.cabeceira-ficha { display: flex; gap: 18px; align-items: center; }
.cabeceira-ficha .avatar { width: 56px; height: 56px; font-size: 1.3rem; background: var(--violeta-suave); color: var(--violeta); font-family: var(--titulos); }
.datos { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 8px 16px; margin: 0; font-size: .94rem; }
.datos dt { color: var(--tinta-tenue); }
.datos dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
@media (max-width: 640px) { .datos { grid-template-columns: 1fr; gap: 0; } .datos dd { margin-bottom: 8px; } }
.subseccion { font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--azul-texto); margin: 20px 0 10px; }
.subseccion:first-child { margin-top: 0; }
.persoas { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
.persoa-tarxeta { border: 1px solid var(--liña); border-radius: var(--raio-p); padding: 14px 16px; }
.persoa-tarxeta .nome { font-weight: 800; margin-bottom: 6px; }
.persoa-tarxeta ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; font-size: .9rem; }
.persoa-tarxeta li { display: flex; gap: 8px; align-items: center; }
.persoa-tarxeta li svg { color: var(--tinta-tenue); flex: none; }
.marcas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.marca-si, .marca-non { font-size: .78rem; font-weight: 700; padding: 2px 8px; border-radius: 6px; }
.marca-si { background: var(--ok-suave); color: var(--ok); }
.marca-non { background: var(--gris-suave); color: var(--tinta-tenue); }
.alerta-saude { display: flex; gap: 12px; background: var(--erro-suave); color: #7a1a12; border-radius: var(--raio-p); padding: 12px 14px; margin-top: 14px; }
.alerta-saude svg { flex: none; color: var(--erro); }

/* Quendas na ficha */
.quenda-decision { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 16px; align-items: center; padding: 14px 22px; border-bottom: 1px solid var(--liña); }
.quenda-decision:last-child { border-bottom: 0; }
.quenda-decision .nome { font-weight: 800; }
.quenda-decision .info { font-size: .85rem; color: var(--tinta-suave); }
.quenda-decision .barra { height: 6px; margin-top: 8px; max-width: 280px; }
.segmentado { display: inline-flex; background: var(--gris-suave); border-radius: var(--raio-p); padding: 3px; gap: 2px; flex-wrap: wrap; }
.segmentado button { border: 0; background: none; font: 700 .82rem var(--texto); padding: 6px 11px; border-radius: 8px; cursor: pointer; color: var(--tinta-suave); white-space: nowrap; }
.segmentado button:hover { background: var(--branco); color: var(--tinta); }
.segmentado button.activo { background: var(--branco); box-shadow: 0 1px 3px rgba(0,0,0,.1); }
.segmentado button.activo.pendente { color: var(--tinta); }
.segmentado button.activo.admitida { color: var(--ok); }
.segmentado button.activo.agarda { color: var(--aviso); }
.segmentado button.activo.excluida { color: var(--erro); }
@media (max-width: 640px) { .quenda-decision { grid-template-columns: 1fr; } }

/* Documentos */
.lista-docs { list-style: none; margin: 0; padding: 0; }
.lista-docs li { display: flex; gap: 12px; align-items: center; padding: 12px 22px; border-bottom: 1px solid var(--liña); }
.lista-docs li:last-child { border-bottom: 0; }
.lista-docs .icona-doc { width: 36px; height: 36px; border-radius: 9px; display: grid; place-items: center; background: var(--azul-suave); color: var(--azul-texto); flex: none; }
.lista-docs .icona-doc.falta { background: var(--aviso-suave); color: var(--aviso); }
.lista-docs .texto { min-width: 0; flex: 1; }
.lista-docs .texto strong { display: block; font-size: .92rem; }
.lista-docs .texto span { display: block; font-size: .82rem; color: var(--tinta-tenue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Historial */
.historial { list-style: none; margin: 0; padding: 0; position: relative; }
.historial li { position: relative; padding: 0 0 16px 22px; font-size: .9rem; }
.historial li::before { content: ''; position: absolute; left: 4px; top: 7px; width: 8px; height: 8px; border-radius: 50%; background: var(--violeta); }
.historial li::after { content: ''; position: absolute; left: 7px; top: 18px; bottom: 0; width: 2px; background: var(--liña); }
.historial li:last-child::after { display: none; }
.historial li:last-child { padding-bottom: 0; }
.historial .cando { display: block; font-size: .8rem; color: var(--tinta-tenue); }

/* Mensaxes flotantes */
.avisos { position: fixed; right: 24px; bottom: 24px; z-index: 60; display: grid; gap: 10px; max-width: min(420px, calc(100vw - 32px)); }
.aviso-flotante { display: flex; gap: 12px; align-items: flex-start; background: var(--tinta); color: #fff; padding: 14px 16px; border-radius: 12px; box-shadow: var(--sombra-alta); font-weight: 600; animation: entrar .25s ease-out; }
.aviso-flotante.success svg { color: #7ee2a0; }
.aviso-flotante.error { background: var(--erro); }
.aviso-flotante.warning { background: var(--aviso); }
.aviso-flotante button { margin-left: auto; background: none; border: 0; color: inherit; opacity: .7; cursor: pointer; font-size: 1.1rem; line-height: 1; }
@keyframes entrar { from { opacity: 0; transform: translateY(8px); } }

/* Estados baleiros e paxinación */
.baleiro { text-align: center; padding: 48px 24px; color: var(--tinta-suave); }
.baleiro svg { color: var(--violeta-medio); margin: 0 auto 12px; }
.paxinacion { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 22px; border-top: 1px solid var(--liña); font-size: .9rem; color: var(--tinta-suave); flex-wrap: wrap; }

/* Convocatorias */
.conv { display: flex; flex-direction: column; gap: 14px; padding: 22px; text-decoration: none; color: inherit; transition: border-color .15s, transform .15s; }
a.conv:hover { border-color: var(--violeta-medio); transform: translateY(-1px); }
.conv .titulo { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.conv .titulo h2 { font-size: 1.3rem; }
.conv .metas { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: .88rem; color: var(--tinta-suave); }
.conv .metas span { display: inline-flex; gap: 6px; align-items: center; }
.conv .metas svg { color: var(--tinta-tenue); }

/* Editor de quendas */
.taboa-quendas td { padding: 8px 10px; }
.taboa-quendas input { padding: 7px 10px; }
.taboa-quendas .col-prazas { width: 100px; }
.taboa-quendas .col-data { width: 160px; }
.taboa-quendas tr.eliminada { opacity: .4; }
.taboa-quendas tr.eliminada input:not([type=checkbox]) { text-decoration: line-through; }
.xerador { display: flex; gap: 10px; align-items: end; flex-wrap: wrap; background: var(--azul-suave); border-radius: var(--raio-p); padding: 14px 16px; margin: 16px 22px; }
.xerador .campo { flex: 0 1 160px; }
.xerador .campo input { background: var(--branco); }
.barra-gardar { position: sticky; bottom: 0; z-index: 10; display: flex; justify-content: flex-end; gap: 10px; padding: 14px 0; margin-top: 20px; background: linear-gradient(to top, var(--fondo) 70%, transparent); }

/* Entrar */
.pantalla-entrar { min-height: 100vh; display: grid; grid-template-columns: 1fr 1fr; }
.pantalla-entrar .ilustracion { background: linear-gradient(160deg, var(--violeta), var(--violeta-escuro)); color: #fff; display: flex; flex-direction: column; justify-content: space-between; padding: 48px; position: relative; overflow: hidden; }
.pantalla-entrar .ilustracion img.logo { width: 200px; }
.pantalla-entrar .ilustracion .simbolo { position: absolute; right: -60px; bottom: -40px; width: 420px; opacity: .14; }
.pantalla-entrar .ilustracion h1 { font-size: 2.2rem; max-width: 12em; color: #fff; }
.pantalla-entrar .ilustracion p { color: #f2d7f1; max-width: 26em; }
.pantalla-entrar .formulario-entrar { display: grid; place-items: center; padding: 32px 20px; background: var(--branco); }
.formulario-entrar form { width: min(380px, 100%); display: grid; gap: 16px; }
.formulario-entrar .boton { width: 100%; padding: 12px; font-size: 1rem; }
@media (max-width: 860px) { .pantalla-entrar { grid-template-columns: 1fr; } .pantalla-entrar .ilustracion { padding: 28px; min-height: 220px; } .pantalla-entrar .ilustracion h1 { font-size: 1.6rem; } }

@media print {
  .lateral, .barra-movil, .botons, .avisos, .non-imprimir { display: none !important; }
  .app { display: block; }
  .principal { padding: 0; }
  .tarxeta { box-shadow: none; break-inside: avoid; }
  body { background: #fff; }
}
.taboa-quendas input[name$="-DELETE"] { position: absolute; opacity: 0; pointer-events: none; }
.taboa-quendas tr.eliminada label.boton { background: var(--erro-suave); }

/* Axustes de disposición */
.reixa > *, .columna { min-width: 0; }
.kpi .valor, .kpi .etiqueta { display: block; }
.taboa .persoa { white-space: nowrap; }
.taboa .persoa small { white-space: nowrap; }
.taboa-quendas td:first-child { min-width: 170px; }
.taboa-quendas .col-data { width: 175px; min-width: 165px; }
.taboa-quendas .col-prazas { width: 110px; min-width: 90px; }
.ancho-completo { margin-top: 20px; }
.columna > *, .tarxeta { min-width: 0; }
.taboa td, .taboa th { padding-left: 12px; padding-right: 12px; }
.taboa .chips { max-width: 150px; }
.aviso-docs-novos { display: flex; gap: 12px; align-items: center; background: var(--aviso-suave); color: #5f3a00; padding: 14px 22px; border-bottom: 1px solid var(--liña); }
.aviso-docs-novos > span:first-child { color: var(--aviso); }
.aviso-docs-novos .boton { margin-left: auto; }
.menu a.subitem { padding-left: 42px; font-size: .88rem; font-weight: 600; }
.menu .contador.aviso { background: var(--aviso); }

/* Validación de documentos */
.check-validar { display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border: 1.5px solid var(--liña); border-radius: var(--raio-p); font-weight: 700; font-size: .85rem; color: var(--tinta-suave); cursor: pointer; user-select: none; white-space: nowrap; background: var(--branco); transition: background .15s, border-color .15s, color .15s; }
.check-validar input { width: 17px; height: 17px; margin: 0; accent-color: var(--ok); cursor: pointer; }
.check-validar:hover { border-color: var(--ok); }
.check-validar:has(input:checked) { border-color: var(--ok); background: var(--ok-suave); color: var(--ok); }
.form-validar { margin-left: 4px; }
.form-validar.gardando { opacity: .55; pointer-events: none; }
.documento-fila.validado .icona-doc { background: var(--ok-suave); color: var(--ok); }
.lista-docs .texto .texto-validacion { color: var(--aviso); font-weight: 700; font-size: .78rem; }
.documento-fila.validado .texto .texto-validacion { color: var(--ok); }
.docs-sen-validar { color: var(--aviso); font-weight: 700; font-size: .88rem; white-space: nowrap; margin-left: 10px; }
.docs-ok, .docs-faltan { font-size: .88rem; }
@media (max-width: 640px) { .lista-docs li { flex-wrap: wrap; } .form-validar { margin-left: 48px; } }
.documento-fila { flex-wrap: wrap; }
.documento-fila .texto { flex: 1 1 calc(100% - 52px); }
.accions-doc { display: flex; align-items: center; gap: 4px; width: 100%; padding-left: 48px; }
.accions-doc .form-validar { margin-left: auto; }
.lista-docs .texto span[title] { white-space: nowrap; }

/* Ficha: documentación protagonista e estado automático */
.tarxeta-documentacion { border-color: var(--violeta-medio); box-shadow: 0 0 0 3px var(--violeta-suave), var(--sombra); }
.caixa-subsanacion { background: var(--aviso-suave); color: #5f3a00; padding: 14px 22px; border-bottom: 1px solid var(--liña); }
.caixa-subsanacion strong { display: inline-flex; gap: 6px; align-items: center; color: var(--aviso); }
.caixa-subsanacion p { margin: 4px 0 0; }
.documento-fila.rexeitado .icona-doc { background: var(--erro-suave); color: var(--erro); }
.documento-fila.rexeitado .texto strong, .documento-fila.rexeitado .texto span[title] { text-decoration: line-through; color: var(--tinta-tenue); }
.documento-fila.rexeitado .texto .texto-validacion { color: var(--erro); }
.pe-documentacion { border-top: 1px solid var(--liña); padding: 18px 22px; display: grid; gap: 16px; background: #fcfbfd; border-radius: 0 0 var(--raio) var(--raio); }
.liña-renda { display: flex; gap: 8px; max-width: 360px; }
.liña-renda input { flex: 1; }
.obrigatoria-validar { font-size: .75rem; font-weight: 800; color: var(--aviso); background: var(--aviso-suave); padding: 1px 8px; border-radius: 6px; margin-left: 6px; }
.boton.boton-subsanacion { background: var(--branco); color: var(--aviso); border-color: #f0c98a; }
.boton.boton-subsanacion:hover { background: var(--aviso-suave); border-color: var(--aviso); color: var(--aviso); }
.form-subsanacion[type], .form-subsanacion { display: grid; gap: 14px; background: var(--branco); border: 1.5px solid #f0c98a; border-radius: var(--raio-p); padding: 16px 18px; }
.form-subsanacion h3 { color: var(--aviso); }
.docs-erros { border: 0; padding: 0; margin: 0; display: grid; gap: 8px; }
.docs-erros legend { font-weight: 700; font-size: .9rem; margin-bottom: 6px; }
.docs-erros .casilla input { accent-color: var(--erro); }
.pe-documentacion details summary { cursor: pointer; font-weight: 700; color: var(--violeta); display: inline-flex; gap: 6px; align-items: center; }
.estado-grande { font: 700 1.25rem var(--titulos); padding: 14px 16px; border-radius: var(--raio-p); background: var(--gris-suave); color: var(--tinta-suave); text-align: center; }
.estado-grande.presentada { background: var(--azul-suave); color: var(--azul-texto); }
.estado-grande.subsanacion { background: var(--aviso-suave); color: var(--aviso); }
.estado-grande.validada { background: var(--ok-suave); color: var(--ok); }
.estado-grande.excluida { background: var(--erro-suave); color: var(--erro); }
.requisitos { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; font-size: .92rem; }
.requisitos li { display: flex; gap: 10px; align-items: center; color: var(--tinta-suave); }
.requisitos li::before { content: ''; width: 20px; height: 20px; flex: none; border-radius: 50%; border: 2px solid #d9d3df; }
.requisitos li.feito { color: var(--tinta); font-weight: 600; }
.requisitos li.feito::before { border-color: var(--ok); background: var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.5l3 3 6-7' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat; }
.outras-accions summary { cursor: pointer; font-size: .88rem; font-weight: 700; color: var(--tinta-suave); }
.boton.perigo { color: var(--erro); }
.boton.perigo:hover { border-color: var(--erro); background: var(--erro-suave); color: var(--erro); }
.tarxeta-documentacion .documento-fila { flex-wrap: nowrap; }
.tarxeta-documentacion .documento-fila .texto { flex: 1 1 auto; }
.tarxeta-documentacion .accions-doc { width: auto; padding-left: 0; flex: none; }
@media (max-width: 640px) {
  .tarxeta-documentacion .documento-fila { flex-wrap: wrap; }
  .tarxeta-documentacion .accions-doc { width: 100%; padding-left: 48px; }
}

/* Revisión de cada documento: Validado / Incorrecto */
.revision-doc { display: inline-flex; gap: 6px; margin-left: 4px; }
.revision-doc.gardando { opacity: .55; pointer-events: none; }
.opcion-revision { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border: 1.5px solid var(--liña); border-radius: var(--raio-p); background: var(--branco); font: 700 .85rem var(--texto); color: var(--tinta-suave); cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s, color .15s; }
.opcion-revision svg { opacity: .45; }
.opcion-revision.validado:hover { border-color: var(--ok); color: var(--ok); }
.opcion-revision.incorrecto:hover { border-color: var(--erro); color: var(--erro); }
.opcion-revision.activo svg { opacity: 1; }
.opcion-revision.validado.activo { background: var(--ok); border-color: var(--ok); color: #fff; }
.opcion-revision.incorrecto.activo { background: var(--erro); border-color: var(--erro); color: #fff; }
.docs-incorrectos { color: var(--erro); font-weight: 700; font-size: .88rem; white-space: nowrap; margin-left: 10px; display: inline-flex; gap: 4px; align-items: center; }
.contador-incorrectos { background: var(--erro); color: #fff; border-radius: 999px; font-size: .75rem; padding: 0 7px; margin-left: 2px; }
.boton.boton-subsanacion.con-incorrectos { border-color: var(--aviso); background: var(--aviso-suave); }
.docs-erros ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.docs-erros li { display: flex; gap: 8px; align-items: center; font-weight: 700; font-size: .92rem; color: var(--erro); }
.docs-erros li .tenue { font-weight: 400; color: var(--tinta-tenue); }
.etiqueta-docs-erros { font-weight: 700; font-size: .9rem; margin-bottom: 6px; }
.documento-fila.rexeitado .texto .texto-validacion { color: var(--erro); }
.documento-fila.rexeitado .texto strong, .documento-fila.rexeitado .texto span[title] { text-decoration: none; color: var(--tinta); }
@media (max-width: 640px) { .revision-doc { margin-left: auto; } }

/* Adxudicación */
.resultado-quenda { display: grid; justify-items: end; gap: 4px; text-align: right; }
.check-cim { display: flex; gap: 10px; align-items: flex-start; width: 100%; text-align: left; background: var(--branco); border: 1.5px solid var(--liña); border-radius: var(--raio-p); padding: 10px 12px; font: 700 .9rem var(--texto); color: var(--tinta); cursor: pointer; }
.check-cim:hover { border-color: var(--violeta-medio); }
.check-cim .caixa { width: 18px; height: 18px; border: 2px solid #cfc7d6; border-radius: 5px; flex: none; margin-top: 1px; display: grid; place-items: center; color: #fff; }
.check-cim.activo { border-color: var(--violeta); background: var(--violeta-suave); }
.check-cim.activo .caixa { background: var(--violeta); border-color: var(--violeta); }
.estado.pendente { background: var(--gris-suave); color: var(--tinta-suave); }
.fases { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; counter-reset: fase; }
.fases li { position: relative; padding: 0 10px 0 0; counter-increment: fase; font-size: .88rem; color: var(--tinta-tenue); }
.fases li::before { content: counter(fase); display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--liña); background: var(--branco); font-weight: 800; margin-bottom: 8px; position: relative; z-index: 1; }
.fases li::after { content: ''; position: absolute; top: 15px; left: 30px; right: 0; height: 2px; background: var(--liña); }
.fases li:last-child::after { display: none; }
.fases li strong { display: block; color: var(--tinta-suave); font-size: .92rem; }
.fases li.feita::before { content: '✓'; background: var(--ok); border-color: var(--ok); color: #fff; }
.fases li.feita::after { background: var(--ok); }
.fases li.actual::before { background: var(--violeta); border-color: var(--violeta); color: #fff; }
.fases li.actual strong { color: var(--violeta); }
@media (max-width: 720px) { .fases { grid-template-columns: 1fr 1fr; gap: 16px; } .fases li::after { display: none; } }
.accion-fase { display: grid; gap: 14px; border-top: 1px solid var(--liña); padding-top: 18px; margin-top: 18px; }
.accion-fase .resumo-fase { display: flex; gap: 10px; flex-wrap: wrap; }
.accion-fase .resumo-fase span { background: var(--gris-suave); border-radius: 8px; padding: 6px 12px; font-size: .9rem; }
.accion-fase .resumo-fase strong { font-variant-numeric: tabular-nums; }
.publicadas { display: flex; gap: 10px; flex-wrap: wrap; }
.limite-prazas td { border-bottom: 3px solid var(--violeta) !important; }
.fila-agarda td { color: var(--tinta-suave); }
.grupo-chip { display: inline-block; min-width: 24px; text-align: center; font-weight: 800; font-size: .8rem; padding: 2px 6px; border-radius: 6px; background: var(--azul-suave); color: var(--azul-texto); }
.grupo-chip.g1 { background: var(--violeta); color: #fff; }
.aviso-mini { margin: 0; color: var(--aviso); background: var(--aviso-suave); padding: 10px 12px; border-radius: var(--raio-p); font-size: .9rem; }
.banda-simulacion { display: flex; gap: 14px; align-items: flex-start; background: repeating-linear-gradient(135deg, var(--violeta-suave), var(--violeta-suave) 14px, #fbf4fb 14px, #fbf4fb 28px); border: 1.5px dashed var(--violeta-medio); border-radius: var(--raio); padding: 16px 20px; margin-bottom: 24px; color: var(--violeta-escuro); }
.banda-simulacion svg { flex: none; margin-top: 2px; }

/* Inicio: convocatorias en tramitación */
.titulo-bloque { font-size: 1.2rem; margin: 0 0 12px; }
.tramitacion { padding: 22px 24px; display: grid; gap: 16px; margin-bottom: 20px; }
.tramitacion + .tramitacion { margin-top: 0; }
.tramitacion-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.tramitacion-cab h2 { font-size: 1.35rem; }
.tramitacion-cab h2 a { color: inherit; text-decoration: none; }
.tramitacion-cab h2 a:hover { color: var(--violeta); }
.tramitacion .paso { margin: 0; padding: 12px 16px; background: var(--fondo); border-left: 4px solid var(--violeta); border-radius: 0 var(--raio-p) var(--raio-p) 0; font-weight: 600; }
.cifras-tramitacion { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.cifras-tramitacion a { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border: 1px solid var(--liña); border-radius: var(--raio-p); text-decoration: none; color: var(--tinta-suave); font-size: .85rem; font-weight: 600; transition: border-color .15s, background .15s; }
.cifras-tramitacion a:hover { border-color: var(--violeta-medio); background: var(--violeta-suave); }
.cifras-tramitacion .num { font: 700 1.5rem/1.1 var(--titulos); color: var(--tinta); }
.cifras-tramitacion a.destaca.azul { background: var(--azul-suave); border-color: transparent; color: var(--azul-texto); }
.cifras-tramitacion a.destaca.aviso { background: var(--aviso-suave); border-color: transparent; color: var(--aviso); }
.cifras-tramitacion a.destaca.violeta { background: var(--violeta-suave); border-color: transparent; color: var(--violeta-escuro); }
.cifras-tramitacion a.destaca.ok { background: var(--ok-suave); border-color: transparent; color: var(--ok); }
.cifras-tramitacion a.destaca .num { color: inherit; }
.progreso-validacion { display: flex; align-items: center; gap: 12px; }
.progreso-validacion .barra { flex: 1; height: 8px; }
@media (max-width: 820px) { .cifras-tramitacion { grid-template-columns: repeat(2, minmax(0, 1fr)); } .seguinte-paso { width: 100%; } }

/* Aviso de solicitudes sen validar antes de adxudicar */
.aviso-sen-validar { background: var(--erro-suave); border: 2px solid var(--erro); border-radius: var(--raio); padding: 16px 18px; color: #7a1a12; }
.aviso-sen-validar .titulo-aviso { display: flex; gap: 10px; align-items: flex-start; margin: 0 0 12px; font-size: 1.05rem; }
.aviso-sen-validar .titulo-aviso svg { flex: none; color: var(--erro); margin-top: 1px; }
.aviso-sen-validar .titulo-aviso strong { color: var(--erro); font-size: 1.15rem; }
.aviso-sen-validar ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; max-height: 320px; overflow-y: auto; background: var(--branco); border-radius: var(--raio-p); border: 1px solid #f3c4bf; }
.aviso-sen-validar li { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 9px 12px; border-bottom: 1px solid #fbe1de; font-size: .92rem; }
.aviso-sen-validar li:last-child { border-bottom: 0; }
.aviso-sen-validar li a { color: var(--tinta); text-decoration: none; }
.aviso-sen-validar li a:hover { color: var(--erro); text-decoration: underline; }
.aviso-sen-validar li a strong { color: var(--erro); }
.aviso-sen-validar .detalle { color: var(--tinta-suave); font-size: .85rem; }

/* Documentos substituídos */
.lista-docs .texto .substitue { display: inline-flex; gap: 5px; align-items: center; font-size: .78rem; color: var(--tinta-tenue); white-space: normal; }
.lista-docs .texto .substitue a { color: var(--tinta-suave); }
.substituidos { border-top: 1px solid var(--liña); }
.substituidos summary { padding: 12px 22px; cursor: pointer; font-weight: 700; font-size: .9rem; color: var(--tinta-suave); display: flex; gap: 6px; align-items: center; }
.substituidos .lista-docs { background: var(--fondo); }
.substituidos .lista-docs li { opacity: .8; }
.substituidos .lista-docs .texto span.mini { white-space: normal; }

/* Editor de quendas: quenda única ou varias */
.modalidade { border: 0; margin: 0; padding: 0; }
.modalidade legend { font-weight: 700; margin-bottom: 10px; }
.opcions-modalidade { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.opcion-modalidade { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border: 1.5px solid var(--liña); border-radius: var(--raio-p); cursor: pointer; }
.opcion-modalidade:hover { border-color: var(--violeta-medio); }
.opcion-modalidade:has(input:checked) { border-color: var(--violeta); background: var(--violeta-suave); }
.opcion-modalidade input { accent-color: var(--violeta); width: 18px; height: 18px; margin-top: 2px; flex: none; }
.opcion-modalidade strong { display: block; }
.opcion-modalidade .mini { display: block; }
.indicacion-unica { margin: 0 22px 8px; }
.pe-quendas { padding: 14px 22px; border-top: 1px solid var(--liña); }
.editor-quendas:not(:has([name="modalidade"]:checked)) :is([data-taboa-quendas], [data-so-varias], [data-so-unica]),
.editor-quendas:has([name="modalidade"][value="unica"]:checked) :is([data-so-varias], .col-nome, .col-eliminar, tr.eliminada),
.editor-quendas:has([name="modalidade"][value="varias"]:checked) [data-so-unica] { display: none; }
.sen-bonificacions { margin: 0; padding: 14px 22px; }

/* Cota */
.calculo-cota { display: grid; grid-template-columns: 1fr auto; gap: 6px 16px; margin: 0; font-size: .95rem; }
.calculo-cota dt { color: var(--tinta-suave); }
.calculo-cota dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.calculo-cota .total { border-top: 1px solid var(--liña); padding-top: 8px; font-weight: 800; color: var(--tinta); font-size: 1.1rem; }
.editor-bonificacions td:first-child { min-width: 320px; } .editor-bonificacions td:nth-child(3) { min-width: 230px; }

/* Campo de data con botón de calendario (calendario.js) */
.campo-calendario { display: block; position: relative; }
.campo-calendario input[data-calendario-listo] { padding-right: 42px; }
.campo-calendario input[type=date], .campo-calendario input[type=datetime-local] { position: absolute; right: 0; bottom: 0; width: 1px; height: 1px; padding: 0; border: 0; opacity: 0; pointer-events: none; }
.campo-calendario button { position: absolute; top: 50%; right: 6px; transform: translateY(-50%); display: flex; padding: 5px; border: 0; border-radius: 6px; background: none; color: var(--tinta-suave); cursor: pointer; }
.campo-calendario button:hover, .campo-calendario button:focus-visible { background: rgba(155,44,152,.12); color: var(--violeta); }

/* Aviso de confirmación (función confirmar de xestion.js) */
dialog.confirmacion { max-width: 440px; width: calc(100% - 32px); border: 0; border-radius: var(--raio-p); padding: 22px; color: var(--tinta); box-shadow: 0 12px 40px rgba(0,0,0,.25); }
dialog.confirmacion::backdrop { background: rgba(30,20,40,.45); }
dialog.confirmacion p { margin: 0 0 18px; }
dialog.confirmacion .botons { justify-content: flex-end; }
