/* assets/css/reset.css */
/**
 * Reset enxuto.
 */

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

* {
	margin: 0;
}

html {
	-webkit-text-size-adjust: none;
	text-size-adjust: none;
}

body {
	min-height: 100dvh;
	-webkit-font-smoothing: antialiased;
}

img,
picture,
video,
canvas,
svg {
	display: block;
	max-width: 100%;
}

img {
	height: auto;
}

input,
button,
textarea,
select {
	font: inherit;
	color: inherit;
}

button {
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}

a {
	color: inherit;
	text-decoration-skip-ink: auto;
}

ul[role="list"],
ol[role="list"] {
	list-style: none;
	padding: 0;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
	overflow-wrap: break-word;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* assets/css/tokens.css */
/**
 * Design tokens: cores, tipografia, espaçamentos e grid.
 *
 * Breakpoints (media queries não aceitam variáveis):
 *   md ≥ 768px · lg ≥ 1024px · xl ≥ 1200px
 */

/* Fontes (Outfit, somente 200 e 500) */
@font-face {
	font-family: "Outfit";
	font-style: normal;
	font-weight: 200;
	font-display: swap;
	src: url("https://moisesdemoura.com.br/wp-content/themes/moisesdemoura/assets/css/../fonts/outfit-latin-200-normal.woff2") format("woff2");
}

@font-face {
	font-family: "Outfit";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("https://moisesdemoura.com.br/wp-content/themes/moisesdemoura/assets/css/../fonts/outfit-latin-500-normal.woff2") format("woff2");
}

:root {
	/* Cores */
	--color-black: #101010;
	--color-white: #fff;
	--color-grey-medium: #999;

	/* Tipografia */
	--font-family: "Outfit", sans-serif;
	--font-light: 200;
	--font-medium: 500;

	/* Mobile; desktop (≥768px) no media query abaixo */
	--font-size-body: 1.1rem;         /* 17.6px */
	--line-height-body: 1.3;
	--text-gap: calc(var(--font-size-body) * var(--line-height-body)); /* uma linha de texto: ritmo vertical entre blocos */
	--font-size-display-compact: 2.525rem; /* 40.4px · mobile e menu em telas baixas */
	--font-size-display: var(--font-size-display-compact); /* títulos de seção e menu */
	--line-height-display: 0.91;
	--font-size-logo: 1.125rem;     /* 18px */
	--font-size-eyebrow: 0.75rem;   /* 12px */
	--font-size-small: 0.6875rem;   /* 11px · menu, contador, copyright, CTA */
	--font-size-micro: 0.5625rem;   /* 9px · número de fotos no card (limite da visibilidade) */
	--letter-spacing-eyebrow: 0.4em; /* Photoshop +400 */

	/* Espaçamentos: tudo deriva de --space-unit */
	--space-unit: 12px;
	--space-block: calc(var(--space-unit) * 6);

	/* Grid (edsonferreira.com) */
	--content-max: 1280px;
	--container-pad: calc(var(--space-unit) * 2);
	--grid-columns: 12;
	--grid-gap: calc(var(--space-unit) * 4);
	/* Padding lateral que centraliza o conteúdo em elementos full-width (sem wrapper) */
	--page-gutter: max(var(--container-pad), calc((100% - var(--content-max)) / 2));

	/* Componentes */
	--header-height: calc(var(--space-unit) * 8);
	--cta-size: calc(var(--space-unit) * 12.5);
	--hero-film-speed: 40; /* velocidade do filme do hero, em px por segundo (lida pelo main.js) */
	--icon-size: 18px;
	/* X fino (menu aberto e fechar do fullscreen) */
	--icon-close:
		linear-gradient(45deg, transparent calc(50% - 1px), currentColor calc(50% - 1px) calc(50% + 1px), transparent calc(50% + 1px)),
		linear-gradient(-45deg, transparent calc(50% - 1px), currentColor calc(50% - 1px) calc(50% + 1px), transparent calc(50% + 1px));

	/* Animações */
	--ease-out: cubic-bezier(0.22, 1, 0.36, 1);
	--ease-in: cubic-bezier(0.64, 0, 0.78, 0); /* espelho de --ease-out, para saídas */
	--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
	--duration: 0.6s;
}

@media (min-width: 768px) {
	:root {
		--container-pad: calc(var(--space-unit) * 4);
		--font-size-body: 1.25rem;      /* 20px · 26px de entrelinha */
		--font-size-display: 4.125rem;  /* 66px · 60px de entrelinha */
	}
}

@media (min-width: 1024px) {
	:root {
		--container-pad: calc(var(--space-unit) * 7);
	}
}

/* assets/vendor/swiper/swiper-bundle.min.css */
/**
 * Swiper 14.3.0
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * https://swiperjs.com
 *
 * Copyright 2014-2026 Vladimir Kharlampidi
 *
 * Released under the MIT License
 *
 * Released on: September 28, 2026
 */

:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;.swiper-cube-shadow,.swiper-slide{transform-style:preserve-3d}}.swiper-css-mode{>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}}>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{>.swiper-wrapper{scroll-snap-type:x mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{>.swiper-wrapper{scroll-snap-type:y mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{>.swiper-wrapper{scroll-snap-type:none}>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}}}.swiper-3d{.swiper-slide-shadow,.swiper-slide-shadow-bottom,.swiper-slide-shadow-left,.swiper-slide-shadow-right,.swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-slide-shadow{background:#00000026}.swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}.swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}.swiper-slide-shadow-top{background-image:linear-gradient(0deg,#00000080,#0000)}.swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,#00000080,#0000)}}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible,.swiper:not(.swiper-watch-progress){.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode{.swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}}.swiper-virtual.swiper-css-mode.swiper-horizontal{.swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.swiper-virtual.swiper-css-mode.swiper-vertical{.swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10;&.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}&.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled &{display:none!important}::slotted(svg),svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;.swiper-navigation-icon,::slotted(.swiper-navigation-icon){transform:rotate(180deg)}}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev,&~.swiper-button-next,.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{.swiper-navigation-icon,::slotted(.swiper-navigation-icon){transform:rotate(180deg)}}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev{.swiper-navigation-icon,::slotted(.swiper-navigation-icon){transform:rotate(0deg)}}}.swiper-vertical{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-button-prev,~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);.swiper-navigation-icon,::slotted(.swiper-navigation-icon){transform:rotate(-90deg)}}.swiper-button-next,~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;.swiper-navigation-icon,::slotted(.swiper-navigation-icon){transform:rotate(90deg)}}}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10;&.swiper-pagination-hidden{opacity:0}&.swiper-pagination-disabled,.swiper-pagination-disabled>&{display:none!important}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;.swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullet-active,.swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));button&{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable &{cursor:pointer}&:only-child{display:none!important}}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0);.swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}&.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px;.swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets{.swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}&.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap;.swiper-pagination-bullet{transition:transform .2s,left .2s}}}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;.swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:right top}&.swiper-pagination-horizontal,&.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-horizontal>&,.swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}&.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,&.swiper-pagination-vertical,.swiper-horizontal>&.swiper-pagination-progressbar-opposite,.swiper-vertical>&{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;&.swiper-scrollbar-disabled,.swiper-scrollbar-disabled>&{display:none!important}&.swiper-scrollbar-horizontal,.swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}&.swiper-scrollbar-vertical,.swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%;>canvas,>img,>svg{max-height:100%;max-width:100%;object-fit:contain}}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade{&.swiper-free-mode{.swiper-slide{transition-timing-function:ease-out}}.swiper-slide{pointer-events:none;transition-property:opacity;.swiper-slide{pointer-events:none}}.swiper-slide-active{pointer-events:auto;& .swiper-slide-active{pointer-events:auto}}}.swiper.swiper-cube{overflow:visible}.swiper-cube{.swiper-slide{backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1;.swiper-slide{pointer-events:none}}&.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}.swiper-slide-active,.swiper-slide-next,.swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0;&:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}}}.swiper-cube{.swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}}.swiper-cube{.swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-slide-shadow-cube.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}}.swiper.swiper-flip{overflow:visible}.swiper-flip{.swiper-slide{backface-visibility:hidden;pointer-events:none;z-index:1;.swiper-slide{pointer-events:none}}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}}.swiper-flip{.swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-slide-shadow-flip.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}}.swiper-creative{.swiper-slide{backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}}.swiper.swiper-cards{overflow:visible}.swiper-cards{.swiper-slide{backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}}
/* assets/css/main.css */
/**
 * Estilos do tema.
 */

/* =========================================================
   Base
   ========================================================= */

html {
	scroll-behavior: smooth;
	scroll-padding-top: var(--header-height);
}

html.is-menu-open,
html.is-lightbox-open {
	overflow: hidden;
}

body {
	background: var(--color-white);
	color: var(--color-black);
	font-family: var(--font-family);
	font-size: var(--font-size-body);
	font-weight: var(--font-light);
	line-height: var(--line-height-body);
	/* Coluna header → main → footer (min-height 100dvh no reset): o main ocupa a sobra e o footer fica no fundo */
	display: flex;
	flex-direction: column;
}

strong,
b {
	font-weight: var(--font-medium);
}

/*
 * Espaçamento vertical do conteúdo (regras únicas, em todos os templates):
 * - main: distância até o header; cresce até encostar o footer no fundo em páginas curtas;
 * - blocos irmãos dentro do main (seções, post + navegação, cabeçalho da busca + grid): --space-block.
 */
main {
	flex-grow: 1;
	padding-top: calc(var(--space-unit) * 2.5);
}

main > * + * {
	margin-top: var(--space-block);
}

/* Rótulo acima dos títulos (ABOUT, MANIFESTO, datas) */
.eyebrow {
	font-size: var(--font-size-eyebrow);
	font-weight: var(--font-medium);
	letter-spacing: var(--letter-spacing-eyebrow);
	line-height: 1;
	text-transform: uppercase;
	color: var(--color-grey-medium);
}

/* Títulos grandes (seções e post) */
.display {
	font-size: var(--font-size-display);
	font-weight: var(--font-light);
	line-height: var(--line-height-display);
}

/* =========================================================
   Header
   ========================================================= */

.site-header {
	position: sticky;
	top: 0;
	z-index: 20;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--grid-gap);
	height: var(--header-height);
	padding-inline: var(--page-gutter);
	background: var(--color-white);
	/* Descendo: acompanha o conteúdo até sair. Subindo: volta suave (main.js controla --header-offset) */
	transform: translateY(var(--header-offset, 0px));
}

.site-header.is-revealing {
	transition: transform var(--duration) var(--ease-out);
}

/* Mobile: nome e slogan em duas linhas, sem vírgula. Tablet+: uma linha com vírgula. */
.site-logo {
	font-size: var(--font-size-logo);
	text-decoration: none;
}

.site-logo strong {
	display: block;
}

@media (min-width: 768px) {
	.site-logo strong {
		display: inline;
	}

	.site-logo strong::after {
		content: ",";
	}
}

.menu-toggle {
	display: grid;
	grid-template-columns: auto 17px; /* ícone: 3 quadrados de 3px + 2 espaços de 4px */
	align-items: center;
	gap: var(--space-unit);
	font-size: var(--font-size-small);
	font-weight: var(--font-medium);
	text-transform: uppercase;
}

/* Ícone: grade 3x3 (fechado) e X (aberto), sobrepostos na mesma célula */
.menu-toggle::before,
.menu-toggle::after {
	content: "";
	grid-area: 1 / 2;
	aspect-ratio: 1;
	transition: opacity var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}

/* Quadrados de 3px a cada 7px: colunas (background) × linhas (mask) */
.menu-toggle::before {
	background: linear-gradient(90deg, currentColor 3px, transparent 3px) 0 0 / 7px 7px;
	mask: linear-gradient(currentColor 3px, transparent 3px) 0 0 / 7px 7px;
}

.menu-toggle::after {
	justify-self: end;
	width: var(--icon-size); /* X independente da coluna de 17px dos pontos */
	background: var(--icon-close);
	opacity: 0;
	transform: rotate(-90deg) scale(0.4);
}

.is-menu-open .menu-toggle::before {
	opacity: 0;
	transform: rotate(90deg) scale(0.4);
}

.is-menu-open .menu-toggle::after {
	opacity: 1;
	transform: none;
}

/* =========================================================
   Footer (claro, em todas as páginas)
   Mobile: logo acima do copyright, à esquerda. Tablet+: em linha, como o header.
   ========================================================= */

.site-footer {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-unit);
	margin-top: calc(var(--space-unit) * 2);
	padding: calc(var(--space-unit) * 3) var(--page-gutter);
}

.site-copyright {
	font-size: var(--font-size-small);
	font-weight: var(--font-medium);
	line-height: 1;
	text-transform: uppercase;
}

@media (min-width: 768px) {
	.site-footer {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: var(--grid-gap);
		min-height: var(--header-height);
		padding-block: 0;
	}
}

/* =========================================================
   Menu em tela cheia
   ========================================================= */

.site-menu {
	position: fixed;
	inset: 0;
	z-index: 10;
	display: grid;
	grid-template-columns: 1fr auto;
	/* safe: centraliza quando cabe; quando não cabe (muitos itens, celular deitado), começa no topo e rola */
	align-content: safe center;
	align-items: start;
	gap: var(--grid-gap);
	padding: var(--header-height) var(--page-gutter);
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--color-white);
	opacity: 0;
	visibility: hidden;
	/* Saída (reverso da entrada): quadrado → itens de baixo p/ cima → fundo */
	transition:
		opacity var(--duration) var(--ease-in) 0.24s,
		visibility 0s linear calc(var(--duration) + 0.24s);
}

.is-menu-open .site-menu {
	opacity: 1;
	visibility: visible;
	transition: opacity var(--duration) var(--ease-out);
}

.site-menu ul {
	display: grid;
	gap: calc(var(--space-unit) * 3.5);
	padding: 0;
	list-style: none;
	counter-reset: menu;
}

.site-menu li {
	overflow: hidden;
	counter-increment: menu;
}

.site-menu li a {
	display: grid;
	grid-template-columns: calc(var(--space-unit) * 5) auto;
	width: fit-content;
	align-items: start;
	font-size: var(--font-size-display);
	line-height: var(--line-height-display);
	text-decoration: none;
	transform: translateY(100%);
	transition: transform var(--duration) var(--ease-in);
}

.site-menu li:nth-last-child(1) a { transition-delay: 0.06s; }
.site-menu li:nth-last-child(2) a { transition-delay: 0.12s; }
.site-menu li:nth-last-child(3) a { transition-delay: 0.18s; }
.site-menu li:nth-last-child(4) a { transition-delay: 0.24s; }
.site-menu li:nth-last-child(5) a { transition-delay: 0.3s; }
.site-menu li:nth-last-child(6) a { transition-delay: 0.36s; }

.site-menu li a::before {
	content: counter(menu, decimal-leading-zero);
	padding-top: 0.75em; /* alinha ao topo das maiúsculas */
	font-size: var(--font-size-eyebrow);
	font-weight: var(--font-medium);
	letter-spacing: var(--letter-spacing-eyebrow);
	line-height: 1;
	color: var(--color-grey-medium);
}

/* Entrada: itens de cima p/ baixo */
.is-menu-open .site-menu li a {
	transform: none;
	transition: transform var(--duration) var(--ease-out);
}

.is-menu-open .site-menu li:nth-child(2) a { transition-delay: 0.06s; }
.is-menu-open .site-menu li:nth-child(3) a { transition-delay: 0.12s; }
.is-menu-open .site-menu li:nth-child(4) a { transition-delay: 0.18s; }
.is-menu-open .site-menu li:nth-child(5) a { transition-delay: 0.24s; }
.is-menu-open .site-menu li:nth-child(6) a { transition-delay: 0.3s; }

.site-menu .cta-square {
	margin-top: calc(var(--space-unit) * 0.75); /* mesmo alinhamento dos números */
	opacity: 0;
	transform: translateY(var(--space-unit));
	transition: opacity var(--duration) var(--ease-in), transform var(--duration) var(--ease-in);
}

.is-menu-open .site-menu .cta-square {
	opacity: 1;
	transform: none;
	transition: opacity var(--duration) var(--ease-out) 0.24s, transform var(--duration) var(--ease-out) 0.24s;
}

/* Telas baixas (ex.: celular deitado): itens do menu no tamanho compacto */
@media (max-height: 499px) {
	.site-menu li a {
		font-size: var(--font-size-display-compact);
	}
}

/* Celular em pé: Instagram abaixo da lista. Deitado, fica à direita como no desktop. */
@media (max-width: 767px) and (orientation: portrait) {
	.site-menu {
		grid-template-columns: 1fr;
	}
}

/* =========================================================
   Hero
   ========================================================= */

.hero {
	display: grid;
	justify-items: center;
}

/*
 * Janela do hero: largura do container (corta os slides na borda do grid),
 * proporção 1:1 no mobile e 16:9 a partir de 768px. Em telas baixas, a altura
 * é limitada para a janela e o contador caberem na primeira dobra.
 */
.hero .swiper {
	width: min(var(--content-max), 100% - 2 * var(--container-pad));
	aspect-ratio: 1;
	max-height: calc(100svh - var(--header-height) - var(--space-unit) * 6);
}

@media (min-width: 768px) {
	.hero .swiper {
		aspect-ratio: 16 / 9;
	}
}

/* Fotos na altura da janela, largura natural */
.hero .swiper-slide {
	width: auto;
	max-width: none; /* panorâmicas mantêm a proporção, mesmo mais largas que o container */
	height: 100%;
}

/* Filme contínuo (main.js): linear enquanto o autoplay roda (sobrepõe o ease-out do free mode do Swiper) */
.hero .swiper.is-playing > .swiper-wrapper {
	transition-timing-function: linear;
}

/* Sliders de fotos (Hero e fullscreen): arrastar não seleciona nem "puxa" as imagens */
:is(.hero, .lightbox) .swiper {
	-webkit-user-select: none;
	user-select: none;
}

:is(.hero, .lightbox) .swiper-slide {
	-webkit-user-drag: none;
}

.hero-counter {
	justify-self: start;
	width: min(var(--content-max), 100% - 2 * var(--container-pad));
	margin: calc(var(--space-unit) * 1.5) auto 0;
	font-size: var(--font-size-small);
	font-weight: var(--font-medium);
	line-height: 1;
	text-transform: uppercase;
}

.hero .cta-square {
	margin-top: calc(var(--space-unit) * 2.5);
}

/* =========================================================
   Split: eyebrow, cabeça (5 colunas) e corpo (7 colunas)
   Usado em About, Manifesto e posts de texto. Mobile: uma coluna; 12 colunas a partir de 768px.
   ========================================================= */

.split {
	display: grid;
	grid-template-columns: minmax(0, 1fr); /* coluna única no celular, sem esticar com conteúdo largo */
	padding-inline: var(--page-gutter);
}

.split > .eyebrow {
	grid-column: 1 / -1;
	margin-bottom: calc(var(--space-unit) * 1.5);
}

.split-head,
.split-body {
	grid-column: 1 / -1;
}

/* Mobile (empilhado): título → texto e entre blocos = uma linha em branco, igual aos parágrafos */
.split-head .display + *,
.split-body {
	margin-top: 1lh;
}

/* Coluna única (template Full width): conteúdo abaixo do título, a --space-block dele */
.split-full .split-head,
.split-full .split-body {
	grid-column: 1 / -1;
}

.split-full .split-body {
	margin-top: var(--space-block);
}

/* CTA sozinho na coluna direita do .split (404 / nada encontrado) */
.split > .cta-square {
	margin-top: var(--text-gap);
}

/* Ritmo vertical: uma linha em branco entre parágrafos e entre quaisquer blocos do corpo */
.split p + p,
.split-body > * + * {
	margin-top: var(--text-gap);
}

/* Conteúdo do editor (posts) */
.split-body :is(h2, h3, h4, h5, h6) {
	font-weight: var(--font-light);
	line-height: 1.1;
}

/* Respiro maior antes dos subtítulos: o dobro do espaço entre parágrafos */
.split-body > * + :is(h2, h3, h4, h5, h6) {
	margin-top: calc(var(--text-gap) * 2);
}

/* Subtítulos decrescem a partir do título principal (.display) */
.split-body h2 { font-size: calc(var(--font-size-display) * 0.6); }
.split-body h3 { font-size: calc(var(--font-size-display) * 0.48); }
.split-body h4 { font-size: calc(var(--font-size-display) * 0.4); }
.split-body :is(h5, h6) { font-size: var(--font-size-body); font-weight: var(--font-medium); }

/* Listas: traço (mesmo traço de 2px do X do menu) ou número (estilo dos números do menu), na cor do eyebrow */
.split-body :is(ul, ol) {
	padding: 0;
	list-style: none;
	counter-reset: list;
}

.split-body li {
	position: relative;
	padding-left: calc(var(--space-unit) * 3);
	counter-increment: list;
}

.split-body li + li {
	margin-top: calc(var(--space-unit) * 0.5);
}

.split-body li::before {
	position: absolute;
	left: 0;
	color: var(--color-grey-medium);
}

.split-body ul > li::before {
	content: "";
	top: calc(var(--text-gap) / 2 - 1px);
	width: var(--space-unit);
	height: 2px;
	background: currentColor;
}

.split-body ol > li::before {
	content: counter(list, decimal-leading-zero);
	top: 0;
	font-size: var(--font-size-eyebrow);
	font-weight: var(--font-medium);
	letter-spacing: var(--letter-spacing-eyebrow);
	line-height: var(--text-gap);
}

/* Imagens na largura da coluna, sem esticar; menores ficam centralizadas */
.split-body img {
	display: block;
	max-width: 100%;
	height: auto;
	margin-inline: auto;
}

.is-lowercase {
	text-transform: lowercase;
}

/* Links nos textos: invertidos (branco sobre preto), sem hover (quadrados CTA mantêm o próprio estilo) */
.split a:not(.cta-square) {
	padding-inline: 0.2em;
	background: var(--color-black);
	color: var(--color-white);
	text-decoration: none;
}

@media (min-width: 768px) {
	.split {
		grid-template-columns: repeat(var(--grid-columns), minmax(0, 1fr));
		column-gap: var(--grid-gap);
	}

	.split-head {
		grid-column: 1 / span 5;
	}

	.split-head .display + * {
		margin-top: calc(var(--space-unit) * 1.5); /* medida do PSD com colunas lado a lado */
	}

	.split-body {
		grid-column: 6 / -1;
		margin-top: 0;
	}

	/* Alinhado à direita, como o CTA do menu aberto */
	.split > .cta-square {
		grid-column: 6 / -1;
		justify-self: end;
		margin-top: 0;
	}

	/* Título fixo na coluna esquerda durante a leitura (Manifesto e posts) */
	.split-sticky .split-head {
		position: sticky;
		top: var(--header-height);
		align-self: start;
	}
}

/* About: fotos sempre lado a lado, mesma altura, largura proporcional (flex-grow = proporção, no HTML) */
.about-photos {
	display: flex;
	gap: calc(var(--space-unit) * 1.5);
	margin-top: calc(var(--space-unit) * 4);
}

.about-photos figure {
	flex-basis: 0;
	min-width: 0;
}

.about-photos img {
	width: 100%;
}

.about-photos figcaption {
	margin-top: var(--space-unit);
	font-size: var(--font-size-small);
	font-weight: var(--font-medium);
	line-height: 1;
}

/* =========================================================
   Navegação anterior/próximo (posts): quadrados CTA
   ========================================================= */

.post-nav {
	display: flex;
	justify-content: space-between;
	gap: var(--grid-gap);
	padding-inline: var(--page-gutter);
}

/* Título do post: no máximo 3 linhas (o corte fica no span; no quadrado de altura fixa ele vazaria) */
.post-nav .cta-square span {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}

.post-nav .is-next {
	margin-left: auto; /* fica à direita mesmo sem o "anterior" */
	text-align: right;
}

/* =========================================================
   Grids (página Photos, archives e busca)
   Fotos: card com imagem, abre o fullscreen do post. Textos: quadrado preto (CTA) que abre o post.
   ========================================================= */

.grid-page {
	display: grid;
	justify-items: center;
	padding-inline: var(--page-gutter);
}

/* 2 colunas no mobile, 3 no tablet, 4 a partir de 1024px */
.card-grid {
	justify-self: stretch;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--space-unit);
}

