/**
 * PROGEM — preferências de acessibilidade (aba Aparência / perfil).
 * Classes aplicadas em html/body via GuestPreferences + ProgemA11y.
 * Tokens Poseidon / --progem-*; sem hex hardcoded fora de fallbacks.
 */

:root {
	--prog-a11y-media-scale: 1;
	--prog-a11y-image-scale: 1;
	--prog-a11y-button-scale: 1;
	--prog-a11y-icon-scale: 1;
}

/* ---- Escala tipográfica + mídia (ícones/imagens) ---- */
html.prog-a11y-font-85 {
	font-size: 85%;
	--prog-a11y-media-scale: 0.85;
}

html.prog-a11y-font-125 {
	font-size: 125%;
	--prog-a11y-media-scale: 1.25;
}

html.prog-a11y-font-custom {
	font-size: var(--prog-a11y-font-scale, 14pt);
	/* --prog-a11y-media-scale definido no style do html / ProgemA11y */
}

html.prog-a11y-img-85 {
	--prog-a11y-image-scale: 0.85;
}

html.prog-a11y-img-125 {
	--prog-a11y-image-scale: 1.25;
}

html.prog-a11y-btn-85 {
	--prog-a11y-button-scale: 0.85;
}

html.prog-a11y-btn-125 {
	--prog-a11y-button-scale: 1.25;
}

html.prog-a11y-ico-85 {
	--prog-a11y-icon-scale: 0.85;
}

html.prog-a11y-ico-125 {
	--prog-a11y-icon-scale: 1.25;
}

/*
 * Imagens/avatares no conteúdo: escala tipográfica × escala individual de imagem.
 * Topbar/menu já têm contenção em px em .prog-a11y-font-enlarged.
 */
html.prog-a11y-font-85 .layout-main .layout-content img,
html.prog-a11y-font-125 .layout-main .layout-content img,
html.prog-a11y-font-custom .layout-main .layout-content img,
html.prog-a11y-img-85 .layout-main .layout-content img,
html.prog-a11y-img-125 .layout-main .layout-content img,
html.prog-a11y-font-85 .layout-main .card img,
html.prog-a11y-font-125 .layout-main .card img,
html.prog-a11y-font-custom .layout-main .card img,
html.prog-a11y-img-85 .layout-main .card img,
html.prog-a11y-img-125 .layout-main .card img,
html.prog-a11y-font-85 .layout-main .ui-avatar,
html.prog-a11y-font-125 .layout-main .ui-avatar,
html.prog-a11y-font-custom .layout-main .ui-avatar,
html.prog-a11y-img-85 .layout-main .ui-avatar,
html.prog-a11y-img-125 .layout-main .ui-avatar,
html.prog-a11y-font-85 .layout-main .p-avatar,
html.prog-a11y-font-125 .layout-main .p-avatar,
html.prog-a11y-font-custom .layout-main .p-avatar,
html.prog-a11y-img-85 .layout-main .p-avatar,
html.prog-a11y-img-125 .layout-main .p-avatar {
	zoom: calc(var(--prog-a11y-media-scale, 1) * var(--prog-a11y-image-scale, 1));
}

/*
 * Tiles do Google Maps são img dentro de .gm-style. O zoom de acessibilidade
 * desloca o quadrante sem atualizar a posição calculada pelo Maps.
 */
html.prog-a11y-font-85 .layout-main .gm-style img,
html.prog-a11y-font-125 .layout-main .gm-style img,
html.prog-a11y-font-custom .layout-main .gm-style img,
html.prog-a11y-img-85 .layout-main .gm-style img,
html.prog-a11y-img-125 .layout-main .gm-style img {
	zoom: 1;
}

/*
 * Ícones FA / ui-icon no conteúdo (exclui topbar/menu — contenção enlarged).
 */
html.prog-a11y-ico-85 .layout-main .layout-content .fas,
html.prog-a11y-ico-85 .layout-main .layout-content .far,
html.prog-a11y-ico-85 .layout-main .layout-content .fab,
html.prog-a11y-ico-125 .layout-main .layout-content .fas,
html.prog-a11y-ico-125 .layout-main .layout-content .far,
html.prog-a11y-ico-125 .layout-main .layout-content .fab,
html.prog-a11y-ico-85 .layout-main .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action) .ui-icon,
html.prog-a11y-ico-125 .layout-main .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action) .ui-icon {
	font-size: calc(1em * var(--prog-a11y-icon-scale, 1));
}

/*
 * Botões no conteúdo: escala de padding/fonte (exclui FAB/speedDial).
 * Layout autenticado (.layout-main) + páginas guest (body.login-body etc.).
 */
html.prog-a11y-btn-85 .layout-main .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action):not(.prog-mobile-actions-stack__fab):not(.prog-mobile-actions-stack__back-to-top),
html.prog-a11y-btn-125 .layout-main .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action):not(.prog-mobile-actions-stack__fab):not(.prog-mobile-actions-stack__back-to-top),
html.prog-a11y-btn-85 body:is(.login-body, .exception-body, .prog-versao-page) .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action):not(.prog-mobile-actions-stack__fab):not(.prog-mobile-actions-stack__back-to-top),
html.prog-a11y-btn-125 body:is(.login-body, .exception-body, .prog-versao-page) .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action):not(.prog-mobile-actions-stack__fab):not(.prog-mobile-actions-stack__back-to-top) {
	font-size: calc(1em * var(--prog-a11y-button-scale, 1));
	padding-block: calc(0.5rem * var(--prog-a11y-button-scale, 1));
	padding-inline: calc(1rem * var(--prog-a11y-button-scale, 1));
	min-height: calc(2.4em * var(--prog-a11y-button-scale, 1));
}

