:root{--bg: #eef0f3;--panel: #fff;--panel-soft: #f7f9fb;--panel-head: #fafbfc;--border: #dfe3e8;--border-soft: #eaedf0;--row: #f2f4f6;--text: #151a20;--text-2: #3d4650;--text-3: #5a636e;--muted: #79828e;--muted-2: #9aa3ad;--sidebar: #151a20;--sidebar-text: #c7ccd3;--sidebar-muted: #7d8794;--sidebar-line: rgba(255, 255, 255, .08);--sidebar-hover: rgba(255, 255, 255, .07);--accent: oklch(.52 .14 253);--accent-hover: oklch(.45 .15 253);--accent-soft: oklch(.96 .03 253);--accent-logo: oklch(.62 .15 253);--green: oklch(.52 .12 155);--green-soft: oklch(.95 .04 155);--amber: oklch(.62 .13 68);--amber-soft: oklch(.96 .05 65);--red: oklch(.55 .17 27);--red-soft: oklch(.95 .04 27);--violet: oklch(.52 .13 300);--sans: "IBM Plex Sans", Helvetica, Arial, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.4 var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}button{font-family:var(--sans)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cfd4da;border-radius:6px;border:3px solid #fff}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.shell{display:flex;min-height:100vh}.sidebar{width:218px;flex:none;background:var(--sidebar);color:var(--sidebar-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{padding:16px 16px 14px;border-bottom:1px solid var(--sidebar-line);display:flex;align-items:center;gap:9px}.brand-logo{width:26px;height:26px;border-radius:6px;background:var(--accent-logo);color:#0b0e12;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}.brand-name{color:#fff;font-weight:600;font-size:13px;letter-spacing:-.01em}.brand-sub{font:10.5px var(--mono);color:var(--sidebar-muted)}.nav{display:flex;flex-direction:column;gap:1px;padding:10px 8px;flex:1;overflow-y:auto}.nav-section{font:600 10px var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--sidebar-muted);padding:12px 8px 5px}.nav-item{display:flex;align-items:center;gap:9px;padding:7px 8px;border:0;border-radius:5px;background:transparent;color:var(--sidebar-text);font-size:12.5px;cursor:pointer;text-align:left;width:100%}.nav-item:hover:not(:disabled){background:var(--sidebar-hover);color:#fff}.nav-item.active{background:#ffffff1a;color:#fff}.nav-item:disabled{cursor:default;opacity:.45}.nav-glyph{width:16px;text-align:center;font:11px var(--mono);opacity:.75}.nav-label{flex:1}.nav-badge{font:10px var(--mono);color:var(--sidebar-muted);border:1px solid var(--sidebar-line);border-radius:3px;padding:0 4px}.user-box{padding:12px;border-top:1px solid var(--sidebar-line);display:flex;align-items:center;gap:9px}.user-avatar{width:28px;height:28px;border-radius:50%;background:#39424e;color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex:none}.user-name{color:#fff;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:10.5px;color:var(--sidebar-muted)}.user-out{margin-left:auto;background:transparent;border:0;color:var(--sidebar-muted);cursor:pointer;font-size:11px}.user-out:hover{color:#fff}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:52px;flex:none;background:var(--panel);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 18px;position:sticky;top:0;z-index:5}.topbar-title{font-weight:600;font-size:14px;letter-spacing:-.01em;white-space:nowrap}.topbar-sub{font:11.5px var(--mono);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spacer{flex:1}.content{padding:16px 18px 40px;display:flex;flex-direction:column;gap:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:7px}.card-head{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--border-soft)}.card-head h3{margin:0;font-size:12.5px;font-weight:600}.card-body{padding:13px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:7px;padding:11px 12px 12px}.kpi-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.kpi-value{font:600 22px/1.15 var(--sans);letter-spacing:-.02em;margin-top:6px}.kpi-note{font-size:11px;color:var(--muted);margin-top:3px}.grid-2{display:grid;grid-template-columns:1.45fr 1fr;gap:14px;align-items:start}.row-item{display:flex;gap:9px;padding:9px 13px;border-bottom:1px solid var(--row);align-items:flex-start}.row-item:last-child{border-bottom:0}.row-title{font-size:12px;font-weight:500}.row-meta{font-size:11px;color:var(--muted);margin-top:2px}.chip{display:inline-block;border-radius:4px;padding:2px 7px;font-size:10.5px;font-weight:600;white-space:nowrap}.chip-green{background:var(--green-soft);color:#005d33;color:oklch(.42 .12 155)}.chip-amber{background:var(--amber-soft);color:#7b4700;color:oklch(.45 .12 65)}.chip-red{background:var(--red-soft);color:var(--red)}.chip-blue{background:var(--accent-soft);color:#004d91;color:oklch(.42 .14 253)}.chip-gray{background:#f0f2f5;color:var(--text-3)}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font:600 10.5px var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:8px 13px;border-bottom:1px solid var(--border-soft);background:var(--panel-head)}.table td{padding:9px 13px;border-bottom:1px solid var(--row);font-size:12px}.table tr:last-child td{border-bottom:0}.table .num{text-align:right;font-family:var(--mono)}.btn{border:1px solid var(--border);background:var(--panel);border-radius:5px;padding:6px 10px;font:500 12px var(--sans);color:var(--text-2);cursor:pointer}.btn:hover{background:#f4f6f8}.btn-primary{border:0;background:var(--accent);color:#fff;font-weight:600;padding:7px 11px}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:default}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.input,.select{border:1px solid var(--border);border-radius:5px;padding:7px 9px;font:12.5px var(--sans);background:#fbfcfd;color:var(--text);width:100%}.input:focus,.select:focus{outline:none;border-color:#c9d3de;box-shadow:0 0 0 3px var(--accent-soft);background:#fff}.context{display:flex;align-items:center;gap:6px}.context .select{width:auto;max-width:190px;padding:5px 8px;font-size:12px;background:#f2f4f6}.context-sep{color:var(--muted-2);font:11px var(--mono)}.alert{border-radius:7px;padding:10px 13px;font-size:12px;line-height:1.5}.alert-error{background:var(--red-soft);border:1px solid oklch(.88 .06 27);color:#89211e}.alert-warn{background:#fff3e8;border:1px solid oklch(.88 .05 65);color:var(--text-2)}.empty{padding:22px 13px;text-align:center;color:var(--muted);font-size:12px}.btn-sm{padding:4px 9px;font-size:11.5px}.btn:disabled{opacity:.55;cursor:default}.btn-peligro{color:var(--red);border-color:#fdc9c2}.btn-peligro:hover{background:var(--red-soft)}.btn-icono{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;padding:4px 6px;border-radius:4px}.btn-icono:hover{background:#f0f2f5;color:var(--text)}.alert-ok{background:var(--green-soft);border:1px solid oklch(.86 .06 155);color:#00502b;color:oklch(.38 .1 155)}.alert-info{background:var(--accent-soft, oklch(.97 .02 250));border:1px solid oklch(.88 .04 250);color:var(--text-2)}.avatar{display:flex;align-items:center;justify-content:center;font-weight:700;flex:none}.fila-click{cursor:pointer}.fila-click:hover td{background:var(--panel-soft)}.barra-filtros{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.filtro{border:1px solid var(--border);background:var(--panel);color:var(--text-2);border-radius:999px;padding:4px 11px;font:500 12px var(--sans);cursor:pointer}.filtro:hover{background:#f4f6f8}.filtro.activo{background:var(--text);border-color:var(--text);color:#fff}.buscador{width:240px;padding:5px 9px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.col-2{grid-column:span 2}.check{display:flex;align-items:center;gap:8px;font-size:12px;padding:4px 0;cursor:pointer}.check input{accent-color:var(--accent);width:14px;height:14px}.lista-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));column-gap:18px}.select:disabled,.input:disabled{opacity:.7}.modal-fondo{position:fixed;top:0;right:0;bottom:0;left:0;background:#151a2073;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;z-index:20;overflow-y:auto}.modal{background:var(--panel);border-radius:8px;width:100%;max-width:480px;box-shadow:0 18px 50px #0003}.modal-cuerpo{padding:14px 13px}.modal-pie{display:flex;justify-content:flex-end;gap:7px;padding:11px 13px;border-top:1px solid var(--border-soft);background:var(--panel-soft);border-radius:0 0 8px 8px}.ficha-cabecera{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}.ficha-titulo{margin:0;font-size:17px;font-weight:600;letter-spacing:-.02em}.ficha-meta{display:flex;gap:18px;margin-top:8px;flex-wrap:wrap}.ficha-acciones{display:flex;gap:7px;flex-wrap:wrap}.arbol{padding:4px 0}.arbol-nodo{border-bottom:1px solid var(--row);padding:2px 0}.arbol-nodo:last-child{border-bottom:0}.arbol-hijo{padding-left:22px;border-left:1px solid var(--border-soft);margin-left:19px}.arbol-fila{display:flex;align-items:center;gap:8px;padding:6px 13px}.arbol-fila input{accent-color:var(--accent)}.estrella{border:0;background:transparent;color:#cfd4da;font-size:14px;cursor:pointer;padding:0 2px}.estrella.activa{color:var(--amber)}.estrella:disabled{cursor:default}.linea-tiempo{display:grid;grid-template-columns:14px 1fr;gap:11px;padding:9px 0;border-bottom:1px solid var(--row)}.linea-tiempo:last-child{border-bottom:0}.linea-tiempo-eje{display:flex;flex-direction:column;align-items:center;padding-top:3px}.punto{width:7px;height:7px;border-radius:50%;display:block;flex:none}.eje{flex:1;width:1px;background:#e6e9ed;margin-top:4px}.grid-roles{display:grid;grid-template-columns:320px 1fr;gap:14px;align-items:start}.lista-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 13px;border:0;border-bottom:1px solid var(--row);background:transparent;cursor:pointer;font-family:var(--sans);color:var(--text)}.lista-item:hover{background:var(--panel-soft)}.lista-item.activo{background:var(--accent-soft)}.grupo-permisos{padding:10px 13px;border-bottom:1px solid var(--row)}.cabecera-cpbte{display:grid;grid-template-columns:160px 160px 1fr 1fr;gap:11px}.card.table-scroll{overflow-x:auto}.tabla-lineas{min-width:1060px}.tabla-lineas td{padding:5px 6px;vertical-align:middle}.tabla-lineas th{padding:8px 6px}.celda{padding:5px 6px;font-size:12px;min-width:0}.derecha{text-align:right}.table tfoot td{background:var(--panel-head);border-top:1px solid var(--border-soft)}.table .total{font-weight:600}.tabla-informe td{padding:6px 10px}.tabla-informe th{padding:7px 10px}.tabla-informe th.grupo{text-align:center;border-left:1px solid var(--border-soft)}.tabla-informe tr.subtotal td{background:var(--panel-soft);font-weight:600;font-size:11.5px}.tabla-informe tr.resultado td{color:var(--accent);font-style:italic}.tabla-informe tr.total td{font-weight:700;border-top:2px solid var(--border)}.cabecera-oc{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.grafico-saldo{position:relative;padding:6px 8px 4px;touch-action:none}.grafico-saldo svg{display:block;width:100%;height:auto}.grafico-saldo .grilla{stroke:var(--border-soft);stroke-width:1}.grafico-saldo .eje{font:10.5px var(--mono);fill:var(--muted)}.grafico-saldo .cero{stroke:var(--muted-2);stroke-width:1;stroke-dasharray:3 3}.grafico-saldo .area{fill:var(--accent-soft)}.grafico-saldo .linea{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round}.grafico-saldo .cruz{stroke:var(--text-3);stroke-width:1}.grafico-saldo .punto-foco{fill:var(--accent);stroke:var(--panel);stroke-width:2}.tooltip-grafico{position:absolute;top:10px;transform:translate(-50%);pointer-events:none;white-space:nowrap;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:6px 9px;box-shadow:0 6px 18px #151a201f}.grilla-fondos{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.tarjeta-fondo{display:flex;flex-direction:column;gap:7px;padding:13px;text-align:left;cursor:pointer;font-family:var(--sans);color:var(--text)}.tarjeta-fondo:hover{border-color:#c9d3de;box-shadow:0 2px 10px #151a200f}.barra-saldo{height:6px;border-radius:3px;background:var(--row);overflow:hidden}.barra-saldo span{display:block;height:100%;border-radius:3px}.fila-config{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12px}.fila-config .input{width:130px}.fila-config .select{width:220px}@media print{.sidebar,.topbar,.no-imprimir{display:none!important}body,.content{background:#fff;padding:0}.card{border:0;break-inside:avoid-page}}.login{min-height:100vh;display:grid;grid-template-columns:1fr 420px}.login-side{background:var(--sidebar);color:var(--sidebar-text);padding:40px;display:flex;flex-direction:column;justify-content:space-between}.login-side h1{color:#fff;font-size:26px;letter-spacing:-.02em;margin:0 0 10px;font-weight:600}.login-side p{margin:0;max-width:440px;line-height:1.6;color:var(--sidebar-text)}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--bg)}.login-form{width:100%;max-width:340px;display:flex;flex-direction:column;gap:13px}.login-form h2{margin:0 0 4px;font-size:17px;font-weight:600;letter-spacing:-.02em}.barra-etapas{display:flex;gap:2px}.barra-etapas button{flex:1;border:0;padding:7px 4px;font:600 11px var(--sans);background:var(--row);color:var(--muted);cursor:pointer}.barra-etapas button:first-child{border-radius:5px 0 0 5px}.barra-etapas button:last-child{border-radius:0 5px 5px 0}.barra-etapas button.pasada{background:var(--accent-soft);color:var(--accent-hover)}.barra-etapas button.actual{background:var(--accent);color:#fff}.barra-etapas button.perdida{background:var(--red-soft);color:var(--red)}.barra-etapas button:disabled{cursor:default}.kanban{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}.kanban-tarjeta{background:var(--panel);border:1px solid var(--border);border-radius:7px;padding:10px 11px;display:flex;flex-direction:column;gap:6px}.barra-h{height:8px;background:var(--row);border-radius:4px;overflow:hidden}.barra-h>span{display:block;height:100%;background:var(--accent);border-radius:4px}.grid-actividad{align-items:start}@media (max-width: 900px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static}.nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:6px 8px}.nav-section,.user-box,.nav-badge{display:none}.nav-item{width:auto;white-space:nowrap}.topbar{height:auto;flex-wrap:wrap;padding:10px 16px;position:static}.content{padding:14px 16px 32px}.grid-2{grid-template-columns:1fr}.context{flex-wrap:wrap;width:100%}.context .select{max-width:none;flex:1}.table-scroll{overflow-x:auto}.table-scroll .table{min-width:620px}.grid-roles,.form-grid,.cabecera-cpbte,.cabecera-oc{grid-template-columns:1fr}.cabecera-cpbte .field,.cabecera-oc .field{grid-column:auto!important}.col-2{grid-column:auto}.buscador,.ficha-acciones{width:100%}.login{grid-template-columns:1fr}.login-side{padding:24px 16px}.kanban,.grid-actividad{grid-template-columns:1fr!important}.grid-actividad aside{border-left:0!important;padding-left:0!important}.barra-etapas{flex-wrap:wrap}}
