/* Cronograma de obra · prefijo k10 · 7.10.3 (ADR-061): hoja reescrita entera como sistema cerrado.
   - Tokens derivados de los de la aplicación (ui74.css / tema7100.css): el modo oscuro llega solo.
   - Escalas cerradas (sistema visual UMBRAL): tipografía 11·12·13·14·16·19·24 · espaciado en rejilla de 4 · radios 8·12·píldora
     (las marcas del gráfico usan dos radios propios: 4 px en las barras y 2 px en las líneas finas).
   - Sin !important y sin hex sueltos fuera del bloque de tokens.
   Referencia visual: cronograma-arum.html (Umbral Arquitectura, 07/10/2026). */

/* ------------------------------------------------------------------ tokens
   En :root y no en .k10: la ficha flotante cuelga de <body> y las fichas del cronograma se abren en el cajón de la aplicación,
   los dos fuera de la pestaña. Definidos solo en .k10 (hasta la 7.10.2) allí no valían nada: ficha transparente y cajas sin fondo. */
:root{
 --k10-paper:var(--bg);--k10-card:var(--panel);--k10-card2:var(--soft);--k10-raised:var(--panel);
 --k10-ink:var(--ink);--k10-ink2:var(--ink2);--k10-ink3:var(--muted);
 --k10-line:var(--line);--k10-line2:color-mix(in srgb,var(--muted) 55%,var(--line));
 --k10-accent:var(--blue);--k10-accent-soft:var(--bluebg);--k10-accent2:#b5562e;--k10-accent2-soft:#f4e2d8;
 --k10-good:var(--ok);--k10-good-bg:var(--ok-bg);--k10-bad:var(--bad);--k10-bad-bg:var(--bad-bg);--k10-warn:var(--warn);--k10-warn-bg:var(--warn-bg);
 --k10-tint:color-mix(in srgb,var(--k10-ink) 4%,var(--k10-card));--k10-tint-a:color-mix(in srgb,var(--k10-ink) 4%,transparent);--k10-hover:color-mix(in srgb,var(--k10-ink) 7%,var(--k10-card));--k10-hover-a:color-mix(in srgb,var(--k10-ink) 7%,transparent);
 --k10-hatch:repeating-linear-gradient(135deg,color-mix(in srgb,var(--k10-ink) 9%,transparent) 0 1px,transparent 1px 6px),color-mix(in srgb,var(--k10-ink) 3%,transparent);
 --k10-prog:rgba(24,25,27,.55);--k10-shadow-2:0 24px 60px -24px rgba(26,24,19,.42);
 --k10-mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
 --k10-fs-2xs:11px;--k10-fs-xs:12px;--k10-fs-sm:13px;--k10-fs-md:14px;--k10-fs-lg:16px;--k10-fs-xl:19px;--k10-fs-2xl:24px;
 --k10-r-sm:8px;--k10-r-md:12px;--k10-r-pill:999px;--k10-r-mark:4px;--k10-r-xs:2px;
 --k10-ease:cubic-bezier(.2,.8,.2,1);
}
:root[data-theme="dark"]{--k10-accent2:#e08a5f;--k10-accent2-soft:#3a2a22;--k10-prog:rgba(236,230,218,.75);--k10-shadow-2:0 24px 60px -24px rgba(0,0,0,.8)}

/* ------------------------------------------------------------------ página */
.k10{--k10-labw:400px;--k10-wk:14px;display:flex;flex-direction:column;gap:24px;min-width:0;color:var(--k10-ink)}
.k10 h2,.k10 h3,.k10 p{margin:0}
.k10 [hidden]{display:none}
.k10 .k10-mono{font-family:var(--k10-mono);font-variant-numeric:tabular-nums}
.k10 button:focus-visible,.k10-gscroll:focus-visible,.k10-tscroll:focus-visible{outline:2px solid var(--k10-accent);outline-offset:2px}
.k10-row:focus-visible,.k10-t tr:focus-visible,.k10-hitos li:focus-visible{outline:2px solid var(--k10-accent);outline-offset:-2px;border-radius:var(--k10-r-sm)}

/* Cabecera */
.k10-head{display:flex;flex-wrap:wrap;gap:8px 24px;align-items:flex-end;justify-content:space-between}
.k10-head .k10-eyebrow{font-size:var(--k10-fs-2xs);font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--k10-ink3)}
.k10-head h2{font-size:var(--k10-fs-2xl);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin-top:4px}
.k10-head .k10-lede{color:var(--k10-ink2);max-width:68ch;margin-top:4px;font-size:var(--k10-fs-sm)}
.k10-head .k10-sem{display:inline-flex;align-items:center;gap:8px;font-size:var(--k10-fs-xs);font-weight:600;padding:8px 12px;border-radius:var(--k10-r-pill);background:var(--k10-card2);color:var(--k10-ink2);border:1px solid var(--k10-line)}
.k10-sem::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--k10-ink3)}
.k10-sem.verde::before{background:var(--k10-good)}.k10-sem.ambar::before{background:var(--k10-warn)}.k10-sem.rojo::before{background:var(--k10-bad)}

