/* ===========================================
   RESET & VARIÁVEIS GLOBAIS
   =========================================== */
*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

html,
body {
    overflow: hidden;
    /* Evita qualquer estouro horizontal que gere barra inferior */
    overflow-x: hidden;
}

section {
    scroll-margin-top: 80px; /* Evita que o header fixo cubra o topo da seção */
}

/* Oculta a barra de rolagem (sem reservar largura, então o conteúdo
   nunca é empurrado para o lado quando a rolagem é habilitada) */
html,
body {
    scrollbar-width: none;          /* Firefox */
    -ms-overflow-style: none;       /* IE / Edge legado */
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {           /* Chrome, Safari, Edge */
    width: 0;
    height: 0;
    display: none;
}

:root {
    --bg-color: #0a0a0a;
    --text-color: #f5f5f7;
    --accent-color: #ffffff;
    /* Cobre / âmbar — ecoa o cabelo ruivo e o blazer terracota da Luana */
    --gold: #cd8a52;
    --gold-soft: rgba(205, 138, 82, 0.55);
    --copper-glow: rgba(190, 92, 52, 0.9);
    --font-serif: 'Cormorant Garamond', serif;
    --font-sans: 'Montserrat', sans-serif;
    --ease-premium: cubic-bezier(0.76, 0, 0.24, 1);
    --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
    font-family: var(--font-sans);
    min-height: 100vh;
}

/* Seleção de texto no tom da marca (substitui o azul padrão) */
::selection {
    background: var(--gold);
    color: #0a0a0a;
}

::-moz-selection {
    background: var(--gold);
    color: #0a0a0a;
}

/* ===========================================
   LOADER — CONTAINER PRINCIPAL
   =========================================== */
.loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 9999;
    pointer-events: none;
    overflow: hidden; /* Evita que painéis em movimento criem barras de rolagem */
}

/* ===========================================
   LOADER — PAINÉIS DA CORTINA
   =========================================== */
.loader-panel {
    position: absolute;
    left: 0;
    width: 100%;
    height: 50%;
    z-index: 1;
    transition: transform 0.8s var(--ease-premium);
    will-change: transform;

    /* Fundo elegante: brilho cobre atrás da logo + gradiente escuro quente +
       grão sutil. As duas metades usam o MESMO fundo do tamanho da viewport,
       ancorado no topo/base, então juntas formam uma imagem contínua e sem
       emenda visível na linha do meio. */
    background-color: #060505;
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E"),
        radial-gradient(75% 55% at 50% 46%, rgba(190, 92, 52, 0.18) 0%, rgba(205, 138, 82, 0.06) 34%, transparent 64%),
        radial-gradient(130% 95% at 50% 46%, #18120d 0%, #0c0a08 46%, #050404 100%);
    background-repeat: repeat, no-repeat, no-repeat;
    background-size: 160px 160px, 100vw 100vh, 100vw 100vh;
}

.panel-top {
    top: 0;
    background-position: center top, center top, center top;
}

.panel-bottom {
    bottom: 0;
    background-position: center bottom, center bottom, center bottom;
}

/* Quando a cortina abre */
.loader.curtain-open .panel-top {
    transform: translateY(-100%);
}

.loader.curtain-open .panel-bottom {
    transform: translateY(100%);
}

/* ===========================================
   LOADER — CONTEÚDO CENTRAL (TEXTO + LINHA)
   =========================================== */
.loader-center {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 2; /* Acima dos painéis */
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.8rem;
    transition: opacity 0.4s ease, transform 0.4s var(--ease-premium);
}

/* Oculta o texto antes da cortina abrir */
.loader.curtain-open .loader-center {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.15);
}

/* ===========================================
   LOADER — LOGO COM REVELAÇÃO (WIPE)
   =========================================== */
.loader-logo-mask {
    position: relative;
    overflow: hidden;
    display: flex;
    justify-content: center;
}

