
:root{--brand:#872649;--brand-dark:#5f1932;--ink:#2c1821;--soft:#f7edf1;--line:rgba(135,38,73,.18);--muted:#6f6168;--ok:#11834d;--err:#b42318;--shadow:0 20px 55px rgba(69,18,38,.14)}
*{box-sizing:border-box} body{margin:0;background:linear-gradient(180deg,#fff 0,#fbf7f9 100%);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:14px} a{color:var(--brand);text-decoration:none}.login-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,#f7edf1 0,transparent 30%),linear-gradient(135deg,#261720,#5f1932)}.login-card{width:min(460px,100%);background:#fff;border-radius:28px;padding:34px;box-shadow:var(--shadow);text-align:center}.login-logo{width:260px;max-width:100%;margin-bottom:16px}.login-card h1{margin:0 0 8px;color:var(--brand-dark)}.login-card p{color:var(--muted)}label{display:block;text-align:left;font-weight:700;color:var(--brand-dark);margin:.75rem 0 .4rem}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:11px 12px;font:inherit;background:#fff;color:var(--ink)}textarea{min-height:90px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:1px solid var(--line);background:#fff;color:var(--brand-dark);padding:.68rem .9rem;border-radius:14px;font-weight:800;cursor:pointer;white-space:nowrap}.btn.primary,.btn:hover{background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff}.alert-error{background:#fee4e2;color:#912018;padding:10px 12px;border-radius:12px;margin:12px 0}.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:12px 22px;box-shadow:0 8px 24px rgba(36,13,22,.07)}.brand{display:flex;align-items:center;gap:16px}.brand img{height:58px;width:auto;display:block}.brand span{font-weight:900;color:var(--brand-dark);font-size:1.05rem}.userbox{display:flex;align-items:center;gap:12px;font-weight:700}.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:end;padding:18px 22px 10px}.filters{display:flex;gap:12px;align-items:end}.filters label{margin:0;min-width:190px}.actions{display:flex;flex-wrap:wrap;gap:8px}.status-line{display:flex;justify-content:space-between;padding:0 22px 12px;color:var(--muted);font-weight:700}.grid-wrap{margin:0 22px 24px;overflow:auto;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 15px 34px rgba(69,18,38,.07);max-height:calc(100vh - 205px)}.budget-grid{border-collapse:separate;border-spacing:0;min-width:1600px;width:100%}.budget-grid th{position:sticky;top:0;background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;padding:11px 10px;text-align:left;z-index:2;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.budget-grid td{border-bottom:1px solid rgba(135,38,73,.10);border-right:1px solid rgba(135,38,73,.08);padding:8px 10px;vertical-align:top;min-height:36px}.budget-grid tr:hover td{background:#fff8fb}.editable{min-width:120px;max-width:300px;white-space:pre-wrap;overflow-wrap:anywhere;outline:none}.editable:focus{background:#fff5fa!important;box-shadow:inset 0 0 0 2px var(--brand);border-radius:8px}.editable.saving{opacity:.65}.editable.saved{background:#ecfdf3!important}.editable.error{background:#fee4e2!important}.cell-select{min-width:90px;padding:7px;border-radius:9px}.updated-cell{font-size:.75rem;color:var(--muted);white-space:nowrap}.modal{position:fixed;inset:0;background:rgba(44,24,33,.56);display:none;place-items:center;padding:18px;z-index:100}.modal.open{display:grid}.modal-card{background:#fff;border-radius:24px;box-shadow:var(--shadow);width:min(520px,100%);max-height:90vh;overflow:auto;padding:26px;position:relative}.modal-card.wide{width:min(820px,100%)}.modal-card.audit{width:min(920px,100%)}.modal-close{position:absolute;right:16px;top:12px;border:0;background:transparent;font-size:32px;color:var(--brand-dark);cursor:pointer}.modal h2{margin:0 0 16px;color:var(--brand-dark)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.grid2 label{margin:0}.span2{grid-column:span 2}.audit-list{display:grid;gap:10px}.audit-list article{padding:12px;border:1px solid var(--line);border-radius:14px;background:#fffafa}.audit-list strong{color:var(--brand-dark)}.audit-list time{float:right;color:var(--muted);font-size:.82rem}.audit-list p{margin:.35rem 0;font-weight:800}.audit-list small{display:block;color:var(--muted);overflow-wrap:anywhere}.toast{position:fixed;right:18px;bottom:18px;background:#2c1821;color:#fff;padding:13px 16px;border-radius:16px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:translateY(0)}.toast.ok{background:var(--ok)}.toast.err{background:var(--err)}@media(max-width:900px){.topbar,.toolbar,.filters,.actions{align-items:stretch;flex-direction:column}.brand img{height:46px}.grid-wrap{margin:0 10px 18px;max-height:none}.toolbar{padding:14px 10px}.status-line{padding:0 10px 10px}.grid2{grid-template-columns:1fr}.span2{grid-column:auto}}
/* Correcciones finales de interfaz */
.status-line span { display: inline-flex; align-items: center; min-height: 20px; }
#recordCount { color: var(--brand-dark); }
#lastUpdate { font-size: .86rem; color: var(--muted); }
.modal-card.wide, .modal.wide .modal-card { width: min(780px, 100%); }
.modal-card.audit, .modal.audit .modal-card { width: min(920px, 100%); }
.budget-grid td:nth-child(2), .budget-grid td:nth-child(9) { min-width: 220px; }
.budget-grid td:nth-child(5), .budget-grid td:nth-child(6) { min-width: 190px; }
.budget-grid th:last-child, .budget-grid td:last-child { min-width: 145px; }

/* Alta rápida desde la grilla */
.grid-wrap-with-add {
  position: relative;
  padding-left: 54px;
}
.table-add-row-btn {
  position: sticky;
  left: 10px;
  top: 10px;
  z-index: 8;
  float: left;
  width: 38px;
  height: 38px;
  margin: 10px 0 0 -44px;
  border-radius: 999px;
  border: 1px solid rgba(135,38,73,.28);
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  color: #fff;
  font-size: 1.55rem;
  line-height: 1;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 10px 22px rgba(69,18,38,.18);
}
.table-add-row-btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.04);
}
.table-add-row-btn:disabled,
.table-add-row-btn.is-loading {
  opacity: .65;
  cursor: wait;
}

.budget-grid th.sortable-col {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.budget-grid th.sortable-col .sort-wrap {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
}
.budget-grid th.sortable-col .sort-arrows {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  line-height: .62;
  font-size: .68rem;
  opacity: .72;
  margin-left: .18rem;
}
.budget-grid th.sortable-col.sort-asc .sort-arrows span:first-child,
.budget-grid th.sortable-col.sort-desc .sort-arrows span:last-child {
  opacity: 1;
  color: #fff;
  font-weight: 900;
}
.budget-grid th.sortable-col:not(.sort-asc):not(.sort-desc) .sort-arrows span {
  opacity: .45;
}

@media(max-width:900px){
  .grid-wrap-with-add { padding-left: 48px; }
  .table-add-row-btn { left: 8px; margin-left: -40px; }
}

/* === Mejoras de tabla: alta rápida, selección y eliminación === */
.grid-section{display:flex;align-items:flex-start;gap:10px;margin:0 22px 24px}.grid-section .grid-wrap{margin:0;flex:1}.table-action-rail{position:sticky;left:10px;top:168px;z-index:20;display:flex;flex-direction:column;gap:8px;padding-top:58px}.table-action-btn{width:38px;height:38px;border:0;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;font-weight:900;cursor:pointer;box-shadow:0 12px 24px rgba(69,18,38,.16);transition:.18s ease}.table-action-add{background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;font-size:1.35rem}.table-action-delete{background:#fff;color:#a01b38;border:1px solid rgba(160,27,56,.22);font-size:1rem}.table-action-btn:hover:not(:disabled){transform:translateY(-2px)}.table-action-btn:disabled{opacity:.38;cursor:not-allowed;box-shadow:none}.budget-grid th.select-col,.budget-grid td.row-select-cell{width:44px;min-width:44px;text-align:center;padding-left:8px;padding-right:8px}.budget-grid th.select-col input,.budget-grid td.row-select-cell input{width:17px;height:17px;accent-color:var(--brand);cursor:pointer}.budget-grid th.select-col{z-index:3}.users-modal-card{width:min(980px,100%)}.users-modal-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:22px}.users-modal-layout h3{margin:.25rem 0 1rem;color:var(--brand-dark)}.users-list{display:grid;gap:9px;max-height:420px;overflow:auto;padding-right:4px}.user-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);background:#fffafa;border-radius:14px;padding:11px 12px}.user-row strong{display:block;color:var(--brand-dark)}.user-row small{display:block;color:var(--muted);margin-top:2px}.user-state{font-size:.78rem;font-weight:900;border-radius:999px;padding:.35rem .55rem}.user-state.active{background:#e9f9ef;color:#027a48}.user-state.inactive{background:#fee4e2;color:#912018}@media(max-width:900px){.grid-section{margin:0 10px 18px;gap:6px}.table-action-rail{top:130px;padding-top:50px}.table-action-btn{width:34px;height:34px;border-radius:12px}.users-modal-layout{grid-template-columns:1fr}}

/* Usuarios: modal CRUD más simple */
.users-modal-card-wide{width:min(1180px,96vw)!important}.modal-help{margin:-.4rem 0 1rem;color:var(--muted)}.user-create-bar{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) auto;gap:10px;align-items:end;border:1px solid var(--line);background:#fffafa;border-radius:18px;padding:12px;margin-bottom:16px}.user-create-bar label{margin:0}.user-create-bar .btn{height:42px}.users-list-toolbar{display:flex;justify-content:space-between;align-items:center;margin:8px 0 10px}.btn.small{padding:.48rem .7rem;border-radius:11px;font-size:.82rem}.btn.danger,.btn.danger:hover{border-color:rgba(160,27,56,.22);background:#fff;color:#a01b38}.btn.danger:hover{background:#fee4e2;color:#912018}.users-list-crud{display:grid;gap:10px;max-height:52vh;overflow:auto;padding-right:4px}.user-crud-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:1px solid var(--line);background:#fff;border-radius:16px;padding:12px}.user-crud-fields{display:grid;grid-template-columns:1.1fr 1.1fr 1fr 1.2fr 86px;gap:10px;align-items:end}.user-crud-fields label{margin:0;font-size:.78rem}.user-crud-fields input{padding:9px 10px;border-radius:10px}.user-active-label{display:flex!important;align-items:center;gap:8px;height:100%;padding-top:18px}.user-active-label input{width:18px;height:18px;accent-color:var(--brand)}.user-crud-actions{display:flex;align-items:center;gap:8px}.user-state{font-size:.78rem;font-weight:900;border-radius:999px;padding:.35rem .55rem;white-space:nowrap}.user-state.active{background:#e9f9ef;color:#027a48}.user-state.inactive{background:#fee4e2;color:#912018}.alert-error{background:#fee4e2;color:#912018;padding:10px 12px;border-radius:12px;margin:12px 0}
@media(max-width:1100px){.user-create-bar{grid-template-columns:1fr 1fr}.user-crud-row{grid-template-columns:1fr}.user-crud-fields{grid-template-columns:1fr 1fr}.user-crud-actions{justify-content:flex-start;flex-wrap:wrap}}@media(max-width:700px){.user-create-bar,.user-crud-fields{grid-template-columns:1fr}.users-modal-card-wide{width:96vw!important}.users-list-crud{max-height:58vh}}

/* === Fix final acciones tabla y modal usuarios === */
.table-actions-visible{
  display:flex;
  align-items:center;
  gap:10px;
  margin:10px 22px 12px;
  flex-wrap:wrap;
}
.table-action-main{
  min-height:42px;
  padding:.82rem 1.1rem;
  border-radius:14px;
  font-weight:900;
  box-shadow:0 12px 26px rgba(69,18,38,.09);
}
.table-action-main.danger,
.btn.danger{
  background:#fff;
  color:#9f1239;
  border:1px solid rgba(159,18,57,.28);
}
.table-action-main.danger:not(:disabled):hover,
.btn.danger:not(:disabled):hover{
  background:#fff1f2;
}
.table-action-main:disabled{
  opacity:.45;
  cursor:not-allowed;
  box-shadow:none;
}
.grid-section{margin-top:0!important;}
.users-modal-card-wide{width:min(1100px,calc(100vw - 24px));max-height:88vh;overflow:auto;}
.user-create-bar{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr)) auto;gap:12px;align-items:end;margin:14px 0 18px;padding:14px;background:#fff7fa;border:1px solid var(--line);border-radius:18px;}
.user-create-bar label{font-size:.88rem;font-weight:800;color:var(--brand-dark);}
.user-create-bar input{margin-top:6px;}
.users-list-toolbar{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:8px 0 10px;}
.users-list-crud{display:grid;gap:10px;max-height:430px;overflow:auto;padding-right:4px;}
.user-crud-row{border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 24px rgba(69,18,38,.06);padding:12px;}
.user-crud-fields{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:10px;align-items:end;}
.user-crud-fields label{font-size:.82rem;font-weight:800;color:var(--brand-dark);}
.user-crud-fields input{margin-top:5px;min-height:40px;}
.user-active-label{display:flex;gap:8px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:14px;min-height:40px;padding:0 10px;background:#fffafa;}
.user-active-check{width:18px!important;height:18px!important;accent-color:var(--brand);}
.user-crud-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;}
.user-state{font-size:.78rem;font-weight:900;border-radius:999px;padding:.35rem .55rem;}
.user-state.active{background:#e9f9ef;color:#027a48;}
.user-state.inactive{background:#fee4e2;color:#912018;}
.alert-error{background:#fff1f2;border:1px solid #fecdd3;color:#9f1239;border-radius:14px;padding:12px;}
@media(max-width:900px){.table-actions-visible{margin:10px 12px}.user-create-bar,.user-crud-fields{grid-template-columns:1fr}.users-list-toolbar{align-items:flex-start;flex-direction:column}.user-crud-actions{align-items:flex-start;flex-direction:column}}

/* =========================================================
   Producción: responsive + usabilidad móvil/tablet
   ========================================================= */
html { -webkit-text-size-adjust: 100%; }
img { max-width: 100%; height: auto; }
button, input, select, textarea { max-width: 100%; }

.topbar {
  gap: 1rem;
}
.brand { min-width: 0; }
.brand span { white-space: nowrap; }
.userbox { min-width: 0; justify-content: flex-end; }
.userbox span { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.toolbar {
  flex-wrap: wrap;
}
.filters {
  flex-wrap: wrap;
  min-width: 280px;
}
.filters label {
  flex: 1 1 220px;
  min-width: 180px;
}
.actions {
  justify-content: flex-end;
}
.status-line {
  gap: .75rem;
  flex-wrap: wrap;
}

.grid-section,
.grid-wrap {
  min-width: 0;
}
.grid-wrap {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.budget-grid {
  table-layout: auto;
}
.budget-grid th,
.budget-grid td {
  line-height: 1.25;
}
.cell-select {
  min-width: 110px;
}

.modal {
  align-items: center !important;
  justify-content: center !important;
}
.modal-card {
  width: min(620px, calc(100vw - 24px));
  max-height: min(90vh, 820px);
}
.modal-card.audit,
.users-modal-card-wide {
  width: min(1120px, calc(100vw - 24px)) !important;
}

.users-list-table-wrap,
.users-list-crud,
.audit-list {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 1200px) {
  .budget-grid { min-width: 1280px; }
  .grid-wrap { max-height: calc(100vh - 230px); }
}

@media (max-width: 900px) {
  body { font-size: 13px; }
  .topbar {
    position: static;
    padding: 12px;
    align-items: flex-start;
  }
  .brand img { height: 42px; }
  .brand span, .brand-view-select { font-size: .98rem; }
  .userbox {
    width: 100%;
    justify-content: space-between;
    border-top: 1px solid var(--line);
    padding-top: .65rem;
  }
  .toolbar {
    padding: 12px;
    gap: 12px;
  }
  .filters,
  .actions {
    width: 100%;
  }
  .filters label {
    min-width: 0;
    width: 100%;
  }
  .actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }
  .actions .btn {
    min-height: 42px;
    padding-inline: .55rem;
  }
  .status-line {
    padding: 0 12px 10px;
    font-size: .86rem;
  }
  .table-actions-visible {
    margin: 10px 12px 12px;
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  .table-action-main { width: 100%; }
  .grid-section { margin: 0 12px 18px !important; }
  .grid-wrap {
    border-radius: 14px;
    max-height: none;
  }
  .budget-grid {
    min-width: 1120px;
  }
  .budget-grid th {
    top: 0;
    font-size: .72rem;
    padding: 9px 8px;
  }
  .budget-grid td {
    padding: 7px 8px;
  }
  .editable { min-width: 105px; max-width: 240px; }
  .modal { padding: 10px; }
  .modal-card {
    border-radius: 20px;
    padding: 20px 16px;
    width: calc(100vw - 20px) !important;
    max-height: calc(100vh - 20px);
  }
  .modal-close { top: 6px; right: 10px; }
  .user-create-bar {
    grid-template-columns: 1fr !important;
  }
  .users-list-crud,
  .audit-list { max-height: 58vh; }
}

@media (max-width: 520px) {
  .login-body { padding: 14px; align-items: start; place-items: start center; }
  .login-card {
    margin-top: 24px;
    padding: 24px 18px;
    border-radius: 22px;
  }
  .login-logo { width: 220px; }
  .login-card h1 { font-size: 1.35rem; }
  .brand { gap: 10px; }
  .brand img { height: 34px; }
  .brand span, .brand-view-select { font-size: .9rem; }
  .actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .table-actions-visible { grid-template-columns: 1fr; }
  .budget-grid { min-width: 980px; }
  .budget-grid th,
  .budget-grid td { padding: 6px; }
  input, select, textarea { font-size: 16px; }
}

@media print {
  .topbar, .toolbar, .status-line, .table-actions-visible, .actions, .modal, .toast, .table-action-rail { display: none !important; }
  body { background: #fff; }
  .grid-wrap { margin: 0; border: 0; box-shadow: none; overflow: visible; max-height: none; }
  .budget-grid { min-width: 0; font-size: 10px; }
  .budget-grid th { position: static; background: #5f1932 !important; color: #fff !important; }
}


/* === FIX TOPBAR BOTONES PROFESIONALES - 20260810 === */
.topbar.topbar-pro{
  display:grid !important;
  grid-template-columns:auto 1fr auto !important;
  align-items:center !important;
  gap:18px !important;
  padding:10px 18px !important;
  min-height:74px !important;
}
.topbar-pro .brand{
  min-width:max-content !important;
}
.topbar-pro .brand img{
  height:52px !important;
}
.topbar-pro .header-actions{
  display:flex !important;
  justify-content:center !important;
  align-items:center !important;
  flex-wrap:wrap !important;
  gap:8px !important;
  margin:0 !important;
  padding:0 !important;
}
.topbar-pro .header-actions .btn,
.topbar-pro .header-actions .action-main{
  appearance:none !important;
  -webkit-appearance:none !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:7px !important;
  min-height:40px !important;
  padding:9px 13px !important;
  border-radius:14px !important;
  border:1px solid rgba(135,38,73,.16) !important;
  background:linear-gradient(180deg,#ffffff 0%,#fff8fb 100%) !important;
  color:#5f1932 !important;
  box-shadow:0 9px 18px rgba(69,18,38,.08) !important;
  font-weight:900 !important;
  font-size:.86rem !important;
  line-height:1 !important;
  text-decoration:none !important;
  white-space:nowrap !important;
  cursor:pointer !important;
}
.topbar-pro .header-actions .btn:hover,
.topbar-pro .header-actions .btn:focus,
.topbar-pro .header-actions .action-main:hover,
.topbar-pro .header-actions .action-main:focus{
  background:linear-gradient(135deg,var(--brand),var(--brand-dark)) !important;
  color:#fff !important;
  transform:translateY(-1px) !important;
  box-shadow:0 14px 26px rgba(135,38,73,.24) !important;
  outline:none !important;
}
.topbar-pro .header-actions .btn-ico{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:22px !important;
  height:22px !important;
  border-radius:8px !important;
  background:rgba(135,38,73,.08) !important;
  font-size:14px !important;
  line-height:1 !important;
}
.topbar-pro .header-actions .btn:hover .btn-ico,
.topbar-pro .header-actions .action-main:hover .btn-ico{
  background:rgba(255,255,255,.18) !important;
}
.toolbar.toolbar-filters-only{
  display:flex !important;
  justify-content:flex-start !important;
  align-items:end !important;
  gap:16px !important;
  padding:14px 22px 10px !important;
}
.toolbar.toolbar-filters-only .filters{
  width:100% !important;
  display:flex !important;
  gap:12px !important;
  align-items:end !important;
  flex-wrap:wrap !important;
}
.toolbar.toolbar-filters-only .filters label:last-child{
  flex:1 1 320px !important;
}
.toolbar.toolbar-filters-only .actions{
  display:none !important;
}
@media (max-width:1100px){
  .topbar.topbar-pro{
    grid-template-columns:1fr auto !important;
  }
  .topbar-pro .header-actions{
    grid-column:1 / -1 !important;
    grid-row:2 !important;
    justify-content:flex-start !important;
    overflow-x:auto !important;
    flex-wrap:nowrap !important;
    padding-bottom:2px !important;
  }
}
@media (max-width:640px){
  .topbar.topbar-pro{
    padding:9px 12px !important;
    gap:10px !important;
  }
  .topbar-pro .brand img{height:42px !important;}
  .topbar-pro .brand span{display:none !important;}
  .topbar-pro .userbox span{display:none !important;}
  .topbar-pro .header-actions .btn,
  .topbar-pro .header-actions .action-main{
    min-height:38px !important;
    padding:8px 10px !important;
    font-size:.82rem !important;
  }
  .toolbar.toolbar-filters-only{
    padding:10px 12px !important;
  }
}


/* === BOTONES DE FILA PROFESIONALES - SOLO ESTETICA - 20260810 === */
.budget-grid th.select-col{
  width:64px !important;
  min-width:64px !important;
  padding:7px 6px !important;
  text-align:center !important;
  vertical-align:middle !important;
  background:linear-gradient(135deg,var(--brand),var(--brand-dark)) !important;
}
.budget-grid th.select-col .row-actions,
.budget-grid th.select-col .row-action-stack,
.budget-grid th.select-col > div{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:6px !important;
}
.row-action-icon{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:30px !important;
  height:30px !important;
  min-width:30px !important;
  min-height:30px !important;
  padding:0 !important;
  margin:0 !important;
  border-radius:11px !important;
  border:1px solid rgba(255,255,255,.34) !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  font-size:16px !important;
  line-height:1 !important;
  font-weight:900 !important;
  cursor:pointer !important;
  color:#ffffff !important;
  background:rgba(255,255,255,.14) !important;
  box-shadow:0 8px 18px rgba(43,12,25,.18), inset 0 1px 0 rgba(255,255,255,.22) !important;
  transition:transform .16s ease, box-shadow .16s ease, background .16s ease, opacity .16s ease !important;
  text-decoration:none !important;
}
.row-action-icon.add{
  background:linear-gradient(135deg,#ffffff 0%,#fff2f7 100%) !important;
  color:#872649 !important;
  border-color:rgba(255,255,255,.70) !important;
  font-size:18px !important;
}
.row-action-icon.copy{
  background:linear-gradient(135deg,#b85a78 0%,#872649 100%) !important;
  color:#fff !important;
}
.row-action-icon.delete{
  background:linear-gradient(135deg,#d15b6c 0%,#a01b38 100%) !important;
  color:#fff !important;
}
.row-action-icon:hover:not(:disabled),
.row-action-icon:focus:not(:disabled){
  transform:translateY(-1px) scale(1.04) !important;
  box-shadow:0 12px 24px rgba(43,12,25,.26), inset 0 1px 0 rgba(255,255,255,.26) !important;
  outline:2px solid rgba(255,255,255,.42) !important;
  outline-offset:2px !important;
}
.row-action-icon:active:not(:disabled){
  transform:translateY(0) scale(.98) !important;
}
.row-action-icon:disabled,
.row-action-icon[disabled]{
  opacity:.38 !important;
  filter:grayscale(.35) !important;
  cursor:not-allowed !important;
  transform:none !important;
  box-shadow:none !important;
}
.budget-grid th.select-col input[type="checkbox"]{
  width:18px !important;
  height:18px !important;
  min-width:18px !important;
  padding:0 !important;
  margin:2px 0 0 !important;
  accent-color:#ffffff !important;
  cursor:pointer !important;
  border-radius:6px !important;
  box-shadow:0 4px 10px rgba(43,12,25,.18) !important;
}
.budget-grid td.row-select-cell,
.budget-grid td:first-child{
  text-align:center !important;
  vertical-align:middle !important;
}
.budget-grid td.row-select-cell input[type="checkbox"],
.budget-grid td:first-child input[type="checkbox"]{
  width:18px !important;
  height:18px !important;
  accent-color:#872649 !important;
  cursor:pointer !important;
}
@media(max-width:900px){
  .budget-grid th.select-col{
    width:58px !important;
    min-width:58px !important;
  }
  .row-action-icon{
    width:28px !important;
    height:28px !important;
    min-width:28px !important;
    min-height:28px !important;
    border-radius:10px !important;
    font-size:15px !important;
  }
}


/* === FIX DEFINITIVO BOTONES PRIMERA COLUMNA - SOLO CSS - 20260810B === */
/* Apunta por ID porque el HTML real puede venir regenerado por JS y las clases anteriores no siempre ganan. */
#budgetGrid thead th:first-child,
#budgetGrid thead th.select-col,
#budgetGrid thead th.action-select-head,
#budgetGrid .select-col,
#budgetGrid .action-select-head{
  width:64px !important;
  min-width:64px !important;
  max-width:64px !important;
  padding:8px 6px !important;
  text-align:center !important;
  vertical-align:middle !important;
  background:linear-gradient(135deg,#872649 0%,#5f1932 100%) !important;
}
#budgetGrid .row-action-head,
#budgetGrid thead th:first-child > div,
#budgetGrid thead th.select-col > div,
#budgetGrid thead th.action-select-head > div{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:7px !important;
  width:100% !important;
  min-height:112px !important;
}
#budgetGrid #btnInlineAddRow,
#budgetGrid #btnCopyRow,
#budgetGrid #btnDeleteRows,
#budgetGrid thead th:first-child button,
#budgetGrid thead th.select-col button,
#budgetGrid thead th.action-select-head button{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:32px !important;
  height:32px !important;
  min-width:32px !important;
  min-height:32px !important;
  max-width:32px !important;
  max-height:32px !important;
  padding:0 !important;
  margin:0 !important;
  border-radius:12px !important;
  border:1px solid rgba(255,255,255,.42) !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  font-size:16px !important;
  line-height:1 !important;
  font-weight:900 !important;
  font-family:Inter,system-ui,-apple-system,"Segoe UI",Arial,sans-serif !important;
  cursor:pointer !important;
  text-decoration:none !important;
  box-shadow:0 9px 18px rgba(43,12,25,.22), inset 0 1px 0 rgba(255,255,255,.25) !important;
  transition:transform .14s ease, box-shadow .14s ease, filter .14s ease, opacity .14s ease !important;
}
#budgetGrid #btnInlineAddRow,
#budgetGrid thead th:first-child button[id="btnInlineAddRow"]{
  background:linear-gradient(135deg,#ffffff 0%,#fff4f8 100%) !important;
  color:#872649 !important;
  border-color:rgba(255,255,255,.76) !important;
  font-size:20px !important;
}
#budgetGrid #btnCopyRow,
#budgetGrid thead th:first-child button[id="btnCopyRow"]{
  background:linear-gradient(135deg,#c87591 0%,#9d315a 50%,#872649 100%) !important;
  color:#ffffff !important;
  border-color:rgba(255,255,255,.48) !important;
  font-size:15px !important;
}
#budgetGrid #btnDeleteRows,
#budgetGrid thead th:first-child button[id="btnDeleteRows"]{
  background:linear-gradient(135deg,#df7080 0%,#b82645 55%,#8d1530 100%) !important;
  color:#ffffff !important;
  border-color:rgba(255,255,255,.42) !important;
  font-size:14px !important;
}
#budgetGrid #btnInlineAddRow:hover:not(:disabled),
#budgetGrid #btnCopyRow:hover:not(:disabled),
#budgetGrid #btnDeleteRows:hover:not(:disabled),
#budgetGrid thead th:first-child button:hover:not(:disabled){
  transform:translateY(-1px) scale(1.05) !important;
  box-shadow:0 13px 25px rgba(43,12,25,.32), inset 0 1px 0 rgba(255,255,255,.28) !important;
  filter:saturate(1.06) !important;
}
#budgetGrid #btnInlineAddRow:active:not(:disabled),
#budgetGrid #btnCopyRow:active:not(:disabled),
#budgetGrid #btnDeleteRows:active:not(:disabled){
  transform:translateY(0) scale(.98) !important;
}
#budgetGrid #btnInlineAddRow:disabled,
#budgetGrid #btnCopyRow:disabled,
#budgetGrid #btnDeleteRows:disabled,
#budgetGrid thead th:first-child button:disabled{
  opacity:.42 !important;
  cursor:not-allowed !important;
  filter:grayscale(.25) !important;
  transform:none !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14) !important;
}
#budgetGrid #selectAllRows,
#budgetGrid thead th:first-child input[type="checkbox"],
#budgetGrid thead th.select-col input[type="checkbox"],
#budgetGrid thead th.action-select-head input[type="checkbox"]{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:19px !important;
  height:19px !important;
  min-width:19px !important;
  min-height:19px !important;
  margin:2px 0 0 !important;
  padding:0 !important;
  border-radius:6px !important;
  border:2px solid rgba(255,255,255,.86) !important;
  background:#ffffff !important;
  cursor:pointer !important;
  box-shadow:0 6px 12px rgba(43,12,25,.20) !important;
  position:relative !important;
}
#budgetGrid #selectAllRows:checked,
#budgetGrid thead th:first-child input[type="checkbox"]:checked{
  background:#ffffff !important;
  border-color:#ffffff !important;
}
#budgetGrid #selectAllRows:checked::after,
#budgetGrid thead th:first-child input[type="checkbox"]:checked::after{
  content:'✓' !important;
  display:block !important;
  color:#872649 !important;
  font-weight:900 !important;
  font-size:14px !important;
  line-height:16px !important;
  text-align:center !important;
}
#budgetGrid tbody td:first-child,
#budgetGrid tbody td.row-select-cell{
  text-align:center !important;
  vertical-align:middle !important;
  padding-left:8px !important;
  padding-right:8px !important;
}
#budgetGrid tbody td:first-child input[type="checkbox"],
#budgetGrid tbody td.row-select-cell input[type="checkbox"]{
  width:18px !important;
  height:18px !important;
  min-width:18px !important;
  min-height:18px !important;
  accent-color:#872649 !important;
  cursor:pointer !important;
}
@media(max-width:900px){
  #budgetGrid thead th:first-child,
  #budgetGrid thead th.select-col,
  #budgetGrid thead th.action-select-head{
    width:58px !important;
    min-width:58px !important;
    max-width:58px !important;
  }
  #budgetGrid #btnInlineAddRow,
  #budgetGrid #btnCopyRow,
  #budgetGrid #btnDeleteRows,
  #budgetGrid thead th:first-child button{
    width:29px !important;
    height:29px !important;
    min-width:29px !important;
    min-height:29px !important;
    max-width:29px !important;
    max-height:29px !important;
    border-radius:10px !important;
  }
}


