:root{--green:#69a63a;--green2:#4f8d27;--dark:#1f2a34;--bg:#f5f7f8;--panel:#fff;--text:#17212a;--muted:#68747d;--border:#e2e8ec;--shadow:0 8px 25px rgba(20,35,45,.07)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}#app{min-height:100vh;display:flex}.sidebar{width:242px;background:linear-gradient(180deg,#1f2a34,#18232c);color:#fff;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:5;transition:transform .2s ease}.brand{height:95px;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:center}.brand{background:#fff}.brand img{max-width:180px;max-height:62px;object-fit:contain}.sidebar nav{padding:12px 10px;flex:1;overflow:auto}.nav-group{font-size:11px;color:#80c54e;font-weight:700;margin:18px 12px 7px}.nav{border:0;background:transparent;color:#eef2f4;width:100%;text-align:left;padding:11px 13px;border-radius:8px;cursor:pointer;display:flex;gap:11px;margin:2px 0}.nav:hover,.nav.active{background:var(--green)}.user-box{border-top:1px solid rgba(255,255,255,.08);padding:15px;display:flex;gap:10px;align-items:center}.avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--green);font-weight:800}.user-box small{display:block;color:#b9c2c8;margin-top:3px}main{margin-left:242px;width:calc(100% - 242px)}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:0 26px;position:sticky;top:0;z-index:4}.topbar>div{display:flex;align-items:center;gap:14px}#pageTitle{font-size:20px;font-weight:700}.icon-btn{border:0;background:transparent;font-size:20px}.top-actions select{min-width:330px}.view{display:none;padding:24px 26px}.active-view{display:block}.hero,.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.hero h1,.section-head h1{margin:0 0 6px;font-size:28px}.hero p,.section-head p{margin:0;color:var(--muted)}.primary,.secondary{border-radius:8px;padding:10px 14px;cursor:pointer}.primary{background:var(--green);color:#fff;border:1px solid var(--green);font-weight:700}.secondary{background:#fff;border:1px solid var(--border)}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:16px}.kpis article,.panel,.company-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.kpis span,.kpis small{display:block;color:var(--muted)}.kpis strong{display:block;font-size:25px;margin:10px 0;color:var(--green2)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel{margin-bottom:16px}.panel-head{display:flex;justify-content:space-between;align-items:center}.panel h2{margin:0 0 10px;font-size:17px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:12px 10px;border-bottom:1px solid var(--border);text-align:left;font-size:14px}th{font-size:12px;color:var(--muted);text-transform:uppercase}.badge{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;background:#edf3f7}.badge.green{background:#e8f6df;color:#3e8120}.badge.blue{background:#e5efff;color:#2766b1}.badge.orange{background:#fff1da;color:#ad6700}.badge.red{background:#fde7e7;color:#ad3131}.toolbar{display:flex;gap:10px;margin-bottom:14px}.toolbar input{flex:1}.toolbar select{min-width:200px}input,select,textarea{border:1px solid #d9e0e4;border-radius:8px;background:#fff;padding:10px 11px;width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(105,166,58,.12)}.cards-list{display:grid;gap:9px}.mini-card{border:1px solid var(--border);padding:12px;border-radius:10px;display:flex;justify-content:space-between}.mini-card small{display:block;color:var(--muted);margin-top:3px}.modal{display:none;position:fixed;inset:0;background:rgba(10,18,24,.55);z-index:20;padding:28px;overflow:auto}.modal.show{display:flex;justify-content:center;align-items:flex-start}.modal-card{width:min(760px,100%);background:#fff;border-radius:16px;padding:20px}.modal-card.wide{width:min(1100px,100%)}.preview-card{width:min(1040px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-head h2{margin:0}.modal-head button{border:0;background:transparent;font-size:26px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.form-grid label,.tabpane label{font-size:13px;font-weight:600;color:#4b5861}.form-grid label input,.form-grid label select,.tabpane textarea{margin-top:6px}.form-grid .full{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.quote-tabs{display:flex;border-bottom:1px solid var(--border);margin:22px 0 15px}.tab{border:0;background:transparent;padding:10px 12px;cursor:pointer;color:var(--muted)}.tab.active{color:var(--green2);font-weight:700;border-bottom:2px solid var(--green)}.tabpane{display:none}.tabpane.active{display:block}.item-adder{display:grid;grid-template-columns:1fr 120px 100px;gap:8px;margin-bottom:12px}.totals{margin:14px 0 0 auto;width:min(360px,100%);display:grid;grid-template-columns:1fr auto;gap:9px;padding:14px;border:1px solid var(--border);border-radius:10px}.totals strong{font-size:18px;color:var(--green2)}.actions{display:flex;gap:6px}.small-btn{border:1px solid var(--border);background:#fff;border-radius:7px;padding:6px 8px;cursor:pointer}.danger{color:#c43d3d}.company-card h3{margin:0 0 12px}.company-card dl{display:grid;grid-template-columns:150px 1fr;gap:7px}.company-card dt{color:var(--muted)}.company-card dd{margin:0}.quote-preview{background:#e8ecee;padding:28px}.paper{background:#fff;width:794px;max-width:100%;margin:auto;min-height:1123px;padding:54px 58px;box-shadow:0 4px 20px rgba(0,0,0,.13);color:#111}.paper-header{display:flex;justify-content:space-between;border-bottom:3px solid var(--green);padding-bottom:16px}.paper-header img{width:180px}.quote-code{text-align:right}.quote-code b{display:inline-block;background:var(--green);color:#fff;padding:7px 12px}.paper h2{margin-top:32px;border-left:7px solid var(--green);padding-left:10px;font-size:18px}.paper th{background:#4d4d4d;color:#fff}.summary-box{margin:22px 0 0 auto;width:330px}.summary-box div{display:flex;justify-content:space-between;padding:7px}.summary-box .grand{font-size:18px;font-weight:800;border-top:2px solid #333}@media(max-width:1050px){.kpis{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}@media(max-width:760px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}main{margin-left:0;width:100%}.view{padding:18px 14px}.topbar{padding:0 14px}.top-actions select{max-width:185px;min-width:0}.kpis{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.item-adder{grid-template-columns:1fr}.modal{padding:10px}.paper{padding:28px 22px}.paper-header img{width:130px}.toolbar{flex-direction:column}}@media print{body *{visibility:hidden}.quote-preview,.quote-preview *{visibility:visible}.quote-preview{position:absolute;left:0;top:0;background:#fff;padding:0}.paper{box-shadow:none;width:100%;min-height:0}}

.cover-page{background:#fff;width:794px;max-width:100%;margin:0 auto 24px;min-height:1123px;padding:70px 64px;box-shadow:0 4px 20px rgba(0,0,0,.13);display:flex;flex-direction:column;color:#111}
.cover-page .cover-logo{width:260px;max-width:70%;margin-bottom:85px}
.cover-accent{height:10px;background:var(--green);width:150px;margin-bottom:28px}
.cover-page h1{font-size:38px;line-height:1.08;margin:0 0 14px;color:#252b2f}
.cover-page .subtitle{font-size:20px;color:#657078;margin-bottom:55px}
.cover-info{display:grid;grid-template-columns:150px 1fr;gap:13px 20px;font-size:16px}
.cover-info .label{color:#6c777f;font-weight:600}
.cover-footer{margin-top:auto;border-top:2px solid var(--green);padding-top:18px;display:flex;justify-content:space-between;gap:20px;font-size:13px;color:#5d676e}
.bank-box{margin-top:18px;border:1px solid #dfe5e8;border-left:5px solid var(--green);border-radius:8px;padding:14px 16px;background:#fafcfa}
.bank-grid{display:grid;grid-template-columns:145px 1fr;gap:5px 12px;font-size:13px}
@media print{.cover-page{box-shadow:none;margin:0;page-break-after:always}}

.role-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.role-cards article{border:1px solid var(--border);border-radius:10px;padding:14px;background:var(--panel)}
.role-cards b{display:block;margin-bottom:6px}
.role-cards small{color:var(--muted);line-height:1.4}
.gantt-options{display:flex;gap:18px;align-items:end;margin-bottom:12px;flex-wrap:wrap}
.gantt-options label{font-size:13px;font-weight:600;color:#4a5660}
.switchline{display:flex;align-items:center;gap:8px}
.switchline input{width:auto}
.gantt-adder{display:grid;grid-template-columns:minmax(280px,1fr) minmax(220px,1fr) 100px 110px 140px;gap:8px;margin-bottom:12px}.gantt-adder #ganttTaskName[style*="display: none"]{display:none!important}
.gantt-wrap{overflow:auto;margin-top:14px;border:1px solid var(--border);border-radius:10px;background:white}
.gantt{border-collapse:collapse;min-width:max-content}
.gantt th,.gantt td{border:1px solid #dfe4e7;padding:6px;text-align:center;font-size:11px;min-width:28px;height:30px}
.gantt th.task,.gantt td.task{min-width:220px;text-align:left;position:sticky;left:0;background:white;z-index:1}
.gantt .bar{background:var(--green);color:white;font-weight:700}
.gantt .todayish{background:#f4f7f1}
.gantt-title{font-size:14px;font-weight:700;padding:10px 12px;border-bottom:1px solid var(--border)}
@media(max-width:900px){.role-cards{grid-template-columns:repeat(2,1fr)}.gantt-adder{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.role-cards{grid-template-columns:1fr}.gantt-adder{grid-template-columns:1fr}}


/* ===== PDF / IMPRESIÓN NORMALIZADA V1.2.2 ===== */
@page{
  size: Letter portrait;
  margin: 14mm 13mm 15mm 13mm;
}

@media print{
  html,body{
    width:auto !important;
    height:auto !important;
    background:#fff !important;
  }

  #printArea{
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    box-shadow:none !important;
    overflow:visible !important;
  }

  /* Mantener títulos unidos al contenido siguiente */
  #printArea h1,
  #printArea h2,
  #printArea h3{
    break-after:avoid-page;
    page-break-after:avoid;
  }

  /* Bloques que preferimos mover completos a la página siguiente */
  #printArea .gantt-section,
  #printArea .terms-section,
  #printArea .commercial-section,
  #printArea .bank-section,
  #printArea .commercial-box,
  #printArea .bank-box,
  #printArea .totals{
    break-inside:avoid-page;
    page-break-inside:avoid;
  }

  /* La propuesta económica puede crecer, pero cada fila queda completa */
  #printArea .quote-table tr,
  #printArea table tr{
    break-inside:avoid-page;
    page-break-inside:avoid;
  }

  #printArea table thead{
    display:table-header-group;
  }

  #printArea table tfoot{
    display:table-footer-group;
  }

  /* Gantt: nunca cortar internamente si cabe en una página */
  #printArea .gantt-section{
    width:100%;
    overflow:visible !important;
  }

  #printArea .gantt-wrap{
    overflow:visible !important;
    border:0;
    max-width:100%;
  }

  #printArea .gantt{
    width:100% !important;
    min-width:0 !important;
    table-layout:fixed;
    font-size:8px;
  }

  #printArea .gantt th,
  #printArea .gantt td{
    min-width:0 !important;
    padding:3px 1px;
    height:22px;
    font-size:8px;
  }

  #printArea .gantt th.task,
  #printArea .gantt td.task{
    width:30mm;
    min-width:30mm !important;
    position:static !important;
    font-size:8px;
    padding-left:3px;
  }

  /* Evitar que los elementos de portada queden partidos */
  #printArea .quote-cover,
  #printArea .cover{
    break-inside:avoid-page;
    page-break-inside:avoid;
  }

  /* Colores corporativos en PDF cuando el navegador lo permita */
  #printArea{
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }
}

/* ===== Tema oscuro V1.2.4 ===== */
body.dark-theme{
  background:#111820;
  color:#e9eef2;
}
body.dark-theme .topbar,
body.dark-theme .panel,
body.dark-theme .modal-card,
body.dark-theme .card,
body.dark-theme .table-wrap,
body.dark-theme input,
body.dark-theme select,
body.dark-theme textarea{
  background:#18212a !important;
  color:#edf2f5 !important;
  border-color:#33414d !important;
}
body.dark-theme table,
body.dark-theme th,
body.dark-theme td{
  color:#edf2f5;
  border-color:#33414d !important;
}
body.dark-theme .view h1,
body.dark-theme .view h2,
body.dark-theme .view h3{
  color:#f5f7f8;
}
body.dark-theme .muted,
body.dark-theme small{
  color:#aeb9c2 !important;
}
#themeToggle{
  min-width:44px;
  min-height:40px;
  cursor:pointer;
}

.small-btn.danger{
  border-color:#c84f4f;
  color:#b83232;
  background:#fff;
}
.small-btn.danger:hover{
  background:#fff1f1;
}
body.dark-theme .small-btn.danger{
  background:#2a1d1d;
  color:#ff9b9b;
  border-color:#a94a4a;
}

