/* Shared frosted theme for the public abono portal. */
    /* Frosted surfaces over a quiet blue glow, shared by the public portal. */
    .public-portal .content {
        position: relative;
        isolation: isolate;
        border-radius: 24px;
        background:
            radial-gradient(ellipse at 4% 6%, rgba(75, 142, 225, .28), transparent 48%),
            radial-gradient(ellipse at 96% 62%, rgba(82, 112, 187, .22), transparent 46%),
            radial-gradient(ellipse at 35% 100%, rgba(61, 121, 160, .16), transparent 48%),
            #0e151f;
    }
    .public-portal .panel {
        position: relative;
        border: 1px solid rgba(197, 219, 248, .19);
        background: linear-gradient(145deg, rgba(31, 44, 61, .76), rgba(16, 24, 35, .82));
        -webkit-backdrop-filter: blur(24px) saturate(135%);
        backdrop-filter: blur(24px) saturate(135%);
        box-shadow:
            inset 0 1px 0 rgba(235, 245, 255, .13),
            inset 1px 0 0 rgba(197, 219, 248, .05),
            0 24px 64px rgba(0, 0, 0, .3);
    }

    .public-portal .panel .hero-title {
        color: #f2f7ff;
        text-shadow: 0 2px 18px rgba(138, 188, 250, .12);
    }
    .public-portal .panel .home-payment-calendar {
        border-color: rgba(179, 211, 250, .22);
        background: linear-gradient(135deg, rgba(105, 147, 203, .1), rgba(11, 22, 37, .45));
        -webkit-backdrop-filter: blur(16px) saturate(120%);
        backdrop-filter: blur(16px) saturate(120%);
        box-shadow: inset 0 1px 0 rgba(222, 237, 255, .07), 0 8px 24px rgba(0, 0, 0, .1);
    }
    .public-portal .panel .home-payment-calendar__summary:hover {
        background: rgba(167, 202, 248, .06);
    }
    .public-portal .panel .home-payment-calendar__body {
        border-top-color: rgba(197, 219, 248, .12);
    }
    .public-portal .panel .summary-row {
        border-bottom-color: rgba(197, 219, 248, .09);
    }
    .public-portal .panel .abono-form input {
        border-color: rgba(190, 214, 247, .23);
        background: linear-gradient(135deg, rgba(202, 224, 255, .035), rgba(8, 17, 29, .52));
        color: #edf4ff;
        box-shadow: inset 0 1px 0 rgba(233, 244, 255, .045);
        -webkit-backdrop-filter: blur(12px);
        backdrop-filter: blur(12px);
        transition: border-color .18s ease, box-shadow .18s ease;
    }
    .public-portal .panel .abono-form input::placeholder {
        color: #9bafc6;
        opacity: 1;
    }
    .public-portal .panel .abono-form input:focus {
        border-color: #88baff;
        box-shadow: 0 0 0 3px rgba(106, 167, 248, .17), inset 0 1px 0 rgba(233, 244, 255, .07);
    }
    .public-portal .panel .abono-form button[type="submit"] {
        border: 1px solid rgba(173, 210, 255, .35);
        background: linear-gradient(135deg, #2967c4, #2254a1);
        box-shadow: inset 0 1px 0 rgba(237, 247, 255, .2), 0 8px 22px rgba(20, 62, 118, .26);
        transition: filter .18s ease, box-shadow .18s ease;
    }
    .public-portal .panel .abono-form button[type="submit"]:hover {
        filter: brightness(1.12);
        box-shadow: inset 0 1px 0 rgba(237, 247, 255, .24), 0 10px 26px rgba(20, 62, 118, .34);
    }
    .public-portal .panel .abono-form button[type="submit"]:focus-visible {
        outline: 3px solid #a5ceff;
        outline-offset: 3px;
    }
    .public-portal .panel .home-reference-trigger {
        border-color: transparent;
        background: transparent;
        box-shadow: none;
    }
    .public-portal .home-reference-dialog {
        border-color: rgba(197, 219, 248, .25);
        background: linear-gradient(145deg, rgba(35, 49, 69, .91), rgba(15, 24, 38, .94));
        -webkit-backdrop-filter: blur(24px) saturate(130%);
        backdrop-filter: blur(24px) saturate(130%);
        box-shadow: inset 0 1px 0 rgba(233, 244, 255, .12), 0 24px 70px rgba(0, 0, 0, .5);
    }
    @media (max-width: 640px) {
        .public-portal .content {
            border-radius: 18px;
        }
    }
    @media (prefers-reduced-motion: reduce) {
        .public-portal .panel .abono-form input,
        .public-portal .panel .abono-form button[type="submit"] {
            transition: none;
        }
    }

/* Forms, document panels, status screens, and public review cards. */
.public-portal :is(.summary-card, .terms-box, .privacy-note, .locked-row,
    .admin-dashboard-box, .dashboard-box, .legal-doc-surface, .uv-panel) {
    border: 1px solid rgba(179, 211, 250, .2);
    background: linear-gradient(135deg, rgba(105, 147, 203, .1), rgba(11, 22, 37, .45));
    color: #dce7f5;
    box-shadow: inset 0 1px 0 rgba(222, 237, 255, .07), 0 8px 24px rgba(0, 0, 0, .1);
}
.public-portal :is(.terms-box__header, .summary-row, .locked-row, .status-row) {
    border-color: rgba(197, 219, 248, .12);
}
.public-portal :is(.legal-doc-surface p, .legal-doc-surface li, .terms-box__content) {
    color: #bccde0;
}
.public-portal :is(.legal-doc-surface strong, .legal-doc-surface h2) {
    color: #f2f7ff;
}
.public-portal .legal-doc-alert {
    border-color: rgba(159, 196, 246, .25);
    background: rgba(66, 106, 162, .16);
    color: #c3ddfa;
}
.public-portal .panel :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
    select, textarea) {
    min-width: 0;
    border-color: rgba(190, 214, 247, .23);
    background: linear-gradient(135deg, rgba(202, 224, 255, .035), rgba(8, 17, 29, .52));
    color: #edf4ff;
    box-shadow: inset 0 1px 0 rgba(233, 244, 255, .045);
    transition: border-color .18s ease, box-shadow .18s ease;
}
.public-portal .panel :is(input, textarea)::placeholder {
    color: #9bafc6;
    opacity: 1;
}
.public-portal .panel :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea):focus {
    outline: none;
    border-color: #88baff;
    box-shadow: 0 0 0 3px rgba(106, 167, 248, .17);
}
.public-portal .panel select option {
    background: #142033;
    color: #edf4ff;
}
.public-portal .panel input[type="file"]::file-selector-button {
    padding: 8px 12px;
    margin-right: 12px;
    border: 1px solid #385573;
    border-radius: 8px;
    background: #1a2c40;
    color: #c3ddfa;
    font: inherit;
    cursor: pointer;
}
.public-portal :is(input[type="checkbox"], input[type="radio"]) {
    accent-color: #79b2ff;
}
.public-portal .btn-primary {
    border: 1px solid rgba(173, 210, 255, .35);
    background: linear-gradient(135deg, #2967c4, #2254a1);
    color: #fff;
    box-shadow: inset 0 1px 0 rgba(237, 247, 255, .2), 0 8px 22px rgba(20, 62, 118, .26);
}
.public-portal .btn-secondary {
    border-color: #385573;
    background: linear-gradient(135deg, rgba(105, 147, 203, .13), rgba(18, 35, 55, .7));
    color: #c3ddfa;
    box-shadow: inset 0 1px 0 rgba(233, 244, 255, .07);
}
.public-portal .btn:hover:not([disabled]) {
    filter: brightness(1.12);
}
.public-portal :is(a, button, input[type="checkbox"], input[type="radio"]):focus-visible {
    outline: 3px solid #a5ceff;
    outline-offset: 3px;
}
.public-portal .panel a:not(.btn):not(.home-reference-trigger) {
    color: #a5ceff !important;
}
.public-portal :is(.summary-value, .locked-value, .field-group, .data-form,
    .register-grid-two > *, .summary-actions > *) {
    min-width: 0;
    overflow-wrap: anywhere;
}
.public-portal .btn {
    min-height: 44px;
    white-space: normal;
    text-align: center;
}
.public-portal .modal-overlay {
    background: rgba(3, 7, 12, .72);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}
.public-portal .modal-card {
    border: 1px solid rgba(197, 219, 248, .25);
    background: linear-gradient(145deg, rgba(35, 49, 69, .96), rgba(15, 24, 38, .98));
    color: #edf4ff;
    box-shadow: inset 0 1px 0 rgba(233, 244, 255, .12), 0 24px 70px rgba(0, 0, 0, .5);
}
/* A fixed status overlay must retain the viewport as its containing block. */
.public-portal .panel:has(.modal-overlay) {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}
@media (max-width: 640px) {
    .public-portal :is(.admin-dashboard-box, .dashboard-box) {
        padding: 18px 16px;
    }
    .public-portal .admin-dashboard-grid {
        grid-template-columns: minmax(0, 1fr);
    }
    .public-portal .panel .summary-actions {
        flex-direction: column;
        align-items: stretch;
    }
    .public-portal .panel .btn {
        width: 100%;
    }
}
@media (prefers-reduced-motion: reduce) {
    .public-portal .panel :is(input, select, textarea) {
        transition: none;
    }
}

.public-portal .terms-box > .terms-check {
    padding: 0 18px 18px;
}
