/* ============================================================
   FG/26 — PÁGINAS DE PROJETO
   Cada página assume a identidade do próprio produto. O layout é
   compartilhado; o tema vem de [data-brand] no <body>.

   As paletas do Atlas e do Labwave saíram dos guias de aplicações
   da marca. A do Memphant foi amostrada do próprio mascote — não
   há guia escrito para ele ainda.
   ============================================================ */

:root {
    --p-ease: cubic-bezier(.23, 1, .32, 1);
    --p-ease-move: cubic-bezier(.77, 0, .175, 1);
    --p-fast: 140ms;
    --p-base: 240ms;
    --p-slow: 420ms;

    --p-gutter: clamp(1.25rem, 4vw, 4rem);
    --p-section-y: clamp(3rem, 7vw, 7rem);
    --p-container: 1200px;

    --font-display: 'Oswald', 'Arial Narrow', sans-serif;
    --font-body: 'Inter', Arial, sans-serif;
    --font-mono: 'JetBrains Mono', monospace;
}

/* ---- ATLAS · Iris & Âmbar ----------------------------------
   Dark-first. Iris conduz navegação e ação; âmbar só marca
   pontos de referência e nunca compete com o iris. */
[data-brand="atlas"] {
    --bg: #080D18;
    --surface: #111724;
    --line: #1E2637;
    --accent: #9F92FF;
    --accent-deep: #5E3EC7;
    --marker: #EEB154;
    --text: #F9FAFC;
    --text-dim: #98A0B4;
    --hero-grid: rgba(159, 146, 255, .07);
}

/* ---- LABWAVE · Fósforo -------------------------------------
   O fósforo é sinal, não decoração: marca, estados ativos e
   foco. Nunca texto corrido, nunca glow permanente. */
[data-brand="labwave"] {
    --bg: #050505;
    --surface: #1A1512;
    --line: #2D241E;
    --accent: #D1FF00;
    --accent-deep: #A5CC00;
    --marker: #D1FF00;
    --text: #FAF9F6;
    --text-dim: #8E837A;
    --hero-grid: rgba(209, 255, 0, .05);
}

/* ---- MEMPHANT · Sage & Teal, gesto neobrutalista -----------
   Tudo daqui sai da pasta do projeto, não do GitHub:
   - sage do fundo do mascote;
   - teal de `secondary`/`accent` no tailwind.config.js;
   - pink de `action`, tinta de `text-main`;
   - Space Grotesk / Outfit do design system.
   O app usa #4444EE como primary, mas o teal é a cor que dá
   identidade ao Memphant — o elefante já é teal. Único tema
   claro dos três: leitura pede papel, não painel. */
[data-brand="memphant"] {
    --bg: #DCE8E5;
    --surface: #F4F8F7;
    --line: #1B1E2B;
    /* Rampa teal do app, amostrada da própria logo. O teal assinatura
       (#33A6A7) é meio-tom e não segura texto, então fica só em
       decoração; o `primary` #096268 é o que funciona como tinta e
       como fundo. `action-ink` no lugar de `action` pela mesma razão. */
    --accent: #096268;
    --accent-deep: #04474C;
    --accent-bright: #33A6A7;
    --marker: #C21063;
    --streak: #92400E;
    --success: #0B6E8C;
    --text: #1B1E2B;
    --text-dim: #5C6069;
    --hero-grid: rgba(27, 30, 43, .07);
    --font-display: 'Space Grotesk', 'Oswald', sans-serif;
    --font-body: 'Outfit', 'Inter', Arial, sans-serif;
}

/* O Memphant é neobrutalista: borda preta e sombra dura, sem raio
   grande. Isto reproduz o gesto do app dentro da página. */
[data-brand="memphant"] .p-grid,
[data-brand="memphant"] .p-swatches,
[data-brand="memphant"] .p-marks,
[data-brand="memphant"] .p-shot {
    border-width: 2px;
    box-shadow: 6px 6px 0 var(--text);
}

[data-brand="memphant"] .p-btn {
    border-width: 2px;
    box-shadow: 4px 4px 0 var(--text);
}

[data-brand="memphant"] .p-btn:active {
    box-shadow: 1px 1px 0 var(--text);
    translate: 3px 3px;
}

[data-brand="memphant"] .p-h1,
[data-brand="memphant"] .p-h2 {
    letter-spacing: -.02em;
    text-transform: none;
}

*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    scroll-padding-top: calc(64px + 1rem);
}

html,
body {
    overflow-x: clip;
    max-width: 100%;
}