html[data-theme="dark"] body{background:#111820!important;color:#e9eef2!important}
html[data-theme="dark"] .topbar,
html[data-theme="dark"] .panel,
html[data-theme="dark"] .modal-card,
html[data-theme="dark"] .card,
html[data-theme="dark"] .table-wrap,
html[data-theme="dark"] input,
html[data-theme="dark"] select,
html[data-theme="dark"] textarea{
  background:#18212a!important;color:#edf2f5!important;border-color:#33414d!important
}
html[data-theme="dark"] table,
html[data-theme="dark"] th,
html[data-theme="dark"] td{color:#edf2f5!important;border-color:#33414d!important}
html[data-theme="dark"] h1,
html[data-theme="dark"] h2,
html[data-theme="dark"] h3,
html[data-theme="dark"] label,
html[data-theme="dark"] p{color:#edf2f5!important}
#themeToggle{cursor:pointer;min-width:44px}

/* V1.2.6 - botón de tema unificado */
#themeBtn{
  cursor:pointer;
  min-width:44px;
  min-height:40px;
}

/* ===== CARTA / PDF V1.2.9 =====
   Letter = 215.9 x 279.4 mm. */
.paper,
.cover-page{
  width:816px;
  min-height:1056px;
}

/* Botones de vista previa */
.preview-card .modal-head > div{
  display:flex;
  align-items:center;
  gap:8px;
}

@page{
  size: Letter portrait;
  margin: 14mm 13mm 15mm 13mm;
}

@media print{
  html,body{
    margin:0 !important;
    padding:0 !important;
    background:#fff !important;
  }

  body *{
    visibility:hidden !important;
  }

  .quote-preview,
  .quote-preview *{
    visibility:visible !important;
  }

  .quote-preview{
    position:absolute !important;
    inset:0 auto auto 0 !important;
    width:100% !important;
    padding:0 !important;
    margin:0 !important;
    background:#fff !important;
  }

  .quote-preview .paper,
  .quote-preview .cover-page{
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    box-shadow:none !important;
    color:#111 !important;
  }

  .quote-preview .paper{
    min-height:0 !important;
    padding:0 !important;
  }

  .quote-preview .cover-page{
    min-height:250mm !important;
    padding:14mm 13mm !important;
    page-break-after:always !important;
    break-after:page !important;
  }

  .quote-preview .paper-header{
    break-inside:avoid-page;
    page-break-inside:avoid;
  }

  .quote-preview h1,
  .quote-preview h2,
  .quote-preview h3{
    break-after:avoid-page;
    page-break-after:avoid;
  }

  .quote-preview .gantt-section,
  .quote-preview .exclusions-section,
  .quote-preview .terms-section,
  .quote-preview .commercial-section,
  .quote-preview .bank-section,
  .quote-preview .bank-box,
  .quote-preview .summary-box{
    break-inside:avoid-page;
    page-break-inside:avoid;
  }

  .quote-preview table{
    width:100% !important;
    table-layout:fixed;
  }

  .quote-preview table thead{
    display:table-header-group;
  }

  .quote-preview table tr{
    break-inside:avoid-page;
    page-break-inside:avoid;
  }

  .quote-preview table th,
  .quote-preview table td{
    padding:5px 4px !important;
    font-size:8.5pt !important;
    overflow-wrap:anywhere;
  }

  .quote-preview .gantt-wrap{
    overflow:visible !important;
    max-width:100% !important;
    border:0 !important;
  }

  .quote-preview .gantt{
    width:100% !important;
    min-width:0 !important;
    table-layout:fixed !important;
    font-size:7.5pt !important;
  }

  .quote-preview .gantt th,
  .quote-preview .gantt td{
    min-width:0 !important;
    padding:2px 1px !important;
    height:20px !important;
    font-size:7.5pt !important;
  }

  .quote-preview .gantt th.task,
  .quote-preview .gantt td.task{
    width:30mm !important;
    min-width:30mm !important;
    position:static !important;
  }

  .quote-preview{
    -webkit-print-color-adjust:exact !important;
    print-color-adjust:exact !important;
  }
}

/* ===== ADMINISTRACIÓN V1.3.0 ===== */
.info-banner{
  background:#f4f8f5;
  border:1px solid #dce9df;
  border-left:4px solid var(--green, #2f8f57);
  padding:12px 14px;
  border-radius:10px;
  margin-bottom:18px;
  font-size:13px;
  line-height:1.45;
}
.company-card-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
  margin-bottom:12px;
}
.company-card-head h3{margin:0 0 4px}
.company-card-head small{color:#6b747c}
.subsection-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  margin-top:24px;
  margin-bottom:10px;
}
.subsection-head h3{margin:0}
.subsection-head p{margin:3px 0 0;color:#6b747c;font-size:13px}
.audit-tools{
  display:flex;
  gap:10px;
  margin-bottom:12px;
}
.audit-tools input{flex:1}
.actions{white-space:nowrap}
body.dark-theme .info-banner,
html[data-theme="dark"] .info-banner{
  background:#17231c !important;
  border-color:#2c4636 !important;
  color:#e8f1eb !important;
}
@media(max-width:760px){
  .audit-tools,.subsection-head{flex-direction:column;align-items:stretch}
  .company-card-head{flex-direction:column}
}

/* ===== PDF / IMPRESIÓN V1.3.1 ===== */

/* Los botones de la cabecera de vista previa deben verse como botones reales. */
.preview-actions{
  display:flex;
  align-items:center;
  gap:9px;
}
.preview-actions .download-btn,
.preview-actions .print-btn{
  border:1px solid transparent !important;
  border-radius:9px !important;
  padding:9px 14px !important;
  font-size:13px !important;
  font-weight:700 !important;
  line-height:1 !important;
  cursor:pointer !important;
  min-height:38px;
  transition:.15s ease;
}
.preview-actions .download-btn{
  background:var(--green) !important;
  color:#fff !important;
  border-color:var(--green) !important;
}
.preview-actions .download-btn:hover{filter:brightness(.94)}
.preview-actions .print-btn{
  background:#fff !important;
  color:#303a40 !important;
  border-color:#cfd7db !important;
}
.preview-actions .print-btn:hover{background:#f4f6f7 !important}
.preview-actions .modal-close{
  width:38px;
  height:38px;
  border:0 !important;
  border-radius:9px !important;
  background:transparent !important;
  color:#4b565d !important;
  font-size:25px !important;
  cursor:pointer !important;
}

/* Contenedor temporal usado por Descargar PDF. */
.pdf-export-host{
  position:fixed;
  left:-100000px;
  top:0;
  width:816px;
  background:#fff;
  z-index:-1;
}
.pdf-export{
  width:816px !important;
  max-width:816px !important;
  padding:0 !important;
  margin:0 !important;
  background:#fff !important;
}
.pdf-export .cover-page,
.pdf-export .paper{
  width:816px !important;
  max-width:816px !important;
  box-shadow:none !important;
  margin:0 !important;
}
.pdf-export .cover-page{
  min-height:1056px !important;
}
.pdf-export .paper{
  min-height:0 !important;
}
.pdf-export .gantt-wrap{
  overflow:visible !important;
}
.pdf-export .gantt{
  width:100% !important;
  min-width:0 !important;
  table-layout:fixed !important;
}

/* Impresión real multipágina.
   El error anterior se producía porque la vista previa quedaba dentro
   de un modal fijo y además el documento se posicionaba de forma absoluta. */
@media print{
  @page{
    size:Letter portrait;
    margin:14mm 13mm 15mm 13mm;
  }

  html,body{
    width:auto !important;
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
    background:#fff !important;
  }

  body *{
    visibility:hidden !important;
  }

  #previewModal,
  #previewModal .preview-card,
  #previewModal .quote-preview,
  #previewModal .quote-preview *{
    visibility:visible !important;
  }

  #previewModal{
    display:block !important;
    position:static !important;
    inset:auto !important;
    width:auto !important;
    height:auto !important;
    overflow:visible !important;
    padding:0 !important;
    margin:0 !important;
    background:#fff !important;
  }

  #previewModal .preview-card{
    display:block !important;
    position:static !important;
    width:auto !important;
    max-width:none !important;
    height:auto !important;
    overflow:visible !important;
    padding:0 !important;
    margin:0 !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    background:#fff !important;
  }

  #previewModal .modal-head{
    display:none !important;
  }

  #previewModal .quote-preview{
    display:block !important;
    position:static !important;
    left:auto !important;
    top:auto !important;
    width:auto !important;
    max-width:none !important;
    height:auto !important;
    overflow:visible !important;
    padding:0 !important;
    margin:0 !important;
    background:#fff !important;
  }

  #previewModal .cover-page,
  #previewModal .paper{
    display:block !important;
    position:static !important;
    width:100% !important;
    max-width:none !important;
    height:auto !important;
    overflow:visible !important;
    margin:0 !important;
    box-shadow:none !important;
    background:#fff !important;
  }

  #previewModal .cover-page{
    min-height:250mm !important;
    page-break-after:always !important;
    break-after:page !important;
  }

  #previewModal .paper{
    min-height:0 !important;
    padding:0 !important;
  }

  #previewModal h1,
  #previewModal h2,
  #previewModal h3{
    break-after:avoid-page !important;
    page-break-after:avoid !important;
  }

  #previewModal table{
    width:100% !important;
  }

  #previewModal thead{
    display:table-header-group !important;
  }

  #previewModal tr{
    break-inside:avoid-page !important;
    page-break-inside:avoid !important;
  }

  #previewModal .gantt-section,
  #previewModal .bank-section,
  #previewModal .commercial-section,
  #previewModal .terms-section,
  #previewModal .exclusions-section,
  #previewModal .summary-box,
  #previewModal .bank-box{
    break-inside:avoid-page !important;
    page-break-inside:avoid !important;
  }

  #previewModal .gantt-wrap{
    overflow:visible !important;
  }

  #previewModal .gantt{
    width:100% !important;
    min-width:0 !important;
    table-layout:fixed !important;
  }

  #previewModal{
    -webkit-print-color-adjust:exact !important;
    print-color-adjust:exact !important;
  }
}

/* ===== V1.3.2 ===== */
#previewModal{padding:18px!important}
#previewModal.show{align-items:center!important}
#previewModal .preview-card{
  width:min(900px,calc(100vw - 36px))!important;
  height:min(820px,calc(100vh - 36px))!important;
  max-height:calc(100vh - 36px)!important;
  padding:14px!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important
}
#previewModal .modal-head{flex:0 0 auto;margin-bottom:10px!important}
#previewModal .quote-preview{flex:1 1 auto;min-height:0;overflow:auto!important;padding:16px!important;border-radius:10px}
#previewModal .paper,#previewModal .cover-page{width:816px!important;max-width:100%!important}

.pagination-help{border:1px solid var(--border);border-left:4px solid var(--green);background:#f7faf7;border-radius:10px;padding:12px 14px;margin-bottom:14px}
.pagination-help p{margin:5px 0 0;font-size:13px;color:var(--muted);line-height:1.45}
.page-break-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.page-break-option{display:flex!important;gap:10px;align-items:flex-start;border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--panel);cursor:pointer}
.page-break-option input{width:auto!important;margin-top:3px!important;flex:0 0 auto}
.page-break-option b{display:block;margin-bottom:3px}
.page-break-option small{display:block;color:var(--muted);line-height:1.35;font-weight:400}
.manual-page-break{break-before:page;page-break-before:always}

.pdf-export-host{position:fixed!important;left:-100000px!important;top:0!important;width:816px!important;height:auto!important;background:#fff!important;z-index:-9999!important;overflow:visible!important}
.pdf-export{width:816px!important;max-width:816px!important;margin:0!important;padding:0!important;background:#fff!important;overflow:visible!important}
.pdf-export .cover-page,.pdf-export .paper{box-sizing:border-box!important;width:816px!important;max-width:816px!important;margin:0!important;box-shadow:none!important}
.pdf-export .cover-page{height:1056px!important;min-height:1056px!important;padding:68px 64px!important;overflow:hidden!important}
.pdf-export .paper{min-height:1056px!important;padding:53px 49px 57px!important}
.pdf-export .gantt-wrap{overflow:visible!important;max-width:100%!important}
.pdf-export .gantt{width:100%!important;min-width:0!important;table-layout:fixed!important}
.pdf-page-spacer{display:block!important;width:100%!important;padding:0!important;margin:0!important;border:0!important}

@media(max-width:700px){
  .page-break-grid{grid-template-columns:1fr}
  #previewModal{padding:8px!important}
  #previewModal .preview-card{width:calc(100vw - 16px)!important;height:calc(100vh - 16px)!important;max-height:calc(100vh - 16px)!important}
}

/* ===== V1.3.3 · VISTA PREVIA / EDITOR DE PÁGINAS ===== */
#previewModal .preview-card{
  width:min(960px,calc(100vw - 40px))!important;
  height:min(860px,calc(100vh - 32px))!important;
  max-height:calc(100vh - 32px)!important;
}
#previewModal .quote-preview{
  background:#e9edf0!important;
  padding:18px!important;
  gap:18px;
}
#previewModal .cover-page,
#previewModal .paper{
  box-sizing:border-box!important;
  width:min(816px,100%)!important;
  min-height:1056px!important;
  margin:0 auto 18px!important;
  background:#fff!important;
  box-shadow:0 2px 12px rgba(0,0,0,.12)!important;
  position:relative;
}

/* Cada página de contenido comienza con margen superior real. */
#previewModal .paper{
  padding:53px 49px 57px!important;
}
#previewModal .continuation-page{
  padding-top:38px!important;
}
.continuation-header{
  margin-bottom:28px!important;
}

/* Herramienta de edición tipo Word */
.preview-actions .page-edit-btn{
  border:1px solid #aeb9bf!important;
  border-radius:9px!important;
  padding:9px 13px!important;
  min-height:38px;
  background:#f4f6f7!important;
  color:#25323a!important;
  font-weight:700!important;
  cursor:pointer!important;
}
.page-break-editor{
  margin:14px 0 10px;
  padding:7px 10px;
  border:1px dashed #a9b3b9;
  border-radius:8px;
  background:#f7f9fa;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  font-size:11px;
  color:#5a6870;
}
.page-break-editor.active{
  border-color:var(--green);
  background:#f2f8f3;
}
.page-break-editor button{
  border:1px solid #c7d0d5!important;
  background:#fff!important;
  color:#34434b!important;
  padding:6px 9px!important;
  border-radius:7px!important;
  font-size:11px!important;
  font-weight:700!important;
  cursor:pointer!important;
}
.page-number-badge{
  position:absolute;
  right:10px;
  bottom:7px;
  font-size:10px;
  color:#86929a;
}

/* ===== GANTT COMPACTO ===== */
.gantt-wrap{
  overflow-x:auto!important;
}
.gantt{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
  border-collapse:collapse!important;
}
.gantt th,
.gantt td{
  padding:2px 1px!important;
  height:19px!important;
  min-width:0!important;
  font-size:8px!important;
  line-height:1.05!important;
  border:1px solid #bfc6ca!important;
}
.gantt th.task,
.gantt td.task{
  width:185px!important;
  min-width:185px!important;
  max-width:185px!important;
  text-align:left!important;
  padding:3px 5px!important;
  position:static!important;
  background:#fff!important;
  color:#222!important;
  overflow-wrap:anywhere;
}
.gantt thead tr:first-child th{
  background:#4c4c4c!important;
  color:#fff!important;
  font-weight:700!important;
}
.gantt thead tr:nth-child(2) th.day{
  background:#f4f4f4!important;
  color:#111!important;
}
.gantt .days-title{
  background:#4c4c4c!important;
  color:#fff!important;
  letter-spacing:.2px;
}
.gantt td.day{
  background:#fff!important;
}
.gantt td.day.bar{
  background:#7aaa38!important;
}
.gantt.compact th.task,
.gantt.compact td.task{
  width:165px!important;
  min-width:165px!important;
  max-width:165px!important;
}
.gantt.compact th,
.gantt.compact td{
  font-size:7px!important;
  height:17px!important;
}
.gantt.very-compact th.task,
.gantt.very-compact td.task{
  width:150px!important;
  min-width:150px!important;
  max-width:150px!important;
}
.gantt.very-compact th,
.gantt.very-compact td{
  font-size:6px!important;
  height:15px!important;
}

/* ===== EXPORT PDF: MISMO DISEÑO QUE PREVIEW ===== */
.pdf-export-host{
  position:fixed!important;
  left:-100000px!important;
  top:0!important;
  width:816px!important;
  background:#fff!important;
  z-index:-9999!important;
}
.pdf-export{
  width:816px!important;
  background:#fff!important;
}
.pdf-export .cover-page,
.pdf-export .paper{
  box-sizing:border-box!important;
  width:816px!important;
  min-height:1056px!important;
  margin:0!important;
  box-shadow:none!important;
  background:#fff!important;
}
.pdf-export .paper{
  padding:53px 49px 57px!important;
}
.pdf-export .continuation-page{
  padding-top:38px!important;
}
.pdf-export .gantt{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
}

/* Ocultar herramientas en documento final */
.pdf-export .page-break-editor,
.pdf-export .page-number-badge{
  display:none!important;
}

@media(max-width:720px){
  .preview-actions{gap:5px!important;flex-wrap:wrap}
  #previewModal .quote-preview{padding:8px!important}
  .page-break-editor{flex-direction:column;align-items:stretch}
}

/* ===== V1.3.4 · PAGINACIÓN PROTEGIDA ===== */

/* Datos bancarios usan el mismo estilo de sección que el resto */
.bank-section{
  border:0!important;
  background:transparent!important;
  padding:0!important;
  border-radius:0!important;
}
.bank-section .bank-grid{
  border:0!important;
  background:transparent!important;
  padding:0!important;
  display:grid!important;
  grid-template-columns:150px 1fr!important;
  gap:5px 14px!important;
}
.bank-section .bank-grid b,
.bank-section .bank-grid span{
  padding:0!important;
  background:transparent!important;
}

/* Cada hoja Carta queda realmente separada en vista previa */
#previewModal .paper{
  min-height:1056px!important;
  height:1056px!important;
  overflow:hidden!important;
}
#previewModal .continuation-page{
  min-height:1056px!important;
  height:1056px!important;
  overflow:hidden!important;
}

/* Exportación: cada .paper equivale exactamente a una hoja Carta */
.pdf-export .paper,
.pdf-export .cover-page{
  width:816px!important;
  min-height:1056px!important;
  height:1056px!important;
  overflow:hidden!important;
}

/* El editor deja claro qué hace cada acción */
.page-break-editor{
  background:#f8fafb!important;
  border:1px dashed #b7c1c7!important;
}
.page-break-editor.active{
  border-color:var(--green)!important;
  background:#f2f8f3!important;
}
.page-break-editor span{
  font-size:11px!important;
}
.page-break-editor button{
  min-width:118px;
}

/* Evita que una sección visual se fragmente */
.print-section{
  break-inside:avoid!important;
  page-break-inside:avoid!important;
}
.bank-section,
.commercial-section,
.terms-section,
.exclusions-section,
.summary-box{
  break-inside:avoid!important;
  page-break-inside:avoid!important;
}

/* ===== V1.3.5 · AJUSTE FINO DE PÁGINAS Y GANTT ===== */

/* Hoja Carta: márgenes internos constantes en TODAS las páginas */
#previewModal .paper,
#previewModal .continuation-page{
  box-sizing:border-box!important;
  width:816px!important;
  height:1056px!important;
  min-height:1056px!important;
  max-height:1056px!important;
  padding:52px 48px 64px!important;
  overflow:hidden!important;
}

/* La primera hoja de contenido conserva espacio correcto después del encabezado */
#previewModal .paper > .paper-header{
  margin-bottom:24px!important;
}

/* Las páginas de continuación tienen encabezado y aire antes del primer punto */
#previewModal .continuation-header{
  margin:0 0 30px 0!important;
}

/* Separación consistente de todas las secciones */
.print-section{
  margin-top:28px!important;
  margin-bottom:0!important;
}
.print-section:first-of-type{
  margin-top:26px!important;
}
.print-section h2{
  margin-top:0!important;
  margin-bottom:16px!important;
}

