/* ================================================================
   WISCRAL — pagina "Em breve"
   Fase 10.5.19 · Bloco A

   DIRECAO VISUAL (secao 06 do documento do Guilherme)

     base preta ou off-white
     texto branco/preto, VERDE ESCURO como acao, DOURADO so' detalhe
     titulo amplo, caixa alta, muito espaco negativo
     evitar visual generico de academia -- sem chama, sem textura
     pesada, sem excesso de icone

   A escolha aqui foi a base PRETA. Duas razoes: a WISCRAL e' descrita
   como "a expressao mais intensa da WISC", e o preto e' o unico fundo
   em que o dourado funciona como detalhe em vez de virar amarelo.

   MOVIMENTO

   Revelacao progressiva, deslocamento leve. Regra dura do documento:
   o efeito nunca pode atrasar a leitura nem bloquear o CTA. Por isso
   todo o conteudo nasce VISIVEL no CSS, e a animacao so' existe para
   quem tem JavaScript e nao pediu menos movimento. Se o
   IntersectionObserver nao rodar, a pagina fica exatamente legivel.
================================================================ */

.wiscral {
    --wiscral-fundo: var(--color-black);
    --wiscral-texto: var(--color-white);
    --wiscral-apagado: #8f8f8f;

    background: var(--wiscral-fundo);
    color: var(--wiscral-texto);
}

/*
   O <main> do layout nao tem fundo proprio, entao sem isto a pagina
   preta terminaria numa faixa branca antes do rodape.
*/
body:has(.wiscral) main {
    background: var(--color-black);
}


/* ================================================================
   HERO
================================================================ */

.wiscral-hero {
    position: relative;

    display: flex;
    flex-direction: column;
    justify-content: center;

    /*
       100svh, e nao 100vh: no celular a barra de endereco entra e sai
       e o vh nao acompanha -- o CTA de quem rolava um toque sumia
       atras da barra. svh e' a altura pequena, a que sempre cabe.
    */
    min-height: calc(100svh - var(--header-height));

    padding: 72px 24px 40px;
}

.wiscral-hero-conteudo {
    width: 100%;
    max-width: var(--container);
    margin: 0 auto;
}

.wiscral-kicker {
    margin-bottom: 28px;

    font-family: var(--font-title);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--color-gold);
}

.wiscral-estado {
    margin-bottom: 10px;

    font-family: var(--font-title);
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--wiscral-apagado);
}

/*
   O nome e' o objeto da pagina. clamp() para ele encher a linha em
   qualquer largura sem media query, e letter-spacing negativo porque
   em corpo muito grande o espacamento normal abre buraco entre as
   letras.
*/
.wiscral-nome {
    margin-bottom: 44px;

    font-family: var(--font-title);
    font-size: clamp(3.4rem, 17vw, 15rem);
    font-weight: 900;
    line-height: 0.88;
    letter-spacing: -0.03em;
    text-transform: uppercase;
    color: var(--wiscral-texto);
}

.wiscral-abertura {
    max-width: 34ch;

    font-size: clamp(1.05rem, 2.4vw, 1.45rem);
    line-height: 1.6;
    color: var(--color-gray-200);
}

.wiscral-rolar {
    align-self: center;
    margin-top: 40px;

    font-family: var(--font-title);
    font-size: 0.64rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: #5e5e5e;
}


/* ================================================================
   MANIFESTO
================================================================ */

.wiscral-manifesto {
    padding: 96px 24px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.wiscral-manifesto-texto {
    max-width: 62ch;
    /*
       Deslocado para a direita em tela grande: o espaco vazio a'
       esquerda e' o "muito espaco negativo" que o documento pede, e
       ele so' funciona se sobrar de um lado so'.
    */
    margin: 0 auto;
}

.wiscral-manifesto-texto p {
    margin-bottom: 26px;

    font-size: clamp(1rem, 1.6vw, 1.22rem);
    line-height: 1.75;
    color: var(--color-gray-200);
}

.wiscral-manifesto-texto p:first-child {
    font-size: clamp(1.15rem, 2.2vw, 1.6rem);
    line-height: 1.5;
    color: var(--wiscral-texto);
}

.wiscral-manifesto-texto p:last-child {
    margin-bottom: 0;
}


/* ================================================================
   PILARES
================================================================ */

.wiscral-pilares {
    padding: 0 24px 96px;
}

.wiscral-pilares ul {
    display: grid;
    gap: 1px;

    /*
       minmax(0, 1fr) e nao 1fr: coluna de grid nasce com largura
       minima do conteudo, e as frases longas ("Feita para deixar
       legado.") empurravam a grade para fora da tela.
       E' a mesma familia de bug do provador.
    */
    grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));

    max-width: var(--container);
    margin: 0 auto;
    padding: 0;

    list-style: none;
    background: rgba(255, 255, 255, 0.08);
}