/* === Ajuste seguro: menú principal arriba + Seguridad admin === */
.topbar.topbar-main-actions {
  gap: 18px;
  align-items: center;
}

.topbar-main-actions .topbar-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  min-width: 0;
}

.topbar-main-actions .userbox {
  order: 1;
  display: flex;
  justify-content: flex-end;
  width: 100%;
}

.topbar-main-actions .top-actions {
  order: 2;
  display: flex !important;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 9px;
  width: 100%;
}

.topbar-main-actions .top-actions .btn {
  min-height: 40px;
  padding: 9px 14px;
  border-radius: 14px;
  background: #ffffff;
  color: var(--brand-dark);
  border: 1px solid rgba(135,38,73,.18);
  box-shadow: 0 10px 24px rgba(32,12,22,.08);
  font-weight: 900;
  line-height: 1;
}

.topbar-main-actions .top-actions .btn:hover {
  transform: translateY(-1px);
  background: #fbf7f9;
  color: var(--brand-dark);
  border-color: rgba(135,38,73,.36);
  box-shadow: 0 15px 30px rgba(32,12,22,.13);
}

.topbar-main-actions .top-actions .btn-security {
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  color: #fff;
  border-color: rgba(135,38,73,.44);
  box-shadow: 0 14px 30px rgba(135,38,73,.24);
}