@supports not (overflow: clip) {

    html,
    body {
        overflow-x: hidden;
    }
}

body {
    font-family: var(--font-body);
    background: var(--bg);
    color: var(--text);
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
}

/* height:auto é obrigatório junto dos atributos width/height do HTML:
   sem ele o atributo vira altura real e a imagem estica. */
img {
    max-width: 100%;
    height: auto;
    display: block;
}

::selection {
    background: var(--accent);
    color: var(--bg);
}

.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    background: var(--accent);
    color: var(--bg);
    padding: var(--p-gutter);
    z-index: 200;
    font-family: var(--font-mono);
    text-transform: uppercase;
    letter-spacing: .1em;
    font-size: .75rem;
}

.skip-link:focus {
    left: 0;
}

:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
}

/* ============ CHROME ============ */
.p-nav {
    position: sticky;
    top: 0;
    z-index: 100;
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
}

.p-nav-inner {
    max-width: var(--p-container);
    margin: 0 auto;
    padding: 0 var(--p-gutter);
    min-height: 64px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
}

.p-brand {
    display: flex;
    align-items: center;
    gap: .625rem;
    text-decoration: none;
    color: var(--text);
}

.p-brand img {
    width: 28px;
    height: 28px;
    object-fit: contain;
}

.p-brand span {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.05rem;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.p-nav-links {
    display: flex;
    gap: 1.75rem;
}

.p-nav-links a {
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--text-dim);
    text-decoration: none;
    transition: color var(--p-fast) var(--p-ease);
}

.p-nav-links a:hover {
    color: var(--accent);
}

.p-back {
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--text-dim);
    text-decoration: none;
    border: 1px solid var(--line);
    padding: .5rem .875rem;
    min-height: 40px;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    transition: border-color var(--p-fast) var(--p-ease),
        color var(--p-fast) var(--p-ease);
}

.p-back:hover {
    border-color: var(--accent);
    color: var(--accent);
}

.p-back:active {
    translate: 1px 1px;
}

@media (max-width: 860px) {
    .p-nav-links {
        display: none;
    }
}

/* ============ LAYOUT ============ */
.p-wrap {
    max-width: var(--p-container);
    margin: 0 auto;
    padding: 0 var(--p-gutter);
}

.p-section {
    padding: var(--p-section-y) 0;
    border-bottom: 1px solid var(--line);
}

.p-kicker {
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--accent);
    display: block;
    margin-bottom: 1rem;
}

.p-h2 {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(1.75rem, 3.6vw, 2.75rem);
    line-height: 1.05;
    letter-spacing: -.01em;
    text-transform: uppercase;
    margin-bottom: 1.25rem;
}

.p-lead {
    font-size: clamp(1rem, 1.5vw, 1.15rem);
    color: var(--text-dim);
    max-width: 62ch;
}

/* ============ HERO ============ */
.p-hero {
    position: relative;
    padding: clamp(3.5rem, 9vw, 8rem) 0 clamp(3rem, 7vw, 6rem);
    border-bottom: 1px solid var(--line);
    overflow: hidden;
}

/* Malha de fundo: no Atlas lê como carta náutica, no Labwave como
   grade de osciloscópio. Mesma técnica, leitura diferente. */
.p-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(var(--hero-grid) 1px, transparent 1px),
        linear-gradient(90deg, var(--hero-grid) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 40%, transparent 100%);
    pointer-events: none;
}

.p-hero-inner {
    position: relative;
    display: grid;
    grid-template-columns: 1.15fr .85fr;
    gap: clamp(2rem, 5vw, 4rem);
    align-items: center;
}

.p-hero-mark {
    width: clamp(72px, 9vw, 104px);
    height: auto;
    margin-bottom: 1.75rem;
}

.p-h1 {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(2.75rem, 8vw, 5.5rem);
    line-height: .95;
    letter-spacing: .02em;
    text-transform: uppercase;
    margin-bottom: 1rem;
}

.p-tagline {
    font-size: clamp(1.05rem, 2vw, 1.4rem);
    color: var(--text-dim);
    max-width: 46ch;
    margin-bottom: 2rem;
}

.p-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .625rem 1.5rem;
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--text-dim);
    padding-top: 1.5rem;
    border-top: 1px solid var(--line);
}

.p-hero-visual {
    display: flex;
    align-items: center;
    justify-content: center;
}

.p-hero-visual img {
    width: 100%;
    border: 1px solid var(--line);
}

