/* Panel de control del motor · estilos comunes.
   Colores solo por variable. Los valores de :root son los del tema papel-y-granate (los de los bocetos y la Paleta
   de Mapa: cada color tiene un solo uso) y sirven de respaldo; el tema que elige tools/visor/visor.yaml
   (estatico/temas/<tema>.css, enlazado por el servidor después de esta hoja) los sustituye, de día y de noche.
   Estados (texto):  sin #CFC8BA · candidata #2F6F8F · limpio #3E7B4F · avisos #B7791F · fallido #A8322D · mano #6E4B8E
   Vigencia (tinta #1E1C19): anillo discontinuo = encargo desfasado · esquina = memoria obsoleta
   Capas: forma #3B4A5C/#EEF1F5 rombo · estilo #2F5A5F/#EAF2F2 círculo · obra #5A4E42/#F1EEE9 cuadrado
   Marca #8C2F1B (hover #6E2413): enlaces, botón primario, pestaña activa. Nunca capa ni estado. */
:root{
  --lienzo:#F7F4EE; --fondo:#EFEBE3; --tarjeta:#FFFFFF; --lista:#F2EEE6;
  --borde:#E2DCD0; --borde-2:#D9D2C4; --borde-suave:#EEE9DF; --linea:#F0EBE1;
  --tinta:#1E1C19; --tinta-2:#3A362F; --tinta-3:#4A453D; --sec:#6B6458; --ter:#A49B8B;
  --rail:#1E1C19; --rail-2:#2C2823; --rail-3:#3A342D; --rail-texto:#D6CFC1;
  --marca:#8C2F1B; --marca-2:#6E2413; --tinte:#F6EAE5;
  --e-sin:#CFC8BA; --e-candidata:#2F6F8F; --e-limpio:#3E7B4F; --e-avisos:#B7791F; --e-fallido:#A8322D; --e-mano:#6E4B8E;
  --aviso-texto:#7A5410;
  /* Temas (2-X): lo que antes iba como color fijo. Cada tema de estatico/temas/ da estos con sus valores. */
  --cabecera:#FFFFFF; --lectura:#FFFFFF; --lectura-tinta:#1E1C19; --sobre-marca:#FFFFFF; --sobre-estado:#FFFFFF;
  --enlace:#8C2F1B; --enlace-2:#6E2413; --pago:#8C2F1B; --pago-2:#6E2413; --sobre-pago:#FFFFFF; --pago-tinte:#F6EAE5;
  --rail-marca:#FFFFFF; --rail-punto:#D9A441; --rail-punto-off:#6B6458;
  /* Por categoría (no cambian con el tema; de noche se aclaran, abajo) */
  --mov-1:#3D6B8E; --mov-2:#B0702A; --mov-3:#4F7F52; --mov-4:#8A5A7A; --mov-5:#5E6B3A; --mov-6:#7A6A58; --mov-7:#3F7F86;
  --tipo-persona:#8C3A2B; --tipo-lugar:#2E7D74; --tipo-organizacion:#7C7A2E; --tipo-objeto:#7B5A93;
  --sombra:#1E1C19;
  /* Derivados: tinte (t), borde (b) y texto (x) de cada estado sobre tarjeta; valen para cualquier tema y modo */
  --t-candidata:color-mix(in srgb,var(--e-candidata) 12%,var(--tarjeta)); --b-candidata:color-mix(in srgb,var(--e-candidata) 35%,var(--tarjeta)); --x-candidata:color-mix(in srgb,var(--e-candidata) 70%,var(--tinta));
  --t-limpio:color-mix(in srgb,var(--e-limpio) 11%,var(--tarjeta)); --b-limpio:color-mix(in srgb,var(--e-limpio) 35%,var(--tarjeta)); --x-limpio:color-mix(in srgb,var(--e-limpio) 70%,var(--tinta));
  --t-avisos:color-mix(in srgb,var(--e-avisos) 11%,var(--tarjeta)); --b-avisos:color-mix(in srgb,var(--e-avisos) 40%,var(--tarjeta)); --x-avisos:color-mix(in srgb,var(--e-avisos) 60%,var(--tinta));
  --t-fallido:color-mix(in srgb,var(--e-fallido) 10%,var(--tarjeta)); --b-fallido:color-mix(in srgb,var(--e-fallido) 32%,var(--tarjeta)); --x-fallido:color-mix(in srgb,var(--e-fallido) 70%,var(--tinta));
  --t-mano:color-mix(in srgb,var(--e-mano) 11%,var(--tarjeta)); --b-mano:color-mix(in srgb,var(--e-mano) 35%,var(--tarjeta)); --x-mano:color-mix(in srgb,var(--e-mano) 70%,var(--tinta));
  --tinte-suave:color-mix(in srgb,var(--marca) 6%,var(--tarjeta)); --b-marca:color-mix(in srgb,var(--marca) 40%,var(--tarjeta));
  --resalte:color-mix(in srgb,var(--e-avisos) 30%,var(--tarjeta)); --filo:color-mix(in srgb,var(--tinta) 10%,transparent);
  --fo:#3B4A5C; --fo-t:#EEF1F5; --fo-b:#A9B4C2;
  --pk:#2F5A5F; --pk-t:#EAF2F2; --pk-b:#9DBDBF;
  --ob:#5A4E42; --ob-t:#F1EEE9; --ob-b:#B9AE9F;
  --serif:'Newsreader', 'Iowan Old Style', 'Palatino Linotype', Georgia, serif;
  --sans:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --monof:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  color-scheme: light;
}
/* Noche (apariencia.modo: noche, o sistema con el Mac en oscuro): los colores por categoría se aclaran.
   Los de cada tema, en estatico/temas/<tema>.css. */