.topbar-main-actions .top-actions .btn-security:hover {
  background: linear-gradient(135deg, #a12f58, var(--brand-dark));
  color: #fff;
}

.toolbar.toolbar-only-filters {
  display: block;
  padding: 18px 22px 10px;
}

.toolbar.toolbar-only-filters .filters {
  display: flex;
  align-items: end;
  gap: 12px;
  flex-wrap: wrap;
}

.toolbar.toolbar-only-filters .filters label {
  margin: 0;
  min-width: 230px;
}

.toolbar.toolbar-only-filters #searchBox {
  min-width: 340px;
}

@media (max-width: 1050px) {
  .topbar.topbar-main-actions {
    align-items: flex-start;
  }
  .topbar-main-actions .topbar-right {
    width: 100%;
  }
  .topbar-main-actions .top-actions,
  .topbar-main-actions .userbox {
    justify-content: flex-end;
  }
}

@media (max-width: 760px) {
  .topbar.topbar-main-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .topbar-main-actions .brand {
    justify-content: center;
  }
  .topbar-main-actions .topbar-right,
  .topbar-main-actions .top-actions,
  .topbar-main-actions .userbox {
    align-items: stretch;
    justify-content: center;
  }
  .topbar-main-actions .top-actions .btn {
    flex: 1 1 auto;
    min-width: 130px;
  }
  .toolbar.toolbar-only-filters {
    padding: 14px 10px 10px;
  }
  .toolbar.toolbar-only-filters .filters {
    flex-direction: column;
    align-items: stretch;
  }
  .toolbar.toolbar-only-filters .filters label,
  .toolbar.toolbar-only-filters #searchBox {
    width: 100%;
    min-width: 0;
  }
}