@media (max-width: 860px) {
    .p-hero-inner {
        grid-template-columns: 1fr;
    }

    .p-hero-visual {
        order: -1;
    }

    /* Empilhado, o símbolo pequeno fica logo abaixo da aplicação
       emoldurada e lê como repetição. No desktop eles estão lado a
       lado, em tratamentos diferentes, e convivem bem. */
    .p-hero-mark {
        display: none;
    }
}

/* ---- Traço decorativo do hero -----------------------------
   Ambos os guias pedem uma entrada CURTA e proíbem animação
   ornamental contínua — então isto desenha uma vez e para. */
.p-stroke {
    display: block;
    width: 100%;
    height: 40px;
    margin-top: 2rem;
    overflow: visible;
}

.p-stroke path {
    fill: none;
    stroke: var(--accent);
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 1200;
    stroke-dashoffset: 1200;
    animation: p-draw 900ms var(--p-ease-move) 220ms forwards;
}

.p-stroke circle {
    fill: var(--marker);
    opacity: 0;
    animation: p-mark 320ms var(--p-ease) 1000ms forwards;
}

@keyframes p-draw {
    to {
        stroke-dashoffset: 0;
    }
}

@keyframes p-mark {
    from {
        opacity: 0;
        transform: scale(.6);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* ============ BOTÕES ============ */
.p-btn {
    display: inline-flex;
    align-items: center;
    gap: .625rem;
    font-family: var(--font-mono);
    font-weight: 600;
    font-size: .75rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    text-decoration: none;
    padding: .875rem 1.5rem;
    min-height: 46px;
    border: 1px solid var(--accent);
    background: var(--accent);
    color: var(--bg);
    transition: background var(--p-base) var(--p-ease),
        color var(--p-base) var(--p-ease);
}

.p-btn:hover {
    background: transparent;
    color: var(--accent);
}

.p-btn-ghost {
    background: transparent;
    color: var(--text);
    border-color: var(--line);
}

.p-btn-ghost:hover {
    background: transparent;
    border-color: var(--accent);
    color: var(--accent);
}

.p-btn:active,
.p-btn-ghost:active {
    translate: 1px 1px;
    transition-duration: var(--p-fast);
}

.p-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-top: 2rem;
}

/* ============ GRIDS DE CONTEÚDO ============ */
.p-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    margin-top: 2.5rem;
}

.p-cell {
    background: var(--bg);
    padding: clamp(1.5rem, 3vw, 2.25rem);
}

.p-cell-num {
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .12em;
    color: var(--accent);
    display: block;
    margin-bottom: .875rem;
}

.p-cell h3 {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 1.2rem;
    letter-spacing: .01em;
    text-transform: uppercase;
    margin-bottom: .625rem;
}

.p-cell p {
    color: var(--text-dim);
    font-size: .95rem;
}

/* ============ PALETA ============ */
.p-swatches {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    margin-top: 2.5rem;
}

.p-swatch {
    background: var(--bg);
    padding: 0;
}

.p-swatch-chip {
    height: 96px;
    border-bottom: 1px solid var(--line);
}

.p-swatch-body {
    padding: 1rem 1.125rem 1.25rem;
}

.p-swatch-name {
    font-family: var(--font-mono);
    font-size: .68rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    display: block;
    margin-bottom: .25rem;
}

.p-swatch-hex {
    font-family: var(--font-mono);
    font-size: .8rem;
    color: var(--text-dim);
}

/* ============ APLICAÇÕES DA MARCA ============ */
.p-marks {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    margin-top: 2.5rem;
}

/* auto-fit com um filho só estica até a largura do container.
   No Memphant isso virava um quadrado de ~1000px — a marca
   precisa caber como placa, não como cartaz. */
.p-marks:has(.p-mark:only-child) {
    width: min(100%, 20rem);
    margin-inline: auto;
}

.p-mark {
    background: var(--bg);
    padding: 1.75rem;
    text-align: center;
}

.p-mark-frame {
    aspect-ratio: 1;
    display: grid;
    place-items: center;
    border: 1px solid var(--line);
    margin-bottom: 1rem;
    overflow: hidden;
}

.p-mark-frame img {
    width: 68%;
    height: auto;
    object-fit: contain;
}

.p-mark-frame.is-fill {
    padding: 0;
}

.p-mark-frame.is-fill img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.p-mark span {
    font-family: var(--font-mono);
    font-size: .68rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--text-dim);
}

