@import url('fonts.css');

/* ========================
   Global Styles (CSS Variables)
   ======================== */

:root {
    /* Colors: Variables para el tema claro (por defecto) */
    --color-primary: #006838;
    --color-on-primary: #FFFFFF;
    --color-primary-hover: #48835B;
    --color-primary-active: #12512E;
    /*RGB del color primario*/
    --color-primary-rgb: 0, 104, 56;

    --color-secondary: #F8F9FA;
    --color-on-secondary: #49475A;
    --color-secondary-hover: #FFFFFF;
    --color-secondary-active: #E9ECEF;
    /*RGB del color primario*/
    --color-secondary-rgb: 248, 249, 250;

    --color-link: #58A42C;
    --color-link-hover: #6FCE38;

    --color-surface: #FFFFFF;
    --color-on-surface: #49475A;

    --color-input-placeholder: #9794AA;
    --color-input-label: #49475A;
    --color-input-icon: #CDCDCD;

    --color-error: #C30D0D;
    /*RGB del color error*/
    --color-error-rgb: 195, 13, 13;
    --color-shadow-error: rgba(195, 13, 13, 0.5);

    --color-warning: #FFD80C;
    /*RGB del color warning*/
    --color-warning-rgb: 255, 216, 12;
    --color-shadow-warning: rgba(255, 216, 12, 0.5);

    --color-info: #0CD3FD;
    /*RGB del color info*/
    --color-info-rgb: 12, 211, 253;
    --color-shadow-info: rgba(12, 211, 253, 0.5);

    --color-success: #58A42C;
    /*RGB del color success*/
    --color-sucess-rgb: 0, 104, 56;
    --color-shadow-success: rgba(0, 104, 56, 0.5);

    --color-hover-light: #F5F5F5;
    --color-hover-medium: #EEEEEE;
    --color-border: #CDCDCD;
    --color-bg-disabled: #CDCDCD;
    --color-text-disabled: #FFFFFF;
    --color-bg-disabled-alfa: #CDCDCD47;
    --color-backdrop: #49475A;
    --color-backdrop-rgb: 73, 71, 90;

    --color-black: #000000;
    /*RGB del color black*/
    --color-black-rgb: 0, 0, 0;
    --color-white: #FFFFFF;

    /* Typography */
    --font-family: 'Poppins', sans-serif;
    --font-size-base: 16px;

    /* Utilities */
    --size-0: 0px;
    --size-1: 4px;
    --size-2: 8px;
    --size-3: 12px;
    --size-4: 16px;
    --size-5: 20px;
    --size-6: 24px;
    --size-7: 28px;
    --size-8: 32px;
    --size-9: 36px;
    --size-10: 40px;
    --size-11: 44px;
    --size-12: 48px;
    --size-13: 52px;
    --size-14: 56px;
    --size-15: 60px;
    --shadow-soft: 0px 2px 6px rgba(var(--color-black-rgb), 0.08);
    --shadow-medium: 0px 4px 12px rgba(var(--color-black-rgb), 0.15);
    --shadow-strong: 0px 6px 18px rgba(var(--color-black-rgb), 0.25);
    --shadow-hover: 0px 3px 8px rgba(var(--color-black-rgb), 0.15);
    --shadow-card-hover: 0 16px 32px -8px rgba(var(--color-black-rgb), 0.15);
    --shadow-success: 0px 0px 5px rgba(var(--color-sucess-rgb), 0.4);
    --shadow-error: 0px 0px 5px rgba(var(--color-error-rgb), 0.4);
    --shadow-div-border: 0px -1px 3px 0px rgba(var(--color-black-rgb), 0.5);
    --time-transition: .3s;
    --time-transition-fast: .2s;
}

/* Colors: Variables para el tema oscuro */
/* body.dark-mode {} */

/* ========================
   Global Styles
   ======================== */

/* Reset de estilos por defecto */
*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    font-size: var(--font-size-base);
    scroll-behavior: smooth;
}

body {
    background-color: var(--color-surface);
    color: var(--color-on-surface);
}

body * {
    font-family: var(--font-family);
    font-size: 1rem;
    line-height: 1.2;
    font-weight: 400;
    font-style: normal;
    color: var(--color-on-surface);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

b,
strong {
    font-weight: 700 !important;
}

p {
    line-height: 1.2;
}

img {
    max-width: 100%;
    height: auto;
}

.style-italic {
    font-style: italic !important;
}

.style-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, "Roboto Mono", "Courier New", monospace;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    background-color: var(--color-hover-medium);
    border: 1px solid var(--color-border);
    padding: 0.5rem 0.75rem;
    border-radius: 8px;
    box-shadow: var(--shadow-soft);
    white-space: pre-wrap;
    word-break: break-word;
    max-width: 100%;
    display: inline-block;
    margin: 0.625rem 0;
}

