:root {
	--corBordaInferiorSeparador: rgb(174, 208, 234);
	--gradiente1: linear-gradient(to bottom, #D4D0D0 0%, #B8EEFA 100%);
	--gradiente2: linear-gradient(to bottom, #B8EEFA 0%, #D4D0D0 100%);
}

/* ========== LOADING OVERLAY ========== */
#loadingOverlay {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.5);
	z-index: 9999;
	justify-content: center;
	align-items: center;
}

#loadingOverlay.active {
	display: flex;
}

#loadingOverlay .spinner {
	width: 50px;
	height: 50px;
	border: 4px solid #f3f3f3;
	border-top: 4px solid #3498db;
	border-radius: 50%;
	animation: spin 1s linear infinite;
}

@keyframes spin {
	0% { transform: rotate(0deg); }
	100% { transform: rotate(360deg); }
}

*, *::before, *::after {
	box-sizing: border-box;
}

@font-face {
	font-family: "Copperplate Gothic Bold";
	src: url(font/Coprgtb.ttf) format("truetype");
}

html {
	opacity: 0;
	transition: opacity 0.3s ease-in-out;
}

html.loaded {
	opacity: 1;
}

html, body {
	height: 100%;
	width: 100%;
	margin: 0;
	padding: 0;
	overflow-x: hidden;
}

body {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	min-height: 100dvh;
	width: 100vw;
	font-family: verdana, sans-serif;
	font-size: 12px;
	background: var(--gradiente2);
}

ul, h1, div {
	padding: 0;
	margin: 0;
}

/* ========== HEADER (div1) ========== */
#div1 {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-start;
	gap: 0.5rem;
	padding: 0.5rem 1rem;
	min-height: 80px;
	width: 100%;
	background: var(--gradiente1);
	box-shadow: inset 0 10px 10px -10px rgba(0, 0, 0, 0.4);
	flex-shrink: 0;
}

#logomarca, #containerEmpresa, #loginContainer {
	display: none;
}

#aLink {
	flex-shrink: 0;
}

#logomarca {
	height: 100%;
	width: auto;
	max-height: 70px;
	transform: translateY(0);
}

#logomarca.animated,
#containerEmpresa.animated,
#nomeEmpresa.animated,
#frase.animated {
	animation-fill-mode: forwards;
}

#aLink, #logomarca {
	position: relative;
	top: 0;
}

#containerEmpresa {
	text-align: center;
	flex: 1 1 auto;
	min-width: 0;
	max-width: 100%;
}

#nomeEmpresa {
	font-size: clamp(10px, 2.5vw, 16px);
	font-family: broadway, sans-serif;
	font-weight: normal;
	color: navy;
	margin: 0;
	word-wrap: break-word;
	overflow-wrap: break-word;
}

#frase {
	font-size: clamp(12px, 3vw, 22px);
	font-family: brush script mt, cursive;
	color: navy;
	font-weight: normal;
	margin: 0;
	word-wrap: break-word;
	overflow-wrap: break-word;
}

/* ========== CONTEUDO PRINCIPAL (div2) ========== */
#div2 {
	flex: 1;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: flex-start;
	align-content: flex-start;
	gap: 2rem;
	padding: 2rem;
	width: 100%;
	background: var(--gradiente2);
	box-shadow: inset 0 10px 10px -10px rgba(0, 0, 0, 0.4);
}

/* ========== TEXTOS LATERAIS ========== */
#textos {
	flex: 1 1 300px;
	max-width: 500px;
	padding: 1rem;
	text-align: justify;
	font-size: 11px;
	line-height: 1.6;
	display: none;
}

#textos b {
	font-size: 12px;
}

#divInformacoes {
	flex: 1 1 250px;
	max-width: 400px;
	padding: 1rem;
	font-size: 11px;
	color: blue;
	line-height: 1.6;
	display: none;
}

