/* =============================================================================
   Estilos da aplicação.

   O que sobra depois das camadas do Design System: avisos de página, rodapé e a
   moldura das páginas de referência. Barra superior, barra lateral, busca e
   trilha são o SHELL e moram em orion-layout.css (CT11-484) — separados porque
   o shell é a mesma casca em toda tela, e isto aqui é o que cada tela põe
   dentro dela.

   Cor, tipografia, espaço, raio e movimento vêm de orion-tokens.css — nenhum
   valor literal abaixo, sempre var(--orion-*).
   ========================================================================== */

body {
    background-color: var(--orion-color-bg);
    color: var(--orion-color-body);
    min-block-size: 100vh;
}

/* Ancorar o foco no <main> com tabindex="-1" não deve desenhar anel: o salto
   já é a confirmação visual de que o link "Pular para o conteúdo" funcionou. */
main:focus {
    outline: none;
}

/* Aviso central — usado pela página de construção e pela de erro. */
.orion-aviso {
    max-inline-size: 36rem;
    margin-inline: auto;
    padding: var(--orion-space-6) var(--orion-space-4);
    text-align: center;
}

.orion-aviso p {
    color: var(--orion-color-muted);
}

.orion-rodape {
    margin-block-start: var(--orion-space-6);
    font-size: var(--orion-text-caption);
    color: var(--orion-color-muted);
}

/* Amostra de cor da vitrine do Design System. */
.orion-amostra {
    display: inline-block;
    inline-size: 1.5rem;
    block-size: 1.5rem;
    margin-inline-end: var(--orion-space-2);
    border: 1px solid var(--orion-color-divider);
    border-radius: var(--orion-radius-chip);
    vertical-align: middle;
}

/* -----------------------------------------------------------------------------
   Chrome das páginas de referência (/Home/DesignSystem e /Home/Components).

   Não faz parte da biblioteca: é a moldura que exibe a biblioteca. Por isso mora
   aqui, e não em orion-components.css — o que a aplicação carrega em tela de
   produção não precisa saber que existe uma página de vitrine.
   -------------------------------------------------------------------------- */
.orion-ref {
    margin-block-start: var(--orion-space-6);
    padding-block-start: var(--orion-space-5);
    border-block-start: 1px solid var(--orion-color-divider);
}

.orion-ref-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
    gap: var(--orion-space-5);
    margin-block-start: var(--orion-space-4);
}

.orion-state {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--orion-space-2);
    padding: var(--orion-space-4);
    background-color: var(--orion-color-surface);
    border: 1px solid var(--orion-color-divider);
    border-radius: var(--orion-radius);
}

.orion-state > * {
    max-inline-size: 100%;
}

.orion-state-label {
    margin-block-end: 0;
    font-family: var(--orion-font-heading);
    font-size: var(--orion-text-overline);
    line-height: var(--orion-leading-overline);
    letter-spacing: var(--orion-tracking-overline);
    text-transform: uppercase;
    color: var(--orion-color-muted);
}

/* Modal e painel exibidos no meio da página, sem sobreposição: é como os sete
   estados deles cabem numa captura só. */
.orion-modal.orion-modal-static {
    position: static;
    /* O .modal do Bootstrap é uma janela de rolagem: `height: 100%` mais
       `overflow-y: auto`, porque de verdade ele cobre a tela inteira. Exibido
       estático dentro de uma célula da grade, isso vira uma segunda barra de
       rolagem dentro da página — o defeito que apareceu na tela de componentes.
       Neutralizar o `position` não bastava: a caixa e o transbordo vêm junto. */
    block-size: auto;
    overflow: visible;
    padding: 0;
    background-color: transparent;
}

.orion-modal.orion-modal-static .modal-dialog {
    margin: 0;
    inline-size: 100%;
    max-inline-size: none;
}

.orion-panel.orion-panel-static {
    position: static;
    visibility: visible;
    transform: none;
    inline-size: 100%;
    block-size: auto;
    border: 1px solid var(--orion-color-divider);
    border-radius: var(--orion-radius-overlay);
}

.orion-panel.orion-panel-static + .orion-panel.orion-panel-static {
    margin-block-start: var(--orion-space-3);
}