/* Nunca comenzar una sección visualmente pegada al borde inferior */
.economic-section,
.gantt-section{
  padding-bottom:8px!important;
}

/* ===== GANTT: más similar al formato de referencia ===== */
.gantt-wrap{
  overflow-x:auto!important;
  padding-bottom:2px;
}
.gantt{
  width:auto!important;
  max-width:100%!important;
  table-layout:fixed!important;
  border-collapse:collapse!important;
  margin:0!important;
}
.gantt .task-col{
  width:205px!important;
}
.gantt .day-col{
  width:25px!important;
}
.gantt th,
.gantt td{
  height:18px!important;
  padding:1px 2px!important;
  font-size:8px!important;
  line-height:1!important;
  border:1px solid #bfc6ca!important;
}
.gantt th.task,
.gantt td.task{
  width:205px!important;
  min-width:205px!important;
  max-width:205px!important;
  padding:3px 6px!important;
  text-align:left!important;
  font-size:10px!important;
  font-weight:700!important;
  line-height:1.15!important;
  background:#fff!important;
  color:#222!important;
}
.gantt thead tr:first-child th.task,
.gantt thead tr:first-child .days-title{
  background:#4c4c4c!important;
  color:#fff!important;
  font-size:8px!important;
  text-transform:uppercase;
}
.gantt thead tr:nth-child(2) th.day{
  background:#f5f5f5!important;
  color:#111!important;
  font-size:7px!important;
  font-weight:700!important;
}
.gantt td.day{
  width:25px!important;
  min-width:25px!important;
  max-width:25px!important;
  background:#fff!important;
}
.gantt td.day.bar{
  background:#7aaa38!important;
}
.gantt.compact .task-col{width:190px!important}
.gantt.compact .day-col{width:18px!important}
.gantt.compact th.task,.gantt.compact td.task{
  width:190px!important;min-width:190px!important;max-width:190px!important;font-size:9px!important
}
.gantt.compact td.day,.gantt.compact th.day{
  width:18px!important;min-width:18px!important;max-width:18px!important;font-size:6.5px!important
}
.gantt.very-compact .task-col{width:180px!important}
.gantt.very-compact .day-col{width:12px!important}
.gantt.very-compact th.task,.gantt.very-compact td.task{
  width:180px!important;min-width:180px!important;max-width:180px!important;font-size:8.5px!important
}
.gantt.very-compact td.day,.gantt.very-compact th.day{
  width:12px!important;min-width:12px!important;max-width:12px!important;font-size:5.5px!important;padding:0!important
}

/* Exportación usa las mismas medidas que la vista previa */
.pdf-export .paper,
.pdf-export .continuation-page{
  box-sizing:border-box!important;
  width:816px!important;
  height:1056px!important;
  min-height:1056px!important;
  max-height:1056px!important;
  padding:52px 48px 64px!important;
  overflow:hidden!important;
}
.pdf-export .cover-page{
  width:816px!important;
  height:1056px!important;
  min-height:1056px!important;
  max-height:1056px!important;
}
.pdf-export .continuation-header{
  margin-bottom:30px!important;
}

/* ===== V1.3.6 · EDICIÓN DE PÁGINAS SIMPLE ===== */
.page-move-editor{
  margin:10px 0 6px!important;
  padding:6px 8px!important;
  border:1px dashed #b7c1c7!important;
  border-radius:8px!important;
  background:#f8fafb!important;
  display:grid!important;
  grid-template-columns:auto 1fr auto!important;
  align-items:center!important;
  gap:8px!important;
  font-size:11px!important;
  color:#5a6870!important;
}
.page-move-editor span{text-align:center!important}
.page-move-editor button{
  border:1px solid #c7d0d5!important;
  background:#fff!important;
  color:#34434b!important;
  padding:6px 9px!important;
  border-radius:7px!important;
  font-size:11px!important;
  font-weight:700!important;
  cursor:pointer!important;
}
.page-move-editor button.active{
  border-color:var(--green)!important;
  background:#eef7ef!important;
  color:#1f6b3b!important;
}

/* ===== GANTT V1.3.6 ===== */
.gantt-wrap{
  overflow:visible!important;
}
.gantt-center{
  width:100%!important;
  display:flex!important;
  justify-content:center!important;
  overflow:visible!important;
}
.gantt{
  width:auto!important;
  max-width:100%!important;
  margin:0 auto!important;
  table-layout:fixed!important;
  border-collapse:collapse!important;
}
.gantt .task-col{width:210px!important}
.gantt .day-col{width:20px!important}
.gantt th,
.gantt td{
  height:18px!important;
  padding:1px!important;
  border:1px solid #bbc4c9!important;
  line-height:1!important;
}
.gantt th.task,
.gantt td.task{
  width:210px!important;
  min-width:210px!important;
  max-width:210px!important;
  padding:4px 6px!important;
  text-align:left!important;
  font-size:10.5px!important;
  font-weight:700!important;
  line-height:1.15!important;
  white-space:normal!important;
  overflow:visible!important;
  background:#fff!important;
  color:#171717!important;
}
.gantt th.day,
.gantt td.day{
  width:20px!important;
  min-width:20px!important;
  max-width:20px!important;
  padding:0!important;
  font-size:6.5px!important;
}
.gantt td.day{height:18px!important}
.gantt td.day.bar{background:#7aaa38!important}
.gantt.compact .task-col{width:195px!important}
.gantt.compact .day-col{width:14px!important}
.gantt.compact th.task,.gantt.compact td.task{
  width:195px!important;min-width:195px!important;max-width:195px!important;font-size:9.5px!important
}
.gantt.compact th.day,.gantt.compact td.day{
  width:14px!important;min-width:14px!important;max-width:14px!important;font-size:5.8px!important
}
.gantt.very-compact .task-col{width:185px!important}
.gantt.very-compact .day-col{width:10px!important}
.gantt.very-compact th.task,.gantt.very-compact td.task{
  width:185px!important;min-width:185px!important;max-width:185px!important;font-size:9px!important
}
.gantt.very-compact th.day,.gantt.very-compact td.day{
  width:10px!important;min-width:10px!important;max-width:10px!important;font-size:5px!important
}

/* Las hojas siguen Carta, pero el contenido no se recorta. */
#previewModal .paper,
#previewModal .continuation-page{
  overflow:visible!important;
}
.pdf-export .paper,
.pdf-export .continuation-page{
  overflow:visible!important;
}

/* Mantener márgenes seguros sin desperdiciar una hoja por cada punto */
.print-section{
  margin-top:22px!important;
}
.continuation-page .print-section:first-of-type{
  margin-top:18px!important;
}

/* ===== V1.3.7 ===== */
.section-move-top,
.section-move-bottom{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  padding:6px 8px!important;
  margin:0 0 10px 0!important;
  border:1px dashed #b7c1c7!important;
  border-radius:8px!important;
  background:#f8fafb!important;
  color:#5a6870!important;
  font-size:11px!important;
}
.section-move-bottom{margin:10px 0 0 0!important}
.section-move-top button,
.section-move-bottom button{
  border:1px solid #c7d0d5!important;
  background:#fff!important;
  color:#34434b!important;
  padding:6px 10px!important;
  border-radius:7px!important;
  font-size:11px!important;
  font-weight:700!important;
  cursor:pointer!important;
}
.section-move-top button.active,
.section-move-bottom button.active{
  border-color:var(--green)!important;
  background:#eef7ef!important;
  color:#1f6b3b!important;
}

.gantt-center{
  width:100%!important;
  display:flex!important;
  justify-content:center!important;
  overflow:visible!important;
}
.gantt{
  width:auto!important;
  max-width:100%!important;
  margin:0 auto!important;
}
.gantt .task-col{width:215px!important}
.gantt .day-col{width:17px!important}
.gantt th.task,
.gantt td.task{
  width:215px!important;
  min-width:215px!important;
  max-width:215px!important;
  font-size:10.5px!important;
  font-weight:700!important;
  padding:4px 6px!important;
}
.gantt th.day,
.gantt td.day{
  width:17px!important;
  min-width:17px!important;
  max-width:17px!important;
  height:17px!important;
  padding:0!important;
  font-size:6px!important;
}
.gantt td.day.bar{background:#7aaa38!important}
.gantt.compact .task-col{width:200px!important}
.gantt.compact .day-col{width:12px!important}
.gantt.compact th.task,.gantt.compact td.task{
  width:200px!important;min-width:200px!important;max-width:200px!important;font-size:9.5px!important
}
.gantt.compact th.day,.gantt.compact td.day{
  width:12px!important;min-width:12px!important;max-width:12px!important;font-size:5.5px!important
}
.gantt.very-compact .task-col{width:190px!important}
.gantt.very-compact .day-col{width:9px!important}
.gantt.very-compact th.task,.gantt.very-compact td.task{
  width:190px!important;min-width:190px!important;max-width:190px!important;font-size:9px!important
}
.gantt.very-compact th.day,.gantt.very-compact td.day{
  width:9px!important;min-width:9px!important;max-width:9px!important;font-size:4.8px!important
}

.pdf-export .section-move-top,
.pdf-export .section-move-bottom{
  display:none!important;
}

/* ===== V1.3.8 · PAGINACIÓN AL ABRIR VISTA PREVIA ===== */
#previewModal .quote-preview.is-paginating{
  opacity:0!important;
  pointer-events:none!important;
}
#previewModal .quote-preview{
  transition:opacity .08s ease!important;
}

/* ===== V1.3.9 · DISEÑO DEFINITIVO DE COTIZACIÓN ===== */

/* Encabezado uniforme de cada punto */
.print-section > h2{
  position:relative!important;
  display:block!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0 0 16px 0!important;
  padding:5px 10px 5px 13px!important;
  background:#454545!important;
  color:#fff!important;
  font-size:15px!important;
  line-height:1.15!important;
  font-weight:800!important;
  border:0!important;
  border-radius:0!important;
}
.print-section > h2::before{
  content:""!important;
  position:absolute!important;
  left:-7px!important;
  top:0!important;
  bottom:0!important;
  width:5px!important;
  background:var(--green)!important;
}

/* Separación más profesional entre secciones */
.print-section{
  margin-top:24px!important;
}
.continuation-page .print-section:first-of-type{
  margin-top:16px!important;
}

/* ===== Condiciones comerciales ===== */
.terms-section p{
  margin:0!important;
  line-height:1.55!important;
  white-space:pre-line!important;
}

/* ===== Antecedentes comerciales y datos bancarios ===== */
.commercial-section p{
  margin:0!important;
  line-height:1.48!important;
}
.commercial-section p b{
  display:inline-block!important;
  min-width:145px!important;
}
.bank-section .bank-grid{
  display:grid!important;
  grid-template-columns:145px 12px minmax(0,1fr)!important;
  column-gap:5px!important;
  row-gap:4px!important;
  align-items:start!important;
  font-size:12px!important;
  line-height:1.35!important;
}
.bank-section .bank-grid b{
  font-weight:500!important;
}
.bank-section .bank-grid b::after{
  content:""!important;
}
.bank-section .bank-grid span{
  min-width:0!important;
  overflow-wrap:anywhere!important;
}

/* Insertar visualmente ":" entre etiqueta y valor */
.bank-section .bank-grid b + span::before{
  content:":  "!important;
  display:inline!important;
}

/* ===== Gantt definitivo ===== */
.gantt-title{
  font-size:12px!important;
  font-weight:800!important;
  margin:0 0 8px 0!important;
}
.gantt-center{
  display:flex!important;
  justify-content:center!important;
  width:100%!important;
}
.gantt{
  width:auto!important;
  max-width:100%!important;
  margin:0 auto!important;
  table-layout:fixed!important;
}
.gantt .task-col{width:215px!important}
.gantt .day-col{width:15px!important}
.gantt th.task,
.gantt td.task{
  width:215px!important;
  min-width:215px!important;
  max-width:215px!important;
  font-size:10px!important;
  font-weight:700!important;
  padding:4px 6px!important;
  white-space:normal!important;
}
.gantt th.day,
.gantt td.day{
  width:15px!important;
  min-width:15px!important;
  max-width:15px!important;
  height:16px!important;
  padding:0!important;
  font-size:5.8px!important;
}
.gantt.compact .task-col{width:200px!important}
.gantt.compact .day-col{width:11px!important}
.gantt.compact th.task,.gantt.compact td.task{
  width:200px!important;min-width:200px!important;max-width:200px!important;font-size:9.5px!important
}
.gantt.compact th.day,.gantt.compact td.day{
  width:11px!important;min-width:11px!important;max-width:11px!important;font-size:5px!important
}
.gantt.very-compact .task-col{width:185px!important}
.gantt.very-compact .day-col{width:8px!important}
.gantt.very-compact th.task,.gantt.very-compact td.task{
  width:185px!important;min-width:185px!important;max-width:185px!important;font-size:9px!important
}
.gantt.very-compact th.day,.gantt.very-compact td.day{
  width:8px!important;min-width:8px!important;max-width:8px!important;font-size:4.5px!important
}

/* Controles de edición: visibles solo en preview */
.section-move-top,
.section-move-bottom{
  box-sizing:border-box!important;
  width:100%!important;
}
.pdf-export .section-move-top,
.pdf-export .section-move-bottom,
.pdf-export .page-number-badge{
  display:none!important;
}

/* El PDF conserva exactamente el encabezado gris/verde */
.pdf-export .print-section > h2{
  background:#454545!important;
  color:#fff!important;
}

.commercial-grid{
  display:grid!important;
  grid-template-columns:145px 12px minmax(0,1fr)!important;
  column-gap:5px!important;
  row-gap:4px!important;
  align-items:start!important;
  font-size:12px!important;
  line-height:1.35!important;
}
.commercial-grid b{font-weight:500!important}
.commercial-grid span{min-width:0!important;overflow-wrap:anywhere!important}

/* ===== V1.4.0 · PORTADA Y SECCIONES ORDENADAS ===== */

/* Formato etiqueta : valor como referencia */
.kv-grid{
  display:grid!important;
  grid-template-columns:185px 14px minmax(0,1fr)!important;
  column-gap:4px!important;
  row-gap:3px!important;
  align-items:start!important;
  margin:4px 12px 0 12px!important;
  font-size:12px!important;
  line-height:1.25!important;
}
.kv-label{
  font-weight:400!important;
  color:#222!important;
}
.kv-colon{
  text-align:center!important;
  color:#222!important;
}
.kv-value{
  min-width:0!important;
  color:#222!important;
  overflow-wrap:anywhere!important;
}
.kv-note{
  grid-column:1 / -1!important;
  margin-bottom:2px!important;
}
.commercial-kv .kv-label,
.bank-kv .kv-label{
  font-weight:400!important;
}
.conditions-grid{
  grid-template-columns:185px 14px minmax(0,1fr)!important;
}

/* Neutralizar reglas antiguas que deformaban el banco */
.bank-section .bank-grid{display:none!important}
.bank-section .bank-kv{
  display:grid!important;
}