/* Hitos */
.k10-hitos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));border-top:1px solid var(--k10-line2)}
.k10-hitos li{padding:16px 16px 8px 0;display:flex;flex-direction:column;gap:4px;min-width:0;cursor:pointer;border-radius:var(--k10-r-sm)}
.k10-hitos li:hover{background:var(--k10-card2)}
.k10-hitos .d{font-variant-numeric:tabular-nums;font-size:var(--k10-fs-xl);font-weight:700;letter-spacing:-.02em;line-height:1.15}
.k10-hitos .d i{font-style:normal;font-size:var(--k10-fs-xs);font-weight:500;letter-spacing:0;color:var(--k10-ink3)}
.k10-hitos .l{font-size:var(--k10-fs-sm);color:var(--k10-ink2);overflow-wrap:anywhere}
.k10-hitos .s,.k10-hitos .b{font-size:var(--k10-fs-2xs);color:var(--k10-ink3)}
.k10-hitos .done .s{color:var(--k10-good);font-weight:600}.k10-hitos .late .s{color:var(--k10-bad);font-weight:600}
.k10-hitos .key .d{color:var(--k10-accent2)}.k10-hitos .key .l{color:var(--k10-ink);font-weight:600}
.k10-hitos .done .d{color:var(--k10-good)}.k10-hitos .late .d{color:var(--k10-bad)}
.k10-hitos .sin{color:var(--k10-ink3);font-size:var(--k10-fs-sm);padding:12px 0 0;cursor:default}
.k10-hitos .sin:hover{background:transparent}

/* Cómo vamos */
.k10-vamos{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px 32px;background:var(--k10-card2);border:1px solid var(--k10-line);border-radius:var(--k10-r-md);padding:16px}
.k10-vamos>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.k10-vamos .k{font-size:var(--k10-fs-2xs);font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--k10-ink3)}
.k10-vamos .v{font-size:var(--k10-fs-md);font-weight:600;color:var(--k10-ink);overflow-wrap:anywhere}
.k10-vamos .s{font-size:var(--k10-fs-xs);color:var(--k10-ink2)}

/* Pastilla de estado */
.k10-ch{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;min-height:24px;padding:0 12px;border-radius:var(--k10-r-pill);font-size:var(--k10-fs-xs);font-weight:600;background:var(--k10-card2);color:var(--k10-ink2);white-space:nowrap;border:1px solid var(--k10-line)}
.k10-ch::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.k10-ch.good{background:var(--k10-good-bg);color:var(--k10-good);border-color:transparent}
.k10-ch.bad{background:var(--k10-bad-bg);color:var(--k10-bad);border-color:transparent}
.k10-ch.warn{background:var(--k10-warn-bg);color:var(--k10-warn);border-color:transparent}

/* ------------------------------------------------------------------ tarjeta del cronograma */
/* overflow:clip y no hidden: hidden crearía un contenedor de desplazamiento y el eje fijo (sticky) dejaría de pegarse a la página */
.k10-card{background:var(--k10-card);border:1px solid var(--k10-line);border-radius:var(--k10-r-md);box-shadow:var(--shadow);min-width:0;overflow:clip;isolation:isolate}
.k10-bartop{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 24px;align-items:start;padding:12px 16px;border-bottom:1px solid var(--k10-line)}
.k10-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.k10-chip{font:inherit;font-size:var(--k10-fs-xs);font-weight:500;color:var(--k10-ink2);background:transparent;border:1px solid var(--k10-line2);border-radius:var(--k10-r-pill);padding:4px 12px 4px 8px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;transition:background .12s var(--k10-ease),border-color .12s var(--k10-ease)}
.k10-chip:hover{background:var(--k10-card2)}
.k10-chip[aria-pressed="true"]{background:var(--k10-accent-soft);border-color:var(--k10-accent);color:var(--k10-ink)}
.k10-chip.all{padding-left:12px}
.k10-sw{width:10px;height:10px;border-radius:var(--k10-r-xs);flex:none;display:inline-block;background:var(--k10-ink3)}
.k10-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.k10-seg{display:inline-flex;border:1px solid var(--k10-line2);border-radius:var(--k10-r-sm);overflow:hidden}
.k10-seg button,.k10-tog{font:inherit;font-size:var(--k10-fs-xs);font-weight:600;color:var(--k10-ink2);background:transparent;border:0;padding:8px 12px;cursor:pointer}
.k10-seg button+button{border-left:1px solid var(--k10-line2)}
.k10-seg button[aria-pressed="true"]{background:var(--k10-ink);color:var(--k10-card)}
.k10-tog{border:1px solid var(--k10-line2);border-radius:var(--k10-r-sm)}
.k10-tog:hover{background:var(--k10-card2)}
.k10-tog[aria-pressed="true"]{background:var(--k10-accent-soft);border-color:var(--k10-accent);color:var(--k10-ink)}

