/* =====================================================================
   Seção "Sobre Nós" — réplica visual fiel de referencia.png.
   Escopada em .eco* → NÃO afeta navbar, footer, demais seções nem o JS.
   Reaproveita os mesmos SVGs de logo já presentes no projeto.
   ===================================================================== */

/* Canvas (raiz <html>) branco: as seções de conteúdo da About são claras.
   O rodapé é o componente COMPARTILHADO (igual ao da Home) — ele pinta o
   próprio fundo (seção escura + card branco), então não é estilizado aqui.
   Escopado à About (só ela carrega este arquivo) → a Home não muda. */
html {
    background: var(--page-background);
}

.eco {
    width: 100%;
    background: var(--page-background);
    padding: 60px 24px 190px;           /* +40px no topo do container → mais respiro navbar ↔ ícones (todo o conjunto desce junto) */
    overflow: hidden;
}

/* Palco de composição com proporção fixa (~2:1, como a referência).
   Tudo é posicionado em % deste palco → fidelidade ao mockup. */
.eco-stage {
    position: relative;
    width: 100%;
    max-width: 1240px;
    height: 660px;
    margin: 0 auto;
    transform: translateX(30px);   /* leve recentralização (~30px à direita) — move todo o conjunto junto */
}

/* ----------------------------- LINHAS ----------------------------- */
/* Curvas finas e discretas conectando os ícones (1px, baixa opacidade). */
.eco-lines {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    overflow: visible;
}
.eco-lines path {
    fill: none;
    stroke: #1f2937;
    stroke-width: 1.3;
    stroke-linecap: round;
    opacity: 0.32;
    vector-effect: non-scaling-stroke;
}

/* --------------------------- TÍTULO -------------------------------- */
.eco-head {
    position: absolute;
    top: 29%;
    left: 50%;
    transform: translateX(-50%);
    width: 88%;
    margin: 0;
    text-align: center;
    z-index: 2;
    color: #111111;
    font-weight: 800;
    font-size: clamp(2rem, 5vw, 3.6rem);
    line-height: 1.06;
    letter-spacing: -0.032em;
    animation: ecoHeadIn .8s ease both;
}
.eco-head span { display: block; }

/* --------------------------- COLUNAS ------------------------------- */
.eco-cols {
    position: absolute;
    top: 49.5%;
    left: 15%;
    width: 66%;
    z-index: 2;
    margin-top: 50px;               /* +respiro entre o título e os três blocos (mantém posição base em %) */
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 5%;
    animation: ecoFade .8s ease .08s both;
}
.eco-col h3 {
    margin: 0 0 16px;
    font-family: 'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    font-weight: 700;
    font-size: 0.95rem;
    letter-spacing: -0.01em;
    color: #1f2937;
}
.eco-col p {
    margin: 0;
    font-family: 'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 0.9rem;
    line-height: 1.7;
    color: #6b7280;
}

/* ------------------------ ÍCONES (cards) --------------------------- */
.eco-icon {
    position: absolute;
    width: 68px;
    height: 68px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    border-radius: 18px;
    border: 1px solid rgba(0, 0, 0, .05);
    box-shadow: 0 14px 32px rgba(17, 17, 17, .10);
    transform: translate(-50%, -50%);
    z-index: 4;
    animation: ecoFloat var(--fd, 9s) ease-in-out var(--fdl, 0s) infinite;
    will-change: transform;
}
.eco-icon svg { width: 36px; height: 36px; display: block; }

/* posições (centro do card) — espelham as coordenadas da referência */
.ei-github { left: 34.25%; top: 20.1%; }
.ei-k8s    { left: 54.25%; top: 22.2%; }
.ei-gcp    { left: 70%;    top: 20%;   }
.ei-docker { left: 8%;     top: 42%;   }
.ei-aws    { left: 79.75%; top: 48.5%; }
.ei-pg     { left: 32.75%; top: 84%;   }
.ei-bolt   { left: 52.25%; top: 82%;   }   /* desceu ~50px junto com os blocos (mantém o mesmo respiro do baseline) */
.ei-cf     { left: 69.5%;  top: 87.1%; }