.wiscral-pilares li {
    padding: 40px 28px;
    background: var(--wiscral-fundo);

    font-family: var(--font-title);
    font-size: 0.86rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    line-height: 1.5;
    color: var(--wiscral-texto);
}


/* ================================================================
   CHAMADA
================================================================ */

.wiscral-chamada {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;

    padding: 0 24px 96px;
    text-align: center;
}

/*
   O verde e' a UNICA cor de acao da pagina. Dourado fica no kicker e
   no fecho, como detalhe -- se ele virasse botao, a hierarquia que o
   documento pede se perderia.
*/
.wiscral-cta {
    min-height: 62px;
    padding: 20px 44px;

    border: none;
    border-radius: 999px;
    background: var(--color-green-deep);
    color: var(--color-white);

    font-family: var(--font-title);
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.16em;
    text-transform: uppercase;

    cursor: pointer;
    transition: background var(--transition), transform var(--transition);
}

.wiscral-cta:hover:not(:disabled) {
    background: var(--color-green-deep-hover);
    transform: translateY(-2px);
}

/* Foco visivel de teclado: requisito de acessibilidade da secao 06. */
.wiscral-cta:focus-visible {
    outline: 2px solid var(--color-gold);
    outline-offset: 4px;
}

.wiscral-cta:disabled {
    background: var(--color-gray-700);
    color: var(--color-gray-300);
    cursor: not-allowed;
}

.wiscral-cta-nota {
    font-size: 0.8rem;
    color: var(--color-gray-500);
}


/* ================================================================
   MODAL DO CADASTRO — Bloco B
================================================================ */

.wiscral-modal[hidden] {
    display: none;
}

.wiscral-modal {
    position: fixed;
    inset: 0;
    z-index: 130;

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

    padding: 24px;
}

body.wiscral-modal-aberto {
    overflow: hidden;
}

.wiscral-modal-fundo {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.72);
}

.wiscral-modal-caixa {
    position: relative;

    width: 100%;
    max-width: 620px;
    max-height: 92vh;
    overflow-y: auto;

    /*
       min-width: 0 porque isto e' item de flex segurando conteudo
       largo. E' a 6a ocorrencia desta familia de bug no projeto -- sem
       ela, em 390px a caixa se recusa a encolher e vaza dos dois lados.
    */
    min-width: 0;

    padding: 40px 36px 32px;

    border-radius: 24px;
    background: var(--color-gray-900);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.wiscral-modal-fechar {
    position: absolute;
    top: 16px;
    right: 16px;

    width: 40px;
    height: 40px;

    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 50%;
    background: transparent;
    color: var(--color-gray-200);

    font-size: 1.4rem;
    line-height: 1;
    cursor: pointer;
    transition: background var(--transition);
}

.wiscral-modal-fechar:hover {
    background: rgba(255, 255, 255, 0.08);
}

.wiscral-modal-fechar:focus-visible {
    outline: 2px solid var(--color-gold);
    outline-offset: 2px;
}


/* ---- cabecalho ---- */

.wiscral-form-topo {
    margin-bottom: 28px;
    padding-right: 44px;
}

.wiscral-form-topo h2 {
    margin-bottom: 10px;

    font-family: var(--font-title);
    font-size: 1.32rem;
    font-weight: 900;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-white);
}

.wiscral-form-topo p {
    font-size: 0.92rem;
    line-height: 1.6;
    color: var(--color-gray-300);
}