/* Leyenda */
.k10-keyline{display:flex;flex-wrap:wrap;gap:8px 20px;padding:12px 16px;border-top:1px solid var(--k10-line);font-size:var(--k10-fs-2xs);color:var(--k10-ink3);align-items:center}
.k10-keyline span{display:inline-flex;align-items:center;gap:8px}
.k10-keyline .hint{margin-left:auto;color:var(--k10-ink3)}
.k10-kph{width:20px;height:4px;background:var(--k10-ink);border-radius:var(--k10-r-xs);display:inline-block}
.k10-kmini{width:22px;height:12px;border-radius:var(--k10-r-mark);background:color-mix(in srgb,var(--k10-ink) 7%,transparent);position:relative;display:inline-block}
.k10-kmini::before,.k10-kmini::after{content:"";position:absolute;height:3px;border-radius:var(--k10-r-xs);left:3px;top:3px;width:9px;background:var(--k10-accent)}
.k10-kmini::after{left:9px;top:7px;width:10px;background:var(--k10-accent2)}
.k10-kms{width:8px;height:8px;background:var(--k10-ink);transform:rotate(45deg);display:inline-block;margin-inline:4px}
.k10-kband{width:16px;height:12px;background:var(--k10-hatch);border-radius:var(--k10-r-xs);display:inline-block}
.k10-ktd{width:2px;height:12px;background:var(--k10-accent2);display:inline-block;margin-inline:4px}
.k10-kpg{width:20px;height:10px;border-radius:var(--k10-r-mark);background:var(--k10-line2);position:relative;display:inline-block}
.k10-kpg::after{content:"";position:absolute;left:0;top:3px;width:12px;height:4px;border-radius:var(--k10-r-xs);background:var(--k10-prog)}
.k10-klt{width:16px;height:8px;border-radius:var(--k10-r-mark);background:var(--k10-line2);outline:2px solid var(--k10-bad);outline-offset:1px;display:inline-block;margin-inline:4px}
.k10-kbase{width:20px;height:6px;border:1px dashed var(--k10-ink3);border-radius:var(--k10-r-pill);display:inline-block}

/* ------------------------------------------------------------------ Gantt */
.k10-gscroll{overflow-x:auto;overscroll-behavior-x:contain;max-width:100%}
.k10-g{min-width:calc(var(--k10-labw) + var(--k10-weeks,60) * var(--k10-wk));font-size:var(--k10-fs-sm)}
.k10-row,.k10-axis{display:grid;grid-template-columns:var(--k10-labw) minmax(0,1fr)}
.k10-body{position:relative}
.k10-track{position:relative;min-width:0}

/* Capas de fondo (rejilla de meses y obra parada) y de frente (hoy) */
.k10-layer{position:absolute;top:0;bottom:0;left:var(--k10-labw);right:0;z-index:0;pointer-events:none}
.k10-layer.k10-front{z-index:2}
.k10-layer i{position:absolute;top:0;bottom:0;display:block}
.k10-layer .ml{width:1px;background:var(--k10-line)}
.k10-layer .ml.yr{background:var(--k10-line2)}
.k10-layer .bd{background:var(--k10-hatch)}
.k10-layer .td{width:2px;transform:translateX(-50%);background:var(--k10-accent2);opacity:.9}

/* Eje de meses: el superior va en su propio marco, pegado bajo las barras fijas de la aplicación y sincronizado por JS */
.k10-axiswrap{position:sticky;top:var(--k10-top,58px);z-index:6;overflow:hidden;background:var(--k10-card);border-bottom:1px solid var(--k10-line2);transition:box-shadow .15s var(--k10-ease)}
.k10-axiswrap.stuck{box-shadow:0 8px 16px -12px rgba(0,0,0,.45)}
.k10-axis{position:relative;z-index:2;background:var(--k10-card)}
.k10-axis .k10-lab{font-size:var(--k10-fs-2xs);font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--k10-ink3);justify-content:space-between;padding:4px 16px}
.k10-axis .k10-track{height:44px}
.k10-axis.bot{border-top:1px solid var(--k10-line2)}
.k10-axis.bot .k10-track{height:28px}
.k10-mo{position:absolute;top:8px;font-size:var(--k10-fs-2xs);font-weight:600;color:var(--k10-ink2);padding-left:4px;white-space:nowrap;text-transform:uppercase;letter-spacing:.05em}
.k10-mo.yr{color:var(--k10-ink)}
.k10-mo .yy{font-weight:500;color:var(--k10-ink3)}
.k10-bn{position:absolute;bottom:4px;font-size:var(--k10-fs-2xs);color:var(--k10-ink3);white-space:nowrap;transform:translateX(-50%)}
.k10-hy{position:absolute;bottom:4px;z-index:1;font-size:var(--k10-fs-2xs);font-weight:700;color:var(--k10-card);background:var(--k10-accent2);border-radius:var(--k10-r-pill);transform:translateX(-50%);padding:0 8px;line-height:16px;white-space:nowrap}
.k10-hy.l{transform:none;margin-left:-8px;border-top-left-radius:0;border-bottom-left-radius:0}
.k10-hy.r{transform:translateX(-100%);margin-left:8px;border-top-right-radius:0;border-bottom-right-radius:0}
.k10-axml{position:absolute;bottom:0;height:6px;width:1px;background:var(--k10-line2)}
.k10-axml.yr{height:12px;background:var(--k10-ink3)}

/* Columna fija (nombre y fechas) */
.k10-lab{position:sticky;left:0;z-index:3;background:var(--k10-card);display:flex;align-items:center;gap:8px;padding:4px 12px 4px 16px;border-right:1px solid var(--k10-line2);min-width:0}
.k10-lab .nm{flex:1;min-width:0;color:var(--k10-ink2);overflow-wrap:anywhere;line-height:1.35}
.k10-lab .nm .cd{display:inline-block;font-family:var(--k10-mono);font-size:var(--k10-fs-2xs);color:var(--k10-ink3);margin-right:8px;min-width:24px}
.k10-lab .dt{flex:none;font-size:var(--k10-fs-xs);font-variant-numeric:tabular-nums;color:var(--k10-ink3);white-space:nowrap}
.k10-lab .dt.none{font-size:var(--k10-fs-2xs);opacity:.75}
.k10-lab .dt.inv{color:var(--k10-warn)}
.k10-lab .dt.inv::before{content:"⚠ "}