:root[data-modo="noche"]{
  --mov-1:#8AA6BB; --mov-2:#D0A06F; --mov-3:#8FB091; --mov-4:#B898AD; --mov-5:#9EA685; --mov-6:#AFA59A; --mov-7:#8CB2B6;
  --tipo-persona:#D28A7C; --tipo-lugar:#7CC2B9; --tipo-organizacion:#C2BF72; --tipo-objeto:#B59BD0;
  --fo:#A9B8CC; --fo-t:color-mix(in srgb,var(--fo) 14%,var(--tarjeta)); --fo-b:color-mix(in srgb,var(--fo) 40%,var(--tarjeta));
  --pk:#9CC5C8; --pk-t:color-mix(in srgb,var(--pk) 14%,var(--tarjeta)); --pk-b:color-mix(in srgb,var(--pk) 40%,var(--tarjeta));
  --ob:#C4B6A6; --ob-t:color-mix(in srgb,var(--ob) 14%,var(--tarjeta)); --ob-b:color-mix(in srgb,var(--ob) 40%,var(--tarjeta));
  --sombra:#000000;
}
@media (prefers-color-scheme: dark){
  :root[data-modo="sistema"]{
    --mov-1:#8AA6BB; --mov-2:#D0A06F; --mov-3:#8FB091; --mov-4:#B898AD; --mov-5:#9EA685; --mov-6:#AFA59A; --mov-7:#8CB2B6;
    --tipo-persona:#D28A7C; --tipo-lugar:#7CC2B9; --tipo-organizacion:#C2BF72; --tipo-objeto:#B59BD0;
    --fo:#A9B8CC; --fo-t:color-mix(in srgb,var(--fo) 14%,var(--tarjeta)); --fo-b:color-mix(in srgb,var(--fo) 40%,var(--tarjeta));
    --pk:#9CC5C8; --pk-t:color-mix(in srgb,var(--pk) 14%,var(--tarjeta)); --pk-b:color-mix(in srgb,var(--pk) 40%,var(--tarjeta));
    --ob:#C4B6A6; --ob-t:color-mix(in srgb,var(--ob) 14%,var(--tarjeta)); --ob-b:color-mix(in srgb,var(--ob) 40%,var(--tarjeta));
    --sombra:#000000;
  }
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--lienzo);color:var(--tinta);font-family:var(--sans);font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased}
a{color:var(--enlace)}a:hover{color:var(--enlace-2)}
button{font:inherit}
h1,h2,h3{font-family:var(--serif);font-weight:500;margin:0}

/* ── marco ─────────────────────────────────────────────── */
.app{display:flex;height:100vh;overflow:hidden}
.rail{width:224px;flex-shrink:0;background:var(--rail);display:flex;flex-direction:column;padding:20px 12px 12px;overflow-x:hidden;overflow-y:auto}
.rail-lista{display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1 1 auto;min-height:0;scrollbar-width:thin}
.rail .marca{font-family:var(--serif);font-size:21px;color:var(--rail-marca);padding:0 10px 12px}
/* la marca «Escríbeli» (nucleo.js › marcaEscribeli): icono + nombre con el trazo de plumilla sobre la «ı»; la usan los
   dos paneles. Interletra y posición del trazo: docs/marca/escribeli/README.md (variante E1) */
.marca-escribeli{display:inline-flex;align-items:center;gap:9px;vertical-align:middle}
.marca-icono{width:28px;height:28px;border-radius:7px;display:block;flex-shrink:0}
.rail .marca-icono{box-shadow:0 0 0 1px var(--rail-3)}
.marca-nombre{font-family:'Fraunces',var(--serif);font-weight:600;font-size:24px;line-height:1;letter-spacing:.035em;font-variation-settings:'opsz' 72,'SOFT' 100,'WONK' 0}
.marca-i{position:relative;display:inline-block}
.marca-i img{position:absolute;left:50%;top:-.044em;width:.396em;height:.396em;transform:translateX(-55%);max-width:none}
@media (max-width:560px){.marca-nombre{font-size:21px}.marca-icono{width:24px;height:24px;border-radius:6px}}
.rail a{color:var(--rail-texto);text-decoration:none;padding:8px 10px;border-radius:6px;display:flex;gap:10px;align-items:center;font-size:14px}
.rail a:hover{background:var(--rail-2);color:var(--rail-marca)}
.rail a.on{background:var(--rail-3);color:var(--rail-marca)}
.rail a.sub{padding-left:28px;font-size:13px}
.rail a.off{opacity:.45}
.rail .punto-obra{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.rail .relleno{flex-grow:1}
.rail .pie{margin-top:6px;background:var(--rail-2);font-size:12px}
.sec{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ter);margin:16px 10px 4px}
.principal{flex-grow:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.cabecera{flex-shrink:0;border-bottom:1px solid var(--borde)}
.cabecera.simple{height:60px;display:flex;align-items:center;padding:0 32px;gap:16px}
.cabecera.obra{padding:14px 32px 0;display:flex;flex-direction:column;gap:8px}
.migas{font-size:13px;color:var(--sec);display:flex;gap:8px;align-items:center;min-height:30px}
.migas a{color:var(--sec);text-decoration:none}.migas a:hover{color:var(--enlace)}
.migas .actual{color:var(--tinta)}
.cabecera .fila{display:flex;align-items:center;gap:12px}
.cabecera h1{font-size:30px}
.buscar{display:flex;align-items:center;gap:8px;height:36px;width:360px;padding:0 12px;border:1px solid var(--borde-2);border-radius:8px;background:var(--tarjeta);color:var(--sec);font-size:13px}
.buscar input{border:none;outline:none;background:transparent;font:inherit;flex-grow:1;color:var(--tinta)}
.pestanas{display:flex;overflow-x:auto;scrollbar-width:none}
.tab{padding:14px 2px;margin-right:20px;color:var(--sec);text-decoration:none;border-bottom:2px solid transparent;font-size:14px;white-space:nowrap}
.tab:hover{color:var(--tinta)}
.tab.on{color:var(--tinta);border-bottom-color:var(--marca);font-weight:600}
.tab.off{opacity:.5}
.cuerpo{flex-grow:1;overflow:auto;padding:28px 32px;display:flex;flex-direction:column;gap:24px}
.cuerpo.obra{padding:20px 32px}
.relleno{flex-grow:1}

/* ── piezas ─────────────────────────────────────────────── */
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;border:1px solid var(--borde-2);background:var(--tarjeta);color:var(--tinta-2);text-decoration:none;white-space:nowrap}
a.chip:hover{border-color:var(--marca);color:var(--enlace)}
.chip.discontinuo{border:1.5px dashed var(--tinta)}
.chip.mini{font-size:10px;padding:0 5px;border-style:dashed}
.mono{font-family:var(--monof);font-size:12px}
.lbl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--sec)}
.lbl.chica{font-size:10px}
.lbl .plano{text-transform:none;letter-spacing:0}
.btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;text-decoration:none;border:1px solid var(--borde-2);background:var(--tarjeta);color:var(--tinta);font-family:var(--sans);cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--marca);color:var(--enlace)}
.btn.pri{background:var(--marca);border-color:var(--marca);color:var(--sobre-marca)}
.btn.pri:hover{background:var(--marca-2);color:var(--sobre-marca)}
.btn.peligro{background:var(--e-fallido);border-color:var(--e-fallido);color:var(--tarjeta)}
.btn.peligro:hover{color:var(--tarjeta);border-color:var(--x-fallido);background:var(--x-fallido)}
.btn.peligro:disabled{opacity:.45;cursor:default}
.btn.peligro-suave{color:var(--x-fallido)}
.btn.peligro-suave:hover{border-color:var(--e-fallido);color:var(--e-fallido)}
.btn[aria-disabled="true"]{opacity:.5;pointer-events:none}
.card{background:var(--tarjeta);border:1px solid var(--borde);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:10px;min-width:0}
.card.compacta{padding:14px 16px}
.nota{font-size:12px;color:var(--sec)}
.suave{color:var(--sec)}
.separador{color:var(--ter)}
table.tabla{border-collapse:collapse;width:100%;font-size:13px}
.tabla th{text-align:left;font-weight:500;color:var(--sec);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:6px 8px;border-bottom:1px solid var(--borde)}
.tabla td{padding:6px 8px;border-bottom:1px solid var(--linea)}
.tabla a.fila-enlace{color:var(--tinta);text-decoration:none}
.tabla a.fila-enlace:hover{color:var(--enlace)}
.tabla .mas{text-decoration:none;font-size:14px;line-height:1}

