/* Se mantiene la tipografía, los tokens y los componentes existentes. */
.fin-flow { display:flex; flex-direction:column; gap:16px; min-width:0; }
.fin-flow h2,.fin-flow h3 { margin:0; font-size:16px; }
.fin-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.fin-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.fin-flow .form-group { min-width:0; }
.fin-flow .input { width:100%; min-width:0; }
.fin-list { display:flex; flex-direction:column; gap:8px; min-width:0; }
.fin-row { width:100%; min-height:52px; display:flex; align-items:center; justify-content:space-between; gap:14px; border:1px solid var(--border); background:var(--bg-1); color:var(--tx-1); border-radius:8px; padding:12px; text-align:left; overflow-wrap:anywhere; }
.fin-row span { min-width:0; }
.fin-row small,.fin-flow p small { display:block; font-size:12px; color:var(--tx-3); margin-top:4px; }
.fin-amount { width:140px!important; flex-shrink:0; }
.fin-check { display:flex; align-items:center; gap:12px; min-height:44px; }
.fin-check input { width:20px; height:20px; flex-shrink:0; }
.fin-error { color:var(--s-cuenta); margin:0; }
.fin-facts { display:grid; grid-template-columns:auto minmax(0,1fr); gap:12px; margin:0; }
.fin-facts dd { margin:0; overflow-wrap:anywhere; }
.fin-flow button,.fin-flow select,.fin-flow input,.compra-form button,.gastos-form-actions button { min-height:44px; }
.fin-flow button:focus-visible,.fin-flow input:focus-visible,.fin-flow select:focus-visible { outline:2px solid var(--brand); outline-offset:3px; }
.list-detail-panel-footer { flex-wrap:wrap; }
#modal-overlay.open ~ #update-notice { display:none; }
/* El aviso de versión vive dentro de #avisosGlobales: se oculta sólo mientras hay un modal financiero abierto y vuelve al cerrarlo. */
body:has(#modal-overlay.open .fin-flow) #update-notice { display:none!important; }
/* Acciones primarias de modales financieros: tinta oscura sobre la marca para contraste AA. */
#modal-overlay .modal:has(.fin-flow) .btn-primary,#modal-overlay .modal:has(.fin-flow) .btn-primary:hover,#modal-overlay .modal:has(.fin-flow) .btn-primary:focus-visible { min-height:44px; color:var(--bg-1); }
body.light-mode #modal-overlay .modal:has(.fin-flow) .btn-primary,body.light-mode #modal-overlay .modal:has(.fin-flow) .btn-primary:hover,body.light-mode #modal-overlay .modal:has(.fin-flow) .btn-primary:focus-visible { color:var(--tx-1); }
#modal-overlay .modal:has(.fin-flow) .btn-primary:focus-visible { outline:2px solid var(--tx-1); outline-offset:3px; }
#modal-overlay .modal:has(.fin-flow) :is(#modal-subtitle,.modal-subtitle) { color:var(--tx-2); }
#rev-asociados:empty { display:none; }
.modal-close[aria-disabled="true"] { opacity:.5; cursor:progress; }
#modal-overlay .modal-close { width:44px; height:44px; margin:-6px; flex-shrink:0; }
/* Aviso de cambios sin guardar: capa propia por encima del modal y de los avisos flotantes. */
.discard-overlay { position:fixed; inset:0; z-index:10050; display:flex; align-items:center; justify-content:center; padding:16px; background:rgba(2,6,23,0.75); animation:discard-in 160ms ease-out; }
.discard-overlay[hidden] { display:none; }
.discard-dialog { width:min(100%,440px); max-height:calc(100vh - 32px); max-height:calc(100dvh - 32px); overflow-y:auto; display:flex; flex-direction:column; gap:12px; padding:20px 24px; background:var(--bg-2); border:1px solid var(--border-light); border-radius:var(--r-2xl); box-shadow:var(--sh-lg); color:var(--tx-1); }
.discard-title { margin:0; font-size:18px; font-weight:700; color:var(--tx-1); }
.discard-message { margin:0; font-size:14px; line-height:1.5; color:var(--tx-2); }
.discard-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:10px; margin-top:8px; }
.discard-actions .btn { min-height:44px; white-space:normal; }
.discard-actions .btn-primary,.discard-actions .btn-primary:hover,.discard-actions .btn-primary:focus-visible,.discard-actions .btn-danger,.discard-actions .btn-danger:hover,.discard-actions .btn-danger:focus-visible { color:var(--bg-1); }
body.light-mode .discard-actions .btn-primary,body.light-mode .discard-actions .btn-primary:hover,body.light-mode .discard-actions .btn-primary:focus-visible,body.light-mode .discard-actions .btn-danger,body.light-mode .discard-actions .btn-danger:hover,body.light-mode .discard-actions .btn-danger:focus-visible { color:var(--tx-1); }
.discard-actions .btn:focus-visible { outline:2px solid var(--tx-1); outline-offset:3px; }
@keyframes discard-in { from { opacity:0; } to { opacity:1; } }
@media (max-width:420px) { .discard-dialog { padding:20px; } .discard-actions .btn { flex:1 1 auto; } }
@media (prefers-reduced-motion:reduce) { .discard-overlay { animation:none; } }
.list-detail-panel-footer>.btn,#ing-cat-label,#gasto-tipo-label { min-height:44px; }
.proveedores-layout--compras { height:auto!important; overflow-y:auto; }
.compra-form { flex:none!important; min-height:0; height:auto!important; }
.compra-items-section { flex:none!important; min-height:240px; }
.compra-items-table { flex:none!important; min-height:180px; max-height:350px; overflow-y:auto; }
.compra-item-row { min-height:56px; flex-shrink:0; }
.compra-item-cantidad { min-height:44px; padding-inline:8px; }
.compra-cantidad-error { grid-column:1/-1; justify-self:stretch; font-size:13px; color:var(--tx-1); }
@media (max-width:600px) { .compra-item-cantidad { font-size:16px; } }
.compra-datos-grid { grid-template-columns:minmax(160px,0.6fr) minmax(220px,1fr) minmax(260px,1fr); }
.compra-pago-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:1024px) { .compra-datos-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .compra-datos-grid>div:last-child { grid-column:1/-1; } }
@media (max-width:600px) { .fin-grid,.compra-datos-grid,.compra-pago-grid { grid-template-columns:minmax(0,1fr); } .compra-datos-grid>div:last-child { grid-column:auto; } .fin-row { flex-wrap:wrap; } .fin-amount { width:100%!important; } .compra-items-table { max-height:none; } .compra-items-section { min-height:240px; } .compra-item-row>.input-wrapper { grid-column:1/-1; } .fin-facts { grid-template-columns:1fr; gap:6px; } }
/* Pagos a compras, conciliación y comprobantes legibles: dato principal primero, ID secundario. */
.fin-summary { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px; margin:0; }
.fin-summary>div { min-width:0; border:1px solid var(--border); border-radius:8px; padding:10px 12px; background:var(--bg-1); }
.fin-summary dt { font-size:12px; color:var(--tx-3); }
.fin-summary dd { margin:4px 0 0; font-weight:600; color:var(--tx-1); overflow-wrap:anywhere; }
.fin-summary .is-pending { border-color:var(--brand); }
.fin-hint,.fin-context { margin:0; font-size:14px; color:var(--tx-2); }
.fin-notice { margin:0; padding:12px; border:1px solid var(--border-light); border-left:4px solid var(--brand); border-radius:8px; background:var(--bg-1); color:var(--tx-1); }
.fin-flow .btn[aria-disabled="true"] { opacity:.6; cursor:not-allowed; }
.fin-order-row { display:grid; grid-template-columns:minmax(0,1fr) 160px auto; align-items:end; gap:12px; padding:12px; border:1px solid var(--border); border-radius:8px; background:var(--bg-1); color:var(--tx-1); }
.fin-order-info { display:flex; flex-direction:column; gap:2px; min-width:0; overflow-wrap:anywhere; }
.fin-order-info small { font-size:12px; color:var(--tx-3); }
.fin-order-info .fin-saldo { font-size:14px; font-weight:600; color:var(--tx-1); }
.fin-field-error { display:block; margin-top:6px; font-size:13px; color:var(--s-cuenta); }
.fin-line { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--border); overflow-wrap:anywhere; }
.fin-line span { min-width:0; }
.fin-line>span:last-child { flex-shrink:0; text-align:right; font-weight:600; }
.fin-line small,.fin-fixed small,.fin-check small,.fin-id small { display:block; margin-top:4px; font-size:12px; color:var(--tx-3); }
.fin-fixed { padding:12px; border:1px solid var(--border-light); border-radius:8px; background:var(--bg-1); }
.fin-id { margin:0; }
.fin-actions { display:flex; flex-wrap:wrap; gap:8px; }
.fin-amounts { display:flex; flex-direction:column; align-items:flex-end; gap:4px; text-align:right; }
.fin-tag { display:inline-block; padding:2px 8px; border:1px solid var(--border-light); border-radius:999px; font-size:12px; color:var(--tx-1); }
.fin-tag.is-pending { border-color:var(--brand); font-weight:600; }
@media (max-width:600px) { .fin-order-row { grid-template-columns:minmax(0,1fr); align-items:stretch; } .fin-amounts { align-items:flex-start; text-align:left; } .fin-line { flex-wrap:wrap; } .fin-line>span:last-child { text-align:left; } .fin-actions .btn { flex:1 1 auto; } }
/* Detalle de compra: consulta acotada en el modal financiero; la tabla reutiliza la de reportes con scroll interno propio. */
.fin-compra-detalle small { display:block; margin-top:4px; font-size:12px; color:var(--tx-3); }
.fin-compra-detalle:focus { outline:none; }
.fin-compra-detalle .fin-nota { white-space:pre-line; }
.fin-compra-detalle .fin-notice { display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.fin-compra-detalle .fin-notice p { margin:0; }
.fin-table-card { flex-shrink:0; }
.fin-table-scroll { max-height:min(60vh,480px); overscroll-behavior:contain; }
.fin-table-scroll:focus-visible { outline:2px solid var(--brand); outline-offset:-2px; }
.fin-compra-table { min-width:640px; }
.fin-compra-table th,.fin-compra-table td { vertical-align:top; }
.fin-compra-table .num { text-align:right; }
.fin-compra-table .fin-desc { min-width:220px; max-width:420px; white-space:normal; overflow-wrap:anywhere; }
.fin-compra-table .fin-desc strong { color:var(--tx-1); font-weight:600; }
.fin-scroll-hint { display:none; }
.fin-amounts>.fin-actions { justify-content:flex-end; }
#modal-overlay .modal:has(.fin-compra-detalle) .modal-header>div:first-child { min-width:0; overflow-wrap:anywhere; }
#modal-overlay .modal:has(.fin-compra-detalle) .modal-footer { flex-wrap:wrap; }
.prov-compras-recientes .menu-table-row>*,.prov-compras-recientes .menu-table-header>* { min-width:0; overflow-wrap:anywhere; }
.prov-compras-recientes .menu-table-row { height:auto; align-items:center; }
/* Compras recientes de la ficha: conserva sus columnas propias frente al ocultamiento heredado de .menu-table (último hijo ≤1100 px, cuarto hijo ≤768 px) sin tocar la regla global. */
.prov-compras-recientes.menu-table .menu-table-header>*,.prov-compras-recientes.menu-table .menu-table-row>* { display:block; }
.prov-compras-recientes .prov-compra-accion .btn { min-height:44px; width:100%; justify-content:center; white-space:nowrap; }
.prov-compras-recientes .prov-compra-accion .btn:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
@media (max-width:900px) { .fin-scroll-hint { display:block; } }
@media (max-width:600px) { #modal-overlay .modal:has(.fin-compra-detalle) .modal-footer .btn { flex:1 1 auto; } .fin-amounts>.fin-actions { justify-content:flex-start; width:100%; } .prov-compras-recientes .menu-table-header,.prov-compras-recientes .menu-table-row { grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,.8fr) minmax(0,.7fr)!important; } .prov-compras-recientes.menu-table .menu-table-header>:last-child { display:none; } .prov-compras-recientes .prov-compra-accion { grid-column:1/-1; } }
/* Duplicar compra (0.12.18): acción junto a «Ver detalle» y copia editable en el formulario de compras; error junto al campo y resumen enfocable. */
.prov-compras-recientes.menu-table .menu-table-row>.prov-compra-accion { display:flex; flex-direction:column; gap:6px; }
.compra-copia { --compra-copia-cta:#0c0a09; display:flex; flex-direction:column; gap:16px; }
/* El sidebar fuera del viewport no debe desplazar el shell horizontalmente al enfocar campos de la copia. */
.gf-app:has(.compra-copia) { overflow:clip; }
.compra-copia-head { display:flex; flex-direction:column; gap:8px; min-width:0; }
.compra-copia-titulo { margin:0; font-size:16px; font-weight:700; line-height:1.35; color:var(--tx-1); overflow-wrap:anywhere; }
.compra-copia-titulo:focus { outline:none; }
.compra-copia-titulo:focus-visible { outline:2px solid var(--brand); outline-offset:3px; border-radius:4px; }
.compra-copia-aviso { font-size:14px; line-height:1.5; }
.compra-copia-resumen { display:flex; flex-direction:column; gap:6px; border-left-color:var(--s-cuenta); }
.compra-copia-resumen[hidden] { display:none; }
.compra-copia-resumen:focus { outline:2px solid var(--s-cuenta); outline-offset:2px; }
.compra-copia-resumen ul { margin:0; padding:0; list-style:none; display:flex; flex-direction:column; }
.compra-copia-ir { width:100%; min-height:44px; padding:8px 0; border:0; background:none; color:var(--tx-1); font:inherit; font-size:14px; text-align:left; text-decoration:underline; text-underline-offset:3px; cursor:pointer; overflow-wrap:anywhere; }
.compra-copia :is(input,select,textarea,button):focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.compra-copia .input { min-height:44px; min-width:0; }
.compra-copia .input-action-right { width:44px; min-width:44px; height:44px; min-height:44px; right:0; }
.compra-copia .input-with-action { padding-right:48px; }
.compra-copia textarea.input { min-height:72px; resize:vertical; }
.compra-copia .input[aria-invalid="true"] { border-color:var(--s-cuenta); }
.compra-copia .input[readonly] { color:var(--tx-2); }
.compra-copia .btn { min-height:44px; }
.compra-copia .btn[aria-disabled="true"] { opacity:.65; cursor:not-allowed; }
.compra-copia .btn[aria-busy="true"] { cursor:progress; }
.compra-copia .is-required-pending { border-color:var(--brand); }
.compra-copia .fin-field-error { margin-top:2px; }
.compra-copia-nota { display:block; margin:4px 0 0; font-size:13px; line-height:1.45; color:var(--tx-2); }
.compra-copia-alerta { margin:0; padding:8px 10px; border:1px solid var(--border-light); border-left:4px solid var(--brand); border-radius:8px; background:var(--bg-1); font-size:13px; line-height:1.45; color:var(--tx-1); overflow-wrap:anywhere; }
.compra-copia .compra-copia-items { display:flex; flex-direction:column; gap:10px; min-height:0; max-height:none; overflow:visible; }
.compra-copia-item { display:flex; flex-direction:column; gap:10px; min-width:0; padding:12px; border:1px solid var(--border); border-radius:8px; background:var(--bg-1); }
.compra-copia-item.is-pendiente { border-left:4px solid var(--brand); }
.compra-copia-item-head,.compra-copia-tributo-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; min-width:0; }
.compra-copia-item-head strong,.compra-copia-tributo-head strong { font-size:14px; color:var(--tx-1); overflow-wrap:anywhere; }
.compra-copia-campos { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,.8fr) minmax(0,1.2fr) minmax(0,1fr); gap:10px; align-items:start; }
.compra-copia-campo { display:flex; flex-direction:column; gap:4px; min-width:0; }
.compra-copia-campo>label,.compra-copia-campo>.compra-copia-lbl { font-size:12px; color:var(--tx-2); }
.compra-copia-total { min-height:44px; display:flex; align-items:center; font-weight:600; color:var(--tx-1); font-variant-numeric:tabular-nums; white-space:nowrap; }
.compra-copia-tributos { display:flex; flex-direction:column; gap:10px; margin-bottom:10px; }
.compra-copia-tributo { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; align-items:start; padding:10px 0; border-bottom:1px solid var(--border); }
.compra-copia-tributo>.compra-copia-tributo-head,.compra-copia-tributo>.compra-copia-alerta,.compra-copia-tributo>.compra-copia-tributo-sel { grid-column:1/-1; }
.compra-copia-acciones { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.compra-copia-acciones .btn { flex:1 1 auto; white-space:normal; }
.compra-copia .btn-primary,.compra-copia .btn-primary:hover,.compra-copia .btn-primary:focus,.compra-copia .btn-primary:focus-visible,.compra-copia .btn-primary:active { color:var(--compra-copia-cta); }
.compra-copia .btn-primary svg { color:inherit; }
.compra-copia .btn-primary:focus-visible { outline:2px solid var(--tx-1); outline-offset:2px; }
@media (max-width:1024px) { .compra-copia-campos { grid-template-columns:repeat(2,minmax(0,1fr)); } .compra-copia-campos>.compra-copia-desc { grid-column:1/-1; } }
@media (max-width:600px) { .compra-copia :is(input,select,textarea) { font-size:16px; } .compra-copia-campos,.compra-copia-tributo { grid-template-columns:minmax(0,1fr); } .compra-copia-campos>.compra-copia-desc { grid-column:auto; } .prov-compras-recientes.menu-table .menu-table-row>.prov-compra-accion { flex-direction:row; flex-wrap:wrap; } .prov-compras-recientes .prov-compra-accion .btn { flex:1 1 8rem; width:auto; } }
@media print { body>* { visibility:hidden; } #modal-overlay,#modal-overlay * { visibility:visible; } #modal-overlay { position:absolute; inset:0; background:white; } #modal-overlay .modal { box-shadow:none; max-height:none; width:100%; } #modal-overlay .modal-body { overflow:visible; flex:none; } .modal-footer,.modal-close,.fin-flow>button,.fin-actions { display:none!important; } .fin-print,.fin-print * { color:black; background:white; } }
