/* Regalo UI foundation: layout and controls without a framework dependency. */
*, *::before, *::after { box-sizing: border-box; }
html { min-width: 320px; }
body { margin: 0; }
button, input, select, textarea { margin: 0; font: inherit; color: inherit; }
button, [role="button"] { cursor: pointer; }
button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; opacity: .62; }
img, svg { max-width: 100%; vertical-align: middle; }
a { color: inherit; }
hr { height: 1px; margin: 1.5rem 0; border: 0; background: var(--line, #ede4ea); }
h1, h2, h3, h4, h5, h6, p { margin-top: 0; }
ol, ul { margin-top: 0; }
table { width: 100%; border-collapse: collapse; }

.container, .container-fluid, .site-container { width: 100%; margin-inline: auto; padding-inline: 1rem; }
.container { max-width: 1180px; }
.container-fluid { max-width: none; }

.row { display: flex; flex-wrap: wrap; margin: -.5rem; }
.row > * { width: 100%; min-width: 0; padding: .5rem; }
.g-2 { margin: -.25rem; } .g-2 > * { padding: .25rem; }
.g-3 { margin: -.5rem; } .g-3 > * { padding: .5rem; }
.g-4 { margin: -.75rem; } .g-4 > * { padding: .75rem; }
.g-5 { margin: -1.5rem; } .g-5 > * { padding: 1.5rem; }
.col-1 { width: 8.3333%; } .col-2 { width: 16.6667%; } .col-3 { width: 25%; } .col-4 { width: 33.3333%; }
.col-5 { width: 41.6667%; } .col-6 { width: 50%; } .col-7 { width: 58.3333%; } .col-8 { width: 66.6667%; }
.col-9 { width: 75%; } .col-10 { width: 83.3333%; } .col-11 { width: 91.6667%; } .col-12 { width: 100%; }

.d-none { display: none !important; }
.d-block { display: block !important; }
.d-inline-block { display: inline-block !important; }
.d-flex { display: flex !important; }
.d-inline-flex { display: inline-flex !important; }
.d-grid { display: grid !important; }
.flex-column { flex-direction: column !important; }
.flex-wrap { flex-wrap: wrap !important; }
.flex-nowrap { flex-wrap: nowrap !important; }
.flex-fill { flex: 1 1 auto !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.flex-shrink-0 { flex-shrink: 0 !important; }
.justify-content-center { justify-content: center !important; }
.justify-content-end { justify-content: flex-end !important; }
.justify-content-between { justify-content: space-between !important; }
.align-items-start { align-items: flex-start !important; }
.align-items-center { align-items: center !important; }
.align-items-end { align-items: flex-end !important; }
.align-self-start { align-self: flex-start !important; }
.align-middle { vertical-align: middle !important; }
.gap-1 { gap: .25rem !important; } .gap-1\.5 { gap: .375rem !important; } .gap-2 { gap: .5rem !important; } .gap-2\.5 { gap: .625rem !important; } .gap-3 { gap: 1rem !important; }

.m-2 { margin: .5rem !important; } .m-auto { margin: auto !important; }
.mt-0 { margin-top: 0 !important; } .mt-1 { margin-top: .25rem !important; } .mt-2 { margin-top: .5rem !important; }
.mt-3 { margin-top: 1rem !important; } .mt-4 { margin-top: 1.5rem !important; } .mt-5 { margin-top: 3rem !important; } .mt-auto { margin-top: auto !important; }
.mb-0 { margin-bottom: 0 !important; } .mb-1 { margin-bottom: .25rem !important; } .mb-2 { margin-bottom: .5rem !important; }
.mb-3 { margin-bottom: 1rem !important; } .mb-4 { margin-bottom: 1.5rem !important; } .mb-5 { margin-bottom: 3rem !important; }
.ms-1 { margin-left: .25rem !important; } .ms-1\.5 { margin-left: .375rem !important; } .ms-2 { margin-left: .5rem !important; } .ms-3 { margin-left: 1rem !important; }
.ms-4 { margin-left: 1.5rem !important; } .ms-5 { margin-left: 3rem !important; }
.me-1 { margin-right: .25rem !important; } .me-1\.5 { margin-right: .375rem !important; } .me-2 { margin-right: .5rem !important; } .me-3 { margin-right: 1rem !important; }
.mx-0 { margin-inline: 0 !important; } .mx-1 { margin-inline: .25rem !important; } .mx-auto { margin-inline: auto !important; }
.my-2 { margin-block: .5rem !important; } .my-4 { margin-block: 1.5rem !important; } .my-5 { margin-block: 3rem !important; }
.p-0 { padding: 0 !important; } .p-2 { padding: .5rem !important; } .p-3 { padding: 1rem !important; }
.p-4 { padding: 1.5rem !important; } .p-5 { padding: 3rem !important; }
.px-2 { padding-inline: .5rem !important; } .px-2\.5 { padding-inline: .625rem !important; } .px-3 { padding-inline: 1rem !important; } .px-4 { padding-inline: 1.5rem !important; } .px-5 { padding-inline: 3rem !important; }
.py-0 { padding-block: 0 !important; } .py-1 { padding-block: .25rem !important; } .py-2 { padding-block: .5rem !important; } .py-2\.5 { padding-block: .625rem !important; }
.py-3 { padding-block: 1rem !important; } .py-4 { padding-block: 1.5rem !important; } .py-5 { padding-block: 3rem !important; }
.pt-0 { padding-top: 0 !important; } .pt-2 { padding-top: .5rem !important; } .pt-3 { padding-top: 1rem !important; }
.pt-4 { padding-top: 1.5rem !important; } .pt-5 { padding-top: 3rem !important; }
.pb-0 { padding-bottom: 0 !important; } .pb-2 { padding-bottom: .5rem !important; } .pb-3 { padding-bottom: 1rem !important; }
.pb-4 { padding-bottom: 1.5rem !important; } .pb-5 { padding-bottom: 3rem !important; }
.ps-4 { padding-left: 1.5rem !important; } .pe-4 { padding-right: 1.5rem !important; }

.w-100 { width: 100% !important; } .w-75 { width: 75% !important; } .w-50 { width: 50% !important; } .w-auto { width: auto !important; }
.h-100 { height: 100% !important; }
.overflow-auto { overflow: auto !important; } .overflow-hidden { overflow: hidden !important; }
.position-relative { position: relative !important; } .position-absolute { position: absolute !important; } .position-fixed { position: fixed !important; }
.top-0 { top: 0 !important; } .end-0 { right: 0 !important; }
.text-start { text-align: left !important; } .text-center { text-align: center !important; } .text-end { text-align: right !important; }
.text-uppercase { text-transform: uppercase !important; }
.text-nowrap { white-space: nowrap !important; } .text-break { overflow-wrap: anywhere !important; }
.text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.text-decoration-none { text-decoration: none !important; }
.text-white { color: #fff !important; } .text-dark { color: var(--ink-950, #1f172a) !important; } .text-danger { color: var(--danger, #b91c1c) !important; }
.text-success { color: var(--success, #6d28d9) !important; } .text-warning { color: var(--warning, #b45309) !important; } .text-info { color: var(--info, #1d4ed8) !important; }
.text-secondary { color: var(--ink-600, #716a78) !important; }
.fw-normal { font-weight: 400 !important; } .fw-medium { font-weight: 500 !important; } .fw-semibold { font-weight: 650 !important; } .fw-bold { font-weight: 750 !important; }
.fst-italic { font-style: italic !important; }
.fs-1 { font-size: 2.5rem !important; } .fs-2 { font-size: 2rem !important; } .fs-3 { font-size: 1.75rem !important; }
.fs-4 { font-size: 1.5rem !important; } .fs-5 { font-size: 1.2rem !important; } .fs-6 { font-size: 1rem !important; }
.small, small { font-size: .82rem; }
.lead { font-size: 1.1rem; }
.display-4 { font-size: clamp(2.3rem, 5vw, 4.3rem); line-height: 1; }
.display-5 { font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1.05; }
.font-monospace { font-family: ui-monospace, SFMono-Regular, Consolas, monospace !important; }
.opacity-10 { opacity: .1 !important; } .opacity-25 { opacity: .25 !important; } .opacity-75 { opacity: .75 !important; }
.bg-white { background: #fff !important; } .bg-transparent { background: transparent !important; }
.bg-dark { background: var(--brand-950, #831843) !important; } .bg-primary { background: var(--brand-700, #be185d) !important; } .bg-secondary { background: var(--accent-600, #6d28d9) !important; }
.bg-success { background: var(--success, #6d28d9) !important; } .bg-warning { background: var(--gold, #fbbf24) !important; } .bg-danger { background: var(--danger, #b91c1c) !important; }
.bg-info { background: var(--info-bg, #eff6ff) !important; }
.bg-opacity-10 { --ui-bg-opacity: .1; } .bg-opacity-25 { opacity: .9; }
.bg-primary.bg-opacity-10 { background-color: var(--brand-50, #fdf2f8) !important; }
.bg-primary.bg-opacity-25 { background-color: var(--brand-100, #fce7f3) !important; }
.bg-secondary.bg-opacity-10 { background-color: var(--accent-100, #f5f3ff) !important; }
.bg-success.bg-opacity-10 { background-color: var(--success-bg, #f5f3ff) !important; }
.bg-warning.bg-opacity-10 { background-color: var(--warning-bg, #fffbeb) !important; }
.bg-danger.bg-opacity-10 { background-color: var(--danger-bg, #fef2f2) !important; }
.bg-info.bg-opacity-10 { background-color: var(--info-bg, #eff6ff) !important; }

.border { border: 1px solid var(--line, #ede4ea) !important; } .border-0 { border: 0 !important; } .border-2 { border-width: 2px !important; }
.border-top { border-top: 1px solid var(--line, #ede4ea) !important; } .border-bottom { border-bottom: 1px solid var(--line, #ede4ea) !important; }
.border-top-0 { border-top: 0 !important; } .border-bottom-0 { border-bottom: 0 !important; }
.border-start-0 { border-left: 0 !important; } .border-end-0 { border-right: 0 !important; }
.border-primary { border-color: var(--brand-700, #be185d) !important; } .border-light { border-color: rgba(255,255,255,.25) !important; }
.rounded { border-radius: .65rem !important; } .rounded-3 { border-radius: .85rem !important; } .rounded-4, .rounded-lg { border-radius: 1rem !important; }
.rounded-circle { border-radius: 50% !important; } .rounded-pill { border-radius: 999px !important; } .rounded-top-0 { border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; }
.rounded-end-3 { border-radius: 0 .85rem .85rem 0 !important; }
.shadow-none { box-shadow: none !important; } .shadow-sm { box-shadow: none !important; }
.shadow { box-shadow: none !important; } .shadow-lg { box-shadow: none !important; }

.btn, .primary-action, .secondary-action {
    display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
    min-height: 42px; padding: .58rem 1rem; border: 1px solid transparent; border-radius: .72rem;
    background: transparent; color: var(--ink-950, #1f172a); font-weight: 650; line-height: 1.2; text-decoration: none;
}
.btn-primary, .primary-action { color: #fff; background: var(--brand-700, #be185d); border-color: var(--brand-700, #be185d); }
.btn-primary:hover, .primary-action:hover { background: var(--brand-800, #9d174d); border-color: var(--brand-800, #9d174d); }
.btn-secondary { color: var(--accent-600, #6d28d9); background: #fff; border-color: var(--line, #ede4ea); }
.btn-success { color: #fff; background: var(--success, #6d28d9); border-color: var(--success, #6d28d9); }
.btn-warning { background: var(--gold, #fbbf24); border-color: var(--gold, #fbbf24); }
.btn-danger { color: #fff; background: var(--danger, #b91c1c); border-color: var(--danger, #b91c1c); }
.btn-light { background: #fff; border-color: var(--line, #ede4ea); }
.btn-dark { color: #fff; background: var(--brand-950, #831843); border-color: var(--brand-950, #831843); }
.btn-link { min-height: 0; padding: 0; border: 0; color: var(--accent-600, #6d28d9); background: transparent; }
.btn-outline-primary { color: var(--brand-700, #be185d); border-color: #e5a9c4; background: #fff; }
.secondary-action { color: var(--accent-600, #6d28d9); border-color: var(--line, #ede4ea); background: #fff; }
.btn-outline-secondary { color: #58414b; border-color: #c9bec4; background: transparent; }
.btn-outline-success { color: var(--accent-700, #5b21b6); border-color: #c4b5fd; background: transparent; }
.btn-outline-danger { color: #b33535; border-color: #e2a6a6; background: transparent; }
.btn-outline-warning { color: #925814; border-color: #e3bb80; background: transparent; }
.btn-outline-info { color: #446f7c; border-color: #9ebfc6; background: transparent; }
.btn-outline-light { color: #fff; border-color: rgba(255,255,255,.6); background: transparent; }
.btn-sm { min-height: 34px; padding: .4rem .68rem; font-size: .82rem; }
.btn-lg { min-height: 50px; padding: .75rem 1.2rem; }
.btn-group { display: inline-flex; vertical-align: middle; }
.btn-group > .btn { border-radius: 0; }
.btn-group > .btn:first-child { border-radius: .65rem 0 0 .65rem; }
.btn-group > .btn:last-child { border-radius: 0 .65rem .65rem 0; }
.btn-close { width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%; background: transparent; font-size: 0; }
.btn-close::before { content: "×"; font-size: 1.45rem; line-height: 1; }
.btn-close-white { color: #fff; }

.form-label { display: block; }
.form-control, .form-select {
    display: block; width: 100%; min-height: 44px; padding: .62rem .78rem;
    border: 1px solid var(--line, #ede4ea); border-radius: .7rem; color: var(--ink-950, #1f172a); background: #fff;
}
.form-control-sm, .form-select-sm { min-height: 36px; padding: .38rem .6rem; font-size: .84rem; }
.form-control-lg { min-height: 52px; padding: .75rem .9rem; font-size: 1rem; }
textarea.form-control { min-height: 96px; resize: vertical; }
.form-control-color { width: 52px; padding: .3rem; }
.form-text { margin-top: .35rem; color: var(--ink-600, #716a78); font-size: .78rem; }
.form-check { display: flex; align-items: flex-start; gap: .55rem; min-height: 1.35rem; }
.form-check-inline { display: inline-flex; margin-right: 1rem; }
.form-check-input { width: 1.05rem; height: 1.05rem; margin-top: .18rem; accent-color: var(--brand-700, #be185d); flex: 0 0 auto; }
.form-switch .form-check-input { width: 2.1rem; }
.input-group { display: flex; align-items: stretch; width: 100%; }
.input-group > .form-control, .input-group > .form-select { flex: 1 1 auto; width: 1%; border-radius: 0; }
.input-group > :first-child { border-radius: .7rem 0 0 .7rem; }
.input-group > :last-child { border-radius: 0 .7rem .7rem 0; }
.input-group-text { display: flex; align-items: center; padding: .62rem .78rem; border: 1px solid var(--line, #ede4ea); background: var(--surface-soft, #fff7fb); }
.input-group-lg > * { min-height: 52px; }
.form-floating { position: relative; }
.form-floating > label { display: none; }

.card { display: flex; flex-direction: column; min-width: 0; }
.card-header, .card-footer { padding: 1rem 1.2rem; }
.card-body { flex: 1 1 auto; padding: 1.2rem; }
.card-title { margin-bottom: .7rem; }
.card-text:last-child { margin-bottom: 0; }
.card-img-top { width: 100%; object-fit: cover; }

.alert { position: relative; margin-bottom: 1rem; padding: .8rem 1rem; }
.alert-danger { color: var(--danger, #b91c1c); background: var(--danger-bg, #fef2f2); }
.alert-success { color: var(--success, #6d28d9); background: var(--success-bg, #f5f3ff); }
.alert-warning { color: var(--warning, #b45309); background: var(--warning-bg, #fffbeb); }
.alert-light { color: var(--ink-800, #413849); background: var(--surface-soft, #fff7fb); }
.alert-link { color: inherit; font-weight: 700; }
.alert-dismissible { padding-right: 3rem; }
.alert-dismissible .btn-close { position: absolute; top: .45rem; right: .5rem; }
.badge { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; font-size: .75em; line-height: 1; }

.table-responsive { width: 100%; overflow-x: auto; }
.table > :not(caption) > * > * { padding: .75rem; border-bottom: 1px solid var(--line, #ede4ea); text-align: left; }
.table-sm > :not(caption) > * > * { padding: .55rem .65rem; }
.table-bordered > :not(caption) > * > * { border: 1px solid var(--line, #ede4ea); }
.table-borderless > :not(caption) > * > * { border: 0; }
.table-light { background: var(--surface-soft, #fff7fb); }
.table-hover tbody tr:hover { background: var(--brand-50, #fdf2f8); }

.list-unstyled, .list-inline { padding-left: 0; list-style: none; }
.list-inline-item { display: inline-block; margin-right: .5rem; }
.list-group { display: flex; flex-direction: column; padding-left: 0; list-style: none; }
.list-group-item { padding: .75rem 1rem; border: 1px solid var(--line, #ede4ea); background: #fff; }
.list-group-item + .list-group-item { border-top: 0; }
.pagination { display: flex; gap: .25rem; padding-left: 0; list-style: none; }
.page-link { display: grid; min-width: 36px; min-height: 36px; place-items: center; padding: .35rem; border: 1px solid var(--line, #ede4ea); border-radius: .55rem; background: #fff; text-decoration: none; }
.page-item.active .page-link { color: #fff; background: var(--accent-600, #6d28d9); border-color: var(--accent-600, #6d28d9); }

.modal { position: fixed; inset: 0; z-index: 1090; display: none; overflow: auto; padding: 1rem; background: rgba(31,23,42,.52); }
.modal.show, .modal.d-block { display: grid !important; place-items: center; }
.modal-dialog { width: min(100%, 520px); margin: auto; }
.modal-sm { max-width: 400px; } .modal-lg { max-width: 800px; } .modal-xl { max-width: 1080px; }
.modal-dialog-scrollable { max-height: calc(100vh - 2rem); }
.modal-dialog-scrollable .modal-content { max-height: inherit; overflow: auto; }
.modal-content { overflow: hidden; background: #fff; }
.modal-header, .modal-footer { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.2rem; }
.modal-header { justify-content: space-between; } .modal-footer { justify-content: flex-end; }
.modal-body { padding: 1.2rem; }

.toast { min-width: 260px; max-width: 420px; border-radius: .8rem; background: #fff; box-shadow: none; }
.toast-body { padding: .85rem 1rem; }
.spinner-border, .spinner-grow { display: inline-block; width: 1.6rem; height: 1.6rem; border: .2rem solid currentColor; border-right-color: transparent; border-radius: 50%; animation: regalo-spin .75s linear infinite; }
.spinner-border-sm, .spinner-grow-sm { width: 1rem; height: 1rem; border-width: .14rem; }
.spinner-border-lg { width: 2.5rem; height: 2.5rem; }
@keyframes regalo-spin { to { transform: rotate(360deg); } }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }

@media (min-width: 576px) {
    .col-sm-1 { width: 8.3333%; } .col-sm-2 { width: 16.6667%; } .col-sm-3 { width: 25%; } .col-sm-4 { width: 33.3333%; }
    .col-sm-5 { width: 41.6667%; } .col-sm-6 { width: 50%; } .col-sm-7 { width: 58.3333%; } .col-sm-8 { width: 66.6667%; }
    .col-sm-9 { width: 75%; } .col-sm-10 { width: 83.3333%; } .col-sm-11 { width: 91.6667%; } .col-sm-12 { width: 100%; }
    .d-sm-inline { display: inline !important; }
    .d-sm-flex { display: flex !important; }
    .d-sm-none { display: none !important; }
    .d-sm-block { display: block !important; }
}
@media (min-width: 768px) {
    .col-md-1 { width: 8.3333%; } .col-md-2 { width: 16.6667%; } .col-md-3 { width: 25%; } .col-md-4 { width: 33.3333%; }
    .col-md-5 { width: 41.6667%; } .col-md-6 { width: 50%; } .col-md-7 { width: 58.3333%; } .col-md-8 { width: 66.6667%; }
    .col-md-9 { width: 75%; } .col-md-10 { width: 83.3333%; } .col-md-11 { width: 91.6667%; } .col-md-12 { width: 100%; }
    .d-md-inline { display: inline !important; }
    .d-md-flex { display: flex !important; }
    .d-md-none { display: none !important; }
    .d-md-block { display: block !important; }
    .text-md-start { text-align: left !important; } .text-md-end { text-align: right !important; }
    .align-items-md-end { align-items: flex-end !important; }
    .mt-md-0 { margin-top: 0 !important; }
    .p-md-5 { padding: 3rem !important; }
}
@media (min-width: 992px) {
    .col-lg-1 { width: 8.3333%; } .col-lg-2 { width: 16.6667%; } .col-lg-3 { width: 25%; } .col-lg-4 { width: 33.3333%; }
    .col-lg-5 { width: 41.6667%; } .col-lg-6 { width: 50%; } .col-lg-7 { width: 58.3333%; } .col-lg-8 { width: 66.6667%; }
    .col-lg-9 { width: 75%; } .col-lg-10 { width: 83.3333%; } .col-lg-11 { width: 91.6667%; } .col-lg-12 { width: 100%; }
    .d-lg-inline { display: inline !important; }
    .d-lg-flex { display: flex !important; }
    .d-lg-none { display: none !important; }
    .d-lg-block { display: block !important; }
    .align-items-lg-center { align-items: center !important; }
    .mt-lg-0 { margin-top: 0 !important; }
    .p-lg-4 { padding: 1.5rem !important; } .p-lg-5 { padding: 3rem !important; }
}
@media (min-width: 1200px) {
    .col-xl-1 { width: 8.3333%; } .col-xl-2 { width: 16.6667%; } .col-xl-3 { width: 25%; } .col-xl-4 { width: 33.3333%; }
    .col-xl-5 { width: 41.6667%; } .col-xl-6 { width: 50%; } .col-xl-7 { width: 58.3333%; } .col-xl-8 { width: 66.6667%; }
    .col-xl-9 { width: 75%; } .col-xl-10 { width: 83.3333%; } .col-xl-11 { width: 91.6667%; } .col-xl-12 { width: 100%; }
    .d-xl-inline { display: inline !important; }
    .d-xl-flex { display: flex !important; }
    .d-xl-none { display: none !important; }
    .d-xl-block { display: block !important; }
}
@media (min-width: 1400px) {
    .col-xxl-1 { width: 8.3333%; } .col-xxl-2 { width: 16.6667%; } .col-xxl-3 { width: 25%; } .col-xxl-4 { width: 33.3333%; }
    .col-xxl-5 { width: 41.6667%; } .col-xxl-6 { width: 50%; } .col-xxl-7 { width: 58.3333%; } .col-xxl-8 { width: 66.6667%; }
    .col-xxl-9 { width: 75%; } .col-xxl-10 { width: 83.3333%; } .col-xxl-11 { width: 91.6667%; } .col-xxl-12 { width: 100%; }
}
@media (max-width: 575px) {
    .container, .container-fluid, .site-container { padding-inline: .85rem; }
    .display-4 { font-size: 2.35rem; }
}