.subtitle {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 1.25rem;
}

a,
.style-link {
    text-decoration: none;
    color: var(--color-link);
}

a:hover,
.style-link:hover {
    cursor: pointer;
    color: var(--color-link-hover);
}

i.style-icon {
    display: flex;
    align-items: center;
    font-size: 1.875rem;
    color: var(--color-on-surface);
    opacity: 0.8;
    transition: all var(--time-transition);
}

i.style-icon:hover {
    cursor: pointer;
    opacity: 1;
}

i.icon-disabled {
    cursor: not-allowed !important;
    opacity: 1 !important;
    color: var(--color-bg-disabled) !important;
}

.ui-helper-hidden-accessible {
    display: none !important;
}

.bg-white {
    background-color: var(--color-white);
}

.alignContent {
    align-content: center !important;
}

/* ========================
   Global Classes
   ======================== */

.hidden {
    display: none !important;
}

/* ========================
   Lang Select
   ======================== */
.dropdown.lang-config {
    width: 120px;
    margin: 0 auto;
}

.dropdown.lang-config .dropdown-toggle::after {
    display: none;
}

.dropdown.lang-config button {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    padding: var(--size-2) var(--size-3);
    box-sizing: border-box;
    border-radius: var(--size-2);
    width: 100%;
    cursor: pointer;
    gap: var(--size-2);
    font-size: 0.875rem;
}

.dropdown.lang-config button:hover {
    box-shadow: var(--shadow-soft);
}

.dropdown.lang-config button:active,
.dropdown.lang-config button.show,
.dropdown.lang-config button:focus {
    box-shadow: none;
    border-color: var(--color-border);
}

.dropdown.lang-config .lang-flag {
    width: 22px;
    height: auto;
    border-radius: var(--size-1);
}

.dropdown.lang-config ul.dropdown-menu {
    width: 120px;
    min-width: 120px;
    max-width: 120px;
    padding: var(--size-0);
    border-color: var(--color-border);
}

.dropdown.lang-config ul.dropdown-menu a {
    display: flex;
    flex-direction: row;
    align-items: center;
    padding: var(--size-1) var(--size-3);
    box-sizing: border-box;
    width: 100%;
    cursor: pointer;
    gap: var(--size-2);
    font-size: 0.875rem;
}

.dropdown.lang-config ul.dropdown-menu a:hover {
    background-color: var(--color-hover-light);
}

.dropdown.lang-config ul.dropdown-menu a:active,
.dropdown.lang-config ul.dropdown-menu a:focus {
    background-color: var(--color-surface);
    color: var(--color-on-surface);
    border-radius: var(--size-1);
}

.dropdown.lang-config ul.dropdown-menu a:focus {
    background-color: var(--color-hover-light);
}

.dropdown.lang-config ul.dropdown-menu li:first-child a:hover {
    border-top-left-radius: var(--size-1);
    border-top-right-radius: var(--size-1);
}

.dropdown.lang-config ul.dropdown-menu li:last-child a:hover {
    border-bottom-left-radius: var(--size-1);
    border-bottom-right-radius: var(--size-1);
}

.dropdown.lang-config ul.dropdown-menu img {
    width: 22px;
    height: auto;
    border-radius: var(--size-1);
}

/* ========================
   Spinner
   ======================== */

.spinner {
    position: fixed;
    opacity: 1;
    z-index: 3000;
    background-color: var(--color-primary);
    display: none;
    left: 0;
    top: 0;
    user-select: none;
}

.spinner-info {
    margin: auto;
}

.spinner-img {
    width: 150px;
    margin: 0 auto 1rem auto;
}

.spinner-msg {
    font-weight: 700;
    font-size: 1rem;
    color: var(--color-on-primary);
}

/* ========================
   Notification Toast
   ======================== */

div.toastify.custom-toast {
    padding: 0;
    background: transparent;
    box-shadow: none;
    border-radius: var(--size-2);
    width: 80%;
    max-width: 340px;
}

div.toastify.custom-toast .container-notification {
    padding: 0.75rem;
    position: relative;
    background-color: var(--color-white);
    border-radius: var(--size-2);
    cursor: pointer;
    gap: 15px;
    border: 1px solid var(--color-border);
}

div.toastify.custom-toast .icon-notification {
    width: 40px;
    height: 40px;
    border-radius: var(--size-2);
}

div.toastify.custom-toast .info-notification {
    gap: 5px;
}