html.prog-a11y-btn-85 .layout-main .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action),
html.prog-a11y-btn-125 .layout-main .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action),
html.prog-a11y-btn-85 body:is(.login-body, .exception-body, .prog-versao-page) .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action),
html.prog-a11y-btn-125 body:is(.login-body, .exception-body, .prog-versao-page) .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action) {
	padding-inline: calc(0.5rem * var(--prog-a11y-button-scale, 1));
	min-width: calc(2.4em * var(--prog-a11y-button-scale, 1));
}

/*
 * Trilho slim em px (sem zoom no host — zoom quebrava a largura do flyout).
 */
@media screen and (min-width: 993px) {
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) .prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) form.prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) #frmMenuMegaDesktop,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) .prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) form.prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) #frmMenuMegaDesktop {
		width: 72px !important;
		min-width: 72px !important;
		box-sizing: border-box !important;
	}

	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) .layout-main,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) .layout-main {
		margin-left: 72px !important;
	}
}

/*
 * Topbar: altura Poseidon (56px), sem zoom.
 * Contém com px + ellipsis; em Extra grande oculta texto do perfil (só avatares).
 */
html.prog-a11y-font-enlarged .layout-topbar {
	height: 56px !important;
	min-height: 56px !important;
	max-height: 56px !important;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	overflow: visible;
	zoom: normal;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-wrapper {
	height: 56px !important;
	min-height: 56px !important;
	max-height: 56px !important;
	align-items: center !important;
	flex-direction: row !important;
	box-sizing: border-box;
	overflow: visible;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-left {
	height: 56px !important;
	min-height: 56px !important;
	max-height: 56px !important;
	align-items: center !important;
	box-sizing: border-box;
	overflow: visible;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-right {
	height: 56px !important;
	min-height: 56px !important;
	flex: 1 1 auto;
	min-width: 0;
	align-items: center;
	overflow: visible;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	height: 100%;
	min-width: 0;
	max-width: 100%;
	box-sizing: border-box;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.topbar-item {
	flex: 0 0 auto;
	min-width: 0;
	display: flex;
	align-items: center;
	height: 100%;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar {
	flex: 0 1 auto;
	min-width: 0;
	max-width: 200px;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar form > .search-input-wrapper input.ui-inputfield,
html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar form > .prog-global-search-topbar__field input.ui-inputfield,
html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar form > .search-input-wrapper input.ui-inputfield,
html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar form > .prog-global-search-topbar__field input.ui-inputfield {
	width: 160px !important;
	max-width: 160px !important;
	height: 2rem !important;
	font-size: 13px !important;
	line-height: 1.2 !important;
	box-sizing: border-box !important;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar form > .search-input-wrapper input.ui-inputfield,
html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-actions > li.prog-global-search-topbar form > .prog-global-search-topbar__field input.ui-inputfield {
	width: 140px !important;
	max-width: 140px !important;
}

html.prog-a11y-font-enlarged .layout-topbar .layout-topbar-logo img {
	height: 32px !important;
	max-height: 32px !important;
}

html.prog-a11y-font-enlarged .layout-topbar .menu-button {
	width: 2.25rem !important;
	height: 2.25rem !important;
	min-width: 2.25rem !important;
	min-height: 2.25rem !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-icon,
html.prog-a11y-font-enlarged .layout-topbar .topbar-item.notifications > a,
html.prog-a11y-font-enlarged .layout-topbar .topbar-item.settings > a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* Avatares em px — não incham com rem */
html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-avatars {
	padding: 4px 6px;
	gap: 6px;
	max-width: none;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-avatars__empresa {
	width: 28px !important;
	height: 28px !important;
	min-width: 28px !important;
	max-width: 28px !important;
	min-height: 28px !important;
	max-height: 28px !important;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-avatars__usuario {
	width: 32px !important;
	height: 32px !important;
	min-width: 32px !important;
	max-width: 32px !important;
	min-height: 32px !important;
	max-height: 32px !important;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile {
	flex: 0 1 auto;
	min-width: 0;
	max-width: min(220px, 28vw);
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a.progem-topbar-profile-trigger {
	min-width: 0;
	max-width: 100%;
	overflow: hidden;
	height: auto;
	align-items: center;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info {
	min-width: 0;
	max-width: 9rem;
	overflow: hidden;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info h6,
html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info__empresa,
html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info__grupo {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 100%;
	font-size: 12px !important;
	line-height: 1.2 !important;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info h6 {
	font-size: 13px !important;
}

html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info__empresa,
html.prog-a11y-font-enlarged .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info__grupo {
	font-size: 11px !important;
}

/* Escala >= 150%: só avatares no topbar — evita corte na borda direita */
html.prog-a11y-font-xlarge .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info {
	display: none !important;
}

html.prog-a11y-font-xlarge .layout-topbar .topbar-item.user-profile {
	max-width: none;
}

/*
 * Menu.xhtml (accordion): scroll vertical quando rem ampliado.
 * Poseidon deixa overflow:visible em alguns pais — forçar o container.
 */
@media screen and (min-width: 993px) {
	html.prog-a11y-font-enlarged .layout-wrapper:not(.layout-horizontal) .menu-wrapper,
	html.prog-a11y-font-enlarged .layout-wrapper:not(.layout-horizontal) .menu-wrapper {
		height: calc(100vh - 56px) !important;
		max-height: calc(100vh - 56px) !important;
		overflow: hidden !important;
		box-sizing: border-box !important;
	}

	html.prog-a11y-font-enlarged .menu-wrapper .layout-menu-container,
	html.prog-a11y-font-enlarged .menu-wrapper .layout-menu-container {
		height: 100% !important;
		max-height: 100% !important;
		overflow-x: hidden !important;
		overflow-y: auto !important;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
		box-sizing: border-box !important;
	}
}

/*
 * MenuMegaDesktop: trilho com scroll (Relatórios etc. abaixo da dobra).
 * overflow-x hidden no host; flyouts usam position:fixed no JS sob a11y.
 */
@media screen and (min-width: 993px) {
	html.prog-a11y-font-enlarged .layout-wrapper:not(.layout-horizontal) .prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper:not(.layout-horizontal) form.prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) .prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) form.prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay:not(.prog-menu-rail-expanded) #frmMenuMegaDesktop,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay.prog-menu-rail-expanded .prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-overlay.prog-menu-rail-expanded form.prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-static.layout-static-active .prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-static.layout-static-active form.prog-menu-megamenu-host,
	html.prog-a11y-font-enlarged .layout-wrapper.layout-static.layout-static-active form.prog-menu-megamenu-host {
		height: calc(100% - 56px) !important;
		max-height: calc(100vh - 56px) !important;
		overflow-x: hidden !important;
		overflow-y: auto !important;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
		box-sizing: border-box !important;
	}

	html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu-vertical,
	html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu-vertical,
	html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu-vertical > .ui-menu-list,
	html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu-vertical > .ui-menu-list,
	html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu-vertical > .ui-menu-list {
		overflow: visible !important;
		max-height: none !important;
		height: auto !important;
	}
}

html.prog-a11y-font-enlarged .prog-menu-empresa,
html.prog-a11y-font-enlarged .prog-menu-empresa__body {
	min-width: 0;
	max-width: 100%;
	overflow: hidden;
	box-sizing: border-box;
}

html.prog-a11y-font-enlarged .prog-menu-empresa__nome,
html.prog-a11y-font-enlarged .prog-menu-empresa__meta,
html.prog-a11y-font-enlarged .layout-menu .layout-menuitem-text,
html.prog-a11y-font-enlarged .layout-menu .ui-menuitem-text {
	overflow-wrap: anywhere;
	word-break: break-word;
	white-space: normal;
	max-width: 100%;
	min-width: 0;
}

/*
 * MegaMenu flyout (MenuMegaDesktop): rem ampliado + 3–4 colunas = clip.
 * Força no máx. 2 colunas (wrap da 3ª), largura de coluna legível, sem overflow-x:hidden.
 * !important nas custom props para vencer __panel--cols-3/4.
 */
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-2 > .ui-menu-child,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-2 > .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-2 > .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-2 > .ui-menu-child,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-3 > .ui-menu-child,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-3 > .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-3 > .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-3 > .ui-menu-child {
	--prog-mega-cols: 2 !important;
	--prog-mega-submenu-w: 16.5rem !important;
	--prog-mega-gap-x: 0.65rem !important;
	--prog-mega-row-max: calc(
		(var(--prog-mega-cols) * var(--prog-mega-submenu-w))
		+ ((var(--prog-mega-cols) - 1) * var(--prog-mega-gap-x))
	) !important;
	max-height: calc(100vh - 4.5rem) !important;
	max-width: min(calc(var(--prog-mega-row-max) + 1.7rem), calc(100vw - 5.5rem)) !important;
	overflow-x: hidden !important;
	overflow-y: auto !important;
	box-sizing: border-box !important;
}

html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-2 > .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-2 > .ui-menu-child,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-3 > .ui-menu-child,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu
	.ui-menuitem.prog-menu-megamenu__panel--cols-3 > .ui-menu-child {
	--prog-mega-submenu-w: 14.5rem !important;
}

html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child > table,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child > table,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child > table > tbody,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child > table > tbody {
	width: var(--prog-mega-row-max) !important;
	max-width: var(--prog-mega-row-max) !important;
	min-width: 0 !important;
}

html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child > table > tbody > tr,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child > table > tbody > tr {
	display: flex !important;
	flex-wrap: wrap !important;
	width: var(--prog-mega-row-max) !important;
	max-width: var(--prog-mega-row-max) !important;
	min-width: 0 !important;
}

html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child td > .ui-menu-list,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child td > .ui-menu-list {
	flex: 0 0 var(--prog-mega-submenu-w) !important;
	width: var(--prog-mega-submenu-w) !important;
	min-width: var(--prog-mega-submenu-w) !important;
	max-width: var(--prog-mega-submenu-w) !important;
}

html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child .ui-menuitem-text,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menuitem-text,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menuitem-text,
html.prog-a11y-font-enlarged .prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child .ui-widget-header,
html.prog-a11y-font-enlarged form.prog-menu-megamenu-host .prog-menu-megamenu.ui-megamenu .ui-menu-child .ui-widget-header {
	overflow-wrap: break-word;
	word-break: normal;
	white-space: normal;
	max-width: 100%;
	overflow: visible;
	text-overflow: unset;
}

/* ---- Contraste alto ----
 * Remapeia secondary nos wrappers (tema Poseidon redefine tokens no meio da árvore).
 * Força texto muted / hints / placeholders a usar --text-color.
 */
body.prog-a11y-contrast {
	--text-color-secondary: var(--text-color);
	--surface-border: color-mix(in srgb, var(--text-color) 40%, var(--surface-border, transparent));
}

body.prog-a11y-contrast .layout-wrapper,
body.prog-a11y-contrast .layout-main,
body.prog-a11y-contrast .layout-content,
body.prog-a11y-contrast .card,
body.prog-a11y-contrast .ui-widget-content,
body.prog-a11y-contrast .ui-panel,
body.prog-a11y-contrast .filtro-sidebar,
body.prog-a11y-contrast .ui-dialog {
	--text-color-secondary: var(--text-color);
}

body.prog-a11y-contrast .layout-content,
body.prog-a11y-contrast .card,
body.prog-a11y-contrast .ui-widget,
body.prog-a11y-contrast .p-component {
	color: var(--text-color, inherit);
}

body.prog-a11y-contrast .card,
body.prog-a11y-contrast .ui-panel,
body.prog-a11y-contrast .ui-datatable,
body.prog-a11y-contrast .ui-inputfield,
body.prog-a11y-contrast .ui-selectonemenu,
body.prog-a11y-contrast .ui-button {
	border-color: var(--surface-border, var(--surface-400, #bdbdbd)) !important;
}

body.prog-a11y-contrast a,
body.prog-a11y-contrast .ui-widget-content a {
	font-weight: 600;
}

body.prog-a11y-contrast .ui-inputfield,
body.prog-a11y-contrast .ui-inputtextarea,
body.prog-a11y-contrast .ui-selectonemenu .ui-selectonemenu-label {
	font-weight: 500;
}

/* Hints / muted / breadcrumbs / empty — vencem CSS de domínio (ex. prog-perfil) */
body.prog-a11y-contrast .prog-perfil-aparencia__hint,
body.prog-a11y-contrast .prog-perfil__email,
body.prog-a11y-contrast .prog-perfil__email i,
body.prog-a11y-contrast .prog-perfil__nome,
body.prog-a11y-contrast .prog-perfil__identidade,
body.prog-a11y-contrast .prog-perfil__identidade-textos,
body.prog-a11y-contrast .prog-perfil__identidade .p-tag,
body.prog-a11y-contrast .prog-perfil__identidade .p-tag i,
body.prog-a11y-contrast .prog-perfil__tags .p-tag,
body.prog-a11y-contrast .prog-perfil__tags .p-tag i,
body.prog-a11y-contrast .text-secondary,
body.prog-a11y-contrast .text-color-secondary,
body.prog-a11y-contrast .ui-datatable-empty-message,
body.prog-a11y-contrast .ui-datatable .ui-paginator,
body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-current,
body.prog-a11y-contrast .ui-widget-content,
body.prog-a11y-contrast .ui-float-label > label,
body.prog-a11y-contrast .ui-float-label > .ui-outputlabel,
body.prog-a11y-contrast .ui-outputlabel,
body.prog-a11y-contrast label.ui-outputlabel,
body.prog-a11y-contrast .field > .ui-outputlabel,
body.prog-a11y-contrast .field > label.ui-outputlabel,
body.prog-a11y-contrast .prog-filtro-opcoes-label,
body.prog-a11y-contrast .prog-cadastro-capa__select .textos .titulo,
body.prog-a11y-contrast .prog-cadastro-capa__select .textos .descricao,
body.prog-a11y-contrast .item-selecao .textos .titulo,
body.prog-a11y-contrast .item-selecao .textos .descricao {
	color: var(--text-color, inherit) !important;
}

/* Paginator: botões e rótulos legíveis sob contraste */
body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-page,
body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-first,
body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-prev,
body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-next,
body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-last {
	color: var(--text-color, inherit) !important;
	border-color: var(--surface-border, var(--surface-400, #bdbdbd)) !important;
	font-weight: 600;
}

body.prog-a11y-contrast .ui-datatable .ui-paginator .ui-paginator-page.ui-state-active {
	background: var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	border-color: var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	color: var(--primary-color-text, #fff) !important;
}

/* Cabeçalho Perfil — tags legíveis sob contraste (fundo surface + texto forte) */
body.prog-a11y-contrast .prog-perfil__identidade .p-tag,
body.prog-a11y-contrast .prog-perfil__tags .p-tag,
body.prog-a11y-contrast .prog-perfil__tags .prog-perfil__tag {
	background: var(--surface-100, var(--surface-ground, #f3f4f6)) !important;
	color: var(--text-color, inherit) !important;
	border: 1px solid var(--surface-border, var(--surface-400, #bdbdbd)) !important;
	font-weight: 700 !important;
}

body.prog-a11y-contrast .prog-perfil__identidade .p-tag i,
body.prog-a11y-contrast .prog-perfil__tags .p-tag i,
body.prog-a11y-contrast .prog-perfil__tags .prog-perfil__tag i {
	color: var(--text-color, inherit) !important;
}

/* Pesquisa: células da grade sob contraste */
body.prog-a11y-contrast .ui-datatable.prog-datatable-grade tbody > tr > td,
body.prog-a11y-contrast .ui-datatable .ui-datatable-data > tr > td {
	color: var(--text-color, inherit);
}

/* Chips de filtro: manter texto sobre a cor de Aparência (--primary-color) */
body.prog-a11y-contrast .prog-filtro-chip.ui-chip,
body.prog-a11y-contrast .prog-filtro-chips .prog-filtro-chip.ui-chip {
	background: var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	border-color: var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	color: var(--primary-color-text, #fff) !important;
	font-weight: 700;
}

body.prog-a11y-contrast .prog-filtro-chip.ui-chip .ui-chip-text,
body.prog-a11y-contrast .prog-filtro-chip.ui-chip .ui-chip-remove-icon {
	color: var(--primary-color-text, #fff) !important;
}

/*
 * Breadcrumb: seletores de prog-breadcrumb.css são mais específicos (li/link)
 * e usam opacity nos separadores — forçar cor + opacity plena.
 */
body.prog-a11y-contrast .layout-breadcrumb .breadcrumb .prog-breadcrumb .route-bar-breadcrumb > li,
body.prog-a11y-contrast .layout-breadcrumb .breadcrumb .prog-breadcrumb .route-bar-breadcrumb > li .ui-link,
body.prog-a11y-contrast .layout-breadcrumb .breadcrumb .prog-breadcrumb .route-bar-breadcrumb > li .ui-outputtext,
body.prog-a11y-contrast .layout-breadcrumb .breadcrumb .prog-breadcrumb .route-bar-breadcrumb > li:has(> i.fas),
body.prog-a11y-contrast .layout-breadcrumb .breadcrumb .prog-breadcrumb .route-bar-breadcrumb > li:has(> i.far),
body.prog-a11y-contrast .layout-breadcrumb .breadcrumb .prog-breadcrumb .route-bar-breadcrumb > li:has(> i.fab) {
	color: var(--text-color, inherit) !important;
	opacity: 1 !important;
}

/*
 * Topbar: empresa/grupo usam opacity (.9 / .65) — contraste alto remove o fade.
 * Ícones de ação (sino, engrenagem) ficam plenos.
 */
body.prog-a11y-contrast .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info__empresa,
body.prog-a11y-contrast .layout-topbar .topbar-item.user-profile > a .progem-topbar-profile-info__grupo {
	opacity: 1 !important;
	font-weight: 600 !important;
}

body.prog-a11y-contrast .layout-topbar .topbar-icon,
body.prog-a11y-contrast .layout-topbar .topbar-icon i,
body.prog-a11y-contrast .layout-topbar .topbar-item.notifications > a,
body.prog-a11y-contrast .layout-topbar .topbar-item.notifications > a i,
body.prog-a11y-contrast .layout-topbar .topbar-item.settings > a,
body.prog-a11y-contrast .layout-topbar .topbar-item.settings > a i {
	opacity: 1 !important;
}

body.prog-a11y-contrast .ui-inputfield::placeholder,
body.prog-a11y-contrast .ui-inputtextarea::placeholder,
body.prog-a11y-contrast input.ui-inputfield::placeholder,
body.prog-a11y-contrast textarea.ui-inputfield::placeholder {
	color: var(--text-color, inherit);
	opacity: 0.85;
}

/* ---- Alvos de clique ampliados (leve, sem distorcer) ----
 * Botões/inputs: min-height confortável.
 * Rádio/checkbox: box um pouco maior (quadrado).
 * Toggle: scale proporcional (slider absolute do tema não quebra).
 * Nunca min-height isolado em .ui-toggleswitch / *-box.
 * SpeedDial/FAB: piso 2.75rem sem padding genérico de formulário.
 */
body.prog-a11y-touch .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action),
body.prog-a11y-touch .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action),
body.prog-a11y-touch .ui-inputfield,
body.prog-a11y-touch .ui-selectonemenu,
body.prog-a11y-touch .ui-autocomplete .ui-inputfield,
body.prog-a11y-touch .ui-datepicker .ui-inputfield,
body.prog-a11y-touch .p-datepicker .ui-inputfield,
body.prog-a11y-touch .ui-menuitem-link,
body.prog-a11y-touch .ui-tabs-nav > li > a,
body.prog-a11y-touch .prog-mobile-actions-stack__fab,
body.prog-a11y-touch .prog-mobile-actions-stack__back-to-top,
body.prog-a11y-touch .ui-menubutton > .ui-button,
body.prog-a11y-touch [class*="__trigger"].ui-button,
body.prog-a11y-touch .ui-button[class*="__trigger"],
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-page,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-first,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-prev,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-next,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-last {
	min-height: 2.75rem;
}

body.prog-a11y-touch .ui-button:not(.ui-speeddial-button):not(.ui-speeddial-action),
body.prog-a11y-touch .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action) {
	min-width: 2.75rem;
	padding-top: 0.55rem;
	padding-bottom: 0.55rem;
	padding-left: 1rem;
	padding-right: 1rem;
}

body.prog-a11y-touch .ui-button.ui-button-icon-only:not(.ui-speeddial-button):not(.ui-speeddial-action) {
	padding-left: 0.55rem;
	padding-right: 0.55rem;
}

body.prog-a11y-touch .ui-menubutton > .ui-button,
body.prog-a11y-touch [class*="__trigger"].ui-button,
body.prog-a11y-touch .ui-button[class*="__trigger"],
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-page,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-first,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-prev,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-next,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-last {
	min-width: 2.75rem;
}

/* FAB / speedDial: alvo ≥2.75rem alinhado ao slot 3rem do stack — sem padding de form */
body.prog-a11y-touch .prog-mobile-actions-stack__fab,
body.prog-a11y-touch .prog-mobile-actions-stack__back-to-top,
body.prog-a11y-touch .ui-speeddial-button,
body.prog-a11y-touch .ui-speeddial-action {
	min-height: 2.75rem;
	min-width: 2.75rem;
	box-sizing: border-box;
}

body.prog-a11y-touch .ui-speeddial-button.ui-button.ui-button-icon-only {
	padding: 0 !important;
	min-width: var(--prog-speeddial-btn-size, 4rem);
	min-height: var(--prog-speeddial-btn-size, 4rem);
}

body.prog-a11y-touch .ui-speeddial-action {
	padding-top: 0.55rem;
	padding-bottom: 0.55rem;
	padding-left: 0.85rem;
	padding-right: 0.85rem;
}

body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-page,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-first,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-prev,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-next,
body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-last {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
}

body.prog-a11y-touch .ui-datatable .ui-paginator .ui-paginator-rpp-options {
	min-height: 2.75rem;
}

body.prog-a11y-touch .ui-inputfield,
body.prog-a11y-touch .ui-selectonemenu,
body.prog-a11y-touch .ui-autocomplete .ui-inputfield {
	padding-top: 0.55rem;
	padding-bottom: 0.55rem;
}

/* Rádio / checkbox: +20% no box, mantendo proporção 1:1 */
body.prog-a11y-touch .ui-chkbox .ui-chkbox-box,
body.prog-a11y-touch .ui-radiobutton .ui-radiobutton-box {
	width: 1.5rem;
	height: 1.5rem;
	min-width: 1.5rem;
	min-height: 1.5rem;
	box-sizing: border-box;
}

body.prog-a11y-touch .ui-radiobutton .ui-radiobutton-box .ui-radiobutton-icon {
	width: 0.75rem;
	height: 0.75rem;
}

body.prog-a11y-touch .ui-selectoneradio td,
body.prog-a11y-touch .ui-selectmanycheckbox td,
body.prog-a11y-touch .prog-filtro-opcoes [class*="col-"] {
	padding-top: 0.35rem;
	padding-bottom: 0.35rem;
}

/* Toggle: scale leve — amplia o controle inteiro sem deformar o track */
body.prog-a11y-touch .ui-toggleswitch {
	transform: scale(1.18);
	transform-origin: center center;
}

body.prog-a11y-touch .prog-perfil-aparencia__a11y-switch {
	min-height: 3rem;
	min-width: 3.5rem;
	padding: 0.5rem 0.35rem;
}

body.prog-a11y-touch .ui-menuitem-link {
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
}

/* Topbar: alvos de sino / engrenagem (mesmo padrão Poseidon) */
body.prog-a11y-touch .layout-topbar .topbar-icon,
body.prog-a11y-touch .layout-topbar .topbar-item.notifications > a,
body.prog-a11y-touch .layout-topbar .topbar-item.settings > a {
	min-width: 2.75rem;
	min-height: 2.75rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
}

body.prog-a11y-touch .layout-topbar .topbar-icon i,
body.prog-a11y-touch .layout-topbar .topbar-item.notifications > a i,
body.prog-a11y-touch .layout-topbar .topbar-item.settings > a i {
	font-size: 1.15rem;
}

/* Perfil — botão Alterar foto / tags com área de toque maior */
body.prog-a11y-touch .prog-perfil__acoes-foto .ui-button {
	min-height: 2.75rem;
	min-width: 2.75rem;
}

body.prog-a11y-touch .prog-perfil__tags .p-tag,
body.prog-a11y-touch .prog-perfil__tags .prog-perfil__tag {
	min-height: 2.25rem;
	padding-top: 0.4rem;
	padding-bottom: 0.4rem;
	padding-left: 0.65rem;
	padding-right: 0.65rem;
	box-sizing: border-box;
}

/* ---- Destacar links ---- */
body.prog-a11y-underline .layout-content a:not(.ui-button):not(.ui-menuitem-link):not([class*="p-button"]),
body.prog-a11y-underline .layout-content .ui-commandlink:not(.ui-button):not(.prog-perfil-aparencia__cor),
body.prog-a11y-underline .layout-breadcrumb a,
body.prog-a11y-underline .prog-breadcrumb a {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

body.prog-a11y-underline .layout-content a.ui-button,
body.prog-a11y-underline .layout-content .ui-button,
body.prog-a11y-underline .layout-content a[class*="p-button"],
body.prog-a11y-underline .prog-perfil-aparencia__cor.ui-commandlink {
	text-decoration: none;
}

/* ---- Reduzir animações (override do usuário) ---- */
body.prog-a11y-motion *,
body.prog-a11y-motion *::before,
body.prog-a11y-motion *::after {
	animation-duration: 0.01ms !important;
	animation-iteration-count: 1 !important;
	transition-duration: 0.01ms !important;
	scroll-behavior: auto !important;
}

/* ---- Foco reforçado ---- */
body.prog-a11y-focus :focus-visible {
	outline: 3px solid var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	outline-offset: 3px !important;
}

body.prog-a11y-focus .ui-button:focus-visible,
body.prog-a11y-focus .ui-inputfield:focus-visible,
body.prog-a11y-focus a:focus-visible,
body.prog-a11y-focus .ui-menuitem-link:focus-visible,
body.prog-a11y-focus .ui-chkbox-box:focus-visible,
body.prog-a11y-focus .ui-radiobutton-box:focus-visible,
body.prog-a11y-focus .ui-toggleswitch:focus-visible {
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color, #2f8ee5) 35%, transparent) !important;
}

/* PrimeFaces aplica .ui-state-focus sem :focus-visible confiável */
body.prog-a11y-focus .ui-inputfield.ui-state-focus,
body.prog-a11y-focus .ui-button.ui-state-focus,
body.prog-a11y-focus .ui-selectonemenu.ui-state-focus,
body.prog-a11y-focus .ui-chkbox-box.ui-state-focus,
body.prog-a11y-focus .ui-radiobutton-box.ui-state-focus,
body.prog-a11y-focus .ui-toggleswitch.ui-state-focus,
body.prog-a11y-focus .ui-menuitem-link.ui-state-focus,
body.prog-a11y-focus .ui-datatable .ui-paginator .ui-paginator-page.ui-state-focus,
body.prog-a11y-focus .ui-datatable .ui-paginator .ui-paginator-first.ui-state-focus,
body.prog-a11y-focus .ui-datatable .ui-paginator .ui-paginator-prev.ui-state-focus,
body.prog-a11y-focus .ui-datatable .ui-paginator .ui-paginator-next.ui-state-focus,
body.prog-a11y-focus .ui-datatable .ui-paginator .ui-paginator-last.ui-state-focus {
	outline: 3px solid var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	outline-offset: 2px !important;
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color, #2f8ee5) 35%, transparent) !important;
}

/* ---- Espaçamento compacto (reduzir paddings de conteúdo) ---- */
body.prog-a11y-compact .layout-content {
	padding: 0.75rem 1rem;
}

body.prog-a11y-compact .card {
	padding: 0.75rem 1rem;
}

body.prog-a11y-compact .card .card-body {
	padding: 0.75rem 0 0;
}

body.prog-a11y-compact .card .card-header {
	padding-bottom: 0.5rem;
}

/* Densidade compacta fica abaixo do default (--progem-field-gap-y: 1rem) */
body.prog-a11y-compact .field {
	margin-bottom: 0.75rem !important;
}

body.prog-a11y-compact .prog-cadastro-capa__select,
body.prog-a11y-compact .item-selecao.prog-cadastro-capa__select {
	padding: 0.35rem 0.55rem;
	gap: 0.5rem 0.75rem;
	min-height: 3rem;
}

body.prog-a11y-compact .prog-cadastro-capa__select .textos,
body.prog-a11y-compact .item-selecao.prog-cadastro-capa__select .textos {
	min-height: 2.1rem;
}

body.prog-a11y-compact .ui-datatable .ui-datatable-data > tr > td:not(.prog-datatable-grade__col-selecao),
body.prog-a11y-compact .ui-datatable .ui-datatable-header,
body.prog-a11y-compact .ui-datatable .ui-datatable-footer,
body.prog-a11y-compact .ui-datatable thead th:not(.prog-datatable-grade__col-selecao),
body.prog-a11y-compact .ui-datatable.prog-datatable-grade tbody > tr > td:not(.prog-datatable-grade__col-selecao),
body.prog-a11y-compact .ui-datatable.prog-datatable-grade thead > tr > th:not(.prog-datatable-grade__col-selecao),
body.prog-a11y-compact .ui-datatable.prog-datatable-grade.ui-datatable-sm tbody > tr > td:not(.prog-datatable-grade__col-selecao),
body.prog-a11y-compact .ui-datatable.prog-datatable-grade.ui-datatable-sm thead > tr > th:not(.prog-datatable-grade__col-selecao) {
	/* Compacto: densifica, mas mantém respiro mínimo nas células (0 era apertado demais) */
	padding-top: 0.2rem !important;
	padding-bottom: 0.2rem !important;
	padding-left: 0.55rem !important;
	padding-right: 0.55rem !important;
}

body.prog-a11y-compact .ui-datatable.prog-datatable-grade thead > tr > th:last-child:not(.prog-datatable-grade__col-selecao),
body.prog-a11y-compact .ui-datatable.prog-datatable-grade tbody > tr > td:last-child:not(.prog-datatable-grade__col-selecao) {
	padding-right: 0.85rem !important;
}

/* Coluna só-checkbox: manter padding lateral da grade (sticky left:0 corta overflow) */
body.prog-a11y-compact .ui-datatable.prog-datatable-grade thead > tr > th.prog-datatable-grade__col-selecao,
body.prog-a11y-compact .ui-datatable.prog-datatable-grade tbody > tr > td.prog-datatable-grade__col-selecao,
body.prog-a11y-compact .ui-datatable.prog-datatable-grade.ui-datatable-sm thead > tr > th.prog-datatable-grade__col-selecao,
body.prog-a11y-compact .ui-datatable.prog-datatable-grade.ui-datatable-sm tbody > tr > td.prog-datatable-grade__col-selecao {
	padding: 0.15rem 0.5rem !important;
}

/* Ações / botões na célula: menos padding vertical no modo compacto */
body.prog-a11y-compact .ui-datatable .prog-acoes-linha,
body.prog-a11y-compact .ui-datatable .prog-acoes-linha .ui-button {
	margin-top: 0;
	margin-bottom: 0;
}

body.prog-a11y-compact .ui-datatable .ui-button {
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
}

body.prog-a11y-compact .ui-datatable .ui-paginator {
	padding-top: 0.35rem;
	padding-bottom: 0.35rem;
	gap: 0.15rem;
}

body.prog-a11y-compact .ui-datatable .ui-paginator .ui-paginator-page,
body.prog-a11y-compact .ui-datatable .ui-paginator .ui-paginator-first,
body.prog-a11y-compact .ui-datatable .ui-paginator .ui-paginator-prev,
body.prog-a11y-compact .ui-datatable .ui-paginator .ui-paginator-next,
body.prog-a11y-compact .ui-datatable .ui-paginator .ui-paginator-last {
	min-width: 1.75rem;
	min-height: 1.75rem;
	padding: 0.15rem 0.35rem;
}

body.prog-a11y-compact .ui-datatable .ui-paginator .ui-paginator-current {
	font-size: 0.75rem;
	margin: 0;
}

body.prog-a11y-compact .p-toolbar,
body.prog-a11y-compact .ui-toolbar {
	padding: 0.5rem 0.75rem;
}

/* Cabeçalho Perfil — densidade sob “Reduzir espaçamento” */
body.prog-a11y-compact .prog-perfil__header.card {
	gap: 1rem;
}

body.prog-a11y-compact .prog-perfil__identidade {
	gap: 0.85rem;
}

body.prog-a11y-compact .prog-perfil__identidade-textos {
	gap: 0.15rem;
}

body.prog-a11y-compact .prog-perfil__tags {
	gap: 0.3rem;
	margin-top: 0.25rem;
}

/* Sidebars / dialogs — compacto abaixo do default (--progem-field-gap-y); gap via row-gap do formgrid */
body.prog-a11y-compact .filtro-sidebar .filtro-sidebar-header,
body.prog-a11y-compact .prog-plano-fullscreen-sidebar__header {
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
}

body.prog-a11y-compact .filtro-sidebar .filtro-sidebar-body,
body.prog-a11y-compact .prog-plano-fullscreen-sidebar__body {
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
}

body.prog-a11y-compact .ui-sidebar.filtro-sidebar.prog-plano-fullscreen-sidebar.ui-sidebar-active .filtro-sidebar-body.formgrid.grid,
body.prog-a11y-compact .ui-sidebar.filtro-sidebar.prog-plano-fullscreen-sidebar.ui-sidebar-active .filtro-sidebar-body .formgrid.grid {
	row-gap: 0.75rem;
}

body.prog-a11y-compact .filtro-sidebar .filtro-sidebar-footer,
body.prog-a11y-compact .prog-plano-fullscreen-sidebar__footer {
	padding-top: 0.65rem;
	padding-bottom: 0.65rem;
}

body.prog-a11y-compact .ui-dialog .ui-dialog-content {
	padding: 0.75rem 1rem;
}

body.prog-a11y-compact .ui-dialog .ui-dialog-titlebar {
	padding: 0.65rem 1rem;
}

/* ---- .descricao-filtro + chips — Acessibilidade ---- */
/* Contraste: texto AA nos resumos; badge vazio mantém primary + texto claro */
body.prog-a11y-contrast .descricao-filtro {
	color: var(--text-color, inherit) !important;
	font-weight: 700 !important;
}

body.prog-a11y-contrast .prog-filtro-chips .descricao-filtro {
	background: var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	border-color: var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	color: var(--primary-color-text, #fff) !important;
	font-weight: 700 !important;
	box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-color, #000) 35%, transparent);
}

body.prog-a11y-contrast .prog-filtro-chips .prog-filtro-chip.ui-chip {
	box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-color, #000) 35%, transparent);
}

body.prog-a11y-touch .prog-filtro-chips .prog-filtro-chip.ui-chip {
	min-height: 2.75rem;
	padding: 0.45rem 0.85rem;
	gap: 0.35rem;
}

body.prog-a11y-touch .prog-filtro-chips .prog-filtro-chip .ui-chip-remove-icon {
	min-width: 2.75rem;
	min-height: 2.75rem;
	margin-left: 0.15rem;
	font-size: 1.125rem;
	border-radius: 50%;
}

body.prog-a11y-touch .descricao-filtro {
	min-height: 2.75rem;
	display: inline-flex;
	align-items: center;
}

body.prog-a11y-touch .prog-filtro-chips .descricao-filtro {
	padding: 0.45rem 0.85rem;
}

body.prog-a11y-focus .prog-filtro-chips .prog-filtro-chip .ui-chip-remove-icon:focus,
body.prog-a11y-focus .prog-filtro-chips .prog-filtro-chip .ui-chip-remove-icon:focus-visible {
	outline: 3px solid var(--primary-color-text, #fff) !important;
	outline-offset: 2px !important;
	box-shadow:
		0 0 0 3px var(--primary-color, #2f8ee5),
		0 0 0 6px color-mix(in srgb, var(--primary-color, #2f8ee5) 35%, transparent) !important;
}

body.prog-a11y-compact .prog-filtro-chips {
	gap: 0.35rem;
	margin-top: 0.35rem;
	margin-bottom: 0.35rem;
}

body.prog-a11y-compact .prog-filtro-chips .prog-filtro-chip.ui-chip {
	padding: 0.15rem 0.5rem;
	min-height: 0;
}

body.prog-a11y-compact .prog-filtro-chips .prog-filtro-chip .ui-chip-text {
	font-size: 0.875rem;
}

body.prog-a11y-compact .prog-filtro-chips .prog-filtro-chip .ui-chip-remove-icon {
	min-width: 1.25rem;
	min-height: 1.25rem;
	font-size: 0.875rem;
}

body.prog-a11y-compact .descricao-filtro {
	font-size: 0.875rem;
}

body.prog-a11y-compact .prog-filtro-chips .descricao-filtro {
	padding: 0.15rem 0.5rem;
	min-height: 0;
}

body.prog-a11y-motion .prog-filtro-chips .prog-filtro-chip .ui-chip-remove-icon {
	transition: none !important;
}

/* ---- p:outputLabel / float-label — Acessibilidade ----
 * Escala via rem; contraste alto; compacto; toque no .item-selecao.
 */
.field > .ui-outputlabel,
.field > label.ui-outputlabel,
.prog-filtro-opcoes-label,
.ui-float-label > label,
.ui-float-label > .ui-outputlabel {
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.35;
	color: color-mix(in srgb, var(--text-color, #1f2937) 82%, var(--surface-0, #fff));
}

body.prog-a11y-contrast .field > .ui-outputlabel,
body.prog-a11y-contrast .field > label.ui-outputlabel,
body.prog-a11y-contrast .prog-filtro-opcoes-label,
body.prog-a11y-contrast .ui-float-label > label,
body.prog-a11y-contrast .ui-float-label > .ui-outputlabel {
	font-weight: 700 !important;
}

body.prog-a11y-compact .field > .ui-outputlabel,
body.prog-a11y-compact .field > label.ui-outputlabel,
body.prog-a11y-compact .prog-filtro-opcoes-label,
body.prog-a11y-compact .ui-float-label > label,
body.prog-a11y-compact .ui-float-label > .ui-outputlabel {
	font-size: 0.8125rem;
}

body.prog-a11y-touch .item-selecao.prog-cadastro-capa__select,
body.prog-a11y-touch .prog-cadastro-capa__select.item-selecao,
body.prog-a11y-touch .itm-selecao.prog-cadastro-capa__select {
	min-height: max(var(--progem-item-selecao-min-h-mobile, 3.5rem), 2.75rem);
}

body.prog-a11y-focus .item-selecao.prog-cadastro-capa__select:focus-within,
body.prog-a11y-focus .prog-cadastro-capa__select.item-selecao:focus-within {
	outline: 3px solid var(--primary-color, var(--progem-color-primary, #2f8ee5)) !important;
	outline-offset: 2px !important;
}

body.prog-a11y-motion .item-selecao,
body.prog-a11y-motion .itm-selecao,
body.prog-a11y-motion .prog-cadastro-capa__select {
	transition: none !important;
}

/* ---------------- Footer: escala do logo (texto já em rem) ---------------- */

/*
 * Logo do footer fica travado em 32px (!important em app.css / form-overrides).
 * Sob a escala a11y, acompanha --prog-a11y-media-scale (igual às imagens do conteúdo).
 * Versão/slogan usam rem e herdam html.prog-a11y-font-* automaticamente.
 */
html.prog-a11y-font-85 .layout-footer-progem .layout-footer-logo-link img,
html.prog-a11y-font-85 .layout-footer-progem .layout-footer-logo,
html.prog-a11y-font-125 .layout-footer-progem .layout-footer-logo-link img,
html.prog-a11y-font-125 .layout-footer-progem .layout-footer-logo,
html.prog-a11y-font-custom .layout-footer-progem .layout-footer-logo-link img,
html.prog-a11y-font-custom .layout-footer-progem .layout-footer-logo {
	height: calc(32px * var(--prog-a11y-media-scale, 1)) !important;
	max-height: calc(32px * var(--prog-a11y-media-scale, 1)) !important;
	width: auto !important;
}