/* ========== LOGIN CONTAINER ========== */
#loginContainer {
	flex: 0 0 auto;
	width: min(420px, 95vw);
	background-color: rgba(255, 255, 255, 0.3);
	box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
	padding: 1rem;
	border-radius: 8px;
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* Título "Acesso Restrito" acima do form */
#loginContainer > p {
	width: 100%;
	max-width: 360px;
	margin: 0 0 0.5rem 0;
	padding-left: 5px;
	font-family: verdana, sans-serif;
	font-weight: bold;
	font-size: 10px;
}

#formLogin, #formEsqueceuSenha {
	border-radius: 5px;
	background-color: white;
	width: 100%;
	max-width: 360px;
	padding: 1rem;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.fieldsetLogin {
	border: none;
	padding: 0;
	margin: 0;
	position: relative;
	padding-right: 60px;
}

/* Esconder <br> dentro do fieldset */
.fieldsetLogin br {
	display: none;
}

/* Labels empilhados */
.fieldsetLogin .labelLogin {
	display: flex;
	width: 100%;
}

.labelLogin {
	position: relative;
	width: 100%;
	margin-bottom: 0.75rem;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.labelLogin .spanTextField {
	width: 70px;
	text-align: right;
	flex-shrink: 0;
	font-size: 12px;
	font-family: calibri, sans-serif;
	font-weight: bold;
}

#inputUsuario, #inputSenha {
	flex: 1;
	min-width: 120px;
	font-size: 12px;
	height: 25px;
	padding: 3px;
	font-family: verdana, sans-serif;
	border: 1px solid #ccc;
	border-radius: 3px;
}

#toggle-password-login, #toggle-password-cadastro {
	position: absolute;
	right: 5px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	cursor: pointer;
}

#iconeQrcode {
	width: 50px;
	height: 50px;
	cursor: pointer;
	display: none;
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
}

#inputSenhaFake {
	display: none;
}

.buttonFormulario {
	margin: 5px;
	padding: 0.5rem 1rem;
	width: calc(50% - 10px);
	font-size: 12px;
	cursor: pointer;
	display: inline-block;
	vertical-align: top;
}

.iconeButtonLogin {
	width: 16px;
	height: 16px;
	margin-right: 5px;
	vertical-align: middle;
}

#anchorEsqueceuSenha, #anchorUtilizarCertificado, #anchorSolicitarCadastro {
	display: inline-block;
	font-size: 10px;
	font-family: verdana, sans-serif;
	margin: 0.25rem 0.5rem;
}

#anchorEsqueceuSenha {
	text-decoration: underline !important;
}

#loginQrcode {
	display: none;
	padding-top: 1rem;
}

#containerQrCode {
	margin: 1rem auto;
	text-align: center;
}

#cadeado {
	float: right;
	margin: 0.5rem;
	cursor: pointer;
}

/* ========== INFORMACOES ========== */
.fontTituloContainerInformacao {
	font-weight: bold;
	font-size: 13px;
}

.containerImagemSubInformacao {
	display: flex;
	align-items: flex-start;
	margin-top: 0.5rem;
}

.imgContainerInformacao {
	margin-right: 0.5rem;
	height: 30px;
	flex-shrink: 0;
}

.containerInformacao {
	margin-bottom: 1rem;
}

.divContainerSubInformacao {
	line-height: 1.8;
}

.bordaInferiorSeparador {
	border-bottom: 1px solid var(--corBordaInferiorSeparador);
	margin-bottom: 0.5rem;
	padding-bottom: 0.25rem;
}

/* ========== FORM ELEMENTS ========== */
label, input {
	display: inline-block;
	vertical-align: baseline;
}

input {
	max-width: 100%;
}

input[type=radio] {
	width: auto !important;
}

legend {
	font-size: 11px;
	font-weight: bold;
	color: navy;
}

label {
	color: #2D2D2D;
	font-size: 12px;
	font-family: calibri, sans-serif;
	font-weight: bold;
}

form, input {
	box-sizing: border-box;
}

/* ========== DIALOGS ========== */
#dialogRespostaServlet {
	font-size: 12px;
}

.labelEsqueceuSenha {
	display: block;
	margin-bottom: 0.5rem;
}