/* ── leyenda de estados: cuadrados, puntos y marcas ─────── */
.sq{width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--sobre-estado);font-family:var(--monof);text-decoration:none;flex-shrink:0}
.sq:hover{color:var(--sobre-estado);filter:brightness(1.08)}
.fila-sq{display:flex;gap:4px;flex-wrap:wrap}
.des{outline:2px dashed var(--tinta);outline-offset:1px}
.sq.obs{position:relative;overflow:hidden}
.sq.obs::after{content:"";position:absolute;top:0;right:0;border-style:solid;border-width:0 8px 8px 0;border-color:transparent var(--tinta) transparent transparent}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:-1px;flex-shrink:0}
.dot.des{outline:none;box-shadow:0 0 0 1.5px var(--tarjeta),0 0 0 3px var(--tinta)}
.muestra{width:8px;height:8px;border-radius:2px;display:inline-block;flex-shrink:0}
.muestra.obs{background:conic-gradient(var(--tinta) 0 25%, var(--tarjeta) 25% 100%);border:1px solid var(--tinta)}
.muestra.des{background:var(--tarjeta)}
.leyenda{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--tinta-3)}
.leyenda > span{display:flex;gap:6px;align-items:center}
.pendientes{font-size:12px;color:var(--tinta-3);display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.pendientes a{color:var(--tinta)}
.aviso{font-size:13px;line-height:1.45;display:flex;gap:10px}
.aviso .muestra,.aviso .punto-aviso{margin-top:6px}
.punto-aviso{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}
.punto-aviso.obs{background:conic-gradient(var(--tinta) 0 25%, var(--tarjeta) 25% 100%);border:1px solid var(--tinta)}
.punto-aviso.des{background:var(--tarjeta);outline:2px dashed var(--tinta);outline-offset:1px}

/* ── capas ─────────────────────────────────────────────── */
.fo,.pk,.ob{gap:5px}
.fo::before,.pk::before,.ob::before{content:"";width:7px;height:7px;border:1.5px solid currentColor;box-sizing:border-box;flex-shrink:0}
.fo{background:var(--fo-t);color:var(--fo);border:1px dashed var(--fo-b)}.fo::before{transform:rotate(45deg)}
.pk{background:var(--pk-t);color:var(--pk);border:1px solid var(--pk-b)}.pk::before{border-radius:50%}
.ob{background:var(--ob-t);color:var(--ob);border:1px dotted var(--ob-b)}

/* ── estados de pantalla (Reglas › Estados por pantalla) ── */
.banda-error{border:1px solid var(--b-fallido);border-left:3px solid var(--e-fallido);background:var(--t-fallido);border-radius:8px;padding:10px 14px;font-size:13px;display:flex;flex-direction:column;gap:4px}
.banda-error .literal{font-family:var(--monof);font-size:12px;white-space:pre-wrap;color:var(--tinta)}
.banda-error .orden{font-size:12px;color:var(--sec)}
.vacio{border:1px dashed var(--borde-2);border-radius:12px;padding:28px;text-align:center;color:var(--sec);display:flex;flex-direction:column;gap:12px;align-items:center}
.cargando{color:var(--sec);font-size:13px;display:flex;gap:8px;align-items:center}
.cargando::before{content:"";width:12px;height:12px;border-radius:50%;border:2px solid var(--borde-2);border-top-color:var(--marca);animation:gira 0.9s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}
.pronto{max-width:640px}
.pronto p{margin:0;color:var(--tinta-3);line-height:1.5}

/* ── Inicio ─────────────────────────────────────────────── */
.titulo-pantalla{display:flex;align-items:baseline;gap:14px}
.titulo-pantalla h1{font-size:34px}
.rejilla-obras{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.obra-tarjeta{background:var(--tarjeta);border:1px solid var(--borde);border-radius:12px;padding:22px;display:flex;flex-direction:column;gap:18px;min-width:0}
.obra-tarjeta h2{margin:4px 0 0;font-size:26px}
.obra-tarjeta .cabeza{display:flex;align-items:flex-start;gap:12px}
.obra-tarjeta .cabeza > div{flex-grow:1;min-width:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.cifras{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--borde-suave)}
.cifras .fila-cifras{display:grid;grid-template-columns:1.6fr repeat(4,minmax(0,1fr));gap:12px;align-items:end}
.cifras .fila-cifras.vacia{grid-template-columns:repeat(4,minmax(0,1fr))}
.cifras .valor{font-size:18px;margin-top:2px}
.cifras .vacia .valor{font-size:20px;color:var(--sec)}
.cifras a.que{display:inline-block;margin-top:2px;font-size:12px;color:var(--tinta-3)}
.acciones{display:flex;gap:8px;flex-wrap:wrap}
.rejilla-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.lista-simple{display:flex;justify-content:space-between;gap:12px;text-decoration:none;color:var(--tinta)}
.lista-simple:hover{color:var(--enlace)}
.lista-simple .mono{color:var(--sec);text-align:right}
.ultimo{font-size:13px;display:flex;gap:6px;align-items:baseline}
.ultimo .mono{color:var(--sec);flex-shrink:0}
.ultimo .lbl{flex-shrink:0}
.ultimo a{color:var(--tinta);text-decoration:none}
.ultimo a:hover{color:var(--enlace)}

/* ── Obra ───────────────────────────────────────────────── */
.dos-columnas{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-content:start}
.dos-iguales{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-content:start}
.tabla-perfiles td{vertical-align:top;padding-top:10px;padding-bottom:10px}
.columna{display:flex;flex-direction:column;gap:14px;min-width:0}
.pares{display:grid;grid-template-columns:70px minmax(0,1fr);gap:8px;font-size:13px}
.pares > span:nth-child(odd){color:var(--sec)}

/* ── muestrario ─────────────────────────────────────────── */
.paleta{display:grid;grid-template-columns:180px 1fr;gap:8px 16px;font-size:13px;align-items:center}
.muestra-color{display:inline-flex;align-items:center;gap:6px;margin-right:12px}
.muestra-color i{width:14px;height:14px;border-radius:3px;display:inline-block;border:1px solid var(--filo)}

/* ── Capítulo ───────────────────────────────────────────── */
.lista-cap{width:236px;flex-shrink:0;border-right:1px solid var(--borde);display:flex;flex-direction:column;gap:2px;padding:18px 10px;background:var(--lista);overflow-y:auto}
.lista-cap .lbl{padding:0 10px 8px}
.lista-cap a{display:flex;gap:10px;align-items:center;padding:7px 10px;border-radius:6px;text-decoration:none;color:var(--tinta);font-size:13px}
.lista-cap a:hover{background:var(--fondo)}
.lista-cap a.on{background:var(--tarjeta);box-shadow:0 0 0 1px var(--borde)}
.lista-cap .dot{margin-right:0}
.lista-cap .mono{color:var(--sec)}
.lista-cap .nuevo{color:var(--ter);margin-top:6px}
.chip-estado{font-size:12px}
.chip-estado i{width:8px;height:8px;border-radius:50%;display:inline-block}
.chip-estado.candidata{background:var(--t-candidata);border-color:var(--b-candidata);color:var(--x-candidata)}
.chip-estado.avisos{background:var(--t-avisos);border-color:var(--b-avisos);color:var(--aviso-texto)}
.chip-estado.limpio{background:var(--t-limpio);border-color:var(--b-limpio);color:var(--x-limpio)}
.chip-estado.fallido{background:var(--t-fallido);border-color:var(--b-fallido);color:var(--x-fallido)}
.chip-estado.mano{background:var(--t-mano);border-color:var(--b-mano);color:var(--x-mano)}
.chip-estado.sin{background:var(--lista);border-color:var(--borde-2);color:var(--sec)}
.rejilla-def{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;align-content:start}
.rejilla-def > .ancho{grid-column:span 2}
.pila-def{display:flex;flex-direction:column;gap:20px;min-width:0}
.rejilla-def{align-items:start}
.def{background:var(--tarjeta);border:1px solid var(--borde);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:12px;min-width:0}
.def .titulo-def{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.def .titulo-def .mono{color:var(--sec);text-align:right}
.def p.brief{margin:0;font-family:var(--serif);font-size:17px;line-height:1.55}
.rejilla-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.rejilla-2 .valor{margin-top:3px}
.linea-def{font-size:13px;line-height:1.5}
label.linea-def{display:block;margin:8px 0 0}
.linea-def .clave{color:var(--sec)}
.nombre-perm{display:inline-flex;gap:4px;align-items:baseline;margin:0 10px 4px 0}
.nombre-perm .origen{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--sec)}
.movs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.mov{text-decoration:none;color:var(--tinta);background:var(--tarjeta);border:1px solid var(--borde);border-top-width:4px;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.mov .cab{display:flex;align-items:center;gap:8px}
.mov .cab .mono{font-weight:500}
.mov .cab strong{font-weight:600}
.mov .dato{font-size:13px;line-height:1.45}
.lnk{color:var(--tinta);text-decoration:none;border-bottom:1px dotted var(--marca)}

/* ── Capítulo › Texto ───────────────────────────────────── */
.sel{height:32px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta);font:inherit;font-size:13px;color:var(--tinta);padding:0 8px;max-width:420px}
.sel.mini{height:24px;font-size:12px;padding:0 4px}
.campo{height:32px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta);font:inherit;font-size:13px;padding:0 10px}
.tg{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--tinta);white-space:nowrap}
.texto-rejilla{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.prosa{color:var(--lectura-tinta);font-family:var(--serif);font-size:17px;line-height:1.6;max-width:760px}
.prosa p{margin:0 0 14px}
.prosa .mh{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--tinta);font-family:var(--sans);font-size:13px;margin:18px 0 10px;flex-wrap:wrap}
.prosa .corregido{background:linear-gradient(90deg,var(--lista),transparent 40%)}
.ent{border-bottom:1px dotted var(--ob-b)}
.ent:hover{background:var(--tinte);border-bottom-color:var(--marca)}
.ent.na{border-bottom:1.5px dashed var(--e-fallido)}
.dx{background:var(--resalte);border-radius:2px;box-shadow:inset 0 -2px 0 var(--e-avisos)}
.rm{text-decoration:underline wavy var(--sec);text-underline-offset:3px}
.larga{box-shadow:inset 0 -1px 0 var(--ter)}
.larga.mucho{box-shadow:inset 0 -3px 0 var(--ter)}
.inspector{position:sticky;top:0;background:var(--tarjeta);border:1px solid var(--borde);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}
.inspector .row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;font-size:13px;line-height:1.45}
.inspector .k{color:var(--sec)}
.banda-candidata{border:1px solid var(--b-candidata);border-left:3px solid var(--e-candidata);background:var(--t-candidata);border-radius:10px;padding:12px 16px;display:flex;flex-direction:column;gap:8px}