/* Selector de año (a la izquierda de Sede) y modal "Agregar año" */
.year-filter-wrap{display:flex;gap:8px;align-items:center}
.year-filter-wrap select{min-width:96px;width:auto}
.year-filter-wrap .btn.small{white-space:nowrap}
.add-year-modal-card{width:min(400px,100%)}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
@media(max-width:900px){
  .year-filter-wrap{flex-wrap:wrap}
}

/* Año y Sede compactos en escritorio; Búsqueda ocupa el espacio restante.
   Solo aplica arriba de 900px para no tocar el layout mobile que ya funciona. */
@media(min-width:901px){
  .filters label.filter-compact{flex:0 0 auto;min-width:0}
  .filters label.filter-compact select{width:auto}
  #filterYear{width:100px}
  #filterSede{width:150px}
  .filters label.filter-grow{flex:1 1 260px}
}

/* Fix definitivo: el texto de cada filtro (Año/Sede/Búsqueda) siempre arriba
   de su control, sin depender del ancho del select (eso fue lo que rompió a Sede). */
.filters label{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}
.filters label .year-filter-wrap{width:100%}

/* Combo deshabilitado cuando se está viendo Rúbricas (Sede no aplica ahí) */
.filters label.filter-disabled{opacity:.5}
.filters label.filter-disabled select{cursor:not-allowed}

