/*
 * Canopath — Auth + Onboarding screens
 * Register, Login, Forgot/Reset password, Email verification, Onboarding wizard.
 *
 * Layout pattern: centered single-column form on cream background; subtle
 * supporting panel on desktop with reassurance copy + trust signals.
 */

/* ============================================================
 * AUTH SHELL (centered card)
 * ============================================================ */

.cn-auth {
	min-height: calc(100vh - 80px);
	padding: var(--cn-space-12) var(--cn-gutter-mobile);
	display: grid;
	place-items: center;
}
@media (min-width: 768px) {
	.cn-auth { padding: var(--cn-space-16) var(--cn-gutter-desktop); }
}

.cn-auth__card {
	width: 100%;
	max-width: 480px;
	background: var(--cn-paper);
	border-radius: var(--cn-radius-xl);
	border: 1px solid var(--cn-ink-100);
	padding: clamp(2rem, 5vw, 3rem);
	box-shadow: var(--cn-shadow-md);
}

.cn-auth__eyebrow {
	display: inline-flex;
	margin-bottom: var(--cn-space-4);
}

.cn-auth__title {
	font-size: var(--cn-text-4xl);
	letter-spacing: -0.02em;
	margin-bottom: var(--cn-space-3);
}

.cn-auth__lede {
	color: var(--cn-ink-500);
	margin-bottom: var(--cn-space-8);
	line-height: var(--cn-leading-relaxed);
}

/* Two-column variant — register page can use a side rail with reassurance */
.cn-auth--split {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--cn-space-12);
	max-width: 1100px;
	margin: 0 auto;
	align-items: start;
	place-items: stretch;
}
@media (min-width: 980px) {
	.cn-auth--split { grid-template-columns: 1.1fr 1fr; gap: var(--cn-space-16); }
}
.cn-auth--split .cn-auth__card { max-width: none; }

.cn-auth__rail {
	display: none;
	padding-top: var(--cn-space-8);
}
@media (min-width: 980px) {
	.cn-auth__rail { display: block; }
}
.cn-auth__rail h2 {
	font-size: var(--cn-text-3xl);
	margin-bottom: var(--cn-space-4);
}
.cn-auth__rail-list {
	list-style: none;
	margin: 0; padding: 0;
	display: flex; flex-direction: column;
	gap: var(--cn-space-5);
	margin-top: var(--cn-space-6);
}
.cn-auth__rail-list li {
	display: flex; align-items: flex-start;
	gap: var(--cn-space-3);
	color: var(--cn-ink-700);
	font-size: var(--cn-text-base);
	line-height: var(--cn-leading-relaxed);
}
.cn-auth__rail-list li strong {
	color: var(--cn-ink-800);
	display: block;
	margin-bottom: 2px;
	font-weight: 600;
}
.cn-auth__rail-mark {
	flex-shrink: 0;
	width: 28px; height: 28px;
	background: var(--cn-teal-100);
	color: var(--cn-teal-700);
	border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	font-family: var(--cn-font-display);
	font-size: var(--cn-text-base);
}

/* ============================================================
 * FORM PRIMITIVES
 * ============================================================ */

.cn-form {
	display: flex; flex-direction: column;
	gap: var(--cn-space-5);
}

.cn-field { display: flex; flex-direction: column; gap: var(--cn-space-2); }
.cn-field label {
	font-size: var(--cn-text-sm);
	font-weight: 500;
	color: var(--cn-ink-700);
}
.cn-field__hint {
	font-size: var(--cn-text-sm);
	color: var(--cn-ink-400);
	margin-top: -2px;
}
.cn-field__error {
	display: none;
	font-size: var(--cn-text-sm);
	color: var(--cn-coral-700);
}
.cn-field.has-error input,
.cn-field.has-error select,
.cn-field.has-error textarea {
	border-color: var(--cn-coral-500);
}
.cn-field.has-error .cn-field__error { display: block; }

.cn-field-row {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--cn-space-4);
}
@media (min-width: 520px) {
	.cn-field-row { grid-template-columns: 1fr 1fr; }
}

.cn-checkbox {
	display: flex; align-items: flex-start;
	gap: var(--cn-space-3);
	font-size: var(--cn-text-sm);
	color: var(--cn-ink-700);
	line-height: var(--cn-leading-relaxed);
	cursor: pointer;
}
.cn-checkbox input {
	width: auto;
	margin-top: 0.2rem;
	accent-color: var(--cn-teal-600);
	flex-shrink: 0;
}
.cn-checkbox a { color: var(--cn-teal-600); }