/* ---- campo isca ----
   Fora da tela em vez de display:none: robo que preenche formulario
   costuma pular o que esta' escondido por display, mas cai em campo
   que existe no layout. */
.wiscral-isca {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}


/* ---- campos ---- */

.wiscral-campo {
    margin-bottom: 18px;
    min-width: 0;
}

.wiscral-campo label {
    display: block;
    margin-bottom: 8px;

    font-family: var(--font-title);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-gray-300);
}

.wiscral-campo input {
    width: 100%;
    min-height: 52px;
    padding: 14px 16px;

    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 12px;
    background: var(--color-gray-950);
    color: var(--color-white);

    font-family: var(--font-body);
    font-size: 1rem;
}

.wiscral-campo input::placeholder {
    color: #5e5e5e;
}

.wiscral-campo input:focus-visible {
    outline: 2px solid var(--color-gold);
    outline-offset: 1px;
    border-color: transparent;
}

.wiscral-campo input.com-erro {
    border-color: #c9564f;
}

.wiscral-dupla {
    display: grid;
    gap: 0 16px;
    /* minmax(0, 1fr): as duas colunas precisam poder encolher. */
    grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
}

.wiscral-dica {
    margin: -6px 0 22px;
    font-size: 0.8rem;
    color: var(--color-gray-500);
}

.wiscral-erro {
    margin-top: 7px;
    font-size: 0.82rem;
    line-height: 1.45;
    color: #e08b85;
}


/* ---- grupos de escolha ---- */

.wiscral-grupo {
    margin-bottom: 22px;
    padding: 0;
    border: none;
}

.wiscral-grupo legend {
    margin-bottom: 10px;
    padding: 0;

    font-family: var(--font-title);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-gray-300);
}

.wiscral-opcoes {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/*
   O radio de verdade continua ali, so' que invisivel -- e nao
   removido. Trocar por <div> quebraria teclado, leitor de tela e o
   envio sem JavaScript.
*/
.wiscral-opcao input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
}

.wiscral-opcao span {
    display: inline-block;
    padding: 11px 18px;

    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 999px;

    font-size: 0.88rem;
    color: var(--color-gray-200);
    cursor: pointer;
    transition: border-color var(--transition), background var(--transition);
}

.wiscral-opcao input:checked + span {
    border-color: var(--color-green-deep);
    background: var(--color-green-deep);
    color: var(--color-white);
}

.wiscral-opcao input:focus-visible + span {
    outline: 2px solid var(--color-gold);
    outline-offset: 2px;
}


/* ---- consentimento ---- */

.wiscral-consentimento {
    margin: 4px 0 24px;
}

.wiscral-consentimento label {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    cursor: pointer;
}

.wiscral-consentimento input {
    /* 20px e nao o tamanho padrao: alvo de toque decente no celular. */
    width: 20px;
    height: 20px;
    margin-top: 2px;
    flex-shrink: 0;
    accent-color: var(--color-green-deep);
}

.wiscral-consentimento span {
    font-size: 0.88rem;
    line-height: 1.6;
    color: var(--color-gray-200);
}

.wiscral-consentimento a {
    color: var(--color-gold);
}


/* ---- envio e resposta ---- */

.wiscral-enviar {
    width: 100%;
    min-height: 58px;
    padding: 18px 28px;

    border: none;
    border-radius: 999px;
    background: var(--color-green-deep);
    color: var(--color-white);

    font-family: var(--font-title);
    font-size: 0.8rem;
    font-weight: 800;
    letter-spacing: 0.16em;
    text-transform: uppercase;

    cursor: pointer;
    transition: background var(--transition);
}

.wiscral-enviar:hover:not(:disabled) {
    background: var(--color-green-deep-hover);
}

.wiscral-enviar:focus-visible {
    outline: 2px solid var(--color-gold);
    outline-offset: 3px;
}

.wiscral-enviar:disabled {
    background: var(--color-gray-700);
    color: var(--color-gray-300);
    cursor: wait;
}

.wiscral-resposta {
    margin-top: 18px;
    padding: 15px 18px;
    border-radius: 14px;

    font-size: 0.92rem;
    line-height: 1.6;
}

