/* ============================================================
   ESCRITÓRIO DE PROJETOS (2026) — estilo do miolo da página
   Portado do protótipo v3 (proximos-passos/escritorio-de-projetos/prototipo-v3),
   revisado com o André em 18/09/2026. Carregado só pelo modelo de página
   page-escritorio-de-projetos.php.

   Isolamento: toda classe tem o prefixo ep-, toda regra começa em .ep-page e
   as variáveis são --ep-* na raiz, não no :root. Nada aqui alcança o header ou
   o footer do tema. O arquivo fica fora das camadas do Tailwind 4, então vence
   o reset do tema sem !important — por isso regras que o protótipo herdava do
   navegador (ex.: sublinhado dos links) estão declaradas aqui.
   ============================================================ */

/* ============================================================
   TOKENS — Manual da Marca Inova UFES (ago/2026)
   Neutros e cores de sistema conforme a prévia do design system
   ============================================================ */
.ep-page{
  --ep-azul-es:#1daee5;
  --ep-azul-ufes:#144477;
  --ep-verde-inovacao:#43afa3;
  --ep-amarelo-agilid:#eacc1b;
  --ep-laranja-artic:#f58220;
  --ep-vermelho-social:#de3545;

  --ep-gray-0:#ffffff;  --ep-gray-50:#f9fafb; --ep-gray-100:#f0f2f5;
  --ep-gray-200:#e1e5ea; --ep-gray-300:#c5cbd3; --ep-gray-400:#98a1ae;
  --ep-gray-500:#6e7a8c; --ep-gray-600:#505b6d; --ep-gray-700:#384152;
  --ep-gray-800:#212836; --ep-gray-900:#121721;

  --ep-font-display:'Bricolage Grotesque','Arial Black',sans-serif;
  --ep-font-body:'Ufes Sans','Fira Sans',system-ui,sans-serif;

  --ep-ink:var(--ep-gray-900);
  --ep-ink-soft:var(--ep-gray-600);
  --ep-paper:var(--ep-gray-0);
  --ep-line:var(--ep-gray-200);

  --ep-r:14px;
  --ep-shadow-sm:0 1px 2px rgba(18,23,33,.06), 0 1px 3px rgba(18,23,33,.04);
  --ep-shadow-md:0 4px 6px -1px rgba(18,23,33,.07), 0 12px 24px -8px rgba(20,68,119,.12);
  --ep-shadow-lg:0 12px 32px -8px rgba(20,68,119,.18);
}

.ep-page, .ep-page *, .ep-page *::before, .ep-page *::after{box-sizing:border-box}
.ep-page{
  margin:0; background:var(--ep-paper); color:var(--ep-ink);
  font-family:var(--ep-font-body); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.ep-page h1, .ep-page h2, .ep-page h3, .ep-page h4{font-family:var(--ep-font-display); color:inherit; margin:0; line-height:1.08; letter-spacing:-.02em}
.ep-page p{margin:0}
/* o tema aplica fonte, cor, tamanho e entrelinha direto em h1-h6, p, span e li (@layer base
   de styles/input.css), e regra direta vence herança: aqui eles voltam a herdar da página */
.ep-page p, .ep-page span, .ep-page li{font-family:inherit}
.ep-page p{color:inherit; font-size:inherit; line-height:inherit; font-weight:inherit}
.ep-page a{color:inherit; text-decoration:underline}
.ep-page button{font:inherit; color:inherit; background:none; border:0; cursor:pointer}
.ep-page :focus-visible{outline:3px solid var(--ep-azul-es); outline-offset:3px; border-radius:4px}
.ep-page .ep-eyebrow{
  font-family:var(--ep-font-body); font-size:.75rem; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--ep-azul-es);
}

/* ============================================================
   HERO
   ============================================================ */
.ep-page .ep-hero{padding:72px 0 0; position:relative; overflow:hidden; isolation:isolate}
.ep-page .ep-hero::before{
  content:''; position:absolute; inset:0 0 auto 0; height:420px; z-index:-1;
  background:radial-gradient(1100px 380px at 12% -18%, rgba(29,174,229,.13), transparent 62%);
}
.ep-page .ep-hero h1{font-size:clamp(2.4rem,6vw,4.1rem); font-weight:800; max-width:25ch; margin:18px 0 0}
.ep-page .ep-hero h1 em{font-style:normal; color:var(--ep-azul-ufes)}
.ep-page .ep-hero-lead{margin-top:22px; max-width:80ch; font-size:1.13rem; color:var(--ep-gray-600)}
.ep-page .ep-hero-actions{display:flex; gap:14px; flex-wrap:wrap; margin-top:34px}