/* Filas de subfase e hito */
.k10-row{position:relative;min-height:32px}
.k10-row.hid{display:none}
.k10-row.task,.k10-row.ms{cursor:pointer}
.k10-row.task:hover .k10-lab,.k10-row.ms:hover .k10-lab,.k10-row.cur .k10-lab{background:var(--k10-card2)}
.k10-row.task:hover .k10-lab .nm,.k10-row.ms:hover .k10-lab .nm{color:var(--k10-ink)}
.k10-row.ms .nm{color:var(--k10-ink);font-weight:600}
.k10-row.ms.key .nm{color:var(--k10-accent2)}
.k10-row.sel .k10-lab{box-shadow:inset 3px 0 0 var(--k10-accent)}
.k10-row.done .nm{color:var(--k10-ink3)}
.k10-row.done .dt::after{content:" ✓";color:var(--k10-good);font-weight:700}
.k10-row.late .dt{color:var(--k10-bad);font-weight:600}
.k10-row.prop .k10-lab .nm::after{content:" · propuesta";font-size:var(--k10-fs-2xs);color:var(--k10-warn);font-weight:600}

/* Fila de fase: dos líneas (nombre · fechas y subfases) y medidor de avance. Plegadas seguidas forman una lista continua. */
.k10-row.phase{min-height:56px;cursor:pointer}
.k10-row.phase .k10-lab{gap:8px;padding:8px 8px 8px 12px;background:var(--k10-tint);border-bottom:1px solid var(--k10-line)}
.k10-row.phase .k10-track{background:var(--k10-tint-a);border-bottom:1px solid var(--k10-line)}
/* aire sobre una fase desplegada: un borde del color de la tarjeta (la columna fija sigue opaca y su filete derecho no se corta) */
.k10-row.phase:not(.tight) .k10-lab{border-top:8px solid var(--k10-card);box-shadow:inset 0 1px 0 var(--k10-line)}
.k10-row.phase:not(.tight) .k10-track{border-top:8px solid transparent;background-clip:padding-box;box-shadow:inset 0 1px 0 var(--k10-line)}
.k10-row.phase.closed .k10-lab{background:var(--k10-card)}
.k10-row.phase.closed .k10-track{background:transparent}
.k10-row.phase:hover .k10-lab,.k10-row.phase:focus-visible .k10-lab{background:var(--k10-hover)}
.k10-row.phase:hover .k10-track,.k10-row.phase:focus-visible .k10-track{background:var(--k10-hover-a)}
.k10-row.phase.closed:hover .k10-lab,.k10-row.phase.closed:focus-visible .k10-lab{background:var(--k10-tint)}
.k10-row.phase.closed:hover .k10-track,.k10-row.phase.closed:focus-visible .k10-track{background:var(--k10-tint-a)}
.k10-chev{flex:none;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;color:var(--k10-ink3);transition:transform .18s var(--k10-ease),background .12s var(--k10-ease),color .12s var(--k10-ease)}
.k10-chev svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.k10-row.phase:not(.closed) .k10-chev{transform:rotate(90deg);color:var(--k10-ink)}
.k10-row.phase:hover .k10-chev{background:color-mix(in srgb,var(--k10-ink) 8%,transparent);color:var(--k10-ink)}
.k10-row.phase .ph-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.k10-row.phase .nm{flex:none;color:var(--k10-ink);font-weight:700;font-size:var(--k10-fs-md);letter-spacing:-.005em;line-height:1.25;overflow-wrap:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.k10-row.phase.closed .nm{font-weight:600}
.k10-row.phase .ph-sub{display:flex;flex-wrap:wrap;align-items:center;font-size:var(--k10-fs-xs);color:var(--k10-ink3);line-height:1.35;margin-left:-16px;clip-path:inset(0 0 0 16px)}
/* el punto separador va en el margen izquierdo de cada dato: si el dato salta de línea, el punto queda recortado y no cuelga */
.k10-row.phase .ph-sub>*{position:relative;padding-left:16px}
.k10-row.phase .ph-sub>*::before{content:"";position:absolute;left:6px;top:calc(50% - 1px);width:3px;height:3px;border-radius:50%;background:var(--k10-line2)}
.k10-row.phase .ph-sub .dt{flex:0 1 auto;min-width:0;font-size:var(--k10-fs-xs);color:var(--k10-ink2)}
.k10-row.phase .ph-sub .dt.none{color:var(--k10-ink3);opacity:1}
.k10-row.phase .ph-sub .late{font-weight:600;color:var(--k10-bad);white-space:nowrap}
.k10-row.phase .ph-prog{flex:none;width:44px;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.k10-row.phase .ph-prog .pct{font-size:var(--k10-fs-xs);font-weight:600;font-variant-numeric:tabular-nums;color:var(--k10-ink2);line-height:1.2;white-space:nowrap}
.k10-row.phase .ph-prog .meter{width:44px;height:4px;border-radius:var(--k10-r-xs);background:color-mix(in srgb,var(--k10-ink) 12%,transparent);overflow:hidden;display:block}
.k10-row.phase .ph-prog .meter i{display:block;height:100%;border-radius:var(--k10-r-xs);background:var(--k10-ink2)}
.k10-row.phase .ph-prog.full .pct{color:var(--k10-good)}
.k10-row.phase .ph-prog.full .meter i{background:var(--k10-good)}
.k10-row.phase .ph-prog.zero .pct{color:var(--k10-ink3);font-weight:500}
.k10-edit{position:relative;flex:none;width:28px;height:28px;display:grid;place-items:center;font:inherit;background:transparent;border:1px solid transparent;border-radius:var(--k10-r-sm);color:var(--k10-ink3);padding:0;cursor:pointer;opacity:0;transition:opacity .12s var(--k10-ease),background .12s var(--k10-ease)}
.k10-edit svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.k10-row.phase:hover .k10-edit,.k10-row.phase:focus-within .k10-edit,.k10-edit:focus-visible{opacity:1}
.k10-edit:hover{background:var(--k10-card);border-color:var(--k10-line2);color:var(--k10-ink)}

/* Marcas: barra de subfase, avance, línea base, hito */
.k10-b{position:absolute;top:calc(50% - 7px);height:14px;border-radius:var(--k10-r-mark);min-width:6px;background:var(--k10-ink3);box-shadow:inset 0 0 0 1px rgba(0,0,0,.10);transition:filter .12s var(--k10-ease)}
.k10-row:hover .k10-b{filter:brightness(1.08)}
.k10-b .pg{position:absolute;left:0;top:5px;height:4px;border-radius:var(--k10-r-xs);background:var(--k10-prog)}
.k10-b.done{opacity:.85}
.k10-b.late{outline:2px solid var(--k10-bad);outline-offset:1px}
.k10-b.inv{outline:1px dashed var(--k10-warn);outline-offset:2px}
.k10-base{position:absolute;top:calc(50% - 3px);height:6px;border:1px dashed var(--k10-ink3);border-radius:var(--k10-r-pill);min-width:4px;opacity:.9}
.k10-g.nobase .k10-base{display:none}
.k10-dm{position:absolute;top:50%;width:11px;height:11px;transform:translate(-50%,-50%) rotate(45deg);background:var(--k10-ink);box-shadow:0 0 0 2px var(--k10-card)}
.key .k10-dm,.k10-dm.key{background:var(--k10-accent2);width:13px;height:13px}
.done .k10-dm,.k10-dm.done{background:var(--k10-good)}
.k10-dm.small{width:9px;height:9px;z-index:2}
.k10-dm.small.key{width:11px;height:11px}
.k10-mltxt{position:absolute;top:50%;transform:translateY(-50%);padding:0 4px;background:var(--k10-card);font-size:var(--k10-fs-2xs);font-weight:600;color:var(--k10-ink2);white-space:nowrap;font-variant-numeric:tabular-nums}
.key .k10-mltxt{color:var(--k10-accent2);font-size:var(--k10-fs-xs);font-weight:700}
.k10-lt{position:absolute;top:50%;transform:translateY(-50%);margin-left:8px;padding:0 4px;background:var(--k10-card);font-size:var(--k10-fs-2xs);font-weight:700;color:var(--k10-bad);white-space:nowrap;border-radius:var(--k10-r-mark)}

/* Fase desplegada: línea de duración con su avance */
.k10-pb{position:absolute;top:calc(50% - 2px);height:4px;border-radius:var(--k10-r-xs);background:color-mix(in srgb,var(--k10-ink) 28%,transparent);min-width:4px}
.k10-pbp{position:absolute;top:calc(50% - 2px);height:4px;border-radius:var(--k10-r-xs);background:var(--k10-ink);min-width:0;z-index:1}
/* Fase con fechas pero sin subfases fechadas */
.k10-ghost{position:absolute;top:calc(50% - 8px);height:16px;border:1px dashed var(--k10-line2);border-radius:var(--k10-r-sm);min-width:8px;background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--k10-ink) 5%,transparent) 6px 12px)}