/* Inputs do dialog Esqueci Minha Senha */
.ui-dialog .divFormField input {
	height: 25px !important;
	min-height: 25px !important;
	max-height: 25px !important;
	font-size: 12px !important;
	padding: 3px !important;
	border: 1px solid #ccc !important;
	border-radius: 3px !important;
	line-height: normal !important;
}

.ui-dialog-buttonpane {
	background-color: rgba(229, 229, 229, 1) !important;
}

.ui-dialog .ui-dialog-buttonpane button {
	height: 33px !important;
}

/* Botões do dialog - alinhar ícone e texto */
.ui-dialog .ui-button,
.ui-dialog-buttonpane .ui-button,
.ui-dialog-buttonset .ui-button,
button.ui-button {
	text-align: center !important;
	white-space: nowrap !important;
}

.ui-dialog .ui-button > *,
.ui-dialog-buttonpane .ui-button > *,
.ui-dialog-buttonset .ui-button > *,
button.ui-button > * {
	display: inline !important;
	vertical-align: middle !important;
	float: none !important;
}

.iconeBotaoDialog {
	width: 16px !important;
	height: 16px !important;
	margin-right: 5px !important;
	display: inline !important;
	vertical-align: middle !important;
	float: none !important;
}

.ui-button .ui-button-text {
	padding: 0 !important;
	display: inline !important;
	vertical-align: middle !important;
	float: none !important;
}

/* Title bar do dialog - tamanho compacto */
.ui-dialog-titlebar {
	padding: 6px 10px !important;
	min-height: auto !important;
}

/* Dialog ajusta altura automaticamente ao conteúdo e nunca excede a tela */
.ui-dialog {
	height: auto !important;
	max-width: calc(100vw - 20px) !important;
}

.ui-dialog-content {
	height: auto !important;
	overflow: visible !important;
}

/* Forçar layout original dos campos em dialogs (sobrescreve formField.css mobile) */
.ui-dialog .divFormField {
	display: inline-block !important;
	height: 45px !important;
	margin-bottom: 0 !important;
}

.ui-dialog .divFormField:not(.empilhado) {
	height: 25px !important;
}

/* Radio - input à esquerda do span */
.ui-dialog .divFormField input[type="radio"] {
	float: left !important;
	margin-right: 3px !important;
}

.ui-dialog .divFormField input[type="radio"] ~ .nomeCampo {
	margin-top: 14px !important;
	margin-left: 5px !important;
}

/* Título do dialog - alinhar ícone e texto */
.ui-dialog-title {
	display: flex !important;
	align-items: center !important;
}

.iconeDialogTitle {
	width: 16px !important;
	height: 16px !important;
	margin-right: 8px !important;
	flex-shrink: 0 !important;
}

.textoDialogTitle {
	font-size: 11px;
}

.tituloRespostaServlet {
	width: 100% !important;
	font-size: 12px !important;
	text-align: left !important;
}

.paragrafoRespostaServlet {
	width: calc(100% - 55px) !important;
	font-size: 12px !important;
	float: right !important;
}

.imgRespostaServlet {
	float: left;
	width: 45px;
}

.tituloInfoPlus {
	color: navy;
	font-weight: bold;
}

#imgDesbloquear {
	float: left;
	max-width: 80px;
}

#spanDesbloquear {
	margin-left: 0.5rem;
	font-size: 14px;
	font-family: verdana, sans-serif;
	color: gray;
	display: block;
	overflow: hidden;
}

#divCabecalhoEsqueciMinhaSenha {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	margin-bottom: 1rem;
	height: 90px;
}

#dialogEsqueceuSenha,
#dialogSolicitarCadastro {
	display: none;
}

.labelCadastro {
	font-weight: bold;
	margin: 0.25rem;
	display: block;
}

.spanCadastro {
	display: block;
	margin-bottom: 0.25rem;
}

.inputCadastro {
	border: 1px solid silver;
	width: 100%;
	max-width: 300px;
}

/* ========== TABS ========== */
#tabs2 {
	margin: 0 !important;
}

#tabs {
	width: 100%;
	max-width: 50%;
}