.ep-page .ep-btn{
  display:inline-flex; align-items:center; gap:10px;
  padding:15px 26px; border-radius:var(--ep-r);
  font-weight:700; font-size:1rem; text-decoration:none;
  transition:transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.ep-page .ep-btn-primary{background:var(--ep-azul-ufes); color:#fff; box-shadow:var(--ep-shadow-md)}
.ep-page .ep-btn-primary:hover{background:#0f3560; transform:translateY(-2px); box-shadow:var(--ep-shadow-lg)}
.ep-page .ep-btn-ghost{background:var(--ep-gray-0); color:var(--ep-azul-ufes); box-shadow:inset 0 0 0 2px var(--ep-gray-200)}
.ep-page .ep-btn-ghost:hover{box-shadow:inset 0 0 0 2px var(--ep-azul-es); transform:translateY(-2px)}
.ep-page .ep-btn-arrow{transition:transform .18s ease}
.ep-page .ep-btn:hover .ep-btn-arrow{transform:translateX(3px)}

/* faixa de cores da marca */
.ep-page .ep-brandbar{display:flex; height:6px; margin-top:64px; border-radius:99px; overflow:hidden}
.ep-page .ep-brandbar i{flex:1}
.ep-page .ep-brandbar i:nth-child(1){background:var(--ep-azul-ufes)}
.ep-page .ep-brandbar i:nth-child(2){background:var(--ep-azul-es)}
.ep-page .ep-brandbar i:nth-child(3){background:var(--ep-verde-inovacao)}
.ep-page .ep-brandbar i:nth-child(4){background:var(--ep-amarelo-agilid)}
.ep-page .ep-brandbar i:nth-child(5){background:var(--ep-laranja-artic)}
.ep-page .ep-brandbar i:nth-child(6){background:var(--ep-vermelho-social)}

/* ============================================================
   SEÇÕES
   ============================================================ */
.ep-page .ep-band{padding:84px 0}
.ep-page .ep-band-compact{padding:58px 0}
.ep-page .ep-band-tint{background:var(--ep-gray-50); border-block:1px solid var(--ep-line)}
/* 70ch (era 62ch): com a coluna de 1216px, o título do quiz quebrava em linhas curtas demais (Breno, 21/09) */
.ep-page .ep-band-head{max-width:70ch; margin-bottom:44px}
.ep-page .ep-band-head h2{font-size:clamp(1.75rem,3.4vw,2.5rem); font-weight:700; margin:12px 0 0}
.ep-page .ep-band-head p{margin-top:16px; color:var(--ep-gray-600); font-size:1.06rem}

/* ============================================================
   FUNDO ANIMADO DA TRILHA
   DotField (React Bits) reescrito em vanilla: malha de pontos que se
   abre sob o cursor. Fica atrás do conteúdo e é puramente decorativo —
   a seção continua legível se o canvas não carregar.

   React Bits — Copyright (c) 2026 David Haz
   MIT + Commons Clause: uso livre dentro de um site ou produto, inclusive
   adaptado; o que a cláusula proíbe é vender ou redistribuir os próprios
   componentes. https://github.com/DavidHDev/react-bits
   ============================================================ */
.ep-page .ep-band{position:relative; isolation:isolate}
.ep-page .ep-band > .ep-wrap{position:relative; z-index:1}
/* Espelha o brilho do hero, do outro lado: lá o azul nasce no canto superior
   esquerdo, aqui no direito. Duas camadas — azul-es no canto e verde inovação
   um pouco abaixo e à esquerda — para dar profundidade sem virar arco-íris.
   Vai como background-image da própria seção, não como pseudo-elemento: assim
   fica naturalmente sob o canvas dos pontos, sem depender de z-index. */
.ep-page #trilha{
  background-image:
    radial-gradient(980px 420px at 92% -14%, rgba(29,174,229,.18), transparent 60%),
    radial-gradient(620px 400px at 68% 6%,  rgba(67,175,163,.12), transparent 64%);
  background-repeat:no-repeat;
}

.ep-page .ep-fx{position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none}
.ep-page .ep-fx canvas{position:absolute; inset:0; width:100%; height:100%; display:block}
/* opacity é o botão de volume do efeito */
.ep-page .ep-fx-dots{opacity:.5}
@media(prefers-reduced-motion:reduce){ .ep-page .ep-fx{display:none} }

/* ============================================================
   ÁRVORE DAS PERGUNTAS — ilustração ao lado do título do quiz
   Só o que não anima fica aqui. A cor da origem, o rastro, os pontos e a
   borda das pílulas animam em SMIL e levam o valor de repouso como atributo
   no próprio SVG: uma regra de CSS nessas propriedades disputaria com a
   animação, e cada navegador resolve essa disputa de um jeito.
   Tamanhos: lado a lado acima de 1080px; embaixo do texto até 1080px;
   versão vertical até 640px (Breno, 21/09)
   ============================================================ */
.ep-page .ep-trilha-head{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,540px);
  gap:56px; align-items:center; margin-bottom:44px;
}
.ep-page .ep-trilha-head .ep-band-head{margin-bottom:0}
.ep-page .ep-arvore svg{display:block; width:100%; height:auto; overflow:visible}
.ep-page .ep-arvore .ep-arvore-v{display:none}
@media(max-width:1080px){
  .ep-page .ep-trilha-head{grid-template-columns:1fr; gap:28px}
  .ep-page .ep-arvore{max-width:540px}
}
@media(max-width:640px){
  .ep-page .ep-arvore{max-width:360px}
  .ep-page .ep-arvore .ep-arvore-h{display:none}
  .ep-page .ep-arvore .ep-arvore-v{display:block}
}
.ep-page .ep-arvore-tronco{fill:none; stroke:var(--ep-gray-400); stroke-width:2.5; stroke-linecap:round}
.ep-page .ep-arvore-ramo{fill:none; stroke-width:2.5; stroke-linecap:round; stroke-opacity:.3}
.ep-page .ep-arvore-rastro{fill:none; stroke-width:3; stroke-linecap:round; stroke-linejoin:round}
.ep-page .ep-arvore-porta{stroke:var(--ep-gray-400); stroke-width:1.5; stroke-dasharray:2 6; stroke-linecap:round}
.ep-page .ep-arvore-origem{stroke-width:2.5}
.ep-page .ep-arvore-q{fill:var(--ep-gray-0); stroke:var(--ep-azul-ufes); stroke-width:2.5}
.ep-page .ep-arvore-num{font-family:var(--ep-font-display); font-size:13px; font-weight:700; fill:var(--ep-azul-ufes); text-anchor:middle}
.ep-page .ep-arvore-num-sm{font-size:11.5px}
.ep-page .ep-arvore-lbl{font-family:var(--ep-font-body); font-size:12.5px; font-weight:600; letter-spacing:.01em; fill:var(--ep-gray-500)}
.ep-page .ep-arvore-resp{font-family:var(--ep-font-body); font-size:11.5px; font-weight:500; font-style:italic; fill:var(--ep-gray-400)}
.ep-page .ep-arvore-pilula rect{fill:var(--ep-gray-0)}
.ep-page .ep-arvore-pilula text{font-family:var(--ep-font-body); font-size:12.5px; font-weight:700; fill:var(--ep-gray-800)}

/* ============================================================
   O QUE É O ESCRITÓRIO — contextualização curta antes do quiz
   ============================================================ */
.ep-page .ep-about{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:56px; align-items:start}
@media(max-width:900px){ .ep-page .ep-about{grid-template-columns:1fr; gap:34px} }
.ep-page .ep-about h2{font-size:clamp(1.5rem,3vw,2.05rem); font-weight:700; margin:12px 0 0}
.ep-page .ep-about-lead{margin-top:16px; color:var(--ep-gray-700); font-size:1.03rem}
.ep-page .ep-about-list{list-style:none; margin:0; padding:0; display:grid; gap:14px}
.ep-page .ep-about-list li{
  padding:18px 20px; border-radius:var(--ep-r); background:var(--ep-gray-0);
  box-shadow:inset 0 0 0 1px var(--ep-line), var(--ep-shadow-sm);
  border-left:4px solid var(--ep-accent,var(--ep-azul-es));
}
.ep-page .ep-about-list b{display:block; font-family:var(--ep-font-display); font-size:1.02rem; font-weight:700}
.ep-page .ep-about-list span{display:block; margin-top:6px; font-size:.92rem; color:var(--ep-gray-600); line-height:1.5}

/* ============================================================
   ★ SIGNATURE — A TRILHA
   ============================================================ */
.ep-page .ep-trail{position:relative; padding-left:52px}
/* a linha é pseudo-elemento do .trail: sem z-index explícito ela seria pintada
   depois dos marcadores e passaria por cima deles */
.ep-page .ep-trail::before{
  content:''; position:absolute; left:17px; top:14px; width:2px; z-index:0;
  height:var(--ep-trail-track,100%); background:var(--ep-gray-200); border-radius:2px;
}
.ep-page .ep-trail::after{
  content:''; position:absolute; left:17px; top:14px; width:2px; border-radius:2px; z-index:0;
  height:var(--ep-trail-fill,0px); background:var(--ep-trail-color,var(--ep-azul-es));
  transition:height .5s cubic-bezier(.22,.9,.3,1), background-color .4s ease;
}
@media(max-width:640px){ .ep-page .ep-trail{padding-left:34px} .ep-page .ep-trail::before, .ep-page .ep-trail::after{left:9px} }

.ep-page .ep-step{position:relative; z-index:1; padding-bottom:34px}
.ep-page .ep-step[hidden]{display:none}
.ep-page .ep-step-dot{
  position:absolute; left:-52px; top:2px; width:36px; height:36px; border-radius:50%;
  display:grid; place-items:center; background:var(--ep-gray-0);
  box-shadow:inset 0 0 0 2px var(--ep-gray-200);
  font-family:var(--ep-font-display); font-weight:700; font-size:.95rem; line-height:1; color:var(--ep-gray-400);
  transition:box-shadow .3s ease, color .3s ease, background-color .3s ease;
}
.ep-page .ep-step-dot svg{width:16px; height:16px; display:block}
.ep-page .ep-step-dot span{display:block; transform:translateY(.5px)}
.ep-page .ep-step.ep-is-active .ep-step-dot{box-shadow:inset 0 0 0 2px var(--ep-azul-ufes); color:var(--ep-azul-ufes)}
.ep-page .ep-step.ep-is-done .ep-step-dot{background:var(--ep-azul-ufes); box-shadow:inset 0 0 0 2px var(--ep-azul-ufes); color:#fff}
@media(max-width:640px){ .ep-page .ep-step-dot{left:-34px; width:20px; height:20px; font-size:.7rem} }

.ep-page .ep-step-q{font-family:var(--ep-font-display); font-size:clamp(1.25rem,2.4vw,1.6rem); font-weight:700; padding-top:2px}
/* gray-600, não gray-500: o tom anterior dava 4.16:1 sobre o fundo da seção,
   abaixo de AA mesmo antes do fundo animado entrar */
.ep-page .ep-step-help{margin-top:8px; color:var(--ep-gray-600); font-size:.94rem; max-width:60ch}

.ep-page .ep-opts{display:grid; gap:12px; margin-top:20px; grid-template-columns:repeat(auto-fit,minmax(232px,1fr))}
/* flex em coluna: sem isso o <button> centraliza o conteúdo na vertical, e numa
   linha com descrições de tamanhos diferentes os títulos ficam desalinhados */
.ep-page .ep-opt{
  display:flex; flex-direction:column; justify-content:flex-start;
  text-align:left; padding:18px 20px; border-radius:var(--ep-r);
  background:var(--ep-gray-0); box-shadow:inset 0 0 0 1.5px var(--ep-gray-200), var(--ep-shadow-sm);
  transition:box-shadow .18s ease, transform .18s ease;
}
.ep-page .ep-opt:hover{box-shadow:inset 0 0 0 2px var(--ep-azul-es), var(--ep-shadow-md); transform:translateY(-2px)}
.ep-page .ep-opt b{display:block; font-weight:700; font-size:1rem}
.ep-page .ep-opt span{display:block; margin-top:5px; color:var(--ep-gray-500); font-size:.88rem; line-height:1.45}
.ep-page .ep-opt[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--ep-azul-ufes), var(--ep-shadow-md)}
/* cinco opções: 3 em cima e 2 embaixo, todas com a mesma largura. Sem isso o
   auto-fit põe 4 numa linha e deixa uma sozinha. Abaixo de 900px vale o auto-fit */
@media(min-width:900px){
  .ep-page .ep-opts-3-2{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* resposta escolhida, colapsada */
.ep-page .ep-answered{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:14px}
.ep-page .ep-chip{
  display:inline-flex; align-items:center; gap:9px;
  padding:9px 16px 9px 13px; border-radius:99px;
  background:var(--ep-azul-ufes); color:#fff; font-weight:600; font-size:.92rem;
}
.ep-page .ep-chip i{width:7px; height:7px; border-radius:50%; background:var(--ep-amarelo-agilid); flex-shrink:0}
.ep-page .ep-redo{font-size:.86rem; font-weight:600; color:var(--ep-gray-500); text-decoration:underline; text-underline-offset:3px}
.ep-page .ep-redo:hover{color:var(--ep-azul-ufes)}

/* ============================================================
   RESULTADO
   ============================================================ */
.ep-page .ep-result{
  border-radius:20px; background:var(--ep-gray-0);
  box-shadow:var(--ep-shadow-lg), inset 0 0 0 1px var(--ep-line);
  overflow:hidden; margin-top:6px;
}
.ep-page .ep-result[hidden]{display:none}
.ep-page .ep-result-top{padding:30px 34px; background:var(--ep-azul-ufes); color:#fff; position:relative}
.ep-page .ep-result-top::after{content:''; position:absolute; left:0; right:0; bottom:0; height:5px; background:var(--ep-result-accent,var(--ep-azul-es))}
.ep-page .ep-result-top .ep-eyebrow{color:rgba(255,255,255,.72)}
.ep-page .ep-result-top h3{font-size:clamp(1.4rem,3vw,2rem); font-weight:700; margin-top:10px}
.ep-page .ep-result-top p{margin-top:12px; color:rgba(255,255,255,.86); max-width:62ch; font-size:1rem}

.ep-page .ep-result-grid{display:grid; gap:0; grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.ep-page .ep-rblock{padding:28px 34px; border-top:1px solid var(--ep-line)}
.ep-page .ep-rblock + .ep-rblock{border-left:1px solid var(--ep-line)}
@media(max-width:640px){ .ep-page .ep-rblock + .ep-rblock{border-left:0} .ep-page .ep-result-top, .ep-page .ep-rblock{padding-inline:22px} }
.ep-page .ep-rblock h4{font-size:.78rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--ep-gray-500); font-family:var(--ep-font-body)}
.ep-page .ep-rlist{list-style:none; margin:16px 0 0; padding:0; display:grid; gap:11px}
.ep-page .ep-rlist li{position:relative; padding-left:26px; font-size:.96rem; color:var(--ep-gray-700); line-height:1.5}
.ep-page .ep-rlist li::before{
  content:''; position:absolute; left:0; top:.55em; width:9px; height:9px; border-radius:2px;
  background:var(--ep-result-accent,var(--ep-azul-es));
}

.ep-page .ep-heads-up{margin:0; padding:22px 34px; background:#fdf8e3; border-top:1px solid #f2e6b0}
.ep-page .ep-heads-up h4{font-family:var(--ep-font-body); font-size:.78rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#785311; text-wrap:balance}
.ep-page .ep-heads-up ul{list-style:none; margin:14px 0 0; padding:0; display:grid; gap:10px}
.ep-page .ep-heads-up li{padding-left:26px; position:relative; font-size:.95rem; color:#5c4210; line-height:1.5}
.ep-page .ep-heads-up li::before{content:'!'; position:absolute; left:0; top:0; width:17px; height:17px; border-radius:50%; background:var(--ep-amarelo-agilid); color:#5c4210; font-size:.72rem; font-weight:800; display:grid; place-items:center; margin-top:.2em}
/* links dentro dos alertas (21/09): a resolução abre fora, o TED abre o modal.
   O do TED é <button>, porque não navega, mas se lê como link no meio da frase */
.ep-page .ep-heads-up a, .ep-page .ep-link-inline{color:var(--ep-azul-ufes); font-weight:600; text-decoration:underline; text-underline-offset:3px}
.ep-page .ep-link-inline{font:inherit; font-weight:600; background:none; border:0; padding:0; cursor:pointer; text-align:inherit}
.ep-page .ep-heads-up a:hover, .ep-page .ep-link-inline:hover{text-decoration-thickness:2px}
/* <button> não quebra linha: sem isto, o ponto final depois dele cai sozinho */
.ep-page .ep-nowrap{white-space:nowrap}
@media(max-width:640px){ .ep-page .ep-heads-up{padding-inline:22px} }

.ep-page .ep-result-cta{padding:26px 34px; display:flex; gap:16px; align-items:center; flex-wrap:wrap; border-top:1px solid var(--ep-line); background:var(--ep-gray-50)}
.ep-page .ep-result-cta p{font-size:.92rem; color:var(--ep-gray-500); max-width:38ch}
@media(max-width:640px){ .ep-page .ep-result-cta{padding-inline:22px} }

/* nota de rodapé do card, mais discreta que a faixa do botão */
.ep-page .ep-result-nota{padding:14px 34px 16px; border-top:1px solid var(--ep-line)}
.ep-page .ep-result-nota p{font-size:.88rem; color:var(--ep-gray-500); line-height:1.5}
.ep-page .ep-result-nota a{color:var(--ep-azul-ufes); font-weight:600; text-underline-offset:3px}
@media(max-width:640px){ .ep-page .ep-result-nota{padding-inline:22px} }

/* saída "fale com a gente": item próprio entre o card do resultado e o Recomeçar.
   Branco com fio, mais leve que o card, para não disputar com o resultado */
.ep-page .ep-result-help{
  display:flex; align-items:flex-start; gap:12px; margin-top:18px;
  padding:16px 20px; border-radius:var(--ep-r);
  background:var(--ep-gray-0); box-shadow:inset 0 0 0 1px var(--ep-line);
}
.ep-page .ep-result-help[hidden]{display:none}
.ep-page .ep-result-help svg{width:20px; height:20px; flex-shrink:0; margin-top:1px; color:var(--ep-azul-ufes)}
.ep-page .ep-result-help p{font-size:.94rem; color:var(--ep-gray-600); line-height:1.5}
.ep-page .ep-result-help b{color:var(--ep-gray-800); font-weight:700}
.ep-page .ep-result-help a{color:var(--ep-azul-ufes); font-weight:700; text-underline-offset:3px}

/* ============================================================
   RECOMEÇAR — só existe depois que a trilha inteira foi respondida
   ============================================================ */
.ep-page .ep-restart{margin-top:22px}
.ep-page .ep-restart[hidden]{display:none}
.ep-page .ep-restart button{
  display:inline-flex; align-items:center; gap:10px;
  padding:11px 20px 11px 16px; border-radius:99px;
  font-size:.92rem; font-weight:700; color:var(--ep-gray-600);
  background:var(--ep-gray-0); box-shadow:inset 0 0 0 1.5px var(--ep-gray-200);
  transition:color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.ep-page .ep-restart button:hover{
  color:var(--ep-azul-ufes); box-shadow:inset 0 0 0 2px var(--ep-azul-es);
  transform:translateY(-1px);
}
.ep-page .ep-restart svg{width:16px; height:16px; flex-shrink:0; transition:transform .35s ease}
.ep-page .ep-restart button:hover svg{transform:rotate(-180deg)}

/* ============================================================
   PRATELEIRA
   ============================================================ */
.ep-page .ep-shelf{display:grid; gap:18px; grid-template-columns:repeat(auto-fit,minmax(258px,1fr))}
.ep-page .ep-card{
  display:block; text-decoration:none; padding:26px 24px 24px; border-radius:var(--ep-r);
  background:var(--ep-gray-0); box-shadow:inset 0 0 0 1px var(--ep-line), var(--ep-shadow-sm);
  border-top:4px solid var(--ep-accent,var(--ep-azul-es));
  transition:transform .2s ease, box-shadow .2s ease;
}
.ep-page .ep-card:hover{transform:translateY(-4px); box-shadow:inset 0 0 0 1px var(--ep-line), var(--ep-shadow-lg)}
.ep-page .ep-card h3{font-size:1.16rem; font-weight:700; margin-bottom:9px}
.ep-page .ep-card p{font-size:.93rem; color:var(--ep-gray-600); line-height:1.5}
/* o traço superior usa a cor da marca; o texto usa a variante escura quando
   a cor pura não alcança contraste suficiente sobre o branco */
.ep-page .ep-card .ep-go{display:inline-flex; align-items:center; gap:7px; margin-top:16px; font-size:.87rem; font-weight:700; color:var(--ep-accent-text,var(--ep-accent,var(--ep-azul-es)))}
.ep-page .ep-card .ep-go svg{transition:transform .18s ease}
.ep-page .ep-card:hover .ep-go svg{transform:translateX(3px)}

.ep-page .ep-card-gpi{grid-column:1/-1; background:var(--ep-azul-ufes); color:#fff; border-top-color:var(--ep-azul-es); display:flex; gap:28px; align-items:center; justify-content:space-between; flex-wrap:wrap; padding:30px}
.ep-page .ep-card-gpi h3{font-size:1.4rem}
/* 70ch (era 52ch), no parágrafo e não no card: o card ocupa a linha inteira da prateleira (Breno, 21/09) */
.ep-page .ep-card-gpi p{color:rgba(255,255,255,.82); max-width:70ch; margin-top:8px}
.ep-page .ep-card-gpi .ep-btn-ghost{background:#fff; box-shadow:none}

/* ícone Phosphor duotone — o SVG traz fill:currentColor e um path com
   opacity .2, então herda o --accent do card e o duotone sai de graça */
.ep-page .ep-card-icon{
  display:block; width:34px; height:34px; margin-bottom:14px;
  color:var(--ep-accent-text,var(--ep-accent,var(--ep-azul-es)));
  transition:transform .2s ease;
}
.ep-page .ep-card-icon svg{width:100%; height:100%; display:block}
.ep-page .ep-card:hover .ep-card-icon{transform:translateY(-1px)}
.ep-page .ep-card-soon .ep-card-icon{opacity:.55}

/* selo de conteúdo adiado — padrão a aplicar no que não entrar em setembro */
.ep-page .ep-card-head{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:9px}
.ep-page .ep-card-head h3{margin-bottom:0}
.ep-page .ep-badge-soon{
  font-size:.63rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  padding:3px 9px; border-radius:99px; white-space:nowrap;
  background:var(--ep-gray-100); color:var(--ep-gray-600); box-shadow:inset 0 0 0 1px var(--ep-gray-200);
}
/* estado desabilitado: mesmo princípio do `em-breve` do tema (menu do header),
   que também neutraliza a cor e desliga o ponteiro. Aqui o grayscale zera de uma
   vez o traço superior e o ícone, sem precisar sobrescrever cor por cor. */
.ep-page .ep-card-soon{
  background:var(--ep-gray-50);
  filter:grayscale(1);
  pointer-events:none;
  cursor:default;
}
.ep-page .ep-card-soon h3, .ep-page .ep-card-soon p{color:var(--ep-gray-500)}
/* pointer-events já barra o hover; estas duas travam qualquer transição
   residual caso o card volte a ser clicável por outro caminho */
.ep-page .ep-card-soon, .ep-page .ep-card-soon .ep-card-icon, .ep-page .ep-card-soon .ep-go svg{transition:none}
.ep-page .ep-card-soon:hover{transform:none; box-shadow:inset 0 0 0 1px var(--ep-line), var(--ep-shadow-sm)}

/* card que abre conteúdo na própria página (TED) é botão, não link: não navega.
   O reset global de button já zera fonte, fundo e borda, e .card repõe os seus */
.ep-page button.ep-card{width:100%; text-align:left}

/* ativos numa linha, em breve na outra: com metade da prateleira desabilitada,
   um card cinza dividindo a linha com os ativos lê como página quebrada */
@media(min-width:900px){
  .ep-page .ep-shelf{grid-template-columns:repeat(6,minmax(0,1fr))}
  .ep-page .ep-shelf > .ep-card{grid-column:span 3}
  .ep-page .ep-shelf > .ep-card-soon{grid-column:span 2}
  .ep-page .ep-shelf > .ep-card-gpi{grid-column:1/-1}
}

/* ============================================================
   FUNDAÇÃO DE APOIO
   ============================================================ */
/* sem o bloco dos dois contratos (D5), o texto ocupa uma coluna só, na largura de leitura */
.ep-page .ep-fundacao-texto{max-width:68ch}
/* duas colunas (21/09): o texto à esquerda e, à direita, como a Fundação organiza a gestão
   (slide 10 da Oficina de Projetos do Escritório). Mesma grade da seção "Sobre nós" */
/* no desktop a grade tem duas linhas: chapéu e título ocupam só a primeira linha da esquerda, e a
   coluna da direita começa junto com o primeiro parágrafo, não com o chapéu (Breno, 21/09) */
.ep-page .ep-fundacao{
  display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); column-gap:56px; align-items:start;
  grid-template-areas:"head ." "texto gestao";
}
.ep-page .ep-fundacao-head{grid-area:head}
.ep-page .ep-fundacao-texto{grid-area:texto}
.ep-page .ep-gestao{grid-area:gestao}
@media(max-width:900px){
  .ep-page .ep-fundacao{grid-template-columns:1fr; grid-template-areas:"head" "texto" "gestao"}
  .ep-page .ep-gestao{margin-top:34px}
}
/* coluna da direita no desenho dos contratos da v2 (Breno, 21/09): a tag azul-clara como título
   e cada item num box leve, só com fio, com [ícone] título e o texto alinhado abaixo do título */
.ep-page .ep-tag{
  display:inline-block; font-family:var(--ep-font-body); font-size:.7rem; font-weight:700;
  letter-spacing:.12em; line-height:1.4; text-transform:uppercase;
  padding:4px 10px; border-radius:14px; background:#e7f7fd; color:#0a5c7f;
  text-wrap:balance;   /* no mobile a tag quebra em duas linhas: sem isto, sobra uma palavra */
}
.ep-page .ep-gestao-list{list-style:none; margin:14px 0 0; padding:0; display:grid; gap:10px}
.ep-page .ep-gestao-list li{
  display:grid; grid-template-columns:24px minmax(0,1fr); column-gap:12px;
  padding:16px 18px; border-radius:var(--ep-r); background:var(--ep-gray-0);
  box-shadow:inset 0 0 0 1px var(--ep-line);
}
.ep-page .ep-gestao-icon{grid-column:1; grid-row:1; align-self:center; width:24px; height:24px; color:var(--ep-azul-ufes)}
.ep-page .ep-gestao-icon svg{width:100%; height:100%; display:block}
.ep-page .ep-gestao-list b{grid-column:2; grid-row:1; align-self:center; font-family:var(--ep-font-display); font-size:1rem; font-weight:700; line-height:1.3}
.ep-page .ep-gestao-list p{grid-column:2; margin-top:4px; font-size:.93rem; color:var(--ep-gray-600); line-height:1.5}
.ep-page .ep-prose p + p{margin-top:16px}
.ep-page .ep-prose p{color:var(--ep-gray-700)}
.ep-page .ep-prose strong{color:var(--ep-ink); font-weight:700}

/* ============================================================
   FAQ — elemento details nativo, sem JS
   ============================================================ */
/* fio que separa a Fundação de Apoio do FAQ, dentro da mesma seção */
.ep-page .ep-rule{border:0; height:1px; background:var(--ep-line); margin:76px 0 0}
.ep-page .ep-faq-head{max-width:62ch; margin:44px 0 28px}
.ep-page .ep-faq-head h2{font-size:clamp(1.6rem,3vw,2.2rem); font-weight:700; margin:12px 0 0}
.ep-page .ep-faq-head p{margin-top:14px; color:var(--ep-gray-600); font-size:1.03rem}

.ep-page .ep-faq{display:grid; gap:10px}
.ep-page .ep-faq details{
  border-radius:var(--ep-r); background:var(--ep-gray-0);
  box-shadow:inset 0 0 0 1px var(--ep-line), var(--ep-shadow-sm);
  overflow:hidden;
}
.ep-page .ep-faq summary{
  list-style:none; cursor:pointer; padding:19px 22px;
  display:flex; align-items:flex-start; gap:14px;
  font-family:var(--ep-font-display); font-weight:700; font-size:1.03rem; line-height:1.35;
  transition:color .18s ease;
}
.ep-page .ep-faq summary::-webkit-details-marker{display:none}
.ep-page .ep-faq summary:hover{color:var(--ep-azul-ufes)}
/* o sinal precisa girar sem empurrar o texto: largura fixa e alinhamento próprio */
.ep-page .ep-faq summary::after{
  content:''; margin-left:auto; flex-shrink:0; width:11px; height:11px; margin-top:.38em;
  border-right:2.5px solid var(--ep-gray-400); border-bottom:2.5px solid var(--ep-gray-400);
  transform:rotate(45deg); transition:transform .22s ease, border-color .22s ease;
}
.ep-page .ep-faq details[open] summary::after{transform:rotate(-135deg); border-color:var(--ep-azul-ufes)}
.ep-page .ep-faq details[open] summary{color:var(--ep-azul-ufes)}
/* a resposta alinha com o texto do summary, descontando o marcador numerado */
.ep-page .ep-faq .ep-answer{padding:0 22px 22px 60px; font-size:.97rem; color:var(--ep-gray-700); line-height:1.6}
.ep-page .ep-faq .ep-answer p + p{margin-top:12px}
/* links nas respostas (21/09: modelo de plano de trabalho e Resolução nº 46/2019), no padrão de .result-nota a */
.ep-page .ep-faq .ep-answer a{color:var(--ep-azul-ufes); font-weight:600; text-underline-offset:3px}
@media(max-width:640px){ .ep-page .ep-faq .ep-answer{padding-left:22px} }
.ep-page .ep-faq .ep-rank{
  flex-shrink:0; width:24px; height:24px; border-radius:50%; margin-top:.1em;
  display:grid; place-items:center; background:var(--ep-gray-100); color:var(--ep-gray-500);
  font-family:var(--ep-font-body); font-size:.76rem; font-weight:700;
}
.ep-page .ep-faq details[open] .ep-rank{background:var(--ep-azul-ufes); color:#fff}

/* ============================================================
   MODAL EM TELA CHEIA — conteúdo que abre a partir da prateleira
   <dialog> nativo; o JS no fim da página só trava a rolagem por trás
   e cuida do foco. Primeiro uso: Operacionalizar um TED.
   ============================================================ */
html.ep-is-locked{overflow:hidden}
.ep-page .ep-sheet{
  position:fixed; inset:0; width:100%; height:100vh; height:100dvh;
  max-width:none; max-height:none; margin:0; padding:0; border:0;
  background:var(--ep-paper); color:var(--ep-ink);
  overflow:auto; overscroll-behavior:contain;
}
.ep-page .ep-sheet::backdrop{background:rgba(18,23,33,.5)}
.ep-page .ep-sheet[open]{animation:ep-rise .45s cubic-bezier(.22,.9,.3,1) both}

/* a barra repete o traço colorido do card que abriu o modal */
.ep-page .ep-sheet-bar{
  position:sticky; top:0; z-index:2;
  background:rgba(255,255,255,.97); backdrop-filter:blur(8px);
  border-top:5px solid var(--ep-sheet-accent,var(--ep-azul-es)); border-bottom:1px solid var(--ep-line);
}
.ep-page .ep-sheet-bar .ep-wrap{display:flex; align-items:center; justify-content:space-between; gap:16px; padding-block:12px}
.ep-page .ep-sheet-label{display:inline-flex; align-items:center; gap:10px; font-size:.9rem; font-weight:700; color:var(--ep-gray-700)}
.ep-page .ep-sheet-label svg{width:22px; height:22px; flex-shrink:0; color:var(--ep-sheet-accent-text,var(--ep-azul-ufes))}
/* mesmo desenho do botão Recomeçar do quiz */
.ep-page .ep-sheet-close{
  display:inline-flex; align-items:center; gap:8px;
  padding:10px 18px 10px 14px; border-radius:99px;
  font-size:.92rem; font-weight:700; color:var(--ep-gray-600);
  background:var(--ep-gray-0); box-shadow:inset 0 0 0 1.5px var(--ep-gray-200);
  transition:color .18s ease, box-shadow .18s ease;
}
.ep-page .ep-sheet-close:hover{color:var(--ep-azul-ufes); box-shadow:inset 0 0 0 2px var(--ep-azul-es)}
.ep-page .ep-sheet-close svg{width:14px; height:14px; flex-shrink:0}

.ep-page .ep-sheet-body{max-width:760px; margin:0 auto; padding:56px 24px 72px}
.ep-page .ep-sheet-body h2{font-size:clamp(1.9rem,4.4vw,2.75rem); font-weight:800; max-width:22ch; margin-top:12px}
/* o título recebe foco por script ao abrir; não é interativo, então sem anel */
.ep-page .ep-sheet-body h2:focus{outline:none}
.ep-page .ep-sheet-lead{margin-top:20px; font-size:1.1rem; color:var(--ep-gray-700)}
.ep-page .ep-sheet-text{margin-top:12px; color:var(--ep-gray-700)}
.ep-page .ep-sheet-body > h3{font-size:clamp(1.25rem,2.6vw,1.5rem); font-weight:700; margin-top:52px}
.ep-page .ep-sheet-body a:not(.ep-btn){color:var(--ep-azul-ufes); font-weight:600; text-underline-offset:3px}

/* as duas etapas do TED */
.ep-page .ep-stages{list-style:none; margin:18px 0 0; padding:0; display:grid; gap:14px; grid-template-columns:1fr 1fr}
.ep-page .ep-stage{padding:20px 22px; border-radius:var(--ep-r); background:var(--ep-gray-0); box-shadow:inset 0 0 0 1px var(--ep-line), var(--ep-shadow-sm)}
.ep-page .ep-stage b{display:block; font-family:var(--ep-font-display); font-size:1.05rem; font-weight:700}
.ep-page .ep-stage p{margin-top:6px; font-size:.93rem; color:var(--ep-gray-600); line-height:1.5}
.ep-page .ep-stage-n{
  display:grid; place-items:center; width:26px; height:26px; margin-bottom:12px; border-radius:50%;
  background:var(--ep-azul-ufes); color:#fff; font-size:.8rem; font-weight:700;
}

/* passo a passo: marcadores e linha no desenho da trilha do quiz */
.ep-page .ep-ted-steps{position:relative; list-style:none; margin:24px 0 0; padding:0; --ep-result-accent:var(--ep-sheet-accent,var(--ep-azul-es))}
.ep-page .ep-ted-steps::before{content:''; position:absolute; left:17px; top:18px; bottom:40px; width:2px; background:var(--ep-gray-200); border-radius:2px}
.ep-page .ep-ted-steps > li{position:relative; padding:0 0 30px 58px}
.ep-page .ep-ted-steps > li:last-child{padding-bottom:0}
.ep-page .ep-ted-n{
  position:absolute; left:0; top:-3px; width:36px; height:36px; border-radius:50%;
  display:grid; place-items:center; background:var(--ep-gray-0);
  box-shadow:inset 0 0 0 2px var(--ep-azul-ufes); color:var(--ep-azul-ufes);
  font-family:var(--ep-font-display); font-size:.95rem; font-weight:700; line-height:1;
}
.ep-page .ep-ted-steps > li > b{display:block; font-family:var(--ep-font-display); font-size:1.1rem; font-weight:700; line-height:1.3}
.ep-page .ep-ted-steps > li > p{margin-top:6px; color:var(--ep-gray-700); font-size:.97rem}
.ep-page .ep-ted-steps .ep-rlist{margin:12px 0 12px}
/* T4 (André, 18/09): o texto que o parecer precisa trazer, literal, para ser levado ao despacho */
.ep-page .ep-ted-quote{margin:14px 0 2px; padding:16px 20px; border-left:3px solid var(--ep-sheet-accent,var(--ep-azul-es)); background:var(--ep-gray-50); border-radius:0 var(--ep-r) var(--ep-r) 0}
.ep-page .ep-ted-quote p{font-size:.95rem; color:var(--ep-gray-700); line-height:1.55}
/* T8: modelos para baixar, ao lado do documento que cada um representa */
.ep-page .ep-sheet-body a.ep-dl{display:inline-flex; align-items:center; gap:5px; margin-left:4px; font-size:.9rem; white-space:nowrap}
.ep-page .ep-dl svg{width:15px; height:15px; flex-shrink:0}

.ep-page .ep-sheet-body .ep-heads-up{margin-top:44px; border:1px solid #f2e6b0; border-radius:var(--ep-r)}

.ep-page .ep-sheet-foot{
  margin-top:52px; padding-top:28px; border-top:1px solid var(--ep-line);
  display:flex; gap:18px; align-items:center; justify-content:space-between; flex-wrap:wrap;
}
.ep-page .ep-sheet-foot p{font-size:.92rem; color:var(--ep-gray-500)}

@media(max-width:640px){
  .ep-page .ep-sheet-body{padding:36px 22px 56px}
  .ep-page .ep-stages{grid-template-columns:1fr}
  .ep-page .ep-ted-steps > li{padding-left:48px}
  .ep-page .ep-ted-n{width:30px; height:30px; font-size:.85rem; top:-1px}
  .ep-page .ep-ted-steps::before{left:14px}
  .ep-page .ep-sheet-body .ep-heads-up{padding-inline:22px}
}

/* ============================================================
   MOTION
   ============================================================ */
@keyframes ep-rise{from{opacity:0; transform:translateY(14px)} to{opacity:1; transform:none}}
.ep-page .ep-anim{animation:ep-rise .45s cubic-bezier(.22,.9,.3,1) both}
@media(prefers-reduced-motion:reduce){
  html:has(.ep-page){scroll-behavior:auto}
  .ep-page, .ep-page *, .ep-page *::before, .ep-page *::after{animation-duration:.001ms !important; transition-duration:.001ms !important}
}

/* ============================================================
   ADAPTAÇÕES AO TEMA
   ============================================================ */
/* o header do tema é sticky: âncoras (#trilha, #prateleira) e os passos do quiz,
   que rolam com scrollIntoView, param abaixo dele. Header: 64px no mobile, 80px no desktop */
.ep-page section[id], .ep-page #faq, .ep-page .ep-step{scroll-margin-top:84px}
@media(min-width:1024px){ .ep-page section[id], .ep-page #faq, .ep-page .ep-step{scroll-margin-top:100px} }

/* os .ep-wrap usam as classes de container do header. O .container do tema passa a
   content-box a partir de xl (xl:box-content em styles/input.css); sem repetir isso aqui,
   o border-box geral da página estreita o conteúdo e o desalinha do logo em 20px */
@media(min-width:1280px){ .ep-page .ep-wrap{box-sizing:content-box} }

/* a partir de 1600px o container do tema cresce para 1504px (--container-2xl) e a linha fica
   longa demais. A página para em 1216px (--container-xl) e centraliza, como a lista de Notícias;
   abaixo disso continua do tamanho do header, alinhada ao logo (Breno, 21/09) */
@media(min-width:1600px){ .ep-page .ep-wrap{max-width:var(--container-xl, 1216px)} }