/* Fase plegada: mini-Gantt (cada subfase, un tramo del color de su oficio, en carriles) */
.k10-mini{position:absolute;inset:0;--k10-h:5px;--k10-gap:3px;--k10-lanes:1;--k10-block:calc(var(--k10-lanes) * var(--k10-h) + (var(--k10-lanes) - 1) * var(--k10-gap))}
.k10-mini .cap{position:absolute;top:calc(50% - var(--k10-block) / 2 - 6px);height:calc(var(--k10-block) + 12px);border-radius:var(--k10-r-sm);background:color-mix(in srgb,var(--k10-ink) 6%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--k10-ink) 7%,transparent);min-width:12px;margin-left:-4px;padding-right:8px;box-sizing:content-box}
.k10-mini .sg{position:absolute;height:var(--k10-h);top:calc(50% - var(--k10-block) / 2 + var(--k10-lane,0) * (var(--k10-h) + var(--k10-gap)));border-radius:var(--k10-r-pill);min-width:4px;background:var(--k10-ink3);transition:transform .12s var(--k10-ease),opacity .12s var(--k10-ease)}
.k10-mini.l1{--k10-h:8px}.k10-mini.l2{--k10-h:6px}
.k10-mini .sg.done{opacity:.8}
.k10-mini .sg.late{box-shadow:0 2px 0 var(--k10-bad)}
.k10-mini .sg:hover{transform:scaleY(1.6);opacity:1;z-index:1}
.k10-row.phase.closed .k10-track{cursor:pointer}