.ui-tabs-vertical .ui-tabs-nav {
	padding: .2em .1em .2em .2em;
	float: left;
}

.ui-tabs-vertical .ui-tabs-nav li {
	clear: left;
	border-bottom-width: 1px !important;
	border-right-width: 0 !important;
	margin: 0 -1px .2em 0;
}

.ui-tabs-vertical .ui-tabs-nav li a {
	display: block;
}

.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active {
	padding-bottom: 0;
	padding-right: .1em;
	border-right-width: 1px;
}

.ui-tabs-vertical .ui-tabs-panel {
	padding: 1em;
	float: right;
	width: 100%;
	max-width: 40em;
}

.menuProdutoAnchor {
	padding: 3px 5px !important;
	text-overflow: ellipsis !important;
	word-wrap: break-word;
	overflow: hidden;
	max-width: 230px;
}

.menuProduto {
	max-width: 230px;
	background: transparent !important;
	border: none !important;
	margin-bottom: 0 !important;
}

.produto {
	width: 100%;
}

.menuProdutoAnchor.ui-tabs-anchor {
	color: white !important;
	clear: left !important;
	cursor: auto !important;
	font-weight: normal;
}

.separadorCabecalhoProduto {
	padding-top: 3px !important;
	text-align: center;
}

.labelJurisdicionadoTerceirizadoCadastro {
	font-weight: bold;
	margin: 5px 0;
}

.inputJurisdicionadoTerceirizadoCadastro {
	margin-right: 5px;
	width: auto;
}

#divContainerGridEntidades {
	width: 100%;
	max-width: 575px;
	height: 330px;
}

#labelCpfCadastro, #labelDataNascimentoCadastro, #labelTelefoneCadastro, #labelCnpjCadastro {
	width: 100%;
	max-width: 200px;
}

#inputCpfCadastro, #inputDataNascimentoCadastro, #inputTelefoneCadastro, #inputCnpjCadastro {
	width: 100%;
	max-width: 150px;
}

#labelEmailCadastro, #labelNomeCadastro, #labelNomeEmpresaCadastro, #labelCargoFuncaoCadastro {
	width: 100%;
	max-width: 400px;
}

#inputEmailCadastro, #inputNomeCadastro, #inputNomeEmpresaCadastro, #inputCargoFuncaoCadastro {
	width: 100%;
	max-width: 400px;
}

#labelMunicipioCadastro, #selectMunicipioCadastro {
	width: 100%;
	max-width: 570px;
}

/* ========== RESPONSIVO - TELAS GRANDES (Desktop) ========== */
@media (min-width: 768px) {
	#div1 {
		height: 100px;
		overflow: hidden;
	}

	#containerEmpresa {
		height: 80px;
		display: flex;
		flex-direction: column;
		justify-content: flex-start;
		padding-top: 5px;
		overflow: hidden;
	}

	#nomeEmpresa {
		display: block;
		line-height: 1.2;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	#frase {
		white-space: normal;
		overflow: hidden;
		line-height: 1.2;
	}

	#div2 {
		justify-content: space-evenly;
		align-items: flex-start;
		align-content: flex-start;
		padding: 2rem 3rem;
	}

	#loginContainer {
		width: 420px;
	}

	/* QR code visível e posicionado à direita dos campos */
	#iconeQrcode {
		display: block;
	}

	/* Toggle password tocando a borda direita do input */
	#toggle-password-login {
		right: 5px;
	}

	/* Inputs no desktop */
	#inputUsuario, #inputSenha {
		height: 25px;
		font-size: 12px;
	}
}

/* ========== RESPONSIVO - TELAS MÉDIAS (Desktop com informações à direita) ========== */
@media (min-width: 798px) {
	#divInformacoes {
		display: block;
	}
}

/* ========== RESPONSIVO - TELAS MUITO GRANDES (Desktop com texto esquerdo) ========== */
@media (min-width: 1130px) {
	#textos {
		display: block;
	}
}

