/* Modelo oficial de modales GesGrid. Aplicacion explicita con .gg-modal. */
.gg-modal-dialog {
    width: calc(100% - 32px);
    max-width: 1040px;
    margin: 28px auto;
}
.gg-modal {
    --gg-modal-ink: #30283c;
    --gg-modal-muted: #756c81;
    --gg-modal-border: #e8e3ee;
    --gg-modal-soft: #faf9fc;
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 56px);
    overflow: hidden;
    border: 1px solid var(--gg-modal-border);
    border-radius: 18px;
    background: #fff;
    color: var(--gg-modal-ink);
    box-shadow: 0 20px 65px rgba(49, 22, 64, .20);
    text-transform: none;
}
.gg-modal-dialog .gg-modal { border: 1px solid var(--gg-modal-border); border-radius: 18px; }
.gg-modal .gg-modal__header {
    position: relative;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 24px 28px;
    border-top: 4px solid var(--backgrid-color-primary);
    border-bottom: 1px solid var(--gg-modal-border);
    background: #fff;
}
.gg-modal__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 46px;
    width: 46px;
    height: 46px;
    border-radius: 13px;
    color: var(--backgrid-color-primary);
    background: var(--backgrid-color-primary-soft);
    font-size: 22px;
}
.gg-modal__heading { min-width: 0; padding-right: 32px; }
.gg-modal__eyebrow { margin-bottom: 5px; color: var(--gg-modal-muted); font-size: 11px; letter-spacing: 1.7px; text-transform: uppercase; }
.gg-modal .modal-title { margin: 0; color: var(--gg-modal-ink); font-size: 24px; font-weight: 600; line-height: 1.25; text-transform: none; }
.gg-modal__subtitle { margin: 6px 0 0; color: var(--gg-modal-muted); font-size: 12px; }
.gg-modal .gg-modal__close { position: absolute; top: 24px; right: 24px; display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin: 0; padding: 0; border: 1px solid var(--gg-modal-border); border-radius: 8px; color: var(--gg-modal-muted); background: #fff; font-size: 12px; opacity: 1; text-shadow: none; }
.gg-modal .gg-modal__body { display: flex; flex: 1 1 auto; min-height: 0; padding: 0; overflow: hidden; }
.gg-modal__layout { display: flex; flex: 1; align-items: stretch; height: 610px; min-height: 0; overflow: hidden; }
.gg-modal__sidebar { display: flex; flex-direction: column; flex: 0 0 178px; min-height: 0; padding: 24px 12px 18px; border-right: 1px solid var(--gg-modal-border); background: var(--gg-modal-soft); }
.gg-modal__nav-label { margin: 0 10px 15px; color: var(--gg-modal-muted); font-size: 11px; font-weight: 600; letter-spacing: 1px; }
.gg-modal__nav { display: flex; flex-direction: column; gap: 6px; }
.gg-modal__nav button { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 10px; border: 0; border-radius: 8px; color: var(--gg-modal-muted); background: transparent; text-align: left; font-size: 13px; }
.gg-modal__nav button[aria-selected="true"], .gg-modal__nav button:hover { color: var(--backgrid-color-primary); background: var(--backgrid-color-primary-soft); }
.gg-modal__nav button[aria-selected="true"] { font-weight: 600; }
.gg-modal__nav i { flex: 0 0 17px; font-size: 16px; }
.gg-modal__brand { display: flex; flex-direction: column; gap: 2px; margin: auto 10px 0; padding-top: 32px; color: var(--gg-modal-muted); font-size: 10px; letter-spacing: .7px; }
.gg-modal__brand strong { color: var(--backgrid-color-primary); font-size: 16px; font-weight: 600; }
.gg-modal__content { flex: 1; min-width: 0; min-height: 0; padding: 26px 30px; overflow-y: auto; overscroll-behavior: contain; }
.gg-modal [hidden] { display: none !important; }
.gg-modal__section-header { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 22px; }
.gg-modal__section-header h5 { margin: 0; color: var(--gg-modal-ink); font-size: 16px; font-weight: 600; text-transform: none; }
.gg-modal__section-header span { color: var(--gg-modal-muted); font-size: 11px; }
.gg-modal__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 18px; }
.gg-modal__wide { grid-column: 1 / -1; }
.gg-modal .form-group { min-width: 0; margin: 0; }
.gg-modal .form-group > label, .gg-modal .control-label { display: block; margin: 0 0 7px; padding: 0; float: none; color: var(--gg-modal-ink); font-size: 12px; font-weight: 600; text-transform: none; }
.gg-modal__required { margin-left: 3px; color: var(--backgrid-color-primary); }
.gg-modal .form-control, .gg-modal .bootstrap-select > .dropdown-toggle { min-height: 42px; height: 42px; border: 1px solid var(--gg-modal-border); border-radius: 8px; background: #fff; color: var(--gg-modal-ink); font-size: 13px; box-shadow: 0 1px 2px rgba(33, 21, 43, .02); text-transform: none; }
.gg-modal .bootstrap-select { width: 100% !important; min-width: 0; }
.gg-modal .bootstrap-select > .dropdown-toggle { padding-right: 30px; }
.gg-modal .bootstrap-select .dropdown-toggle .filter-option { overflow: hidden; text-overflow: ellipsis; }
.gg-modal .bootstrap-select .dropdown-menu { max-width: 100%; }
.gg-modal .form-control:focus, .gg-modal .bootstrap-select.open > .dropdown-toggle { border-color: var(--backgrid-color-primary); box-shadow: 0 0 0 3px var(--backgrid-color-primary-focus); }
.gg-modal .form-control[readonly], .gg-modal .form-control[disabled] { background: var(--gg-modal-soft); color: var(--gg-modal-muted); }
.gg-modal .form-control::placeholder { color: var(--gg-modal-muted); opacity: .8; }
.gg-modal .gg-modal__client-name[readonly] { background: #fff; color: var(--gg-modal-ink); cursor: pointer; }
.gg-modal .input-group { display: flex; align-items: stretch; gap: 7px; width: 100%; }
.gg-modal .input-group > .form-control, .gg-modal .input-group > .bootstrap-select { flex: 1; float: none; min-width: 0; width: 1%; }
.gg-modal .input-group > .bootstrap-select { width: 1% !important; }
.gg-modal .input-group-btn { display: flex; align-items: stretch; flex: 0 0 auto; width: auto; padding: 0; }
.gg-modal .input-group-btn > .btn { display: inline-flex; align-items: center; justify-content: center; min-width: 42px; min-height: 42px; margin: 0; padding: 8px 12px; border: 1px solid var(--gg-modal-border); border-radius: 8px; background: #fff; color: var(--backgrid-color-primary); box-shadow: none; font-size: 14px; }
.gg-modal .input-group-btn > .btn:hover { border-color: var(--backgrid-color-primary); background: var(--backgrid-color-primary-soft); }
.gg-modal .input-group-btn > .btn.gg-modal__inline-save { white-space: normal; font-size: 12px; }
.gg-modal .input-validation-error, .gg-modal .bootstrap-select:has(select.input-validation-error) > .dropdown-toggle { border-color: #a82b43; }
.gg-modal .field-validation-error { display: block; margin-top: 5px; color: #a82b43; font-size: 12px; }
.gg-modal__help { display: block; margin: 6px 0 0; color: var(--gg-modal-muted); font-size: 11px; }
.gg-modal__codes { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--gg-modal-border); }
.gg-modal__subheading { margin: 22px 0 16px; padding-top: 20px; border-top: 1px solid var(--gg-modal-border); color: var(--gg-modal-muted); font-size: 11px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; }
.gg-modal textarea.form-control { min-height: 100px !important; height: auto; resize: vertical; }
.gg-modal__switch-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 54px; padding: 13px 0; border-bottom: 1px solid var(--gg-modal-border); }
.gg-modal__switch-row:last-child { border-bottom: 0; }
.gg-modal .gg-modal__switch-row > label { margin: 0; font-size: 13px; font-weight: 400; }
.gg-modal__switch-note { display: block; margin-top: 2px; color: var(--gg-modal-muted); font-size: 11px; }
.gg-modal .gg-modal__switch { appearance: none; position: relative; flex: 0 0 34px; width: 34px; height: 20px; margin: 0; padding: 2px; border: 0; border-radius: 20px; background: #d9d3df; cursor: pointer; }
.gg-modal .gg-modal__switch:before { display: block; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .15); content: ""; transition: transform .15s; }
.gg-modal .gg-modal__switch:checked { background: var(--backgrid-color-primary); }
.gg-modal .gg-modal__switch:checked:before { transform: translateX(14px); }
.gg-modal .gg-modal__switch:disabled { opacity: .5; cursor: not-allowed; }
.gg-modal .gg-modal__footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 18px 28px; border-top: 1px solid var(--gg-modal-border); background: var(--gg-modal-soft); }
.gg-modal .gg-modal__header, .gg-modal .gg-modal__footer { flex: 0 0 auto; }
.gg-modal__note { color: var(--gg-modal-muted); font-size: 11px; }
.gg-modal__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 9px; margin-left: auto; }
.gg-modal .gg-modal__button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; margin: 0; padding: 10px 16px; border: 1px solid var(--gg-modal-border); border-radius: 8px; background: #fff; color: var(--gg-modal-ink); font-size: 13px; font-weight: 600; text-transform: none !important; box-shadow: none; }
.gg-modal .gg-modal__button:hover { border-color: var(--backgrid-color-primary); }
.gg-modal .gg-modal__button--primary { border-color: var(--backgrid-color-primary); background: var(--backgrid-color-primary); color: var(--backgrid-color-primary-contrast); box-shadow: 0 3px 8px var(--backgrid-color-primary-focus); }
.gg-modal .gg-modal__button--primary:hover { background: var(--backgrid-color-primary-dark); color: var(--backgrid-color-primary-contrast); }
.gg-modal .panel-group { margin: 18px 0 0; }
.gg-modal .irs-bar, .gg-modal .irs-bar-edge { background: var(--backgrid-color-primary); }
.gg-modal .irs-from, .gg-modal .irs-single { background: var(--backgrid-color-primary); }
@media (max-width: 767px) {
    .gg-modal-dialog { width: calc(100% - 20px); margin: 10px auto; }
    .gg-modal { max-height: calc(100vh - 20px); }
    .gg-modal .gg-modal__header { padding: 20px 18px; gap: 12px; }
    .gg-modal .modal-title { font-size: 21px; }
    .gg-modal .gg-modal__close { top: 18px; right: 18px; }
    .gg-modal__layout { flex-direction: column; }
    .gg-modal__sidebar { flex: 0 0 auto; padding: 10px; border-right: 0; border-bottom: 1px solid var(--gg-modal-border); }
    .gg-modal__nav-label, .gg-modal__brand { display: none; }
    .gg-modal__nav { flex-direction: row; flex-wrap: wrap; gap: 4px; }
    .gg-modal__nav button { gap: 6px; padding: 9px; font-size: 12px; }
    .gg-modal__nav i { flex-basis: 14px; font-size: 14px; }
    .gg-modal__content { padding: 22px 18px; }
    .gg-modal .form-control, .gg-modal .bootstrap-select > .dropdown-toggle { font-size: 16px; }
    .gg-modal .gg-modal__footer { padding: 15px 18px; }
    .gg-modal__fields { gap: 17px 14px; }
}
@media (max-width: 479px) {
    .gg-modal__fields { grid-template-columns: minmax(0, 1fr); }
    .gg-modal__subtitle { display: none; }
    .gg-modal .modal-title { font-size: 19px; }
    .gg-modal__icon { flex-basis: 38px; width: 38px; height: 38px; }
    .gg-modal__eyebrow { font-size: 10px; letter-spacing: 1px; }
    .gg-modal__actions { width: 100%; }
    .gg-modal__actions > .btn { flex: 1 1 auto; }
    .gg-modal .input-group { flex-wrap: wrap; }
}
@media (pointer: coarse) {
    .gg-modal__nav button, .gg-modal .gg-modal__button, .gg-modal .input-group-btn > .btn { min-height: 44px; }
    .gg-modal__switch-row { min-height: 54px; }
}
@media (prefers-reduced-motion: reduce) {
    .gg-modal .gg-modal__switch:before { transition: none; }
}
