/* Ajustes de operación: legibilidad, teclado y formularios en pantallas pequeñas. */
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible {outline:3px solid #1766ad;outline-offset:3px}
.audit-controls {display:flex;flex-wrap:wrap;gap:6px}
.audit-controls button {min-height:36px}
.fiscal-review-box {padding:16px;margin:16px 0;border:1px solid #c5cbd2;border-radius:8px;background:#f7f9fc;display:grid;gap:10px}
.fiscal-review-total {font-weight:650;margin:0;line-height:1.6}
.extra-retentions {grid-column:1 / -1;width:100%;padding:8px 0;color:#394554}
.extra-retentions summary {cursor:pointer;font-size:13px}
.extra-retentions .form-grid {margin:8px 0;max-width:600px}
.extra-retentions input {display:block;width:100%;box-sizing:border-box}
.service-writer {grid-column:1 / -1;width:100%}
/* Casillas nativas: nunca heredan el ancho completo de los campos de texto. */
input[type="checkbox"],input[type="radio"] {width:18px;height:18px;min-width:18px;flex:0 0 18px;padding:0;margin:0;accent-color:var(--orange);vertical-align:middle}
.modal {overscroll-behavior:contain}
.modal-card {max-height:calc(100vh - 24px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.modal-close {position:sticky;top:0;float:right;z-index:5;margin:-12px -12px 0 8px}
.movement-associations {align-items:start;gap:16px}
.movement-destination {min-width:230px;font-weight:700;font-size:14px}
.movement-association {flex:1;min-width:260px;max-width:760px}
.association-status {flex-basis:100%;margin:0}
.association-status:empty {display:none}
.invoice-actor {margin-top:-8px}
.invoice-editor>.form-grid {grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px}
.invoice-editor .field {margin:6px 0}
.invoice-editor .text-action {margin:0;text-align:left;padding:4px 0;font-size:13px}
.invoice-options {margin:16px 0;border:1px solid #dce1e6;border-radius:8px;padding:12px;background:#fafbfc}
.invoice-options summary {cursor:pointer;font-size:14px;font-weight:650;color:#374151;line-height:1.5}
.invoice-options>.form-grid {grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}
.invoice-editor h3 {margin:18px 0 8px}
.accounting-item-row.fiscal.invoice-line {display:flex!important;flex-direction:column;align-items:stretch;padding:14px;gap:10px}
.invoice-line-main {display:grid;grid-template-columns:minmax(220px,1fr) 80px 135px 130px 36px;gap:10px;align-items:end}
.invoice-line-main>* {min-width:0;grid-column:auto!important;grid-row:auto!important}
.invoice-line-main .compact-field {display:flex;flex-direction:column;font-size:12px!important;font-weight:600;color:#454b53!important}
.invoice-line-main select {margin-top:4px}
.invoice-line-main .accounting-remove {min-height:42px;padding:8px}
.invoice-line-main .accounting-line-total {padding:10px;background:#f2f4f6;border-radius:6px;min-height:44px}
.invoice-line .accounting-direct {font-size:13px;display:flex;gap:8px;align-items:center}
.invoice-line .accounting-recipe-hint {padding:0;background:none;color:#74521e}
.invoice-line .service-writer {padding:0;background:none;border:0}
.invoice-line .service-writer>label {font-size:12px;color:#454b53;font-weight:600;display:block}
.invoice-line .service-description {margin-top:4px}
.invoice-line .service-suggestions {margin:6px 0 0;font-size:12px}
.invoice-line .service-suggestions:empty {display:none}
.invoice-line .service-suggestions button {padding:6px 8px;font-size:12px}
.invoice-line-adjustments {border-top:1px solid #e9ecef;padding-top:8px}
.invoice-line-adjustments>summary {font-size:12px;color:#455266;cursor:pointer;line-height:1.5}
.invoice-adjustment-fields {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px;max-width:620px}
.invoice-editor .fiscal-review-box {background:#fafbfc;gap:14px;margin-bottom:0}
.invoice-editor .fiscal-review-box>label:first-of-type {display:flex;align-items:center;gap:10px;font-size:14px}
.invoice-editor .fiscal-review-box>label[hidden] {display:none}
.invoice-editor .fiscal-review-total {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;line-height:1.4}
.invoice-editor .fiscal-review-total>span {display:flex;flex-direction:column;gap:4px}
.invoice-editor .fiscal-review-total small {font-weight:500;color:#525a65;font-size:12px}
.invoice-editor .fiscal-review-total>span:last-of-type b {font-size:22px;color:#222}
.invoice-auto-warning {grid-column:1/-1}
.invoice-save-actions {display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #e0e4e8;padding-top:14px}
.invoice-detail header {display:flex;justify-content:space-between;align-items:start;gap:16px;padding-right:16px}
.invoice-detail h2 {margin:4px 0 12px}
.invoice-detail header p {margin:0}
.invoice-status {background:#fff3db;color:#744500;padding:7px 12px;border-radius:16px;font-size:13px}
.invoice-meta {display:flex;flex-wrap:wrap;gap:8px 22px;margin:18px 0;font-size:13px;color:#505761}
.invoice-balances {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid #dce1e6;border-radius:10px;background:#f6f8fa;overflow:hidden;margin:18px 0}
.invoice-balances>div {display:flex;flex-direction:column;gap:6px;padding:16px}
.invoice-balances span {font-size:13px;color:#555d67}
.invoice-balances b {font-size:23px}
.invoice-balances>div:last-child {background:#fff3e5}
.invoice-lines-table {border:1px solid #dce1e6;border-radius:8px;overflow:hidden}
.invoice-lines-table table {table-layout:fixed;font-size:14px}
.invoice-lines-table th {background:#f2f4f6;color:#374151;font-size:12px;white-space:normal}
.invoice-lines-table th:first-child {width:49%}
.invoice-lines-table th:nth-child(2) {width:9%}
.invoice-lines-table th:nth-child(3),.invoice-lines-table th:nth-child(4) {width:21%}
.invoice-lines-table td {overflow-wrap:anywhere;padding:14px 10px}
.invoice-lines-table td:first-child small,.invoice-accounting-lines small {display:block;font-size:12px;color:#656d77;margin-top:4px}
.invoice-breakdown {margin:16px 0 24px auto;max-width:330px;font-size:14px}
.invoice-breakdown>div,.invoice-accounting-lines dl>div {display:flex;justify-content:space-between;gap:16px;padding:5px 0}
.invoice-breakdown dd,.invoice-accounting-lines dd {margin:0;font-variant-numeric:tabular-nums}
.invoice-breakdown>div:nth-child(4) {border-top:1px solid #ddd;font-weight:750;padding-top:12px;margin-top:8px}
.invoice-empty {background:#f5f6f7;border-radius:8px;padding:14px;font-size:14px;color:#535b65}
.invoice-accounting-lines {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}
.invoice-accounting-lines section {background:white;border:1px solid #e0e3e6;border-radius:8px;padding:12px}
.invoice-accounting-lines dl {font-size:13px}
@media(max-width:900px){.invoice-line-main{grid-template-columns:minmax(140px,1fr) 80px 135px 36px}.invoice-line-main .invoice-product-field{grid-column:1/-2!important}.invoice-line-main .accounting-remove{grid-column:4!important;grid-row:1!important}.invoice-line-main .accounting-line-total{grid-column:3!important}.invoice-editor>.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:550px){.invoice-editor>.form-grid,.invoice-options>.form-grid,.invoice-accounting-lines{grid-template-columns:1fr}.invoice-line-main{grid-template-columns:1fr 1fr 36px}.invoice-line-main .invoice-product-field{grid-column:1/3!important}.invoice-line-main .accounting-remove{grid-column:3!important}.invoice-line-main .accounting-line-total{grid-column:1/3!important}.invoice-editor .fiscal-review-total{grid-template-columns:1fr 1fr}.invoice-balances>div{padding:10px}.invoice-balances b{font-size:17px}.invoice-lines-table td{font-size:12px;padding:10px 5px}.invoice-detail header{flex-direction:column}.movement-destination,.movement-association{min-width:0;width:100%}}
.service-suggestions {display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0}
.accounting-item-row.purchase {align-items:start}
.accounting-item-row.purchase>.form-grid {grid-column:1 / -1;width:100%}
@media(max-width:760px){.accounting-item-row.fiscal,.accounting-item-row.purchase,.conversion-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}.accounting-item-row>.accounting-product,.conversion-fields>.accounting-product{grid-column:1 / -1}.fiscal-review-box{padding:12px}.modal-card{max-width:96vw}.form-grid{grid-template-columns:1fr 1fr}}

/* ========================================================================== */
/* PULIDO VISUAL UI-ONLY · 2026-09-16                                      */
/* Alcance: presentación, jerarquía, legibilidad, teclado y responsive.      */
/* NO añade/quita campos, NO cambia IDs/names, NO altera JS, rutas ni datos. */
/* ========================================================================== */

/* Ritmo visual general: conserva la paleta y la identidad existentes. */
main {max-width:1680px}
.content-header {padding-inline:clamp(18px,2.4vw,34px)}
.content-header h1 {line-height:1.15;letter-spacing:-.01em}
.panel,.form-card,.receipts-panel {box-shadow:0 1px 2px rgba(0,0,0,.035)}
.section-head {align-items:flex-start}
.section-head h2 {line-height:1.2}
.section-head .muted,.section-head .small {max-width:78ch;line-height:1.5}

/* Menú lateral: grupos más fáciles de recorrer sin cambiar su estructura. */
.sidebar nav {padding:12px 10px 18px}
.nav-group {margin-top:12px;padding:10px 6px 0;border-top-color:#303030}
.nav-group:first-of-type {margin-top:8px}
.nav-group-title {
  min-height:32px;display:flex;align-items:center;justify-content:space-between;
  padding:7px 9px;margin-bottom:3px;border-radius:7px;
  font-size:10px;line-height:1.2;letter-spacing:.105em;color:#c9c9c9;
}
.nav-group-title:hover {background:#202020;color:#fff}
.nav-group:has(.nav-item.active) .nav-group-title {color:var(--orange2)}
.nav-group-title:after {float:none;margin-left:auto;padding-left:10px}
.nav-item {
  position:relative;min-height:42px;margin:2px 0;padding:9px 10px;
  gap:10px;border:1px solid transparent;border-radius:8px;line-height:1.25;
}
.nav-item:hover {background:#252525;border-color:#333}
.nav-item.active {background:#2c2c2c;border-color:#3b3b3b;box-shadow:inset 3px 0 var(--orange)}
.nav-item.active:after {content:"";position:absolute;right:10px;width:6px;height:6px;border-radius:50%;background:var(--orange)}
.nav-icon {width:26px;min-width:26px;height:26px;border-radius:7px;background:#ffffff0b;font-size:16px}
.nav-item.active .nav-icon {background:#ef7d1720;color:#ff9a44}
.sidebar-user {background:#101010}

/* Foco visible consistente para teclado, sin cambiar acciones. */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible {
  outline:3px solid #1766ad;outline-offset:2px
}
.nav-item:focus-visible,.nav-group-title:focus-visible {outline-color:#ffad66;outline-offset:1px}

/* Controles: mismo tamaño, ritmo y estados visuales. */
button:not(.nav-item):not(.text-action):not(.login-admin-trigger):not(.admin-trigger) {min-height:40px}
input,select,textarea {min-height:42px;line-height:1.35}
textarea {min-height:88px;resize:vertical}
input::placeholder,textarea::placeholder {color:#858585;opacity:1}
.field {gap:7px}
.field label,.compact-field {line-height:1.25}
.field label {color:#444}
input:hover,select:hover,textarea:hover {border-color:#b9b9b9}
input:disabled,select:disabled,textarea:disabled {background:#f1f1f1;color:#777;cursor:not-allowed}
input:user-invalid,select:user-invalid,textarea:user-invalid {border-color:#b42318;box-shadow:0 0 0 2px rgba(180,35,24,.08)}

/* Acciones: mantiene colores actuales, pero diferencia mejor jerarquías. */
.actions,.header-actions,.integration-actions {align-items:center}
.actions>button,.header-actions>button {white-space:nowrap}
button.secondary {border:1px solid #d5d5d5}
button.outline {background:#fff}
.text-action {min-height:32px;border-radius:6px}
.text-action:hover {background:#fff5ec}
.danger:focus-visible {outline-color:#8e1b14}

/* Búsquedas y sugerencias: selección más evidente con mouse o teclado. */
.suggestions {border-color:#bfc4c9;box-shadow:0 12px 28px rgba(0,0,0,.16)}
.suggestion,.create-suggestion {min-height:42px}
.suggestion:focus-visible,.create-suggestion:focus-visible {outline:0;background:#fff1e5;box-shadow:inset 3px 0 var(--orange)}
.suggestion:hover,.create-suggestion:hover {background:#fff4e9}
.no-suggestion {line-height:1.45}

/* Formularios densos: separa secciones sin agregar decoración nueva. */
.form-card>form>.form-grid:first-child {margin-top:2px}
.items {margin-top:18px;padding-top:4px}
.items>h3 {padding-bottom:8px;border-bottom:1px solid #ededed}
.invoice-options,.fiscal-review-box,.product-recipe-panel {box-shadow:none}
.invoice-save-actions {position:sticky;bottom:-1px;background:#fff;padding-bottom:2px;z-index:2}

/* Tablas: lectura y navegación más claras; no cambia columnas ni datos. */
.table-wrap {background:#fff}
th {font-size:12px;line-height:1.3}
td {line-height:1.42}
tbody tr:nth-child(even) td {background:#fcfcfc}
tbody tr:hover td {background:#fff8f1}
.table-wrap button,.table-wrap .pdf-link,.table-wrap .document-open {min-height:30px}

/* Estados/mensajes ya existentes: mejora legibilidad sin crear validaciones. */
.note,.archive-note,.duplicate-warning,.confirmation-exception {line-height:1.5}
.verify-message:not(:empty) {margin:8px 0;padding:8px 10px;border-radius:7px;background:#f6f7f8;line-height:1.4}
#toast {max-width:min(460px,calc(100vw - 24px));line-height:1.4}

/* Pantallas intermedias: evita controles excesivamente anchos. */
@media(max-width:1000px){
  main {padding-inline:20px}
  .content-header {padding-inline:20px}
  .customer-tools input,.movement-tools input {min-width:220px}
}

/* Móvil: conserva el menú deslizable y mejora objetivos táctiles. */
@media(max-width:650px){
  main {padding:18px 14px 34px}
  .content-header {height:auto;min-height:72px;padding:13px 14px;gap:10px}
  .content-header h1 {font-size:21px}
  .header-actions {gap:6px}
  .sidebar nav {padding:8px 9px 16px}
  .nav-group {padding-inline:4px}
  .nav-item {min-height:46px;padding:11px 10px}
  .nav-group-title {min-height:36px}
  .panel,.form-card,.receipts-panel {padding:15px;border-radius:10px}
  .section-head {flex-direction:column;align-items:stretch}
  .section-head>button,.section-head>div:last-child,.section-head>div:last-child>button {width:100%}
  .actions>button {flex:1 1 150px}
  .customer-tools input,.movement-tools input {min-width:0;width:100%}
  .invoice-save-actions {position:static;flex-direction:column}
  .invoice-save-actions>button {width:100%}
  .table-wrap {border-radius:8px}
}

/* Respeta preferencias del sistema y evita animación innecesaria. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after {scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* ========================================================================== */
/* UX OPERATIVA V2 · 2026-09-16                                               */
/* Accesos directos, tablas navegables y editores amplios sin tocar negocio.  */
/* ========================================================================== */
.quick-action-nav{
  width:calc(100% - 18px);margin:2px 9px;min-height:38px;padding:8px 10px 8px 18px;
  display:flex;align-items:center;gap:10px;text-align:left;border:1px dashed #3b3b3b;
  border-radius:8px;background:#171717;color:#f1f1f1;font:inherit;font-size:12px;font-weight:700;
}
.quick-action-nav:hover{background:#252525;border-color:#555}
.quick-action-nav .nav-icon{width:23px;min-width:23px;height:23px;font-size:14px;background:#ef7d1715;color:#ff9a44}
.quick-action-nav.hidden{display:none!important}

/* Los formularios largos de venta/compra/cotización usan el área útil de la pantalla. */
#modal:has(#accountingSaleForm),#modal:has(#accountingPurchaseForm),#modal:has(#quotationForm),#modal:has(#quickQuotationForm){padding:12px}
#modal:has(#accountingSaleForm) .modal-card,
#modal:has(#accountingPurchaseForm) .modal-card,
#modal:has(#quotationForm) .modal-card,
#modal:has(#quickQuotationForm) .modal-card{
  width:min(1480px,calc(100vw - 24px));max-width:none;min-height:calc(100vh - 24px);margin:0 auto;
}
#modal:has(#accountingSaleForm) #modalBody,
#modal:has(#accountingPurchaseForm) #modalBody,
#modal:has(#quotationForm) #modalBody,
#modal:has(#quickQuotationForm) #modalBody{max-width:1380px;margin:0 auto}
#modal:has(#quotationForm) #quotationForm>.form-grid,
#modal:has(#quickQuotationForm) #quickQuotationForm>.form-grid{grid-template-columns:180px 220px minmax(280px,1fr)}
#modal:has(#quotationForm) #quotationForm>.form-grid>.field:last-child,
#modal:has(#quickQuotationForm) #quickQuotationForm>.form-grid>.field:last-child{grid-column:1/-1}
#modal:has(#quotationForm) #quotationForm>.form-grid>.field:last-child input,
#modal:has(#quickQuotationForm) #quickQuotationForm>.form-grid>.field:last-child input{width:100%}

/* Tablas grandes: búsqueda local y paginación para no recorrer cientos de filas. */
.table-browser{margin-bottom:14px}
.table-browser-tools{display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding:10px 0}
.table-browser-search{display:flex;flex-direction:column;gap:5px;flex:1 1 320px;max-width:620px;font-size:12px;font-weight:700;color:#444}
.table-browser-search input{width:100%;min-height:38px}
.table-browser-size{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:#444}
.table-browser-size select{min-height:38px;width:88px}
.table-browser-count{margin-left:auto;padding-bottom:9px;color:#666;font-size:12px;font-weight:700}
.table-browser-pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:10px 0 2px}
.table-browser-pager button{min-height:34px!important;padding:7px 11px}
.table-browser-pager button:disabled{opacity:.45;cursor:not-allowed}
.table-browser-pager.single-page{display:none}
.table-page{min-width:110px;text-align:center;font-size:12px;font-weight:800;color:#555}
tr[hidden]{display:none!important}
#customerReceiptForm [hidden]{display:none!important}
#receiptFundingRows>div{display:grid;grid-template-columns:minmax(115px,1fr) minmax(115px,1fr) 110px 36px;gap:10px;align-items:end;margin:12px 0}
#receiptFundingRows .field{min-width:0;margin:0}
#receiptFundingRows button{height:42px;width:36px;padding:0;align-self:end}
@media(max-width:550px){#receiptFundingRows>div{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px}#receiptFundingRows [data-amount]{min-width:0}#receiptFundingRows>div>label:first-child{grid-column:1/3}#receiptFundingRows button{grid-column:3;grid-row:1}}

/* En editores de factura, el área de líneas gana espacio y el resumen se mantiene legible. */
#modal:has(#accountingSaleForm) .invoice-editor,
#modal:has(#accountingPurchaseForm) form{padding-bottom:8px}
#modal:has(#accountingSaleForm) .invoice-save-actions{position:sticky;bottom:0;background:#fff;padding:12px 0 4px;box-shadow:0 -8px 18px rgba(255,255,255,.94)}

@media(max-width:760px){
  .quick-action-nav{width:auto;min-width:112px;margin:0;padding:8px 9px;flex-direction:column;gap:2px;font-size:9px;text-align:center}
  .quick-action-nav .nav-icon{width:25px;min-width:25px;height:25px}
  #modal:has(#accountingSaleForm) .modal-card,#modal:has(#accountingPurchaseForm) .modal-card,#modal:has(#quotationForm) .modal-card,#modal:has(#quickQuotationForm) .modal-card{width:100%;min-height:calc(100vh - 20px)}
  #modal:has(#quotationForm) #quotationForm>.form-grid,#modal:has(#quickQuotationForm) #quickQuotationForm>.form-grid{grid-template-columns:1fr 1fr}
  #modal:has(#quotationForm) #quotationForm>.form-grid>.field:nth-child(3),#modal:has(#quickQuotationForm) #quickQuotationForm>.form-grid>.field:nth-child(3),#modal:has(#quotationForm) #quotationForm>.form-grid>.field:last-child,#modal:has(#quickQuotationForm) #quickQuotationForm>.form-grid>.field:last-child{grid-column:1/-1}
  .table-browser-tools{align-items:stretch}.table-browser-search{max-width:none;flex-basis:100%}.table-browser-count{margin-left:0;padding:0}.table-browser-pager{justify-content:space-between}.table-page{min-width:0}
}
.nav-group.collapsed .quick-action-nav{display:none}
/* Tres ámbitos explícitos: conservar una sola fila sin espacios vacíos. */
.company-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.company-tabs .company-tab{min-width:0;padding:8px;gap:6px;font-size:14px}.company-tabs .company-tab img{max-width:40px;max-height:40px}}
.scope-lot-picker{min-width:0}.scope-lot-picker select{max-width:100%}
.accounting-item-row.purchase>.scope-destination-field{grid-column:1/-1;max-width:360px;width:100%}