/* Resaltar un oficio: lo demás se atenúa */
.k10-g.dimming .k10-row.task:not(.on) .k10-track,.k10-g.dimming .k10-row.ms:not(.on) .k10-track,.k10-g.dimming .k10-row.task:not(.on) .k10-lab>*,.k10-g.dimming .k10-row.ms:not(.on) .k10-lab>*{opacity:.22}
.k10-g.dimming .k10-mini .sg:not(.on){opacity:.15}

/* Al pasar por una subfase: de qué depende (línea continua) y qué arrastra (punteado) */
.k10-row.pre .k10-b,.k10-row.pre .k10-dm{box-shadow:0 0 0 2px var(--k10-card),0 0 0 4px var(--k10-ink2)}
.k10-row.suc .k10-b,.k10-row.suc .k10-dm{outline:2px dotted var(--k10-ink2);outline-offset:2px}
.k10-row.pre .k10-lab .nm,.k10-row.suc .k10-lab .nm{color:var(--k10-ink)}
.k10-row.pre .k10-lab::before,.k10-row.suc .k10-lab::before{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:3px;border-radius:var(--k10-r-xs);background:var(--k10-ink2)}
.k10-row.suc .k10-lab::before{background:repeating-linear-gradient(var(--k10-ink2) 0 3px,transparent 3px 6px)}

/* ------------------------------------------------------------------ tooltip (cuelga de <body>) */
#k10tip{position:fixed;z-index:80;width:max-content;max-width:340px;background:var(--k10-raised);color:var(--k10-ink);border:1px solid var(--k10-line2);border-radius:var(--k10-r-md);box-shadow:var(--k10-shadow-2);padding:12px 16px;font-size:var(--k10-fs-sm);line-height:1.4;pointer-events:none;display:flex;flex-direction:column;gap:8px}
#k10tip[hidden]{display:none}
#k10tip .of{display:flex;align-items:center;gap:8px;font-size:var(--k10-fs-2xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--k10-ink3)}
#k10tip .of .cd{margin-left:auto;padding-left:12px;font-family:var(--k10-mono);font-weight:500;letter-spacing:0;color:var(--k10-ink3)}
#k10tip .of .tag{font-weight:500;letter-spacing:0;text-transform:none;color:var(--k10-ink3);border:1px solid var(--k10-line);border-radius:var(--k10-r-pill);padding:0 8px}
#k10tip .t{font-size:var(--k10-fs-md);font-weight:700;line-height:1.3;letter-spacing:-.005em}
#k10tip .r{font-size:var(--k10-fs-sm);color:var(--k10-ink2);font-variant-numeric:tabular-nums}
#k10tip .r b{color:var(--k10-ink);font-weight:600}
#k10tip .k10-ch{align-self:flex-start}
#k10tip dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;font-size:var(--k10-fs-xs);border-top:1px solid var(--k10-line);padding-top:8px}
#k10tip dt{color:var(--k10-ink3);white-space:nowrap}
#k10tip dd{margin:0;color:var(--k10-ink2)}
#k10tip .n{font-size:var(--k10-fs-xs);color:var(--k10-ink2);border-top:1px solid var(--k10-line);padding-top:8px}
#k10tip .n.warn{color:var(--k10-warn)}

/* ------------------------------------------------------------------ tablas y secciones */
.k10-tscroll{overflow-x:auto;max-width:100%}
.k10 table.k10-t{border-collapse:collapse;width:100%;font-size:var(--k10-fs-sm);min-width:720px}
.k10 table.k10-t th{font-size:var(--k10-fs-2xs);font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--k10-ink3);text-align:left;padding:8px 12px;border-bottom:1px solid var(--k10-line2);white-space:nowrap;background:transparent}
.k10 table.k10-t td{padding:8px 12px;border-bottom:1px solid var(--k10-line);vertical-align:top;color:var(--k10-ink2)}
.k10 table.k10-t td.c1{color:var(--k10-ink);font-weight:500}
.k10 table.k10-t td.num,.k10 table.k10-t th.num{font-family:var(--k10-mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.k10 table.k10-t td.date{font-family:var(--k10-mono);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--k10-ink)}
.k10 table.k10-t tr.ph td{background:var(--k10-card2);color:var(--k10-ink);font-weight:700;font-size:var(--k10-fs-md);border-bottom:1px solid var(--k10-line2)}
.k10 table.k10-t tr.msr td.c1{font-weight:700}
.k10 table.k10-t tr.click{cursor:pointer}
.k10 table.k10-t tr.click:hover td{background:var(--k10-card2)}
.k10 table.k10-t td.who{white-space:nowrap}
.k10 table.k10-t td.who span{display:inline-flex;align-items:center;gap:8px}
.k10 table.k10-t td .sub2{display:block;font-size:var(--k10-fs-xs);color:var(--k10-ink3);margin-top:4px}
#k10tabla table.k10-t{min-width:1080px}
.k10-sec{display:flex;flex-direction:column;gap:12px;min-width:0}
.k10-sec .k10-sechead{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:baseline;justify-content:space-between}
.k10-sec h3{font-size:var(--k10-fs-xl);font-weight:700;letter-spacing:-.01em}
.k10-sec>p,.k10-sec .k10-sechead p{color:var(--k10-ink2);max-width:72ch;font-size:var(--k10-fs-sm)}
.k10-sec .k10-card table.k10-t{min-width:820px}
.k10-empty{padding:16px;color:var(--k10-ink3);font-size:var(--k10-fs-sm)}
.k10-aviso{padding:12px 16px;font-size:var(--k10-fs-sm);color:var(--k10-ink2);background:var(--k10-tint);border-bottom:1px solid var(--k10-line)}
.k10-foot{font-size:var(--k10-fs-xs);color:var(--k10-ink3);border-top:1px solid var(--k10-line);padding-top:12px;display:flex;flex-wrap:wrap;gap:8px 24px}

/* Notas de NORA */
.k10-notas .k10-notascard{padding:16px 24px}
.k10-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px 32px}
.k10-two ul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:8px;color:var(--k10-ink2);font-size:var(--k10-fs-sm);line-height:1.5;max-width:66ch}
.k10-two li::marker{color:var(--k10-line2)}
.k10-two b{color:var(--k10-ink);font-weight:600}
.k10-pie{font-size:var(--k10-fs-xs);color:var(--k10-ink3);border-top:1px solid var(--k10-line);padding-top:12px;margin-top:16px}

