/**
 * Webzoe EAD Suite — Design System compartilhado.
 *
 * Fonte única de verdade para tipografia, botões, cards, alerts, badges e
 * formulários de TODOS os módulos (Dashboard, Lesson, App-web, etc.).
 *
 * As cores/raio vêm de CSS custom properties injetadas pelo Core
 * (Design\Design_Tokens) a partir das configurações da empresa. Este arquivo
 * define apenas fallbacks e a aparência dos componentes.
 *
 * Namespace de classe: .wzead-*  |  escopo raiz: .wzead
 */

.wzead {
	/* Fallbacks (sobrescritos pelos tokens injetados). */
	--wzead-primary: #6D28D9;
	--wzead-secondary: #F3E8FF;
	--wzead-accent: #22C55E;
	--wzead-button: #6D28D9;
	--wzead-button-text: #FFFFFF;
	--wzead-sidebar: #111827;
	--wzead-sidebar-active: #6D28D9;
	--wzead-background: #F9FAFB;
	--wzead-card: #FFFFFF;
	--wzead-text: #1F2937;
	--wzead-muted: #6B7280;
	--wzead-border: rgba(17, 24, 39, .08);
	--wzead-radius: 18px;
	--wzead-radius-sm: 12px;
	--wzead-shadow: 0 6px 24px rgba(17, 24, 39, .08);

	--wzead-danger: #EF4444;
	--wzead-warning: #F59E0B;
	--wzead-success: #22C55E;
	--wzead-info: #3B82F6;

	--wzead-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

	color: var(--wzead-text);
	font-family: var(--wzead-font);
	line-height: 1.5;
	box-sizing: border-box;
}

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

/* ---------- Tema escuro ---------- */
/*
 * Preferência de CADA ALUNO (não é config de marca/admin — essa continua em
 * Identidade Visual, no Core). Ativado via atributo `data-theme="dark"` no
 * <html>, alternado pelo botão .wzead-theme-toggle (assets/js/theme-toggle.js)
 * e lembrado no navegador (localStorage).
 *
 * Seletor descendente (não ".wzead[data-theme]") de propósito: o atributo
 * fica no <html>, mas a classe .wzead/.wzead-app pode estar em qualquer
 * elemento abaixo dele (no Lesson é o <body>; no Dashboard, uma <div>) — o
 * seletor abaixo cobre os dois casos sem precisar saber qual é.
 *
 * As cores de marca (primary/accent/button/sidebar) NÃO mudam entre os temas
 * — identidade visual é a mesma; só o que é "chrome" da interface (fundo,
 * card, texto, borda) se adapta.
 */
html[data-theme="dark"] .wzead,
html[data-theme="dark"] .wzead-app {
	--wzead-background: #0F1115;
	--wzead-card: #1A1D24;
	--wzead-text: #E8E9EC;
	--wzead-muted: #9AA0AC;
	--wzead-border: rgba(255, 255, 255, .08);
	--wzead-secondary: rgba(109, 40, 217, .22);
	--wzead-shadow: 0 6px 24px rgba(0, 0, 0, .35);
}

/*
 * Botão de alternar tema (ícone sol/lua).
 *
 * Especificidade extra (.wzead button.wzead-theme-toggle, não só a classe
 * sozinha) de propósito: confirmado em produção que o Kit Global do
 * Elementor injeta uma regra `.elementor-kit-XXX button { background-color:
 * var(--e-global-color-accent); font-size: ...; line-height: ...; }` que
 * mira QUALQUER <button> do site, não só o que ele mesmo constrói. Isso
 * sobrescrevia nosso botão (virava um "pill" azul com o ícone espremido/pra
 * fora). Um seletor de uma classe só (especificidade 0,0,1,0) perde pra
 * `.elementor-kit-XXX button` (classe + elemento = 0,0,1,1); combinando a
 * classe do wrapper .wzead + elemento + classe do botão garantimos vitória
 * sem precisar de !important.
 */