/* ========== RESPONSIVO - TELAS PEQUENAS (Mobile) ========== */
@media (max-width: 767px) {
	/* Cabeçalho - logo e textos lado a lado */
	#div1 {
		padding: 0.5rem 1rem;
		gap: 0.5rem;
		flex-wrap: nowrap;
		align-items: stretch;
		min-height: 80px;
		height: auto;
	}

	#aLink {
		display: flex;
		align-items: center;
	}

	#logomarca {
		width: auto;
		height: 65px;
		max-height: none;
		flex-shrink: 0;
	}

	#containerEmpresa {
		flex: 1;
		min-width: 0;
		text-align: center;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
	}

	#nomeEmpresa {
		font-size: 12px;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	#frase {
		font-size: 18px;
		white-space: normal;
		overflow: hidden;
		text-overflow: ellipsis;
		line-height: 1.2;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		text-align: center;
	}

	/* Título "Acesso Restrito" no mobile */
	#loginContainer > p {
		font-size: 11px;
	}

	#div2 {
		padding: 1rem;
		align-items: flex-start;
		align-content: flex-start;
	}

	#loginContainer {
		width: 100%;
		max-width: 400px;
		padding: 0.75rem;
	}

	#formLogin {
		padding: 0.75rem;
		max-width: 100%;
	}

	.labelLogin .spanTextField {
		width: 65px;
		font-size: 11px;
	}

	/* Todos os inputs, selects e botões com mesma altura */
	#formLogin input,
	#formEsqueceuSenha input,
	#formCadastro input,
	.ui-dialog .divFormField input,
	select,
	.buttonFormulario {
		height: 33px !important;
		min-height: 33px !important;
		font-size: 16px !important;
		box-sizing: border-box !important;
	}

	#inputUsuario, #inputSenha {
		flex: 1;
	}

	/* Botões maiores para touch - 100% largura no mobile retrato */
	.buttonFormulario {
		font-size: 14px;
		padding: 0.6rem 1.2rem;
		width: 100%;
		display: block;
		margin: 0.5rem 0;
	}

	/* Links maiores e mais fáceis de tocar */
	#anchorEsqueceuSenha, #anchorSolicitarCadastro {
		font-size: 13px;
		display: inline-block;
		padding: 0.5rem;
		margin: 0.25rem 0;
	}

	/* Dialog Esqueci Minha Senha - responsivo */
	#divCabecalhoEsqueciMinhaSenha {
		flex-direction: column;
		align-items: center;
		text-align: center;
	}

	#imgDesbloquear {
		float: none;
		max-width: 60px;
		margin-bottom: 0.5rem;
	}

	#spanDesbloquear {
		margin-left: 0;
		text-align: center;
	}

	#formEsqueceuSenha input {
		width: 100% !important;
		max-width: 100% !important;
	}

	.labelEsqueceuSenha {
		width: 100%;
	}

	/* Inputs do cadastro responsivos */
	.inputCadastro {
		max-width: 100%;
	}

	/* Dialog cadastro - formulário responsivo no mobile */
	.ui-dialog-content {
		padding: 10px !important;
		max-height: 70vh !important;
		overflow-y: auto !important;
		overflow-x: hidden !important;
	}

	/* Container do formulário de cadastro */
	.ui-dialog-content > div {
		width: 100% !important;
	}

	/* Link da imagem do usuário - centralizado */
	.ui-dialog-content > div > a:first-child {
		display: block !important;
		float: none !important;
		text-align: center !important;
		margin-bottom: 15px !important;
	}

	/* Imagem do usuário - centralizada no topo */
	.ui-dialog-content img[src*="usuario"],
	.ui-dialog-content img[src*="clique"] {
		width: 100px !important;
		height: auto !important;
		object-fit: contain !important;
		display: inline-block !important;
	}

	/* Campos do dialog no mobile - empilhados */
	.ui-dialog-content .divFormField {
		display: block !important;
		width: 100% !important;
		height: auto !important;
		margin-bottom: 10px !important;
		margin-left: 0 !important;
	}

	/* Inputs no mobile */
	.ui-dialog-content .divFormField input:not([type="checkbox"]):not([type="radio"]),
	.ui-dialog-content .divFormField select {
		width: 100% !important;
		max-width: 100% !important;
		height: 38px !important;
		font-size: 16px !important;
		margin-top: 2px !important;
	}

	/* RadioGroup no mobile - empilhado verticalmente */
	.ui-dialog-content fieldset {
		width: 100% !important;
		height: auto !important;
		overflow: visible !important;
		min-height: fit-content !important;
	}

	.ui-dialog-content fieldset .divFormField {
		display: block !important;
		width: 100% !important;
		height: auto !important;
		margin-bottom: 8px !important;
		margin-left: 0 !important;
		clear: both !important;
	}

	/* Radio alinhado com span no mobile */
	.ui-dialog-content fieldset .divFormField input[type="radio"] {
		float: left !important;
		margin-right: 5px !important;
		margin-top: 2px !important;
		width: auto !important;
		height: auto !important;
	}

	.ui-dialog-content fieldset .divFormField .nomeCampo {
		display: inline !important;
		vertical-align: top !important;
	}

	/* Botões do dialog */
	.ui-dialog .ui-dialog-buttonpane button {
		width: 125px !important;
		min-height: 36px !important;
		height: 36px !important;
		font-size: 13px !important;
		padding: 0.3rem 0.5rem !important;
	}

	/* Dialog não excede a largura da tela */
	.ui-dialog {
		max-width: calc(100vw - 20px) !important;
	}

	/* Cabeçalho do dialog menor */
	.ui-dialog-titlebar {
		padding: 3px 8px !important;
	}

	/* Dialog ajusta altura automaticamente ao conteúdo */
	.ui-dialog {
		height: auto !important;
	}
}