/* Form-level alert (top of form) */
.cn-alert {
	padding: var(--cn-space-3) var(--cn-space-4);
	border-radius: var(--cn-radius-md);
	font-size: var(--cn-text-sm);
	line-height: var(--cn-leading-relaxed);
	border: 1px solid;
}
.cn-alert--error {
	background: var(--cn-coral-100);
	color: var(--cn-coral-800);
	border-color: var(--cn-coral-200);
}
.cn-alert--success {
	background: var(--cn-teal-50);
	color: var(--cn-teal-700);
	border-color: var(--cn-teal-100);
}
.cn-alert--info {
	background: var(--cn-ink-50);
	color: var(--cn-ink-700);
	border-color: var(--cn-ink-100);
}
.cn-alert.is-hidden { display: none; }

/* Honeypot — visually hidden but available to bots */
.cn-honeypot {
	position: absolute !important;
	left: -10000px !important;
	top: auto !important;
	width: 1px !important; height: 1px !important;
	overflow: hidden !important;
}

/* Submit button when busy */
.cn-btn.is-busy {
	pointer-events: none;
	opacity: 0.7;
	position: relative;
}
.cn-btn.is-busy::after {
	content: "";
	position: absolute;
	width: 16px; height: 16px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	margin-left: var(--cn-space-3);
	animation: cn-spin 0.7s linear infinite;
}
@keyframes cn-spin { to { transform: rotate(360deg); } }

/* ============================================================
 * AUTH FOOTER LINKS (below form)
 * ============================================================ */

.cn-auth__footer {
	margin-top: var(--cn-space-6);
	padding-top: var(--cn-space-5);
	border-top: 1px solid var(--cn-ink-100);
	font-size: var(--cn-text-sm);
	color: var(--cn-ink-500);
	display: flex;
	flex-direction: column;
	gap: var(--cn-space-2);
}
.cn-auth__footer a { color: var(--cn-teal-600); font-weight: 500; }

/* ============================================================
 * ONBOARDING WIZARD
 * ============================================================ */

.cn-onboarding {
	max-width: 720px;
	margin: 0 auto;
	padding: var(--cn-space-12) var(--cn-gutter-mobile);
}
@media (min-width: 768px) {
	.cn-onboarding { padding: var(--cn-space-16) var(--cn-gutter-desktop); }
}

.cn-onboarding__progress {
	display: flex; gap: var(--cn-space-2);
	margin-bottom: var(--cn-space-8);
}
.cn-onboarding__progress-dot {
	flex: 1;
	height: 4px;
	background: var(--cn-ink-100);
	border-radius: var(--cn-radius-pill);
	transition: background var(--cn-dur-base) var(--cn-ease-out);
}
.cn-onboarding__progress-dot.is-done    { background: var(--cn-teal-500); }
.cn-onboarding__progress-dot.is-current { background: var(--cn-coral-500); }

.cn-onboarding__step {
	display: none;
	background: var(--cn-paper);
	border-radius: var(--cn-radius-xl);
	border: 1px solid var(--cn-ink-100);
	padding: clamp(2rem, 5vw, 3rem);
	box-shadow: var(--cn-shadow-md);
}
.cn-onboarding__step.is-active { display: block; }

.cn-onboarding__step-eyebrow {
	font-size: var(--cn-text-xs);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--cn-ink-400);
	font-weight: 600;
	margin-bottom: var(--cn-space-3);
}
.cn-onboarding__step h2 {
	font-size: var(--cn-text-4xl);
	margin-bottom: var(--cn-space-3);
}
.cn-onboarding__step .cn-help {
	font-size: var(--cn-text-base);
	color: var(--cn-ink-500);
	line-height: var(--cn-leading-relaxed);
	margin-bottom: var(--cn-space-6);
}
.cn-onboarding__nav {
	margin-top: var(--cn-space-8);
	display: flex;
	gap: var(--cn-space-3);
	flex-wrap: wrap;
}
.cn-onboarding__nav .cn-btn { min-width: 140px; }

/* Acknowledgments list — used on the "what Canopath is/isn't" step */
.cn-acks {
	display: flex; flex-direction: column;
	gap: var(--cn-space-3);
	margin: var(--cn-space-6) 0;
}
.cn-ack {
	display: flex; align-items: flex-start;
	gap: var(--cn-space-3);
	padding: var(--cn-space-4);
	border: 1.5px solid var(--cn-ink-100);
	border-radius: var(--cn-radius-md);
	cursor: pointer;
	font-size: var(--cn-text-base);
	color: var(--cn-ink-700);
	line-height: var(--cn-leading-snug);
}
.cn-ack:hover { border-color: var(--cn-teal-300); background: var(--cn-teal-50); }
.cn-ack input {
	width: auto;
	margin-top: 0.15rem;
	accent-color: var(--cn-teal-600);
	flex-shrink: 0;
}
.cn-ack:has(input:checked) { border-color: var(--cn-teal-600); background: var(--cn-teal-50); }