.wzead button.wzead-theme-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	min-width: 32px;
	min-height: 32px;
	border-radius: 999px;
	border: 1px solid rgba(255, 255, 255, .18);
	background: rgba(255, 255, 255, .08);
	color: inherit;
	cursor: pointer;
	flex-shrink: 0;
	font-size: 16px;
	font-weight: normal;
	line-height: 1;
	padding: 0;
	margin: 0;
	overflow: hidden;
}
.wzead button.wzead-theme-toggle:hover { background: rgba(255, 255, 255, .16); }
.wzead button.wzead-theme-toggle .wzead-theme-toggle__icon-dark { display: none; }
html[data-theme="dark"] .wzead button.wzead-theme-toggle .wzead-theme-toggle__icon-light { display: none; }
html[data-theme="dark"] .wzead button.wzead-theme-toggle .wzead-theme-toggle__icon-dark { display: inline; }

/* ---------- Tipografia ---------- */
.wzead h1, .wzead h2, .wzead h3, .wzead h4 {
	color: var(--wzead-text);
	line-height: 1.25;
	margin: 0 0 .5em;
	font-weight: 700;
}
.wzead h1 { font-size: 1.75rem; }
.wzead h2 { font-size: 1.375rem; }
.wzead h3 { font-size: 1.125rem; }
.wzead p { margin: 0 0 1em; }
.wzead a { color: var(--wzead-primary); text-decoration: none; }
.wzead a:hover { text-decoration: underline; }
.wzead__muted { color: var(--wzead-muted); }

/* ---------- Botões ---------- */
/*
 * Cada regra abaixo tem TRÊS formas de seletor: ".wzead-btn" (base),
 * ".wzead button.wzead-btn" (reforço pra quando o elemento é um <button> de
 * verdade) e ".wzead a.wzead-btn" (reforço pro caso de <a> — ver motivo
 * abaixo). Motivo do reforço em <button> confirmado em produção: o Kit
 * Global do Elementor injeta `.elementor-kit-XXX button { background-color:
 * ...; font-size:...; }` mirando QUALQUER <button> do site, não só o que
 * ele mesmo constrói. Motivo do reforço em <a>, TAMBÉM confirmado em
 * produção (bug nosso, não de terceiro): a regra ".wzead a { color: var(
 * --wzead-primary); }" (definida acima) tem especificidade 0,0,1,1 (classe
 * .wzead + elemento a), que BATE a simples ".wzead-btn" (0,0,1,0) — então
 * todo <a class="wzead-btn"> tinha o texto forçado pra --wzead-primary em
 * vez de --wzead-button-text (branco). Ficava invisível sempre que o
 * usuário configurava a cor primária igual (ou parecida) à cor do botão em
 * Identidade Visual — texto branco não é o problema, é a cor errada sendo
 * aplicada por cima dela. Em todos os casos, um seletor de uma classe só
 * (especificidade 0,0,1,0) perde pra classe+elemento (0,0,1,1); a forma
 * "elemento+classe+classe" (0,0,2,1) garante vitória sem precisar de
 * !important.
 */
.wzead-btn,
.wzead button.wzead-btn,
.wzead a.wzead-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: .625rem 1.125rem;
	border: 1px solid transparent;
	border-radius: var(--wzead-radius-sm);
	background: var(--wzead-button);
	color: var(--wzead-button-text);
	font: inherit;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	transition: filter .15s ease, transform .15s ease, background .15s ease;
	text-decoration: none;
}
.wzead-btn:hover,
.wzead button.wzead-btn:hover,
.wzead a.wzead-btn:hover { filter: brightness(1.05); text-decoration: none; }
.wzead-btn:active,
.wzead button.wzead-btn:active,
.wzead a.wzead-btn:active { transform: translateY(1px); }
.wzead-btn:disabled,
.wzead-btn[aria-disabled="true"],
.wzead button.wzead-btn:disabled,
.wzead button.wzead-btn[aria-disabled="true"],
.wzead a.wzead-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }

