/* =========================================================
   BASE GLOBAL
   Mantém a identidade visual da branch main em toda página.
   ========================================================= */

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 90px;
    overscroll-behavior: none;
}

body {
    margin: 0;
    min-height: 100vh;

    background-image: url('../../assets/fundo.png');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-color: var(--bg-color);

    color: var(--text-color);
    font-family: var(--font-main);

    transition:
        background-color .22s ease,
        color .22s ease;
}

a {
    color: inherit;
}

img {
    max-width: 100%;
}

button,
a {
    -webkit-tap-highlight-color: transparent;
}

/* =========================================================
   LAYOUT COMPARTILHADO
   ========================================================= */

.site-shell {
    width: min(1120px, calc(100% - 32px));
    margin: 28px auto 56px;
}

.glass-panel {
    background-color: var(--card-bg);

    border: 2px solid var(--card-border);
    border-radius: var(--radius-card);

    box-shadow: var(--shadow-card);

    backdrop-filter: blur(var(--blur-card));
    -webkit-backdrop-filter: blur(var(--blur-card));

    transition:
        background-color .22s ease,
        border-color .22s ease,
        color .22s ease;
}

/* =========================================================
   TEXTO AUXILIAR
   ========================================================= */

.eyebrow {
    display: inline-flex;
    width: fit-content;
    align-items: center;

    padding: 6px 10px;

    color: var(--primary-color);
    background-color: var(--notice-bg);

    border-radius: 999px;

    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .03em;
}

/* =========================================================
   BOTÕES GLOBAIS
   ========================================================= */

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    gap: 12px;

    min-height: 46px;
    padding: 13px 20px;

    color: inherit;
    background: transparent;

    border: 2px solid transparent;
    border-radius: var(--radius-button);

    font: inherit;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.15;

    text-decoration: none;
    cursor: pointer;

    transition:
        transform .2s ease,
        box-shadow .2s ease,
        background-color .2s ease,
        border-color .2s ease,
        color .2s ease;
}

.button:hover {
    transform: translateY(-2px);
}

.button-primary {
    color: #fff;
    background-color: var(--primary-color);
}

.button-primary:hover {
    background-color: var(--primary-hover);
    box-shadow: 0 6px 18px rgba(179, 94, 175, 0.30);
}

.button-outline {
    color: var(--primary-color);
    background-color: transparent;

    border-color: var(--primary-color);
}

.button-outline:hover {
    background-color: var(--notice-bg);
}

.button-soft {
    color: var(--primary-color);
    background-color: var(--notice-bg);

    border-color: var(--card-border);
}

.button-soft:hover {
    border-color: var(--primary-color);
}

/* =========================================================
   FOOTER GLOBAL
   Mesmo componente para Home, Doações e páginas futuras.
   ========================================================= */

.site-footer {
    width: min(1120px, calc(100% - 32px));
    margin: 0 auto 28px;
    padding: 15px 24px;

    color: var(--footer-text);
    background-color: var(--footer-bg);

    border: 1px solid var(--card-border);
    border-radius: 20px;

    box-shadow: var(--shadow-card);

    backdrop-filter: blur(var(--blur-card));
    -webkit-backdrop-filter: blur(var(--blur-card));

    font-size: .84rem;

    transition:
        background-color .22s ease,
        border-color .22s ease,
        color .22s ease;
}

.site-footer-content {
    width: 100%;

    display: flex;
    align-items: center;
    justify-content: space-between;

    gap: 14px 24px;
}

.site-footer p {
    margin: 0;

    line-height: 1.5;
}

.site-footer-credits,
.site-footer-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;

    gap: 5px;
}

.site-footer-meta {
    justify-content: flex-end;

    text-align: right;
}

.site-footer-separator {
    color: var(--subtitle-color);

    opacity: .72;
}

.site-footer a {
    color: var(--primary-color);

    font-weight: 800;
    text-decoration: none;
}

.site-footer a:hover,
.site-footer a:focus-visible {
    text-decoration: underline;

    outline: none;
}

@media (max-width: 760px) {
    /*
     * "fixed" exige mais repaints em vários navegadores móveis.
     * Em telas pequenas usamos scroll sem alterar a identidade visual.
     */
    body {
        background-attachment: scroll;
    }

    .site-shell {
        width: min(100% - 24px, 1120px);
        margin-top: 20px;
        margin-bottom: 40px;
    }

    .site-footer {
        width: min(100% - 24px, 1120px);
        padding: 16px 18px;

        font-size: .82rem;
    }

    .site-footer-content {
        flex-direction: column;
        align-items: center;

        gap: 7px;

        text-align: center;
    }

    .site-footer-credits,
    .site-footer-meta {
        justify-content: center;

        text-align: center;
    }
}

/*
 * Quando o blur está desligado, removemos o filtro de fato.
 * A transparência continua vindo dos tokens de superfície.
 */
:root[data-blur="off"] .glass-panel,
:root[data-blur="off"] .site-footer {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}


@media (prefers-reduced-motion: reduce) {
    body,
    .glass-panel,
    .site-footer {
        transition: none;
    }
}

/* =========================================================
   PRELOADER GLOBAL
   Mostra o favicon pulsando enquanto o conteúdo local monta.
   ========================================================= */

html.site-loading,
html.site-loading body {
    overflow: hidden;
}

.site-loader {
    position: fixed;
    inset: 0;
    z-index: 9999;

    display: grid;
    place-items: center;

    padding: 24px;

    background-color: var(--bg-color);
    background-image: url('../../assets/fundo.png');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;

    opacity: 1;
    visibility: visible;

    transition:
        opacity .32s ease,
        visibility .32s ease;
}

.site-loader::before {
    content: "";

    position: absolute;
    inset: 0;

    background-color: var(--bg-color);
    opacity: .72;

    pointer-events: none;
}

.site-loader-inner {
    position: relative;
    z-index: 1;

    display: grid;
    place-items: center;

    gap: 0;
}

.site-loader-logo {
    width: 58px;
    height: 58px;

    display: block;

    background-color: var(--primary-color);

    -webkit-mask-image: url('../../assets/favicon.png');
    mask-image: url('../../assets/favicon.png');

    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;

    -webkit-mask-position: center;
    mask-position: center;

    -webkit-mask-size: contain;
    mask-size: contain;

    animation:
        site-loader-pulse 1.05s ease-in-out infinite;

    filter:
        drop-shadow(
            0 5px 14px
            rgba(179, 94, 175, .18)
        );
}

.site-loader.is-leaving {
    opacity: 0;
    visibility: hidden;

    pointer-events: none;
}

@keyframes site-loader-pulse {
    0%,
    100% {
        opacity: .66;
        transform: scale(.92);
    }

    50% {
        opacity: 1;
        transform: scale(1.06);
    }
}

@supports not ((mask-image: url("")) or (-webkit-mask-image: url(""))) {
    .site-loader-logo {
        background-color: transparent;
        background-image: url('../../assets/favicon.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
    }
}

@media (prefers-reduced-motion: reduce) {
    .site-loader {
        transition-duration: .01ms;
    }

    .site-loader-logo {
        animation: none;

        opacity: 1;
        transform: none;
    }
}