div.toastify.custom-toast .title-notificacion {
    font-size: 0.9375rem;
    font-weight: 700;
    margin: 0;
}

div.toastify.custom-toast .message-notificacion,
div.toastify.custom-toast .message-notificacion b {
    font-size: 0.8125rem;
    line-height: 1.1;
    margin: 0;
}

div.toastify.custom-toast .progress-timer-notification {
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100%;
    height: 5px;
    border-bottom-left-radius: 50px;
    border-bottom-right-radius: 50px;
}

/* Success */
div.toastify.toast-success .progress-timer-notification {
    background-color: var(--color-success);
}

div.toastify.toast-success .title-notificacion {
    color: var(--color-success);
}

div.toastify.toast-success:hover {
    filter: drop-shadow(0px 8px 15px var(--color-shadow-success)) !important;
}

/* Info */
div.toastify.toast-info .progress-timer-notification {
    background-color: var(--color-info);
}

div.toastify.toast-info .title-notificacion {
    color: var(--color-info);
}

div.toastify.toast-info:hover {
    box-shadow: 0px 2px 15px var(--color-shadow-info);
}

/* Warning */
div.toastify.toast-warning .progress-timer-notification {
    background-color: var(--color-warning);
}

div.toastify.toast-warning .title-notificacion {
    color: var(--color-warning);
}

div.toastify.toast-warning:hover {
    box-shadow: 0px 2px 15px var(--color-shadow-warning);
}

/* Error */
div.toastify.toast-error .progress-timer-notification {
    background-color: var(--color-error);
}

div.toastify.toast-error .title-notificacion {
    color: var(--color-error);
}

div.toastify.toast-error:hover {
    box-shadow: 0px 2px 15px var(--color-shadow-error);
}

/* ========================
   Alerts
   ======================== */

div.swal2-container div.swal2-popup {
    border-radius: 20px;
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow-strong);
    padding-bottom: 1.2rem;
}

div.swal2-container div.swal2-popup img.swal2-image {
    margin-top: 1.2rem;
}

div.swal2-container div.swal2-popup .swal2-title {
    padding: 0 1rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--color-on-surface);
    line-height: 1.2;
}

div.swal2-container div.swal2-popup .swal2-html-container {
    padding: 0.625rem 1rem;
    font-size: 1rem;
    font-weight: 400;
    color: var(--color-on-surface);
    line-height: 1.2;
}

div.swal2-container div.swal2-popup .swal2-actions {
    margin: 0;
    padding: 1rem 1rem 0 1rem;
    width: 100%;
    flex-direction: row;
    gap: 1rem;
    align-items: center;
    flex-wrap: nowrap;
}

div.swal2-container div.swal2-popup .swal2-actions button {
    display: flex;
}

/* ========================
   jAlerts
   ======================== */

.ja_wrap {
    z-index: 2000 !important;
}

.ja_wrap.ja_wrap_black {
    background: rgba(0, 0, 0, .4) !important;
}

div.dialog-alert:focus-visible,
div.dialog-alert div.ja_body:focus-visible {
    outline: none !important;
}

div.dialog-alert {
    width: 32rem;
}

.jAlert.dialog-alert {
    background: transparent;
    border-radius: 0;
    box-shadow: none;
    margin: 0 auto;
}

.jAlert.dialog-alert .ja_body {
    background: var(--color-white);
    border-radius: 20px;
    padding: 1rem 1rem 1.2rem 1rem;
    overflow: hidden;
    text-align: center;
    user-select: none;
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow-strong);
}

.jAlert.dialog-alert .ja_body .ja_btn_wrap.optBack {
    display: flex;
    background: var(--color-white);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    margin: 0;
    padding: 1rem 1rem 0 1rem;
    width: 100%;
    flex-direction: row;
    gap: 1rem;
    align-items: center;
    flex-wrap: nowrap;
}

.jAlert.dialog-alert .ja_body .ja_btn_wrap.optBack .btn.action-btn {
    margin: 0;
}

.jAlert.dialog-alert .content-jalert {
    display: flex;
    align-items: center;
    flex-direction: column;
}

.jAlert.dialog-alert .content-jalert .img-jalert {
    width: 80px;
    height: 80px;
    margin-bottom: 1rem;
}

.jAlert.dialog-alert .content-jalert .title-jalert {
    padding: 0 1rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--color-on-surface);
    line-height: 1.2;
    margin: 0;
}

.jAlert.dialog-alert .content-jalert .msg-jalert {
    padding: 0.625rem 1rem;
    font-size: 1rem;
    font-weight: 400;
    color: var(--color-on-surface);
    line-height: 1.2;
    margin: 0;
}

