:root{--orange:#f15e2c;--orange-600:#d94e1f;--orange-100:#fce6db;--navy:#34485c;--navy-700:#3b5169;--navy-800:#2a3b4d;--navy-900:#212f3e;--page:#edf0f3;--surface:#fff;--surface-2:#f7f9fb;--ink:#1a2431;--ink-2:#586675;--muted:#8a97a4;--good:#0ca30c;--warn:#eba911;--serious:#ec835a;--crit:#d03b3b;--seq-100:#dce4ec;--seq-300:#9db1c6;--border:#1a24311a;--border-2:#1a24310f;--shadow:0 1px 3px #1018280f, 0 1px 2px #1018280a;--shadow-md:0 4px 16px #10182814;--r:12px;--r-sm:8px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}.app{grid-template-columns:248px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--navy-900);color:#c9d3de;flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;padding:20px 20px 18px;display:flex}.brand .logo{flex:none;width:34px;height:34px}.brand .name{letter-spacing:.5px;color:#fff;font-size:19px;font-weight:800}.proj{border-radius:var(--r-sm);background:#ffffff0d;border:1px solid #ffffff14;margin:0 14px 14px;padding:11px 13px}.proj .lbl{text-transform:uppercase;letter-spacing:.7px;color:#8a9aab;font-size:10.5px}.proj .val{color:#fff;margin-top:2px;font-size:14px;font-weight:700}.proj .loc{color:#93a2b2;margin-top:2px;font-size:11.5px}.nav{flex:1;padding:6px 12px;overflow:auto}.nav .sec{text-transform:uppercase;letter-spacing:.8px;color:#6e7f90;padding:14px 12px 6px;font-size:10.5px}.nav a{border-radius:var(--r-sm);color:#c9d3de;cursor:pointer;align-items:center;gap:11px;padding:9px 12px;font-weight:500;transition:all .15s;display:flex}.nav a svg{opacity:.85;flex:none;width:18px;height:18px}.nav a:hover{color:#fff;background:#ffffff0f}.nav a.active{background:var(--orange);color:#fff}.nav a.active svg{opacity:1}.side-foot{color:#8a9aab;border-top:1px solid #ffffff14;padding:14px 18px;font-size:11.5px}.main{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:5;align-items:center;gap:16px;height:62px;padding:0 26px;display:flex;position:sticky;top:0}.crumb{color:var(--ink-2);font-size:13px}.crumb b{color:var(--ink);font-weight:700}.badge-demo{background:var(--orange-100);color:var(--orange-600);letter-spacing:.3px;border-radius:20px;margin-left:auto;padding:5px 11px;font-size:11px;font-weight:700}.user{align-items:center;gap:9px;display:flex}.avatar{background:var(--navy);color:#fff;border-radius:50%;place-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:grid}.user .u-name{font-size:13px;font-weight:600}.user .u-role{color:var(--muted);font-size:11px}.content{width:100%;max-width:none;padding:26px}.page-head{margin-bottom:20px}.page-head h1{letter-spacing:-.3px;font-size:22px;font-weight:800}.page-head p{color:var(--ink-2);margin-top:3px;font-size:13.5px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow)}.card .c-head{border-bottom:1px solid var(--border-2);align-items:center;gap:10px;padding:15px 18px;display:flex}.card .c-head h3{font-size:14.5px;font-weight:700}.card .c-head .sub{color:var(--muted);margin-left:auto;font-size:12px}.card .c-body{padding:18px}.c-head .btn{margin-left:auto}.grid{gap:16px;display:grid}.kpis{grid-template-columns:repeat(4,1fr)}.cols-2{grid-template-columns:1.5fr 1fr}.cols-2b{grid-template-columns:1fr 1fr}@media (width<=1000px){.kpis{grid-template-columns:repeat(2,1fr)}.cols-2,.cols-2b{grid-template-columns:1fr}}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 17px;position:relative;overflow:hidden}.kpi .k-ic{border-radius:9px;place-items:center;width:36px;height:36px;margin-bottom:12px;display:grid}.kpi .k-ic svg{width:19px;height:19px}.kpi .k-val{letter-spacing:-.5px;font-size:27px;font-weight:800;line-height:1}.kpi .k-lbl{color:var(--ink-2);margin-top:5px;font-size:12.5px;font-weight:500}.kpi .k-sub{align-items:center;gap:5px;margin-top:8px;font-size:11.5px;display:flex}.up{color:var(--good)}.down{color:var(--crit)}.ic-navy{color:var(--navy);background:#eaf0f6}.ic-orange{background:var(--orange-100);color:var(--orange-600)}.ic-green{color:var(--good);background:#e4f5e4}.ic-blue{color:#2a78d6;background:#e6effa}.bar{background:var(--seq-100);border-radius:6px;height:8px;overflow:hidden}.bar>span{background:var(--orange);border-radius:6px;height:100%;display:block}.bar.navy>span{background:var(--navy)}.bar.good>span{background:var(--good)}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--border);padding:10px 12px;font-size:11px;font-weight:700}td{border-bottom:1px solid var(--border-2);vertical-align:middle;padding:11px 12px}tbody tr:hover{background:var(--surface-2)}td.num{text-align:right;font-variant-numeric:tabular-nums}th.num{text-align:right}.cap-row td{background:var(--surface-2);border-bottom:1px solid var(--border);font-size:12.5px;font-weight:700}.tot-row td{background:var(--navy-900);color:#fff;font-weight:800}.chip{border-radius:20px;align-items:center;gap:6px;padding:3px 9px;font-size:11.5px;font-weight:600;display:inline-flex}.chip:before{content:"";border-radius:50%;width:7px;height:7px}.chip.ok{color:#0a7a0a;background:#e4f5e4}.chip.ok:before{background:var(--good)}.chip.prog{color:#1f5fa8;background:#e6effa}.chip.prog:before{background:#2a78d6}.chip.wait{color:#5a6675;background:#f2f4f6}.chip.wait:before{background:var(--muted)}.chip.warn{color:#8a6a00;background:#fdf3dc}.chip.warn:before{background:var(--warn)}.chip.crit{color:#a52121;background:#fbe4e4}.chip.crit:before{background:var(--crit)}.chip.venc{color:#a52121;background:#fbe4e4}.chip.venc:before{background:var(--crit)}.btn{font:600 12.5px var(--font);border:1px solid var(--border);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:8px;padding:7px 13px;transition:all .15s}.btn:hover{background:var(--surface-2)}.btn-primary{background:var(--orange);border-color:var(--orange);color:#fff}.btn-primary:hover{background:var(--orange-600)}.btn-sm{padding:5px 10px;font-size:12px}.lnk{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:12.5px}.lnk:hover{color:var(--orange)}.seg-group{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:3px;display:inline-flex}.seg{font:600 12.5px var(--font);color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:6px 15px}.seg.on{background:var(--orange);color:#fff}.field{flex-direction:column;gap:5px;margin-bottom:13px;display:flex}.field label{color:var(--ink-2);font-size:12px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--border);font:400 13px var(--font);background:var(--surface);color:var(--ink);border-radius:8px;padding:9px 11px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--orange);outline-offset:-1px;border-color:var(--orange)}.frow{gap:12px;display:flex}.frow .field{flex:1}.modal-bg{z-index:50;background:#10182880;place-items:center;padding:20px;animation:.15s fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:14px;width:460px;max-width:94vw;overflow:hidden;box-shadow:0 20px 60px #0000004d}.modal.wide{width:820px}.m-head{border-bottom:1px solid var(--border);align-items:center;padding:16px 18px;display:flex}.m-head h3{font-size:15px;font-weight:700}.m-x{color:var(--muted);cursor:pointer;background:0 0;border:0;margin-left:auto;font-size:22px;line-height:1}.m-body{max-height:80vh;padding:18px;overflow-y:auto}.m-foot{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.hint{background:var(--surface-2);border:1px solid var(--border-2);color:var(--ink-2);border-radius:10px;margin-bottom:16px;padding:11px 13px;font-size:12px;line-height:1.6}.hint b{color:var(--ink)}.tag{color:var(--navy);white-space:nowrap;background:#eaf0f6;border-radius:5px;padding:2px 7px;font-size:10.5px;font-weight:600;display:inline-block}.mini-lbl{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:2px;font-size:11px}.toast{background:var(--navy);color:#fff;z-index:9999;text-align:center;border-radius:9px;max-width:82%;padding:11px 18px;font-size:12.5px;font-weight:600;transition:opacity .35s;position:fixed;bottom:26px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #00000047}.milestone{border-bottom:1px solid var(--border-2);gap:12px;padding:11px 0;display:flex}.milestone:last-child{border:0}.mdot{width:11px;height:11px;box-shadow:0 0 0 2px var(--seq-300);border:2px solid #fff;border-radius:50%;flex:none;margin-top:4px}.mdot.done{background:var(--good);box-shadow:0 0 0 2px var(--good)}.mdot.next{background:var(--orange);box-shadow:0 0 0 2px var(--orange)}.m-t{font-size:13px;font-weight:600}.m-d{color:var(--muted);font-size:11.5px}.prov-item{cursor:pointer;border-radius:8px;padding:10px 11px;transition:all .15s}.prov-item:hover{background:var(--surface-2)}.prov-item.active{background:var(--orange-100);box-shadow:inset 3px 0 0 var(--orange)}.pv-name{font-size:13px;font-weight:600}.pv-tipo{color:var(--muted);font-size:11px}.mini-card{border:1px solid var(--border-2);background:var(--surface-2);border-radius:10px;flex-direction:column;flex:1;gap:2px;min-width:200px;padding:11px 13px;display:flex}.mc-lbl{color:var(--muted);font-size:11px;font-weight:600}.mc-val{font-variant-numeric:tabular-nums;font-size:19px;font-weight:800}.mc-sub{color:var(--muted);font-size:10px}.mtx{border-collapse:separate;border-spacing:0;white-space:nowrap;min-width:100%;font-size:11.5px}.mtx th,.mtx td{padding:8px 12px}.mtx .num{text-align:right;font-variant-numeric:tabular-nums}.mtx .lbl{background:var(--surface);text-align:left;z-index:1;min-width:240px;box-shadow:1px 0 0 var(--border-2);position:sticky;left:0}.mtx thead .lbl{z-index:3}.mtx .fase-h{text-align:center;padding:4px 6px 8px}.mtx .fase-h .pill{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:3px 12px;font-size:10px;font-weight:800;display:inline-block}.mtx thead .mes{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding-bottom:10px;font-size:10px;font-weight:700}.mtx thead .lbl.mes{border-bottom:1px solid var(--border)}.mtx .cap td{color:var(--ink);border-top:1px solid var(--border-2);cursor:pointer;font-weight:700}.mtx .cap:hover td,.mtx .cap:hover .lbl{background:var(--surface-2)}.mtx .cap .lbl .chev{color:var(--muted);margin-right:4px;font-size:10px}.mtx tr.par td{color:var(--ink-2);font-weight:400}.mtx tr.par td.num{color:var(--muted)}.mtx .tot td{background:var(--surface-2);font-weight:700}.mtx .tot .lbl{background:var(--surface-2)}.mtx .tot.first-tot td{border-top:2px solid var(--border)}.mtx .tot.cajarow td{font-weight:800}.mtx .tot.cajarow.destacada td,.mtx .tot.cajarow.destacada .lbl{background:#eff3f7}.legend{color:var(--ink-2);flex-wrap:wrap;gap:16px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:11px;height:11px;margin-right:6px;display:inline-block}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media print{body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{background:#fff;width:100%;margin:0;padding:24px;position:absolute;inset:0}.no-print{display:none!important}}.doc-head{border-bottom:2px solid var(--navy);justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:12px;display:flex}.doc-tbl{border-collapse:collapse;width:100%;margin:6px 0 14px;font-size:13px}.doc-tbl th{background:var(--surface-2);text-transform:uppercase;letter-spacing:.4px;color:var(--muted);text-align:left;font-size:11px}.doc-tbl td,.doc-tbl th{border:1px solid var(--border);padding:9px 12px}.doc-tbl td.num,.doc-tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.doc-tbl .tot-row td{background:var(--surface-2);color:var(--ink);font-weight:800}.doc-sign{gap:34px;margin-top:34px;display:flex}.sign-box{text-align:center;flex:1}.sign-line{border-top:1.5px solid var(--ink);margin:40px 10px 6px}.sign-img{height:40px;margin:0 auto 2px;display:block}*{box-sizing:border-box}body{font-family:var(--font);color:var(--ink);background:var(--page);-webkit-font-smoothing:antialiased;margin:0;font-size:14px}h1,h2,h3{letter-spacing:-.02em;font-weight:800}.login-page{background:linear-gradient(160deg, var(--navy-900) 0%, var(--navy) 100%);place-items:center;min-height:100vh;display:grid}.login-card{background:var(--surface);border-radius:var(--r);text-align:center;max-width:420px;padding:48px 56px;box-shadow:0 20px 60px #00000040}.login-card h1{color:var(--navy-900);margin:16px 0 4px;font-size:28px}.login-card .acento{color:var(--orange)}.login-card .lema{color:var(--muted);letter-spacing:.04em;margin:0 0 24px;font-size:13px}.login-btn{align-items:center;gap:10px;padding:11px 22px;font-size:14px;display:inline-flex}.login-card .nota{color:var(--ink-2);margin-top:18px;font-size:12.5px}.construccion{text-align:center;color:var(--ink-2);padding:46px 24px}.construccion-ic{background:var(--orange-100);width:52px;height:52px;color:var(--orange-600);border-radius:14px;place-items:center;margin:0 auto 14px;display:grid}.construccion h3{color:var(--ink);font-size:16px}.construccion p{margin-top:6px;font-size:13px;line-height:1.6}