/* Propuestas */
.k10-props{display:grid;gap:12px}
.k10-prop{border:1px solid var(--k10-warn);border-left-width:4px;border-radius:var(--k10-r-md);padding:12px 16px;background:var(--k10-card);display:grid;gap:8px}
.k10-prop .t{font-weight:600}
.k10-prop .m{font-size:var(--k10-fs-xs);color:var(--k10-ink2)}
.k10-prop .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.k10-prop ul{margin:4px 0 0 16px;padding:0;font-size:var(--k10-fs-xs);color:var(--k10-ink2)}

/* ------------------------------------------------------------------ cajones (fichas) */
.k10-mt{margin-top:8px}
/* las casillas dentro de un campo: la regla «.field label» de la aplicación las dejaba como rótulo (bloque, 10 px, negrita) */
.k10-form .field .check74{display:flex;align-items:center;gap:8px;margin:0;padding:8px;font-size:var(--k10-fs-sm);font-weight:500;color:var(--k10-ink)}
.k10-form .field .check74+.check74{margin-top:4px}
.k10-form .field .check74 input{margin:0}
.k10-deps{display:grid;gap:8px;margin-top:8px}
.k10-dep{display:grid;grid-template-columns:minmax(0,1fr) 92px 32px;gap:8px;align-items:center}
.k10-dep input,.k10-dep select{min-width:0}
.k10-form .k10-lab-dias{font-size:var(--k10-fs-xs);color:var(--k10-ink3);align-self:end;padding-bottom:12px}
.k10-hint{font-weight:500;font-size:var(--k10-fs-2xs);color:var(--k10-ink3);text-transform:none;letter-spacing:0}
.k10-sim{margin-top:12px;border:1px solid var(--k10-line);border-radius:var(--k10-r-md);padding:12px;background:var(--k10-card2);font-size:var(--k10-fs-xs);color:var(--k10-ink2);display:grid;gap:4px}
.k10-sim b{color:var(--k10-ink)}
.k10-sim ul{margin:4px 0 0 16px;padding:0}
.k10-sim .bad{color:var(--k10-bad)}.k10-sim .warn{color:var(--k10-warn)}
.k10-ro{display:grid;gap:8px;font-size:var(--k10-fs-sm)}
.k10-ro dl{display:grid;grid-template-columns:140px 1fr;gap:8px 12px;margin:0}
.k10-ro dt{color:var(--k10-ink3);font-size:var(--k10-fs-xs)}.k10-ro dd{margin:0;color:var(--k10-ink)}
.k10-json{width:100%;min-height:220px;font-family:var(--k10-mono);font-size:var(--k10-fs-xs)}
.k10-impref{display:flex;gap:12px;align-items:center;justify-content:space-between;background:var(--k10-card2);border:1px solid var(--k10-line);border-radius:var(--k10-r-md);padding:12px;margin-bottom:12px;font-size:var(--k10-fs-xs)}
.k10-impref b{display:block;font-size:var(--k10-fs-sm);color:var(--k10-ink)}.k10-impref span{color:var(--k10-ink2)}.k10-impref .btn{white-space:nowrap;flex:none}
.k10-impwarn{color:var(--k10-warn)}
.k10-invbox{margin-top:12px;border:1px dashed var(--k10-warn);border-radius:var(--k10-r-md);padding:12px;display:grid;gap:8px}
.k10-invbox .reference-note{margin:0}
.k10-notas-list{display:grid;gap:8px}
.k10-nota{display:grid;grid-template-columns:180px minmax(0,1fr) 32px;gap:8px;align-items:start}
.k10-nota textarea,.k10-nota input{min-width:0}
.k10-evid .uploadzone{display:block;margin-top:8px;padding:12px;border:1px dashed var(--k10-line2);border-radius:var(--k10-r-sm);cursor:pointer}
.k10-evid .uploadzone input{display:block;margin-top:8px;max-width:100%}

