:root{
    /* institucional verde — fundo escuro, superfícies e destaque dourado */
    --verde-900:#1f3d2e; /* fundo principal */
    --verde-950:#17301f; /* verde ainda mais escuro — sólido, usado no header ao rolar (fica fixo sobre o conteúdo) */
    --verde-700:#285c3b; /* verde médio — cards e superfícies */
    --verde-500:#75944a; /* verde-oliva — uso secundário */
    --verde-200:#c8d2c3; /* texto secundário sobre superfícies escuras */
    --verde-100:rgba(251,246,236,0.62); /* texto terciário/discreto sobre superfícies escuras */

    --ocre-600:#c19a3c; /* dourado escurecido — hover do destaque */
    --ocre-400:#d9b24c; /* dourado — destaque pontual */

    --papel:#fbf6ec; /* creme — texto principal/títulos e superfícies claras */
    --papel-alt:rgba(0,0,0,0.14); /* variação (sombreamento) do fundo principal — rodapé */
    --tinta:#c8d2c3; /* texto secundário/corpo */
    --tinta-suave:#c8d2c3; /* texto secundário/corpo */
    --linha:rgba(251,246,236,0.14); /* linhas e bordas sobre o fundo escuro */
    --erro:#e2725b; /* estado de erro em formulários e toasts */
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  body{ font-family:'Public Sans', sans-serif; background:var(--verde-900); color:var(--tinta); line-height:1.6; }
  h1,h2,h3{ font-family:'Public Sans', sans-serif; font-weight:600; }
  a{ color:inherit; text-decoration:none; }
  .wrap{ max-width:1080px; margin:0 auto; padding:0 32px; }

  header{ position:sticky; top:0; z-index:20; background:var(--verde-900); border-bottom:1px solid var(--linha); transition:all 0.3s ease-in-out; }
  header.header-scrolled{ background-color:var(--verde-950); box-shadow:0 4px 10px rgba(0,0,0,0.2); }
  .nav{ display:flex; align-items:center; justify-content:space-between; padding:18px 32px; max-width:1080px; margin:0 auto; flex-wrap:wrap; gap:12px; transition:padding 0.3s ease-in-out;}
  header.header-scrolled .nav{ padding-top:12px; padding-bottom:12px; }
  .brand{ display:flex; align-items:center; gap:10px; font-size:19px; font-weight:600; color:var(--papel); cursor:pointer;}
  .brand .mark{ width:70px; height:70px; object-fit:contain; }
  .navlinks{ display:flex; gap:24px; font-size:13px; color:var(--tinta-suave); flex-wrap:wrap; }
  .navlinks a{ cursor:pointer; padding:4px 0; border-bottom:2px solid transparent; transition:color 0.3s ease-in-out, border-color 0.3s ease-in-out; }
  .navlinks a:hover{ color:var(--papel); }
  .navlinks a.active{ color:var(--papel); font-weight:600; border-color:var(--ocre-400); }

  /* Agrupa os links e o social à direita: o .nav segue com 2 filhos, então o
     justify-content:space-between original permanece intacto. */
  .nav-right{ display:flex; align-items:center; gap:24px; }

  /* Botão hambúrguer: some no desktop, só aparece no mobile (media query
     abaixo troca .navlinks de "sempre visível" para "menu flutuante"). */
  .nav-toggle{ display:none; flex-direction:column; justify-content:center; align-items:center; gap:5px; width:36px; height:36px; padding:0; border:none; background:transparent; cursor:pointer; flex-shrink:0; }
  .nav-toggle span{ display:block; width:22px; height:2px; background:var(--papel); border-radius:2px; transition:transform 0.3s ease-in-out, opacity 0.3s ease-in-out; }
  .nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

  /* Ícone social (SVG inline, currentColor): herda a cor de texto do contexto
     e realça no ocre no hover. 44x44 garante área de toque confortável. */
  .social-link{ display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; color:var(--tinta-suave); cursor:pointer; transition:all 0.3s ease; }
  .social-link:hover{ color:var(--ocre-400); }
  .social-link:focus-visible{ outline:2px solid var(--ocre-400); outline-offset:2px; border-radius:8px; }
  .social-link svg{ display:block; }

  section{ padding:56px 0; }
  .section-head{ display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:30px; gap:20px; flex-wrap:wrap;}
  .section-head h1, .section-head h2{ font-size:26px; color:var(--papel); }
  .section-head p{ font-size:14px; line-height:1.7; color:var(--tinta-suave); max-width:900px; }
  .eyebrow{ font-size:13px; letter-spacing:0.08em; text-transform:uppercase; color:var(--ocre-400); font-weight:600; margin-bottom:14px; overflow-wrap:anywhere;}

  .btn{ padding:12px 22px; border-radius:999px; font-size:14px; font-weight:600; display:inline-block; cursor:pointer; }
  .btn-primary{ background:var(--ocre-400); color:var(--verde-900); }
  .btn-primary:hover{ background:var(--ocre-600); }
  .btn-ghost{ background:var(--papel); border:1px solid var(--ocre-400); color:var(--verde-900); }
  .btn-ghost:hover{ border-color:var(--ocre-600); }

  /* ---- ANIMAÇÕES DE ENTRADA ---- */
  @keyframes fadeInLeft{ from{ opacity:0; transform:translateX(-40px); } to{ opacity:1; transform:translateX(0); } }
  @keyframes fadeInRight{ from{ opacity:0; transform:translateX(40px); } to{ opacity:1; transform:translateX(0); } }
  @keyframes fadeInUp{ from{ opacity:0; transform:translateY(20px); } to{ opacity:1; transform:translateY(0); } }
  .fade-in-left{ animation:fadeInLeft 0.7s ease-out both; }
  .fade-in-right{ animation:fadeInRight 0.7s ease-out both; }
  .fade-in-up{ animation:fadeInUp 0.6s ease-out both; }

  /* ---- REVELAÇÃO AO ROLAR (IntersectionObserver) ---- */
  .hidden-scroll{ opacity:0; transform:translateY(24px); transition:opacity 0.6s ease-out, transform 0.6s ease-out; }
  .hidden-scroll.show-scroll{ opacity:1; transform:translateY(0); }

  /* ---- HOME ---- */
  .hero{ padding-top:70px; }
  .hero-inner{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:48px; align-items:center; }
  .hero h1{ font-size:42px; line-height:1.12; color:var(--papel); margin-bottom:18px;}
  .hero p{ font-size:16px; color:var(--tinta-suave); max-width:46ch; margin-bottom:26px; }
  .cta-row{ display:flex; gap:12px; }
  .hero-art{ height:300px; border-radius:6px; background:url('../assets/hero-art_foto.jpeg') center/cover no-repeat; position:relative; overflow:hidden; box-shadow:0 12px 30px rgba(0,0,0,0.3); }
  .hero-stats{ position:absolute; bottom:16px; left:16px; right:16px; display:flex; gap:10px; }
  .stat{ background:var(--verde-700); border:1px solid var(--linha); border-radius:3px; padding:10px 14px; font-size:12px; color:var(--tinta-suave); transition:transform 0.3s ease-in-out; }
  .stat:hover{ transform:translateY(-5px); }
  .stat b{ display:block; font-size:19px; color:var(--papel); font-weight:600; }

  .projetos-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
  /* min-width:0 evita o "grid blowout": sem isso, um título/texto sem
     espaços (uma palavra gigante) força a coluna inteira do grid a alargar
     para caber esse conteúdo, distorcendo a largura/altura de TODOS os
     cards da coluna — não só o card com o texto problemático. overflow-wrap
     garante que, mesmo assim, a palavra quebre dentro do próprio card. */
  .proj-card{ min-width:0; overflow-wrap:anywhere; border-radius:6px; padding:24px; border:1px solid var(--linha); background:var(--verde-700); box-shadow:0 4px 10px rgba(0,0,0,0.15); transition:transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; }
  .proj-card:hover{ transform:translateY(-5px); box-shadow:0 12px 26px rgba(0,0,0,0.35); }
  /* Paleta cíclica (3 cores) aplicada por índice do projeto na lista — repete
     a cada 3 cards, então o visual continua igual independente de quantos
     projetos existirem. */
  .proj-card.proj-color-1{ border-top:3px solid var(--verde-500); }
  .proj-card.proj-color-2{ border-top:3px solid var(--ocre-400); }
  .proj-card.proj-color-3{ border-top:3px solid var(--verde-200); }
  .proj-tag{ font-size:11px; text-transform:uppercase; letter-spacing:0.06em; font-weight:600; margin-bottom:12px; display:inline-block; padding:3px 9px; border-radius:2px; background:rgba(117,148,74,0.30); color:var(--papel); }
  .proj-color-1 .proj-tag{ background:rgba(117,148,74,0.30); color:var(--papel); }
  .proj-color-2 .proj-tag{ background:var(--ocre-400); color:var(--verde-900); }
  .proj-color-3 .proj-tag{ background:rgba(200,210,195,0.14); color:var(--papel); }
  .proj-card h3{ font-size:18px; margin-bottom:10px; color:var(--papel); }
  .proj-card p{ font-size:13px; color:var(--tinta-suave); margin-bottom:14px; }
  .proj-link{ font-size:13px; font-weight:600; color:var(--papel); border-bottom:1px solid var(--verde-500); padding-bottom:2px; cursor:pointer;}

  .noticias-grid{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
  .noticias-archive-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(280px,1fr)); gap:26px; }
  .noticia-card{ width:100%; border:1px solid var(--linha); border-radius:6px; overflow:hidden; background:var(--verde-700); cursor:pointer; transition:transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; }
  .noticia-card:hover{ transform:translateY(-6px); box-shadow:0 14px 30px rgba(0,0,0,0.35); }
  .noticia-body{ padding:16px 18px; }
  .noticia-body .date{ font-size:12px; color:var(--tinta-suave); margin-bottom:6px; }
  .noticia-body h4{ font-size:15px; font-weight:600; color:var(--papel); margin-bottom:6px;}
  .noticia-body p{ font-size:13px; color:var(--tinta-suave); }

  /* ---- CARROSSEL DE IMAGENS DA NOTÍCIA ---- */
  .noticia-carousel{ position:relative; height:200px; overflow:hidden; background:linear-gradient(135deg,var(--verde-700),var(--verde-500)); }
  .noticia-slide{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity 0.4s ease; }
  .noticia-slide.is-active{ opacity:1; }
  .car-arrow{
    position:absolute; top:50%; transform:translateY(-50%); z-index:2;
    width:28px; height:28px; border-radius:50%; border:none; cursor:pointer;
    background:rgba(33,37,41,0.45); color:#fff; font-size:16px; line-height:1;
    display:flex; align-items:center; justify-content:center;
  }
  .car-arrow:hover{ background:rgba(33,37,41,0.7); }
  .car-arrow.prev{ left:8px; }
  .car-arrow.next{ right:8px; }
  .car-dots{ position:absolute; bottom:8px; left:0; right:0; z-index:2; display:flex; justify-content:center; gap:6px; }
  .car-dot{ width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,0.55); cursor:pointer; }
  .car-dot.is-active{ background:#fff; }

  /* ---- QUEM SOMOS ---- */
  .sobre-grid{ display:grid; grid-template-columns:1fr 1fr; column-gap:120px; row-gap:44px; align-items:start; }
  .sobre-grid p{ font-size:14px; color:var(--tinta-suave); margin-bottom:14px; }
  .timeline{ position:relative; min-height:660px; }
  .tl-svg{ position:absolute; top:0; left:0; width:100%; height:100%; z-index:0; overflow:visible; pointer-events:none; }
  .tl-path{ fill:none; stroke:var(--verde-500); stroke-width:2; stroke-linecap:round; }
  .tl-path-mobile{ display:none; }
  /* a linha se desenha sozinha (tempo fixo), disparada pelo IntersectionObserver — ver .start-drawing */
  @keyframes drawLine{ from{ stroke-dashoffset:var(--tl-len); } to{ stroke-dashoffset:0; } }
  .tl-path.start-drawing{ animation:drawLine 3s ease-in-out forwards; }

  /* Cada nó (bolinha + texto) é ancorado manualmente sobre os vértices do path acima */
  .tl-item{ position:absolute; z-index:1; display:flex; align-items:flex-start; gap:15px; max-width:260px; }
  .tl-item:nth-of-type(1){ top:0%; left:8%; }
  .tl-item:nth-of-type(2){ top:22%; left:32%; }
  .tl-item:nth-of-type(3){ top:45%; left:8%; }
  .tl-item:nth-of-type(4){ top:68%; left:32%; }
  .tl-item:nth-of-type(5){ top:90%; left:8%; }

  .tl-item.hidden-scroll{ opacity:1; transform:none; } /* o item em si não desliza — só a bolinha e o texto abaixo */
  .tl-item::before{ content:""; flex:0 0 auto; width:9px; height:9px; margin-top:6px; border-radius:50%; background:var(--ocre-400); transform:scale(1); box-shadow:0 0 0 rgba(217,178,76,0); transition:transform 0.5s cubic-bezier(0.68,-0.55,0.265,1.55), box-shadow 0.3s ease; }
  .tl-item.hidden-scroll::before{ transform:scale(0); }
  .tl-text b{ display:block; font-size:15px; color:var(--papel); margin-bottom:3px; transition:opacity 0.5s ease, transform 0.5s ease; }
  .tl-text span{ font-size:13px; color:var(--tinta-suave); display:inline-block; transition:opacity 0.5s ease, transform 0.5s ease; }
  .tl-item.hidden-scroll .tl-text b, .tl-item.hidden-scroll .tl-text span{ opacity:0; transform:translateX(-20px); }
  .tl-item.show-scroll::before{ transform:scale(1); }
  .tl-item.show-scroll .tl-text b, .tl-item.show-scroll .tl-text span{ opacity:1; transform:translateX(0); }

  /* Atraso progressivo: cada item surge no instante em que a ponta da linha passa por ele */
  .tl-item:nth-of-type(1).show-scroll::before, .tl-item:nth-of-type(1).show-scroll .tl-text b, .tl-item:nth-of-type(1).show-scroll .tl-text span{ transition-delay:0.5s; }
  .tl-item:nth-of-type(2).show-scroll::before, .tl-item:nth-of-type(2).show-scroll .tl-text b, .tl-item:nth-of-type(2).show-scroll .tl-text span{ transition-delay:1.2s; }
  .tl-item:nth-of-type(3).show-scroll::before, .tl-item:nth-of-type(3).show-scroll .tl-text b, .tl-item:nth-of-type(3).show-scroll .tl-text span{ transition-delay:2.0s; }
  .tl-item:nth-of-type(4).show-scroll::before, .tl-item:nth-of-type(4).show-scroll .tl-text b, .tl-item:nth-of-type(4).show-scroll .tl-text span{ transition-delay:2.6s; }
  .tl-item:nth-of-type(5).show-scroll::before, .tl-item:nth-of-type(5).show-scroll .tl-text b, .tl-item:nth-of-type(5).show-scroll .tl-text span{ transition-delay:3s; }

  .tl-item:hover::before{ transform:scale(1.2); box-shadow:0 0 10px rgba(217,178,76,0.7); transition-delay:0s !important; }
  .tl-item:hover .tl-text span{ opacity:0.8; transition-delay:0s !important; }

  .capacidade-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
  .capacidade-card{ border:1px solid var(--linha); border-radius:6px; padding:22px; background:var(--verde-700); box-shadow:0 4px 10px rgba(0,0,0,0.15); transition:transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; }
  .capacidade-card:hover{ transform:translateY(-5px); box-shadow:0 12px 26px rgba(0,0,0,0.35); }
  .capacidade-icon{ width:38px; height:38px; border-radius:50%; background:rgba(117,148,74,0.35); color:var(--papel); display:flex; align-items:center; justify-content:center; font-weight:600; font-size:14px; margin-bottom:14px; }
  .capacidade-card h3{ font-size:15px; color:var(--papel); margin-bottom:8px; font-weight:600; }
  .capacidade-card p{ font-size:13px; color:var(--tinta-suave); }

  .apoio-subhead{ font-size:12px; text-transform:uppercase; letter-spacing:0.06em; font-weight:600; color:var(--ocre-400); margin-bottom:16px; }
  .apoio-grid{ display:flex; justify-content:flex-start; align-items:center; margin-bottom:36px; }
  .apoio-logo{ max-width:180px; max-height:80px; width:auto; height:auto; object-fit:contain; background:var(--papel); border-radius:6px; padding:10px 16px; }

  .parceiros-grid{ display:flex; flex-wrap:wrap; justify-content:flex-start; align-items:center; gap:40px; }
  .parceiro-logo{ max-width:160px; max-height:70px; width:auto; height:auto; object-fit:contain; background:var(--papel); border-radius:6px; padding:8px 14px; }

  /* ---- TRANSPARENCIA ---- */
  .editais-destaque{
    display:flex; align-items:center; justify-content:space-between; gap:24px;
    background:linear-gradient(135deg, var(--verde-700), var(--verde-950));
    border:1px solid var(--ocre-400); border-radius:8px;
    padding:28px 32px; margin-bottom:28px; cursor:pointer;
    box-shadow:0 8px 22px rgba(0,0,0,0.25);
    transition:transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, border-color 0.3s ease-in-out;
  }
  .editais-destaque:hover{ transform:translateY(-4px); box-shadow:0 16px 34px rgba(0,0,0,0.4); border-color:var(--ocre-600); }
  .editais-destaque-tag{ font-size:11px; text-transform:uppercase; letter-spacing:0.06em; font-weight:600; color:var(--verde-900); background:var(--ocre-400); padding:3px 10px; border-radius:2px; display:inline-block; margin-bottom:10px; }
  .editais-destaque h3{ font-size:20px; color:var(--papel); margin-bottom:6px; }
  .editais-destaque p{ font-size:14px; color:var(--verde-200); max-width:48ch; }
  .editais-destaque-seta{ font-size:22px; color:var(--ocre-400); flex-shrink:0; transition:transform 0.3s ease-in-out; }
  .editais-destaque:hover .editais-destaque-seta{ transform:translateX(6px); }

  .transp-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
  .transp-item{ border:1px solid var(--linha); border-radius:4px; padding:18px; font-size:13px; color:var(--tinta-suave); cursor:pointer; background:var(--verde-700); box-shadow:0 4px 10px rgba(0,0,0,0.15); transition:transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, border-color 0.3s ease-in-out; }
  .transp-item:hover{ border-color:var(--verde-500); transform:translateY(-5px); box-shadow:0 12px 26px rgba(0,0,0,0.35); }
  .transp-item b{ display:block; color:var(--papel); font-size:14px; margin-bottom:4px; font-weight:600; }

  .doclist{ display:flex; flex-direction:column; gap:1px; background:var(--linha); border-radius:4px; overflow:hidden; border:1px solid var(--linha);}
  .doc-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; background:var(--verde-700); padding:13px 16px; transition:filter 0.3s ease-in-out; }
  .doc-row:hover{ filter:brightness(1.15); }
  .doc-row .title{ font-size:14px; color:var(--papel); }
  .doc-row .date{ font-size:12px; color:var(--tinta-suave); }
  .doc-row .dl{ font-size:13px; font-weight:600; color:#e3c579; /* ouro um pouco mais claro: contraste 4.7:1 sobre o verde dos cards (era 3.9:1) */ border-bottom:1px solid var(--ocre-400); padding-bottom:1px; flex-shrink:0; }

  /* ---- EDITAIS ---- */
  .editais-section{ background:var(--verde-700); color:var(--papel); border-radius:8px; padding:44px 40px 48px; }
  .editais-section .section-head h1, .editais-section .section-head h2{ color:var(--papel); }
  .editais-section .section-head p{ color:var(--verde-200); }
  .tabs{ display:flex; gap:8px; margin-bottom:26px; flex-wrap:wrap; }
  .tab{ padding:9px 16px; border-radius:20px; font-size:13px; font-weight:600; border:1px solid rgba(240,238,226,0.28); color:var(--verde-200); cursor:pointer; background:transparent; }
  .tab.is-active{ background:var(--papel); color:var(--verde-900); border-color:var(--papel); }
  .tab .dot{ display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:7px; vertical-align:middle; }
  .tab[data-tab="merenda"] .dot{ background:var(--verde-500); }
  .tab[data-tab="farinha"] .dot{ background:var(--ocre-400); }
  .tab[data-tab="geral"] .dot{ background:var(--verde-200); }
  /* Abas criadas automaticamente por cada projeto novo (js/main.js). */
  .tab.tab-projeto .dot{ background:var(--papel); }
  .edital-toolbar{ display:flex; align-items:center; justify-content:flex-end; gap:9px; margin-bottom:14px; }
  .edital-toolbar label{ font-size:12px; color:var(--verde-200); }
  .edital-toolbar select{
    padding:7px 10px; border-radius:6px; border:1px solid rgba(240,238,226,0.28);
    background:var(--verde-900); color:var(--papel); font-family:'Public Sans',sans-serif; font-size:13px; cursor:pointer;
  }
  .edital-toolbar select:focus{ outline:none; border-color:var(--ocre-400); }

  .edital-list{ display:flex; flex-direction:column; gap:1px; background:rgba(240,238,226,0.14); border-radius:4px; max-height:620px; overflow-y:auto; }

  .edital-paginacao{ display:none; align-items:center; justify-content:center; flex-wrap:wrap; gap:6px; margin-top:20px; }
  .pagina-btn{
    min-width:34px; height:34px; padding:0 10px; border-radius:8px; border:1px solid rgba(240,238,226,0.28);
    background:transparent; color:var(--verde-200); font-family:'Public Sans',sans-serif; font-size:13px; font-weight:600; cursor:pointer;
    transition:background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  }
  .pagina-btn:hover:not(:disabled){ border-color:var(--ocre-400); color:var(--papel); }
  .pagina-btn.is-active{ background:var(--ocre-400); color:var(--verde-900); border-color:var(--ocre-400); }
  .pagina-btn:disabled{ opacity:0.35; cursor:default; }
  .edital-row{ display:none; background:var(--verde-900); padding:14px 16px; align-items:center; justify-content:space-between; gap:16px; transition:filter 0.3s ease-in-out; }
  .edital-row.show{ display:flex; }
  .edital-row:hover{ filter:brightness(1.3); }
  .edital-left{ display:flex; align-items:center; gap:12px; min-width:0; }
  .edital-left .num{ font-size:13px; color:var(--verde-200); min-width:56px; }
  .edital-left .title{ font-size:14px; color:var(--papel); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .edital-right{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
  .badge{ font-size:11px; padding:3px 9px; border-radius:20px; font-weight:600; }
  /* Editais — destaque para status ativos, cor própria para Resultado,
     tons neutros graduados (do mais claro ao mais "fechado") para os
     status de encerramento. */
  .badge.aberto{ background:var(--ocre-400); color:var(--verde-900); }
  /* Contraste do texto dos selos (mínimo 4.5:1): prorrogado usa texto escuro; resultado e
     aprovado usam um oliva um pouco mais escuro que --verde-500 (#75944a). */
  .badge.prorrogado{ background:var(--ocre-600); color:var(--verde-950); }
  .badge.resultado{ background:#5a7639; color:var(--papel); }
  .badge.encerrado{ background:rgba(0,0,0,0.18); color:var(--verde-200); }
  .badge.deserto{ background:rgba(0,0,0,0.30); color:var(--verde-200); }
  .badge.cancelado{ background:rgba(0,0,0,0.42); color:var(--verde-200); }
  .badge.aprovado{ background:#5a7639; color:var(--papel); }
  .badge.analise{ background:var(--ocre-400); color:var(--verde-900); }
  .badge.pendente{ background:rgba(0,0,0,0.18); color:var(--verde-200); }
  .dl-e{ font-size:13px; font-weight:600; color:var(--ocre-400); border-bottom:1px solid rgba(217,178,76,0.5); padding-bottom:1px; }

  /* ---- CONTATO ---- */
  .contato-grid{ display:grid; grid-template-columns:1fr 1fr; gap:40px; }
  .info-row{ display:flex; gap:10px; font-size:14px; color:var(--tinta-suave); margin-bottom:12px; }
  .info-row b{ color:var(--papel); min-width:90px; }
  .form-field{ margin-bottom:14px; }
  .form-field label{ font-size:12px; color:var(--tinta-suave); display:block; margin-bottom:5px; }
  .form-field input, .form-field textarea{ width:100%; padding:10px 12px; border:1px solid var(--linha); border-radius:3px; font-family:'Public Sans',sans-serif; font-size:14px; background:var(--verde-700); color:var(--tinta); }
  .form-field input:focus, .form-field textarea:focus{ outline:none; border-color:var(--ocre-400); }
  .form-field textarea{ resize:vertical; }
  .form-error{ display:none; font-size:12px; color:var(--erro); margin-top:5px; }
  .form-field.has-error input, .form-field.has-error textarea{ border-color:var(--erro); }
  .form-field.has-error .form-error{ display:block; }
  #contato-recaptcha-field{ margin-bottom:18px; }
  #contato-form .btn-primary{ border:none; width:100%; text-align:center; margin-top:6px; font-family:'Public Sans',sans-serif; }
  #contato-form .btn-primary:disabled{ opacity:0.6; cursor:not-allowed; }

  /* ---- TOAST (feedback de envio do formulário) ---- */
  .toast{
    position:fixed; left:50%; bottom:28px; transform:translateX(-50%) translateY(16px);
    background:var(--verde-700); color:var(--papel); border:1px solid var(--ocre-400);
    border-radius:8px; padding:14px 24px; font-size:14px; font-weight:600; max-width:min(90vw, 420px);
    text-align:center; box-shadow:0 12px 30px rgba(0,0,0,0.35);
    opacity:0; pointer-events:none; transition:opacity 0.3s ease, transform 0.3s ease; z-index:60;
  }
  .toast.is-visible{ opacity:1; transform:translateX(-50%) translateY(0); }
  .toast.toast-erro{ border-color:var(--erro); }

  footer{ background:var(--papel-alt); border-top:1px solid var(--linha); padding:40px 0 28px; margin-top:20px; }
  .foot-grid{ display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:32px; margin-bottom:28px; }
  footer h5{ font-size:12px; text-transform:uppercase; letter-spacing:0.06em; color:var(--ocre-400); margin-bottom:12px; }
  footer .flinks{ display:flex; flex-direction:column; gap:8px; font-size:13px; color:var(--tinta-suave); }
  footer .flinks a{ cursor:pointer; }
  /* O box de toque tem 44px e o glifo 20px: o recuo de 12px alinha a borda
     esquerda do ícone com o texto da coluna, sem reduzir a área de toque. */
  footer .social-link{ margin:14px 0 0 -12px; }
  .foot-bottom{ font-size:12px; color:var(--tinta-suave); border-top:1px solid var(--linha); padding-top:18px; text-align:center; }

  /* ---- ARQUIVO DE NOTÍCIAS (noticias.html) ---- */
  .noticias-archive-vazio{ font-size:13px; color:var(--tinta-suave); padding:18px 2px; }

  /* ---- MATÉRIA COMPLETA (materia.html) — editorial, com muito white space ---- */
  .materia-topo{ padding:56px 0 20px; }
  .materia-voltar{ display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--papel); border:1px solid var(--linha); border-radius:999px; padding:9px 18px; margin-bottom:32px; transition:border-color 0.3s ease-in-out, transform 0.3s ease-in-out; }
  .materia-voltar:hover{ border-color:var(--ocre-400); transform:translateX(-3px); }
  .materia-cabecalho{ display:flex; align-items:flex-start; gap:20px; max-width:820px; }
  .materia-capa-wrap{ flex:0 0 auto; width:64px; height:64px; border-radius:10px; overflow:hidden; background:var(--verde-700); box-shadow:0 6px 16px rgba(0,0,0,0.25); }
  .materia-capa{ width:100%; height:100%; object-fit:contain; display:block; }
  .materia-cabecalho-texto{ flex:1 1 auto; min-width:0; }
  .materia-cabecalho h1{ font-size:38px; line-height:1.18; color:var(--papel); margin-bottom:14px; overflow-wrap:anywhere; }
  .materia-data{ font-size:13px; color:var(--tinta-suave); text-transform:uppercase; letter-spacing:0.06em; }

  /* ---- Layout de 2 colunas: mídia (fotos/vídeo) ao lado do texto ---- */
  .materia-layout{ display:grid; grid-template-columns:340px 1fr; gap:44px; align-items:start; margin:48px 0 60px; }
  .materia-layout.sem-midia{ grid-template-columns:1fr; }
  .materia-layout.sem-midia .materia-midia{ display:none; }

  .materia-midia{ display:flex; flex-direction:column; gap:20px; position:sticky; top:88px; }
  .materia-midia-item img{ width:100%; max-height:420px; object-fit:cover; display:block; border-radius:8px; box-shadow:0 12px 30px rgba(0,0,0,0.25); }
  /* Padrão: assume vídeo horizontal (16:9) até sabermos a orientação real. */
  .materia-midia-video{ width:100%; aspect-ratio:16/9; border-radius:8px; overflow:hidden; background:#000; box-shadow:0 12px 30px rgba(0,0,0,0.25); }
  .materia-midia-video video{ width:100%; height:100%; object-fit:contain; display:block; background:#000; }

  /* Vídeo vertical (celular, 9:16): abandona a caixa 16:9 com letterbox e assume
     o formato retrato natural, como um card — sem barras pretas laterais. A
     classe é aplicada via JS assim que os metadados do vídeo carregam. */
  .materia-midia-video.video-vertical{ width:100%; max-width:450px; aspect-ratio:auto; max-height:80vh; margin-inline:auto; background:transparent; box-shadow:none; }
  .materia-midia-video.video-vertical video{ width:100%; height:auto; max-height:80vh; object-fit:cover; border-radius:8px; box-shadow:0 12px 30px rgba(0,0,0,0.25); }

  /* min-width:0 evita o mesmo "grid blowout" corrigido em .proj-card: sem
     isso, um título/texto sem espaços força a coluna .materia-corpo (1fr) do
     grid .materia-layout a alargar, empurrando a galeria de fotos ao lado. */
  .materia-corpo{ min-width:0; overflow-wrap:anywhere; max-width:70ch; font-size:17px; line-height:1.9; color:var(--tinta); }
  .materia-corpo p{ margin-bottom:24px; }
  .materia-corpo p:last-child{ margin-bottom:0; }

  .materia-estado{ display:none; padding:120px 0; text-align:center; }
  .materia-estado.is-visible{ display:block; }
  .materia-estado h2{ font-size:26px; color:var(--papel); margin-bottom:14px; }
  .materia-estado p{ font-size:14px; color:var(--tinta-suave); margin-bottom:24px; }

  /* projeto.html (detalhe do projeto) reaproveita integralmente as classes
     .materia-* acima — mesma lógica/layout da página de notícias (galeria de
     fotos empilhada ao lado do texto), sem CSS próprio adicional. */

  /* ---- TEXTO INSTITUCIONAL (bloco estático de leitura, sem lista de PDFs) ---- */
  .texto-institucional{ max-width:64ch; font-size:16px; line-height:1.9; color:var(--tinta-suave); }
  .texto-institucional p{ margin-bottom:20px; }
  .texto-institucional p:last-child{ margin-bottom:0; }

  .page{ display:none; }
  .page.is-active{ display:block; }

  @media (max-width:900px){
    .materia-layout{ grid-template-columns:1fr; }
    .materia-midia{ position:static; }
    .materia-midia-item img{ max-height:320px; }
  }

  @media (max-width:760px){
    .hero-inner, .noticias-grid, .foot-grid, .sobre-grid, .contato-grid{ grid-template-columns:1fr; }
    .sobre-grid{ column-gap:44px; } /* empilhado em 1 coluna no mobile — mantém o espaçamento padrão, sem o empurrão do desktop */
    .projetos-grid, .transp-grid, .capacidade-grid{ grid-template-columns:1fr 1fr; }
    .nav-toggle{ display:flex; }
    .navlinks{
      position:absolute; top:100%; left:0; right:0; z-index:19;
      flex-direction:column; gap:0; margin:0;
      background:var(--verde-950); border-bottom:1px solid var(--linha); box-shadow:0 10px 24px rgba(0,0,0,0.3);
      padding:0 32px; max-height:0; overflow:hidden; opacity:0; pointer-events:none;
      transition:max-height 0.3s ease-in-out, opacity 0.25s ease-in-out, padding 0.3s ease-in-out;
    }
    .navlinks.is-open{ max-height:320px; opacity:1; pointer-events:auto; padding:8px 32px 18px; }
    .navlinks a{ padding:12px 0; border-bottom:1px solid var(--linha); }
    .navlinks a:last-child{ border-bottom:none; }
    .hero h1{ font-size:30px; }
    .editais-section{ padding:30px 18px; }
    .edital-toolbar{ justify-content:flex-start; }
    .edital-list{ max-height:60vh; }
    .pagina-btn{ min-width:30px; height:30px; padding:0 8px; font-size:12px; }
    .apoio-logo, .parceiro-logo{ max-width:120px; max-height:56px; }
    .parceiros-grid{ gap:24px; }
    .tl-path-desktop{ display:none; }
    .tl-path-mobile{ display:block; }
    .timeline{ min-height:760px; }
    .tl-item{ max-width:72%; }
    .tl-item:nth-of-type(1){ left:4%; }
    .tl-item:nth-of-type(2){ left:24%; }
    .tl-item:nth-of-type(3){ left:4%; }
    .tl-item:nth-of-type(4){ left:24%; }
    .tl-item:nth-of-type(5){ left:4%; }
    .editais-destaque{ flex-direction:column; align-items:flex-start; gap:14px; padding:24px; }
    .editais-destaque-seta{ align-self:flex-end; }
    .materia-cabecalho h1{ font-size:28px; }
    .materia-capa-wrap{ width:48px; height:48px; }
  }

  @media (max-width:360px){
    #contato-recaptcha{ transform:scale(0.87); transform-origin:0 0; }
  }

  /* ---- ACESSIBILIDADE ---- */
  /* Link "Ir para o conteúdo": invisível até receber foco pelo teclado (Tab). */
  .skip-link{ position:absolute; left:16px; top:-64px; z-index:100; background:var(--ocre-400); color:var(--verde-900); padding:10px 16px; border-radius:6px; font-size:14px; font-weight:600; transition:top 0.2s ease; }
  .skip-link:focus{ top:12px; }

  /* Anel de foco só para navegação por teclado (:focus-visible não aparece ao clicar com o mouse). */
  a:focus-visible, button:focus-visible, [tabindex="0"]:focus-visible{ outline:2px solid var(--ocre-400); outline-offset:3px; }
  .noticia-body:focus-visible{ outline-offset:-3px; }
  .btn-primary:focus-visible, .skip-link:focus-visible{ outline-color:var(--papel); }

  /* Elementos que só recebem foco por script (conteúdo principal e títulos de seção) não mostram anel. */
  [tabindex="-1"]:focus, [tabindex="-1"]:focus-visible{ outline:none; }

  /* Quem pede "reduzir movimento" no sistema recebe o site sem animações: o conteúdo
     aparece direto no estado final, nada some nem muda de lugar. */
  @media (prefers-reduced-motion: reduce){
    *, *::before, *::after{
      animation-duration:0.01ms !important; animation-delay:0s !important; animation-iteration-count:1 !important;
      transition-duration:0.01ms !important; transition-delay:0s !important; scroll-behavior:auto !important;
    }
  }