/* ── Capítulo › Autopsia, Descartes, Prompt, Historial ─── */
iframe.autopsia{width:100%;height:calc(100vh - 250px);min-height:520px;border:1px solid var(--borde);border-radius:12px;background:var(--tarjeta)}
.rejilla-rastro{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}
.lista-descartes{display:flex;flex-direction:column;gap:2px;background:var(--lista);border:1px solid var(--borde);border-radius:12px;padding:8px;max-height:calc(100vh - 280px);overflow-y:auto}
.lista-descartes a{display:grid;grid-template-columns:36px 1fr auto;gap:4px 8px;align-items:center;padding:7px 8px;border-radius:6px;text-decoration:none;color:var(--tinta);font-size:13px}
.lista-descartes a .nota{grid-column:2 / 4}
.lista-descartes a:hover{background:var(--fondo)}
.lista-descartes a.on{background:var(--tarjeta);box-shadow:0 0 0 1px var(--borde)}
.lista-entidades a{grid-template-columns:10px 1fr auto}
.lista-entidades a .nota{grid-column:auto}
.lista-entidades .campo{margin:2px 0 6px}
.punto-tipo{width:8px;height:8px;border-radius:50%;display:inline-block}
.antes-despues{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.prosa-mini{font-family:var(--serif);font-size:15px;line-height:1.55;white-space:pre-wrap;max-height:60vh;overflow-y:auto}
del{color:var(--e-fallido);text-decoration:line-through}
ins{color:var(--x-limpio);text-decoration:none;background:var(--t-limpio)}
pre.prompt{margin:0;white-space:pre-wrap;font-family:var(--monof);font-size:12px;line-height:1.5;max-height:65vh;overflow-y:auto;color:var(--tinta-2)}

/* ── Ontología y Memoria ────────────────────────────────── */
.subpestanas{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--borde);padding-bottom:8px}
.subpestanas a{padding:6px 10px;border-radius:6px;text-decoration:none;color:var(--sec);font-size:13px}
.subpestanas a:hover{color:var(--tinta);background:var(--lista)}
.subpestanas a.on{color:var(--tinta);background:var(--tarjeta);box-shadow:0 0 0 1px var(--borde);font-weight:500}
.eje{position:relative;margin:8px 12px}
.eje .regla{position:absolute;bottom:0;font-size:10px;color:var(--ter);font-family:var(--monof);border-left:1px dashed var(--borde);height:100%;padding-left:3px;display:flex;align-items:flex-end}
.eje .hito{position:absolute;display:flex;flex-direction:column;gap:0;padding-left:8px;border-left:3px solid var(--ter);font-size:12px;white-space:nowrap;background:var(--tarjeta)}
.eje .hito.dram{border-left-color:var(--tinta)}
.eje .tramo{position:absolute;height:22px;border-radius:4px;background:var(--lista);border:1px solid var(--borde-2);display:flex;align-items:center;padding:0 6px;font-size:11px;white-space:nowrap}
.barra-fila{display:grid;grid-template-columns:200px 1fr 40px;gap:10px;align-items:center;font-size:13px}
.barra{height:8px;background:var(--lista);border-radius:4px;overflow:hidden;display:block}
.barra i{display:block;height:100%;background:var(--sec)}
ul.lista{margin:0;padding-left:18px;font-size:13px;line-height:1.5;display:flex;flex-direction:column;gap:4px}
details summary{cursor:pointer;font-size:13px;padding:4px 0}
.fila-cifras-obra{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}