/* 7.10.4 · archivar fases y archivo de la obra (cajón de Dirección) */
.k10-arch-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:var(--k10-fs-xs);color:var(--k10-ink3)}
.k10-arch{display:grid;border:1px solid var(--k10-line);border-radius:var(--k10-r-md);overflow:hidden;background:var(--k10-card)}
.k10-arch-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 12px;align-items:center;margin:0;padding:8px 12px;min-height:44px;border-top:1px solid var(--k10-line);cursor:pointer}
.k10-arch-row:first-child{border-top:0}
.k10-arch-row:hover{background:var(--k10-card2)}
.k10-arch-row input{grid-row:1 / span 2;margin:0;width:16px;height:16px;min-width:16px}
.k10-arch-n{font-size:var(--k10-fs-sm);font-weight:600;color:var(--k10-ink);overflow-wrap:anywhere}
.k10-arch-m{font-size:var(--k10-fs-xs);font-weight:400;color:var(--k10-ink3)}
.k10-arch-m b{font-weight:600;color:var(--k10-warn)}
.k10-archivo{display:grid;gap:8px;margin-top:24px}
.k10-archivo h3{margin:0;font-size:var(--k10-fs-md);font-weight:700;color:var(--k10-ink)}
.k10-arch-ent{display:grid;gap:4px;padding:12px;border:1px solid var(--k10-line);border-radius:var(--k10-r-md);background:var(--k10-card2);font-size:var(--k10-fs-xs);color:var(--k10-ink2)}
.k10-arch-ent>b{font-size:var(--k10-fs-sm);color:var(--k10-ink)}
.k10-arch-ent>.btn{justify-self:start;margin-top:4px}
.k10-arch-res:empty{display:none}

/* ------------------------------------------------------------------ fuera de la pestaña */
/* Semáforo en la cartera de obras */
.k10-semchip{display:inline-flex;align-items:center;gap:8px;font-size:var(--k10-fs-2xs);font-weight:600;color:var(--muted);margin-left:auto;white-space:nowrap}
.k10-semchip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--muted)}
.k10-semchip.verde::before{background:var(--ok)}.k10-semchip.ambar::before{background:var(--warn)}.k10-semchip.rojo::before{background:var(--bad)}
/* Barra de herramientas del cronograma */
.k10-tools-bar{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;margin:12px 0}
.k10-tools-bar strong{font-size:var(--k10-fs-sm)}.k10-tools-bar small{display:block;color:var(--muted);font-size:var(--k10-fs-2xs);margin-top:4px}
.k10-tools-bar .headtools{display:flex;flex-wrap:wrap;gap:8px}

/* ------------------------------------------------------------------ móvil, táctil, movimiento, impresión */
@media (max-width:1024px){.k10-bartop{grid-template-columns:minmax(0,1fr)}.k10-tools{justify-content:flex-start}}
@media (max-width:720px){
 .k10{--k10-labw:176px;--k10-wk:11px;gap:16px}
 .k10-head h2{font-size:var(--k10-fs-xl)}
 .k10-bartop{padding:12px}
 .k10-chips{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;margin-inline:-12px;padding-inline:12px;-webkit-mask-image:linear-gradient(90deg,black calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,black calc(100% - 32px),transparent)}
 .k10-chips::-webkit-scrollbar{display:none}
 .k10-chip{flex:none;white-space:nowrap}
 .k10-lab{padding:4px 8px}
 .k10-row.task .k10-lab .dt,.k10-row.ms .k10-lab .dt{display:none}
 .k10-axis .k10-lab{padding:4px 8px}
 .k10-axis .k10-lab span+span{display:none}
 .k10-lab .nm{font-size:var(--k10-fs-xs)}
 .k10-lab .nm .cd{display:none}
 .k10-row.phase .k10-lab{padding:8px;gap:4px;flex-wrap:wrap}
 .k10-row.phase .nm{font-size:var(--k10-fs-sm)}
 .k10-row.phase .ph-sub .n{display:none}
 .k10-row.phase .ph-sub .dt{white-space:normal}
 .k10-row.phase .ph-main{flex:1 1 calc(100% - 28px)}
 .k10-row.phase .ph-prog{flex-direction:row;align-items:center;width:auto;gap:8px;flex:1 1 0;min-width:0;padding-left:24px;justify-content:flex-start}
 .k10-row.phase .ph-prog .meter{width:48px}
 .k10-chev{width:20px;height:20px}
 .k10-edit{opacity:1}
 .k10-hitos{grid-template-columns:repeat(2,minmax(0,1fr))}
 .k10-hitos .d{font-size:var(--k10-fs-lg)}
 .k10-vamos{grid-template-columns:1fr 1fr;gap:12px}
 .k10-keyline .hint{margin-left:0}
 .k10-dep{grid-template-columns:minmax(0,1fr) 72px 32px}
 .k10-nota{grid-template-columns:1fr;gap:4px}
 .k10-impref{flex-direction:column;align-items:stretch}
 .k10-ro dl{grid-template-columns:110px 1fr}
 #k10tip{max-width:calc(100vw - 32px)}
}
@media (pointer:coarse){
 .k10-chip,.k10-seg button,.k10-tog{min-height:44px}
 /* el lápiz se ve siempre y su zona táctil llega a 44 px sin agrandar el dibujo */
 .k10-edit{opacity:1}
 .k10-edit::after{content:"";position:absolute;inset:-8px}
}
@media (prefers-reduced-motion:reduce){.k10 *,#k10tip{transition-duration:.01ms}}
@media print{
 .k10-bartop,#k10tip,.k10-tools-bar,.k10-edit{display:none}
 .k10-card{box-shadow:none}
 .k10-axiswrap{position:static}
 .k10-row,.k10 tr{break-inside:avoid}
 .k10 thead{display:table-header-group}
}