/* ========================
   Accordion
   ======================== */

.accordion:not(.accordion-filters) .accordion-item {
    border: 0 none;
}

.accordion:not(.accordion-filters) .accordion-button {
    background-color: var(--color-primary) !important;
    color: var(--color-on-primary) !important;
    padding: 0.75rem 3.125rem 0.75rem 0.5rem !important;
    border-radius: 10px !important;
    font-weight: 700;
    font-size: 1rem;
    border: 1px solid var(--color-primary);
    box-shadow: none !important;
}

.accordion:not(.accordion-filters) .accordion-button:hover {
    background-color: var(--color-primary-hover) !important;
    border-color: var(--color-primary-hover) !important;
}

.accordion:not(.accordion-filters) .accordion-button:active {
    background-color: var(--color-primary-active) !important;
    border-color: var(--color-primary-active) !important;
}

.accordion:not(.accordion-filters) .accordion-button::after {
    width: 0 !important;
    height: 0 !important;
    background-image: none !important;
}

.accordion:not(.accordion-filters) .accordion-button .caret-icon {
    transition: transform var(--time-transition) ease-out;
    font-size: 1.25rem;
    color: var(--color-on-primary);
    display: flex;
    align-items: center;
    position: absolute;
    right: 20px;
}

.accordion:not(.accordion-filters) .accordion-button.collapsed .caret-icon {
    transform: rotate(180deg);
}

.accordion:not(.accordion-filters) .accordion-button:focus {
    box-shadow: none;
}

.accordion:not(.accordion-filters) .accordion-body {
    padding: 0.625rem 0.5rem;
}

/* ========================
   Tooltips
   ======================== */

.elementTooltip {
    cursor: pointer;
}

div.tooltip.custom-style {
    opacity: 1;
}

div.tooltip.custom-style .tooltip-inner {
    background-color: var(--color-primary-active);
    color: var(--color-on-primary);
    font-size: 0.75rem;
}

.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,
.bs-tooltip-end .tooltip-arrow::before {
    border-right-color: var(--color-primary-active);
}

.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,
.bs-tooltip-top .tooltip-arrow::before {
    border-top-color: var(--color-primary-active);
}

.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,
.bs-tooltip-start .tooltip-arrow::before {
    border-left-color: var(--color-primary-active);
}

.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,
.bs-tooltip-bottom .tooltip-arrow::before {
    border-bottom-color: var(--color-primary-active);
}

.tooltip .tooltip-arrow {
    display: none !important;
}

/* ========================
   Badge
   ======================== */

span.badge {
    font-size: 0.6875rem;
    padding: 0.1875rem 0.625rem;
    border-radius: 50px;
}

/* ========================
   Color States
   ======================== */

/* Firmantes */
.notStarted {
    background-color: #E0F0FF;
    color: #0A3A63;
}

.isCompleted {
    background-color: #D1F5D3;
    color: #225C1E;
}

/* Solicitudes */
.isCreated {
    background-color: #CCE0F6;
    color: #003566;
}

.isPending {
    background-color: #FFF3CD;
    color: #594100;
}

.isSigned {
    background-color: #4F8B2E;
    color: #FFFFFF;
}

.isRejected {
    background-color: #F8D7DA;
    color: #721C24;
}

.isExpired {
    background-color: #E2E3E5;
    color: #49475A;
}

/* De Estado */
.isActive {
    background-color: #4F8B2E;
    color: #FFFFFF;
}

.isInactive {
    background-color: #F8D7DA;
    color: #721C24;
}

/* ========================
   Responsive Design (Media Queries)
   ======================== */

/* De 577px a 1199px */
@media (min-width: 577px) and (max-width: 1199px) {
    :root {
        --font-size-base: 14px;
    }
}

@media (min-width: 451px) and (max-width: 1024px) {

    .ja_btn_wrap button.btn.action-btn {
        font-size: 0.875rem !important;
        padding: var(--size-2) !important;
    }
}

/* De 991px para abajo */
@media (max-width: 991px) {
    i.style-icon {
        font-size: 1.75rem;
    }
}

/* De 767px para abajo */
@media (max-width: 767px) {
    div.toastify.custom-toast {
        max-width: 300px;
    }

    /* ========================
    Tooltips
   ======================== */

    div.tooltip.custom-style {
        display: none !important;
    }
}

/* De 576px para abajo */
@media (max-width: 576px) {
    :root {
        --font-size-base: 12px;
    }
}

/* De 400px para abajo */
@media (max-width: 400px) {
    div.toastify.custom-toast {
        width: 100%;
        max-width: calc(100% - 30px);
    }
}