:root{
  --bg:#f4f5f7; --surface:#ffffff; --surface-2:#f8f9fb; --line:#e3e6ea; --line-2:#d3d8de;
  --ink:#1b2430; --ink-2:#4a5565; --muted:#7b8594;
  --brand:#e8571e; --brand-2:#c94612; --brand-soft:#fdeee6; --navy:#1f2a37;
  --sel:#e7f0fe; --sel-line:#8db4f5; --title:#fbe6da; --sub:#f1f3f6;
  --ok:#1f8a4c; --warn:#b7791f; --bad:#c0392b; --crit:#d23c3c;
  --r:8px; --sh:0 1px 2px rgba(16,24,40,.06),0 4px 14px rgba(16,24,40,.06);
  --mono:Arial,Helvetica,sans-serif;--code:'Roboto Mono',ui-monospace,Consolas,monospace;
  --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --hd-bg:#e8f0f9; --hd-ink:#1b2430; --hd-line:#c5d8ee; --cell-line:#cddff1; --grp-bg:#dce9f6; --grp-ink:#1d3f75; --rib-bg:#e9f0fa; --rib-line:#c9d6e8; --tot-line:#9dbbe0; --row-sel:#d7e6fb;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font:13px/1.4 var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--brand-2)}
.muted{color:var(--muted)} .small{font-size:12px}
.view{height:100%}
.spacer{flex:1}

/* ---------- botones ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border:1px solid var(--line-2);background:var(--surface);
  border-radius:7px;cursor:pointer;font-weight:500;white-space:nowrap;transition:background .12s,border-color .12s}
.btn:hover{background:var(--surface-2);border-color:#bfc6cf}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-2)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:rgba(0,0,0,.05)}
.btn.danger{color:var(--bad)}
.btn.sm{height:30px;padding:0 10px;font-size:12.5px}
.btn.block{width:100%;justify-content:center;height:40px}
.btn:disabled{opacity:.5;cursor:default}
.icon-btn{width:32px;height:32px;border:0;background:transparent;border-radius:6px;cursor:pointer;display:grid;place-items:center}
.icon-btn:hover{background:rgba(0,0,0,.06)}
.icon-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
input,select,textarea{border:1px solid var(--line-2);border-radius:6px;background:#fff;padding:6px 8px;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(232,87,30,.15)}

/* ---------- acceso ---------- */
.login-wrap{display:grid;grid-template-columns:minmax(0,1fr) 460px;height:100%;background:#fff}
.login-hero{overflow:hidden;background:#dfe9f5}
.login-hero img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
.login-card{padding:56px 48px;display:flex;flex-direction:column;justify-content:center;max-width:460px}
.login-logo{width:250px;margin-bottom:28px}
.login-card h1{font-size:24px;margin:0 0 6px}
.login-card p{margin:0 0 22px}
.fld{display:block;margin-bottom:14px}
.fld>span{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:5px}
.fld input,.fld select,.fld textarea{width:100%;height:38px}
.fld textarea{height:auto}
.form-err{color:var(--bad);min-height:18px;margin:-4px 0 10px;font-size:12.5px}
.switch{margin-top:18px!important;font-size:13px}
@media (max-width:860px){.login-wrap{grid-template-columns:1fr}.login-hero{display:none}.login-card{margin:auto;padding:32px 20px}}

/* ---------- barra superior ---------- */
.topbar{height:56px;display:flex;align-items:center;gap:10px;padding:0 16px;background:#fff;border-bottom:1px solid var(--line)}
.topbar .brand{height:34px}
.topbar.work{height:48px;padding:0 10px;gap:8px}
.brand-sm{width:26px;height:26px}
.pname{font-weight:600;max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:4px 8px;border-radius:6px;cursor:text}
.pname:hover{background:var(--surface-2)}
.save-state{font-size:12px;color:var(--muted);white-space:nowrap}
.save-state.dirty{color:var(--warn)} .save-state.err{color:var(--bad)}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--navy);color:#fff;display:inline-grid;place-items:center;font-size:12px;font-weight:600}
.presence{font-size:12px;color:var(--muted)}

/* ---------- inicio ---------- */
.home{max-width:1180px;margin:0 auto;padding:28px 20px 40px}
.home-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.home-head h1{margin:0 0 4px;font-size:24px}
.home-head p{margin:0}
.home-actions{display:flex;gap:8px;flex-wrap:wrap}
.home-search{margin:20px 0 12px}
.home-search input{width:100%;max-width:380px;height:36px}
.project-list{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.prow{display:grid;grid-template-columns:minmax(0,1fr) 150px 120px 150px 40px;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line);cursor:pointer}
.prow:first-child{border-top:0}
.prow:hover{background:var(--surface-2)}
.prow.head{cursor:default;background:var(--surface-2);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;padding:8px 16px}
.prow .nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.prow .sub{font-size:12px;color:var(--muted);margin-top:2px}
.prow .num{text-align:right;font-family:var(--mono);font-size:12.5px}
.tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;background:var(--sub);color:var(--ink-2);margin-left:6px;font-weight:500}
.tag.shared{background:#e6f0ff;color:#2559b8}
.empty{padding:48px 20px;text-align:center;color:var(--muted)}
.home-foot{margin-top:16px}
@media (max-width:760px){.prow{grid-template-columns:minmax(0,1fr) 40px}.prow>.c2,.prow>.c3,.prow>.c4{display:none}}

/* ---------- cinta y barras de herramientas ---------- */
.ribbon{display:flex;gap:2px;padding:0 10px;background:#fff;border-bottom:1px solid var(--line);overflow-x:auto}
.ribbon button{border:0;background:transparent;padding:10px 14px 9px;cursor:pointer;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;white-space:nowrap}
.ribbon button:hover{color:var(--ink)}
.ribbon button.on{color:var(--brand-2);border-bottom-color:var(--brand)}
#v-work{display:flex;flex-direction:column}
.tab{flex:1;min-height:0;display:flex;flex-direction:column}
.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px 4px;padding:6px 10px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.grp{display:flex;align-items:center;gap:2px;padding-right:8px;margin-right:4px;border-right:1px solid var(--line)}
.grp:last-child,.grp.grow{border-right:0}
.grp.grow{flex:1;justify-content:flex-end}
.tb{height:28px;padding:0 9px;border:1px solid transparent;border-radius:5px;background:transparent;cursor:pointer;font-size:12.5px;white-space:nowrap;color:var(--ink)}
.tb:hover{background:#fff;border-color:var(--line-2)}
.tb.ico{width:28px;padding:0;font-size:15px}
.tb.danger{color:var(--bad)}
.tb.on{background:#fff;border-color:var(--brand)}
.tb:disabled{opacity:.4;cursor:default;background:transparent;border-color:transparent}
.find{height:28px;width:220px}
.inl{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}
.inl input,.inl select{height:28px;padding:2px 6px}
.chk input{width:auto;height:auto}

/* ---------- división presupuesto / detalle ---------- */
.split{flex:1;min-height:0;display:flex}
.pane-left{flex:1 1 58%;min-width:320px;display:flex;flex-direction:column;background:#fff}
.pane-right{flex:0 0 42%;min-width:300px;display:flex;flex-direction:column;background:#fff;border-left:1px solid var(--line)}
.splitter{width:5px;cursor:col-resize;background:var(--line);flex:0 0 5px}
.splitter:hover{background:var(--brand)}
@media (max-width:900px){.split{flex-direction:column}.pane-right{flex:0 0 50%;border-left:0;border-top:1px solid var(--line)}.splitter{display:none}.pane-left{min-height:45%}}

/* ---------- grillas ---------- */
.grid-wrap{flex:1;min-height:0;overflow:auto;position:relative}
.grid{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;font-size:12px}
.grid th{position:sticky;top:0;z-index:2;background:var(--navy);color:#fff;font-weight:600;font-size:11.5px;padding:7px 6px;text-align:left;border-right:1px solid #344152;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grid th.num{text-align:right}
.grid td{padding:4px 6px;border-bottom:1px solid var(--line);border-right:1px solid #eef0f3;vertical-align:top;overflow:hidden;text-overflow:ellipsis}
.grid td.num{text-align:right;font-family:var(--mono);font-size:11.5px;white-space:nowrap}
.grid td.c{text-align:center}
.grid tbody tr:hover td{background:#fafbfc}
.grid tr.sel td{background:var(--sel)!important}
.grid tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--brand)}
.grid tr.h1 td{background:var(--title);font-weight:700}
.grid tr.h2 td{background:var(--sub);font-weight:600}
.grid td.edit{padding:0}
.grid td.edit input,.grid td.edit textarea,.grid td.edit select{width:100%;height:100%;min-height:26px;border:2px solid var(--brand);border-radius:0;padding:3px 5px;font:inherit;box-shadow:none;resize:none;display:block}
.grid td.edit input.num{text-align:right;font-family:var(--mono)}
.budget td.desc{white-space:normal;word-break:break-word}
.budget td.item{font-family:var(--mono);font-size:11px;white-space:nowrap}
.tw{display:inline-block;width:14px;cursor:pointer;color:var(--muted);user-select:none}
.marks{float:right;display:flex;gap:3px;margin-left:4px}
.mk{font-size:9.5px;font-weight:700;border-radius:3px;padding:0 3px;line-height:14px}
.mk.apu{background:#e7f6ec;color:var(--ok)} .mk.met{background:#e6f0ff;color:#2559b8} .mk.spc{background:#f1e8ff;color:#7a3fd1} .mk.noapu{background:#fff3e0;color:var(--warn)}
.grid tr.hit td{background:#fff8d6}
.readonly .tb:not([data-act=expand]):not([data-act=collapse]){display:none}

/* ---------- pie ---------- */
.footer-pie{border-top:2px solid var(--navy);background:var(--surface-2);padding:6px 10px 8px;display:flex;flex-direction:row;align-items:stretch;justify-content:space-between;gap:12px}
.pie-right{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;flex:1;min-width:0}
.pie-tbl{border-collapse:collapse;width:min(430px,100%);font-size:12px}
.pie-tbl td{padding:2px 6px;height:22px}
.pie-tbl td.l{font-weight:600;color:var(--ink-2);letter-spacing:.02em}
.pie-tbl td.p{text-align:right;color:var(--muted);font-family:var(--mono);font-size:11.5px;white-space:nowrap}
.pie-tbl td.p input{width:62px;height:20px;padding:0 4px;font-size:11px;text-align:right;font-family:var(--mono)}
.pie-tbl td.v{text-align:right;font-family:var(--mono);font-weight:500;white-space:nowrap}
.pie-tbl tr.pr-sub td{border-top:1px solid var(--line-2)}
.pie-tbl tr.pr-total td{border-top:2px solid var(--navy);font-weight:700;padding-top:4px}
.pie-tbl tr.pr-total td.l{color:var(--ink)}
.pie-tbl tr.pr-total td.v{color:var(--brand-2);font-size:14px}
.pie-mode{font-size:11px;color:var(--muted);margin-top:2px}
.pie-cell{display:flex;flex-direction:column;padding:3px 0}
.pie-cell .l{font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:.03em;display:flex;align-items:center;gap:4px}
.pie-cell .l input{width:62px;height:20px;padding:0 4px;font-size:11px;text-align:right;font-family:var(--mono)}
.pie-cell .v{font-family:var(--mono);font-size:13px;font-weight:500}
.pie-cell.total .v{font-size:15px;font-weight:700;color:var(--brand-2)}

/* ---------- panel de detalle ---------- */
.dtabs{display:flex;border-bottom:1px solid var(--line);background:var(--surface-2);overflow-x:auto}
.dtabs button{border:0;background:transparent;padding:9px 12px;cursor:pointer;font-size:12.5px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;white-space:nowrap}
.dtabs button.on{color:var(--brand-2);border-bottom-color:var(--brand);background:#fff}
.dbody{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.dhead{padding:10px 12px;border-bottom:1px solid var(--line)}
.dhead .t{font-weight:600;font-size:13px;line-height:1.35}
.dhead .meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;align-items:center;font-size:12px;color:var(--ink-2)}
.dhead .meta input{height:26px;width:84px;text-align:right;font-family:var(--mono);padding:2px 6px}
.dhead .cu{margin-left:auto;font-size:12px;color:var(--muted)}
.dhead .cu b{font-family:var(--mono);font-size:15px;color:var(--brand-2)}
.dtools{display:flex;gap:4px;flex-wrap:wrap;padding:6px 10px;border-bottom:1px solid var(--line);background:#fff}
.dempty{padding:40px 24px;text-align:center;color:var(--muted)}
.apu td{font-size:11.5px}
.apu tr.cat td{background:var(--surface-2);font-weight:700;color:var(--navy);font-size:11px;letter-spacing:.02em}
.apu tr.tot td{font-weight:700;background:var(--brand-soft)}
.warn-line{padding:6px 12px;background:#fff8e6;color:#8a5a00;font-size:12px;border-bottom:1px solid #f3e2b3}
.spec-bar{display:flex;gap:2px;padding:6px 8px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.spec-ed{flex:1;overflow:auto;padding:16px 20px;outline:none;font:13px/1.55 Arial,sans-serif;background:#fff}
.spec-ed:empty:before{content:attr(data-ph);color:var(--muted)}
.spec-ed table{border-collapse:collapse}
.spec-ed td,.spec-ed th{border:1px solid #999;padding:3px 6px}

/* ---------- gantt ---------- */
.gantt{flex:1;min-height:0;display:flex;background:#fff}
.g-left{flex:0 0 46%;max-width:810px;overflow:auto;border-right:2px solid var(--line-2)}
.gtable{width:802px}
.gtable td{white-space:nowrap}
.gtable td.desc{overflow:hidden;text-overflow:ellipsis}
.g-right{flex:1;overflow:auto;position:relative}
.g-head{position:sticky;top:0;z-index:2;background:var(--navy);color:#fff;height:31px;font-size:10.5px}
.g-head div{position:absolute;top:0;height:31px;border-left:1px solid #3a4758;padding:2px 4px;white-space:nowrap;overflow:hidden}
#g-svg{display:block}
.bar{fill:#4f7fd9}.bar.crit{fill:var(--crit)}.bar.head{fill:#1f2a37}.bar.zero{fill:#b9c2cf}
.gtable tr td,.gtable tr th{height:24px;padding-top:0;padding-bottom:0;line-height:23px}
@media (max-width:900px){.g-left{flex-basis:300px}}

/* ---------- calendario ---------- */
.cal-top{padding:10px;background:var(--bg)}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.chart-card{padding:10px 14px}
.chart-card h3{margin:0 0 4px;font-size:13px}
.curve{width:100%;height:190px;display:block}
.cal td,.cal th{white-space:nowrap}
.cal tr.sum td{background:#ddebf7;font-weight:700}
.cal td.desc{white-space:normal;min-width:240px}

/* ---------- insumos ---------- */
.res-layout{flex:1;min-height:0;display:flex;gap:0}
.res-side{flex:0 0 300px;margin:10px;padding:14px;overflow:auto;align-self:flex-start}
.res-side h3{margin:0 0 10px;font-size:13px}
.bar-row{margin-bottom:10px;font-size:12px}
.bar-row .top{display:flex;justify-content:space-between}
.bar-row .track{height:8px;background:var(--sub);border-radius:4px;margin-top:4px;overflow:hidden}
.bar-row .fill{height:100%;background:var(--brand)}
.res tr.cat td{background:var(--surface-2);font-weight:700;color:var(--navy)}
@media (max-width:900px){.res-layout{flex-direction:column}.res-side{flex:none}}

/* ---------- datos generales ---------- */
.general{max-width:880px;margin:0 auto;padding:24px 20px;overflow:auto;width:100%}
.general h2{font-size:16px;margin:24px 0 10px}
.general h2:first-child{margin-top:0}
.gen-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 16px}
.tab#t-general{overflow:auto}

/* ---------- modal, menús y avisos ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(17,24,39,.42);display:grid;place-items:center;z-index:50;padding:16px}
.modal{background:#fff;border-radius:12px;box-shadow:0 20px 50px rgba(0,0,0,.25);width:min(560px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column}
.modal.wide{width:min(980px,100%)}
.modal h2{font-size:16px;margin:0;padding:16px 20px;border-bottom:1px solid var(--line)}
.modal .mb{padding:16px 20px;overflow:auto;flex:1}
.modal .mf{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.menu{position:fixed;z-index:60;background:#fff;border:1px solid var(--line-2);border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.15);padding:4px;min-width:200px}
.menu button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:8px 12px;border-radius:5px;cursor:pointer}
.menu button:hover{background:var(--surface-2)}
.menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.menu .danger{color:var(--bad)}
#toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:70;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:var(--navy);color:#fff;padding:10px 16px;border-radius:8px;box-shadow:var(--sh);font-size:13px;max-width:90vw}
.toast.err{background:var(--bad)}
.pick-list{border:1px solid var(--line);border-radius:6px;max-height:52vh;overflow:auto}
.pick{padding:7px 10px;border-top:1px solid var(--line);cursor:pointer;display:flex;gap:10px;align-items:baseline}
.pick:first-child{border-top:0}
.pick:hover,.pick.on{background:var(--sel)}
.pick .d{flex:1}
.pick .s{font-size:11.5px;color:var(--muted);font-family:var(--mono);white-space:nowrap}
.pick-tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line-2);border-radius:14px;padding:3px 10px;font-size:12px;cursor:pointer;background:#fff}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}

@media print{
  body{background:#fff}
}

/* ---------- pantallas pequeñas ---------- */
@media (max-width:900px){
  .split{overflow:auto}
  .pane-left{flex:none;height:64vh;min-width:0}
  .pane-right{flex:none;min-height:70vh;min-width:0}
  .grid.budget{min-width:660px}
  .grid.apu,.grid.met{min-width:580px}
  .grid.res{min-width:720px}
  .topbar.work [data-act=print],.presence{display:none}
  .pname{max-width:38vw}
  .find{width:160px}
}
@media (max-width:600px){
  .save-state{display:none}
  .topbar.work [data-act=share]{display:none}
  .home{padding:20px 16px}
}
/* Gantt: encabezados de la tabla y del diagrama con la misma altura */
.gtable thead th{height:30px;line-height:30px;box-sizing:border-box}
.g-head,.g-head div{height:30px;box-sizing:border-box}

/* ---------- asistentes de metrado ---------- */
.as-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.as-card{text-align:left;border:1px solid var(--line-2);background:#fff;border-radius:8px;padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;gap:4px;position:relative}
.as-card:hover{border-color:var(--brand);background:var(--brand-soft)}
.as-card b{font-size:13px}
.as-card span{font-size:11.5px;color:var(--muted);line-height:1.35}
.as-card i{position:absolute;top:8px;right:10px;font-style:normal;font-size:11px;color:var(--brand-2);font-weight:600}
.as-card.sug{border-color:var(--brand);box-shadow:0 0 0 2px rgba(232,87,30,.18)}
.as-card.sug b:after{content:'  · sugerido';color:var(--brand-2);font-size:11px;font-weight:600}
.as-run{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px}
.as-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;align-content:start}
.as-form .fld{margin-bottom:8px}
.as-form .fld input,.as-form .fld select{height:32px}
.as-form .fld>span a{font-weight:500;font-size:11px}
.as-groups input,.as-groups select{width:100%;height:26px;padding:2px 4px}
.as-groups td{padding:2px 3px}
.as-side{border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--surface-2);align-self:start}
.as-res{margin-top:8px}
.as-big{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--brand-2)}
.as-big small{font-size:13px;color:var(--muted)}
.as-add{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}
@media (max-width:760px){.as-run{grid-template-columns:1fr}}
.grid.met.kg{min-width:800px}
.grid.met.kg td[data-m=desc]{white-space:normal}

/* ---------- barra del Gantt con iconos ---------- */
.tb.big{height:auto;min-height:44px;padding:4px 8px;display:inline-flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;line-height:1.15;text-align:center}
.tb .ico{width:20px;height:20px;fill:none;stroke:var(--navy);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tb.big.on{background:#fdecec;border-color:var(--crit)}
.tb.big.on .ico,.tb.big[data-act=g-crit]:hover .ico{stroke:var(--crit)}
.tb.big[data-act=g-manual] .ico{stroke:#b7791f}
.tb.big[data-act=g-auto] .ico{stroke:#2f6fd6}
.tb.ai{color:#6d3fc7;font-weight:600}
.tb.ai .ico{stroke:#6d3fc7}
.gtable{width:830px}
.grid tr.crit td{color:var(--crit)}
.grid tr.crit td.desc{font-weight:600}
.gmode{font-size:11px}
/* ---------- diagrama de red ---------- */
.net-wrap{flex:1;min-height:0;overflow:auto;background:#f7f8fa;background-image:radial-gradient(#dfe3e8 1px,transparent 1px);background-size:18px 18px;cursor:grab}
#net-svg{display:block}
.nnode{cursor:pointer}
.nnode:hover rect:first-child{filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}
/* ---------- IA ---------- */
.spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;margin:10px auto;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* ---------- ventana Curva S ---------- */
.fullview{position:fixed;inset:0;z-index:45;background:#fff;display:flex;flex-direction:column}
.cs-bar{display:flex;align-items:center;gap:6px;padding:6px 16px;border-bottom:1px solid var(--line);background:#fff}
.cs-btn{display:flex;flex-direction:column;align-items:center;gap:3px;border:1px solid transparent;background:transparent;border-radius:6px;padding:4px 12px;cursor:pointer;font-size:12.5px;line-height:1.15;min-width:64px}
.cs-btn:hover{background:var(--surface-2);border-color:var(--line-2)}
.cs-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px;padding-left:10px}
.cs-tot{font-size:14px;white-space:nowrap}
.cs-body{flex:1;overflow:auto}
.cs-tbl{border-collapse:collapse;width:100%}
.cs-tbl th{background:#2e8b57;color:#fff;font-weight:700;padding:10px 6px;border-right:1px solid rgba(255,255,255,.6);font-size:12.5px;text-align:center}
.cs-tbl td{padding:11px 8px;border-bottom:1px solid #dde2e8;border-right:1px solid #dde2e8;font-size:13px}
.cs-tbl td.n{text-align:right;font-family:var(--mono);font-size:12.5px}
.cs-tbl td.c{text-align:center}
.cs-tbl tr.tt td{font-weight:700}
.cs-chart{padding:14px 20px 24px}
@media (max-width:760px){.cs-tot{display:none}}

/* divisor del Gantt */
#g-split{flex:0 0 6px;cursor:col-resize;background:var(--line-2);touch-action:none}
#g-split:hover,#g-split.drag{background:var(--brand)}
.g-left{border-right:0}
.gtable{width:100%;min-width:830px}

/* ---------- ventana Datos del Proyecto ---------- */
.modal.pd{width:min(1040px,100%);background:#f5faff}
.modal.pd h2{background:#1769c9;color:#fff;border-radius:12px 12px 0 0;font-size:14px;padding:10px 18px}
.pd-head{display:flex;align-items:center;gap:16px;background:#e9f4ff;border:1px solid #c6ddf2;border-radius:8px;padding:12px 18px;margin-bottom:8px}
.pd-ico{color:#1769c9;font-size:20px}
.pd-t{font-size:20px;font-weight:700;color:#10345e}
.pd-s{font-size:12.5px;color:#2b5d92;margin-top:4px}
.pd-note{margin-left:auto;max-width:300px;border-left:1px solid #c6ddf2;padding-left:14px;font-size:12px;color:#2b5d92}
.pd-box{border:1px solid #c6ddf2;border-radius:8px;background:#fff;margin:0 0 8px;padding:8px 12px 10px}
.pd-box legend{color:#1769b0;font-weight:600;font-size:12.5px;padding:0 6px}
.pd-g{display:grid;grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);gap:6px 10px;align-items:center}
.pd-g3{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr)}
.pd-l{font-size:12.5px;color:#26384a;white-space:nowrap}
.pd-g input,.pd-g select,.pd-g textarea{height:32px;border-color:#afcbe5;width:100%}
.pd-g textarea{height:auto;resize:vertical;font:inherit}
.pd-w5{grid-column:2/-1}
.pd-dur{display:flex;gap:6px}.pd-dur input{width:80px}
.pd-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pd-card{display:flex;gap:10px;align-items:center;border:1px solid #bcd7ee;border-radius:7px;padding:9px 14px;background:#f8fcff;cursor:pointer}
.pd-card:has(input:checked){background:#e7f4ff;border-color:#2e91ea}
.pd-card input{width:16px;height:16px;accent-color:#1769c9}
.pd-card b{display:block;color:#174a7a;font-size:13px}.pd-card i{font-style:normal;font-size:12px;color:#2b5d92}
.modal.pd .mf .btn.primary{background:#22a35a;border-color:#22a35a;min-width:180px;justify-content:center}
@media (max-width:760px){.pd-g,.pd-g3{grid-template-columns:auto minmax(0,1fr)}.pd-w5{grid-column:2}.pd-cards{grid-template-columns:1fr}.pd-note{display:none}}

/* ---------- fórmula polinómica ---------- */
#t-formula{overflow:auto}
.fp-wrap{display:grid;grid-template-columns:270px minmax(0,1fr);gap:12px;padding:12px;align-items:start}
.fp-side{padding:12px;position:sticky;top:0}
.fp-side h3,.fp-card h3{margin:0 0 8px;font-size:14px}
.fp-sc{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:6px;padding:8px 10px;margin-bottom:6px;cursor:pointer;font-size:12px}
.fp-sc b{color:var(--brand-2);margin-right:4px}
.fp-sc.on{border-color:var(--brand);background:var(--brand-soft)}
.fp-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.fp-card{padding:14px}
.fp-hd{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.fp-st{font-weight:700;padding:4px 10px;border-radius:6px;white-space:nowrap}
.fp-st.ok{background:#e7f6ec;color:var(--ok)}.fp-st.bad{background:#fdecea;color:var(--bad)}
.fp-k{font-family:var(--code);font-size:13px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:10px 0;line-height:1.7;word-break:break-word}
.fp-k span{font-weight:700;color:var(--brand-2)}
.fp-rules{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px}
.fp-rules .g{color:var(--ok)}.fp-rules .b{color:var(--bad)}.fp-rules i{color:var(--muted);font-style:normal}
.fp-t{margin-top:8px}.fp-t td{white-space:normal}.fp-t select{height:26px;width:100%}
.fp-t tr.lowc td{background:#fff3e0}
@media (max-width:900px){.fp-wrap{grid-template-columns:1fr}.fp-side{position:static}}
/* ---------- configuración ---------- */
#t-config{overflow:auto}
.th-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.th-card{border:1px solid var(--line-2);border-radius:8px;background:#fff;padding:8px;cursor:pointer;text-align:left;font-weight:500;display:flex;flex-direction:column;gap:6px}
.th-card.on{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.th-sw{display:flex;height:22px;border-radius:4px;overflow:hidden}.th-sw i{flex:1}
.gen-grid input[type=color]{height:38px;padding:2px;width:100%}
.th-prev{border:1px solid var(--line);border-radius:8px;overflow:hidden;max-width:520px;background:#fff}
.th-ph{background:var(--navy);color:#fff;padding:8px 10px;font-weight:600;font-size:12px}
.th-pr{padding:7px 10px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}
.th-pr.t{background:var(--title);font-weight:700}

/* ---------- pestañas de presupuestos abiertos ---------- */
.ptabs{display:flex;align-items:flex-end;gap:2px;padding:4px 8px 0;background:var(--surface-2);border-bottom:1px solid var(--line);overflow-x:auto;min-height:34px}
.ptab{display:flex;align-items:center;gap:6px;max-width:300px;height:30px;padding:0 6px 0 12px;border:1px solid var(--line);border-bottom:0;border-radius:7px 7px 0 0;background:#e9ecf0;cursor:pointer;font-size:12.5px;white-space:nowrap;color:var(--ink-2)}
.ptab span{overflow:hidden;text-overflow:ellipsis}
.ptab:hover{background:#fff}
.ptab.on{background:#fff;color:var(--ink);font-weight:600;border-color:var(--line-2);box-shadow:inset 0 2px 0 var(--brand)}
.ptab.ptab-home,.ptab.add{padding:0 12px;font-weight:600}
.ptab .px{border:0;background:transparent;border-radius:4px;width:20px;height:20px;cursor:pointer;color:var(--muted);font-size:15px;line-height:1}
.ptab .px:hover{background:rgba(0,0,0,.08);color:var(--bad)}
.home-open{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 0;padding:12px 14px;background:var(--brand-soft);border:1px solid var(--line);border-radius:var(--r)}
.home-open .chip{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- ventana Insumo ---------- */
.modal.ins{width:min(760px,100%);background:#eef4fb}
.modal.ins h2{background:#1769c9;color:#fff;border-radius:12px 12px 0 0;font-size:14px;padding:10px 18px}
.ins-tabs{display:flex;gap:4px;margin-bottom:-1px}
.ins-tab{border:1px solid #c9d8ea;border-bottom:0;background:#dde8f5;padding:9px 18px;border-radius:8px 8px 0 0;cursor:pointer;font-weight:500;color:#2b4a6f}
.ins-tab.on{background:#fff;color:#14305c;font-weight:700;box-shadow:inset 0 3px 0 #1769c9}
.ins-page{background:#fff;border:1px solid #c9d8ea;border-radius:0 8px 8px 8px;padding:14px 16px}
.ins-form{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 10px;align-items:center}
.ins-form>label{display:flex;align-items:center;gap:8px;font-size:13px;color:#14305c}
.ins-form>label.mut{color:#5b6b80}
.ins-form input,.ins-form select{height:34px;width:100%;border-color:#b9cde4}
.ins-form input:disabled,.ins-form select:disabled{background:#e9eef4;color:#6b7a8c}
.ins-form input.strong{font-weight:700;background:#dfeaf8}
.ins-form input.num{text-align:right;font-family:var(--mono)}
.ins-row{display:flex;align-items:center;gap:8px;min-width:0}
.ins-row>input{flex:1;min-width:0}
.ins-sub{display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:13px;color:#14305c}
.ins-i{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:#1769c9;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ins-form label.chk{grid-column:2;font-size:13px}
.ins-form label.chk input{width:18px;height:18px;accent-color:#1769c9}
.ins-foot{display:flex;align-items:center;gap:10px;margin-top:10px;padding:8px 12px;background:#fdecec;border:1px solid #f3c9c9;border-radius:8px;color:#5a1e1e;font-size:12.5px}
.ins-dot{width:22px;height:22px;border-radius:50%;background:#d93025;color:#fff;display:grid;place-items:center;font-weight:700;flex:0 0 22px}
#ins-list tr{cursor:pointer}
.modal.ins .mf .btn.primary{background:#1769c9;border-color:#1769c9;min-width:130px;justify-content:center}
@media (max-width:640px){.ins-form{grid-template-columns:1fr}.ins-row{flex-wrap:wrap}}
.fp-base{font-size:10.5px;background:var(--brand-soft);color:var(--brand-2);border-radius:8px;padding:0 6px;font-weight:600}
.fp-warn{color:var(--warn)}
.fp-acc{font-size:11px;color:var(--muted);margin:1px 0 3px 22px}
.fp-t tr.fp-accrow td{color:var(--muted);background:#fafbfc}

/* ---------------- Vista previa de impresión ---------------- */
.pv-win{position:fixed;inset:0;z-index:48;background:#f3f6fb;display:flex;flex-direction:column;font-family:"Segoe UI",system-ui,sans-serif;color:#1b2430}
.pv-titlebar{height:30px;background:#1d63c9;color:#fff;display:flex;align-items:center;gap:8px;padding:0 0 0 8px;font-size:14px;flex:none}
.pv-titlebar img{width:18px;height:18px;filter:brightness(1.1)}
.pv-titlebar span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-x{background:none;border:0;color:#fff;font-size:16px;width:46px;height:30px;cursor:pointer}.pv-x:hover{background:#e81123}
.pv-toolbar{display:flex;gap:6px;padding:8px;background:#fff;border-bottom:1px solid #d5dde8;overflow-x:auto;flex:none}
.pv-tbtn{flex:none;width:104px;height:92px;border:1px solid #e1e6ee;background:#fff;border-radius:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-size:13px;color:#2a3442;line-height:1.25;text-align:center}
.pv-tbtn svg{width:30px;height:30px;fill:none;stroke:#1b2430;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.pv-tbtn[data-pv=close] svg{stroke:#1d63c9}
.pv-tbtn[data-pv=zout] svg,.pv-tbtn[data-pv=zin] svg,.pv-tbtn[data-pv=fit] svg,.pv-tbtn[data-pv=one] svg,.pv-tbtn[data-pv=two] svg{stroke:#1d63c9}
.pv-tbtn:hover{background:#eef4fc;border-color:#b9d1f0}.pv-tbtn.on{background:#d6e6fa;border-color:#a9c8f0}
.pv-sep{flex:none;width:1px;background:#e1e6ee;margin:4px 2px}.pv-fillx{flex:1;min-width:6px}
.pv-body{flex:1;display:flex;min-height:0;position:relative}
.pv-side{width:400px;flex:none;background:#f3f7fc;border-right:1px solid #d5dde8;padding:14px 22px;overflow:auto;font-size:14px}
.pv-h1{display:flex;align-items:center;gap:12px;margin-bottom:12px}.pv-h1 svg{width:46px;height:46px;fill:none;stroke:#1e63c4;stroke-width:1.6}
.pv-h1 b{display:block;font-size:30px;color:#1d4fa0;line-height:1.05}.pv-h1 small{display:block;font-weight:600;font-size:14px;margin-top:4px;color:#1b2430}
.pv-side h4{color:#1d5fbf;font-size:18px;margin:16px 0 8px;font-weight:600}
.pv-side select,.pv-side input[type=number]{width:100%;height:36px;border:1px solid #c7d0dc;border-radius:2px;padding:0 8px;font-size:14px;background:#fff;box-sizing:border-box}
.pv-wbtn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;margin-top:8px;border:1px solid #c7d0dc;background:#fff;border-radius:2px;color:#1d4fa0;font-size:14px;cursor:pointer}
.pv-wbtn svg{width:20px;height:20px;fill:none;stroke:#1d63c9;stroke-width:2}.pv-wbtn:hover{background:#eef4fc}
.pv-row{display:flex;align-items:center;gap:10px;margin-top:10px}.pv-row label{white-space:nowrap;min-width:110px}.pv-row input[type=number]{flex:1}
.pv-row label.pv-chk{min-width:0;display:flex;align-items:center;gap:6px}
.pv-orient{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.pv-orient button{height:56px;border:1px solid #c7d0dc;background:#fff;display:flex;align-items:center;justify-content:center;gap:10px;font-size:16px;cursor:pointer;color:#1b2430}
.pv-orient button svg{width:30px;height:30px;fill:none;stroke:#1d63c9;stroke-width:1.6}.pv-orient button.on{background:#d6e6fa;border-color:#a9c8f0}
.pv-opt{display:flex;align-items:center;gap:10px;margin:8px 0;cursor:pointer}.pv-opt input{width:16px;height:16px;accent-color:#1d63c9}
.pv-view{flex:1;overflow:auto;background:#8c8c8c;padding:16px 24px 40px}
.pv-pages{display:flex;flex-direction:column;align-items:center;gap:18px;width:max-content;min-width:100%;margin:0 auto}
.pv-pages.two{display:grid;grid-template-columns:auto auto;gap:18px 24px;justify-content:center}
.pv-pages .pv-page{box-shadow:0 2px 10px rgba(0,0,0,.35)}
.pv-pager{position:absolute;right:26px;bottom:8px;background:#fff;border:1px solid #c7d0dc;padding:4px 10px;font-size:14px;display:flex;align-items:center;gap:6px;border-radius:3px;box-shadow:0 1px 4px #0003}
.pv-pager input{width:52px;height:26px;border:1px solid #c7d0dc;text-align:center}
@media (max-width:900px){.pv-side{display:none}.pv-tbtn{width:74px;height:70px;font-size:11px}.pv-tbtn svg{width:22px;height:22px}}

/* ---------------- Sub-cinta Programación ---------------- */
.subribbon{background:var(--rib-bg);border-bottom:1px solid var(--rib-line);padding:6px 10px 2px;flex:none}
.srgrp{display:inline-flex;flex-direction:column;align-items:stretch;border-right:1px solid #c9d6e8;padding-right:10px}
.srbtns{display:flex;gap:4px;align-items:flex-start}
.srb{background:transparent;border:1px solid transparent;border-radius:4px;width:108px;min-height:96px;padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;font-size:13px;color:#2a3442;line-height:1.3;text-align:center}
.srb svg{width:34px;height:34px;flex:none}
.srb:hover{background:#fff;border-color:#b9d1f0}.srb.on{background:#fff;border-color:#2f74d0;box-shadow:inset 0 -3px 0 #2f74d0}
.srb[data-sub=adqcal]{width:128px}
.srcap{text-align:center;font-size:10.5px;letter-spacing:.4px;color:#4b5563;padding:3px 0 2px}
.seg{display:inline-flex}.seg .tb{border-radius:0}.seg .tb:first-child{border-radius:6px 0 0 6px}.seg .tb:last-child{border-radius:0 6px 6px 0;margin-left:-1px}
.pc-empty{padding:10px 14px;background:#fff8e6;border-bottom:1px solid #f0dca8}
.cal tr.h1 td{background:#fbe6da;font-weight:700}
@media (max-width:700px){.srb{width:78px;min-height:80px;font-size:11px}.srb svg{width:26px;height:26px}.srb[data-sub=adqcal]{width:96px}}

/* ---------------- Especificaciones técnicas (estilo Word) ---------------- */
.wd{--wd-bg:#3b3b3b;--wd-rb:#454545;--wd-tx:#f1f1f1;--wd-mu:#c7c7c7;--wd-hv:#5a5a5a;--wd-on:#6b6b6b;--wd-ln:#5d5d5d;--wd-canvas:#5e5e5e;background:var(--wd-bg);color:var(--wd-tx);font-family:"Segoe UI",system-ui,sans-serif}
.wd-rtabs{display:flex;align-items:flex-end;gap:2px;padding:4px 10px 0;background:var(--wd-bg);flex:none}
.wd-rtabs>button{background:none;border:0;color:var(--wd-tx);font-size:14px;padding:6px 12px 7px;cursor:pointer;border-bottom:3px solid transparent}
.wd-rtabs>button.on{font-weight:600;border-bottom-color:#e8e8e8}.wd-rtabs>button:hover{background:var(--wd-hv)}
.wd-rfill{flex:1}
.wd-rtabs .wd-act{border:1px solid #6d6d6d;border-radius:4px;margin:0 0 4px 6px;padding:5px 10px;font-size:13px}
.wd-ribbon{display:flex;align-items:stretch;background:var(--wd-rb);border-top:1px solid #555;border-bottom:1px solid #2b2b2b;min-height:104px;padding:4px 4px 0;overflow-x:auto;flex:none}
.wd-grp{display:flex;flex-direction:column;border-right:1px solid var(--wd-ln);padding:0 8px;flex:none}
.wd-gb{flex:1;display:flex;align-items:center;gap:4px}
.wd-gn{text-align:center;font-size:11.5px;color:var(--wd-mu);padding:3px 0 4px;position:relative}
.wd-gl{position:absolute;right:-4px;bottom:3px;cursor:pointer;font-size:10px;opacity:.8}.wd-gl:hover{opacity:1}
.wd-rows{display:flex;flex-direction:column;gap:6px}.wd-row{display:flex;align-items:center;gap:2px}
.wd-col{display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.wd .wd-b{min-width:28px;height:28px;padding:0 5px;border:1px solid transparent;border-radius:3px;background:none;color:var(--wd-tx);font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px;position:relative}
.wd .wd-b svg,.wd .wd-big svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.wd .wd-b:hover,.wd .wd-big:hover,.wd .wd-sty:hover{background:var(--wd-hv);border-color:#777}.wd .wd-b.on{background:var(--wd-on);border-color:#888}
.wd .wd-b.wd-wide{justify-content:flex-start;font-size:13px;height:26px}
.wd .wd-b sup,.wd .wd-b sub{font-size:9px}
.wd .wd-b.wd-dd{min-width:14px;padding:0 2px;font-size:10px}
.wd-split{display:inline-flex}
.wd-cbar{position:absolute;left:5px;right:5px;bottom:2px;height:4px;display:block}
.wd-pen{font-weight:600;font-size:12px;padding-bottom:3px}.wd-fa{text-decoration:none;padding-bottom:4px;font-size:16px}
.wd .wd-big{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:56px;height:84px;padding:2px 6px;border:1px solid transparent;border-radius:3px;background:none;color:var(--wd-tx);font-size:12.5px;line-height:1.2;cursor:pointer;text-align:center}
.wd .wd-big svg{width:32px;height:32px}
.wd select{background:#2f2f2f;color:var(--wd-tx);border:1px solid #6d6d6d;border-radius:2px;height:26px;font-size:13px}
#wd-font{width:150px}#wd-size{width:58px;margin-right:4px}
.wd-styles{display:grid;grid-template-columns:repeat(4,108px);grid-auto-rows:34px;gap:3px;max-height:74px;overflow:auto}
.wd .wd-sty{background:#fff;color:#111;border:1px solid #c8c8c8;border-radius:1px;cursor:pointer;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px}
.wd-syms{display:grid;grid-template-columns:repeat(8,28px);gap:1px}
.wd-lbl{font-size:12.5px;min-width:136px;color:var(--wd-mu)}
.wd-chk{display:flex;align-items:center;gap:6px;font-size:13px;padding:3px 0}
.wd-main{flex:1;display:flex;min-height:0}
.wd-nav{width:330px;flex:none;background:var(--wd-bg);border-right:1px solid #2b2b2b;display:flex;flex-direction:column;padding:12px 14px;min-height:0}
.wd-nav[hidden]{display:none}
.wd-navh{display:flex;justify-content:space-between;align-items:center;font-size:24px;font-weight:300;margin-bottom:12px}
.wd-navh button{background:none;border:0;color:var(--wd-tx);font-size:16px;cursor:pointer}
.wd-search{display:flex;align-items:center;background:#555;border:1px solid #6d6d6d;padding:0 8px}.wd-search input{flex:1;background:none;border:0;color:var(--wd-tx);height:30px;font-size:14px;outline:none}
.wd-ntabs{display:flex;gap:4px;margin:14px 0 8px;border-bottom:1px solid #555}
.wd-ntabs button{background:none;border:0;color:var(--wd-tx);font-size:14px;padding:6px 10px 8px;cursor:pointer;border-bottom:3px solid transparent}.wd-ntabs button.on{font-weight:700;border-bottom-color:#e8e8e8}
.wd-nlist{flex:1;overflow:auto;font-size:13px}
.wd-ni{padding:4px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid transparent}
.wd-ni.hd{font-weight:600}.wd-ni.em{color:#a8a8a8;font-style:italic}.wd-ni:hover{background:var(--wd-hv)}.wd-ni.on{background:#575757;border-left-color:#7fb2ff}
.wd-nh{color:var(--wd-mu);font-size:13px;line-height:1.5}
.wd-res{padding:7px 8px;border-bottom:1px solid #4b4b4b;cursor:pointer;font-size:12.5px;line-height:1.4}.wd-res:hover{background:var(--wd-hv)}.wd-res mark{background:#ffd54f;color:#000}
.wd-thumb{display:inline-flex;flex-direction:column;align-items:center;margin:6px;cursor:pointer}.wd-thumb div{width:84px;height:118px;background:#fff;border:2px solid transparent}.wd-thumb:hover div{border-color:#7fb2ff}.wd-thumb span{font-size:12px;margin-top:3px}
.wd-center{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--wd-canvas)}
.wd-hruler{height:22px;flex:none;position:relative;background:var(--wd-canvas);overflow:hidden;border-bottom:1px solid #4a4a4a}
.wd-hruler[hidden]{display:none}
.wd-rin{position:absolute;top:3px;height:16px;background:#f4f4f4}
.wd-rm{position:absolute;top:0;bottom:0;left:0;background:#a9a9a9}.wd-rm.r{left:auto;right:0}
.wd-tk{position:absolute;bottom:5px;width:1px;height:3px;background:#555}.wd-tk.h{height:6px;bottom:3px}
.wd-tn{position:absolute;top:1px;font-size:10px;color:#333;transform:translateX(-50%)}
.wd-scroll{flex:1;overflow:auto;padding:16px 24px 40px}
.wd-zoom{width:max-content;margin:0 auto}
.wd-page{background:#fff;color:#000;box-sizing:border-box;position:relative;box-shadow:0 1px 6px rgba(0,0,0,.5);margin:0 auto}
.wd-brk{position:absolute;left:-1px;right:-1px;height:14px;margin-top:-7px;background:var(--wd-canvas);pointer-events:none;z-index:2}
.wd-brk span{position:absolute;right:-74px;top:-1px;font-size:11px;color:#ddd;white-space:nowrap}
.wd-doc{text-align:justify;color:#000}
.wd-doc p{margin:0 0 6pt}.wd-doc ul,.wd-doc ol{margin:0 0 6pt;padding-left:1.27cm}
.wd-doc h1{font-size:1.45em;color:#2f5496;margin:10pt 0 6pt}.wd-doc h2{font-size:1.25em;color:#2f5496;margin:8pt 0 5pt}.wd-doc h3{font-size:1.1em;color:#1f3763;margin:6pt 0 4pt}
.wd-doc blockquote{margin:6pt 1cm;font-style:italic;color:#444}
.wd-doc table{border-collapse:collapse;margin:4pt 0}.wd-doc td,.wd-doc th{border:1px solid #808080;padding:2pt 5pt;vertical-align:top}
.wd-doc img{max-width:100%;height:auto}
.wd-cover{text-align:center;margin-bottom:18pt}.wd-ct{font-size:1.7em;font-weight:700}.wd-cp{font-size:1.05em;margin-top:6pt;font-weight:600}
.wd-h{font-weight:700;margin:10pt 0 4pt;cursor:default;user-select:text;page-break-after:avoid}
.wd-h.wd-l1{font-size:1.25em}.wd-h.wd-l2{font-size:1.15em}.wd-h.wd-l3,.wd-h.wd-l4{font-size:1.07em}
.wd-h.wd-p{text-decoration:underline;font-size:1.02em;margin-top:10pt}.wd-und{font-weight:400;text-decoration:none;color:#555}
.wd-blk{outline:none;min-height:1.4em;padding:1px 2px;margin:0 -2px;border-radius:2px}
.wd-blk:focus{box-shadow:0 0 0 1px #c9d9f2;background:#fcfdff}
.wd-blk.empty:before{content:attr(data-ph);color:#9aa3ad;font-style:italic;pointer-events:none}
.wd-none{color:#777;text-align:center;padding:40px 0}
.wd-doc.pil p:after,.wd-doc.pil li:after,.wd-doc.pil h1:after,.wd-doc.pil h2:after,.wd-doc.pil h3:after{content:"¶";color:#6b8fc4;font-weight:400}
.wd-status{display:flex;align-items:center;gap:18px;height:28px;padding:0 12px;background:var(--wd-rb);border-top:1px solid #2b2b2b;font-size:12.5px;color:var(--wd-mu);flex:none}
.wd-sfill{flex:1}.wd-status button{background:none;border:0;color:var(--wd-tx);font-size:16px;cursor:pointer;width:22px}
.wd-status input[type=range]{width:130px;accent-color:#bbb}.wd-status select{height:22px;font-size:12px}
.wd-cmenu{display:grid;grid-template-columns:repeat(5,26px);gap:4px;padding:8px;min-width:0}
.wd-cmenu button{width:26px;height:22px;border:1px solid #bbb;border-radius:2px;cursor:pointer;padding:0}
.wd-cmenu label{grid-column:1/-1;font-size:12px;display:flex;align-items:center;gap:6px;color:#333}
.wd.wd-ro .wd-ribbon{opacity:.55}
@media (max-width:900px){.wd-nav{display:none}.wd-ribbon{min-height:0}}
.wd select{padding:0 4px;line-height:24px}
.wd-brk{height:14px;margin-top:-7px}

/* ---------------- Incidencia de costos ---------------- */
.inc-card{width:400px;flex:none;background:#fff;border:1px solid var(--line-2);border-radius:6px;display:flex;flex-direction:column;overflow:hidden}
.inc-head{display:flex;align-items:center;justify-content:space-between;padding:5px 8px 2px 12px}
.inc-head b{font-size:12.5px;color:var(--ink)}
.inc-tools{display:flex;gap:2px}.inc-tools button{width:24px;height:22px;border:1px solid transparent;border-radius:4px;background:none;cursor:pointer;color:#344152;display:grid;place-items:center;padding:0}
.inc-tools button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.inc-tools button.on{background:#e6eefb;border-color:#b9cdee;color:#2559b8}.inc-tools button:hover{background:#f1f4f9}
.inc-body{display:flex;align-items:center;gap:12px;padding:2px 12px 4px;flex:1}
.inc-donut{flex:none}
.inc-leg{flex:1;display:flex;flex-direction:column;gap:5px;font-size:12px;min-width:0}
.il-row{display:flex;align-items:center;gap:7px;min-width:0}.il-row i{width:11px;height:11px;border-radius:2px;flex:none}.il-row span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#374151}.il-row b{font-weight:500;font-family:var(--mono);font-size:11.5px}
.inc-bars{display:flex;flex-direction:column;gap:5px;padding:6px 12px 6px;flex:1;justify-content:center;font-size:12px}
.ib-row{display:grid;grid-template-columns:110px 1fr 48px;align-items:center;gap:8px}.ib-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#374151}
.ib-t{height:11px;background:#eef1f5;border-radius:3px;overflow:hidden}.ib-t i{display:block;height:100%;border-radius:3px}.ib-v{text-align:right;font-family:var(--mono);font-size:11.5px}
.inc-bars.big{min-width:360px;gap:9px;font-size:13px}.inc-bars.big .ib-row{grid-template-columns:180px 1fr 56px}.inc-bars.big .ib-t{height:16px}
.inc-foot{border:0;border-top:1px solid var(--line);background:#f5f8fd;color:#2559b8;font-size:11.5px;padding:4px;cursor:pointer}.inc-foot:hover{background:#e9f0fb}
.inc-empty{padding:30px;text-align:center;color:var(--muted);font-size:12px}
.inc-modal{display:flex;flex-direction:column;gap:14px}.inc-sec h3{margin:0 0 8px;font-size:14px}
.inc-bigrow{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.inc-tbl{border-collapse:collapse;font-size:12.5px;flex:1;min-width:300px}.inc-tbl th{background:var(--navy);color:#fff;padding:5px 8px;text-align:left;font-weight:600}.inc-tbl td{padding:4px 8px;border-bottom:1px solid var(--line)}
.inc-tbl .num{text-align:right;font-family:var(--mono)}.inc-tbl tr.tot td{font-weight:700;background:#ddebf7}.inc-sw{display:inline-block;width:12px;height:12px;border-radius:2px}
@media (max-width:1100px){.inc-card{width:300px}.inc-donut{width:90px;height:90px}}
@media (max-width:760px){.footer-pie{flex-direction:column}.inc-card{width:auto}}
.inc-leg.dense{gap:1px;font-size:11px;max-height:132px;overflow:auto}.inc-leg.dense .il-row b{font-size:10.5px}
.inc-card{max-height:190px}
.inc-bars.dense{gap:1px;font-size:11px;padding:3px 12px;max-height:134px;overflow:auto;justify-content:flex-start}.inc-bars.dense .ib-t{height:8px}.inc-bars.dense .ib-row{grid-template-columns:140px 1fr 42px}
.inc-card{min-height:0}.inc-bars,.inc-body{min-height:0}

/* ---------------- Diagrama de red (tipo MS Project) ---------------- */
.net-head{display:flex;align-items:center;gap:24px;padding:6px 14px;background:#fff;border-bottom:1px solid var(--line);flex:none}
.net-back{background:none;border:0;color:#1d4fa0;font-size:14px;cursor:pointer;padding:4px 6px}.net-back:hover{text-decoration:underline}
.net-head h2{margin:0;font-size:22px;font-weight:800;letter-spacing:.3px;color:#111}
.net-head select{border:0;background:transparent;color:#4b5563;font-size:14px;max-width:560px;cursor:pointer}
.net-ribbon{display:flex;background:#fff;border-bottom:1px solid #d5dde8;padding:4px 6px 0;overflow-x:auto;flex:none}
.nrg{display:flex;flex-direction:column;border-right:1px solid #e1e6ee;padding:0 6px;flex:none}.nrgb{display:flex;gap:4px;flex:1}.nrgn{text-align:center;font-size:12px;color:#6b7280;padding:4px 0 5px}
.nrb{width:92px;min-height:84px;border:1px solid transparent;border-radius:3px;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;font-size:13px;color:#2a3442;line-height:1.2;text-align:center;padding:4px}
.nrb svg{width:30px;height:30px;fill:none;stroke:#1b4f9c;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.nrb:hover{background:#eef4fc;border-color:#c9dbf3}.nrb.on{background:#d6e6fa;border-color:#a9c8f0}
.nrb[data-act=n-auto]{width:122px}
.net-wrap{flex:1;min-height:0;overflow:auto;background:#fff;background-image:none;cursor:default}
.net-wrap.pan{cursor:grab}.net-wrap.grabbing{cursor:grabbing}
#net-svg{display:block;user-select:none}
#net-svg .ne{fill:none;stroke:#2b62b8;stroke-width:1.3}#net-svg .ne.cr{stroke:#d23c3c;stroke-width:2}
#net-svg .nb{fill:#fff;stroke:#2b62b8;stroke-width:1.3}#net-svg .nb.sum{fill:#d6dde8;stroke:#7d8fab}#net-svg .nb.cr{stroke:#d23c3c;stroke-width:2;fill:#fff5f5}
#net-svg .nt{font-family:Arial,Helvetica,sans-serif;font-weight:700;fill:#111}#net-svg .ni{font-family:Arial,Helvetica,sans-serif;font-size:8.6px;fill:#222}
#net-svg .nl{stroke:#6b7280;stroke-width:.7}#net-svg .nbrk{stroke:#888;stroke-width:1;stroke-dasharray:6 5}
#net-svg .nnode{cursor:pointer}#net-svg .nnode:hover .nb{filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}
#net-svg .nnode.sel .nb{stroke:#0b5fff;stroke-width:2.6;filter:drop-shadow(0 0 4px rgba(11,95,255,.45))}
#net-svg .ntog{cursor:pointer}
.net-wrap.pan .nnode{cursor:grab}
.net-status{display:flex;gap:0;align-items:center;height:28px;padding:0 10px;background:#f3f6fb;border-top:1px solid #d5dde8;font-size:13px;color:#374151;flex:none;white-space:nowrap;overflow:hidden}
.net-status span{padding:0 12px;border-right:1px solid #c7d0dc}.net-status span:last-child{border:0}

.gtable td.gcrew{background:#fffbe6;cursor:text;color:#7a4b00;font-weight:600}.gtable td.gcrew:hover{outline:1px solid #e0b100;outline-offset:-1px}.gtable td.gyld{color:#6b7280}
.gtable td.edit input[type=number]{width:100%}

/* jerarquía del Gantt */
.gtog{display:inline-block;width:14px;margin-right:3px;text-align:center;cursor:pointer;color:#475569;font-size:11px}.gtog.none{cursor:default}
.gtog:hover{color:#e8571e}
.gtable tr.glv1 td{background:#fbe6da;font-weight:700}.gtable tr.glv2 td{background:#eef2f8;font-weight:700}.gtable tr.glv3 td{background:#f5f7fb;font-weight:600}.gtable tr.glv4 td,.gtable tr.glv5 td{background:#fafbfd;font-weight:600}
.gtable tr.sel td{background:var(--row-sel)!important}

/* ---------------- Cuadro del presupuesto (estilo MG escritorio) ---------------- */
.grid.budget{font-family:Arial,Helvetica,sans-serif;font-size:10pt;color:#111}
.grid.budget th{background:var(--hd-bg);color:var(--hd-ink);font-family:Cambria,"Cambria Math",Georgia,serif;font-size:12pt;font-weight:400;padding:9px 6px;border-right:1px solid var(--hd-line);border-bottom:1px solid var(--hd-line);text-align:center}
.grid.budget td{border-right:1px solid var(--cell-line);border-bottom:1px solid var(--cell-line);padding:5px 7px;vertical-align:middle;font-family:Arial,Helvetica,sans-serif;font-size:10pt}
.grid.budget td.num{font-family:Arial,Helvetica,sans-serif;font-size:10pt}
.grid.budget td.bno{text-align:center;color:#333;background:#f6f9fd}
.grid.budget td.item{font-family:Arial,Helvetica,sans-serif;font-size:10pt;border-right:0;white-space:nowrap;overflow:hidden;text-overflow:clip}
.grid.budget td.desc{padding-left:2px}
.grid.budget td.c{text-align:center}
.grid.budget tbody tr:hover td{background:#f7fbff}
.grid.budget tr.bh td{font-weight:700}
.grid.budget tr.bl1 td{background:#e3edf8;color:#111}
.grid.budget tr.bl2 td{color:#e10600;background:#fff}
.grid.budget tr.bl3 td{color:#1f6fd1;background:#fff}
.grid.budget tr.bl4 td{color:#1c9a48;background:#fff}
.grid.budget tr.bl5 td{color:#8e44ad;background:#fff}
.grid.budget tr.bl6 td{color:#b7791f;background:#fff}
.grid.budget tr.bh td.bno{background:#f6f9fd}
.grid.budget tr.bl1 td.bno{background:#e3edf8}
.grid.budget tr.sel td{background:var(--row-sel)!important}
.grid.budget tr.sel td:first-child{box-shadow:inset 3px 0 0 #2f74d0}
.grid.budget .tw{width:16px;color:#4b5563;font-weight:400;text-align:center;font-size:12px}
.grid.budget tr.bh .tw{color:inherit}
.bspec{float:right;margin-left:8px;cursor:pointer;line-height:0}.bspec svg{width:15px;height:17px}.bspec:hover svg rect{stroke:#6d28d9}
.bmet{display:inline-block;float:left;background:#2563eb;color:#fff;font-weight:700;font-size:9pt;width:18px;height:18px;line-height:18px;text-align:center;border-radius:4px;cursor:pointer;margin-right:6px}
.bmet:hover{background:#1d4ed8}
.grid.budget td sup{font-size:7pt;line-height:0}

/* ---------------- Análisis de C.U. y Lista de insumos (formato MG escritorio) ---------------- */
.grid.apu2,.grid.ins2{font-family:Arial,Helvetica,sans-serif;font-size:10pt;color:#111}
.grid.apu2 th,.grid.ins2 th{background:var(--hd-bg);color:var(--hd-ink);font-family:Arial,Helvetica,sans-serif;font-size:10pt;font-weight:700;padding:8px 7px;border-right:1px solid var(--hd-line);border-bottom:1px solid var(--hd-line);text-align:left}
.grid.apu2 td,.grid.ins2 td{border-right:1px solid var(--cell-line);border-bottom:1px solid var(--cell-line);padding:5px 7px;vertical-align:middle;font-size:10pt}
.grid.apu2 tbody tr:hover td,.grid.ins2 tbody tr:hover td{background:#f7fbff}
.grid.apu2 tr.sel td{background:var(--row-sel)!important}
.grid.apu2 td.acod{padding-left:24px;border-right:0;color:#222;font-family:Arial,Helvetica,sans-serif;font-size:10pt}
.grid.apu2 tr.cat2 td{background:var(--grp-bg);color:var(--cc);font-weight:700;border-right-color:#c5d8ee}
.grid.apu2 tr.cat2 td:first-child{padding-left:6px}
.ctog{display:inline-block;width:16px;margin-right:6px;text-align:center;color:#4b5563;cursor:pointer;font-weight:400;user-select:none}
.ctog:hover{color:var(--brand)}
.grid.apu2 tr.aempty td{color:#8a8f98;font-size:9.5pt;padding-left:24px;background:#fff}
.grid.apu2 tr.aempty td i{font-style:italic}
.grid.apu2 tr.tot td{background:var(--hd-bg);font-weight:700;border-top:1.5px solid var(--tot-line)}
.grid.apu2 td.apu-pu{position:relative;padding-right:7px}
.grid.apu2 .pdd{float:right;margin-left:6px;width:22px;height:20px;border:1px solid #9db3d3;border-radius:5px;background:linear-gradient(#f3f7fc,#dde8f6);color:#1f4e8c;font-size:12px;line-height:16px;cursor:pointer;padding:0}
.grid.apu2 .pdd:hover{background:#cfe0f6}
.grid.apu2 td.apu-pu span{display:inline-block}
.grid.ins2 tr.lcat td{background:var(--grp-bg);color:var(--grp-ink);font-weight:700}
.grid.ins2 td.ltipo{padding:3px 0;line-height:0}.grid.ins2 td.ltipo svg{width:15px;height:15px}
.grid.ins2 td.lcod{font-family:Arial,Helvetica,sans-serif;font-size:10pt}
.grid.ins2 tfoot td{position:sticky;bottom:0;background:var(--hd-bg);color:var(--grp-ink);font-weight:700;font-size:11pt;padding:8px 10px;border-top:1.5px solid var(--tot-line)}
.grid.ins2 sup,.grid.apu2 sup{font-size:7pt;line-height:0}

/* ---------------- Todos los números del programa: Arial 10 pt ---------------- */
td.num,th.num,.grid td.num,.grid.budget td.num,.pie-tbl td.v,.pie-tbl td.p,.prow .num,.num,input.num,.grid td.edit input.num,.il-row b,.ib-v,.inc-tbl .num,.cal td.num,.gtable td.num{font-family:Arial,Helvetica,sans-serif!important;font-size:10pt!important}
.pie-tbl td.p input{font-family:Arial,Helvetica,sans-serif!important;font-size:10pt!important}

.pie-cell .v,.cs-tbl td.n,.pick .s,.ins-form input.num,.dhead .meta input{font-family:Arial,Helvetica,sans-serif!important}
.cs-tbl td.n,.pie-cell .v{font-size:10pt!important}
.grid.met.kg{min-width:690px;table-layout:fixed}
.grid.met.kg td{padding:4px 4px}
.grid.met.kg th{white-space:normal;line-height:1.15;vertical-align:middle;padding:6px 5px;text-overflow:clip}
.grid.met.kg th{font-size:10.5px;overflow-wrap:anywhere}
.dtools[hidden]{display:none!important}

/* ---------------- Fuentes de tablas (presupuesto, A.C.U., insumos, metrados…) ----------------
   Encabezados: Arial negrita 10 pt · descripciones: Arial 8 pt · títulos: Arial negrita 8 pt · números: Arial 8 pt */
.grid.budget th,.grid.apu2 th,.grid.ins2 th,.grid.met th,.grid.cal th,.gtable th,.grid.apu th{font-family:Arial,Helvetica,sans-serif!important;font-size:10pt!important;font-weight:700!important}
.grid.budget td,.grid.apu2 td,.grid.ins2 td,.grid.met td,.grid.cal td,.gtable td,.grid.apu td{font-family:Arial,Helvetica,sans-serif!important;font-size:8pt!important}
.grid.budget tr.bh td,.grid.apu2 tr.cat2 td,.grid.ins2 tr.lcat td,.grid.cal tr.h1 td,.grid.cal tr.h2 td,.gtable tr.h1 td,.gtable tr.h2 td,.grid.met tr.h2 td{font-weight:700!important}
.grid.budget td.num,.grid.apu2 td.num,.grid.ins2 td.num,.grid.met td.num,.grid.cal td.num,.gtable td.num,.grid.apu td.num,.grid td.num{font-size:8pt!important}
.grid.budget td.item,.grid.apu2 td.acod,.grid.ins2 td.lcod{font-size:8pt!important}
.grid.budget .bmet{font-size:7pt;width:15px;height:15px;line-height:15px}
.grid.ins2 tfoot td{font-size:10pt!important}
.grid.apu2 tr.tot td{font-size:8pt!important;font-weight:700!important}
.fp-tag{display:inline-block;font-size:10px;padding:0 5px;border-radius:8px;background:#e7f6ec;color:#1c7a2e;margin-left:4px;vertical-align:1px}
.fp-tag.warn{background:#fff3e0;color:#b45309}
.fp-reag{border-left:4px solid #f59e0b}.fp-reag.on{border-left-color:#22a04b}
.ptabbar{display:flex;align-items:stretch;background:var(--surface-2);border-bottom:1px solid var(--line);flex:none}
.ptabbar .ptabs{flex:1;border-bottom:0;min-width:0}
.ptools{display:flex;align-items:center;gap:8px;padding:2px 10px;flex:none}
.ptools .save-state{font-size:12px}
.ptools .pshare{display:inline-flex;align-items:center;gap:6px}
.ptools .pshare svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}
.ptools .pmore{width:30px;height:28px;font-size:18px;line-height:1}

/* ---------------- Plan anual (Inicio) ---------------- */
.plan-card{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#1d4ed8,#2563eb 55%,#0ea5e9);color:#fff;border-radius:10px;padding:12px 14px 12px 16px;margin:0 0 18px;box-shadow:0 6px 18px rgba(37,99,235,.25)}
.plan-card[hidden]{display:none}
.pc-ico svg{width:30px;height:30px;fill:none;stroke:#fff;stroke-width:1.4;stroke-linejoin:round}
.pc-txt{flex:1;display:flex;flex-direction:column;gap:2px;font-size:14px}.pc-txt b{font-size:15px}.pc-txt small{opacity:.85}
.pc-btn{background:#16a34a;color:#fff;border:0;border-radius:8px;padding:9px 18px;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.18)}.pc-btn:hover{background:#15803d}
.pc-x{background:none;border:0;color:#fff;opacity:.75;font-size:20px;cursor:pointer;padding:0 4px}.pc-x:hover{opacity:1}
.plan-dlg .pd-price{display:flex;align-items:baseline;gap:6px;margin:0 0 10px}.plan-dlg .pd-price span{font-size:18px;color:#1d4ed8;font-weight:700}
.plan-dlg .pd-price b{font-size:40px;color:#1d4ed8;line-height:1}.plan-dlg .pd-price i{font-style:normal;color:#6b7280}
.plan-dlg ul{margin:0 0 12px;padding-left:0;list-style:none}.plan-dlg li{padding:3px 0 3px 24px;position:relative}.plan-dlg li:before{content:"✔";position:absolute;left:2px;color:#16a34a;font-weight:700}
@media (max-width:640px){.plan-card{flex-wrap:wrap}.pc-btn{width:100%}}

/* ---------------- Pago con Plin ---------------- */
.pay{display:grid;grid-template-columns:1.35fr 1fr;gap:26px;background:#efefef;margin:-16px -20px;padding:22px 24px;border-radius:0 0 4px 4px}
.pay h3{margin:0 0 14px;font-size:17px}
.pay-opt{display:flex;align-items:center;gap:14px;background:#fff;border:1.5px solid #e5e7eb;border-radius:8px;padding:12px 14px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.pay-opt.on{border-color:#00b2a9}
.pay-opt{cursor:pointer;margin-bottom:8px}.pay-opt:not(.on) .pay-chk{visibility:hidden}
.pay-ico.mp{background:linear-gradient(135deg,#7c3aed,#009ee3);font-size:15px}
.pay-mp{background:#fff;border-radius:8px;padding:12px 14px;margin:0 0 12px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.pay-mp ol{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.55;color:#374151}
.pay-logos{display:flex;flex-wrap:wrap;gap:6px}.pay-logos span{font-size:11.5px;font-weight:700;border:1px solid #e5e7eb;border-radius:5px;padding:3px 8px;color:#1f2937}
.pay-logos .pl-yape{background:#742284;color:#fff;border-color:#742284}
.pay-done{text-align:center}.pay-done .pd-ok{width:56px;height:56px;border-radius:50%;background:#16a34a;color:#fff;font-size:28px;display:grid;place-items:center;margin:0 auto 10px}
.pay-opt div{flex:1;display:flex;flex-direction:column}.pay-opt small{color:#6b7280;font-size:12.5px}
.pay-ico{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#00c4b4,#00a3e0);color:#fff;font-weight:800;font-size:13px;display:grid;place-items:center;letter-spacing:.3px}
.pay-chk{color:#00a99d;font-weight:700}
.pay-qr{display:flex;gap:16px;align-items:center;background:#fff;border-radius:8px;padding:14px;margin:12px 0;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.pay-qr img{width:190px;height:190px;flex:none;image-rendering:pixelated;border:1px solid #e5e7eb;border-radius:6px}
.pay-qr ol{margin:0;padding-left:18px;font-size:13px;line-height:1.55;color:#374151}
.pay-f{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pay-r{display:flex;flex-direction:column;gap:14px}
.pay-brand{display:flex;align-items:center;gap:10px;font-size:16px}.pay-brand img{width:42px;height:42px;border-radius:50%;background:#fff;padding:5px;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.pay-det{background:#f6f6f6;border:1px solid #e3e3e3;border-radius:6px;padding:18px 20px;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.pay-det>b{display:block;font-size:16px;margin-bottom:14px}
.pay-row{display:flex;justify-content:space-between;gap:12px;font-size:14px;color:#222;padding:6px 0}
.pay-row small{display:block;color:#6b7280;font-size:12px;margin-top:3px}
.pay-amt{white-space:nowrap}.pay-amt sup{font-size:10px}
.pay-row.tot{border-top:1px solid #ddd;margin-top:8px;padding-top:10px;font-weight:700}
@media (max-width:760px){.pay{grid-template-columns:1fr}.pay-qr{flex-direction:column}.pay-f{grid-template-columns:1fr}}

/* ---------------- Especificaciones técnicas: tema claro integrado al programa ---------------- */
.wd{--wd-bg:#ffffff;--wd-rb:#f7f9fc;--wd-tx:#1b2430;--wd-mu:#5b6573;--wd-hv:#eaf1fb;--wd-on:#d6e6fa;--wd-ln:#dfe5ee;--wd-canvas:#e9edf2;background:#fff;color:var(--wd-tx)}
.wd .wd-rtabs{background:#fff;border-bottom:1px solid var(--wd-ln)}
.wd .wd-rtabs>button{color:var(--wd-tx)}
.wd .wd-rtabs>button.on{border-bottom-color:#e8571e;color:#c94612}
.wd .wd-rtabs .wd-act{border-color:#cdd6e2;background:#fff;color:#1b2430}
.wd .wd-rtabs .wd-act:hover{background:var(--wd-hv)}
.wd .wd-ribbon{background:var(--wd-rb);border-top:0;border-bottom:1px solid var(--wd-ln)}
.wd .wd-b,.wd .wd-big{color:var(--wd-tx)}
.wd .wd-b:hover,.wd .wd-big:hover,.wd .wd-sty:hover{background:var(--wd-hv);border-color:#b9cdee}
.wd .wd-b.on{background:var(--wd-on);border-color:#a9c8f0}
.wd select{background:#fff;color:var(--wd-tx);border-color:#c7d0dc}
.wd .wd-sty{border-color:#d5dde8}
.wd .wd-nav{background:#f7f9fc;border-right:1px solid var(--wd-ln)}
.wd .wd-navh{color:var(--wd-tx)}.wd .wd-navh button{color:var(--wd-mu)}
.wd .wd-search{background:#fff;border-color:#c7d0dc}.wd .wd-search input{color:var(--wd-tx)}
.wd .wd-ntabs{border-bottom-color:var(--wd-ln)}.wd .wd-ntabs button{color:var(--wd-tx)}.wd .wd-ntabs button.on{border-bottom-color:#e8571e}
.wd .wd-ni.on{background:#dbe8fd;border-left-color:#2f74d0}.wd .wd-ni.em{color:#8a93a0}
.wd .wd-res{border-bottom-color:var(--wd-ln)}
.wd .wd-hruler{background:var(--wd-canvas);border-bottom-color:#d5dbe3}
.wd .wd-tk{background:#777}.wd .wd-tn{color:#333}
.wd .wd-brk span{color:#5b6573}
.wd .wd-page{box-shadow:0 1px 6px rgba(15,23,42,.18)}
.wd .wd-status{background:#f7f9fc;border-top:1px solid var(--wd-ln);color:var(--wd-mu)}
.wd .wd-status button{color:var(--wd-tx)}
.wd .wd-status input[type=range]{accent-color:#2f74d0}
.wd .wd-chk{color:var(--wd-tx)}
.wd .wd-thumb div{border:1px solid #d5dbe3}
#budget-tools .bfind{padding-left:0}#budget-tools .bfind .find{width:230px}

/* ---------------- Animación del panel de incidencias ---------------- */
.inc-sweep{stroke-dashoffset:0}
.inc-anim .inc-sweep{animation:incSweep 1s cubic-bezier(.22,.8,.3,1) both}
@keyframes incSweep{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
.inc-anim .inc-donut{animation:incPop .6s ease-out both}
@keyframes incPop{from{transform:scale(.82) rotate(-25deg);opacity:0}to{transform:none;opacity:1}}
.inc-anim .inc-ctr{animation:incFade .5s .55s ease-out both}
@keyframes incFade{from{opacity:0}to{opacity:1}}
.inc-anim .il-row,.inc-anim .ib-row{animation:incRow .45s ease-out both;animation-delay:calc(var(--k,0) * 80ms + 150ms)}
@keyframes incRow{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
.ib-t i{transform-origin:left center}
.inc-anim .ib-t i{animation:incGrow .9s cubic-bezier(.22,.8,.3,1) both;animation-delay:calc(var(--k,0) * 80ms + 200ms)}
@keyframes incGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.inc-anim .inc-tbl tbody tr{animation:incRow .4s ease-out both}
.inc-anim .inc-tbl tbody tr:nth-child(2){animation-delay:.08s}.inc-anim .inc-tbl tbody tr:nth-child(3){animation-delay:.16s}.inc-anim .inc-tbl tbody tr:nth-child(4){animation-delay:.24s}
.inc-anim .inc-tbl tbody tr:nth-child(5){animation-delay:.32s}.inc-anim .inc-tbl tbody tr:nth-child(6){animation-delay:.4s}.inc-anim .inc-tbl tbody tr:nth-child(n+7){animation-delay:.48s}
.inc-card{transition:box-shadow .25s}.inc-card:hover{box-shadow:0 4px 14px rgba(15,23,42,.12)}
.inc-donut path{transition:transform .2s;transform-origin:center;transform-box:fill-box}
.inc-donut path:hover{transform:scale(1.04)}
@media (prefers-reduced-motion:reduce){.inc-anim *{animation:none!important}}

/* ---------------- Consolidado de partida ---------------- */
.cs{display:flex;flex-direction:column;gap:10px;padding:10px 12px 14px;background:#f3f6fb;min-height:100%;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif}
.cs-hd{display:flex;gap:10px;align-items:center}.cs-hd>svg{width:30px;height:30px;flex:none}.cs-hd h3{margin:0;font-size:20px;color:#14233d}.cs-hd .muted{font-size:12.5px;margin-top:2px}
.cs-tools{display:flex;flex-wrap:nowrap;gap:2px;align-items:stretch;background:#fff;border:1px solid #d7e2f0;border-radius:6px;padding:4px}
.cs-b{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:6px 3px;text-align:center;line-height:1.15;border:1px solid transparent;border-radius:4px;background:none;cursor:pointer;font-size:11.5px;color:#1b2430}
.cs-b svg{flex:none;width:22px;height:22px;min-width:22px;min-height:22px;fill:none;stroke:#1e63c4;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.cs-b:hover{background:#eaf1fb;border-color:#c9dbf3}
.cs-sep{width:1px;background:#d7e2f0;margin:4px 3px;flex:none}
.cs-card{background:#fff;border:1px solid #d7e2f0;border-radius:6px;padding:9px 12px}
.cs-card h4{margin:0 0 8px;font-size:13px;color:#14233d}
.cs-dat{display:grid;grid-template-columns:auto 1fr auto 110px auto 150px;gap:6px 8px;align-items:center;font-size:12.5px}
.cs-dat label{font-weight:700;color:#14233d}.cs-dat .cs-sl{padding-left:10px;border-left:1px solid #d7e2f0}
.cs-f{display:block;border:1px solid #cdd8e6;border-radius:4px;background:#fff;padding:4px 8px;min-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-f.hl{background:#e8f0fb}.cs-f.r{text-align:right;background:#f3f5f8}.cs-f.b{font-weight:700}
.cs-tw{background:#fff;border:1px solid #d7e2f0;border-radius:6px;max-height:330px;overflow:auto}
.grid.cs-t{font-size:8pt}.grid.cs-t th{background:#e8f0f9;color:#1b2430;font-weight:700;font-size:10pt;text-align:center;border-right:1px solid #c5d8ee;position:sticky;top:0}
.grid.cs-t td{font-size:8pt;border-right:1px solid #e3ebf5;border-bottom:1px solid #e3ebf5;padding:4px 6px;vertical-align:middle}
.grid.cs-t tr.cs-cat td{background:#f2f7fd;font-size:8.5pt}.grid.cs-t td.cs-n{color:#4b5563}
.cs-tog{cursor:pointer;color:#4b5563;display:inline-block;width:12px}
.cs-bot{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr) minmax(0,1fr);gap:10px}.cs-bot>.cs-card{min-width:0}
.cs-rt{width:100%;border-collapse:collapse;font-size:11.5px}.cs-bot>.cs-card:first-child{overflow-x:auto}.cs-rt th{background:#e8f0f9;padding:4px 3px;border:1px solid #d7e2f0;font-size:12px}
.cs-rt td{padding:4px 3px;white-space:nowrap;border:1px solid #e3ebf5}.cs-rt td i{display:block;width:14px;height:14px;border-radius:2px}.cs-rt .num{text-align:right;font-family:Arial}
.cs-pie{display:flex;flex-direction:column;align-items:center}.cs-pies{display:block}
.cs-pie path{transition:transform .2s;transform-origin:80px 80px}.cs-pie path:hover{transform:scale(1.04)}
.cs-tot{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 8px;align-items:center;font-size:12.5px}
.cs-tot .cs-cdl{background:#dbe8fa;border:1px solid #9dbbe0;border-radius:4px;padding:5px 8px;font-weight:700;color:#14233d}
.cs-tot .cs-cd{background:#dbe8fa;border-color:#9dbbe0;color:#14233d}
.cs-dat{grid-template-columns:auto minmax(0,1.4fr) auto minmax(0,1fr) auto minmax(0,1fr)}

@media (max-width:1250px){.cs-bot{grid-template-columns:1fr 1fr}}
.cs-tot .cs-f{padding:4px 6px;font-size:12px;text-overflow:clip}.cs-tot label{white-space:nowrap}.cs-tot .cs-cdl{padding:5px 6px}

/* ---------- acceso (tarjeta centrada) ---------- */
.lg2{min-height:100%;display:flex;align-items:center;justify-content:center;background:#f1f3f5;padding:24px 16px;box-sizing:border-box;overflow:auto}
.lg2-card{width:100%;max-width:480px;background:#fff;border:1px solid #d9dde3;border-radius:12px;padding:30px 50px 34px;box-shadow:0 1px 3px rgba(0,0,0,.04);box-sizing:border-box}
.lg2-brand{display:flex;justify-content:center;margin-bottom:14px}.lg2-brand img{height:56px;max-width:100%;object-fit:contain}
.lg2-card h1{text-align:center;font-size:28px;font-weight:500;margin:6px 0 18px;color:#111}
.lg2-sub{text-align:center;color:var(--ink-2);margin:-8px 0 16px;font-size:13px}
.lg2-fld{display:block;margin-bottom:16px}.lg2-fld>span{display:block;font-size:15px;color:#111;margin-bottom:4px}
.lg2-fld input{width:100%;height:54px;border:1px solid #cfd4da;border-radius:6px;padding:0 12px;font-size:18px;box-sizing:border-box;background:#fff}
.lg2-fld input:focus{outline:none;border-color:#ff4500;box-shadow:0 0 0 3px rgba(255,69,0,.12)}
.lg2-links{display:flex;flex-direction:column;align-items:flex-end;gap:12px;margin:2px 0 12px}
.lg2-links a{color:#0b2bd8;font-weight:700;font-size:14.5px;text-decoration:none}.lg2-links a:hover{text-decoration:underline}
.lg2-btn{width:100%;height:56px;border:0;border-radius:6px;background:#ff4500;color:#fff;font-size:19px;letter-spacing:.3px;cursor:pointer}
.lg2-btn:hover{background:#e63e00}.lg2-btn:disabled{opacity:.6;cursor:default}
.lg2-foot{text-align:center;color:#8a929c;font-size:12px;margin:16px 0 0}
@media (max-width:520px){.lg2-card{padding:24px 20px}.lg2-card h1{font-size:24px}}
/* ---------- aviso de límite (cuenta gratuita) ---------- */
.limit-bar{background:#ffff9e;border:1px solid #d8d86a;color:#111;font-weight:700;text-align:center;padding:6px 14px;font-size:14px;line-height:1.45;margin:0 auto 14px;max-width:470px;border-radius:2px}
.limit-bar a{color:#0b2bd8;text-decoration:underline;cursor:pointer}

/* ---------- galería Nuevo / Plantillas ---------- */
.tpl-view{background:#f1f3f4;overflow:auto;z-index:40}
.tpl-top{height:56px;display:flex;align-items:center;gap:10px;padding:0 16px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}
.tpl-top .spacer{flex:1}.tpl-logo{height:32px}
.tpl-body{padding:18px 44px 40px;max-width:1500px;box-sizing:border-box}
.tpl-body h2{font-size:30px;font-weight:400;color:#3b3f45;margin:6px 0 18px}
.tpl-body hr{border:0;border-top:1px solid #cfd3d7;margin:26px 0 18px}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:24px 26px}
.tpl-card{background:#fff;border:0;border-radius:2px;box-shadow:0 1px 4px rgba(0,0,0,.14);padding:12px 12px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:12px;font-size:13.5px;color:#222;transition:box-shadow .15s,transform .15s}
.tpl-card:hover{box-shadow:0 6px 16px rgba(0,0,0,.18);transform:translateY(-2px)}
.tpl-img{aspect-ratio:16/9;overflow:hidden;background:#e9eef2;border:1px solid #eef0f2}.tpl-img svg{width:100%;height:100%;display:block}
.tpl-img.blank{display:flex;align-items:center;justify-content:center;background:#fff}.tpl-img.blank img{width:46%;max-height:70%;object-fit:contain}
.tpl-img.blank svg{width:40%;height:auto;fill:none;stroke:#e8571e;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tpl-card span{text-align:center;text-transform:uppercase;letter-spacing:.2px}
.tpl-limit{margin:-6px auto 6px}
@media (max-width:640px){.tpl-body{padding:14px 16px 30px}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}}
.usr-t td,.usr-t th{vertical-align:middle;padding:6px 8px}.usr-t td.r{text-align:right;white-space:nowrap}.tag.ok{background:#e3f6e8;color:#137333;border-color:#b7e1c1}

/* ---------- página pública (landing) ---------- */
#v-landing{overflow:auto;background:#fff}
.ld{min-height:100%;font-size:15px;color:#141a23;font-family:"Segoe UI",Inter,system-ui,sans-serif}
.ld-top{position:sticky;top:0;z-index:5;height:68px;display:flex;align-items:center;gap:16px;padding:0 4.3%;background:#fff;box-shadow:0 1px 0 #e8ebef}
.ld-brand img{height:44px;display:block}
.ld-nav{margin-left:auto;display:flex;align-items:center;gap:34px}
.ld-nav a{color:#141a23;font-weight:500;font-size:15.5px;text-decoration:none}.ld-nav a:hover{color:#f05a1a}
.ld-btn{border:0;cursor:pointer;font-size:16px;padding:11px 26px;border-radius:7px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:filter .15s,transform .15s}
.ld-btn:hover{filter:brightness(1.05);transform:translateY(-1px)}
.ld-out{background:#fff;color:#f05a1a;border:1.5px solid #f05a1a}
.ld-fill{background:linear-gradient(180deg,#ff7a2f,#f05a1a);color:#fff;box-shadow:0 4px 12px rgba(240,90,26,.3)}
.ld-menu{display:none;margin-left:auto;background:none;border:0;font-size:24px;cursor:pointer}
.ld-hero{position:relative;overflow:hidden;background:#0a2a63;color:#fff}
.ld-city{position:absolute;right:0;top:0;height:100%;width:60%}
.ld-hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#0b2a66 0%,#0b2d6c 42%,rgba(13,45,108,.86) 55%,rgba(16,48,110,.35) 78%,rgba(16,48,110,.1) 100%)}
.ld-hero-in{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,47%) minmax(0,53%);align-items:center;gap:34px;padding:40px 4.3% 0 4.3%;min-height:500px}
.ld-txt{padding-bottom:40px}
.ld-txt h1{font-size:44px;line-height:1.16;font-weight:700;margin:0 0 18px;letter-spacing:-.3px}
.ld-txt p{font-size:20px;line-height:1.55;color:#dbe6ff;margin:0 0 30px}
.ld-ctas{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:38px}
.ld-cta{background:linear-gradient(180deg,#ff7a2f,#f05a1a);color:#fff;font-size:20px;padding:16px 32px;box-shadow:0 6px 16px rgba(240,90,26,.35)}.ld-cta span{font-size:26px;line-height:0;margin-left:6px}
.ld-demo{background:transparent;color:#fff;border:1.5px solid #fff;font-size:20px;padding:15px 36px}.ld-demo svg{width:20px;height:20px;fill:#fff}
.ld-trust{display:flex;gap:16px;flex-wrap:nowrap}
.ld-trust>div{display:flex;align-items:center;gap:10px;font-size:12.5px;line-height:1.35;color:#d5e1fa;padding-right:16px;border-right:1px solid rgba(255,255,255,.18)}.ld-trust>div:last-child{border-right:0}
.ld-trust svg{width:28px;height:28px;fill:none;stroke:#fff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ld-trust b{display:block;color:#fff;font-size:14px;font-weight:600;margin-bottom:2px}
.ld-laptop{align-self:end;position:relative;margin:0 1.5%}
.ld-screen{background:#1d2129;border-radius:16px 16px 0 0;padding:14px 14px 0;box-shadow:0 20px 50px rgba(0,0,0,.45);border:1px solid #3a404b}
.ld-slides{position:relative;aspect-ratio:1400/661;overflow:hidden;background:#fff;border-radius:4px 4px 0 0}
.ld-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:left top;opacity:0;transition:opacity .7s}.ld-slide.on{opacity:1}
.ld-base{height:14px;background:linear-gradient(180deg,#c9ced6,#8e949e);border-radius:0 0 12px 12px;margin:0 -3%}
.ld-dots{position:absolute;left:50%;transform:translateX(-50%);bottom:-26px;display:flex;gap:8px}.ld-dots i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.45);cursor:pointer}.ld-dots i.on{background:#fff}
.ld-sec{padding:40px 4.3% 46px;text-align:center}.ld-alt{background:#fafbfc;padding-top:24px}
.ld-sec h2{font-size:34px;font-weight:700;margin:0 0 6px;color:#141a23;letter-spacing:-.2px}
.ld-lead{font-size:18px;color:#6b7280;margin:0 0 26px}
.ld-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.ld-card{display:flex;gap:24px;align-items:flex-start;text-align:left;background:#fff;border:1px solid #eef0f3;border-radius:12px;padding:22px 24px;box-shadow:0 4px 18px rgba(16,24,40,.06)}
.ld-card h3{font-size:19px;margin:6px 0 8px;font-weight:600}.ld-card p{margin:0;font-size:16px;line-height:1.5;color:#4b5563}
.ld-ic{flex:none;width:86px;height:86px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.ld-ic svg{width:42px;height:42px;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ld-ic.o{background:#fde9df}.ld-ic.o svg{stroke:#f05a1a}.ld-ic.b{background:#e3ecfb}.ld-ic.b svg{stroke:#1f5fd1}.ld-ic.g{background:#dcf5e6}.ld-ic.g svg{stroke:#18a058}
.ld-ic.p{background:#efe4fb}.ld-ic.p svg{stroke:#8a3fd1}.ld-ic.c{background:#dff4fb}.ld-ic.c svg{stroke:#1aa7d6}
.ld-mods{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.ld-mod{display:flex;gap:16px;align-items:center;text-align:left;background:#fff;border:1px solid #eef0f3;border-radius:10px;padding:14px 16px;box-shadow:0 3px 12px rgba(16,24,40,.05)}
.ld-mod .ld-ic{width:62px;height:62px}.ld-mod .ld-ic svg{width:30px;height:30px}
.ld-mod b{display:block;font-size:16px;margin-bottom:4px}.ld-mod span{font-size:13px;color:#6b7280;line-height:1.45}
.ld-plans{display:flex;gap:24px;justify-content:center;flex-wrap:wrap}
.ld-plan{position:relative;width:330px;border:1px solid #e6e9ee;border-radius:14px;padding:26px 26px 28px;text-align:left;display:flex;flex-direction:column;box-shadow:0 4px 18px rgba(16,24,40,.05)}
.ld-plan.best{border:2px solid #f05a1a;box-shadow:0 10px 28px rgba(240,90,26,.16)}
.ld-badge{position:absolute;top:-12px;right:20px;background:#f05a1a;color:#fff;font-size:12px;padding:3px 10px;border-radius:12px}
.ld-plan h3{margin:0 0 8px;font-size:20px}.ld-price b{font-size:42px;color:#f05a1a}.ld-price small{display:block;color:#6b7280;margin-top:2px}
.ld-plan ul{padding-left:20px;line-height:1.9;flex:1;margin:16px 0 20px}.ld-plan .ld-btn{width:100%}
.ld-foot{background:#0b2a66;color:#fff;padding:30px 4.3% 34px;padding-right:max(4.3%,300px);display:flex;align-items:center;gap:40px;flex-wrap:wrap}
.ld-foot img{height:42px;background:#fff;padding:6px 10px;border-radius:6px}
.ld-foot div{display:flex;flex-direction:column;gap:4px}.ld-foot a{color:#ffc58f;text-decoration:none}.ld-foot .ld-copy{display:block;color:#a9b9d8;font-size:13px}
.wa-float{position:fixed;right:22px;bottom:22px;z-index:30;display:flex;align-items:center;text-decoration:none}
.wa-num{background:#1f9d3a;color:#fff;font-size:18px;padding:8px 26px 8px 14px;border-radius:4px;margin-right:-16px;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.wa-ico{width:62px;height:62px;border-radius:50%;background:#25d366;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(0,0,0,.3);transition:transform .15s}.wa-ico svg{width:36px;height:36px}
.wa-float:hover .wa-ico{transform:scale(1.06)}
.ld-lb{position:fixed;inset:0;z-index:60;background:rgba(5,12,28,.88);display:flex;align-items:center;justify-content:center;padding:30px}
.ld-lb img{max-width:min(1400px,96vw);max-height:84vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.6);background:#fff}
.ld-lb button{position:absolute;background:none;border:0;color:#fff;font-size:44px;cursor:pointer}.ld-lb .x{top:14px;right:22px;font-size:34px}.ld-lb .p{left:14px}.ld-lb .n{right:14px}
.ld-lb .cap{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:#dbe6ff;font-size:15px}
@media (max-width:1250px){.ld-mods{grid-template-columns:repeat(3,1fr)}.ld-txt h1{font-size:36px}.ld-trust{flex-wrap:wrap}}
@media (max-width:1000px){.ld-hero-in{grid-template-columns:1fr;padding:34px 5% 40px}.ld-laptop{margin:10px 0 20px}.ld-city{width:100%;opacity:.35}.ld-3{grid-template-columns:1fr}.ld-mods{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.ld-foot{padding-right:4.3%;padding-bottom:100px}.ld-nav{display:none;position:absolute;top:68px;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;padding:12px 5%;gap:12px;box-shadow:0 6px 12px rgba(0,0,0,.08)}.ld-nav.open{display:flex}.ld-menu{display:block}.wa-num{display:none}
  .ld-txt h1{font-size:30px}.ld-txt p{font-size:17px}.ld-cta,.ld-demo{font-size:17px;padding:13px 22px}.ld-mods{grid-template-columns:1fr}.ld-trust>div{border-right:0;padding-right:0}.ld-card{flex-direction:column;gap:12px}}
.lg2-back{display:inline-block;color:#6b7280;font-size:13px;text-decoration:none;margin:-10px 0 4px}.lg2-back:hover{color:#ff4500}
@media (max-width:980px){.ld-slide{grid-template-columns:1fr}.ld-shot{max-height:300px}.ld-txt h1{font-size:28px}.ld-3,.ld-grid{grid-template-columns:1fr}.ld-slides{min-height:0}}
@media (max-width:820px){.ld-foot{padding-right:7%;padding-bottom:100px}.ld-nav{display:none;position:absolute;top:64px;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;padding:12px 7%;gap:12px;box-shadow:0 6px 12px rgba(0,0,0,.08)}.ld-nav.open{display:flex}.ld-menu{display:block}.wa-num{display:none}}

/* pestaña Archivo */
#file-ribbon{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
#file-ribbon[hidden]{display:none}
.fsrb{width:96px}
.fsplit{display:flex;flex-direction:column;align-items:center;border:1px solid transparent;border-radius:4px}
.fsplit:hover{background:#fff;border-color:#b9d1f0}
.fsplit .srb{border:0;min-height:80px;background:transparent}
.fcaret{border:0;background:transparent;cursor:pointer;font-size:15px;line-height:1;padding:0 0 4px;color:#2a3442;width:100%}
.fcaret:hover{color:#1e63c4}

/* herramientas del Gantt dentro de la cinta PROGRAMACIÓN */
#prog-ribbon:not([hidden]){display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
.srgantt{flex:1 1 640px;min-width:0}
.srgantt[hidden]{display:none}
.srgantt .gtools-rb{background:transparent;border:0;padding:0 2px;flex:1;align-content:flex-start;gap:4px 6px}
.srgantt .gtools-rb .grp{border-right:1px solid #c9d6e8;padding-right:6px}
.srgantt .gtools-rb .grp.grow{border-right:0}
.srgantt .gtools-rb .tb:hover{background:#fff}

/* ---------------- Reportes (dashboard estilo Power BI + Curva S) */
#t-reports{overflow:hidden}
.rp{display:flex;flex-direction:column;height:100%;min-height:0}
.rp-bar{flex:none;display:flex;align-items:center;gap:4px;padding:6px 10px;background:var(--rib-bg);border-bottom:1px solid var(--rib-line)}
.rp-tab{background:transparent;border:1px solid transparent;border-radius:4px;min-width:88px;padding:5px 8px;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;font-size:12px;line-height:1.2;color:#2a3442}
.rp-tab svg{width:26px;height:26px;fill:none;stroke:#1e63c4;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.rp-tab:hover{background:#fff;border-color:#b9d1f0}.rp-tab.on{background:#fff;border-color:#2f74d0;box-shadow:inset 0 -3px 0 #2f74d0}
.rp-sep{width:1px;align-self:stretch;background:#c9d6e8;margin:0 6px}
.rp-name{margin-left:auto;font-weight:600;color:#334155;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-body{flex:1;min-height:0;overflow:auto;background:#EAEAEA}
.rp-curve{background:#fff;margin:12px;padding:14px;border-radius:4px}.rp-ctot{text-align:right;margin-bottom:8px}
.db{padding:14px 16px 20px;font-family:"Segoe UI",Arial,sans-serif;color:#252423}
.db-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.db-title{font-size:22px;font-weight:600}.db-sub{color:#605E5C;font-size:12.5px;max-width:900px}
.db-slicer{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.db-slicer label{font-size:12px;color:#605E5C;display:flex;gap:6px;align-items:center}
.db-slicer select{min-width:240px;max-width:380px;padding:5px 6px;border:1px solid #C8C6C4;border-radius:2px;background:#fff}
.db-chip{background:#DEECF9;border:1px solid #118DFF;border-radius:12px;padding:2px 4px 2px 10px;font-size:12px;display:inline-flex;align-items:center;gap:4px}
.db-chip button{border:0;background:transparent;cursor:pointer;font-size:12px;color:#12239E}
.db-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:12px}
.db-card{background:#fff;border-radius:4px;padding:10px 14px;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.db-k{font-size:12px;color:#605E5C;border-left:3px solid;padding-left:7px}
.db-v{font-size:25px;font-weight:600;margin:6px 0 2px;white-space:nowrap}.db-s{font-size:11px;color:#605E5C;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px}
.db-panel{background:#fff;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.12);padding:10px 14px;min-width:0}
.db-panel.w4{grid-column:span 4}.db-panel.w5{grid-column:span 5}.db-panel.w7{grid-column:span 7}.db-panel.w12{grid-column:span 12}
.db-pt{font-size:13.5px;font-weight:600;margin-bottom:8px}.db-hint{font-weight:400;color:#8A8886;font-size:11px;margin-left:6px}
.db-donut{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.db-svg{display:block;overflow:visible}
.db-leg{flex:1;min-width:150px;display:flex;flex-direction:column;gap:6px;font-size:12px}
.db-leg>div{display:grid;grid-template-columns:12px 1fr auto;column-gap:7px;align-items:center;cursor:pointer;padding:2px 3px;border-radius:3px}
.db-leg>div:hover{background:#F3F2F1}.db-leg>div.dim{opacity:.35}
.db-leg i{width:11px;height:11px;border-radius:2px}.db-leg em{grid-column:2/4;font-style:normal;color:#605E5C;font-size:11px}
.db-hbars{display:flex;flex-direction:column;gap:5px;max-height:300px;overflow:auto}
.db-hb{display:grid;grid-template-columns:minmax(90px,38%) 1fr 64px;gap:8px;align-items:center;font-size:11.5px;cursor:default;padding:1px 2px;border-radius:3px}
.db-hb[data-fesp]{cursor:pointer}.db-hb[data-fesp]:hover{background:#F3F2F1}.db-hb.dim{opacity:.35}.db-hb.sel{background:#DEECF9}
.db-hb .l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.db-hb .t{background:#F3F2F1;height:14px;border-radius:2px;overflow:hidden}.db-hb .t i{display:block;height:100%}
.db-hb .v{text-align:right;font-variant-numeric:tabular-nums}
.db-tbl{width:100%;border-collapse:collapse;font-size:12px}.db-tbl th{text-align:left;color:#605E5C;font-weight:600;border-bottom:1px solid #C8C6C4;padding:6px}
.db-tbl td{padding:5px 6px;border-bottom:1px solid #EDEBE9}.db-tbl .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.db-tbl .c{text-align:center}
.db-cell{position:relative;padding:2px 4px}.db-cell i{position:absolute;left:0;top:0;bottom:0;background:#DEECF9;border-radius:2px}.db-cell span{position:relative}
@media (max-width:1100px){.db-panel.w4,.db-panel.w5,.db-panel.w7{grid-column:span 12}}


.ifc-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;align-items:start}
.ifc-grid .as-form .fld{margin-bottom:8px}
@media (max-width:760px){.ifc-grid{grid-template-columns:1fr}}

/* Consolidado de partidas compacto */
.cs{gap:6px;padding:6px 8px 8px}
.cs-hd h3{font-size:14px}.cs-hd .muted{font-size:11.5px;margin-top:0}.cs-hd>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.cs-card{padding:6px 8px}.cs-card h4{margin:0 0 4px;font-size:12px}
.cs-dat{gap:3px 6px;font-size:11.5px}.cs-dat .muted{font-size:11px}
.cs-f{padding:2px 6px;min-height:14px}
.cs-card .muted.small{font-size:11px;margin-top:3px!important}
.cs-tw{max-height:none;flex:1 1 auto;min-height:160px}
.grid.cs-t th{font-size:8.5pt;padding:3px 4px}
.grid.cs-t td{padding:2px 5px;line-height:1.25}
.cs-t col:nth-child(1){width:40px!important}.cs-t col:nth-child(2){width:78px!important}.cs-t col:nth-child(4){width:38px!important}
.cs-t col:nth-child(5){width:68px!important}.cs-t col:nth-child(6){width:56px!important}.cs-t col:nth-child(7){width:68px!important}.cs-t col:nth-child(8){width:50px!important}
.cs-bot{grid-template-columns:minmax(0,1.2fr) minmax(0,.7fr) minmax(0,1fr);gap:6px}
.cs-rt{font-size:10.5px}.cs-rt th{font-size:10.5px;padding:2px 3px}.cs-rt td{padding:2px 3px}.cs-rt td i{width:10px;height:10px}
.cs-pie svg{width:110px;height:110px}
.cs-tot{gap:3px 6px;font-size:11px}.cs-tot .cs-f{padding:2px 5px;font-size:11px}.cs-tot .cs-cdl{padding:3px 5px}
@media (max-width:1250px){.cs-bot{grid-template-columns:minmax(0,1.2fr) minmax(0,.7fr) minmax(0,1fr)}}
.cs-rt td.num,.cs-rt .num{font-size:10.5px}

/* pie del presupuesto: ocultar / mostrar */
.footer-pie{position:relative}
.pie-tog{position:absolute;top:4px;right:6px;z-index:2;width:24px;height:20px;border:1px solid #b9c7da;border-radius:4px;background:#fff;color:#1e63c4;font-size:11px;line-height:1;cursor:pointer;padding:0}
.pie-tog:hover{background:#e8f0fb;border-color:#1e63c4}
.footer-pie.pie-min{padding:4px 10px}
.pie-mini{display:flex;align-items:center;gap:12px;width:100%;font-size:13px;color:#14233d;padding-right:30px}
.pie-mini span{font-weight:700;letter-spacing:.3px}.pie-mini b{font-size:14px}
.pie-mini .pie-tog{top:50%;transform:translateY(-50%)}
.footer-pie:not(.pie-min){padding-right:38px}

/* ===== Especificaciones técnicas tipo Word (panel derecho) ===== */
.sw{display:flex;flex-direction:column;height:100%;min-height:0;background:#dfe6ef;font-family:"Segoe UI",Arial,sans-serif}
.sw-head{display:flex;gap:10px;align-items:flex-start;background:linear-gradient(#f7f9fc,#e6edf6);border-bottom:1px solid #b9c7da;padding:6px 10px 6px}
.sw-hl{flex:1;min-width:0}.sw-hl h3{margin:0 0 3px;font-size:17px;font-weight:400;color:#1b2430}
.sw-meta{display:flex;gap:10px;font-size:11.5px;line-height:1.5;min-width:0}.sw-meta .k{flex:none;width:76px;color:#5b6573}.sw-meta .k.code{color:#3a4250;font-size:12.5px}
.sw-meta .v{color:#3a4250;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sw-meta .v.d{color:#14233d}
.sw-exp{display:flex;gap:4px;flex:none}.sw-exp button{border:1px solid transparent;background:transparent;border-radius:4px;padding:2px;cursor:pointer}.sw-exp button:hover{background:#fff;border-color:#b9d1f0}
.sw-big{width:38px;height:38px;display:block}
.sw-tabs{display:flex;align-items:flex-end;gap:1px;background:#dfe7f2;padding:3px 6px 0;border-bottom:1px solid #b9c7da}
.sw-tabs [data-swt]{border:1px solid transparent;border-bottom:0;background:transparent;padding:4px 11px;font-size:12px;color:#1b2430;cursor:pointer;border-radius:3px 3px 0 0;white-space:nowrap}
.sw-tabs [data-swt]:hover{background:#eef3f9}.sw-tabs [data-swt].on{background:#f7f9fc;border-color:#b9c7da;margin-bottom:-1px;padding-bottom:5px}
.sw-tabs [data-swt].f{color:#1e63c4}
.sw-gr{flex:1}.sw-tabs .sw-b{margin-bottom:2px}
.sw-rib{display:flex;align-items:stretch;gap:0;background:#f7f9fc;border-bottom:1px solid #b9c7da;padding:4px 4px 0;overflow-x:auto;overflow-y:hidden;flex:none;scrollbar-width:thin}
.sw-g{display:flex;flex-direction:column;border-right:1px solid #d3dce8;padding:0 5px;flex:none}
.sw-gb{display:flex;align-items:flex-start;gap:2px;flex:1}.sw-gn{text-align:center;font-size:10.5px;color:#5b6573;padding:2px 0 3px;white-space:nowrap}
.sw-col{display:flex;flex-direction:column;gap:1px}.sw-rows{display:flex;flex-direction:column;gap:3px}.sw-row{display:flex;align-items:center;gap:1px}
.sw-b{display:inline-flex;align-items:center;justify-content:center;gap:3px;min-width:24px;height:24px;padding:0 3px;border:1px solid transparent;border-radius:3px;background:transparent;cursor:pointer;color:#1b2430;font-size:12px;line-height:1}
.sw-b svg{width:17px;height:17px;fill:none;stroke:#2a3442;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
.sw-b:hover{background:#fdf1c6;border-color:#e8c766}.sw-b.on{background:#fbe39a;border-color:#d9a92c}
.sw-b.big{flex-direction:column;height:auto;min-height:58px;width:auto;min-width:50px;padding:3px 5px;font-size:11px;line-height:1.15;text-align:center;justify-content:flex-start}
.sw-b.big svg{width:28px;height:28px}.sw-b.big small{color:#5b6573;font-size:10px}
.sw-t{font-family:"Times New Roman",serif;font-size:14px;min-width:24px}.sw-t b,.sw-t u,.sw-t s{font-family:Arial,sans-serif;font-size:13px}.sw-t sup,.sw-t sub{font-size:8px}
.sw-dd{min-width:12px;padding:0 1px;font-size:9px;font-family:Arial}.sw-clr span{font-family:Arial;font-size:13px;line-height:15px;padding:0 2px}
.sw-font,.sw-size{height:22px;border:1px solid #b9c7da;border-radius:2px;font-size:12px;background:#fff;margin-right:2px}.sw-font{width:128px}.sw-size{width:52px}
.sw-rul{flex:none;overflow:hidden;background:#dfe6ef;padding:3px 14px 2px;border-bottom:1px solid #c9d3e0}
.sw-rw{margin:0 auto;box-shadow:0 0 0 1px #aab6c6}.sw-rw svg{display:block}
.sw-cv{flex:1;min-height:0;overflow:auto;padding:14px;background:#dfe6ef}
.sw-pg{margin:0 auto;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25);box-sizing:border-box;font:11pt/1.3 Arial,sans-serif;color:#000}
.sw-tt{font-size:10pt;margin:0 0 4px;user-select:none}.sw-tt span{font-weight:400;font-size:9.5pt}
.sw-ed{outline:none;min-height:300px}.sw-ed:empty:before{content:attr(data-ph);color:#9aa5b4}
.sw-ed p{margin:0}.sw-ed h2{font-size:14pt;margin:6px 0 4px}.sw-ed h3{font-size:12pt;margin:6px 0 4px}.sw-ed h4{font-size:11pt;margin:4px 0}
.sw-ed table{border-collapse:collapse}.sw-ed td,.sw-ed th{border:1px solid #000;padding:2px 5px;min-width:30px}
.sw-ed img{max-width:100%}.sw-ed blockquote{margin:4px 0 4px 24px;color:#333;font-style:italic}
.sw-pg.marks .sw-ed p:after,.sw-pg.marks .sw-ed div:after,.sw-pg.marks .sw-ed li:after,.sw-pg.marks .sw-ed h2:after,.sw-pg.marks .sw-ed h3:after{content:"¶";color:#6b8bbd;font-weight:400}
.sw-pg.marks .sw-ed br:after{content:"↵"}
.sw-font,.sw-size{height:24px;padding:0 3px;line-height:normal}

/* tema: superficies que siguen el color elegido en Configuración */
.grid.cs-t th,.cs-rt th{background:var(--hd-bg)!important;color:var(--hd-ink)!important}
.grid.cs-t tr.cs-cat td{background:var(--grp-bg)!important}
.srgrp,.subribbon .srgrp{border-right-color:var(--rib-line)}