/* ── Biblioteca (P-11) ─────────────────────────────────────────────────── */
a.enlace-tarjeta{text-decoration:none;color:var(--tinta);display:flex;flex-direction:column;gap:4px}
a.enlace-tarjeta:hover{border-color:var(--borde-2);color:var(--tinta)}
pre.diff{font-family:var(--monof);font-size:12px;white-space:pre-wrap;margin:6px 0 0;padding:8px 10px;background:var(--lista);border-radius:6px;max-height:420px;overflow:auto}
pre.diff .mas{background:var(--t-limpio);color:var(--e-limpio)}
pre.diff .menos{background:var(--t-fallido);color:var(--e-fallido)}
.cadencia-fila{display:grid;grid-template-columns:90px 1fr 110px;gap:10px;align-items:center;padding:5px 0;font-size:13px}
.eje-cad{position:relative;height:12px;background:var(--linea);border-radius:6px}
.eje-cad i{position:absolute;top:0;height:12px;border-radius:6px}
.eje-cad i.pedida{background:var(--pk-b);opacity:.55}
.eje-cad i.real{background:var(--pk);top:3px;height:6px}
.eje-cad i.punto{background:var(--pk);width:8px;height:8px;top:2px;margin-left:-4px;border-radius:50%}

/* ── Motor › Pasadas y búsqueda (P-12) ─────────────────────────────────── */
.buscar{position:relative}
.resultados-busqueda{position:absolute;top:40px;right:0;width:480px;max-height:70vh;overflow-y:auto;z-index:50;background:var(--tarjeta);border:1px solid var(--borde-2);border-radius:8px;box-shadow:0 8px 24px color-mix(in srgb,var(--sombra) 12%,transparent);padding:8px;display:flex;flex-direction:column;gap:8px;color:var(--tinta)}
.resultados-busqueda[hidden]{display:none}
.grupo-busqueda{display:flex;flex-direction:column;gap:1px}
.grupo-busqueda .lbl{padding:2px 8px}
.grupo-busqueda a{display:flex;flex-direction:column;padding:6px 8px;border-radius:6px;text-decoration:none;color:var(--tinta);font-size:13px}
.grupo-busqueda a:hover,.grupo-busqueda a:first-of-type:focus{background:var(--lista)}
.grupo-busqueda a .suave{font-size:12px}
table.pasadas td{vertical-align:top}
tr.grupo td{background:var(--lista);font-size:12.5px;color:var(--tinta-2);padding-top:8px;padding-bottom:8px}
.barra-comparar{display:flex;gap:12px;align-items:center}
.barra-apilada{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--linea);margin:6px 0}
.barra-apilada i{display:block;height:100%}
.barra-fila.ancha{grid-template-columns:minmax(0,1fr) 90px 36px}
.barra-fila.ancha .mono:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.buscar.mini{height:30px;width:300px}
.ficha-fila{display:grid;grid-template-columns:130px minmax(0,1fr);gap:12px;font-size:13.5px;line-height:1.5;padding:7px 0;border-top:1px solid var(--linea)}
.ficha-fila .k{color:var(--sec)}
.velo{position:fixed;inset:0;background:color-mix(in srgb,var(--sombra) 28%,transparent);z-index:80}
.panel-lateral{position:fixed;top:0;right:0;bottom:0;width:min(920px,100vw);background:var(--lienzo);z-index:81;box-shadow:-12px 0 32px color-mix(in srgb,var(--sombra) 18%,transparent);padding:22px 28px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}
.panel-lateral > .fila{display:flex;align-items:center;gap:12px}
.panel-lateral h2{font-size:24px}
.eje-regla{position:relative;height:16px;font-size:11px;color:var(--ter)}
.eje-regla span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.eje-regla span:first-child{transform:none}
.eje-regla span:last-child{transform:translateX(-100%)}
.celda-corta{display:inline-block;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}
.eje .tramo.intervalo{background:var(--tinte);border-color:var(--b-marca)}