/* ============ TELAS DO SISTEMA ============ */
/* Capturas do produto rodando de verdade — não mockup. */
.p-shots {
    display: grid;
    gap: clamp(1.5rem, 3vw, 2.5rem);
    margin-top: 2.5rem;
}

.p-shots-2 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
}

/* Captura única não deve esticar até a largura do container — um
   retrato de 738px ampliado para 1080 fica borrado. */
.p-shots:not(.p-shots-2) .p-shot {
    max-width: 620px;
    justify-self: center;
}

.p-shot {
    border: 1px solid var(--line);
    background: var(--surface);
    overflow: hidden;
    margin: 0;
}

.p-shot img {
    width: 100%;
    border-bottom: 1px solid var(--line);
}

.p-shot figcaption {
    padding: 1rem 1.25rem 1.25rem;
}

.p-shot-title {
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--accent);
    display: block;
    margin-bottom: .375rem;
}

.p-shot p {
    color: var(--text-dim);
    font-size: .9rem;
}

/* ============ LISTA DE DESTAQUES ============ */
.p-bullets {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: .875rem clamp(1.5rem, 4vw, 3rem);
    margin-top: 2.5rem;
}

.p-bullets li {
    color: var(--text-dim);
    font-size: .95rem;
    padding-left: 1.5rem;
    position: relative;
}

.p-bullets li::before {
    content: "\2192";
    position: absolute;
    left: 0;
    color: var(--accent);
    font-family: var(--font-mono);
}

.p-bullets strong {
    color: var(--text);
    font-weight: 600;
}

/* ============ NÃO FAZ (honestidade sobre escopo) ============ */
.p-scope {
    margin-top: 2rem;
    padding: 1.25rem 1.5rem;
    border-left: 3px solid var(--marker);
    background: var(--surface);
    color: var(--text-dim);
    font-size: .95rem;
}

/* ============ REGRAS DE USO ============ */
.p-rules {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: clamp(1.5rem, 4vw, 3rem);
    margin-top: 2.5rem;
}

.p-rules h3 {
    font-family: var(--font-mono);
    font-size: .72rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    margin-bottom: 1rem;
    padding-bottom: .75rem;
    border-bottom: 1px solid var(--line);
}

.p-rules ul {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.p-rules li {
    color: var(--text-dim);
    font-size: .95rem;
    padding-left: 1.5rem;
    position: relative;
}

.p-rules li::before {
    position: absolute;
    left: 0;
    font-family: var(--font-mono);
}

.p-do li::before {
    content: "+";
    color: var(--accent);
}

.p-dont li::before {
    content: "\00d7";
    color: var(--marker);
}

/* ============ STACK ============ */
.p-tags {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-top: 2rem;
}

.p-tags span {
    font-family: var(--font-mono);
    font-size: .72rem;
    letter-spacing: .08em;
    padding: .5rem .875rem;
    border: 1px solid var(--line);
    color: var(--text-dim);
}

/* ============ CTA + RODAPÉ ============ */
.p-cta {
    padding: var(--p-section-y) 0;
    text-align: center;
}

.p-cta .p-h2 {
    margin-bottom: 1rem;
}

.p-cta .p-actions {
    justify-content: center;
}

.p-foot {
    border-top: 1px solid var(--line);
    padding: 2rem 0;
    font-family: var(--font-mono);
    font-size: .7rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--text-dim);
}

.p-foot-inner {
    max-width: var(--p-container);
    margin: 0 auto;
    padding: 0 var(--p-gutter);
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: space-between;
    align-items: center;
}

.p-foot a {
    color: var(--text-dim);
    text-decoration: none;
    transition: color var(--p-fast) var(--p-ease);
}

.p-foot a:hover {
    color: var(--accent);
}

/* ============ REVEAL ============ */
/* Estado oculto só existe com JS ativo — sem script, tudo visível. */
.p-reveal {
    transition: opacity var(--p-slow) var(--p-ease),
        transform var(--p-slow) var(--p-ease);
}

html.has-motion .p-reveal:not(.is-visible) {
    opacity: 0;
    transform: translateY(14px);
}

/* ============ MOVIMENTO REDUZIDO ============ */
@media (prefers-reduced-motion: reduce) {

    html {
        scroll-behavior: auto;
    }

    .p-reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    /* O traço aparece pronto em vez de desenhar. */
    .p-stroke path {
        stroke-dashoffset: 0;
        animation: none;
    }

    .p-stroke circle {
        opacity: 1;
        animation: none;
    }

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        transition-duration: .01ms !important;
    }
}