@keyframes ecoFloat {
    0%, 100% { transform: translate(-50%, calc(-50% - 3px)); }
    50%      { transform: translate(-50%, calc(-50% + 3px)); }
}
@keyframes ecoFade {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}
/* fade do título PRESERVANDO a centragem horizontal (translateX -50%) */
@keyframes ecoHeadIn {
    from { opacity: 0; transform: translateX(-50%) translateY(8px); }
    to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* --------------------------- BADGES -------------------------------- */
.eco-badge {
    position: absolute;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    padding: 4px 7px;
    border-radius: 999px;
    white-space: nowrap;
    box-shadow: 0 4px 10px rgba(17, 17, 17, .14);
}
.bd-red    { background: #FB4B3E; color: #fff; }
.bd-blue   { background: #1E6FF5; color: #fff; }
.bd-orange { background: #F2A33C; color: #3a2a00; }
.bd-gray   { background: #ECECEC; color: #4b5563; box-shadow: 0 4px 10px rgba(17, 17, 17, .08); }
.bd-black  { background: #111111; color: #fff; }

.b-tr { top: -11px; right: -16px; }
.b-bl { bottom: -11px; left: -16px; }
.b-br { bottom: -11px; right: -16px; }
.b-bc { bottom: -13px; left: 50%; transform: translateX(-50%); }

/* ponto laranja do card AWS */
.eco-dot {
    position: absolute;
    top: -5px;
    right: -5px;
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: #F2A33C;
    box-shadow: 0 2px 5px rgba(242, 163, 60, .5);
}

/* ----------------------- ACESSIBILIDADE --------------------------- */
@media (prefers-reduced-motion: reduce) {
    .eco-icon, .eco-head, .eco-cols { animation: none; }
}

/* ----------------------- RESPONSIVO ------------------------------- */
@media (max-width: 900px) {
    .eco { padding: 120px 22px 64px; }
    .eco-stage { height: auto; transform: none; }   /* sem deslocamento no layout empilhado (mantém centralização) */
    .eco-lines, .eco-icon { display: none; }

    .eco-head {
        position: static;
        transform: none;
        width: 100%;
        animation: none;
    }
    .eco-cols {
        position: static;
        left: auto;
        width: 100%;
        display: block;
        margin-top: 56px;               /* +respiro título ↔ blocos, consistente com o desktop (empilhado, sem risco de sobreposição) */
        animation: none;
    }
    .eco-col {
        max-width: 440px;
        margin: 0 auto 32px;
    }
    .eco-col:last-child { margin-bottom: 0; }
}

/* =====================================================================
   TIMELINE PREMIUM — "A história da Anthares 44".
   NOVA seção, 100% escopada em .tl* → não afeta .eco, navbar, footer
   nem qualquer outra parte do site. Visual enterprise, clean, com muito
   espaço em branco, sombras suaves, cantos arredondados e SEM linhas.
   Animações de entrada/parallax via GSAP (script em about.html).
   ===================================================================== */
.tl {
    width: 100%;
    background: var(--page-background);
    margin-top: -150px;                     /* sobe para dentro do respiro inferior (vazio) da .eco — só fecha o espaço, sem tocar a seção anterior */
    padding: 40px 24px 70px;               /* topo enxuto → timeline inicia logo abaixo, com ~80–120px de espaçamento elegante */
    overflow: hidden;                       /* contém o parallax sem gerar scroll-x */
}
.tl-inner {
    max-width: 1180px;
    margin: 0 auto;
}

/* ---- Trilha de marcos ---- */
.tl-track { display: flex; flex-direction: column; gap: 40px; }

.tl-row {
    position: relative;
    display: grid;
    grid-template-columns: 1.12fr 0.88fr;
    gap: 48px;
    align-items: center;
    padding: 52px 0;
}
.tl-row--right { grid-template-columns: 0.88fr 1.12fr; }
.tl-row--right .tl-main  { order: 2; }
.tl-row--right .tl-aside { order: 1; }

/* Ano — marcador grande e discreto (sem linha de timeline) */
.tl-year {
    position: absolute;
    top: -18px;                             /* sobe ~24px → mais respiro vertical entre o ano e o card abaixo (ano "flutua" acima) */
    z-index: 0;
    line-height: 1;
    font-weight: 800;
    font-size: clamp(2.2rem, 4.4vw, 4rem);
    letter-spacing: -0.03em;
    color: rgba(17, 17, 17, 0.12);
    pointer-events: none;
}
.tl-row .tl-year        { left: 2px; }
.tl-row--right .tl-year { right: 2px; }

/* ---- Cartões ---- */
.tl-card {
    position: relative;
    z-index: 1;
    background: #ffffff;
    border: 1px solid rgba(0, 0, 0, .05);
    border-radius: 28px;
    box-shadow: 0 18px 50px rgba(17, 17, 17, .06);
    padding: 34px 32px;
}
.tl-card--lg { padding: 48px 44px; border-radius: 28px; }
.tl-tag {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 5px 11px;
    border-radius: 999px;
    background: rgba(17, 17, 17, .06);
    color: #4b5563;
    margin-bottom: 18px;
}
.tl-card__title {
    margin: 0 0 12px;
    font-size: clamp(1.4rem, 2.2vw, 2rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #111111;
    line-height: 1.12;
}
.tl-card__text {
    margin: 0;
    color: #6b7280;
    font-size: 1.02rem;
    line-height: 1.62;
}

/* Variantes coloridas dos cartões grandes */
.tl-card.is-dark   { background: #101114; border-color: rgba(255,255,255,.06); box-shadow: 0 22px 60px rgba(16,17,20,.28); }
.tl-card.is-blue   { background: #1E6FF5; border-color: transparent; box-shadow: 0 22px 60px rgba(30,111,245,.30); }
.tl-card.is-violet { background: #6C5CE7; border-color: transparent; box-shadow: 0 22px 60px rgba(108,92,231,.30); }
.tl-card.is-lime   { background: #CCFF00; border-color: transparent; box-shadow: 0 22px 60px rgba(173,207,0,.30); }

.tl-card.is-dark   .tl-card__title { color: #F4F6EE; }
.tl-card.is-dark   .tl-card__text  { color: rgba(244,246,238,.72); }
.tl-card.is-dark   .tl-tag { background: rgba(255,255,255,.10); color: rgba(244,246,238,.85); }

.tl-card.is-blue   .tl-card__title,
.tl-card.is-violet .tl-card__title { color: #ffffff; }
.tl-card.is-blue   .tl-card__text,
.tl-card.is-violet .tl-card__text  { color: rgba(255,255,255,.82); }
.tl-card.is-blue   .tl-tag,
.tl-card.is-violet .tl-tag { background: rgba(255,255,255,.18); color: #ffffff; }

.tl-card.is-lime   .tl-card__title { color: #16210a; }
.tl-card.is-lime   .tl-card__text  { color: rgba(22,33,10,.74); }
.tl-card.is-lime   .tl-tag { background: rgba(16,17,20,.12); color: #16210a; }

/* ---- Coluna lateral (stat + imagem) ---- */
.tl-aside { display: flex; flex-direction: column; gap: 28px; }

.tl-stat {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.tl-stat__num {
    font-size: clamp(1.8rem, 3vw, 2.6rem);
    font-weight: 800;
    letter-spacing: -0.03em;
    color: #111111;
    line-height: 1;
}
.tl-stat__label {
    font-size: 0.96rem;
    color: #6b7280;
    line-height: 1.45;
}
.tl-stat--big { padding: 38px 32px; }
.tl-stat--big .tl-stat__num { font-size: clamp(2.4rem, 4vw, 3.4rem); }
.tl-stat.is-lime .tl-stat__num   { color: #16210a; }
.tl-stat.is-lime .tl-stat__label { color: rgba(22,33,10,.74); }

/* ---- Imagens arredondadas (placeholders premium em gradiente) ---- */
.tl-imgwrap {
    position: relative;
    overflow: hidden;
    width: 100%;
    max-width: 100%;               /* nunca ultrapassa a largura do conteúdo */
    margin-inline: auto;           /* centralizada na coluna, com respiro ao redor */
    border-radius: 28px;           /* mesmo raio premium dos cartões → sem cantos quadrados */
    isolation: isolate;            /* garante o clip arredondado mesmo com camadas internas (Safari/WebKit) */
    aspect-ratio: 16 / 10;
    max-height: 620px;             /* desktop: 520–650px · elemento de composição, nunca tela inteira */
    box-shadow: 0 18px 50px rgba(17, 17, 17, .10);
}
/* foto real (quando houver): preenche o bloco sem distorcer nem ultrapassar */
.tl-imgwrap img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
.tl-img {
    position: absolute;
    inset: -9%;                              /* overscan → parallax/escala sem revelar bordas */
    width: 118%;
    height: 118%;
    border-radius: inherit;                  /* segue o raio do wrap → sem vazamento de canto */
}
.tl-img::after {                              /* leve brilho/vidro para dar profundidade */
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(120% 80% at 20% 10%, rgba(255,255,255,.28), rgba(255,255,255,0) 60%);
}
.tl-img--a { background: linear-gradient(135deg, #4F8DFD, #6C5CE7); }
.tl-img--b { background: linear-gradient(135deg, #18C29C, #A6F0C6); }
.tl-img--c { background: linear-gradient(135deg, #1f2937, #4b5563); }
.tl-img--d { background: linear-gradient(135deg, #F59E0B, #FB7185); }
.tl-img--e { background: linear-gradient(135deg, #BFF200, #6FB000); }

/* Ilustração vetorial sobre o bloco (mantém tamanho/gradiente/borda/posição do bloco) */
.tl-illo {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    display: block;
    padding: 8%;
    box-sizing: border-box;
    pointer-events: none;
}

/* ===== Ilustrações decorativas ANIMADAS (dentro dos blocos de imagem) =========
   Puramente visuais (aria-hidden). Herdam posição/escala de .tl-illo. Movimentos
   discretos e CONTÍNUOS (float · pulse muito leve · draw · partículas lentas),
   usando SOMENTE transform e stroke-dashoffset. NUNCA animam opacity → sem
   piscar/flicker. Independentes da animação principal do card. ---------------- */
.tl-illo .tl-a-node,
.tl-illo .tl-a-core,
.tl-illo .tl-a-ring { transform-box: fill-box; transform-origin: center; will-change: transform; }

/* pulse muito leve (só escala) */
.tl-a-node { animation: tlPulse 3.6s ease-in-out infinite; }
.tl-a-core { animation: tlPulse 2.8s ease-in-out infinite; }
/* glow suave = anel respirando lentamente (só escala, sem fade) */
.tl-a-ring { animation: tlBreathe 4s ease-in-out infinite; }
/* draw / partícula lenta ao longo da linha (só stroke-dashoffset) */
.tl-a-flow { stroke-dasharray: 0.1 15; stroke-linecap: round; animation: tlFlow 2.2s linear infinite; }
/* partícula em órbita (só rotação) */
.tl-orbit  { transform-box: view-box; transform-origin: 160px 100px; will-change: transform; animation: tlOrbit 10s linear infinite; }

@keyframes tlPulse   { 0%, 100% { transform: scale(1); }    50% { transform: scale(1.06); } }
@keyframes tlBreathe { 0%, 100% { transform: scale(0.92); } 50% { transform: scale(1.06); } }
@keyframes tlFlow    { to { stroke-dashoffset: -15; } }
@keyframes tlOrbit   { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    .tl-a-node, .tl-a-core, .tl-a-ring, .tl-a-flow, .tl-orbit { animation: none; }
}

/* Conteúdo informativo sobre o bloco ilustrativo (mantém tamanho/cor/borda do bloco) */
.tl-imgcard {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 12px;
    padding: 34px 32px;
    border-radius: inherit;                  /* overlay acompanha os cantos arredondados do wrap */
    background: linear-gradient(180deg, rgba(16,17,20,0) 40%, rgba(16,17,20,.28) 100%);
}
.tl-imgcard__title {
    margin: 0;
    font-size: clamp(1.4rem, 2.2vw, 2rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.12;
    color: #ffffff;
}
.tl-imgcard__text {
    margin: 0;
    font-size: 1.02rem;
    line-height: 1.62;
    color: rgba(255,255,255,.9);
}

/* ---- ENTRADA (IntersectionObserver) — mesmo conceito de reveal do footer
   (.pf-anim/.is-in). Estado inicial VISÍVEL por padrão (degrada sem JS); o JS
   adiciona .tl-reveal à seção para ativar o estado oculto e depois .is-in em
   cada elemento (cards, cartões coloridos, imagens, estatísticas e os ANOS)
   ao entrar na viewport. Cada um anima UMA única vez e PERMANECE visível. ---- */
.tl-reveal .tl-anim,
.tl-reveal .tl-year {
    opacity: 0;
    transform: translateY(40px) scale(0.97);
    /* easeOutExpo premium (Apple/Linear/Stripe/Vercel). SÓ opacity + transform.
       transition-delay em cascata via --tl-delay (definido 1x no load, nunca no scroll). */
    transition: opacity .9s cubic-bezier(0.16, 1, 0.3, 1),
                transform .9s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: var(--tl-delay, 0ms);
    will-change: transform, opacity;
    backface-visibility: hidden;   /* estabiliza a composição na GPU → sem tremor sub-pixel */
}
.tl-reveal .tl-anim.is-in,
.tl-reveal .tl-year.is-in {
    opacity: 1;
    transform: translateY(0) scale(1);
}
@media (prefers-reduced-motion: reduce) {
    .tl-reveal .tl-anim,
    .tl-reveal .tl-year { opacity: 1; transform: none; transition: none; }
}

/* ---- Responsivo ---- */
/* Tablet: reorganiza para 1 coluna mantendo o mesmo visual dos cartões */
@media (max-width: 980px) {
    .tl { padding: 80px 22px 70px; margin-top: 0; }   /* sem pull-up no empilhado (a .eco tem base pequena no mobile) */
    .tl-row,
    .tl-row--right { grid-template-columns: 1fr; gap: 28px; padding: 36px 0; }
    .tl-row--right .tl-main,
    .tl-row--right .tl-aside { order: 0; }
    .tl-aside { flex-direction: row; }       /* stat + imagem lado a lado */
    .tl-aside > * { flex: 1; }
    .tl-imgwrap { max-height: 420px; }        /* tablet: ~420px */
    .tl-year { position: static; display: block; margin-bottom: 38px; color: rgba(17,17,17,.16); }   /* +24px de respiro entre o ano e o card */
}
/* Mobile: empilha tudo, mantém os cartões e as animações */
@media (max-width: 600px) {
    .tl { padding: 64px 20px 56px; }
    .tl-card--lg { padding: 34px 26px; }
    .tl-aside { flex-direction: column; }
    .tl-imgwrap { aspect-ratio: 16 / 11; max-height: 300px; }   /* mobile: 260–320px */
}

/* O rodapé agora é o componente novo .a44f-* (assets/css/footer-a44.css +
   assets/js/footer.js). Página branca; o rodapé traz a própria faixa escura. */
body { background: var(--page-background); }