/* ========== RESPONSIVO - PORTRAIT (Mobile em pé) ========== */
@media (max-width: 767px) and (orientation: portrait) {
	#div1 {
		justify-content: center;
		min-height: 60px;
	}

	#logomarca {
		height: 50px;
	}

	#containerEmpresa {
		display: none !important;
	}
}

/* ========== RESPONSIVO - LANDSCAPE (Mobile deitado) ========== */
@media (max-height: 500px) and (orientation: landscape) {
	#div1 {
		padding: 3px 1rem;
		gap: 0.5rem;
		min-height: 60px;
	}

	#logomarca {
		width: auto;
		height: auto;
		max-height: 100%;
		object-fit: contain;
	}

	#containerEmpresa {
		justify-content: flex-start;
		gap: 0;
		height: 100%;
	}

	#nomeEmpresa {
		font-size: 11px;
	}

	#frase {
		font-size: 16px;
		flex: 1;
		display: flex;
		align-items: flex-start;
	}

	#div2 {
		padding: 0.5rem;
		gap: 0.5rem;
	}

	#loginContainer {
		width: auto;
		max-width: 350px;
	}

	#formLogin {
		padding: 0.5rem;
	}

	.labelLogin {
		flex-direction: row;
		margin-bottom: 0.5rem;
	}

	.labelLogin .spanTextField {
		width: 70px;
		text-align: right;
	}

	#inputUsuario, #inputSenha {
		height: 36px;
		font-size: 14px;
	}

	/* Botões menores no landscape mas ainda tocáveis - 50% largura */
	.buttonFormulario {
		font-size: 12px;
		padding: 0.4rem 0.8rem;
		min-height: 36px;
		width: calc(50% - 10px);
		display: inline-block;
		margin: 5px;
	}

	#anchorEsqueceuSenha, #anchorSolicitarCadastro {
		font-size: 11px;
		display: inline-block;
		padding: 0.3rem;
		margin: 0.15rem 0.25rem;
	}

	/* Dialog mais compacto no landscape */
	.ui-dialog .ui-dialog-buttonpane button {
		min-height: 36px !important;
		font-size: 12px !important;
	}

	/* RadioGroup no landscape - 2 por linha */
	.ui-dialog-content fieldset .divFormField {
		display: inline-block !important;
		width: calc(50% - 10px) !important;
		margin-right: 5px !important;
		margin-bottom: 5px !important;
		vertical-align: top !important;
	}
}
