/* Portal de Acesso — namespace .portal-acesso-* apenas, sem estilos globais.
   Herda fontes/cores do tema via var(--...) definidas no style.css do tema,
   com fallback proximo a identidade visual atual caso as variaveis mudem. */

.portal-acesso-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	font-family: var(--font-body, 'Poppins', sans-serif);
	font-size: 15px;
	font-weight: 600;
	padding: 12px 26px;
	border-radius: var(--pa-radius, 999px);
	border: none;
	cursor: pointer;
	background: var(--gradient-cta, linear-gradient(135deg, #5a46e0, #8b3fd6));
	color: #fff;
	text-decoration: none;
	transition: opacity .2s ease, transform .15s ease;
}

.portal-acesso-btn:hover {
	opacity: .92;
}

.portal-acesso-btn:focus-visible {
	outline: 2px solid var(--color-pink, #f56efa);
	outline-offset: 2px;
}

.portal-acesso-btn--account {
	background: var(--color-panel, rgba(255,255,255,.05));
	border: 1px solid var(--color-panel-border, rgba(150,140,220,.28));
	color: var(--color-text, #ece9ff);
}

.portal-acesso-btn--avatar-only {
	padding: 3px;
	border-radius: 50% !important;
	width: 40px;
	height: 40px;
	gap: 0;
	overflow: hidden !important;
	box-sizing: border-box;
}

/* O Elementor carrega um reset global (".elementor img { border-radius:0 }")
   que tem especificidade maior que uma classe unica e vence a nossa regra
   sempre que o botao fica dentro de um container feito no Elementor (caso
   do cabecalho). O !important aqui e proposital, so para garantir que a
   foto de perfil sempre fique redonda independente de onde for exibida. */
.portal-acesso-header-avatar {
	width: 100% !important;
	height: 100% !important;
	border-radius: 50% !important;
	object-fit: cover !important;
	display: block !important;
}

.portal-acesso-overlay {
	position: fixed !important;
	inset: 0 !important;
	background: rgba(3, 2, 8, .72);
	backdrop-filter: blur(3px);
	display: flex;
	align-items: center;
	justify-content: center;
	/* Precisa vencer qualquer header/menu fixo do tema ou do Elementor.
	   O JS tambem move este elemento para o final do <body> (ver
	   moveOverlayToBody() em portal-acesso.js) para escapar de qualquer
	   ancestral com transform/overflow que quebraria o position:fixed. */
	z-index: 2147483000 !important;
	padding: 16px;
	box-sizing: border-box;
	overflow-y: auto;
}

.portal-acesso-overlay[hidden] {
	display: none !important;
}

.portal-acesso-modal {
	width: 100%;
	max-width: var(--pa-modal-width, 460px);
	max-height: 90vh;
	max-height: 90dvh;
	overflow-y: auto;
	margin: auto;
	background: var(--color-bg, #050308);
	border: 1px solid var(--color-panel-border, rgba(150,140,220,.28));
	border-radius: 20px;
	padding: 32px;
	box-sizing: border-box;
	position: relative;
	box-shadow: 0 20px 60px rgba(0,0,0,.5);
	font-family: var(--font-body, 'Poppins', sans-serif);
	color: var(--color-text, #ece9ff);
}

.portal-acesso-close {
	position: absolute;
	top: 16px;
	right: 16px;
	background: transparent;
	border: none;
	color: var(--color-text-muted, #9c96c8);
	font-size: 24px;
	line-height: 1;
	cursor: pointer;
	padding: 4px;
}

.portal-acesso-close:hover {
	color: var(--color-text, #ece9ff);
}

.portal-acesso-title {
	font-family: var(--font-heading, 'Playfair Display', serif);
	font-size: 22px;
	margin: 0 0 20px;
	text-align: center;
	color: var(--color-text, #ece9ff);
}

.portal-acesso-tabs,
.portal-acesso-account-tabs {
	display: flex;
	gap: 8px;
	margin-bottom: 20px;
	border-bottom: 1px solid var(--color-border, rgba(150,140,220,.18));
}

.portal-acesso-tab {
	flex: 1;
	background: transparent;
	border: none;
	color: var(--color-text-muted, #9c96c8);
	font-family: var(--font-body, 'Poppins', sans-serif);
	font-size: 14px;
	font-weight: 600;
	padding: 10px 8px;
	cursor: pointer;
	border-bottom: 2px solid transparent;
}

.portal-acesso-tab.is-active {
	color: var(--color-text, #ece9ff);
	border-bottom-color: var(--color-pink, #f56efa);
}

.portal-acesso-account-tabs {
	flex-wrap: wrap;
}

.portal-acesso-panel[hidden] {
	display: none;
}

.portal-acesso-form {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.portal-acesso-row-2 {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

.portal-acesso-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.portal-acesso-field label {
	font-size: 13px;
	color: var(--color-text-muted, #9c96c8);
}

.portal-acesso-optional {
	font-size: 11px;
	opacity: .8;
}

.portal-acesso-form input[type="text"],
.portal-acesso-form input[type="email"],
.portal-acesso-form input[type="password"],
.portal-acesso-form input[type="date"],
.portal-acesso-form input[type="time"] {
	background: rgba(255,255,255,.04);
	border: 1px solid var(--color-panel-border, rgba(150,140,220,.28));
	border-radius: var(--pa-input-radius, 10px);
	padding: 10px 14px;
	color: var(--color-text, #ece9ff);
	font-family: var(--font-body, 'Poppins', sans-serif);
	font-size: 15px;
	width: 100%;
	box-sizing: border-box;
}

.portal-acesso-form input:focus {
	outline: none;
	border-color: var(--color-pink, #f56efa);
	box-shadow: 0 0 0 3px rgba(245,110,250,.15);
}

.portal-acesso-password-wrap {
	position: relative;
	display: flex;
	align-items: center;
}

.portal-acesso-password-wrap input {
	padding-right: 40px !important;
}

.portal-acesso-toggle-pass {
	position: absolute;
	right: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: none;
	cursor: pointer;
	padding: 4px;
	line-height: 0;
	color: var(--color-text-muted, #9c96c8);
}

.portal-acesso-toggle-pass:hover {
	color: var(--color-text, #ece9ff);
}

.portal-acesso-toggle-pass svg {
	display: block;
}

.portal-acesso-strength {
	display: flex;
	flex-direction: column;
	gap: 5px;
	min-height: 20px;
}

.portal-acesso-strength-track {
	width: 100%;
	height: 5px;
	border-radius: 3px;
	background: rgba(255,255,255,.08);
	overflow: hidden;
}

.portal-acesso-strength-fill {
	height: 100%;
	width: 0%;
	border-radius: 3px;
	background-color: transparent;
	transition: width .2s ease, background-color .2s ease;
}

.portal-acesso-strength-label {
	font-size: 12px;
	font-weight: 600;
}

.portal-acesso-strength-checklist {
	list-style: none;
	margin: 2px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.portal-acesso-strength-checklist[hidden] {
	display: none;
}

.portal-acesso-strength-checklist li {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 12px;
	color: var(--color-text-muted, #9c96c8);
}

.portal-acesso-strength-checklist li::before {
	content: '';
	flex: 0 0 auto;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--color-text-muted, #9c96c8);
	opacity: .5;
}

.portal-acesso-strength-checklist li.is-met {
	color: #5cff8a;
}

.portal-acesso-strength-checklist li.is-met::before {
	content: '✓';
	width: auto;
	height: auto;
	background: none;
	opacity: 1;
	font-size: 11px;
	line-height: 1;
}

.portal-acesso-field--inline {
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 8px;
}

.portal-acesso-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-size: 13px;
	color: var(--color-text-muted, #9c96c8);
	cursor: pointer;
}

.portal-acesso-checkbox input {
	margin-top: 3px;
}

.portal-acesso-checkbox a {
	color: var(--color-pink, #f56efa);
}

.portal-acesso-link {
	background: transparent;
	border: none;
	color: var(--color-blue, #5e6ef0);
	font-size: 13px;
	cursor: pointer;
	text-decoration: underline;
	padding: 0;
	text-align: left;
}

.portal-acesso-note {
	font-size: 13px;
	color: var(--color-text-muted, #9c96c8);
	margin: 0;
}

.portal-acesso-message {
	font-size: 13px;
	min-height: 0;
}

.portal-acesso-message.is-success {
	color: #5affa0;
}

.portal-acesso-message.is-error {
	color: #ff6e6e;
}

.portal-acesso-alert {
	padding: 12px 16px;
	border-radius: 10px;
	font-size: 14px;
	margin-bottom: 16px;
}

.portal-acesso-alert--success {
	background: rgba(90,255,160,.1);
	color: #5affa0;
	border: 1px solid rgba(90,255,160,.3);
}

.portal-acesso-alert--error {
	background: rgba(255,110,110,.1);
	color: #ff6e6e;
	border: 1px solid rgba(255,110,110,.3);
}

.portal-acesso-btn--cta {
	width: 100%;
	margin-top: 4px;
}

.portal-acesso-btn:disabled {
	opacity: .6;
	cursor: not-allowed;
}

.portal-acesso-account {
	max-width: 560px;
	margin: 0 auto;
	font-family: var(--font-body, 'Poppins', sans-serif);
	color: var(--color-text, #ece9ff);
}

.portal-acesso-logout-wrap {
	margin-top: 24px;
	text-align: center;
}

.portal-acesso-link--logout {
	color: var(--color-text-muted, #9c96c8);
}

.portal-acesso-inline {
	max-width: 460px;
}

.portal-acesso-required {
	color: var(--color-pink, #f56efa);
	margin-left: 2px;
}

.portal-acesso-zodiac-preview {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 4px;
	font-size: 13px;
	color: var(--color-text-muted, #9c96c8);
}

.portal-acesso-zodiac-preview[hidden] {
	display: none;
}


.portal-acesso-avatar-block {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	margin-bottom: 24px;
	text-align: center;
}

.portal-acesso-avatar-wrap {
	width: 96px;
	height: 96px;
	border-radius: 50% !important;
	overflow: hidden !important;
	border: 2px solid var(--color-panel-border, rgba(150,140,220,.28));
	box-sizing: border-box;
}

/* !important pelo mesmo motivo do .portal-acesso-header-avatar acima:
   o reset global de imagem do Elementor tem especificidade maior. */
.portal-acesso-avatar-img {
	width: 100% !important;
	height: 100% !important;
	border-radius: 50% !important;
	object-fit: cover !important;
	display: block !important;
}

.portal-acesso-avatar-actions {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	justify-content: center;
}

.portal-acesso-avatar-upload-btn {
	padding: 8px 18px;
	font-size: 13px;
	cursor: pointer;
}

/* Mesmo motivo do .portal-acesso-overlay principal: precisa vencer qualquer
   ancestral com transform/overflow (paginas feitas no Elementor) e ficar
   sempre visivel, tanto no PC quanto no celular. O JS tambem move este
   elemento para o final do <body> (ver moveCropOverlayToBody() em
   portal-acesso.js). */
.portal-acesso-crop-overlay {
	position: fixed !important;
	inset: 0 !important;
	background: rgba(3, 2, 8, .82);
	backdrop-filter: blur(3px);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 2147483001 !important;
	padding: 16px;
	box-sizing: border-box;
	overflow-y: auto;
}

.portal-acesso-crop-overlay[hidden] {
	display: none !important;
}

.portal-acesso-crop-modal {
	width: 100%;
	max-width: 360px;
	max-height: 92vh;
	max-height: 92dvh;
	overflow-y: auto;
	background: var(--color-bg, #050308);
	border: 1px solid var(--color-panel-border, rgba(150,140,220,.28));
	border-radius: 20px;
	padding: 28px;
	box-sizing: border-box;
	margin: auto;
	font-family: var(--font-body, 'Poppins', sans-serif);
	color: var(--color-text, #ece9ff);
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.portal-acesso-crop-stage {
	width: 280px;
	max-width: 100%;
	aspect-ratio: 1 / 1;
	margin: 0 auto;
	border-radius: 50% !important;
	overflow: hidden !important;
	border: 2px solid var(--color-pink, #f56efa);
	cursor: grab;
	touch-action: none;
}

.portal-acesso-crop-stage:active {
	cursor: grabbing;
}

.portal-acesso-crop-stage canvas {
	width: 100%;
	height: 100%;
	display: block;
}

.portal-acesso-crop-field {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.portal-acesso-crop-field label {
	font-size: 13px;
	color: var(--color-text-muted, #9c96c8);
}

.portal-acesso-crop-buttons {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-top: 4px;
}

.portal-acesso-crop-buttons .portal-acesso-btn {
	flex: 1;
}

body.portal-acesso-lock-scroll {
	overflow: hidden;
}

/* Responsivo */
@media (max-width: 480px) {
	.portal-acesso-modal {
		padding: 24px 18px;
		border-radius: 16px;
	}
	.portal-acesso-row-2 {
		grid-template-columns: 1fr;
	}
	.portal-acesso-field--inline {
		flex-direction: column;
		align-items: flex-start;
	}
}

/* Simbolo unicode do signo (♈ ♉ ♊ ...) ao lado do icone/nome na previa. */
.portal-acesso-zodiac-symbol {
	font-size: 18px;
	line-height: 1;
}

/* Contador de caracteres do campo "Sobre" (ex.: "123/250"). */
.portal-acesso-char-counter {
	display: block;
	text-align: right;
	font-size: 11px;
	color: var(--color-text-muted, #9c96c8);
	margin-top: 4px;
}

.portal-acesso-char-counter.is-near-limit {
	color: var(--color-pink, #f56efa);
}

/* Perfil Social publico (?pa_perfil=ID na pagina de Minha Conta). */
.portal-acesso-public-profile-header {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 6px;
	margin-bottom: 12px;
}

.portal-acesso-public-profile-sign {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	color: var(--color-text-muted, #9c96c8);
	margin: 0;
}

.portal-acesso-public-profile-sign .portal-acesso-zodiac-symbol {
	font-size: 20px;
}

.portal-acesso-public-profile-about {
	font-size: 14px;
	line-height: 1.5;
	color: var(--color-text, #ece9ff);
	white-space: pre-line;
}

.portal-acesso-public-profile-links {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	margin-top: 12px;
}