/* Espaço abaixo do quadrado "Watch all" (página Photos) */
.cta-square + .card-grid {
	margin-top: calc(var(--space-unit) * 5);
}

@media (min-width: 768px) {
	.card-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.card-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/*
 * Card de texto: variação do quadrado CTA, ocupando a célula do grid (sobrepõe a largura fixa do .cta-square).
 * Fonte light, 1.5× o tamanho do CTA; título em até 3 linhas (75% da largura a partir de 1200px).
 */
.card-grid .text-card {
	width: 100%;
	font-size: calc(var(--font-size-eyebrow) * 1.5);
	font-weight: var(--font-light);
}

.text-card span {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}

@media (min-width: 1200px) {
	.text-card span {
		max-width: 75%;
	}
}

/* Hover (só com hover real): o título desliza suavemente para a direita */
@media (hover: hover) and (pointer: fine) {
	.text-card span {
		transition: transform 0.75s ease-out;
	}

	.text-card:hover span {
		transform: translateX(var(--space-unit));
		transition-duration: 0.5s;
		transition-timing-function: ease-in-out;
	}
}

/* Cards/itens carregados por AJAX: entram subindo e aparecendo (animação da v1), escalonados pelo main.js */
:is(.card-grid, .result-list) > .is-entering {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.4s ease, transform 0.4s ease;
}

:is(.card-grid, .result-list) > .is-entering.is-visible {
	opacity: 1;
	transform: none;
}

.photo-card {
	position: relative;
	aspect-ratio: 3 / 4;
	overflow: hidden;
}

.photo-card img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Quantidade de fotos do post: mini CTA (quadrado preto de 4u), no canto inferior esquerdo */
.photo-count {
	position: absolute;
	bottom: var(--space-unit);
	left: var(--space-unit);
	width: calc(var(--space-unit) * 4);
	aspect-ratio: 1;
	padding: calc(var(--space-unit) * 0.5);
	background: var(--color-black);
	color: var(--color-white);
	font-size: var(--font-size-micro);
	font-weight: var(--font-medium);
	line-height: 1;
	text-align: left;
}

/* Só em dispositivos com hover real: grade em P&B; no hover, a cor volta e a foto aproxima (zoom da v1) */
@media (hover: hover) and (pointer: fine) {
	/*
	 * Entrada (hover) em 0.5s com ease-in-out; saída em 0.75s com ease-out.
	 * translate3d + will-change mantêm a imagem sempre na própria camada (GPU): sem a troca de camada
	 * no início/fim da transição, que causa pequenos saltos de rasterização.
	 */
	.photo-card img {
		filter: grayscale(1);
		transform: translate3d(0, 0, 0) scale(1);
		backface-visibility: hidden;
		will-change: transform, filter;
		transition:
			filter 0.75s ease-out,
			transform 0.75s ease-out;
	}

	.photo-card:hover img {
		filter: grayscale(0);
		transform: translate3d(0, 0, 0) scale(1.03);
		transition-duration: 0.5s;
		transition-timing-function: ease-in-out;
	}
}

/* =========================================================
   Formulário de busca: linha de base de 2px (traço do X) e botão mini CTA
   ========================================================= */

.search-form {
	display: flex;
	align-items: flex-end;
	gap: var(--space-unit);
}

.search-form label {
	flex: 1;
}

.search-field {
	width: 100%;
	padding: calc(var(--space-unit) * 0.5) 0;
	border: 0;
	border-bottom: 2px solid var(--color-black);
	border-radius: 0;
	background: transparent;
	font-weight: var(--font-light);
	outline: none;
}

.search-field::placeholder {
	color: var(--color-grey-medium);
}

.search-submit {
	padding: calc(var(--space-unit) * 0.75) calc(var(--space-unit) * 1.5);
	border: 0;
	border-radius: 0;
	background: var(--color-black);
	color: var(--color-white);
	font-size: var(--font-size-small);
	font-weight: var(--font-medium);
	line-height: 1;
	text-transform: uppercase;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}

/* Resultados: lista numerada como o menu (número eyebrow + título), títulos em caixa alta no tamanho do H2 */
.result-list {
	display: grid;
	gap: calc(var(--space-unit) * 3.5); /* mesmo respiro do menu */
	padding-inline: var(--page-gutter);
	list-style: none;
	counter-reset: result;
}

.result-list li {
	display: grid;
	grid-template-columns: calc(var(--space-unit) * 5) minmax(0, 1fr);
	align-items: start;
	counter-increment: result;
}

.result-list li::before {
	content: counter(result, decimal-leading-zero);
	padding-top: calc(var(--font-size-display) * 0.025); /* alinha ao topo das maiúsculas do título (display × 0.4) */
	font-size: var(--font-size-eyebrow);
	font-weight: var(--font-medium);
	letter-spacing: var(--letter-spacing-eyebrow);
	line-height: 1;
	color: var(--color-grey-medium);
}

.result-list a {
	justify-self: start;
	font-size: calc(var(--font-size-display) * 0.4);
	line-height: var(--line-height-display);
	text-transform: uppercase;
	text-decoration: none;
}

/* Hover (só com hover real): o título desliza suavemente para a direita, como nos cards de texto */
@media (hover: hover) and (pointer: fine) {
	.result-list a {
		transition: transform 0.75s ease-out;
	}

	.result-list a:hover {
		transform: translateX(var(--space-unit));
		transition-duration: 0.5s;
		transition-timing-function: ease-in-out;
	}
}

/* =========================================================
   CTA (quadrado preto)
   ========================================================= */

.cta-square {
	display: grid;
	width: var(--cta-size);
	aspect-ratio: 1;
	padding: calc(var(--space-unit) * 1.5);
	background: var(--color-black);
	color: var(--color-white);
	font-size: var(--font-size-eyebrow);
	font-weight: var(--font-medium);
	line-height: 1.17;
	text-align: left;
	text-transform: uppercase;
	text-decoration: none;
	align-content: start;
}

/* =========================================================
   Fullscreen (lightbox) — criado pelo main.js
   ========================================================= */

.lightbox {
	--lightbox-edge: calc((var(--header-height) - var(--icon-size)) / 6); /* distância dos ícones à borda da tela */
	position: fixed;
	inset: 0;
	z-index: 30;
	background: var(--color-white);
	opacity: 0;
	transition: opacity var(--duration) var(--ease-in);
}

.is-lightbox-open .lightbox {
	opacity: 1;
	transition: opacity var(--duration) var(--ease-out);
}

/* Distância dos ícones à borda: mobile / 6, tablets / 4, desktops / 2 */
@media (min-width: 768px) {
	.lightbox {
		--lightbox-edge: calc((var(--header-height) - var(--icon-size)) / 4);
	}
}

@media (min-width: 1024px) {
	.lightbox {
		--lightbox-edge: calc((var(--header-height) - var(--icon-size)) / 2);
	}
}

/* Tela inteira: cada foto no maior tamanho que cabe (landscape na largura, portrait na altura), sem cortar */
.lightbox .swiper {
	position: absolute;
	inset: 0;
}

.lightbox .swiper-slide {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

/*
 * Botões: ícones finos de 18px (mesmo X do menu), pretos, sobre a foto, nas extremidades da tela.
 * Sem fundo nem sombra: em fotos escuras perdem contraste (escolha do autor, em teste).
 */
.lightbox-close,
.lightbox-prev,
.lightbox-next {
	position: absolute;
	z-index: 2; /* acima do .swiper (z-index 1 do Swiper) */
	width: var(--icon-size);
	aspect-ratio: 1;
	transition: opacity var(--duration) var(--ease-out);
}

.lightbox-close {
	top: var(--lightbox-edge);
	right: var(--lightbox-edge);
	background: var(--icon-close);
}

.lightbox-prev,
.lightbox-next {
	top: calc(50% - var(--icon-size) / 2);
}

.lightbox-prev {
	left: var(--lightbox-edge);
}

.lightbox-next {
	right: var(--lightbox-edge);
}

/* Seta: duas linhas de 2px (mesmo traço do X) */
.lightbox-prev::before,
.lightbox-next::before {
	content: "";
	position: absolute;
	inset: 14%;
	border: solid currentColor;
	border-width: 0 0 2px 2px;
	transform: translateX(15%) rotate(45deg);
}

.lightbox-next::before {
	transform: translateX(-15%) rotate(-135deg);
}

.lightbox .swiper-button-disabled {
	opacity: 0.2;
	cursor: default;
}