/* Mesma razão: o corpo do painel rola porque o painel de verdade tem altura de
   tela. Na vitrine ele tem a altura do próprio conteúdo. */
.orion-panel.orion-panel-static .offcanvas-body {
    overflow: visible;
}

/* -----------------------------------------------------------------------------
   Tela de autenticação (/Account/Login, /Account/AccessDenied — CT11-95/96).

   Reproduz, valor a valor, o protótipo codificado da proposta de interface
   validada (Telas Prioritárias CRM Orion — artboards "Login — desktop" e
   "Login — celular"): página cheia de duas colunas, painel escuro com a
   imagem autoral do porto ao anoitecer (login-porto.jpg — ilustração
   desenhada na paleta do sistema, não foto de banco de imagens, conforme a
   nota do próprio protótipo) e painel claro com a ação de entrar.

   Cores e medidas exatas do protótipo entram como valor literal quando não
   existe token igual no Design System — a maior parte já bate com um token
   existente (ver comentário em cada regra); o que não bate é specífico
   desta tela, não uma lacuna do sistema de tokens.

   Abaixo de 992px o painel escuro vira uma faixa de 330px no topo, com a
   imagem esmaecendo em branco por baixo (gradiente próprio) — não
   desaparece por inteiro como numa primeira tentativa deste ajuste; é assim
   que o artboard "Login — celular" desenha.
   -------------------------------------------------------------------------- */
.orion-auth-page {
    background-color: var(--orion-n-000);
}

.orion-auth-shell {
    display: grid;
    /* AJ-034: 880px de imagem e 560px de formulário em 1440px; proporcional abaixo disso. */
    grid-template-columns: minmax(0, 11fr) minmax(0, 7fr);
    min-block-size: 100vh;
    max-inline-size: 1440px;
    margin-inline: auto;
    background-color: var(--orion-n-000);
    overflow: hidden;
}

/* ---- Painel da imagem (esquerda) ------------------------------------------ */

.orion-auth-hero {
    position: relative;
    overflow: hidden;
    background-color: var(--orion-brand-900); /* cor de base da imagem; some sob a imagem/gradiente. */
}

.orion-auth-hero-bg {
    position: absolute;
    inset: 0;
    background-image: url("../img/login-porto.jpg");
    background-size: cover;
    background-position: center 42%;
}

.orion-auth-hero-scrim {
    position: absolute;
    inset: 0;
    background: linear-gradient(105deg, var(--orion-login-scrim-strong) 0%, var(--orion-login-scrim-mid) 42%, var(--orion-login-scrim-soft) 100%);
}

.orion-auth-hero-fade {
    display: none;
}

.orion-auth-hero-content {
    position: relative;
    block-size: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 44px 56px 40px;
}

.orion-auth-hero-content--mobile {
    display: none;
}

.orion-auth-hero-logo {
    display: block;
    inline-size: 236px;
    block-size: auto;
}

.orion-auth-hero-copy {
    max-inline-size: 540px;
}

.orion-auth-hero-eyebrow {
    margin: 0;
    font-family: var(--orion-font-heading);
    font-size: 12px;
    font-weight: var(--orion-weight-semibold);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--orion-login-eyebrow);
}

.orion-auth-hero-title {
    margin: 14px 0 0;
    font-family: var(--orion-font-heading);
    font-size: 42px;
    line-height: 1.12;
    font-weight: 700; /* mais pesado que --orion-weight-semibold (600); o protótipo carrega Archivo 700 só para este título. */
    letter-spacing: -0.025em;
    color: var(--orion-n-000);
    text-wrap: balance;
}

.orion-auth-hero-text {
    margin: 16px 0 0;
    font-size: 17px;
    line-height: 1.55;
    color: var(--orion-login-text);
    max-inline-size: 470px;
}

.orion-auth-hero-footer {
    display: flex;
    align-items: flex-end;
    gap: 24px;
}

.orion-auth-hero-companies {
    font-size: 12px;
    line-height: 1.7;
    color: var(--orion-login-footer);
}

.orion-auth-hero-footer-label {
    margin: 0 0 5px;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--orion-login-eyebrow);
}