/* ── Generar y En curso (P-14) ─────────────────────────────────────────── */
.opcion{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--borde);border-radius:10px;cursor:pointer;background:var(--tarjeta)}
.opcion + .opcion{margin-top:8px}
.opcion.on{border-color:var(--marca);box-shadow:0 0 0 1px var(--marca) inset}
.opcion.off{opacity:.55;cursor:not-allowed}
.opcion input{margin-top:3px}
.opcion-titulo{font-weight:500}
.opcion .chips{margin-top:8px}
.chip-cap{display:inline-flex;gap:6px;align-items:center;padding:3px 8px 3px 3px;border:1px solid var(--borde-2);border-radius:14px;background:var(--tarjeta);font:12px var(--monof);cursor:pointer;color:var(--tinta)}
.chip-cap.on{border-color:var(--marca);background:var(--tinte)}
.chip-cap .sq{width:18px;height:18px;font-size:9px}
.fila-cifras-mini{display:flex;gap:22px;flex-wrap:wrap}
.orden{font-size:12px;background:var(--lista);border-radius:6px;padding:6px 8px;margin:4px 0;overflow-wrap:anywhere}
.campo{font:inherit;padding:4px 8px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta)}
.banda-aviso{background:var(--t-avisos);border:1px solid var(--b-avisos);color:var(--aviso-texto);border-radius:10px;padding:10px 14px;font-size:13px}
.punto-vivo{width:10px;height:10px;border-radius:50%;background:var(--e-candidata);box-shadow:0 0 0 4px color-mix(in srgb,var(--e-candidata) 18%,transparent);animation:latido 1.6s ease-in-out infinite}
@keyframes latido{50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--e-candidata) 6%,transparent)}}
.cuad-vivo{display:inline-flex;border-radius:6px}
.cuad-vivo.actual{outline:2px solid var(--e-candidata);outline-offset:2px}
ul.fases{list-style:none;margin:6px 0 10px;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13.5px}
ul.fases .hecha{color:var(--e-limpio)}
ul.fases .actual{color:var(--e-candidata);font-weight:500}
ul.fases .pendiente{color:var(--ter)}
.movimiento-vivo{border-left:3px solid var(--e-candidata);padding-left:12px}
.editor-texto{width:100%;min-height:55vh;font:17px/1.6 var(--serif);padding:14px 16px;border:1px solid var(--borde-2);border-radius:10px;background:var(--tarjeta);color:var(--tinta);resize:vertical}
pre.salida-motor{font:12px/1.45 var(--monof);background:var(--lista);border-radius:6px;padding:8px 10px;white-space:pre-wrap;max-height:260px;overflow:auto;margin:6px 0 0}

/* Contenedores de resultado vacíos no dejan hueco en las columnas con gap (Texto, bajo «Versión»). */
[data-prueba="texto-en-vivo"]:empty,[data-prueba="resultado-edicion-global"]:empty,[data-prueba^="resultado-"]:empty{display:none}
.editor-texto.registrado{background:var(--fondo);color:var(--sec)}
.sq.largo{width:auto;min-width:22px;padding:0 6px}
.lista-cap a.plegar{padding:0 6px;display:inline-flex;font-size:15px;color:var(--sec);text-decoration:none}
.lista-cap a.plegar .abrir{display:none}
.lista-cap.plegada{width:40px;padding:18px 4px;overflow:hidden}
.lista-cap.plegada > :not(.lbl){display:none !important}
.lista-cap.plegada .titulo-lista,.lista-cap.plegada a.plegar .cerrar{display:none}
.lista-cap.plegada a.plegar .abrir{display:inline}
.sq[data-estado="sin"]{color:var(--tinta)}
.sq.largo{font-size:10px}
/* Panel común de edición (P-18) */
.panel-lateral.panel-edicion{width:min(1000px,100vw);padding:0;gap:0}
.panel-edicion > .fila{padding:18px 28px;border-bottom:1px solid var(--borde)}
.panel-edicion h2{font-size:22px}
.panel-edicion h2 .chip{font-family:var(--sans);font-weight:400;vertical-align:middle}
.edicion-rejilla{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);flex:1;min-height:0}
.edicion-izquierda{padding:20px 28px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}
.edicion-derecha{padding:20px 24px;background:var(--fondo);border-left:1px solid var(--borde);display:flex;flex-direction:column;gap:10px;overflow-y:auto}
.edicion-pie{padding:14px 28px;border-top:1px solid var(--borde);background:var(--lienzo)}
.fila-lbl{display:flex;align-items:center;gap:8px}
.diff-yaml{background:var(--tarjeta);border:1px solid var(--borde);border-radius:8px;padding:8px 10px;font-family:var(--monof);font-size:12px;line-height:1.55;max-height:46vh;overflow:auto;white-space:pre-wrap;word-break:break-word}
.diff-yaml .dl-menos{background:var(--t-fallido);text-decoration:line-through;color:var(--x-fallido)}
.diff-yaml .dl-mas{background:var(--t-limpio);color:var(--x-limpio)}
.diff-yaml .dl-pos{color:var(--ter);margin-top:4px}
.fichero-entero summary{cursor:pointer;font-size:12px;color:var(--sec)}
.fichero-entero pre{max-height:320px;overflow:auto}
.lista-arrastra{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:13px}
.lista-arrastra li{display:flex;gap:8px;align-items:baseline}
.punto-ok,.lista-arrastra .punto-aviso{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
.punto-ok{background:var(--e-limpio);margin-right:8px}
.punto-error{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;background:var(--e-fallido);margin-right:8px}
.lista-arrastra .punto-aviso{background:var(--aviso-texto)}
.campo-edicion{display:flex;flex-direction:column;gap:5px;font-size:13px}
.campo-edicion input,.campo-edicion select,.campo-edicion textarea{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta)}
.campo-edicion textarea{min-height:70px;resize:vertical}
.btn[aria-disabled="true"].pri{opacity:.45}
.mov .lapiz{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;border:1px solid var(--borde-2);color:var(--sec);background:var(--tarjeta);cursor:pointer}
.mov .lapiz:hover{color:var(--enlace);border-color:var(--marca)}
.caja-nota{background:var(--lista);border-radius:8px;padding:10px 12px;line-height:1.45}
.filas-edicion{display:flex;flex-direction:column;gap:6px;font-size:13px}
.fila-edicion{display:flex;gap:6px;align-items:center}
.fila-edicion select{flex:1;min-width:0;font:inherit;padding:6px 8px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta)}
.fila-fecha{display:grid;grid-template-columns:1.2fr .8fr .8fr 1.2fr;gap:6px;margin:5px 0}
.fila-fecha input,.fila-fecha select{font:inherit;font-size:14px;padding:8px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta);min-width:0}
.edicion-izquierda > * input:not([type=checkbox]):not([type=radio]),.edicion-izquierda > * select,.edicion-izquierda > input{font:inherit;font-size:14px;padding:7px 9px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta);min-width:0}
.editor-yaml{width:100%;min-height:50vh;font:12.5px/1.5 var(--monof);padding:10px 12px;border:1px solid var(--borde-2);border-radius:8px;background:var(--tarjeta);color:var(--tinta);resize:vertical;white-space:pre;overflow:auto}
.resumen-cambio{display:flex;flex-direction:column;gap:4px;font-size:13px}
.resumen-cambio:empty{display:none}
.linea-resumen{background:var(--tarjeta);border:1px solid var(--borde);border-radius:6px;padding:6px 9px;line-height:1.45;overflow-wrap:anywhere}
.linea-resumen .antes{text-decoration:line-through;color:var(--sec)}
.linea-resumen .despues{font-weight:500}
.casillas{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:13px;max-height:150px;overflow-y:auto;padding:6px 8px;border:1px solid var(--borde-2);border-radius:6px;background:var(--tarjeta)}
.casilla{display:inline-flex;align-items:center;gap:4px;font-family:var(--monof);font-size:12px}
.editor-yaml{white-space:pre-wrap}
.campo-ancho input{width:100%}
/* Nueva obra (P-25): los cuatro pasos del asistente */
.pasos{display:flex;gap:28px;align-items:center;margin:0 0 16px;font-size:14px}
.paso{display:flex;gap:8px;align-items:center;color:var(--sec);text-decoration:none}
.paso .num{width:22px;height:22px;border-radius:50%;border:1px solid var(--borde-2);display:inline-flex;align-items:center;justify-content:center;font-size:12px;background:var(--tarjeta)}
.paso.on{color:var(--tinta);font-weight:600}
.paso.on .num{background:var(--marca);border-color:var(--marca);color:var(--sobre-marca)}
.paso.hecho .num{background:var(--tinte);border-color:var(--tinte);color:var(--tinta)}
.nueva-obra{display:grid;grid-template-columns:200px minmax(0,1fr) minmax(0,340px);gap:24px;align-items:start}
.nueva-obra .pasos{flex-direction:column;align-items:stretch;gap:18px;margin:4px 0 0}
.paso-futuro{opacity:.6}
.paso-hecho{gap:6px}
/* Sellado (P-26): diálogo encima del panel lateral */
.velo.velo-alto{z-index:120}
.dialogo{position:fixed;left:50%;top:6vh;transform:translateX(-50%);width:min(720px,94vw);max-height:88vh;overflow:auto;background:var(--lienzo);border:1px solid var(--borde);border-radius:14px;box-shadow:0 18px 50px color-mix(in srgb,var(--sombra) 25%,transparent);padding:22px 26px;display:flex;flex-direction:column;gap:12px;z-index:121}
.dialogo h2{font-size:22px;margin:0}
.dialogo > .fila{display:flex;align-items:center;gap:12px}
/* Motor › Modelos (P-33): cifras alineadas a la derecha en las tablas */
.tabla .dcha{text-align:right}
/* Rail compacto (P-31): nombres de obra en una línea con «…» (el entero en el title) y la subnavegación de la obra
   más baja, para que Biblioteca y Motor quepan a 1440×900 con una obra desplegada. */