.wiscral-resposta-ok {
    background: rgba(30, 58, 43, 0.5);
    border: 1px solid var(--color-green-deep);
    color: #cfe6d8;
}

.wiscral-resposta-erro {
    background: rgba(160, 60, 55, 0.14);
    border: 1px solid rgba(201, 86, 79, 0.5);
    color: #e8a8a3;
}

.wiscral-aviso {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);

    font-size: 0.78rem;
    line-height: 1.6;
    color: var(--color-gray-500);
}


/* ================================================================
   FECHO
================================================================ */

.wiscral-fecho {
    padding: 0 24px 120px;
    text-align: center;
}

.wiscral-fecho blockquote p {
    max-width: 24ch;
    margin: 0 auto;

    font-family: var(--font-title);
    font-size: clamp(1.4rem, 4vw, 2.6rem);
    font-weight: 800;
    line-height: 1.25;
    letter-spacing: -0.01em;
    color: var(--color-gold);
}


/* ================================================================
   REVELACAO PROGRESSIVA

   O conteudo e' VISIVEL por padrao. A classe .wiscral-anima so' e'
   posta no <article> pelo JavaScript quando ha' suporte e a pessoa
   nao pediu menos movimento -- so' entao o estado inicial escondido
   passa a valer. Ordem invertida de proposito: quem nao tem JS le' a
   pagina inteira, em vez de olhar para uma tela preta.
================================================================ */

.wiscral-anima [data-revelar] {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.2, 0.7, 0.3, 1);
}

.wiscral-anima [data-revelar].revelado {
    opacity: 1;
    transform: none;
}

/*
   Os tres pilares entram em cascata, e nao juntos.

   Entrarem ao mesmo tempo faz o olho ler "a pagina carregou" em vez de
   "isto esta' aparecendo" -- o movimento existe mas passa despercebido,
   que foi exatamente a reclamacao no teste. Um atraso pequeno entre
   eles resolve sem deixar a entrada lenta: 120 ms e' curto demais para
   irritar e longo o bastante para o olho registrar a sequencia.
*/
.wiscral-anima .wiscral-pilares li:nth-child(2) {
    transition-delay: 0.12s;
}

.wiscral-anima .wiscral-pilares li:nth-child(3) {
    transition-delay: 0.24s;
}

@media (prefers-reduced-motion: reduce) {
    .wiscral-anima [data-revelar],
    .wiscral-anima [data-revelar].revelado {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .wiscral-cta:hover:not(:disabled) {
        transform: none;
    }
}


/* ================================================================
   TELAS ESTREITAS

   Prioridade real para celular (secao 06). O teste da casa e' 390 px
   e 430 px.
================================================================ */

@media (max-width: 720px) {

    .wiscral-hero {
        padding: 48px 20px 32px;
    }

    .wiscral-kicker {
        margin-bottom: 20px;
        font-size: 0.66rem;
        letter-spacing: 0.2em;
    }

    .wiscral-nome {
        margin-bottom: 32px;
    }

    .wiscral-manifesto,
    .wiscral-pilares,
    .wiscral-chamada {
        padding-left: 20px;
        padding-right: 20px;
    }

    .wiscral-manifesto {
        padding-top: 64px;
        padding-bottom: 64px;
    }

    .wiscral-pilares {
        padding-bottom: 64px;
    }

    .wiscral-pilares li {
        padding: 28px 22px;
    }

    .wiscral-chamada {
        padding-bottom: 72px;
    }

    /* O CTA ocupa a linha inteira no celular: o documento pede "CTA
       visivel sem esforco". */
    .wiscral-cta {
        width: 100%;
        padding: 20px 24px;
    }

    .wiscral-fecho {
        padding-bottom: 88px;
    }

    /* O modal encosta nas bordas e vira folha inteira no celular. */
    .wiscral-modal {
        padding: 12px;
    }

    .wiscral-modal-caixa {
        max-height: 94svh;
        padding: 34px 20px 26px;
        border-radius: 20px;
    }

    .wiscral-form-topo {
        padding-right: 40px;
    }
}