/* Selector "Presupuestos / Rúbricas" en el header, con flecha, look de título */
.brand-view-select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  width:auto;
  background:transparent;
  border:0;
  color:var(--brand-dark);
  font-weight:900;
  font-size:1.05rem;
  padding:4px 26px 4px 4px;
  margin:0;
  cursor:pointer;
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%235f1932' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 2px center;
  background-size:18px;
}
.brand-view-select:focus{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}
.brand-view-select option{color:#2c1821;background:#fff;font-weight:700}

/* Riel flotante de acciones (Agregar/Duplicar/Eliminar), separado de la grilla.
   Mismo fondo bordó que tenía la cabecera para que los botones se vean IGUAL que antes. */
.table-action-rail{
  position:sticky;
  top:180px;
  left:auto;
  align-self:flex-start;
  z-index:5;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  padding:12px 9px;
  border-radius:22px;
  background:linear-gradient(135deg,var(--brand),var(--brand-dark));
  box-shadow:0 15px 34px rgba(69,18,38,.18);
}
@media(max-width:900px){
  .table-action-rail{
    position:static;
    flex-direction:row;
    align-self:auto;
    width:fit-content;
    margin:0 10px 10px;
    padding:9px 10px;
    border-radius:16px;
  }
}

/* Celda de Fecha envío: input de fecha real + ícono de descripción, con la descripción siempre visible debajo.
   IMPORTANTE: el flex va en el div interno, NUNCA en el <td> (poner display:flex en un <td> rompe
   el cálculo de columnas de la tabla en varios navegadores). */
.fecha-envio-cell{
  padding:6px 8px !important;
  min-width:150px;
}
.fecha-envio-cell-inner{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.fecha-envio-row{
  display:flex;
  align-items:center;
  gap:6px;
}
.fecha-envio-nota-text{
  font-size:.78rem;
  font-weight:600;
  color:var(--brand-dark);
  background:#fdeef4;
  border:1px solid rgba(135,38,73,.14);
  border-radius:8px;
  padding:3px 8px;
  line-height:1.35;
  overflow-wrap:anywhere;
  white-space:pre-wrap;
}
.fecha-envio-input{
  width:auto !important;
  flex:1 1 auto;
  min-width:118px;
  padding:6px 6px;
  border:1px solid var(--line);
  border-radius:9px;
  font:inherit;
  font-size:.85rem;
  color:var(--ink);
  background:#fff;
}
.fecha-envio-input.saving{opacity:.55}
.fecha-envio-input.saved{background:#ecfdf3;border-color:#11834d}
.fecha-envio-nota-btn{
  flex:0 0 auto;
  width:26px;
  height:26px;
  border-radius:9px;
  border:1px solid var(--line);
  background:#fff;
  color:#b9a7ae;
  font-size:13px;
  line-height:1;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:.15s ease;
}
.fecha-envio-nota-btn:hover{border-color:var(--brand);transform:translateY(-1px)}
.fecha-envio-nota-btn.has-nota{
  background:linear-gradient(135deg,var(--brand),var(--brand-dark));
  color:#fff;
  border-color:transparent;
  box-shadow:0 4px 10px rgba(135,38,73,.28);
}

.fecha-nota-popover{
  position:fixed;
  z-index:6000;
  width:280px;
  max-width:calc(100vw - 24px);
  background:#fff;
  color:var(--ink);
  border:1px solid rgba(135,38,73,.18);
  border-radius:18px;
  box-shadow:0 24px 60px rgba(32,12,22,.28);
  padding:14px;
}
.fecha-nota-popover[hidden]{display:none !important}
.fecha-nota-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
  font-weight:800;
  color:var(--brand-dark);
  font-size:.85rem;
}
.fecha-nota-close{
  border:0;background:transparent;color:var(--brand-dark);
  font-size:20px;line-height:1;cursor:pointer;padding:0 2px;
}
.fecha-nota-textarea{
  width:100%;
  min-height:70px;
  resize:vertical;
  border:1px solid var(--line);
  border-radius:10px;
  padding:8px 10px;
  font:inherit;
  font-size:.85rem;
}
.fecha-nota-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:10px;
}
@media(max-width:900px){
  .fecha-envio-cell{min-width:132px}
  .fecha-envio-input{min-width:100px;font-size:.8rem}
}

/* Modal de opciones de impresión */
.print-options-modal-card{width:min(440px,100%)}
.print-option{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 4px;
  font-weight:700;
  color:var(--ink);
  cursor:pointer;
  border-bottom:1px solid var(--line);
}
.print-option:last-of-type{border-bottom:0}
.print-option input[type="radio"]{width:auto;margin:0}
.print-option input[type="radio"]:disabled + * {opacity:.5}
.print-option:has(input:disabled){opacity:.5;cursor:not-allowed}
.print-option-hint{font-weight:600;color:var(--muted);font-size:.85rem}
.print-option-sub{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  padding:8px 4px 12px 30px;
  margin-top:-4px;
}
.print-option-sub label{font-size:.85rem;font-weight:700;color:var(--brand-dark);flex:1 1 140px}
.print-option-sub[hidden]{display:none}