.orion-auth-hero-companies p {
    margin: 0;
}

.orion-auth-hero-credit {
    margin-inline-start: auto;
    text-align: end;
}

.orion-auth-hero-credit .orion-auth-hero-footer-label {
    color: var(--orion-login-credit);
    margin-block-end: 8px;
}

.orion-auth-hero-credit img {
    display: block;
    inline-size: 140px;
    block-size: auto;
}

.orion-auth-hero-star {
    display: block;
    inline-size: 46px;
    block-size: 46px;
}

.orion-auth-hero-title-mobile {
    margin: 8px 0 0;
    font-family: var(--orion-font-heading);
    font-size: 25px;
    font-weight: 700;
    letter-spacing: -0.022em;
    color: var(--orion-n-000);
    line-height: 1.16;
    text-wrap: balance;
}

/* ---- Painel do formulário (direita) ---------------------------------------- */

.orion-auth-panel {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 0 64px;
}

.orion-auth-panel:focus {
    outline: none;
}

.orion-auth-mark {
    display: flex;
    align-items: center;
    gap: 11px;
}

.orion-auth-mark--centered {
    justify-content: center;
}

.orion-auth-mark img {
    inline-size: 30px;
    block-size: 30px;
}

.orion-auth-mark span {
    font-family: var(--orion-font-heading);
    font-size: 17px;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--orion-n-900);
}

.orion-auth-panel-inner h1 {
    margin: 26px 0 0;
    font-family: var(--orion-font-heading);
    font-size: 28px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--orion-n-900);
    line-height: 1.15;
}

.orion-auth-panel-inner > p:not([class]) {
    margin: 9px 0 0;
    font-size: 15px;
    line-height: 1.5;
    color: var(--orion-color-text-secondary);
    max-inline-size: 38ch;
}

.orion-auth-panel--centered {
    text-align: center;
}

.orion-auth-panel--centered .orion-banner {
    text-align: start;
}

/* Botão "Continuar com a conta Google". O protótipo reserva o espaço com um
   círculo neutro e a letra "G" (página "Observações" da proposta: "o
   marcador no botão é um espaço reservado... o asset oficial entra na
   implementação") — aqui já entra o asset multicolorido oficial do Google,
   que é a peça final, não o placeholder do desenho. */
.orion-google-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 11px;
    inline-size: 100%;
    block-size: 52px;
    margin-top: 26px;
    background-color: var(--orion-n-000);
    color: var(--orion-n-900);
    border: 1px solid var(--orion-n-400);
    border-radius: var(--orion-radius);
    font-family: var(--orion-font-body);
    font-size: 15px;
    font-weight: var(--orion-weight-semibold);
    cursor: pointer;
}

.orion-google-btn:hover {
    background-color: var(--orion-color-surface-sunken);
}

.orion-google-btn:focus-visible {
    outline: 2px solid var(--orion-color-focus-ring);
    outline-offset: 2px;
}

.orion-google-btn svg {
    flex: none;
    inline-size: 18px;
    block-size: 18px;
}

.orion-auth-consent {
    margin: 8px 0 0;
    font-size: 12px;
    line-height: 1.45;
    color: var(--orion-n-500);
}

.orion-auth-domains {
    margin-top: 24px;
    padding: 14px 16px;
    background-color: var(--orion-n-100);
    border: 1px solid var(--orion-n-200);
    border-radius: var(--orion-radius);
}

.orion-auth-domains-label {
    margin: 0 0 10px;
    font-family: var(--orion-font-heading);
    font-size: 11px;
    font-weight: var(--orion-weight-semibold);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--orion-n-500);
}

.orion-auth-domains-list {
    display: flex;
    flex-direction: column;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 13px;
}

.orion-auth-domains-list li {
    display: flex;
    align-items: center;
    gap: 9px;
}

.orion-auth-domains-list .orion-auth-domains-dot {
    inline-size: 6px;
    block-size: 6px;
    flex: none;
    border-radius: 50%;
    background-color: var(--orion-accent-600);
}

.orion-auth-domains-list code {
    font-family: ui-monospace, monospace;
    font-size: inherit;
    color: var(--orion-n-900);
}