/* Portada V2 */
.cover-v2{
  position:relative!important;
  box-sizing:border-box!important;
  width:816px!important;
  height:1056px!important;
  min-height:1056px!important;
  padding:58px 58px 48px!important;
  overflow:hidden!important;
  background:#fff!important;
}
.cover-top{
  display:flex!important;
  justify-content:space-between!important;
  align-items:flex-start!important;
}
.cover-v2 .cover-logo{
  width:235px!important;
  max-width:235px!important;
  height:auto!important;
}
.cover-doc-badge{
  width:150px!important;
  text-align:right!important;
  color:#303030!important;
}
.cover-doc-badge small{
  display:block!important;
  font-size:11px!important;
  letter-spacing:.5px!important;
}
.cover-doc-badge strong{
  display:block!important;
  margin-top:6px!important;
  padding:8px 12px!important;
  background:var(--green)!important;
  color:#fff!important;
  font-size:17px!important;
  text-align:center!important;
}
.cover-doc-badge span{
  display:block!important;
  margin-top:6px!important;
  font-size:11px!important;
}
.cover-hero{
  margin-top:120px!important;
  display:grid!important;
  grid-template-columns:10px 1fr!important;
  gap:18px!important;
  align-items:stretch!important;
}
.cover-green-bar{
  background:var(--green)!important;
  min-height:150px!important;
}
.cover-title-block{
  padding:16px 0 18px!important;
}
.cover-kicker{
  font-size:19px!important;
  font-weight:700!important;
  color:#535353!important;
  letter-spacing:1.2px!important;
}
.cover-title-block h1{
  margin:4px 0 12px!important;
  font-size:42px!important;
  line-height:1!important;
  letter-spacing:-1px!important;
  color:#2f2f2f!important;
}
.cover-project{
  max-width:560px!important;
  font-size:18px!important;
  color:#6f777c!important;
  line-height:1.25!important;
}
.cover-summary-card{
  margin:54px 0 0 28px!important;
  width:560px!important;
  border-top:5px solid #454545!important;
  padding-top:16px!important;
}
.cover-summary-row{
  display:grid!important;
  grid-template-columns:170px 1fr!important;
  gap:12px!important;
  padding:7px 0!important;
  border-bottom:1px solid #e1e5e7!important;
  font-size:13px!important;
}
.cover-summary-row span{
  color:#6d7479!important;
}
.cover-summary-row b{
  color:#2d3337!important;
  font-weight:700!important;
}
.cover-footer-v2{
  position:absolute!important;
  left:58px!important;
  right:58px!important;
  bottom:48px!important;
}
.cover-footer-v2 > div:first-child{
  display:flex!important;
  justify-content:space-between!important;
  align-items:center!important;
  gap:20px!important;
  font-size:11px!important;
  color:#626b70!important;
}
.cover-footer-v2 > div:first-child b{
  color:#343b3f!important;
}
.cover-footer-line{
  margin-top:12px!important;
  height:3px!important;
  background:linear-gradient(90deg,var(--green) 0 24%,#454545 24% 100%)!important;
}

/* PDF: misma portada */
.pdf-export .cover-v2{
  width:816px!important;
  height:1056px!important;
  min-height:1056px!important;
  padding:58px 58px 48px!important;
}

/* ===== V1.4.1 · EDP ===== */
.edp-items-wrap input{min-width:75px;padding:6px!important}.edp-items-wrap td:nth-child(2) input{min-width:210px}
.edp-total-line{display:flex;justify-content:flex-end;gap:24px;align-items:center;padding:12px 4px;font-size:15px}.edp-total-line strong{font-size:19px}
.edp-preview-card{width:min(1180px,calc(100vw - 30px))!important;height:min(860px,calc(100vh - 30px))!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}
.edp-preview{flex:1;overflow:auto;background:#e9edf0;padding:18px}
.edp-paper{width:1056px;height:816px;box-sizing:border-box;margin:0 auto;background:#fff;padding:34px 42px 26px;color:#111;font-family:Arial,Helvetica,sans-serif;font-size:10px;overflow:hidden}
.edp-doc-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.edp-doc-head img{width:200px}.edp-doc-head h1{font-size:18px;margin:10px 330px 0 0;white-space:nowrap}
.edp-meta{border-collapse:collapse;width:66%;margin-bottom:12px}.edp-meta th,.edp-meta td{border:1px solid #222;padding:3px 5px;text-align:left}.edp-meta th{width:180px;background:#f2f2f2}.edp-money{width:66%}
.edp-detail{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:8px}.edp-detail th,.edp-detail td{border:1px solid #222;padding:3px 4px;vertical-align:top}.edp-detail thead th{background:#b7b7b7;text-align:center;font-weight:700}.edp-detail th:nth-child(1),.edp-detail td:nth-child(1){width:42px;text-align:center}.edp-detail th:nth-child(2),.edp-detail td:nth-child(2){width:75px}.edp-detail th:nth-child(3),.edp-detail td:nth-child(3){width:245px}.edp-detail th:nth-child(4),.edp-detail td:nth-child(4){width:130px}.edp-detail tfoot td{background:#b7b7b7;text-align:right}
.edp-grand{margin-top:20px;border:1px solid #222;background:#b7b7b7;display:grid;grid-template-columns:1fr 100px;padding:4px 8px;text-align:right;font-weight:700}
.edp-signatures{display:grid;grid-template-columns:1fr 1fr;gap:120px;margin:48px 120px 0;text-align:center}.edp-signatures .sig-line{border-top:1px solid #111;margin-bottom:5px}.edp-signatures small{display:block;margin-top:3px}

/* ===== V1.4.2 · TIPOGRAFÍA COTIZACIÓN ===== */
.quote-preview,
.quote-preview .print-section,
.quote-preview .print-section p,
.quote-preview .print-section span,
.quote-preview .print-section div,
.quote-preview .kv-grid,
.quote-preview .commercial-kv,
.quote-preview .bank-kv,
.quote-preview .conditions-grid{
  font-family:Arial,Helvetica,sans-serif!important;
}
.quote-preview .print-section{
  font-size:12px!important;
  line-height:1.4!important;
}
.quote-preview .print-section p,
.quote-preview .kv-grid,
.quote-preview .commercial-kv,
.quote-preview .bank-kv,
.quote-preview .conditions-grid{
  font-size:12px!important;
  line-height:1.4!important;
}

/* ===== V1.4.2 · EDP HH / MONEDA / FIRMAS ===== */
.edp-rates-box{
  display:grid;
  grid-template-columns:150px repeat(3,1fr);
  gap:8px;
  align-items:end;
  border:1px solid var(--border);
  border-radius:10px;
  padding:12px;
  margin:14px 0;
  background:var(--panel);
}
.edp-rate-title{font-weight:800;align-self:center}
.edp-rates-box label{font-size:12px}
.edp-rates-box label span{font-weight:700}
.edp-signers-form{margin-top:8px}
.edp-top-grid{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:28px;align-items:start}
.edp-top-grid .edp-meta{width:100%}
.edp-rate-table{border-collapse:collapse;width:100%;margin-top:0}
.edp-rate-table th,.edp-rate-table td{border:1px solid #222;padding:4px 6px;text-align:left}
.edp-rate-table th{background:#f2f2f2;font-weight:500}
.edp-rate-table td{text-align:right;font-weight:700}

/* ===== V1.4.3 · EDP AVANCE ===== */
.computed-field{
  background:#f2f5f6!important;
  color:#3d4a50!important;
  font-weight:700!important;
}
.edp-items-wrap table{
  min-width:100%!important;
}

/* ===== V1.4.5 · TOTAL EDP MÁS DESTACADO ===== */
.edp-grand{
  min-height:34px!important;
  font-size:14px!important;
  padding:7px 10px!important;
  align-items:center!important;
}
.edp-grand span{
  font-size:14px!important;
  font-weight:800!important;
}
.edp-grand b{
  font-size:17px!important;
  font-weight:900!important;
  line-height:1.1!important;
}

/* ===== V1.5.0 · REDISEÑO CORPORATIVO EDP ===== */
.edp-paper.edp-modern{
  position:relative;
  padding:28px 38px 20px!important;
  font-family:Arial,Helvetica,sans-serif!important;
  color:#222;
  background:#fff;
}
.edp-modern-head{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:13px;border-bottom:1px solid #d8dcde}
.edp-brand{display:flex;align-items:center;gap:16px}.edp-brand img{width:185px!important;height:auto}.edp-green-rule{width:3px;height:46px;background:#6cab3c}
.edp-title-block{text-align:right}.edp-kicker{font-size:8px;letter-spacing:1.6px;color:#6cab3c;font-weight:800;margin-bottom:3px}.edp-title-block h1{margin:0!important;font-size:21px!important;letter-spacing:.5px;color:#34383a}.edp-number{font-size:10px;font-weight:700;color:#70777a;margin-top:5px}
.edp-summary-grid{display:grid;grid-template-columns:1fr 245px;gap:22px;margin-top:15px}
.edp-info-card,.edp-rate-card,.edp-status-card{border:1px solid #d8dcde;background:#fff}
.edp-card-title,.edp-rate-card-title{font-size:9px;font-weight:800;letter-spacing:.8px;color:#34383a;padding:6px 9px;border-bottom:1px solid #d8dcde;border-left:3px solid #6cab3c;background:#f6f7f7}
.edp-info-grid{display:grid;grid-template-columns:145px 1fr;font-size:9px}.edp-info-grid span,.edp-info-grid b{padding:4px 8px;border-bottom:1px solid #eceeef}.edp-info-grid span{color:#687075;font-weight:600}.edp-info-grid b{font-weight:700}
.edp-side-stack{display:flex;flex-direction:column;gap:8px}
.edp-rate-card>div:not(.edp-rate-card-title),.edp-status-card{display:grid;grid-template-columns:1fr 90px}.edp-rate-card>div:not(.edp-rate-card-title) span,.edp-rate-card>div:not(.edp-rate-card-title) b,.edp-status-card span,.edp-status-card b{padding:4px 7px;border-bottom:1px solid #eceeef;font-size:9px}.edp-rate-card b,.edp-status-card b{text-align:right}
.edp-table-title{margin-top:14px;border-bottom:2px solid #555b5e;padding:0 0 5px 5px}.edp-table-title span{font-size:9px;font-weight:800;letter-spacing:.7px;color:#555b5e}
.edp-detail-modern{margin-top:0!important;font-size:8.2px!important;border-collapse:collapse!important}.edp-detail-modern th{background:#555b5e!important;color:#fff!important;border-color:#555b5e!important;font-size:7.6px!important;text-transform:uppercase;padding:5px 3px!important}.edp-detail-modern th:first-child{border-left:3px solid #6cab3c!important}.edp-detail-modern td{border-color:#d9dddf!important;padding:5px 4px!important}.edp-detail-modern tbody tr:nth-child(even){background:#fafafa}.edp-desc-cell{text-align:left!important}
.edp-bottom-grid{display:grid;grid-template-columns:1fr 260px;gap:30px;align-items:end;margin-top:18px}
.edp-signatures-modern{margin:0 20px 0 15px!important;gap:55px!important;font-size:9px}.edp-signatures-modern .sig-line{border-top:1px solid #777!important;margin-bottom:5px!important}.edp-signatures-modern b{font-size:9px}.edp-signatures-modern small{font-size:8px;color:#737a7d}
.edp-total-card{border:1px solid #cfd4d6;font-size:9px}.edp-total-row{display:grid;grid-template-columns:1fr 105px;border-bottom:1px solid #e2e5e6}.edp-total-row span,.edp-total-row b{padding:5px 8px}.edp-total-row b{text-align:right}
.edp-total-final{display:grid;grid-template-columns:1fr 115px;align-items:center;background:#555b5e;color:#fff;border-left:4px solid #6cab3c}.edp-total-final span{padding:8px;font-size:10px;font-weight:800;letter-spacing:.4px}.edp-total-final b{padding:8px;text-align:right;font-size:14px!important;font-weight:900}
.edp-footer{position:absolute;left:38px;right:38px;bottom:15px;color:#747b7e;font-size:7.5px}.edp-footer-rule{height:3px;display:grid;grid-template-columns:120px 1fr;margin-bottom:5px}.edp-footer-rule i{background:#6cab3c}.edp-footer-rule span{background:#555b5e}.edp-footer>div:last-child{display:grid;grid-template-columns:1.2fr 2fr 1fr;gap:10px}.edp-footer>div:last-child span:last-child{text-align:right;font-weight:700;color:#555b5e}

/* ===== V1.5.1 · EDP IGUAL AL BOCETO APROBADO ===== */
.edp-paper.edp-design-v2{
  position:relative;
  width:1056px!important;height:816px!important;
  padding:24px 28px 18px!important;
  box-sizing:border-box!important;
  font-family:Arial,Helvetica,sans-serif!important;
  color:#202426!important;background:#fff!important;
}
.edp-v2-header{display:grid;grid-template-columns:255px 1fr 150px;align-items:center;min-height:92px}
.edp-v2-logo img{width:205px!important;height:auto!important;display:block}
.edp-v2-title{text-align:center}.edp-v2-title h1{font-size:24px!important;margin:0 0 5px!important;letter-spacing:.3px;color:#202426!important}.edp-v2-title div{font-size:12px;font-weight:700}.edp-v2-title div b{color:#669f35;font-size:14px}
.edp-v2-box{justify-self:end;width:135px;border:1px solid #9da3a6}.edp-v2-box>div{display:grid;grid-template-columns:1fr 1fr}.edp-v2-box span,.edp-v2-box b{padding:6px;text-align:center;font-size:10px}.edp-v2-box b{background:#484d50;color:#fff;font-size:13px}.edp-v2-box>div+div{border-top:1px solid #9da3a6}
.edp-v2-greenline{height:2px;background:#679f36;margin:0 0 14px}
.edp-v2-top{display:grid;grid-template-columns:1.15fr .85fr .66fr;gap:18px;align-items:start}
.edp-data-box,.edp-summary-box,.edp-rate-card-v2,.edp-currency-card{border:1px solid #d2d6d8;background:#fff}
.edp-data-box>div,.edp-summary-box>div{display:grid;grid-template-columns:185px 1fr;min-height:26px;border-bottom:1px solid #e4e6e7}.edp-data-box>div:last-child,.edp-summary-box>div:last-child{border-bottom:0}
.edp-data-box span,.edp-data-box b,.edp-summary-box span,.edp-summary-box b{padding:6px 8px;font-size:9px;display:flex;align-items:center}.edp-data-box span,.edp-summary-box span{font-weight:800}.edp-data-box b,.edp-summary-box b{font-weight:600}.edp-summary-box>div{grid-template-columns:1fr 94px}.edp-summary-box b{justify-content:flex-end;font-size:10px}
.edp-rate-head{background:#484d50;color:#fff;padding:8px;text-align:center;font-size:10px;font-weight:800}
.edp-rate-cols{display:grid;grid-template-columns:repeat(3,1fr)}.edp-rate-cols>div{text-align:center;border-right:1px solid #e0e3e4}.edp-rate-cols>div:last-child{border-right:0}.edp-rate-cols span,.edp-rate-cols b{display:block;padding:8px 3px}.edp-rate-cols span{font-size:8px;color:#568c2b;font-weight:800}.edp-rate-cols b{font-size:11px}
.edp-currency-card{text-align:center}.edp-currency-card span{display:block;background:#484d50;color:#fff;padding:8px;font-size:9px;font-weight:800}.edp-currency-card b{display:block;padding:18px 6px;font-size:22px;color:#568c2b}
.edp-v2-section-title{margin-top:13px;padding:5px 0 6px;font-size:9px;font-weight:900;letter-spacing:.7px}
.edp-v2-table{margin-top:0!important;width:100%!important;table-layout:fixed!important;font-size:8.5px!important}
.edp-v2-table th{background:#484d50!important;color:#fff!important;border:1px solid #666!important;padding:7px 4px!important;font-size:7.5px!important;line-height:1.05!important}
.edp-v2-table th:first-child{border-left:3px solid #679f36!important}
.edp-v2-table td{height:27px!important;border:1px solid #d5d9db!important;padding:4px!important;text-align:center}.edp-v2-table .edp-desc-cell{text-align:left!important}
.edp-v2-table th:nth-child(1),.edp-v2-table td:nth-child(1){width:44px!important}.edp-v2-table th:nth-child(2),.edp-v2-table td:nth-child(2){width:85px!important}.edp-v2-table th:nth-child(3),.edp-v2-table td:nth-child(3){width:255px!important}
.edp-empty-row td{color:#7b8082}
.edp-v2-lower{display:grid;grid-template-columns:1fr 360px;gap:18px;margin-top:12px}
.edp-observations{height:108px;border:1px solid #d1d5d7}.edp-observations>div{display:inline-block;background:#484d50;color:#fff;border-left:4px solid #679f36;padding:6px 38px 6px 10px;font-size:9px;font-weight:800;clip-path:polygon(0 0,100% 0,88% 100%,0 100%)}.edp-observations p{margin:9px 12px;font-size:9px;white-space:pre-wrap}
.edp-total-card-v2{align-self:start;border:1px solid #cfd3d5}.edp-total-card-v2>div:not(.edp-total-final-v2){display:grid;grid-template-columns:1fr 120px;border-bottom:1px solid #dde0e1}.edp-total-card-v2 span,.edp-total-card-v2 b{padding:8px 10px;font-size:10px}.edp-total-card-v2 b{text-align:right}
.edp-total-final-v2{display:grid;grid-template-columns:1fr 145px;background:#484d50;color:#fff;border-left:4px solid #679f36}.edp-total-final-v2 span{font-size:13px!important;font-weight:900}.edp-total-final-v2 b{font-size:17px!important;font-weight:900!important}
.edp-v2-signatures{display:grid;grid-template-columns:1fr 1fr;gap:100px;margin:24px 95px 0;text-align:center}.edp-v2-signatures .sig-line{border-top:1px solid #777;margin-bottom:6px}.edp-v2-signatures b{display:block;font-size:9px}.edp-v2-signatures span{display:block;margin-top:3px;font-size:8px;color:#73797c}
.edp-v2-footer{position:absolute;left:28px;right:28px;bottom:13px;font-size:7.5px;color:#666}.edp-v2-footerline{display:grid;grid-template-columns:130px 1fr;height:3px;margin-bottom:5px}.edp-v2-footerline i{background:#679f36}.edp-v2-footerline span{background:#484d50}.edp-v2-footer>div:last-child{display:grid;grid-template-columns:1.1fr 2fr 1fr}.edp-v2-footer>div:last-child span:nth-child(2){text-align:center}.edp-v2-footer>div:last-child span:last-child{text-align:right;font-weight:700}

/* ===== V1.5.2 · AJUSTE FINO DE ESCALA Y TIPOGRAFÍA EDP ===== */
/* Base tipográfica única para que textos y números mantengan la misma escala */
.edp-design-v2,
.edp-design-v2 table,
.edp-design-v2 span,
.edp-design-v2 b,
.edp-design-v2 p,
.edp-design-v2 div{
  font-family:Arial,Helvetica,sans-serif!important;
}
.edp-data-box span,.edp-data-box b,
.edp-summary-box span,.edp-summary-box b,
.edp-rate-card-v2 span,.edp-rate-card-v2 b,
.edp-v2-table td,
.edp-total-card-v2 span,.edp-total-card-v2 b{
  font-size:9px!important;
  line-height:1.15!important;
}
.edp-data-box b,.edp-summary-box b,.edp-v2-table td{
  font-weight:600!important;
  font-variant-numeric:tabular-nums;
}
.edp-v2-table td b{font-size:9px!important;font-weight:800!important}
.edp-v2-table th{font-size:7.5px!important;font-weight:800!important}

/* Caja MONEDA más compacta */
.edp-v2-top{grid-template-columns:1.18fr .92fr 155px!important}
.edp-currency-card{width:155px!important;justify-self:end!important}
.edp-currency-card span{
  padding:6px!important;
  font-size:8px!important;
}
.edp-currency-card b{
  padding:9px 5px!important;
  font-size:14px!important;
  line-height:1!important;
}

/* Caja de valores HH mantiene el mismo ancho compacto */
.edp-rate-card-v2{width:155px!important;justify-self:end!important}
.edp-rate-head{padding:6px!important;font-size:8px!important}
.edp-rate-cols span{font-size:7px!important;padding:6px 2px 3px!important}
.edp-rate-cols b{font-size:9px!important;padding:4px 2px 7px!important}

/* Totales: números consistentes; solo TOTAL EDP se destaca */
.edp-total-card-v2>div:not(.edp-total-final-v2) span,
.edp-total-card-v2>div:not(.edp-total-final-v2) b{
  font-size:9px!important;
}
.edp-total-final-v2 span{font-size:12px!important}
.edp-total-final-v2 b{font-size:15px!important;font-variant-numeric:tabular-nums}

/* Más espacio físico para firmar */
.edp-v2-signatures{
  margin:52px 95px 0!important;
}
.edp-v2-signatures .sig-line{
  margin-bottom:7px!important;
}
.edp-v2-signatures b{font-size:9px!important}
.edp-v2-signatures span{font-size:8px!important}

/* Se reduce un poco el alto del área de observaciones para compensar firmas */
.edp-observations{height:92px!important}


/* V1.6.0 · Proyectos / OT */
.project-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.project-toolbar input{min-width:280px;flex:1}
.project-finance-hint{margin-top:12px;padding:12px 14px;border:1px solid var(--border,#d9dde1);border-radius:10px;background:rgba(0,0,0,.025);font-size:13px}
.dark-theme .project-finance-hint{background:rgba(255,255,255,.035)}
.small-btn.success{border-color:#198754;color:#198754}
#projectsTable td{vertical-align:middle}
#projectsTable small{white-space:nowrap}


/* V1.7.0 · Facturación interna */
.invoice-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.invoice-toolbar input{min-width:320px;flex:1}
.invoice-note{margin-bottom:14px;padding:12px 16px;font-size:13px}
.invoice-note b{color:var(--green,#4f8f19)}
.invoice-summary{margin-top:14px;border:1px solid var(--border,#d9dde1);border-radius:12px;padding:14px 16px;display:grid;gap:5px;background:rgba(0,0,0,.025)}
.invoice-summary span{font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:.04em}
.invoice-summary b{font-size:15px}
.invoice-summary small{color:#687179}
.dark-theme .invoice-summary{background:rgba(255,255,255,.035)}

#invoiceQuoteLabel,#invoiceProjectLabel,#invoiceEdpLabel{align-content:start}


/* V1.7.6 · Detalle y vista previa de factura */
.invoice-items-wrap{border:1px solid var(--border,#d9dde1);border-radius:10px;padding:10px;margin-top:6px;overflow:auto}
.invoice-items-table{width:100%;border-collapse:collapse;font-size:12px}
.invoice-items-table th,.invoice-items-table td{padding:6px;border-bottom:1px solid var(--border,#e4e7ea);vertical-align:middle}
.invoice-items-table input{min-width:70px;width:100%;box-sizing:border-box}
.invoice-items-table td:nth-child(2) input{min-width:220px}
.invoice-preview-host{background:#eef1f3;padding:18px;max-height:78vh;overflow:auto}
.invoice-paper{width:1056px;min-height:720px;margin:auto;background:#fff;color:#18212b;padding:38px 44px;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;box-shadow:0 4px 20px rgba(0,0,0,.12)}
.invoice-preview-header{display:flex;align-items:flex-start;justify-content:space-between;gap:30px}
.invoice-preview-header img{width:190px;height:auto}
.invoice-preview-title{text-align:right}
.invoice-preview-title span{font-size:10px;letter-spacing:.08em;color:#687179;font-weight:700}
.invoice-preview-title h1{font-size:25px;margin:8px 0 5px}
.invoice-preview-title div{font-size:12px}
.invoice-greenline{height:4px;background:#4f8f19;margin:18px 0 20px}
.invoice-preview-meta{display:grid;grid-template-columns:1.2fr 1.2fr .8fr;gap:16px}
.invoice-preview-meta>div{border:1px solid #dce2e6;border-radius:8px;padding:12px;display:grid;gap:4px;font-size:11px}
.invoice-preview-meta b{font-size:10px;color:#4f8f19;letter-spacing:.06em}
.invoice-preview-glosa{margin:18px 0 10px;padding:10px 12px;background:#f6f7f8;border-radius:6px;font-size:12px}
.invoice-preview-table{width:100%;border-collapse:collapse;font-size:11px}
.invoice-preview-table th{background:#f1f3f4;text-align:left;padding:9px 7px;border-bottom:2px solid #9da7ae}
.invoice-preview-table td{padding:9px 7px;border-bottom:1px solid #dfe3e6}
.invoice-preview-table th:nth-last-child(-n+3),.invoice-preview-table td:nth-last-child(-n+3){text-align:right}
.invoice-preview-bottom{display:grid;grid-template-columns:1fr 330px;gap:24px;margin-top:24px;align-items:start}
.invoice-preview-warning{font-size:10px;color:#687179;padding-top:8px}
.invoice-preview-totals{border:1px solid #dce2e6;border-radius:8px;overflow:hidden}
.invoice-preview-totals>div{display:flex;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #e6e9eb;font-size:12px}
.invoice-preview-totals>div:last-child{border-bottom:0}
.invoice-preview-totals .grand{font-size:16px;font-weight:800;background:#f5f7f4;color:#2f6f12}
@media(max-width:1100px){.invoice-paper{width:100%;min-width:900px}}


/* V1.7.7 · Editor técnico enriquecido */
.rich-editor{border:1px solid var(--border,#d7dde1);border-radius:10px;overflow:hidden;background:#fff}
.rich-toolbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:7px 8px;border-bottom:1px solid #dfe4e7;background:#f6f7f8}
.rich-toolbar button{border:1px solid transparent;background:transparent;border-radius:5px;padding:5px 8px;font-size:12px;cursor:pointer}
.rich-toolbar button:hover{background:#fff;border-color:#ccd3d8}
.rich-sep{width:1px;height:22px;background:#d4d9dd;margin:0 3px}
.rich-content{min-height:260px;padding:14px 16px;outline:none;font:14px/1.5 Arial,Helvetica,sans-serif;color:#17202a;overflow:auto}
.rich-content:empty:before{content:attr(data-placeholder);color:#9aa2a8}
.rich-content p{margin:0 0 10px}
.rich-content ul,.rich-content ol{margin:6px 0 10px 24px;padding:0}
.rich-content h3{margin:14px 0 7px;font-size:16px}
.rich-help{display:block;margin-top:6px;color:#6c757d;font-size:11px}
.quote-rich-print{font:12px/1.45 Arial,Helvetica,sans-serif}
.quote-rich-print p{margin:0 0 8px}
.quote-rich-print ul,.quote-rich-print ol{margin:5px 0 10px 22px}
.quote-rich-print h3{font-size:14px;margin:12px 0 6px}

/* V1.7.7 · Factura estilo chileno / referencia Maxxa */
.invoice-paper.maxxa-like{width:1056px;min-height:1366px;padding:28px 26px;background:#fff;color:#122033;font-family:Arial,Helvetica,sans-serif;box-sizing:border-box}
.mx-head{display:grid;grid-template-columns:170px 1fr 285px;gap:16px;align-items:start}
.mx-brand img{width:160px;height:auto;margin-top:6px}
.mx-emitter{display:grid;gap:2px;font-size:11px;line-height:1.15;color:#173153}
.mx-emitter b{font-size:12px}
.mx-taxbox{border:3px solid #e2231a;color:#e2231a;text-align:center;padding:8px 10px;display:grid;gap:3px;font-size:12px}
.mx-taxbox strong{font-size:14px}
.mx-taxbox small{margin-top:6px;font-size:11px}
.mx-status{text-align:right;font-size:9px;margin:4px 0;color:#7a838a;font-weight:700}
.mx-client{border:2px solid #25313a;display:grid;grid-template-columns:1.5fr 1fr .8fr;gap:12px;padding:7px 8px;margin-top:10px;font-size:10px;line-height:1.45}
.mx-client b{color:#203d64;margin-right:5px}
.mx-detail{width:100%;border-collapse:collapse;border-left:2px solid #25313a;border-right:2px solid #25313a;font-size:10px;margin-top:8px;min-height:560px}
.mx-detail thead{border-top:2px solid #25313a;border-bottom:2px solid #25313a}
.mx-detail th{padding:5px 7px;text-align:left;color:#203d64}
.mx-detail td{padding:7px;vertical-align:top;border-bottom:0}
.mx-detail .num,.mx-detail th:nth-child(n+3){text-align:right}
.mx-detail tbody tr:last-child td{padding-bottom:18px}
.mx-bottom{display:grid;grid-template-columns:1fr 190px;gap:8px;margin-top:6px}
.mx-ref{border:2px solid #25313a;min-height:90px}
.mx-ref-head{display:grid;grid-template-columns:2fr 1fr 1fr 2fr;border-bottom:2px solid #25313a;padding:4px 6px;color:#203d64;font-weight:700;font-size:9px}
.mx-internal-stamp{padding:12px;display:grid;gap:4px;font-size:9px;color:#6c757d}
.mx-internal-stamp b{color:#4f8f19}
.mx-totals{border:2px solid #25313a;font-size:10px}
.mx-totals>div{display:flex;justify-content:space-between;padding:6px 8px;border-bottom:1px solid #b8c0c6}
.mx-totals>div:last-child{border-bottom:0}
.mx-total{font-size:12px}
.mx-observation{border:2px solid #25313a;margin-top:8px;padding:8px;font-size:10px;min-height:34px}
.mx-observation b{color:#203d64;margin-right:10px}

#invoiceUfRateLabel,#invoiceUfDateLabel{background:#f8faf7;border-radius:8px;padding:7px}

.uf-online-row{display:grid;grid-template-columns:1fr auto;gap:7px;align-items:center}
.uf-online-row .small-btn{white-space:nowrap;height:38px}
#invoiceUfStatus{display:block;margin-top:4px;color:#66727b;font-size:10px;font-weight:400}

/* V1.7.13 - copia cedible de factura */
.mx-cedible{margin-top:12px;font-size:10px;line-height:1.25;position:relative;padding-bottom:26px}
.mx-receipt-fields{display:flex;gap:10px;justify-content:space-between;align-items:flex-end;white-space:nowrap;font-size:9px}
.mx-receipt-fields span{flex:1}
.mx-receipt-legal{margin-top:5px;font-size:8.5px;line-height:1.2}
.mx-cedible>strong{display:block;text-align:center;margin-top:3px;font-size:20px;color:#e2231a;letter-spacing:.5px}
.invoice-pdf-page{width:1056px}

.invoice-copy-label{width:1056px;margin:12px auto 6px;font-weight:800;font-size:12px;color:#203d64;text-align:left}
.invoice-copy-label.cedible-label{margin-top:28px;color:#e2231a}


/* V1.7.31 - Alineación Planificación / Gantt */
.gantt-adder{
  grid-template-columns:minmax(320px,1fr) 100px 100px 140px !important;
  align-items:stretch;
}
.gantt-adder.manual-mode{
  grid-template-columns:minmax(250px,.8fr) minmax(260px,1fr) 100px 100px 140px !important;
}
.gantt-adder > select,
.gantt-adder > input,
.gantt-adder > button{
  min-height:42px;
  height:42px;
  align-self:stretch;
}
.gantt-adder > button{
  display:flex;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
}
@media(max-width:900px){
  .gantt-adder,
  .gantt-adder.manual-mode{
    grid-template-columns:1fr 100px 100px 140px !important;
  }
  .gantt-adder.manual-mode #ganttTaskName{
    grid-column:1/-1;
  }
}
@media(max-width:650px){
  .gantt-adder,
  .gantt-adder.manual-mode{
    grid-template-columns:1fr !important;
  }
}

/* PDF de factura: conservar bordes y tipografía nítidos durante captura */
.invoice-paper.maxxa-like{
  -webkit-font-smoothing:antialiased;
  text-rendering:geometricPrecision;
}


/* V1.7.31 - Factura: textos de empresa/cliente más grandes en vista previa */
.invoice-paper.maxxa-like .mx-emitter{font-size:14px;line-height:1.18}
.invoice-paper.maxxa-like .mx-emitter b{font-size:15.5px}
.invoice-paper.maxxa-like .mx-taxbox{font-size:13.5px}
.invoice-paper.maxxa-like .mx-taxbox strong{font-size:16px}
.invoice-paper.maxxa-like .mx-taxbox small{font-size:12.5px}
.invoice-paper.maxxa-like .mx-client{font-size:12px;line-height:1.42}
.invoice-paper.maxxa-like .mx-detail{font-size:12px}
.invoice-paper.maxxa-like .mx-detail th{font-size:11.5px}
.invoice-paper.maxxa-like .mx-ref-head{font-size:10.5px}
.invoice-paper.maxxa-like .mx-internal-stamp{font-size:10.5px}
.invoice-paper.maxxa-like .mx-totals{font-size:11.5px}
.invoice-paper.maxxa-like .mx-total{font-size:14px}
.invoice-paper.maxxa-like .mx-observation{font-size:11.5px}


/* V1.7.31 - Diseño aprobado de cotización */
.paper{
  font-family:Arial,Helvetica,sans-serif;
  color:#171717;
}
.paper-header{
  border-bottom:3px solid #67ad35;
  padding-bottom:10px;
}
.paper .print-section{
  margin-top:20px;
}
.paper .print-section > h2{
  position:relative;
  margin:0 0 12px;
  padding:8px 12px 8px 18px;
  background:#414141;
  color:#fff;
  font-size:17px;
  line-height:1.05;
  font-weight:700;
  letter-spacing:.1px;
  border-radius:0;
}
.paper .print-section > h2::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:9px;
  background:#67ad35;
}
.paper .section-intro,
.paper .gantt-duration{
  margin:8px 4px 12px;
  font-size:13px;
}
.paper .gantt-duration{margin-top:10px}
.paper .gantt-table{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  font-size:11px;
}
.paper .gantt-table th{
  background:#414141 !important;
  color:#fff !important;
  font-weight:700;
}
.paper .gantt-table td,
.paper .gantt-table th{
  border:1px solid #d2d2d2;
}
.paper .gantt-table tbody tr:nth-child(even) td{
  background:#ededed;
}
.paper .gantt-table td.on,
.paper .gantt-table td.active,
.paper .gantt-table td.gantt-active{
  background:#67ad35 !important;
  color:#fff !important;
}
.paper .economic-table{
  width:100%;
  border-collapse:collapse;
  font-size:12px;
}
.paper .economic-table thead th{
  background:#414141;
  color:#fff;
  padding:8px 9px;
  text-align:left;
  font-weight:700;
}
.paper .economic-table tbody td{padding:7px 9px;border:0}
.paper .economic-table tbody tr:nth-child(even){background:#e5e5e5}
.paper .approved-economic th:nth-child(1){width:7%}
.paper .approved-economic th:nth-child(2){width:47%}
.paper .approved-economic th:nth-child(3){width:10%}
.paper .approved-economic th:nth-child(4){width:10%}
.paper .approved-economic th:nth-child(5){width:13%}
.paper .approved-economic th:nth-child(6){width:13%}
.paper .approved-summary{
  width:34%;
  margin-left:auto;
  margin-top:5px;
  background:#e3e3e3;
}
.paper .approved-summary > div{
  padding:7px 10px;
  display:flex;
  justify-content:space-between;
}
.paper .approved-summary .grand{
  background:#414141;
  color:#fff;
  font-weight:700;
}
.paper .kv-grid{
  display:block;
}
.paper .kv-grid > div{
  display:grid;
  grid-template-columns:31% 69%;
  gap:0;
  padding:5px 8px;
  font-size:12px;
}
.paper .kv-grid > div:nth-child(even){background:#e3e3e3}
.paper .kv-grid > div > :first-child{font-weight:700}
.paper .terms-section{margin-bottom:0}
.paper .commercial-section{margin-top:20px}
.paper .bank-section{margin-top:20px}

/* V1.7.31 - Vista previa alineada con PDF vectorial aprobado */
.paper .conditions-grid > div,.paper .commercial-kv > div,.paper .bank-kv > div{
 display:grid !important;
 grid-template-columns:190px 1fr !important;
 align-items:start !important;
 width:100% !important;
 min-height:24px;
 padding:5px 8px !important;
 box-sizing:border-box;
}
.paper .conditions-grid > div > *,.paper .commercial-kv > div > *,.paper .bank-kv > div > *{
 min-width:0 !important;width:auto !important;max-width:none !important;
}
.paper .conditions-grid > div:nth-child(even),.paper .commercial-kv > div:nth-child(even),.paper .bank-kv > div:nth-child(even){background:#e6e6e6}
.paper .kv-label{font-weight:700}


/* V1.7.31 - Secciones 5, 6 y 7 según maqueta aprobada */
.paper .conditions-grid > div,
.paper .commercial-kv > div,
.paper .bank-kv > div{
  display:grid !important;
  grid-template-columns:180px 18px minmax(0,1fr) !important;
  column-gap:0 !important;
  align-items:center !important;
  width:100% !important;
  min-height:27px !important;
  padding:4px 8px !important;
  box-sizing:border-box !important;
}
.paper .conditions-grid > div:nth-child(even),
.paper .commercial-kv > div:nth-child(even),
.paper .bank-kv > div:nth-child(even){
  background:#e3e3e3 !important;
}
.paper .conditions-grid .kv-label,
.paper .commercial-kv .kv-label,
.paper .bank-kv .kv-label{
  grid-column:1 !important;
  font-weight:700 !important;
}

.paper .conditions-grid .kv-value,
.paper .commercial-kv .kv-value,
.paper .bank-kv .kv-value{
  grid-column:3 !important;
  min-width:0 !important;
}


/* V1.7.31 - Tabla definitiva secciones 5, 6 y 7 */
.paper .conditions-grid,
.paper .commercial-kv,
.paper .bank-kv{
  width:100% !important;
}

.paper .conditions-grid > div,
.paper .commercial-kv > div,
.paper .bank-kv > div{
  display:grid !important;
  grid-template-columns:220px 28px minmax(0,1fr) !important;
  align-items:center !important;
  min-height:30px !important;
  width:100% !important;
  margin:0 !important;
  padding:0 10px !important;
  box-sizing:border-box !important;
  background:#fff !important;
}

.paper .conditions-grid > div:nth-child(even),
.paper .commercial-kv > div:nth-child(even),
.paper .bank-kv > div:nth-child(even){
  background:#e4e4e4 !important;
}

.paper .conditions-grid .kv-label,
.paper .commercial-kv .kv-label,
.paper .bank-kv .kv-label{
  grid-column:1 !important;
  font-weight:700 !important;
  position:static !important;
}



/* El separador se crea como columna visual independiente */


.paper .conditions-grid .kv-value,
.paper .commercial-kv .kv-value,
.paper .bank-kv .kv-value{
  grid-column:3 !important;
  min-width:0 !important;
}




/* V1.7.31 - Réplica exacta aprobada para secciones 5, 6 y 7 */
.paper .conditions-grid,
.paper .commercial-kv,
.paper .bank-kv{
  display:block !important;
  width:100% !important;
}

.paper .conditions-grid > div,
.paper .commercial-kv > div,
.paper .bank-kv > div{
  position:relative !important;
  display:grid !important;
  grid-template-columns:250px 28px minmax(0,1fr) !important;
  align-items:center !important;
  width:100% !important;
  min-height:31px !important;
  margin:0 !important;
  padding:0 12px !important;
  box-sizing:border-box !important;
  border:0 !important;
  background:#fff !important;
}

.paper .conditions-grid > div:nth-child(even),
.paper .commercial-kv > div:nth-child(even),
.paper .bank-kv > div:nth-child(even){
  background:#e4e4e4 !important;
}



.paper .conditions-grid .kv-label,
.paper .commercial-kv .kv-label,
.paper .bank-kv .kv-label{
  grid-column:1 !important;
  grid-row:1 !important;
  font-weight:700 !important;
  position:static !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
}

.paper .conditions-grid .kv-label::before,
.paper .commercial-kv .kv-label::before,
.paper .bank-kv .kv-label::before,


.paper .conditions-grid .kv-value,
.paper .commercial-kv .kv-value,
.paper .bank-kv .kv-value{
  grid-column:3 !important;
  grid-row:1 !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
}

/* Prohibir cualquier separador vertical residual en estas tablas */
.paper .conditions-grid *,
.paper .commercial-kv *,
.paper .bank-kv *{
  border-left:0 !important;
  border-right:0 !important;
  box-shadow:none !important;
}


/* V1.7.31 - Vista previa definitiva: Etiqueta : Valor */
.paper .conditions-grid,
.paper .commercial-kv,
.paper .bank-kv{
  display:block !important;
  width:100% !important;
}
.paper .conditions-grid .kv-row,
.paper .commercial-kv .kv-row,
.paper .bank-kv .kv-row{
  display:grid !important;
  grid-template-columns:230px 28px minmax(0,1fr) !important;
  align-items:center !important;
  width:100% !important;
  min-height:30px !important;
  margin:0 !important;
  padding:0 12px !important;
  box-sizing:border-box !important;
  border:0 !important;
  background:#fff !important;
}
.paper .conditions-grid .kv-row:nth-child(even),
.paper .commercial-kv .kv-row:nth-child(even),
.paper .bank-kv .kv-row:nth-child(even){
  background:#dcdcdc !important;
}
.paper .conditions-grid .kv-label,
.paper .commercial-kv .kv-label,
.paper .bank-kv .kv-label{
  grid-column:1 !important;
  font-weight:700 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}
.paper .conditions-grid .kv-colon,
.paper .commercial-kv .kv-colon,
.paper .bank-kv .kv-colon{
  grid-column:2 !important;
  justify-self:center !important;
  font-weight:700 !important;
  color:#111 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}
.paper .conditions-grid .kv-value,
.paper .commercial-kv .kv-value,
.paper .bank-kv .kv-value{
  grid-column:3 !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}


/* V1.7.31 - Secciones 5/6/7: una sola fila Etiqueta : Valor, sin pseudo-elementos */
.paper .conditions-grid,
.paper .commercial-kv,
.paper .bank-kv{
  display:block !important;
  width:100% !important;
}
.paper .conditions-grid .kv-row,
.paper .commercial-kv .kv-row,
.paper .bank-kv .kv-row{
  display:grid !important;
  grid-template-columns:230px 28px minmax(0,1fr) !important;
  align-items:center !important;
  width:100% !important;
  min-height:30px !important;
  margin:0 !important;
  padding:0 12px !important;
  box-sizing:border-box !important;
  border:0 !important;
  background:#fff !important;
}
.paper .conditions-grid .kv-row:nth-child(even),
.paper .commercial-kv .kv-row:nth-child(even),
.paper .bank-kv .kv-row:nth-child(even){
  background:#d8d8d8 !important;
}
.paper .conditions-grid .kv-row::before,
.paper .conditions-grid .kv-row::after,
.paper .commercial-kv .kv-row::before,
.paper .commercial-kv .kv-row::after,
.paper .bank-kv .kv-row::before,
.paper .bank-kv .kv-row::after,
.paper .conditions-grid .kv-label::before,
.paper .conditions-grid .kv-label::after,
.paper .commercial-kv .kv-label::before,
.paper .commercial-kv .kv-label::after,
.paper .bank-kv .kv-label::before,
.paper .bank-kv .kv-label::after{
  content:none !important;
  display:none !important;
}
.paper .conditions-grid .kv-label,
.paper .commercial-kv .kv-label,
.paper .bank-kv .kv-label{
  grid-column:1 !important;
  font-weight:700 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}
.paper .conditions-grid .kv-colon,
.paper .commercial-kv .kv-colon,
.paper .bank-kv .kv-colon{
  grid-column:2 !important;
  justify-self:center !important;
  font-weight:700 !important;
  color:#111 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}
.paper .conditions-grid .kv-value,
.paper .commercial-kv .kv-value,
.paper .bank-kv .kv-value{
  grid-column:3 !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}

/* Propuesta económica: Neto blanco, IVA gris, Total gris oscuro */
.paper .approved-summary > div:first-child{
  background:#fff !important;
}
.paper .approved-summary > div:nth-child(2){
  background:#d8d8d8 !important;
}
.paper .approved-summary .grand{
  background:#414141 !important;
  color:#fff !important;
}


/* V1.7.31 - Vista previa fiel al PDF */

/* Pie institucional en TODAS las hojas de vista previa */
.quote-preview .paper,
#quotePreview .paper{
  position:relative !important;
  padding-bottom:72px !important;
}
.paper-footer-preview{
  position:absolute !important;
  left:42px !important;
  right:42px !important;
  bottom:22px !important;
  height:34px !important;
  box-sizing:border-box !important;
  pointer-events:none !important;
}
.paper-footer-text{
  display:flex !important;
  justify-content:space-between !important;
  align-items:center !important;
  font-size:10px !important;
  line-height:1 !important;
  color:#677077 !important;
  margin-bottom:8px !important;
}
.paper-footer-text b{
  color:#31383c !important;
  font-weight:700 !important;
}
.paper-footer-rule{
  position:relative !important;
  height:3px !important;
  background:#4b4b4b !important;
}
.paper-footer-rule span{
  display:block !important;
  width:24% !important;
  height:3px !important;
  background:#67ad35 !important;
}

/* 5, 6 y 7: mismo ancho que la barra gris oscura */
.paper .conditions-grid,
.paper .commercial-kv,
.paper .bank-kv{
  display:block !important;
  width:100% !important;
  max-width:none !important;
  margin:0 !important;
  padding:0 !important;
  box-sizing:border-box !important;
}
.paper .conditions-grid .kv-row,
.paper .commercial-kv .kv-row,
.paper .bank-kv .kv-row{
  width:100% !important;
  max-width:none !important;
  margin:0 !important;
  box-sizing:border-box !important;
  grid-template-columns:230px 28px minmax(0,1fr) !important;
  padding:0 12px !important;
}
.paper .conditions-grid .kv-row:nth-child(even),
.paper .commercial-kv .kv-row:nth-child(even),
.paper .bank-kv .kv-row:nth-child(even){
  background:#d8d8d8 !important;
}

/* V1.9.0.13 · Persistencia backend */
.backend-status{display:block!important;margin-top:3px;font-size:10px!important;font-weight:600}
.backend-status.ok{color:#78c942!important}
.backend-status.pending{color:#d6a53a!important}
.backend-status.error{color:#e26a6a!important}


/* V1.9.0.13 · Paleta sincronizada Vista previa = PDF
   Verde CGL:      #67AD35 = rgb(103,173,53)
   Gris oscuro:    #414141 = rgb(65,65,65)
   Gris alternado: #D8D8D8 = rgb(216,216,216)
*/



}


/* V1.9.0.13 · Portada industrial NATIVA - sin datos superpuestos */
.cover-industrial-native{
  width:816px!important;height:1056px!important;min-height:1056px!important;
  position:relative!important;overflow:hidden!important;margin:0 auto 22px!important;
  background:#fff!important;color:#202426!important;font-family:Arial,Helvetica,sans-serif!important;
  box-sizing:border-box!important;
}
.ind-top-dots,.ind-bottom-dots{position:absolute;display:grid;grid-template-columns:repeat(8,4px);gap:7px}
.ind-top-dots{left:38px;top:28px}.ind-bottom-dots{right:55px;bottom:93px;grid-template-columns:repeat(6,4px)}
.ind-top-dots i,.ind-bottom-dots i{width:4px;height:4px;border-radius:50%;background:#6c9e3d}
.ind-corner{position:absolute;right:0;top:0;width:310px;height:180px;background:#242b2f;clip-path:polygon(32% 0,100% 0,100% 100%,73% 100%,58% 62%,46% 62%);color:white}
.ind-corner div{position:absolute;right:45px;top:28px;font-size:15px;line-height:1.45;letter-spacing:4px}
.ind-corner span{position:absolute;right:55px;top:93px;width:58px;height:2px;background:#6c9e3d}
.ind-brand{position:absolute;left:58px;top:95px;width:545px}.ind-brand img{width:390px!important;height:auto!important;display:block}
.ind-tagline{margin-top:14px;font-size:15px;letter-spacing:4px;color:#5f6669}.ind-tagline b{color:#6c9e3d}
.ind-title{position:absolute;left:52px;top:330px;display:flex;gap:24px}.ind-title-vline{width:3px;height:162px;background:#6c9e3d}
.ind-title strong{display:block;font-size:38px;color:#242b2f;line-height:1}.ind-title h1{margin:7px 0 12px!important;font-size:39px!important;color:#6c9e3d!important;line-height:1!important}
.ind-title-rule{height:4px;display:flex;width:445px}.ind-title-rule i{background:#242b2f;flex:1}.ind-title-rule b{background:#6c9e3d;width:110px}
.ind-title p{font-size:14px;line-height:1.55;letter-spacing:4px;color:#697074;margin:22px 0 0}
.ind-doc{position:absolute;left:612px;top:270px;width:165px;padding-left:28px}.ind-doc-rail{position:absolute;left:0;top:0;width:1px;height:245px;background:#8e9699}.ind-doc-rail i{position:absolute;left:-1px;top:72px;width:4px;height:55px;background:#6c9e3d}
.ind-doc b{display:block;color:#6c9e3d;font-size:17px;margin-bottom:6px}.ind-doc strong,.ind-doc span{font-size:18px}.ind-doc hr{border:0;border-top:1px solid #bcc1c3;margin:18px 0}
.ind-client-data{position:absolute;left:55px;top:555px;width:335px;padding-left:4px;border-left:1px solid #8e9699}
.ind-data-row{display:grid;grid-template-columns:58px 1fr;align-items:center;min-height:75px}.ind-icon{width:42px;height:42px;border:3px solid #6c9e3d;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px}
.ind-data-row b{display:block;font-size:16px;margin-bottom:5px}.ind-data-row div>span{display:block;font-size:14px;max-width:245px;line-height:1.2;border-bottom:1px solid #d8dde0;padding-bottom:11px}
.ind-schematic{position:absolute;right:16px;top:510px;width:465px;height:460px}
.ind-footer-dark{position:absolute;left:0;bottom:0;width:535px;height:70px;background:#242b2f;clip-path:polygon(0 0,100% 0,88% 100%,0 100%);display:flex;align-items:center;padding:0 38px;gap:20px;color:white;font-size:11px;box-sizing:border-box}
.ind-footer-dark i{width:1px;height:34px;background:#9da4a6}.ind-footer-green{position:absolute;right:0;bottom:0;width:300px;height:70px;background:#6c9e3d;clip-path:polygon(12% 0,100% 0,100% 100%,0 100%);display:flex;align-items:center;justify-content:center;color:white;font-size:16px}

/* V1.9.0.13 · refinamiento portada industrial */
.ind-top-dots,.ind-bottom-dots{display:none!important}
.ind-corner{
  width:340px!important;height:205px!important;
  clip-path:polygon(25% 0,100% 0,100% 100%,68% 100%,52% 60%,39% 60%)!important;
}
.ind-corner div{
  right:38px!important;top:31px!important;width:185px!important;
  font-size:15px!important;line-height:1.55!important;letter-spacing:3.5px!important;
  white-space:normal!important;text-align:left!important;
}
.ind-corner span{right:48px!important;top:111px!important;width:72px!important;height:3px!important}
.ind-schematic{right:4px!important;top:500px!important;width:500px!important;height:485px!important}

/* V1.9.0.13 · iconografía semántica y ajuste lema superior */
.ind-corner div{
  right:20px!important;
  width:190px!important;
  top:31px!important;
  letter-spacing:3.2px!important;
}
.ind-corner span{right:38px!important}
.ind-icon svg{width:24px;height:24px;display:block}

/* V1.9.0.13 · iconografía semántica del pie de portada industrial */
.ind-foot-icon svg,.ind-footer-icon svg,.footer-icon svg{
  width:18px;height:18px;display:block;color:#fff;
}
.ind-cover-footer svg,.industrial-cover-footer svg{
  width:18px;height:18px;vertical-align:middle;color:#fff;
}

/* V1.9.0.13 · footer industrial con iconos vectoriales semánticos */
.ind-footer-dark .ind-foot-item,
.ind-footer-green{
  display:flex!important;
  align-items:center!important;
}
.ind-footer-dark .ind-foot-item{
  gap:8px!important;
  white-space:nowrap!important;
}
.ind-footer-dark .ind-foot-item b,
.ind-footer-green b{
  font-weight:700!important;
  font-size:11px!important;
}
.ind-footer-dark .ind-foot-icon,
.ind-footer-green .ind-foot-icon{
  width:20px!important;
  height:20px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#fff!important;
  flex:0 0 20px!important;
}
.ind-footer-dark .ind-foot-icon svg,
.ind-footer-green .ind-foot-icon svg{
  width:20px!important;
  height:20px!important;
  display:block!important;
}
.ind-footer-green{
  gap:10px!important;
  padding-left:44px!important;
  justify-content:flex-start!important;
}

/* ============================================================
   V1.9.0.13.1 · Corrección global modo oscuro
   ============================================================ */
body.dark-theme,
body.dark-theme{
  --bg:#101820;
  --panel:#17232d;
  --panel-2:#1b2934;
  --border:#32424f;
  --text:#f5f7f9;
  --muted:#b8c3cb;
  --input:#121c24;
  --input-border:#3a4a57;
  --hover:#21313d;
}

body.dark-theme,
body.dark-theme .main,
body.dark-theme .content,
body.dark-theme .view,
body.dark-theme .page,
body.dark-theme .modal-card,
body.dark-theme .card,
body.dark-theme .panel,
body.dark-theme .table-wrap,
body.dark-theme .settings-card,
body.dark-theme .preview-shell{
  color:var(--text)!important;
}

body.dark-theme h1, body.dark-theme h2, body.dark-theme h3, body.dark-theme h4,
body.dark-theme label, body.dark-theme th, body.dark-theme td,
body.dark-theme p, body.dark-theme small, body.dark-theme span:not(.status-dot),
body.dark-theme .muted, body.dark-theme .help, body.dark-theme .hint{
  color:inherit;
}

body.dark-theme .muted,
body.dark-theme .help,
body.dark-theme .hint,
body.dark-theme .subtext,
body.dark-theme .description{
  color:var(--muted)!important;
}

body.dark-theme table,
body.dark-theme thead,
body.dark-theme tbody,
body.dark-theme tr,
body.dark-theme td,
body.dark-theme th{
  border-color:var(--border)!important;
}

body.dark-theme thead th{
  color:#f4f7f8!important;
  background:#18242e!important;
}

body.dark-theme tbody tr{
  background:transparent!important;
}
body.dark-theme tbody tr:hover{
  background:var(--hover)!important;
}

body.dark-theme input,
body.dark-theme select,
body.dark-theme textarea,
body.dark-theme [contenteditable="true"],
body.dark-theme .rich-editor,
body.dark-theme .editor-toolbar{
  background:var(--input)!important;
  color:var(--text)!important;
  border-color:var(--input-border)!important;
}

body.dark-theme input::placeholder,
body.dark-theme textarea::placeholder{
  color:#8798a5!important;
}

body.dark-theme input:disabled,
body.dark-theme select:disabled,
body.dark-theme textarea:disabled,
body.dark-theme input[readonly],
body.dark-theme textarea[readonly]{
  background:#1b2730!important;
  color:#9fb0bc!important;
  opacity:1!important;
}

body.dark-theme select option{
  background:#14202a!important;
  color:#f5f7f9!important;
}

/* Badges/estados: evitar texto blanco sobre badge blanco */
body.dark-theme .badge,
body.dark-theme .status,
body.dark-theme .pill,
body.dark-theme .role-badge,
body.dark-theme .state-badge,
body.dark-theme .chip,
body.dark-theme [class*="badge"],
body.dark-theme [class*="pill"]{
  background:#263845!important;
  color:#eef4f7!important;
  border-color:#405462!important;
}

body.dark-theme .badge.success,
body.dark-theme .status.success,
body.dark-theme .pill.success,
body.dark-theme .active-badge,
body.dark-theme .status-active{
  background:#203d2b!important;
  color:#9fe0ae!important;
  border-color:#356a47!important;
}

body.dark-theme .badge.warning,
body.dark-theme .status.warning,
body.dark-theme .pill.warning{
  background:#4a3b1d!important;
  color:#f2d886!important;
  border-color:#715b2e!important;
}

body.dark-theme .badge.danger,
body.dark-theme .status.danger,
body.dark-theme .pill.danger{
  background:#47252a!important;
  color:#f2a4ac!important;
  border-color:#713840!important;
}

body.dark-theme button.secondary,
body.dark-theme .secondary,
body.dark-theme .btn-secondary{
  background:#1b2934!important;
  color:#f5f7f9!important;
  border-color:#465866!important;
}
body.dark-theme button.secondary:hover,
body.dark-theme .secondary:hover,
body.dark-theme .btn-secondary:hover{
  background:#253642!important;
}

body.dark-theme .modal,
body.dark-theme .modal-card,
body.dark-theme .dialog,
body.dark-theme .dropdown-menu,
body.dark-theme .menu-popover{
  color:var(--text)!important;
}

body.dark-theme .modal-card,
body.dark-theme .dialog,
body.dark-theme .dropdown-menu,
body.dark-theme .menu-popover{
  background:#17232d!important;
  border-color:#32424f!important;
}

body.dark-theme .notice,
body.dark-theme .info-box,
body.dark-theme .alert:not(.danger){
  background:#17291f!important;
  color:#d8eadc!important;
  border-color:#355c40!important;
}

/* Usuarios / Auditoría */
body.dark-theme #usersView td,
body.dark-theme #usersView th,
body.dark-theme #auditView td,
body.dark-theme #auditView th,
body.dark-theme .user-table td,
body.dark-theme .user-table th,
body.dark-theme .audit-table td,
body.dark-theme .audit-table th{
  color:#f4f7f8!important;
}

body.dark-theme #usersView .badge,
body.dark-theme #usersView .status,
body.dark-theme #usersView .pill,
body.dark-theme .user-table .badge,
body.dark-theme .user-table .status,
body.dark-theme .user-table .pill{
  background:#293b48!important;
  color:#f5f7f9!important;
}

/* Vista previa y documentos SIEMPRE claros, independiente del tema del ERP */
body.dark-theme #quotePreview,
body.dark-theme #invoicePreview,
body.dark-theme #edpPreview,
body.dark-theme .print-preview,
body.dark-theme .preview-page,
body.dark-theme .paper,
body.dark-theme .cover-page,
body.dark-theme .cover-industrial-native,
body.dark-theme .cover-v2{
  color:#111!important;
  background:#fff!important;
}

body.dark-theme #quotePreview *,
body.dark-theme #invoicePreview *,
body.dark-theme #edpPreview *,
body.dark-theme .print-preview *,
body.dark-theme .preview-page *,
body.dark-theme .paper *,
body.dark-theme .cover-page *{
  --text:#111;
}

/* Mantener colores de documentos definidos por sus propias clases */
body.dark-theme .cover-page h1,
body.dark-theme .cover-page h2,
body.dark-theme .cover-page h3,
body.dark-theme .cover-page p,
body.dark-theme .cover-page span,
body.dark-theme .cover-page b,
body.dark-theme .cover-page strong,
body.dark-theme .preview-page h1,
body.dark-theme .preview-page h2,
body.dark-theme .preview-page h3,
body.dark-theme .preview-page p,
body.dark-theme .preview-page span,
body.dark-theme .preview-page b,
body.dark-theme .preview-page strong{
  color:revert;
}

/* ============================================================
   V1.9.0.13 · Corrección final modo oscuro
   ============================================================ */

/* --- Configuración / tarjetas de empresa --- */
body.dark-theme .company-card,
body.dark-theme .company-config-card,
body.dark-theme .config-company-card,
body.dark-theme .settings-company,
body.dark-theme .empresa-card,
body.dark-theme [class*="company-card"],
body.dark-theme [class*="empresa-card"]{
  background:#17232d!important;
  color:#f4f7f8!important;
  border-color:#334653!important;
  box-shadow:none!important;
}

body.dark-theme .company-card *,
body.dark-theme .company-config-card *,
body.dark-theme .config-company-card *,
body.dark-theme .settings-company *,
body.dark-theme .empresa-card *,
body.dark-theme [class*="company-card"] *,
body.dark-theme [class*="empresa-card"] *{
  color:inherit;
}

body.dark-theme .company-card h3,
body.dark-theme .company-card h4,
body.dark-theme .company-config-card h3,
body.dark-theme .config-company-card h3,
body.dark-theme .empresa-card h3{
  color:#f5f7f9!important;
}

body.dark-theme .company-card .label,
body.dark-theme .company-card dt,
body.dark-theme .company-config-card .label,
body.dark-theme .config-company-card .label,
body.dark-theme .empresa-card .label{
  color:#b8c3cb!important;
}

body.dark-theme .company-card .value,
body.dark-theme .company-card dd,
body.dark-theme .company-config-card .value,
body.dark-theme .config-company-card .value,
body.dark-theme .empresa-card .value{
  color:#eef3f6!important;
}

/* --- Botones claros en modo oscuro --- */
body.dark-theme button:not(.primary):not(.danger):not(.success),
body.dark-theme .btn:not(.primary):not(.danger):not(.success){
  background:#1c2a35!important;
  color:#f4f7f8!important;
  border-color:#415462!important;
}

body.dark-theme button:not(.primary):not(.danger):not(.success):hover,
body.dark-theme .btn:not(.primary):not(.danger):not(.success):hover{
  background:#263845!important;
}

/* Mantener botón verde principal */
body.dark-theme button.primary,
body.dark-theme .primary,
body.dark-theme .btn-primary{
  color:#fff!important;
}

/* --- Badges / pills / estados --- */
body.dark-theme .badge,
body.dark-theme .pill,
body.dark-theme .status,
body.dark-theme .tag,
body.dark-theme .chip,
body.dark-theme [class*="badge"],
body.dark-theme [class*="pill"],
body.dark-theme [class*="status"]{
  background:#2a3d4a!important;
  color:#f5f7f9!important;
  border:1px solid #48606f!important;
  opacity:1!important;
}

/* Estados semánticos */
body.dark-theme .badge.success,
body.dark-theme .pill.success,
body.dark-theme .status.success,
body.dark-theme .badge.active,
body.dark-theme .pill.active,
body.dark-theme .status.active,
body.dark-theme [class*="status"][class*="active"],
body.dark-theme [class*="badge"][class*="active"]{
  background:#1f432d!important;
  color:#a8e4b7!important;
  border-color:#3a7650!important;
}

body.dark-theme .badge.warning,
body.dark-theme .pill.warning,
body.dark-theme .status.warning{
  background:#4d3d1e!important;
  color:#f2d889!important;
  border-color:#755f30!important;
}

body.dark-theme .badge.danger,
body.dark-theme .pill.danger,
body.dark-theme .status.danger,
body.dark-theme [class*="status"][class*="cancel"],
body.dark-theme [class*="badge"][class*="cancel"]{
  background:#4a262c!important;
  color:#f0a7af!important;
  border-color:#793c45!important;
}

/* --- Usuarios: rol y estado nunca blancos --- */
body.dark-theme .user-role,
body.dark-theme .user-status,
body.dark-theme .role-badge,
body.dark-theme .state-badge,
body.dark-theme .user-table td:nth-child(3) > *,
body.dark-theme .user-table td:nth-child(5) > *,
body.dark-theme #usersView td:nth-child(3) > *,
body.dark-theme #usersView td:nth-child(5) > *{
  background:#2a3d4a!important;
  color:#f5f7f9!important;
  border-color:#48606f!important;
}

/* Si son spans sin clase específica pero con fondo claro inline/heredado */
body.dark-theme #usersView td:nth-child(3) span,
body.dark-theme #usersView td:nth-child(5) span,
body.dark-theme .user-table td:nth-child(3) span,
body.dark-theme .user-table td:nth-child(5) span{
  background:#2a3d4a!important;
  color:#f5f7f9!important;
}

/* --- Cotizaciones: ESTADO --- */
body.dark-theme #quotesView td:nth-child(6) span,
body.dark-theme #quotesView td:nth-child(6) .badge,
body.dark-theme #quotesView td:nth-child(6) .status,
body.dark-theme .quotes-table td:nth-child(6) span,
body.dark-theme .quotes-table td:nth-child(6) .badge,
body.dark-theme .quotes-table td:nth-child(6) .status,
body.dark-theme .quote-status{
  background:#2a3d4a!important;
  color:#f5f7f9!important;
  border:1px solid #48606f!important;
  opacity:1!important;
}

/* --- Tablas oscuras consistentes --- */
body.dark-theme .table-wrap,
body.dark-theme table{
  background:#17232d!important;
}
body.dark-theme tbody td{
  color:#eef3f6!important;
}
body.dark-theme tbody tr{
  border-color:#334653!important;
}

/* --- Inputs/selects/modales --- */
body.dark-theme .modal-content,
body.dark-theme .modal-card,
body.dark-theme .form-card,
body.dark-theme .editor-card{
  background:#17232d!important;
  color:#f4f7f8!important;
  border-color:#334653!important;
}

/* --- Avisos informativos --- */
body.dark-theme .notice,
body.dark-theme .info-box,
body.dark-theme .alert-info,
body.dark-theme .security-note{
  background:#17291f!important;
  color:#d8eadc!important;
  border-color:#355c40!important;
}

/* --- Salvaguarda: documentos nunca heredan dark mode --- */
body.dark-theme .preview-page,
body.dark-theme .cover-page,
body.dark-theme .paper,
body.dark-theme .print-document,
body.dark-theme .quote-document,
body.dark-theme .invoice-document,
body.dark-theme .edp-document{
  background:#fff!important;
  color:#111!important;
}

/* ============================================================
   V1.9.0.13 · FIX RAÍZ: la aplicación usa body.dark-theme
   ============================================================ */

body.dark-theme .company-card{
  background:#17232d!important;
  color:#eef3f6!important;
  border:1px solid #334653!important;
  box-shadow:none!important;
}
body.dark-theme .company-card-head h3{
  color:#f5f7f9!important;
}
body.dark-theme .company-card-head small{
  color:#aebbc5!important;
}
body.dark-theme .company-card dl{
  color:#eef3f6!important;
}
body.dark-theme .company-card dt{
  color:#b9c5cd!important;
}
body.dark-theme .company-card dd{
  color:#eef3f6!important;
}
body.dark-theme .company-card .small-btn{
  background:#1c2a35!important;
  color:#f4f7f8!important;
  border-color:#415462!important;
}

/* Roles y estados: forzar contraste en el tema realmente activo */
body.dark-theme .role-badge,
body.dark-theme .mx-status{
  background:#2a3d4a!important;
  color:#f5f7f9!important;
  border:1px solid #48606f!important;
  opacity:1!important;
}

/* Badges genéricos */
body.dark-theme .badge,
body.dark-theme .pill,
body.dark-theme .status,
body.dark-theme [class*="badge"],
body.dark-theme [class*="status"]{
  color:#f5f7f9!important;
}

/* Botones pequeños no primarios */
body.dark-theme .small-btn:not(.success):not(.danger){
  background:#1c2a35!important;
  color:#f4f7f8!important;
  border-color:#415462!important;
}
body.dark-theme .small-btn:not(.success):not(.danger):hover{
  background:#263845!important;
}

/* Inputs / selects / textarea */
body.dark-theme input,
body.dark-theme select,
body.dark-theme textarea{
  background:#121c24!important;
  color:#f5f7f9!important;
  border-color:#3a4a57!important;
}
body.dark-theme select option{
  background:#14202a!important;
  color:#f5f7f9!important;
}

/* Modales */
body.dark-theme .modal-card{
  background:#17232d!important;
  color:#f4f7f8!important;
  border-color:#334653!important;
}

/* Documentos impresos siguen claros */
body.dark-theme .preview-page,
body.dark-theme .cover-page,
body.dark-theme .paper,
body.dark-theme .print-document{
  background:#fff!important;
  color:#111!important;
}

/* V1.9.0.13 · Vista previa aislada del tema oscuro */
body.dark-theme #previewContent,
body.dark-theme #quotePreview,
body.dark-theme #invoicePreview,
body.dark-theme #edpPreview,
body.dark-theme .print-preview{color:#111!important}

body.dark-theme #previewContent .preview-page,
body.dark-theme #previewContent .paper,
body.dark-theme #previewContent .cover-page,
body.dark-theme #quotePreview .preview-page,
body.dark-theme #quotePreview .paper,
body.dark-theme #quotePreview .cover-page,
body.dark-theme #invoicePreview .preview-page,
body.dark-theme #edpPreview .preview-page,
body.dark-theme .print-preview .preview-page,
body.dark-theme .print-preview .paper,
body.dark-theme .print-preview .cover-page{
  background:#fff!important;color:#111!important;color-scheme:light!important
}

/* Portada industrial */
body.dark-theme .cover-industrial-native{background:#fff!important;color:#202426!important}
body.dark-theme .cover-industrial-native .ind-title strong{color:#242b2f!important}
body.dark-theme .cover-industrial-native .ind-title h1{color:#6c9e3d!important}
body.dark-theme .cover-industrial-native .ind-title p,
body.dark-theme .cover-industrial-native .ind-tagline{color:#697074!important}
body.dark-theme .cover-industrial-native .ind-tagline b,
body.dark-theme .cover-industrial-native .ind-doc b{color:#6c9e3d!important}
body.dark-theme .cover-industrial-native .ind-doc strong,
body.dark-theme .cover-industrial-native .ind-doc span,
body.dark-theme .cover-industrial-native .ind-data-row b,
body.dark-theme .cover-industrial-native .ind-data-row div>span{color:#202426!important}
body.dark-theme .cover-industrial-native .ind-corner *,
body.dark-theme .cover-industrial-native .ind-footer-dark *,
body.dark-theme .cover-industrial-native .ind-footer-green *{color:#fff!important}

/* Contenido interior siempre tema corporativo claro */
body.dark-theme #previewContent table,
body.dark-theme #quotePreview table,
body.dark-theme #invoicePreview table,
body.dark-theme #edpPreview table,
body.dark-theme .print-preview table{background:#fff!important;color:#111!important}
body.dark-theme #previewContent thead th,
body.dark-theme #quotePreview thead th,
body.dark-theme #invoicePreview thead th,
body.dark-theme #edpPreview thead th,
body.dark-theme .print-preview thead th{background:#444!important;color:#fff!important}
body.dark-theme #previewContent tbody tr,
body.dark-theme #quotePreview tbody tr,
body.dark-theme #invoicePreview tbody tr,
body.dark-theme #edpPreview tbody tr,
body.dark-theme .print-preview tbody tr{background:#fff!important}
body.dark-theme #previewContent tbody tr:nth-child(even),
body.dark-theme #quotePreview tbody tr:nth-child(even),
body.dark-theme #invoicePreview tbody tr:nth-child(even),
body.dark-theme #edpPreview tbody tr:nth-child(even),
body.dark-theme .print-preview tbody tr:nth-child(even){background:#dedede!important}
body.dark-theme #previewContent tbody td,
body.dark-theme #quotePreview tbody td,
body.dark-theme #invoicePreview tbody td,
body.dark-theme #edpPreview tbody td,
body.dark-theme .print-preview tbody td{color:#111!important}
body.dark-theme #previewContent .print-section h2,
body.dark-theme #quotePreview .print-section h2,
body.dark-theme #invoicePreview .print-section h2,
body.dark-theme #edpPreview .print-section h2{background:#444!important;color:#fff!important}
body.dark-theme #previewContent p,
body.dark-theme #previewContent td,
body.dark-theme #previewContent dt,
body.dark-theme #previewContent dd,
body.dark-theme #quotePreview p,
body.dark-theme #quotePreview td,
body.dark-theme #quotePreview dt,
body.dark-theme #quotePreview dd{color:#111!important}

/* V1.9.0.13
   REGLA DE DOCUMENTOS:
   La portada industrial del PDF se obtiene directamente de .cover-industrial-native.
   No mantener un segundo diseño paralelo para PDF.
*/

/* V1.9.0.13
   La portada PDF reutiliza exactamente el DOM de Vista previa.
   Los SVG y elementos con clip-path se refuerzan desde los mismos nodos
   para evitar omisiones o diferencias de renderizado.
*/

/* V1.9.0.13
   Exportación robusta de portada:
   - captura base segura sin foreignObjectRendering;
   - SVG técnico reforzado desde el mismo SVG de Vista previa;
   - esquina y pie reforzados sin abortar el PDF si el navegador no los rasteriza.
*/

/* V1.9.0.13 · Exportador de portada de una sola pasada */
.pdf-cover-export-host{
  position:fixed!important;
  left:-10000px!important;
  top:0!important;
  width:816px!important;
  height:1056px!important;
  overflow:hidden!important;
  pointer-events:none!important;
  z-index:-99999!important;
  background:#fff!important;
}
.pdf-cover-export-clone{
  width:816px!important;
  height:1056px!important;
  min-height:1056px!important;
  margin:0!important;
  background:#fff!important;
  color-scheme:light!important;
}
.pdf-cover-export-clone .pdf-polygon-bg{
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  width:100%!important;
  height:100%!important;
  pointer-events:none!important;
}
.pdf-cover-export-clone .pdf-polygon-bg svg{
  display:block!important;
  width:100%!important;
  height:100%!important;
}
.pdf-cover-export-clone .ind-corner>div,
.pdf-cover-export-clone .ind-corner>span,
.pdf-cover-export-clone .ind-footer-dark>*:not(.pdf-polygon-bg),
.pdf-cover-export-clone .ind-footer-green>*:not(.pdf-polygon-bg){
  position:relative;
  z-index:1;
}


/* V1.9.0.13 · PDF: la portada se captura desde el DOM visible.
   Los SVG se rasterizan temporalmente a canvas; el diseño CSS no se modifica. */

/* ============================================================
   V1.9.1.1 · Autenticación local segura
   ============================================================ */
.auth-gate{
  position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;
  padding:24px;background:#f3f6f7;
}
.auth-gate.hidden{display:none!important}
body.auth-locked{overflow:hidden}
body.auth-locked #app{visibility:hidden}
.auth-card{
  width:min(440px,100%);background:#fff;border:1px solid #d9e0e4;border-radius:18px;
  box-shadow:0 18px 50px rgba(20,33,42,.15);padding:34px 36px;color:#17232d;
}
.auth-logo{display:block;width:220px;max-width:70%;height:auto;margin:0 auto 26px}
.auth-card h1{margin:0 0 8px;font-size:28px}
.auth-card p{margin:0 0 24px;color:#64717a;line-height:1.45}
.auth-card form{display:grid;gap:15px}
.auth-card label,.auth-password-card label{display:grid;gap:7px;font-weight:700;font-size:13px}
.auth-card input,.auth-password-card input{
  width:100%;box-sizing:border-box;border:1px solid #cbd5db;border-radius:8px;
  padding:12px 13px;font:inherit;background:#fff;color:#17232d;
}
.auth-card input:focus,.auth-password-card input:focus{outline:2px solid rgba(103,173,53,.25);border-color:#67ad35}
.auth-submit{width:100%;padding:13px!important;margin-top:4px}
.auth-error{min-height:18px;color:#c74242;font-size:12px;font-weight:600}
.auth-help{color:#68757e;font-size:11px;margin-top:-9px}
.user-box{align-items:flex-start!important}
.user-box-info{min-width:0;display:flex;flex-direction:column}
.session-actions{display:flex;gap:6px;margin-top:7px}
.session-actions button{
  padding:3px 7px;border:1px solid rgba(255,255,255,.18);border-radius:5px;
  background:transparent;color:#d7e1e7;font-size:10px;cursor:pointer;
}
.session-actions button:hover{background:rgba(255,255,255,.08)}
.auth-password-card{max-width:430px}
body.dark-theme .auth-gate{background:#0f171e}
body.dark-theme .auth-card{
  background:#17232d;color:#f4f7f8;border-color:#334653;
}
body.dark-theme .auth-card p,body.dark-theme .auth-help{color:#b5c0c8!important}
body.dark-theme .auth-card input,body.dark-theme .auth-password-card input{
  background:#111b23!important;color:#f5f7f9!important;border-color:#40515e!important;
}

/* V1.9.2 · credenciales individuales */
.access-user-summary{
  display:flex;flex-direction:column;gap:3px;padding:12px 14px;margin:4px 0 2px;
  border:1px solid #d9e1e5;border-radius:8px;background:#f6f8f9;
}
.access-user-summary b{font-size:14px}
.access-user-summary span{font-size:12px;color:#66747d}
body.dark-theme .access-user-summary{
  background:#111b23;border-color:#40515e;color:#f5f7f9;
}
body.dark-theme .access-user-summary span{color:#b5c0c8!important}

/* V1.9.3 · Roles y permisos */
[hidden]{display:none!important}

/* V1.9.4 · Dashboard financiero */
.finance-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:14px 0 18px}.finance-kpis article{background:var(--panel,#fff);border:1px solid #dfe5e8;border-radius:12px;padding:16px;box-shadow:0 2px 8px rgba(0,0,0,.035)}.finance-kpis span{display:block;font-size:12px;color:#687780;margin-bottom:7px}.finance-kpis strong{display:block;font-size:21px;line-height:1.2}.finance-kpis small{display:block;margin-top:6px;color:#7a858c}.dashboard-finance-grid{margin-bottom:18px}.finance-alert{cursor:pointer;transition:transform .12s ease,border-color .12s ease}.finance-alert:hover{transform:translateY(-1px);border-color:#91a3ad}.finance-overdue{border-left:4px solid #c94a4a}.finance-soon{border-left:4px solid #d18a2e}.dashboard-empty{color:#75828a;margin:12px 2px}body.dark-theme .finance-kpis article{background:#17232d;border-color:#334653}body.dark-theme .finance-kpis span,body.dark-theme .finance-kpis small,.dark-theme .dashboard-empty{color:#b5c0c8}@media(max-width:1000px){.finance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.finance-kpis{grid-template-columns:1fr}}

/* V1.9.5 · Reportes */
.report-filters{display:flex;gap:10px;flex-wrap:wrap}.report-filters select,.report-filters input{min-width:150px}.report-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:16px 0}.report-kpis article{background:var(--panel,#fff);border:1px solid #dfe5e8;border-radius:12px;padding:16px}.report-kpis span{display:block;font-size:12px;color:#687780}.report-kpis strong{display:block;font-size:24px;margin:6px 0}.report-kpis small{color:#75828a}.report-grid{align-items:start}body.dark-theme .report-kpis article{background:#17232d;border-color:#334653}body.dark-theme .report-kpis span,body.dark-theme .report-kpis small{color:#b5c0c8}@media(max-width:850px){.report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:550px){.report-kpis{grid-template-columns:1fr}}

/* V1.9.7 · Ficha de proyecto y trazabilidad documental */
.primary-outline{border-color:#2b7d65!important;color:#226b57!important;background:transparent!important}
.project-detail-card{width:min(1180px,96vw);max-width:1180px;max-height:92vh;overflow:auto}
.project-detail-body{display:flex;flex-direction:column;gap:18px}
.project-detail-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.project-detail-summary>div{border:1px solid #dde5e8;border-radius:10px;padding:12px;background:#f8faf9}
.project-detail-summary span,.project-detail-meta span,.project-notes span{display:block;font-size:11px;color:#6b7b82;text-transform:uppercase;letter-spacing:.035em;margin-bottom:5px}
.project-detail-summary strong{font-size:16px}
.project-detail-section{border:1px solid #dfe6e8;border-radius:12px;padding:16px;background:#fff}
.project-detail-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px}
.project-detail-section-head h3{margin:0}.project-detail-section-head p{margin:3px 0 0;color:#748088;font-size:12px}
.project-detail-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.project-detail-meta>div{padding:8px 0;border-bottom:1px solid #edf1f2}
.project-notes{margin-top:14px;padding:12px;border-radius:9px;background:#f5f8f7}
.project-notes p{margin:0;white-space:pre-wrap}
.project-trace{position:relative;display:flex;flex-direction:column;gap:10px}
.project-trace:before{content:"";position:absolute;left:18px;top:28px;bottom:28px;width:2px;background:#d9e4df}
.trace-card{position:relative;z-index:1;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #dfe6e8;border-radius:10px;padding:11px;background:#fff}
.trace-icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#277a61;color:white;font-weight:700;border:4px solid #fff;box-shadow:0 0 0 1px #cddbd5}
.trace-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.trace-title span{display:block;font-size:11px;color:#718087;text-transform:uppercase}.trace-title b{font-size:14px}
.trace-info{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:5px;font-size:12px;color:#68767d}.trace-info span+span:before{content:"•";margin-right:10px;color:#a7b1b5}
.trace-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.trace-empty{background:#fafbfb;color:#68767d}.trace-empty .trace-icon{background:#89969b}.trace-empty small{display:block;margin-top:4px}
.trace-quote{border-left:4px solid #287f66}.trace-edp{border-left:4px solid #397aa6}.trace-invoice{border-left:4px solid #9a7235}
body.dark-theme .project-detail-summary>div,body.dark-theme .project-detail-section,body.dark-theme .trace-card{background:#17232d;border-color:#334653}
body.dark-theme .project-detail-summary>div,body.dark-theme .trace-empty,body.dark-theme .project-notes{background:#1b2934}
body.dark-theme .project-detail-meta>div{border-color:#30424e}
body.dark-theme .project-detail-summary span,body.dark-theme .project-detail-meta span,body.dark-theme .project-notes span,body.dark-theme .project-detail-section-head p,body.dark-theme .trace-title span,body.dark-theme .trace-info{color:#aebbc3}
body.dark-theme .primary-outline{color:#72c1a7!important;border-color:#4b9c83!important}
@media(max-width:900px){.project-detail-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.project-detail-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.trace-card{grid-template-columns:38px minmax(0,1fr)}.trace-actions{grid-column:2;justify-content:flex-start}}
@media(max-width:620px){.project-detail-summary,.project-detail-meta{grid-template-columns:1fr}.project-detail-section-head{align-items:flex-start;flex-direction:column}.trace-info{flex-direction:column;gap:3px}.trace-info span+span:before{content:""}}

/* V1.9.7.1 - Factura: separar etiquetas y valores de Fma. de Pago / Tpo. de Compra */
.invoice-paper.maxxa-like .mx-client>div:nth-child(3)>div{
  display:grid;
  grid-template-columns:105px minmax(0,1fr);
  column-gap:8px;
  align-items:baseline;
}
.invoice-paper.maxxa-like .mx-client>div:nth-child(3)>div b{
  margin-right:0;
  white-space:nowrap;
}

/* V2.0.1 · sincronización automática entre dispositivos */
.cgl-sync-toast{position:fixed;right:18px;bottom:18px;z-index:5000;padding:9px 13px;border-radius:9px;background:rgba(30,38,43,.92);color:#fff;font-size:12px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.18);opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.cgl-sync-toast.show{opacity:1;transform:translateY(0)}
@media(max-width:760px){.cgl-sync-toast{right:12px;bottom:12px}}
