/* OBJETARIA — CSS da página /projetos/, gerado por tools/build.mjs a partir de tools/projetos/projetos.css. Não editar à mão. */
/* =========================================================
   OBJETARIA · PÁGINA /projetos/ — fonte (escrita à mão)
   O tools/build.mjs prefixa cada seletor com body.obj-master:not(#obj):not(#obj)
   (o mesmo peso do CSS do master) e grava assets/css/objetaria-projetos.css.
   Só usa tokens do master (cores, fontes, curvas); nenhuma classe da Home é reaproveitada
   aqui com outro sentido: tudo da página fica no prefixo .pj-.

   Geometria medida na referência (Summit /projects) a 1905 px, no DOM e no
   screenshot full-page anexado. Valores marcados "ESTIMATED — CALIBRATE" foram
   inferidos (não medidos) e calibrados visualmente na comparação lado a lado.
   ========================================================= */

/* ---------- HERO ---------- */
body.obj-master:not(#obj):not(#obj) .pj-hero{
  position:relative; z-index:1;
  height:30vh; min-height:400px;            /* medido: .hero-content-container.short */
  background:var(--black); color:var(--on-dark);
  overflow:hidden;
  --focus:var(--accent);
}
body.obj-master:not(#obj):not(#obj) .pj-hero__media{ position:absolute; inset:0; z-index:0; }
/* uma foto por categoria: duas camadas empilhadas. A que entra fica por cima e sobe de 0 a 1 de opacidade
   (com um zoom de 1,02 → 1 quase imperceptível); a de baixo continua inteira até o fim — sem "mergulho" no
   preto no meio do crossfade, sem flash e sem mexer em altura, título ou layout (tudo absoluto). */
body.obj-master:not(#obj):not(#obj) .pj-hero__layer{
  position:absolute; inset:0; z-index:0; overflow:hidden;
  opacity:0;
  transition:opacity 380ms var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-hero__layer.is-front{ z-index:1; }
body.obj-master:not(#obj):not(#obj) .pj-hero__layer.is-active{ opacity:1; }
body.obj-master:not(#obj):not(#obj) .pj-hero__layer picture{ position:absolute; inset:0; }
body.obj-master:not(#obj):not(#obj) .pj-hero__layer img{
  display:block; width:100%; height:100%; max-width:none;
  object-fit:cover; object-position:var(--pj-hero-pos, 50% 52%);
  transform:scale(1.02);
  transition:transform 600ms var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-hero__layer.is-active img{ transform:none; }
/* tratamento por estado: só a foto de TODOS é monocromática (contraste calibrado, como na referência); as fotos das
   outras categorias ficam coloridas. O estado vai na própria camada (data-pj-cat, gravado pelo JS antes de a foto
   entrar), então a foto que entra já nasce no estado certo e a que sai mantém o dela durante o crossfade. */
body.obj-master:not(#obj):not(#obj) .pj-hero__layer[data-pj-cat="todos"] img{ filter:grayscale(1) contrast(1.15); }
/* escurece a foto para o título branco ler como na referência; o véu é calibrado por foto (--pj-hero-veil)
   para todas as categorias terem a mesma luminância média de fundo (~85–95/255, como a aprovada) */
body.obj-master:not(#obj):not(#obj) .pj-hero__layer::after{
  content:""; position:absolute; inset:0;
  background:rgba(12,12,12,var(--pj-hero-veil, .36));
}
body.obj-master:not(#obj):not(#obj) .pj-hero__preload{ display:none; }
body.obj-master:not(#obj):not(#obj) .pj-hero__content{
  position:relative; z-index:1;
  height:100%; width:min(var(--container-hero), 90%); margin-inline:auto;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center;
}
body.obj-master:not(#obj):not(#obj) .pj-hero__eyebrow{
  margin:0 0 20px;
  font-size:15px; font-weight:400; line-height:1.1; letter-spacing:.15em; text-transform:uppercase;
  color:var(--on-dark);
}
body.obj-master:not(#obj):not(#obj) .pj-hero__title{ margin:0; font-size:128px; line-height:.9; color:var(--on-dark); }
/* acento de "Á" sobe acima da caixa de linha (line-height .9): o respiro extra entre eyebrow e título vem deste padding, sem mexer no tamanho */
body.obj-master:not(#obj):not(#obj) .pj-hero__title{ padding-top:.3em; }

/* ---------- BLOCO BRANCO: aba que sobe sobre o hero ----------
   Forma da referência (SVG 956 × 80,7): lados a 50,2° (dx/dy 0,834), vértice superior a 5,785%
   da largura da forma, cantos superiores com raio de ~1,025% da largura (13,7 px a 1336 px).
   Só os 45 px de cima aparecem sobre o hero; o resto é branco sobre branco. */
body.obj-master:not(#obj):not(#obj) .pj-content{
  position:relative; z-index:2;
  display:flow-root;        /* a margem negativa dos filtros não pode "vazar" e subir o bloco branco sobre o hero */
  background:var(--white);
  --pj-tab-h:45px;          /* medido: margin-top -45px */
  --pj-tab-r:13.7px;
  --pj-tab-w:min(var(--container), 90%);
}
body.obj-master:not(#obj):not(#obj) .pj-tab{
  position:absolute; bottom:100%; left:50%;
  width:var(--pj-tab-w); height:var(--pj-tab-h);
  transform:translateX(-50%);
  background:var(--white);
  clip-path:polygon(calc(5.785% - var(--pj-tab-h) * 0.8339) 100%, calc(5.785% - 0.2998 * var(--pj-tab-r)) calc(0.3596 * var(--pj-tab-r)), calc(5.785% - 0.1765 * var(--pj-tab-r)) calc(0.2355 * var(--pj-tab-r)), calc(5.785% - 0.0334 * var(--pj-tab-r)) calc(0.1349 * var(--pj-tab-r)), calc(5.785% + 0.125 * var(--pj-tab-r)) calc(0.0607 * var(--pj-tab-r)), calc(5.785% + 0.2939 * var(--pj-tab-r)) calc(0.0153 * var(--pj-tab-r)), calc(5.785% + 0.4682 * var(--pj-tab-r)) calc(0 * var(--pj-tab-r)), calc(100% - 5.785% - 0.4682 * var(--pj-tab-r)) calc(0 * var(--pj-tab-r)), calc(100% - 5.785% - 0.2939 * var(--pj-tab-r)) calc(0.0153 * var(--pj-tab-r)), calc(100% - 5.785% - 0.125 * var(--pj-tab-r)) calc(0.0607 * var(--pj-tab-r)), calc(100% - 5.785% + 0.0334 * var(--pj-tab-r)) calc(0.1349 * var(--pj-tab-r)), calc(100% - 5.785% + 0.1765 * var(--pj-tab-r)) calc(0.2355 * var(--pj-tab-r)), calc(100% - 5.785% + 0.2998 * var(--pj-tab-r)) calc(0.3596 * var(--pj-tab-r)), calc(100% - 5.785% + var(--pj-tab-h) * 0.8339) 100%);
  pointer-events:none;
}

/* ---------- FILTROS ----------
   Referência: 16 px / 500 / caixa alta, link de 30 px (texto 22 + 5 + sublinhado 3 px laranja),
   linha começa 2 px acima da base do hero, itens a no mínimo 56 px (margin 40 + gap 16). Ativo: laranja +
   sublinhado. Hover: o sublinhado cresce do centro (largura 0 → 100% na referência; aqui scaleX, só transform).
   Com 5 categorias a linha cabe inteira no desktop, distribuída em space-between na largura da aba.
   Se não couber (celular, tablet, ou rótulos futuros mais longos), a mesma linha rola na horizontal
   (arrasto no toque; setas fora da linha no desktop), sem quebrar em duas linhas nem empurrar a grade. */
body.obj-master:not(#obj):not(#obj) .pj-filters{
  position:relative;
  width:var(--pj-f-w, calc(var(--pj-tab-w) - 2 * var(--pj-tab-h) * .834));   /* largura da aba na base do hero */
  margin:-2px auto 0;
}
body.obj-master:not(#obj):not(#obj) .pj-filters__track{
  position:relative;
  display:flex; justify-content:space-between; gap:var(--pj-f-gap, 36px);   /* mínimo; o space-between distribui o resto */
  padding-inline:var(--pj-f-pad, 28px); scroll-padding-inline:var(--pj-f-pad, 28px);   /* respiro até as laterais inclinadas da aba */
  overflow-x:auto; overflow-y:hidden;
  scrollbar-width:none; -ms-overflow-style:none;
  scroll-snap-type:x proximity;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
}
body.obj-master:not(#obj):not(#obj) .pj-filters__track::-webkit-scrollbar{ display:none; }
/* quando não cabe: rolagem horizontal com as bordas esmaecendo do lado que ainda tem conteúdo */
body.obj-master:not(#obj):not(#obj) .pj-filters__track.is-scrollable{
  --fl:28px; --fr:28px;
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 var(--fl), #000 calc(100% - var(--fr)), transparent 100%);
          mask-image:linear-gradient(90deg, transparent 0, #000 var(--fl), #000 calc(100% - var(--fr)), transparent 100%);
}
body.obj-master:not(#obj):not(#obj) .pj-filters__track.is-scrollable.is-start{ --fl:0px; }
body.obj-master:not(#obj):not(#obj) .pj-filters__track.is-scrollable.is-end{ --fr:0px; }
/* setas (só mouse/desktop, e só se a linha não couber): ficam fora da linha, à esquerda e à direita,
   então não roubam largura dos filtros quando não aparecem */
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow{
  position:absolute; top:0;
  display:flex; align-items:center; justify-content:center;
  width:28px; height:30px; margin:0; padding:0 0 8px; border:0; border-radius:0; background:none;
  color:var(--black); cursor:pointer;
  opacity:0; visibility:hidden;
  transition:opacity 200ms var(--ease-out), visibility 0s linear 200ms, color var(--duration-micro) var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow--prev{ right:100%; }
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow--next{ left:100%; }
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow svg{ width:14px; height:14px; }
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow path{ fill:none; stroke:currentColor; stroke-width:1.6; }
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow:hover{ color:var(--accent); }
body.obj-master:not(#obj):not(#obj) .pj-filters.can-prev .pj-filters__arrow--prev,
body.obj-master:not(#obj):not(#obj) .pj-filters.can-next .pj-filters__arrow--next{ opacity:1; visibility:visible; transition:opacity 200ms var(--ease-out), color var(--duration-micro) var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-filter{
  flex:none; scroll-snap-align:center;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-start;
  height:30px; margin:0; padding:0; border:0; border-radius:0; background:none;
  font-family:var(--f-body); font-size:15px; font-weight:500; line-height:22px; letter-spacing:0;
  text-transform:uppercase; white-space:nowrap; color:var(--black);
  cursor:pointer;
  transition:color var(--duration-micro) var(--ease-out);
  -webkit-tap-highlight-color:transparent;
}
body.obj-master:not(#obj):not(#obj) .pj-filter::after{
  content:""; display:block; width:100%; height:3px; margin-top:5px;
  background:var(--accent);
  transform:scaleX(0); transform-origin:50% 50%;
  transition:transform 300ms var(--ease-premium);     /* ESTIMATED — CALIBRATE (hover não aparece no vídeo) */
}
body.obj-master:not(#obj):not(#obj) .pj-filter:hover::after,body.obj-master:not(#obj):not(#obj) .pj-filter:focus-visible::after,body.obj-master:not(#obj):not(#obj) .pj-filter.is-active::after{ transform:scaleX(1); }
body.obj-master:not(#obj):not(#obj) .pj-filter.is-active{ color:var(--accent); }
body.obj-master:not(#obj):not(#obj) .pj-filter:focus-visible{ outline:2px solid var(--accent); outline-offset:4px; }

/* ---------- CELULAR: ACORDEÕES "CATEGORIAS" + "PROJETOS" (só ≤ 560 px; ver RESPONSIVO) ----------
   Acima de 560 px o bloco não existe na tela: desktop e tablet seguem com a barra de categorias. */
body.obj-master:not(#obj):not(#obj) .pj-acc{ display:none; }

/* ---------- GRADE ----------
   Medido: 3 colunas, gap 30, cards de altura fixa 300 px, largura 90% até 1336 px;
   60 px dos filtros até a 1ª linha e 60 px da última linha até o bloco cinza. */
body.obj-master:not(#obj):not(#obj) .pj-grid{
  list-style:none; margin:60px auto 0; padding:0 0 60px;
  width:min(var(--container), 90%);
  display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:30px;
}
body.obj-master:not(#obj):not(#obj) .pj-grid__item{ display:block; margin:0; padding:0; min-width:0; }
body.obj-master:not(#obj):not(#obj) .pj-grid__item[hidden],body.obj-master:not(#obj):not(#obj) .pj-empty[hidden]{ display:none; }
/* troca de filtro (sem recarregar): sai em 160 ms, os que ficam deslizam para a nova posição
   (FLIP, só transform) e os que entram sobem 16 px com fade, em cascata de 40 ms */
body.obj-master:not(#obj):not(#obj) .pj-grid__item.is-leaving{ opacity:0; transform:scale(.97);
  transition:opacity 160ms var(--ease-in), transform 160ms var(--ease-in); }
body.obj-master:not(#obj):not(#obj) .pj-grid__item.is-entering{ opacity:0; transform:translateY(16px); transition:none; }
body.obj-master:not(#obj):not(#obj) .pj-grid__item.is-animating{ transition:opacity 320ms var(--ease-premium), transform 320ms var(--ease-premium); }
body.obj-master:not(#obj):not(#obj) .pj-empty{ grid-column:1 / -1; margin:0; padding:40px 0; text-align:center; color:var(--muted); }

/* ---------- CARD ----------
   Medido: foto em toda a área; faixa de 80 px com degradê preto em cima e embaixo; texto a 15 px
   das bordas: metadado 14/22 (400) e título 18/22 (700), cor #F2F2F2.
   Hover (vídeo, 30 fps): a foto aproxima até 1,1 em ~300 ms; metadado e título ficam laranja em ~200 ms. */
body.obj-master:not(#obj):not(#obj) .pj-card{
  position:relative; display:block; height:300px; overflow:hidden;
  background:#1B1B1D; color:var(--gray-bg); text-decoration:none;
  isolation:isolate;
}
body.obj-master:not(#obj):not(#obj) .pj-card::before{
  content:""; position:absolute; inset:0 0 auto; z-index:1; height:80px;
  background:linear-gradient(#000, rgba(12,12,12,0));
  pointer-events:none;
}
body.obj-master:not(#obj):not(#obj) .pj-card__media{ position:absolute; inset:0; z-index:0; }
body.obj-master:not(#obj):not(#obj) .pj-card__media picture{ position:absolute; inset:0; }
body.obj-master:not(#obj):not(#obj) .pj-card__media img{
  display:block; width:100%; height:100%; max-width:none;
  object-fit:cover; object-position:var(--pos, 50% 50%);
  transform:scale(1);
  transition:transform 300ms var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-card__body{
  position:absolute; inset:auto 0 0; z-index:1;
  height:80px; padding:0 15px 15px;
  display:flex; flex-direction:column; justify-content:flex-end; align-items:flex-start;
  background:linear-gradient(rgba(12,12,12,0), #000);
}
body.obj-master:not(#obj):not(#obj) .pj-card__meta{
  margin:0; font-size:14px; font-weight:400; line-height:22px; color:var(--gray-bg);
  transition:color 200ms var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-card__title{
  margin:0; font-family:var(--f-body); font-size:18px; font-weight:500; line-height:22px; color:var(--gray-bg);
  transition:color 200ms var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-card:hover .pj-card__media img,body.obj-master:not(#obj):not(#obj) .pj-card:focus-visible .pj-card__media img{ transform:scale(1.1); }
body.obj-master:not(#obj):not(#obj) .pj-card:hover .pj-card__meta,body.obj-master:not(#obj):not(#obj) .pj-card:hover .pj-card__title,
body.obj-master:not(#obj):not(#obj) .pj-card:focus-visible .pj-card__meta,body.obj-master:not(#obj):not(#obj) .pj-card:focus-visible .pj-card__title{ color:var(--accent); }
body.obj-master:not(#obj):not(#obj) .pj-card:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }

/* Tipografia da página: Aeonik Regular 400 (texto) e Medium 500 (títulos dos cards e CTA). Os arquivos reais e locais
   são declarados no CSS global do master (família 'Aeonik' = var(--f-body)). Nenhum peso é sintetizado. */

/* ---------- QUALIDADE & MANUFATURA ----------
   Calibrada pela seção equivalente da referência (medida em 1905 px): container padrão da página (1336 px, o mesmo da
   grade e do rodapé), duas colunas iguais com 80 px de vão, texto alinhado ao topo da foto, título de 96 px (caixa-alta
   72 px, entrelinha 91 px), CTA em link com seta, 100 px de respiro. A caixa da foto tem a proporção do retrato
   original (3:2), então nada é cortado; o título quebra só entre
   "QUALIDADE" e "& MANUFATURA" (cada linha é indivisível, o "&" nunca fica sozinho). */
body.obj-master:not(#obj):not(#obj) .pj-quality{ background:var(--gray-bg); padding:100px 0; --focus:var(--ink); }
body.obj-master:not(#obj):not(#obj) .pj-quality__grid{
  width:min(var(--container), 100% - 2 * var(--gutter)); margin-inline:auto;
  display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); column-gap:clamp(40px, 4.2vw, 80px); align-items:start;
}
body.obj-master:not(#obj):not(#obj) .pj-quality__title{ margin:0 0 40px; font-family:var(--f-display); font-weight:400; font-size:90px; line-height:90px; color:var(--ink); }
body.obj-master:not(#obj):not(#obj) .pj-quality__line{ display:block; white-space:nowrap; }
body.obj-master:not(#obj):not(#obj) .pj-quality__text p{ margin:0; max-width:none; font-family:var(--f-body); font-weight:400; font-size:16px; line-height:26px; color:var(--ink); }
body.obj-master:not(#obj):not(#obj) .pj-quality__text .link-arrow{ margin-top:32px; font-family:var(--f-body); font-weight:500; font-size:17px; line-height:22px; }
body.obj-master:not(#obj):not(#obj) .pj-quality__media{ position:relative; aspect-ratio:3 / 2; overflow:hidden; background:#DADBDD; }
body.obj-master:not(#obj):not(#obj) .pj-quality__media picture{ position:absolute; inset:0; }
body.obj-master:not(#obj):not(#obj) .pj-quality__media img{ display:block; width:100%; height:100%; max-width:none; object-fit:cover; object-position:var(--pos, 50% 50%); }

/* ---------- PÁGINA DE PROJETO (/projetos/<projeto>/) ----------
   Arquitetura da página individual da referência, medida em 1905 px: hero curto com o nome da categoria (foto em
   preto e branco), a mesma barra de categorias e, no container de 1336 px, a navegação dos projetos da categoria
   (250 px, linha laranja vertical de 1 px que desce até a seção cinza) e o bloco do projeto, que se reorganiza pela
   quantidade de fotos — como nas páginas da referência:
     · 1 foto (CBRE):        foto principal 871 px + 20 px + metadados 165 px — nada de coluna vazia
     · 2+ fotos (ServiceNow): foto principal 728 px + miniaturas 150 px + metadados 138 px (20 px entre elas)
   Metadados: traço laranja 24 × 3, rótulos 13/20 em caixa alta. Título 35/35 em duas cores e texto 16/26 (até
   558 px) abaixo da foto; 40 px da barra ao bloco e 140 px até Qualidade.
   PROJECT MEDIA FRAME: a moldura da foto principal é uma só para todos os projetos; a forma (--ratio: 3/2, 1/1 ou 3/4)
   e o encaixe (--fit: cover ou contain) vêm do dado do projeto e a foto se adapta a ela (--pos por foto). */
body.obj-master:not(#obj):not(#obj) .pj-hero--mono .pj-hero__layer img{ filter:grayscale(1) contrast(1.15); }
body.obj-master:not(#obj):not(#obj) .pj-hero__line{ display:inline-block; white-space:nowrap; line-height:1.06; }   /* título em 2 linhas: o acento do "Á" da 2ª linha não encosta nas letras da 1ª */
body.obj-master:not(#obj):not(#obj) a.pj-filter{ text-decoration:none; }
body.obj-master:not(#obj):not(#obj) .pj-detail{
  width:min(var(--container), 90%); margin:40px auto 0;
  display:grid; grid-template-columns:250px minmax(0, 1fr); align-items:start;
}
body.obj-master:not(#obj):not(#obj) .pj-detail__nav{ align-self:stretch; border-right:1px solid var(--accent); }
/* lista lateral: Aeonik 19/26 (a referência usa 17/20 numa coluna igual; aqui um pouco maior, com mais área de clique) */
body.obj-master:not(#obj):not(#obj) .pj-detail__list{ list-style:none; margin:-6px 0 0; padding:0 24px 0 0; }
body.obj-master:not(#obj):not(#obj) .pj-detail__list li{ margin:0 0 12px; padding:0; }
body.obj-master:not(#obj):not(#obj) .pj-detail__item{
  display:inline-flex; flex-direction:column; align-items:flex-start; padding:6px 5px;
  font-family:var(--f-body); font-size:19px; font-weight:400; line-height:26px; color:#7D7D7D; text-decoration:none;
  transition:color var(--duration-micro) var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-detail__item::after{
  content:""; align-self:stretch; height:3px; margin-top:6px; background:var(--accent);
  transform:scaleX(0); transform-origin:0 50%; transition:transform 300ms var(--ease-premium);
}
body.obj-master:not(#obj):not(#obj) a.pj-detail__item:hover,body.obj-master:not(#obj):not(#obj) a.pj-detail__item:focus-visible{ color:var(--ink); }   /* atual: cinza + sublinhado laranja, como na referência */
body.obj-master:not(#obj):not(#obj) a.pj-detail__item:hover::after,body.obj-master:not(#obj):not(#obj) a.pj-detail__item:focus-visible::after,body.obj-master:not(#obj):not(#obj) .pj-detail__item.is-current::after{ transform:scaleX(1); }
body.obj-master:not(#obj):not(#obj) .pj-detail__item:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
/* coluna da foto = o espaço livre, mas nunca mais alta que a tela: numa moldura vertical (3/4) ou quadrada a largura
   segue a altura máxima (--pj-frame-h × proporção) e os metadados continuam encostados na foto */
body.obj-master:not(#obj):not(#obj) .pj-detail__body{
  --pj-frame-h:max(560px, 100vh - 160px);
  --pj-frame-w:calc(var(--pj-frame-h) * (var(--ratio, 3 / 2)));
  min-width:0; padding:0 0 140px 30px;     /* os 140 px ficam dentro da linha: ela desce até a seção cinza */
  display:grid; grid-template-columns:min(calc(100% - 185px), var(--pj-frame-w)) 165px; column-gap:20px;
  grid-template-areas:"media meta" "text text";
}
body.obj-master:not(#obj):not(#obj) .pj-detail__body.has-gallery{ grid-template-columns:min(calc(100% - 328px), var(--pj-frame-w)) 150px 138px; grid-template-areas:"media thumbs meta" "text text text"; }
body.obj-master:not(#obj):not(#obj) .pj-detail__media{ grid-area:media; position:relative; aspect-ratio:var(--ratio, 3 / 2); overflow:hidden; background:#DADBDD; }
body.obj-master:not(#obj):not(#obj) .pj-detail__media picture{ position:absolute; inset:0; transition:opacity 180ms var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-detail__media.is-swapping picture{ opacity:0; }
body.obj-master:not(#obj):not(#obj) .pj-detail__media img{
  display:block; width:100%; height:100%; max-width:none;
  object-fit:var(--fit, cover); object-position:var(--pos, 50% 50%);
  transform:scale(1); transition:transform 600ms var(--ease-out);
}
/* a foto principal é um botão (abre o visualizador): cursor pointer, como os demais links; no hover, a foto aproxima
   de leve, na mesma linguagem dos cards de /projetos/ */
body.obj-master:not(#obj):not(#obj) .pj-detail__open{ position:absolute; inset:0; display:block; width:100%; height:100%; margin:0; padding:0; border:0; border-radius:0; background:none; cursor:pointer; }
body.obj-master:not(#obj):not(#obj) .pj-detail__open:hover img{ transform:scale(1.03); }
body.obj-master:not(#obj):not(#obj) .pj-detail__open:focus-visible{ outline:2px solid var(--accent); outline-offset:-4px; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumbs{ grid-area:thumbs; display:flex; flex-direction:column; justify-content:flex-start; gap:10px; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb{ position:relative; display:block; width:100%; margin:0; padding:0; border:0; border-radius:0; background:#DADBDD; cursor:pointer; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb::after{ content:""; position:absolute; inset:0; box-shadow:inset 0 0 0 3px var(--accent); opacity:0; transition:opacity 200ms var(--ease-out); pointer-events:none; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb.is-active::after{ opacity:1; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb img{ display:block; width:100%; height:auto; max-width:none; transition:opacity 200ms var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb:hover img{ opacity:.82; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb.is-active:hover img{ opacity:1; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }

/* ---------- VISUALIZADOR DE FOTOS (todas as páginas de projeto) ----------
   Camada escura com desfoque, foto grande e centralizada, fechar no canto, setas, contador e faixa de miniaturas.
   Entra com fade + leve zoom (260 ms); a troca de foto sai/entra em fade com deslize curto na direção do clique. */
body.obj-master:not(#obj):not(#obj) .pj-viewer{
  position:fixed; inset:0; z-index:100000; display:flex; flex-direction:column; align-items:center; justify-content:flex-start;
  background:rgba(9,9,11,.95); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  opacity:0; visibility:hidden; transition:opacity 260ms var(--ease-out), visibility 0s linear 260ms;
  font-family:var(--f-body); color:#fff; overscroll-behavior:contain; touch-action:pan-y;
}
body.obj-master:not(#obj):not(#obj) .pj-viewer.is-open{ opacity:1; visibility:visible; transition:opacity 260ms var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__stage{ position:relative; flex:1 1 auto; min-height:0; display:flex; align-items:center; justify-content:center; width:100%; padding:64px 88px 0; box-sizing:border-box; transform:scale(.97); transition:transform 320ms var(--ease-premium); }
body.obj-master:not(#obj):not(#obj) .pj-viewer.is-open .pj-viewer__stage{ transform:none; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__figure{ margin:0; display:flex; align-items:center; justify-content:center; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic{ display:block; opacity:1; transform:none; transition:opacity 200ms var(--ease-out), transform 260ms var(--ease-premium); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic.is-out-next{ opacity:0; transform:translateX(-18px); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic.is-out-prev{ opacity:0; transform:translateX(18px); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic.is-in-next{ opacity:0; transform:translateX(18px); transition:none; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic.is-in-prev{ opacity:0; transform:translateX(-18px); transition:none; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic img{ display:block; width:auto; height:auto; max-width:min(100%, 1280px); max-height:calc(100vh - 64px - 150px); max-height:calc(100dvh - 64px - 150px); object-fit:contain; box-shadow:0 24px 80px rgba(0,0,0,.55); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__btn{
  position:absolute; display:flex; align-items:center; justify-content:center; width:48px; height:48px; margin:0; padding:0;
  border:1px solid rgba(255,255,255,.28); border-radius:50%; background:rgba(255,255,255,.04); color:#fff; cursor:pointer;
  transition:background 200ms var(--ease-out), border-color 200ms var(--ease-out), color 200ms var(--ease-out), transform 200ms var(--ease-out);
}
body.obj-master:not(#obj):not(#obj) .pj-viewer__btn:hover,body.obj-master:not(#obj):not(#obj) .pj-viewer__btn:focus-visible{ background:var(--accent); border-color:var(--accent); color:#0c0c0c; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__btn:focus-visible{ outline:2px solid #fff; outline-offset:3px; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__btn svg{ width:18px; height:18px; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__btn path{ fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__close{ top:20px; right:24px; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__prev{ left:24px; top:calc(50% + 8px); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__next{ right:24px; top:calc(50% + 8px); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__prev:hover{ transform:translateX(-2px); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__next:hover{ transform:translateX(2px); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__count{ position:absolute; top:34px; left:28px; font-size:14px; font-weight:500; line-height:20px; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.8); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__count b{ font-weight:500; color:#fff; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__strip{ display:flex; justify-content:center; gap:10px; padding:22px 24px 26px; max-width:100%; box-sizing:border-box; overflow-x:auto; scrollbar-width:none; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__strip::-webkit-scrollbar{ display:none; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb{ position:relative; flex:none; display:block; width:72px; height:72px; margin:0; padding:0; border:0; border-radius:0; background:#222; cursor:pointer; opacity:.5; transition:opacity 200ms var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb img{ display:block; width:100%; height:100%; object-fit:cover; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb::after{ content:""; position:absolute; inset:0; box-shadow:inset 0 0 0 2px var(--accent); opacity:0; transition:opacity 200ms var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb:hover{ opacity:.85; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb.is-active{ opacity:1; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb.is-active::after{ opacity:1; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb:focus-visible{ outline:2px solid #fff; outline-offset:2px; }
body.obj-master:not(#obj):not(#obj) .pj-viewer.is-single .pj-viewer__prev,body.obj-master:not(#obj):not(#obj) .pj-viewer.is-single .pj-viewer__next,body.obj-master:not(#obj):not(#obj) .pj-viewer.is-single .pj-viewer__strip,body.obj-master:not(#obj):not(#obj) .pj-viewer.is-single .pj-viewer__count{ display:none; }
body.obj-master:not(#obj):not(#obj).pj-viewer-open{ overflow:hidden; }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta{ grid-area:meta; margin:0; }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta::before{ content:""; display:block; width:24px; height:3px; margin-bottom:20px; background:var(--accent); }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta div{ margin:0 0 20px; }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta dt{ margin:0 0 5px; font-family:var(--f-body); font-size:13px; font-weight:500; line-height:20px; text-transform:uppercase; color:var(--black); }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta dd{ margin:0; font-family:var(--f-body); font-size:13px; font-weight:400; line-height:20px; text-transform:uppercase; color:var(--ink); }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta dd a{ color:#7D7D7D; text-decoration:none; transition:color var(--duration-micro) var(--ease-out); }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta dd a:hover,body.obj-master:not(#obj):not(#obj) .pj-detail__meta dd a:focus-visible{ color:var(--accent); }
body.obj-master:not(#obj):not(#obj) .pj-detail__text{ grid-area:text; margin-top:29px; }
body.obj-master:not(#obj):not(#obj) .pj-detail__title{ margin:0; font-family:var(--f-body); font-size:35px; font-weight:500; line-height:35px; color:var(--ink); }
body.obj-master:not(#obj):not(#obj) .pj-detail__title .accent{ color:var(--accent); }
body.obj-master:not(#obj):not(#obj) .pj-detail__text p{ margin:40px 0 0; max-width:558px; font-family:var(--f-body); font-size:16px; font-weight:400; line-height:26px; color:var(--ink); }

/* ---------- RESPONSIVO (breakpoints da referência: 991 / 767 / 479) ---------- */
/* desktop estreito (1280–1439): os 5 filtros (~1004 px de texto) cabem numa linha usando a largura inteira da
   aba e espaço mínimo de 28 px, sem reduzir a fonte. Abaixo de ~1200 px a mesma linha passa a rolar. */
@media (max-width:1439px){
  body.obj-master:not(#obj):not(#obj) .pj-filters__track{ --pj-f-gap:28px; --pj-f-pad:20px; }
  body.obj-master:not(#obj):not(#obj) .pj-filter{ font-size:14px; }
}
@media (max-width:991px){
  body.obj-master:not(#obj):not(#obj) .pj-hero__title{ font-size:82px; }
  body.obj-master:not(#obj):not(#obj) .pj-content{ --pj-tab-h:30px; --pj-tab-r:9px; --pj-tab-w:100%; }   /* medido: margin-top -30px, forma na largura toda */
  body.obj-master:not(#obj):not(#obj) .pj-filters{ width:100%; margin-top:14px; }                        /* ESTIMATED — CALIBRATE */
  body.obj-master:not(#obj):not(#obj) .pj-filters__track{ --pj-f-pad:5%; --pj-f-gap:28px; }
  body.obj-master:not(#obj):not(#obj) .pj-filter{ font-size:16px; }
  body.obj-master:not(#obj):not(#obj) .pj-filters__arrow{ display:none; }
  body.obj-master:not(#obj):not(#obj) .pj-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); margin-top:44px; }   /* ESTIMATED — CALIBRATE */
  body.obj-master:not(#obj):not(#obj) .pj-quality{ padding:70px 0; }
  body.obj-master:not(#obj):not(#obj) .pj-quality__grid{ grid-template-columns:minmax(0,1fr); row-gap:40px; }
  body.obj-master:not(#obj):not(#obj) .pj-quality__title{ margin:0 0 22px; line-height:.95; font-size:clamp(56px, 11vw, 96px); }
  body.obj-master:not(#obj):not(#obj) .pj-quality__text .link-arrow{ margin-top:26px; }
  /* página de projeto: navegação da categoria em cima (linha laranja à esquerda), foto + metadados lado a lado */
  body.obj-master:not(#obj):not(#obj) .pj-detail{ grid-template-columns:minmax(0, 1fr); row-gap:32px; margin-top:32px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__nav{ border-right:0; border-left:1px solid var(--accent); }
  body.obj-master:not(#obj):not(#obj) .pj-detail__list{ margin-top:-4px; padding:0 0 0 14px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__list li{ margin-bottom:4px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__item{ font-size:18px; line-height:24px; padding:5px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__body{ padding:0 0 90px; grid-template-columns:min(calc(100% - 158px), var(--pj-frame-w)) 138px; grid-template-areas:"media meta" "text text"; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__thumbs{ flex-direction:row; justify-content:flex-start; margin-top:20px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__thumbs{ flex-wrap:wrap; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__thumb{ width:112px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__body.has-gallery{ grid-template-columns:min(calc(100% - 158px), var(--pj-frame-w)) 138px; grid-template-areas:"media meta" "thumbs thumbs" "text text"; }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__stage{ padding:64px 72px 0; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__title{ font-size:28px; line-height:31px; }
}
@media (max-width:767px){
  body.obj-master:not(#obj):not(#obj) .pj-content{ --pj-tab-r:6px; }
  body.obj-master:not(#obj):not(#obj) .pj-grid{ grid-template-columns:minmax(0,1fr); }
  body.obj-master:not(#obj):not(#obj) .pj-quality{ padding:56px 0; }
  body.obj-master:not(#obj):not(#obj) .pj-quality__title{ font-size:clamp(46px, 13.5vw, 72px); }
  /* celular: navegação → foto → título → descrição → metadados → thumbnails */
  body.obj-master:not(#obj):not(#obj) .pj-detail__body,body.obj-master:not(#obj):not(#obj) .pj-detail__body.has-gallery{
    grid-template-columns:minmax(0, 1fr); row-gap:28px;
    grid-template-areas:"media" "text" "meta";
  }
  body.obj-master:not(#obj):not(#obj) .pj-detail__body.has-gallery{ grid-template-areas:"media" "text" "meta" "thumbs"; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__text{ margin-top:0; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__text p{ margin-top:20px; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__meta div:last-child{ margin-bottom:0; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__thumbs{ margin-top:0; display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:10px; align-items:start; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__thumb{ width:100%; }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__stage{ padding:60px 12px 0; transform:none; }   /* sem zoom de entrada: um palco transformado prenderia as setas fixas */
  body.obj-master:not(#obj):not(#obj) .pj-viewer__pic img{ max-width:100%; max-height:calc(100vh - 60px - 140px); max-height:calc(100dvh - 60px - 140px); }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__btn{ width:42px; height:42px; }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__close{ top:12px; right:12px; }
  /* setas na linha das miniaturas (uma de cada lado), nunca por cima da foto */
  body.obj-master:not(#obj):not(#obj) .pj-viewer__prev,body.obj-master:not(#obj):not(#obj) .pj-viewer__next{ position:fixed; top:auto; bottom:calc(env(safe-area-inset-bottom, 0px) + 24px); }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__prev{ left:12px; }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__next{ right:12px; }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__count{ top:24px; left:16px; }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__strip{ justify-content:flex-start; padding:16px 64px calc(env(safe-area-inset-bottom, 0px) + 18px); }
  body.obj-master:not(#obj):not(#obj) .pj-viewer__strip::before,body.obj-master:not(#obj):not(#obj) .pj-viewer__strip::after{ content:""; flex:1 0 0; }   /* centraliza quando cabe; rola quando não cabe */
  body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb{ width:56px; height:56px; }
}
@media (max-width:479px){
  body.obj-master:not(#obj):not(#obj) .pj-hero__title{ font-size:62px; }
  body.obj-master:not(#obj):not(#obj) .pj-content{ --pj-tab-h:23px; --pj-tab-r:4.5px; }                  /* medido: margin-top -23px */
  body.obj-master:not(#obj):not(#obj) .pj-card__body{ padding:0 0 15px 10px; }
  body.obj-master:not(#obj):not(#obj) .pj-card__meta,body.obj-master:not(#obj):not(#obj) .pj-card__title{ font-size:16px; line-height:18px; }
  body.obj-master:not(#obj):not(#obj) .pj-quality__title{ font-size:clamp(44px, 14vw, 56px); }
}

/* ---------- CELULAR (≤ 560 px): ACORDEÕES "CATEGORIAS" + "PROJETOS" no lugar da barra de categorias ----------
   Referência: /projects da Summit no celular (print + vídeo de abertura). Medido no vídeo, quadro a quadro (30 fps):
   · o painel não empurra a página: abre por cima do que está abaixo (inclusive do outro acordeão), alinhado à caixa;
   · abre num zoom de ~0,8 → 1 (espaçamento dos itens medido quadro a quadro) com origem a ~1/3 da altura, na curva
     "standard" (lento-rápido-lento) em ~240 ms, junto com um fade que chega a ~75% em ~100 ms e termina em ~280 ms;
     fecha mais rápido (~140 ms), acelerando, encolhendo e sumindo;
   · a seta gira 180° no mesmo tempo; um acordeão aberto fecha o outro.
   Caixas de 56 px, fundo branco (#FFF, fechadas, abertas e no painel) com a borda cinza fina do master; itens em
   linhas de 44 px, texto a 17 px. Da Objetaria: Aeonik, laranja do site na seta, no item ativo e no projeto atual,
   cinzas do master. O toque não pisca azul (o flash da referência é o padrão do Android) e não muda o fundo.
   1.2.21: o mesmo componente em TODA a família /projetos/ — na grade e nas 24 páginas de projeto (lá, em links: a
   categoria da página ativa e o projeto atual marcado). No celular ele é a navegação: a barra de categorias e a lista
   lateral da página de projeto ficam só no desktop/tablet. */
@media (max-width:560px){
  body.obj-master:not(#obj):not(#obj) .pj-content .pj-filters{ display:none; }
  body.obj-master:not(#obj):not(#obj) .pj-detail__nav{ display:none; }
  body.obj-master:not(#obj):not(#obj) .pj-acc{
    position:relative; z-index:3;
    display:flex; flex-direction:column; gap:14px;
    width:min(var(--container), 90%); margin:12px auto 0;
  }
  body.obj-master:not(#obj):not(#obj) .pj-acc__item{ position:relative; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__item.is-open{ z-index:2; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__head{
    display:flex; align-items:center; justify-content:space-between; gap:16px;
    width:100%; height:56px; margin:0; padding:0 22px;
    border:1px solid var(--rule); border-radius:2px; background:var(--white);
    font-family:var(--f-body); font-size:16px; font-weight:500; line-height:20px; letter-spacing:0;
    text-align:left; text-transform:none; color:var(--ink);
    cursor:pointer; -webkit-tap-highlight-color:transparent;
  }
  body.obj-master:not(#obj):not(#obj) .pj-acc__head:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__chev{ flex:none; width:12px; height:12px; color:var(--accent); transition:transform 140ms cubic-bezier(.4,0,1,1); }
  body.obj-master:not(#obj):not(#obj) .pj-acc__chev path{ fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__item.is-open .pj-acc__chev{ transform:rotate(180deg); transition:transform 240ms cubic-bezier(.4,0,.2,1); }
  /* painel: camada sobre o conteúdo, colada na base da caixa (a borda de cima é a da própria caixa) */
  body.obj-master:not(#obj):not(#obj) .pj-acc__panel{
    position:absolute; top:calc(100% - 1px); left:0; right:0; z-index:1;
    background:var(--white);
    border:1px solid var(--rule); border-top-color:transparent; border-radius:0 0 2px 2px;
    box-shadow:0 16px 32px rgba(19,19,19,.10), 0 3px 8px rgba(19,19,19,.05);
    opacity:0; visibility:hidden; pointer-events:none;
    transform:scale(.82); transform-origin:50% 30%;
    transition:opacity 140ms cubic-bezier(.4,0,1,1), transform 140ms cubic-bezier(.4,0,1,1), visibility 0s linear 140ms;
  }
  body.obj-master:not(#obj):not(#obj) .pj-acc__item.is-open .pj-acc__panel{
    opacity:1; visibility:visible; pointer-events:auto; transform:none;
    transition:opacity 280ms cubic-bezier(0,0,.2,1), transform 240ms cubic-bezier(.4,0,.2,1), visibility 0s;
  }
  body.obj-master:not(#obj):not(#obj) .pj-acc__list{ list-style:none; margin:0; padding:8px 0; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__list li{ display:block; margin:0; padding:0; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__list li[hidden]{ display:none; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__opt{
    display:flex; align-items:center; width:100%; min-height:44px; margin:0; padding:10px 22px;
    border:0; border-radius:0; background:none;
    font-family:var(--f-body); font-size:17px; font-weight:400; line-height:22px; letter-spacing:0;
    text-align:left; text-transform:none; text-decoration:none; color:var(--muted);
    cursor:pointer; -webkit-tap-highlight-color:transparent;
    transition:color var(--duration-micro) var(--ease-out);
  }
  body.obj-master:not(#obj):not(#obj) .pj-acc__opt:active{ color:var(--accent); }
  /* categoria ativa e projeto atual: o mesmo estado discreto (laranja do site, Medium real) */
  body.obj-master:not(#obj):not(#obj) .pj-acc__opt.is-active,body.obj-master:not(#obj):not(#obj) .pj-acc__opt.is-current{ color:var(--accent); font-weight:500; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__opt:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
  /* "Projetos": a lista longa rola dentro do painel (a página continua rolando fora dele); o pé esmaece enquanto
     houver itens abaixo (no celular a barra de rolagem some) */
  body.obj-master:not(#obj):not(#obj) .pj-acc__panel--scroll .pj-acc__list{ max-height:min(56vh, 448px); max-height:min(56svh, 448px); overflow-y:auto; -webkit-overflow-scrolling:touch; }
  body.obj-master:not(#obj):not(#obj) .pj-acc__panel--scroll .pj-acc__list.is-more{
    -webkit-mask-image:linear-gradient(180deg, #000 calc(100% - 56px), transparent);
            mask-image:linear-gradient(180deg, #000 calc(100% - 56px), transparent);
  }
}
@media (max-width:560px) and (hover:hover){
  body.obj-master:not(#obj):not(#obj) .pj-acc__head:hover .pj-acc__label{ color:var(--accent); }
  body.obj-master:not(#obj):not(#obj) .pj-acc__opt:hover{ color:var(--accent); }
}

/* telas de toque: sem estado de hover preso depois do toque; a linha de filtros rola com o dedo (sem setas) */
@media (hover:none){
  body.obj-master:not(#obj):not(#obj) .pj-filters__arrow{ display:none; }
  body.obj-master:not(#obj):not(#obj) .pj-card:hover .pj-card__media img{ transform:none; }
  body.obj-master:not(#obj):not(#obj) .pj-card:hover .pj-card__meta,body.obj-master:not(#obj):not(#obj) .pj-card:hover .pj-card__title{ color:var(--gray-bg); }
}

/* ===== movimento reduzido: transições do master restauradas (gerado) ===== */
@media (prefers-reduced-motion:reduce){
body.obj-master:not(#obj):not(#obj) .pj-hero__layer{ transition:opacity 380ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-hero__layer img{ transition:transform 600ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-filters__arrow{ transition:opacity 200ms var(--ease-out), visibility 0s linear 200ms, color var(--duration-micro) var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-filters.can-prev .pj-filters__arrow--prev,
body.obj-master:not(#obj):not(#obj) .pj-filters.can-next .pj-filters__arrow--next{ transition:opacity 200ms var(--ease-out), color var(--duration-micro) var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-filter{ transition:color var(--duration-micro) var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-filter::after{ transition:transform 300ms var(--ease-premium) !important; }
body.obj-master:not(#obj):not(#obj) .pj-grid__item.is-leaving{ transition:opacity 160ms var(--ease-in), transform 160ms var(--ease-in) !important; }
body.obj-master:not(#obj):not(#obj) .pj-grid__item.is-entering{ transition:none !important; }
body.obj-master:not(#obj):not(#obj) .pj-grid__item.is-animating{ transition:opacity 320ms var(--ease-premium), transform 320ms var(--ease-premium) !important; }
body.obj-master:not(#obj):not(#obj) .pj-card__media img{ transition:transform 300ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-card__meta{ transition:color 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-card__title{ transition:color 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__item{ transition:color var(--duration-micro) var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__item::after{ transition:transform 300ms var(--ease-premium) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__media picture{ transition:opacity 180ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__media img{ transition:transform 600ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb::after{ transition:opacity 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__thumb img{ transition:opacity 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer{ transition:opacity 260ms var(--ease-out), visibility 0s linear 260ms !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer.is-open{ transition:opacity 260ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__stage{ transition:transform 320ms var(--ease-premium) !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic{ transition:opacity 200ms var(--ease-out), transform 260ms var(--ease-premium) !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic.is-in-next{ transition:none !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__pic.is-in-prev{ transition:none !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__btn{ transition:background 200ms var(--ease-out), border-color 200ms var(--ease-out), color 200ms var(--ease-out), transform 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb{ transition:opacity 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-viewer__thumb::after{ transition:opacity 200ms var(--ease-out) !important; }
body.obj-master:not(#obj):not(#obj) .pj-detail__meta dd a{ transition:color var(--duration-micro) var(--ease-out) !important; }
@media (max-width:560px){ body.obj-master:not(#obj):not(#obj) .pj-acc__chev{ transition:transform 140ms cubic-bezier(.4,0,1,1) !important; } }
@media (max-width:560px){ body.obj-master:not(#obj):not(#obj) .pj-acc__item.is-open .pj-acc__chev{ transition:transform 240ms cubic-bezier(.4,0,.2,1) !important; } }
@media (max-width:560px){ body.obj-master:not(#obj):not(#obj) .pj-acc__panel{ transition:opacity 140ms cubic-bezier(.4,0,1,1), transform 140ms cubic-bezier(.4,0,1,1), visibility 0s linear 140ms !important; } }
@media (max-width:560px){ body.obj-master:not(#obj):not(#obj) .pj-acc__item.is-open .pj-acc__panel{ transition:opacity 280ms cubic-bezier(0,0,.2,1), transform 240ms cubic-bezier(.4,0,.2,1), visibility 0s !important; } }
@media (max-width:560px){ body.obj-master:not(#obj):not(#obj) .pj-acc__opt{ transition:color var(--duration-micro) var(--ease-out) !important; } }
}