.orion-auth-domains-list .orion-auth-domains-company {
    margin-inline-start: auto;
    color: var(--orion-n-500);
    text-align: end;
}

.orion-auth-domains-note {
    margin: 11px 0 0;
    padding-top: 11px;
    border-top: 1px solid var(--orion-n-200);
    font-size: 12px;
    line-height: 1.5;
    color: var(--orion-n-500);
}

.orion-auth-domains--mobile {
    display: none;
}

.orion-auth-footer {
    margin-top: 30px;
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 12px;
    color: var(--orion-n-500);
}

.orion-auth-footer a {
    color: var(--orion-n-500);
}

.orion-auth-footer a:hover {
    color: var(--orion-color-heading);
}

.orion-auth-footer-divider {
    color: var(--orion-color-ornament);
}

.orion-auth-footer--mobile {
    display: none;
}

.orion-auth-footer--mobile img {
    margin-inline-start: auto;
    inline-size: 96px;
    block-size: auto;
    opacity: 0.55;
}

@media (max-width: 991.98px) {
    .orion-auth-shell {
        display: block;
        min-block-size: 100vh;
    }

    .orion-auth-hero {
        block-size: 330px;
    }

    .orion-auth-hero-scrim {
        background: linear-gradient(180deg, var(--orion-login-scrim-top) 0%, var(--orion-login-scrim-top-mid) 46%, var(--orion-login-fade-clear) 100%);
    }

    .orion-auth-hero-bg {
        background-position: 60% 46%;
    }

    .orion-auth-hero-fade {
        display: block;
        position: absolute;
        inset-inline: 0;
        inset-block-end: 0;
        block-size: 120px;
        background: linear-gradient(180deg, var(--orion-login-fade-clear) 0%, var(--orion-n-000) 100%);
    }

    .orion-auth-hero-content {
        padding: 26px 22px 0;
        gap: 16px;
    }

    .orion-auth-hero-content--desktop {
        display: none;
    }

    .orion-auth-hero-content--mobile {
        display: flex;
        flex-direction: column;
        gap: 16px;
        justify-content: flex-start;
    }

    .orion-auth-panel {
        padding: 6px 22px 22px;
        justify-content: flex-start;
    }

    .orion-auth-mark {
        display: none;
    }

    .orion-auth-panel-inner h1 {
        margin-top: 0;
        font-size: 23px;
    }

    .orion-auth-domains--desktop {
        display: none;
    }

    .orion-auth-domains--mobile {
        display: block;
    }

    .orion-auth-domains--mobile .orion-auth-domains-list {
        font-family: ui-monospace, monospace;
        font-size: 12px;
        color: var(--orion-n-900);
    }

    .orion-auth-footer--desktop {
        display: none;
    }

    .orion-auth-footer--mobile {
        display: flex;
    }

    /* AJ-035: medidas do artboard de celular (LoginMobile), que não são as do desktop. */
    .orion-auth-hero-eyebrow {
        font-size: var(--orion-text-overline);
    }

    .orion-auth-panel-inner > p:not([class]) {
        margin-top: 8px;
        font-size: var(--orion-text-body-sm);
    }

    .orion-google-btn {
        margin-top: 20px;
        gap: 10px;
    }

    .orion-auth-domains {
        margin-top: 18px;
        padding: 13px 14px;
    }

    .orion-auth-domains-label {
        margin-bottom: 9px;
        font-size: var(--orion-text-2xs);
    }

    .orion-auth-domains-list {
        gap: 6px;
    }

    .orion-auth-domains-note {
        margin-top: 10px;
        padding-top: 10px;
        line-height: 1.45;
    }

    .orion-auth-footer {
        margin-top: 20px;
    }

    /* AJ-042: alvo de toque de 44px nos links do rodapé; a margem negativa devolve o espaço
       vertical, então o texto não muda de lugar. */
    .orion-auth-footer a {
        display: inline-flex;
        align-items: center;
        min-block-size: var(--orion-touch-target);
        margin-block: calc((var(--orion-touch-target) - var(--orion-leading-caption)) / -2);
    }
}