.loader-logo {
    height: clamp(40px, 7vw, 68px);
    width: auto;
    display: block;
    /* Logo preta → branca (fundo transparente) */
    filter: brightness(0) invert(1);
    opacity: 0;
    clip-path: inset(0 100% 0 0);
    transform: translateY(8px);
    animation: logoReveal 1.3s var(--ease-out-expo) 0.15s forwards;
}

@keyframes logoReveal {
    0% {
        opacity: 0;
        clip-path: inset(0 100% 0 0);
        transform: translateY(8px);
    }
    20% {
        opacity: 1;
    }
    100% {
        opacity: 1;
        clip-path: inset(0 0 0 0);
        transform: translateY(0);
    }
}

/* Sotaque de brilho cobre passando durante a revelação */
.loader-logo-mask::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 40%;
    background: linear-gradient(90deg, transparent, rgba(205, 138, 82, 0.35), transparent);
    filter: blur(6px);
    transform: translateX(-160%);
    animation: logoSheen 1.4s var(--ease-out-expo) 0.15s forwards;
    pointer-events: none;
}

@keyframes logoSheen {
    0%   { transform: translateX(-160%); opacity: 0; }
    30%  { opacity: 1; }
    100% { transform: translateX(320%); opacity: 0; }
}

/* ===========================================
   LOADER — LINHA DE PROGRESSO
   =========================================== */
.loader-line-wrapper {
    width: 180px;
    height: 1px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 1px;
    overflow: hidden;
    opacity: 0;
    animation: fadeInLine 0.3s ease forwards;
    animation-delay: 0.2s;
}

.loader-line {
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, var(--gold), transparent);
    transform: scaleX(0);
    transform-origin: center;
    border-radius: 1px;
}

/* A animação da linha é disparada via JS para sincronizar com a logo */
.loader-line.animate {
    animation: growLine 1.2s var(--ease-premium) forwards;
}

/* Brilho rápido quando a linha atinge 100% */
.loader-line.glow {
    box-shadow: 0 0 18px rgba(205, 138, 82, 0.85),
                0 0 40px rgba(205, 138, 82, 0.4);
    transition: box-shadow 0.3s ease;
}

/* ----- Contador de porcentagem ----- */
.loader-count {
    display: flex;
    align-items: baseline;
    gap: 1px;
    font-family: var(--font-sans);
    font-size: 0.72rem;
    font-weight: 400;
    letter-spacing: 0.28em;
    color: #6f6f73;
    opacity: 0;
    animation: fadeInLine 0.5s ease 0.3s forwards;
    /* Compensa o letter-spacing para o bloco não parecer deslocado */
    padding-left: 0.28em;
}

.loader-percent {
    color: var(--gold);
}

@keyframes fadeInLine {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes growLine {
    0%   { transform: scaleX(0); }
    100% { transform: scaleX(1); }
}

/* ===========================================
   CONTEÚDO PRINCIPAL
   =========================================== */
.content {
    opacity: 0;
    transition: opacity 1.4s var(--ease-out-expo) 0.2s;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.content.visible {
    opacity: 1;
}

/* Páginas internas abrem instantaneamente sem transição ou dependência de JS */
.internal-page .content {
    opacity: 1 !important;
    transition: none !important;
}


/* ===========================================
   RESPONSIVIDADE
   =========================================== */
@media (max-width: 768px) {
    .loader-logo {
        height: clamp(34px, 11vw, 48px);
    }
    .loader-line-wrapper {
        width: 130px;
    }
}

/* ===========================================
   ACESSIBILIDADE — reduz movimento no loader
   =========================================== */
@media (prefers-reduced-motion: reduce) {
    .loader-logo {
        clip-path: none;
        transform: none;
        animation: logoFadeReduced 0.4s ease 0.1s forwards;
    }
    @keyframes logoFadeReduced {
        from { opacity: 0; }
        to   { opacity: 1; }
    }
    .loader-logo-mask::after {
        display: none;
    }
    .content {
        transition-duration: 0.4s;
    }
}