.rail a{padding:6px 10px}
.rail a.sub{padding-top:4px;padding-bottom:4px}
.rail .sec{margin-top:12px}
.rail .corta{display:flex;min-width:0;white-space:nowrap}
.rail .corta .base{overflow:hidden;text-overflow:ellipsis;min-width:0}
.rail .corta .sufijo{flex-shrink:0;opacity:.75}
/* Motor › En curso (P-31): punto verde y la tira de capítulos del alcance dentro de la tarjeta de sesión, como el boceto. */
.punto-vivo.verde{background:var(--e-limpio);box-shadow:0 0 0 4px color-mix(in srgb,var(--e-limpio) 20%,var(--tarjeta))}
.tira-vivo{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:4px}
.bloque-vivo{height:30px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:11px;font-family:var(--monof);color:var(--sobre-estado);text-decoration:none}
.bloque-vivo.limpio{background:var(--e-limpio)}.bloque-vivo.avisos{background:var(--e-avisos)}.bloque-vivo.fallido{background:var(--e-fallido)}
.bloque-vivo.candidata{background:var(--e-candidata)}.bloque-vivo.mano{background:var(--e-mano)}
.bloque-vivo.pendiente{background:var(--borde);color:var(--sec)}
.bloque-vivo.actual{background:var(--tarjeta);color:var(--tinta);border:2px solid var(--marca);box-sizing:border-box}
/* Ontología › Alcance temporal a dos columnas (P-31). */
.alcance-dos{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
/* Botones «+ Nuevo capítulo» / «+ Nueva voz» en teja y activos, como el boceto; chip elegido (P-32). */
.lista-cap .nuevo,a.nuevo{color:var(--enlace)}
.chip.on{border-color:var(--marca);color:var(--enlace);background:var(--tinte-suave)}
/* Ontología › Línea de tiempo como el boceto (P-32). */
.lt{position:relative;margin:4px 20px 0}
.eje-lt{position:absolute;left:0;right:0;height:2px;background:var(--borde-2)}
.ev-lt{position:absolute;display:flex;flex-direction:column;font-size:12px;white-space:nowrap;text-decoration:none;color:var(--tinta);transform:translateX(-6px);line-height:1.25}
.punto-lt{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--tarjeta);border:2px solid var(--sec);box-sizing:border-box;transform:translateX(-6px)}
.punto-lt.dram{background:var(--marca);border-color:var(--marca)}
.barra-lt{position:absolute;height:6px;border-radius:3px;background:var(--borde)}
.regla-lt{position:absolute;font-size:10px;color:var(--ter);font-family:var(--monof);transform:translateX(-50%)}
.bloque-lt{position:absolute;height:22px;border-radius:4px;color:var(--sobre-estado);font-size:11px;font-family:var(--monof);display:flex;align-items:center;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;box-sizing:border-box}
.nota-tintada{font-size:12px;color:var(--sec);background:var(--tinte);border-radius:6px;padding:8px 10px}


