/* Tarificador Ponter: la paleta de Ponter (la misma que Presupuestos Juridico y el portal de incidencias).
   Los estados nunca se distinguen solo por color: siempre llevan icono y texto. */
:root {
  --verde: #506A6A; --verde-os: #3A4F4F; --verde-cl: #E6EDEC; --ambar: #D99B2B; --ambar-cl: #FBF1DE;
  --gris: #6E7C7C; --banda: #F1F5F4; --linea: #DCE4E2; --tinta: #1C2624; --papel: #FFFFFF;
  --ladrillo: #9E4B33; --ladrillo-cl: #F6E7E2; --azul: #2F5D8A; --azul-cl: #E4EDF6;
  --radio: 10px; --sombra: 0 1px 2px rgba(0,0,0,.08), 0 8px 24px -12px rgba(0,0,0,.25);
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--banda); color: var(--tinta); font: 14px/1.45 "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3 { margin: 0; line-height: 1.2; }
h2 { font-size: 16px; font-weight: 700; }
h3 { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--verde-os); }
.oculto, [hidden] { display: none !important; }
.num { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.suave { color: var(--gris); }
.peq { font-size: 12px; }

/* Cabecera */
header.barra { background: var(--verde); color: #fff; display: flex; align-items: center; gap: 18px; padding: 10px 20px; flex-wrap: wrap; }
header.barra img { height: 34px; display: block; }
header.barra .titulo { font-weight: 700; font-size: 17px; letter-spacing: .01em; }
header.barra .titulo small { display: block; font-weight: 400; font-size: 12px; opacity: .8; }
header.barra .yo { margin-left: auto; font-size: 12px; opacity: .9; text-align: right; }
nav.pestanas { display: flex; gap: 2px; background: var(--verde-os); padding: 0 12px; overflow-x: auto; }
nav.pestanas button { background: none; border: 0; color: #fff; opacity: .75; padding: 11px 14px; cursor: pointer; border-bottom: 3px solid transparent; white-space: nowrap; }
nav.pestanas button:hover { opacity: 1; }
nav.pestanas button.activa { opacity: 1; border-bottom-color: var(--ambar); font-weight: 600; }
.contador { background: var(--ambar); color: var(--tinta); border-radius: 99px; padding: 0 7px; font-size: 11px; font-weight: 700; margin-left: 4px; }
.demo-aviso { background: var(--ambar-cl); color: var(--tinta); border-bottom: 1px solid var(--ambar); padding: 6px 20px; font-size: 12px; }

main { padding: 18px 20px 40px; max-width: 1400px; margin: 0 auto; }
.rejilla { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 18px; align-items: start; }
@media (max-width: 980px) { .rejilla { grid-template-columns: 1fr; } }
.tarjeta { background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra); padding: 16px 18px; margin-bottom: 16px; }
.tarjeta > h3 { margin-bottom: 12px; }
.fila { display: flex; gap: 12px; flex-wrap: wrap; }
.fila > * { flex: 1 1 180px; min-width: 0; }
label.campo { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 600; color: var(--verde-os); }
label.campo .ayuda { font-weight: 400; color: var(--gris); font-size: 11.5px; }
input[type=text], input[type=number], input[type=search], input[type=date], select, textarea {
  border: 1px solid var(--linea); border-radius: 8px; padding: 8px 10px; background: #fff; width: 100%; min-width: 0; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--verde); outline-offset: -1px; border-color: var(--verde); }
textarea { resize: vertical; min-height: 60px; }
label.check { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; cursor: pointer; }
label.check input { margin-top: 3px; accent-color: var(--verde); }

.btn { border: 1px solid var(--linea); background: #fff; border-radius: 8px; padding: 8px 14px; cursor: pointer; font-weight: 600; display: inline-flex; gap: 6px; align-items: center; }
.btn:hover { border-color: var(--verde); }
.btn.prim { background: var(--verde); border-color: var(--verde); color: #fff; }
.btn.prim:hover { background: var(--verde-os); }
.btn.ambar { background: var(--ambar); border-color: var(--ambar); color: var(--tinta); }
.btn.peq { padding: 4px 9px; font-size: 12px; }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn.enlace { border: 0; background: none; color: var(--verde); padding: 2px 4px; text-decoration: underline; }

/* Buscadores */
.buscador { position: relative; }
.resultados { position: absolute; left: 0; right: 0; top: 100%; z-index: 20; background: #fff; border: 1px solid var(--linea); border-radius: 8px;
  box-shadow: var(--sombra); max-height: 320px; overflow: auto; margin-top: 4px; }
.resultados button { display: block; width: 100%; text-align: left; border: 0; background: none; padding: 8px 12px; cursor: pointer; border-bottom: 1px solid var(--banda); }
.resultados button:hover, .resultados button:focus { background: var(--verde-cl); outline: none; }
.resultados .cod { font-weight: 700; color: var(--verde-os); margin-right: 6px; font-size: 12px; }
.resultados .precio { float: right; font-variant-numeric: tabular-nums; color: var(--gris); }
.chip { display: inline-flex; align-items: center; gap: 6px; background: var(--verde-cl); border-radius: 99px; padding: 3px 10px; font-size: 12.5px; margin: 2px 4px 2px 0; }
.chip button { border: 0; background: none; cursor: pointer; padding: 0; font-weight: 700; color: var(--verde-os); }

/* Lineas de actuacion */
.linea { border: 1px solid var(--linea); border-left: 4px solid var(--verde); border-radius: 8px; padding: 12px 14px; margin-top: 12px; background: #fff; }
.linea.alerta { border-left-color: var(--ambar); }
.linea .cab { display: flex; gap: 10px; align-items: baseline; margin-bottom: 10px; }
.linea .cab .cod { font-weight: 700; color: var(--verde-os); font-size: 12px; }
.linea .cab .nombre { font-weight: 600; flex: 1; }
.linea .res { font-size: 12.5px; margin-top: 8px; display: flex; gap: 14px; flex-wrap: wrap; color: var(--gris); }
.linea .res b { color: var(--tinta); }
details.incluye { margin-top: 8px; font-size: 12.5px; }
details.incluye summary { cursor: pointer; color: var(--verde); font-weight: 600; }
.aviso { background: var(--ambar-cl); border: 1px solid #EBC57D; border-radius: 8px; padding: 7px 10px; font-size: 12.5px; margin-top: 8px; }
.aviso::before { content: "⚠ "; font-weight: 700; }
.info { background: var(--azul-cl); border: 1px solid #B9CFE6; border-radius: 8px; padding: 7px 10px; font-size: 12.5px; margin-top: 8px; }
.info::before { content: "ℹ "; font-weight: 700; color: var(--azul); }
.vacio { border: 2px dashed var(--linea); border-radius: 8px; padding: 22px; text-align: center; color: var(--gris); margin-top: 12px; }

/* Resumen */
.resumen { position: sticky; top: 12px; }
.resumen table { width: 100%; border-collapse: collapse; }
.resumen td { padding: 5px 0; vertical-align: top; }
.resumen tr.sep td { border-top: 1px solid var(--linea); padding-top: 8px; }
.resumen tr.total td { font-size: 18px; font-weight: 800; color: var(--verde-os); border-top: 2px solid var(--verde); padding-top: 8px; }
.resumen .lin-nom { font-size: 12.5px; }
.resumen .desglose { font-size: 11.5px; color: var(--gris); }
.resumen .botones { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.resumen .botones .btn { flex: 1; justify-content: center; }

/* Estados */
.est { display: inline-flex; gap: 4px; align-items: center; border-radius: 99px; padding: 2px 9px; font-size: 12px; font-weight: 600; white-space: nowrap; border: 1px solid transparent; }
.est.borrador { background: var(--banda); border-color: var(--linea); color: var(--gris); }
.est.enviado { background: var(--azul-cl); color: var(--azul); border-color: #B9CFE6; }
.est.aceptado { background: var(--verde-cl); color: var(--verde-os); border-color: #BCCCC9; }
.est.rechazado { background: var(--ladrillo-cl); color: var(--ladrillo); border-color: #E3C3B8; }
.est.pendiente { background: var(--ambar-cl); color: #7A5310; border-color: #EBC57D; }

/* Tablas */
table.lista { width: 100%; border-collapse: collapse; font-size: 13px; }
table.lista th { text-align: left; font-size: 11.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--gris); border-bottom: 2px solid var(--linea); padding: 8px 8px; }
table.lista td { border-bottom: 1px solid var(--banda); padding: 8px; vertical-align: top; }
table.lista tr:hover td { background: #FAFCFB; }
.acciones { display: flex; gap: 4px; flex-wrap: wrap; }
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 16px; }
.kpi { background: #fff; border: 1px solid var(--linea); border-radius: var(--radio); padding: 12px 14px; }
.kpi b { display: block; font-size: 22px; color: var(--verde-os); font-variant-numeric: tabular-nums; }
.kpi span { font-size: 12px; color: var(--gris); }
.barra-filtros { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.barra-filtros > * { flex: 0 1 220px; }
.registro { background: var(--tinta); color: #DCE4E2; font: 12px/1.5 Consolas, monospace; border-radius: 8px; padding: 10px 12px; max-height: 260px; overflow: auto; white-space: pre-wrap; }

/* Dialogo */
dialog { border: 0; border-radius: var(--radio); padding: 0; box-shadow: var(--sombra); width: min(520px, 94vw); }
dialog::backdrop { background: rgba(28,38,36,.45); }
dialog form { padding: 18px 20px; display: flex; flex-direction: column; gap: 12px; }
dialog .botones { display: flex; gap: 8px; justify-content: flex-end; }
.toast { position: fixed; bottom: 18px; left: 50%; transform: translateX(-50%); background: var(--tinta); color: #fff; padding: 10px 16px; border-radius: 8px; z-index: 50; box-shadow: var(--sombra); max-width: 90vw; }

/* ------------------------------------------- Documentos con la plantilla del despacho */
/* Cada .pt-hoja es una pagina A4 exacta; los colores y la letra son los de las plantillas .pptx */
#doc { display: none; }
@media print {
  @page { size: A4; margin: 0; }
  body { background: #fff; }
  body > *:not(#doc) { display: none !important; }
  #doc { display: block; }
}
body.ver-doc { background: #D9DEDD; }
body.ver-doc > *:not(#doc) { display: none !important; }
body.ver-doc #doc { display: block; }
body.ver-doc .pt-hoja { margin: 0 auto 8mm; box-shadow: 0 2px 10px rgba(0,0,0,.2); }
/* Imagen de Ponter: teal #567171, menta #A7E8C6 / #69DAA3, Plus Jakarta Sans. Medidas en mm: A4 exacto.
   Variables y letra tambien en .pt-hoja: html2pdf clona cada hoja suelta, fuera de .pt-doc. */
.pt-doc, .pt-hoja { --pt-teal: #567171; --pt-teal-os: #3E5656; --pt-menta: #A7E8C6; --pt-menta-os: #4FBF8B; --pt-menta-cl: #EEF8F3;
  --pt-tinta: #26302F; --pt-gris: #6B7878; --pt-linea: #DCE6E2;
  font-family: "Plus Jakarta Sans", Calibri, sans-serif; color: var(--pt-tinta); }
/* Imprimir siempre fondos y colores: Chrome/Edge los quitan si "Graficos de fondo" esta desmarcado */
.pt-doc, .pt-doc *, .pt-hoja, .pt-hoja * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
.pt-hoja { width: 210mm; height: 297mm; position: relative; overflow: hidden; background: #fff; break-after: page; page-break-after: always; }
.pt-hoja:last-child { break-after: auto; page-break-after: auto; }
.pt-etq { display: block; font-size: 6.6pt; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--pt-teal); margin-bottom: 1.4mm; }

/* Cabecera y pie de las hojas interiores */
.pt-cab { position: absolute; top: 0; left: 0; right: 0; height: 25mm; padding: 0 20mm; display: flex; align-items: center; justify-content: space-between; border-top: 2.2mm solid var(--pt-teal); }
.pt-cab::before { content: ""; position: absolute; top: -2.2mm; left: 20mm; width: 34mm; height: 2.2mm; background: var(--pt-menta); }
.pt-cab::after { content: ""; position: absolute; left: 20mm; right: 20mm; bottom: 0; height: .35mm; background: var(--pt-menta); }
.pt-cab img { height: 10.5mm; display: block; }
.pt-ref { text-align: right; line-height: 1.25; }
.pt-ref span { display: block; font-size: 6.6pt; letter-spacing: .16em; text-transform: uppercase; color: var(--pt-gris); font-weight: 600; }
.pt-ref b { font-size: 11pt; color: var(--pt-teal); font-weight: 700; }
.pt-cuerpo { position: absolute; top: 33mm; left: 20mm; right: 20mm; bottom: 24mm; overflow: hidden; font-size: 9.4pt; line-height: 1.6; text-align: justify; color: #313C3B; z-index: 1; }
.pt-deco { position: absolute; right: -34mm; bottom: 16mm; width: 130mm; opacity: .07; z-index: 0; }
.pt-cuerpo p { margin: 0 0 2.6mm; }
.pt-pie { position: absolute; left: 20mm; right: 20mm; bottom: 9mm; display: flex; align-items: flex-end; justify-content: space-between; gap: 8mm; border-top: .3mm solid var(--pt-linea); padding-top: 2.4mm; font-size: 6.8pt; color: var(--pt-teal); line-height: 1.5; }
.pt-pie b { letter-spacing: .12em; }
.pt-pie small { display: block; font-size: 5.8pt; color: var(--pt-gris); white-space: nowrap; }
.pt-pag { white-space: nowrap; font-weight: 600; font-size: 7pt; }
.pt-marca { position: absolute; top: 44%; left: -20mm; right: -20mm; text-align: center; font-size: 104pt; font-weight: 800; letter-spacing: .12em; color: rgba(86,113,113,.055); transform: rotate(-32deg); z-index: 0; pointer-events: none; line-height: 1; }
/* Cinta de borrador: ambar con texto (nunca solo color) */
.pt-cinta { position: absolute; top: 26.6mm; left: 20mm; right: 20mm; height: 5mm; display: flex; align-items: center; gap: 3mm; background: #FBF1DE; border-left: 1.2mm solid #D99B2B; border-radius: 0 1mm 1mm 0; padding: 0 3.5mm; font-size: 6.8pt; color: #6B4A0E; z-index: 3; }
.pt-cinta b { letter-spacing: .16em; text-transform: uppercase; font-size: 6.6pt; }
.pt-cinta span::before { content: "·"; margin-right: 3mm; }
.pt-cinta ~ .pt-cuerpo { top: 37mm; }
.pt-cinta.mal { background: #F6E7E2; border-left-color: #9E4B33; color: #6E2F1E; }
.pt-portada .pt-cinta { top: 22mm; left: auto; right: 22mm; height: 6.4mm; border-left: 0; border-radius: 99px; padding: 0 4.5mm; background: #FBF1DE; }
.pt-portada .pt-cinta.mal { background: #F6E7E2; }
.pt-sinfirma { display: flex !important; align-items: center; justify-content: center; height: 14mm !important; margin: 1mm 0 !important; border: .3mm dashed #D99B2B; border-radius: 1mm; background: #FDF8EE; color: #8A6212; font-size: 7pt; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; max-width: 60mm; }

/* Titulos de seccion: numero en menta y linea fina */
.pt-sec { display: flex; align-items: center; gap: 3mm; font-size: 12pt; font-weight: 700; color: var(--pt-teal); margin: 6.5mm 0 3mm; padding-bottom: 1.8mm; border-bottom: .3mm solid var(--pt-linea); text-transform: none; letter-spacing: 0; line-height: 1.3; }
.pt-cuerpo > .pt-sec:first-child, .pt-conf + .pt-sec, .pt-cuerpo > .pt-bloque:first-child > .pt-sec:first-child { margin-top: 0; }
.pt-sec span { font-size: 7.6pt; font-weight: 800; color: #fff; background: var(--pt-teal); border-radius: 1.2mm; padding: .7mm 1.9mm; letter-spacing: .06em; line-height: 1.3; }
.pt-sec::after { content: ""; flex: 0 0 10mm; height: .8mm; background: var(--pt-menta); margin-left: auto; border-radius: 1mm; }
.pt-n { color: var(--pt-teal); font-weight: 700; }
.pt-cla { margin-top: 4mm !important; }
.pt-cla .pt-n { display: block; font-size: 7pt; letter-spacing: .16em; text-transform: uppercase; margin-bottom: .6mm; }
.pt-cla .pt-n::before { content: ""; display: inline-block; width: 4mm; height: .7mm; background: var(--pt-menta-os); vertical-align: middle; margin: -.4mm 2mm 0 0; }
.pt-conf { display: inline-block; font-size: 6.6pt; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--pt-teal); border: .3mm solid var(--pt-teal); border-radius: 1mm; padding: .6mm 2.4mm; margin-bottom: 5mm !important; }
.pt-nota { font-size: 8.2pt; color: var(--pt-gris); }
.pt-centro { text-align: center; }
.pt-cuerpo .pt-izq { text-align: left; }
.pt-destacado { background: var(--pt-menta-cl); border-left: 1mm solid var(--pt-menta-os); padding: 2.4mm 4mm; text-align: left; }
.pt-guion { list-style: none; padding-left: 0; margin: 0 0 2.6mm; }
.pt-guion li { position: relative; padding-left: 5mm; margin-bottom: 1.4mm; }
.pt-guion li::before { content: ""; position: absolute; left: .6mm; top: 2mm; width: 1.6mm; height: 1.6mm; border-radius: 50%; background: var(--pt-menta-os); }

/* Tabla de honorarios */
.pt-tabla { width: 100%; border-collapse: collapse; margin: 4mm 0 1.5mm; }
.pt-tabla th { background: var(--pt-teal); color: #fff; text-align: left; padding: 2.8mm 4mm; font-size: 7pt; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.pt-tabla th:last-child, .pt-tabla td:last-child { text-align: right; width: 36mm; white-space: nowrap; }
.pt-tabla td { padding: 3.6mm 4mm; font-size: 9.2pt; vertical-align: middle; text-align: left; border-bottom: .3mm solid var(--pt-linea); line-height: 1.45; }
.pt-tabla tbody tr:nth-child(even) td { background: #F7FAF9; }
.pt-tabla td:last-child { font-weight: 700; font-size: 10.5pt; color: var(--pt-teal-os); font-variant-numeric: tabular-nums; }
.pt-tabla small { display: block; color: var(--pt-gris); font-size: 7.4pt; font-weight: 400; margin-top: .6mm; }
.pt-tabla td:last-child small { display: inline; font-size: 7.4pt; }
.pt-serv { font-weight: 600; }
.pt-op { display: inline-block; min-width: 7mm; text-align: center; background: var(--pt-menta); color: var(--pt-teal-os); font-weight: 800; font-size: 7.6pt; border-radius: 1mm; padding: .5mm 1.4mm; margin-right: 2.6mm; }
.pt-suma td { background: var(--pt-menta-cl) !important; border-bottom: .6mm solid var(--pt-menta-os); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; font-size: 8pt; }
.pt-suma td:last-child { font-size: 11.5pt; letter-spacing: 0; }
.pt-tabla-nota { display: flex; justify-content: space-between; font-size: 7.6pt; color: var(--pt-gris); margin: 0 0 4mm !important; }

.pt-cifras { display: flex; gap: 2.4mm; margin: 0 0 5mm; }
.pt-cifras > div { flex: 1; background: #F3F7F6; border-radius: 1.6mm; padding: 3mm 4mm; }
.pt-cifras .pt-etq { color: var(--pt-gris); margin-bottom: 1mm; }
.pt-cifras b { font-size: 12.5pt; font-weight: 700; color: var(--pt-teal-os); font-variant-numeric: tabular-nums; }
.pt-cifras .pt-total { background: var(--pt-teal); }
.pt-cifras .pt-total .pt-etq { color: var(--pt-menta); }
.pt-cifras .pt-total b { color: #fff; }

/* Forma de pago y cuenta */
.pt-pago { background: var(--pt-menta-cl); border-left: 1mm solid var(--pt-menta-os); padding: 3mm 4.5mm .6mm; margin: 0 0 3mm; }
.pt-pago p, .pt-pago ul { margin-bottom: 2.4mm; }
.pt-cuenta { display: flex; gap: 10mm; border: .3mm solid var(--pt-linea); border-radius: 1.4mm; padding: 2.6mm 4.5mm; margin: 0 0 3mm; font-size: 9pt; }
.pt-cuenta b { letter-spacing: .04em; }

/* Firmas */
.pt-firmas { display: flex; gap: 8mm; margin: 6mm 0 3mm; }
.pt-firmas > div { flex: 1; box-shadow: 0 1.2mm 4mm rgba(40,60,60,.08); border: .3mm solid var(--pt-linea); border-top: .8mm solid var(--pt-teal); border-radius: 0 0 1.4mm 1.4mm; padding: 3.5mm 5mm 1mm; text-align: left; }
.pt-firmas p { font-size: 8.8pt; line-height: 1.5; }
.pt-hueco { height: 19mm; }
.pt-firma { height: 17mm; display: block; margin: 1mm 0 1mm; }
div.pt-firma { height: 17mm; }

/* Portada: bloque verde, tarjeta del cliente montada encima y fila de fecha/validez */
.pt-portada .pt-port-sup { position: absolute; top: 0; left: 0; right: 0; height: 182mm; overflow: hidden; background: linear-gradient(155deg, #62807F 0%, #4A6464 50%, #354B4B 100%); color: #fff; }
.pt-port-sup::after { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 1.4mm; background: var(--pt-menta); }
.pt-port-logo { position: absolute; top: 22mm; left: 22mm; height: 15mm; }
.pt-port-arco { position: absolute; right: -34mm; top: 44mm; width: 190mm; opacity: .12; }
.pt-port-tit { position: absolute; left: 22mm; right: 22mm; bottom: 46mm; }
.pt-port-tit .pt-etq { color: var(--pt-menta); font-size: 7.6pt; margin-bottom: 4mm; }
.pt-port-tit h1 { font-size: 34pt; font-weight: 400; line-height: 1.08; margin: 0 0 6mm; color: #fff; letter-spacing: -.015em; }
.pt-port-tit h1 b { font-weight: 800; color: var(--pt-menta); }
.pt-port-tit p { margin: 0; padding-left: 4mm; border-left: 1mm solid var(--pt-menta); font-size: 10.5pt; font-weight: 600; letter-spacing: .04em; line-height: 1.45; max-width: 150mm; }
.pt-port-card { position: absolute; top: 152mm; left: 22mm; right: 22mm; background: #fff; border-radius: 2mm; box-shadow: 0 3mm 9mm rgba(28,48,48,.16); padding: 8mm 10mm 7mm; }
.pt-port-cli { font-size: 17pt; font-weight: 700; color: var(--pt-tinta); margin: 0 0 6mm; line-height: 1.25; }
.pt-datos { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm 10mm; margin: 0; }
.pt-datos dt { font-size: 6.4pt; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--pt-gris); margin-bottom: .8mm; }
.pt-datos dd { margin: 0; font-size: 9.6pt; line-height: 1.45; }
.pt-port-pie { position: absolute; left: 22mm; right: 22mm; bottom: 30mm; display: flex; font-size: 9pt; }
.pt-port-pie > div { flex: 1; border-left: .8mm solid var(--pt-menta); padding-left: 4mm; }
.pt-port-pie > div + div { margin-left: 6mm; }
.pt-port-pie > div:last-child { flex: 0 0 38mm; }
.pt-portada .pt-marca { top: 66%; }
.pt-portada .pt-pie { left: 22mm; right: 22mm; }

/* Carta */
.pt-carta { font-size: 10.2pt; line-height: 1.7; padding-top: 6mm; }
.pt-carta p { margin-bottom: 4mm; }
.pt-dest { text-align: left; font-size: 9.4pt; line-height: 1.5; color: var(--pt-gris); }
.pt-dest b { color: var(--pt-tinta); }
.pt-carta .pt-fecha { text-align: right; margin: 8mm 0 12mm; }
.pt-saludo { font-weight: 600; margin-bottom: 6mm !important; }
.pt-firmado { margin-top: 10mm; }
.pt-firmado p { font-size: 9.4pt; line-height: 1.5; color: var(--pt-teal); }

.pt-hcarta .pt-pie small { display: none; }
.pt-carta-sedes { position: absolute; left: 0; right: 0; bottom: 0; }
.pt-sedes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4mm; }
.pt-sedes > div { border-top: .8mm solid var(--pt-menta); padding-top: 2.2mm; font-size: 7.2pt; line-height: 1.45; color: var(--pt-gris); text-align: left; }
.pt-sedes b { display: block; font-size: 9pt; color: var(--pt-teal); margin-bottom: .6mm; }

/* Hoja de encargo */
.pt-he { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 5mm; }
.pt-he h1 { font-size: 19pt; font-weight: 400; color: var(--pt-tinta); margin: 0; line-height: 1.15; }
.pt-he h1 b { font-weight: 800; color: var(--pt-teal); }
.pt-cuerpo .pt-he p { margin: 0; color: var(--pt-gris); font-size: 9pt; }
.pt-partes { display: flex; gap: 6mm; margin-bottom: 1mm; }
.pt-partes > div { flex: 1; background: #F5F8F7; border-radius: 1.4mm; padding: 3mm 4.5mm; }
.pt-partes p { margin: 0 !important; font-size: 8.8pt; line-height: 1.55; text-align: left; }
.pt-asunto { font-weight: 700; color: var(--pt-teal-os); }
.pt-tabla-e { margin-top: 0; }
.pt-dos { display: flex; gap: 8mm; }
.pt-dos > div { flex: 1; }
.pt-hencargo .pt-sec { margin: 4mm 0 2.2mm; }
.pt-hencargo .pt-cuerpo { font-size: 9pt; line-height: 1.52; }
.pt-comunic { position: absolute; left: 20mm; right: 20mm; bottom: 24mm; display: flex; gap: 8mm; align-items: baseline; background: var(--pt-teal); color: #fff; border-radius: 1.4mm; padding: 2.4mm 4.5mm; font-size: 8.6pt; z-index: 2; }
.pt-hencargo .pt-cuerpo { bottom: 36mm; }
.pt-hencargo .pt-he { margin-bottom: 4mm; }
.pt-hencargo .pt-hueco { height: 15mm; }
.pt-hencargo .pt-firma { height: 14mm; }
.pt-hencargo .pt-firmas { margin: 4mm 0 0; }
.pt-hencargo .pt-tabla td { padding: 2.8mm 4mm; }
.pt-comunic .pt-etq { color: var(--pt-menta); margin: 0; }
.scroll-x { overflow-x: auto; }
table.lista td .acciones { min-width: 190px; }

/* ------------------------------------------------------------------ Tarificador */
/* Elegir tipo de presupuesto (como la portada de Lovable) */
.elegir { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; max-width: 860px; margin: 10px auto; }
.elegir button { text-align: left; background: #fff; border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra); padding: 22px 22px 18px; cursor: pointer; border-top: 4px solid var(--verde); }
.elegir button:hover { border-color: var(--verde); transform: translateY(-1px); }
.elegir b { display: block; font-size: 18px; color: var(--verde-os); margin: 8px 0 4px; }
.elegir .ico { font-size: 26px; }
.elegir span.suave { font-size: 13px; }
.modulos { display: flex; gap: 10px; flex-wrap: wrap; }
.modulos label { display: flex; gap: 8px; align-items: center; border: 1px solid var(--linea); border-radius: 99px; padding: 6px 14px; cursor: pointer; background: #fff; font-weight: 600; font-size: 13px; }
.modulos label:has(input:checked) { background: var(--verde-cl); border-color: #BCCCC9; color: var(--verde-os); }
.modulos input { accent-color: var(--verde); }
.subtarjeta { border-top: 1px dashed var(--linea); margin-top: 12px; padding-top: 12px; }
.fila.estrecha > * { flex: 1 1 130px; }
.resumen .grupo { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--gris); padding-top: 10px; }
.resumen td.menos { color: var(--ladrillo); }
.servicio-cn { display: grid; grid-template-columns: 1fr 140px; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--banda); }
.servicio-cn .check { margin: 0; }
.servicio-cn input[type=number]:disabled { background: var(--banda); color: var(--gris); }
.tipo-chip { display: inline-flex; gap: 4px; align-items: center; font-size: 11.5px; font-weight: 700; border-radius: 6px; padding: 1px 7px; background: var(--banda); color: var(--verde-os); border: 1px solid var(--linea); }
.tipo-chip.cn { background: var(--azul-cl); color: var(--azul); border-color: #B9CFE6; }
input.cambiado { outline: 2px solid var(--ambar); }

/* Documentos: piezas que no tenia la plantilla de juridico */
.pt-sub { font-size: 10.4pt; font-weight: 700; color: var(--pt-teal-os); margin: 4.5mm 0 2mm; text-transform: none; letter-spacing: 0; }
.pt-indice { list-style: none; padding: 0; margin: 4mm 0 0; }
.pt-indice li { display: flex; font-size: 10.4pt; font-weight: 700; color: var(--pt-teal); padding: 2.2mm 0; border-bottom: .3mm dotted var(--pt-linea); }
.pt-indice li.sub { font-weight: 400; color: var(--pt-tinta); padding-left: 10mm; font-size: 9.6pt; }
.pt-tabla-tit { font-weight: 700; color: var(--pt-teal-os); font-size: 9.6pt; margin: 4mm 0 -2mm !important; }
.pt-tabla3 th:nth-child(2), .pt-tabla3 td.pt-per { width: 26mm; text-align: center; white-space: nowrap; }
.pt-tabla3 td { font-size: 8.8pt; padding: 2.6mm 3.4mm; }
.pt-tabla3 td:last-child, .pt-tabla2 td:last-child { font-size: 9.6pt; }
.pt-tabla tr.pt-dto td { color: var(--pt-gris); font-size: 8.2pt; padding-top: 1.6mm; padding-bottom: 1.6mm; }
.pt-tabla tr.pt-dto td:last-child { color: #8A4A36; font-weight: 600; }
.pt-tabla tr.pt-no td { color: var(--pt-gris); }
.pt-tabla tr.pt-no td:last-child { color: var(--pt-gris); font-weight: 400; }
.pt-tabla4 th:last-child, .pt-tabla4 td:last-child { width: auto; }
.pt-tabla4 td { height: 10mm; }
.pt-anexo-tit { margin-bottom: 4mm; }
.pt-anexo-tit h1 { font-size: 17pt; font-weight: 400; margin: 0; line-height: 1.2; color: var(--pt-tinta); }
.pt-anexo-tit h1 b { color: var(--pt-teal); font-weight: 800; }
.pt-cuerpo .pt-anexo-tit p { margin: 1mm 0 0; color: var(--pt-gris); font-size: 9pt; }
.pt-bloque { break-inside: avoid; }
.pt-contacto .pt-cont-sup { height: 150mm; }
.pt-contacto .pt-port-tit { bottom: 30mm; }
.pt-cont-sedes { position: absolute; top: 172mm; left: 22mm; right: 22mm; }
.pt-cont-sedes .pt-sedes { grid-template-columns: repeat(2, 1fr); gap: 9mm 12mm; }
.pt-cont-sedes .pt-sedes > div { font-size: 10pt; line-height: 1.6; }
.pt-cont-sedes .pt-sedes b { font-size: 14pt; }
.pt-cont-web { margin-top: 16mm; font-size: 12pt; font-weight: 700; color: var(--pt-teal); letter-spacing: .06em; }