.wzead-btn--secondary,
.wzead button.wzead-btn--secondary,
.wzead a.wzead-btn--secondary {
	background: var(--wzead-secondary);
	color: var(--wzead-primary);
}
.wzead-btn--outline,
.wzead button.wzead-btn--outline,
.wzead a.wzead-btn--outline {
	background: transparent;
	border-color: var(--wzead-border);
	color: var(--wzead-text);
}
.wzead-btn--ghost,
.wzead button.wzead-btn--ghost,
.wzead a.wzead-btn--ghost {
	background: transparent;
	color: var(--wzead-primary);
}
.wzead-btn--danger,
.wzead button.wzead-btn--danger,
.wzead a.wzead-btn--danger { background: var(--wzead-danger); color: #fff; }
.wzead-btn--sm,
.wzead button.wzead-btn--sm,
.wzead a.wzead-btn--sm { padding: .4rem .75rem; font-size: .875rem; }
.wzead-btn--lg,
.wzead button.wzead-btn--lg,
.wzead a.wzead-btn--lg { padding: .8rem 1.5rem; font-size: 1.0625rem; }
.wzead-btn--block,
.wzead button.wzead-btn--block,
.wzead a.wzead-btn--block { display: flex; width: 100%; }

/* ---------- Cards ---------- */
.wzead-card {
	background: var(--wzead-card);
	border: 1px solid var(--wzead-border);
	border-radius: var(--wzead-radius);
	box-shadow: var(--wzead-shadow);
	padding: 1.25rem;
}
.wzead-card__title { font-size: 1.0625rem; font-weight: 700; margin: 0 0 .5rem; }
.wzead-card__body { color: var(--wzead-text); }
.wzead-card__footer {
	margin-top: 1rem;
	padding-top: 1rem;
	border-top: 1px solid var(--wzead-border);
}

/* ---------- Badges ---------- */
.wzead-badge {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	padding: .2rem .6rem;
	border-radius: 999px;
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.4;
	background: var(--wzead-secondary);
	color: var(--wzead-primary);
}
.wzead-badge--success { background: rgba(34,197,94,.15); color: #15803D; }
.wzead-badge--warning { background: rgba(245,158,11,.15); color: #B45309; }
.wzead-badge--danger  { background: rgba(239,68,68,.15);  color: #B91C1C; }
.wzead-badge--info    { background: rgba(59,130,246,.15); color: #1D4ED8; }
.wzead-badge--muted   { background: rgba(107,114,128,.12); color: var(--wzead-muted); }

/* ---------- Alerts ---------- */
.wzead-alert {
	display: flex;
	gap: .75rem;
	padding: .875rem 1rem;
	border-radius: var(--wzead-radius-sm);
	border: 1px solid transparent;
	font-size: .9375rem;
}
.wzead-alert--info    { background: rgba(59,130,246,.08);  border-color: rgba(59,130,246,.25);  color: #1E40AF; }
.wzead-alert--success { background: rgba(34,197,94,.08);   border-color: rgba(34,197,94,.25);   color: #166534; }
.wzead-alert--warning { background: rgba(245,158,11,.08);  border-color: rgba(245,158,11,.25);  color: #92400E; }
.wzead-alert--danger  { background: rgba(239,68,68,.08);   border-color: rgba(239,68,68,.25);   color: #991B1B; }

/* ---------- Formulários ---------- */
.wzead-field { margin-bottom: 1rem; }
.wzead-label {
	display: block;
	margin-bottom: .35rem;
	font-weight: 600;
	font-size: .875rem;
	color: var(--wzead-text);
}
.wzead-input,
.wzead-select,
.wzead-textarea {
	width: 100%;
	padding: .625rem .75rem;
	border: 1px solid var(--wzead-border);
	border-radius: var(--wzead-radius-sm);
	background: #fff;
	color: var(--wzead-text);
	font: inherit;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.wzead-input:focus,
.wzead-select:focus,
.wzead-textarea:focus {
	outline: none;
	border-color: var(--wzead-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--wzead-primary) 18%, transparent);
}
.wzead-textarea { min-height: 120px; resize: vertical; }
.wzead-help { margin-top: .3rem; font-size: .8125rem; color: var(--wzead-muted); }

/* ---------- Progresso ---------- */
.wzead-progress {
	height: 8px;
	border-radius: 999px;
	background: var(--wzead-secondary);
	overflow: hidden;
}
.wzead-progress__bar {
	height: 100%;
	border-radius: 999px;
	background: var(--wzead-primary);
	transition: width .3s ease;
}

/* ---------- Utilitários ---------- */
.wzead-stack > * + * { margin-top: 1rem; }
.wzead-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.wzead-grid { display: grid; gap: 1rem; }
@media (min-width: 640px)  { .wzead-grid--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px)  { .wzead-grid--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1100px) { .wzead-grid--4 { grid-template-columns: repeat(4, 1fr); } }