/* P-32 · Capítulo › Definición como el boceto Beat: filas etiqueta/valor, nombres en chips, encargo y memoria a columnas */
.def .titulo-def{align-items:center;flex-wrap:wrap}
.rejilla-filas{display:flex;flex-direction:column;gap:10px}
.fila-def{display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px;font-size:13px;line-height:1.5}
.fila-def > .clave{color:var(--sec)}
.chips-perm{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.chip.nombre-perm{margin:0;font-size:12px}
.valor.contrato > div{margin-bottom:2px}
.dos-def{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;font-size:13px;line-height:1.55}
.tres-def{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:20px}
.dos-def .clave,.tres-def .clave{color:var(--sec)}
.chip.mini-estado{font-size:11px;padding:1px 8px}
@media (max-width:900px){.dos-def,.tres-def{grid-template-columns:1fr}.fila-def{grid-template-columns:1fr;gap:2px}}

/* P-32 · Capítulo › Texto como el boceto: acciones en la cabecera, cuadrado de color por movimiento, inspector a toda altura */
.acciones-cab{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.acciones-cab:empty{display:none}
.cuadro-mov{width:9px;height:9px;border-radius:2px;display:inline-block;flex-shrink:0}
.prosa .mh.on{background:var(--tinte);border-radius:8px;padding:6px 10px;margin-left:-10px}
.texto-rejilla{align-items:stretch}
.inspector{border-top:3px solid var(--marca);border-radius:0 0 12px 12px;position:static;padding:0;display:block}
.inspector > .pegado{position:sticky;top:0;padding:16px;display:flex;flex-direction:column;gap:8px;max-height:100vh;overflow:auto}
.titulo-insp{font-family:var(--serif);font-size:20px;line-height:1.3}

/* P-32 · Generar como diálogo (decisión 16): velo sobre la pantalla de debajo; crece con el documento para poder
   desplazarlo (y para las capturas de página entera). */
.velo-dialogo{position:absolute;top:0;left:0;right:0;min-height:100vh;background:color-mix(in srgb,var(--sombra) 32%,transparent);z-index:70;display:flex;justify-content:center;align-items:flex-start;padding:40px 16px}
.dialogo-pantalla{width:min(780px,100%);background:var(--lienzo);border-radius:14px;box-shadow:0 18px 48px color-mix(in srgb,var(--sombra) 25%,transparent);display:flex;flex-direction:column}
.cab-dialogo{display:flex;align-items:center;gap:12px;padding:20px 24px 14px;border-bottom:1px solid var(--borde)}
.cab-dialogo h2{margin:0;font-family:var(--serif);font-weight:400;font-size:24px}
.cab-dialogo .migas{min-height:0}
.cerrar-dialogo{font-size:24px;line-height:1;color:var(--sec);text-decoration:none;padding:0 4px}
.cerrar-dialogo:hover{color:var(--enlace)}
.cuerpo-dialogo{padding:18px 24px 22px}
.cuerpo-dialogo > .columna{display:flex;flex-direction:column;gap:14px}
.pie-dialogo{position:sticky;bottom:0;background:var(--lienzo);padding-top:10px;border-top:1px solid var(--borde)}
.opcion.on{background:var(--tinte-suave)}

/* P-32 · Editar regla: un campo con su tipo por parámetro (decisión 18) y el YAML como alternativa */
.campos-tipados{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.campo-tipado{display:grid;grid-template-columns:minmax(0,1fr) 110px minmax(0,1.2fr);gap:10px;align-items:center;font-size:13px}
.campo-tipado input[type=checkbox]{justify-self:start}
.tipo-param{font-size:11px;color:var(--sec)}
.alternativa-yaml{margin-top:10px;font-size:13px}
.alternativa-yaml summary{cursor:pointer;color:var(--sec)}

/* P-32 · Sellado: candado, título que se corta con «…», obra elegida en rosa */
.dialogo-sellado h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-family:var(--serif);font-weight:400}
.candado{color:var(--enlace);display:inline-flex}
.dialogo-sellado .opcion.on{background:var(--tinte-suave)}

/* P-32 · Memoria: una tarjeta, título serif, Reiniciar en teja, hilos cortos */
.titulo-vivo{font-family:var(--serif);font-size:18px}
[data-prueba="accion-reiniciar"] .btn,[data-prueba="reiniciar"]{color:var(--enlace)}
.tabla-memoria td{padding-top:5px;padding-bottom:5px}
.hilo-corto{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* P-32 · Estadísticas: subpestanas en una fila; selectores del ámbito sin partir la fila */
.subpestanas{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;flex-shrink:0}
.subpestanas a{white-space:nowrap;padding:6px 8px}
[data-prueba^="ambito"] select{max-width:260px;min-width:0}

/* P-32 · Asistentes: paso hecho con círculo verde lleno; el selector de voz de partida con sitio para el nombre */
.paso.hecho .num{background:var(--e-limpio);border-color:var(--e-limpio);color:var(--sobre-estado)}
.rejilla-3.voz-ancha{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr)}
.rejilla-3.voz-ancha select{width:100%}
/* P-32 · Tablas que partían rutas y resultados */
td.ruta-corta{white-space:nowrap;font-size:12px}
.caja-discontinua{border:1.5px dashed var(--e-avisos);border-radius:10px;padding:10px 12px;margin-top:10px;font-size:13px;line-height:1.5;background:var(--t-avisos)}
.dos-regenerar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}
@media (max-width:760px){.dos-regenerar{grid-template-columns:1fr}}

/* P-32 · tras la revisión independiente */
.chip.nombre-perm{white-space:normal;max-width:100%;flex-wrap:wrap;height:auto}
.cabecera .fila{flex-wrap:wrap}
.cabecera .fila > h1{flex-shrink:0;max-width:100%}
.pie-dialogo{position:static}
.celda-corta > span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px}
.diff-yaml{min-height:140px}
.dialogo-pantalla .chip-cap{outline-offset:2px}
.titulo-cortado{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
[data-prueba="panel-regla"] > .fila > div:first-child{min-width:0;flex:1 1 auto}
/* Selectores que se quedaban estrechos (Nueva obra › Voz, Nuevo capítulo › Posición): ocupan su celda */
.rejilla-2 > label select,.rejilla-3 > label select,.rejilla-2 > .campo-edicion select,.rejilla-4 select{width:100%;min-width:0;max-width:100%}
/* P-39 · Texto: selector de versión acotado para que quepa la cabecera; selectores de Configuración › Motor */
.acciones-cab select.sel{max-width:300px}
.sel{min-width:84px}
/* P-45 · «Comprobar» dice lo que ha comprobado (la banda verde de un resultado bueno) */
.banda-ok{border:1px solid var(--b-limpio);border-left:3px solid var(--e-limpio);background:var(--t-limpio);border-radius:8px;padding:10px 14px;font-size:13px;display:flex;flex-direction:column;gap:4px;line-height:1.5}
/* P-46 · «Probar cómo suena»: el texto de la muestra */
.texto-muestra{max-height:460px;overflow-y:auto;font-size:16px;padding:12px 16px;background:var(--tarjeta);border:1px solid var(--borde);border-radius:8px;margin:8px 0;max-width:none}
.texto-muestra p{margin:0 0 12px}
