/**
 * PflegeBrücke — Components
 *
 * Buttons, cards, forms, navigation, hero, footer.
 * Animations follow Emil's framework: ease-out, custom curves, <300ms.
 */

/* ─────────────────────────────────────────────────────────
   Site header
   ───────────────────────────────────────────────────────── */
.site-header {
	position: sticky;
	top: 0;
	z-index: var(--z-sticky);
	height: var(--header-height);
	display: flex;
	align-items: center;
	background: rgba(250, 250, 247, 0.78);
	backdrop-filter: saturate(180%) blur(14px);
	-webkit-backdrop-filter: saturate(180%) blur(14px);
	border-bottom: 1px solid transparent;
	transition: border-color var(--dur-base) ease, background var(--dur-base) ease;
}
.site-header.is-scrolled {
	border-bottom-color: var(--border-subtle);
}

.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-6);
	width: 100%;
}

.site-brand {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2);
	font-family: var(--font-display);
	font-size: var(--text-lg);
	font-weight: 500;
	letter-spacing: var(--tracking-tight);
	color: var(--ink-primary);
}

.site-brand__mark {
	width: 32px;
	height: 32px;
	display: grid;
	place-items: center;
	background: linear-gradient(135deg, var(--brand-500), var(--brand-700));
	color: var(--ink-on-brand);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-sm);
	flex-shrink: 0;
}

/* ── Primary nav (desktop) ────────────────────────────── */
.nav-primary {
	display: flex;
	gap: var(--space-1);
	align-items: center;
}
.nav-primary a {
	position: relative;
	padding: var(--space-2) var(--space-3);
	font-size: var(--text-sm);
	font-weight: 500;
	color: var(--ink-secondary);
	border-radius: var(--radius-sm);
	transition: color var(--dur-fast) ease, background-color var(--dur-fast) ease;
}
@media (hover: hover) and (pointer: fine) {
	.nav-primary a:hover {
		color: var(--ink-primary);
		background: var(--surface-sunken);
	}
}

.site-header__cta {
	display: flex;
	gap: var(--space-2);
	align-items: center;
}

/* ─────────────────────────────────────────────────────────
   Mobile menu — burger button (icon-only, square, polished)
   ───────────────────────────────────────────────────────── */
.menu-toggle {
	/* Hidden on desktop, shown on mobile (see breakpoint below). */
	display: none;
	position: relative;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	background: var(--surface-raised);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-md);
	color: var(--ink-primary);
	cursor: pointer;
	flex-shrink: 0;
	transition:
		background var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1),
		border-color var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1),
		color var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1),
		box-shadow var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1);
}
@media (hover: hover) and (pointer: fine) {
	.menu-toggle:hover {
		background: var(--brand-50);
		border-color: var(--brand-300);
		color: var(--brand-700);
	}
}
.menu-toggle:active {
	background: var(--brand-100);
	transform: scale(0.97);
}
.menu-toggle:focus-visible {
	outline: none;
	border-color: var(--brand-500);
	box-shadow: 0 0 0 3px rgba(31, 114, 104, 0.18);
}

/* When open, swap to filled state for a clear "now I close" affordance */
.menu-toggle[aria-expanded="true"] {
	background: var(--brand-500);
	border-color: var(--brand-500);
	color: var(--ink-on-brand);
}
.menu-toggle[aria-expanded="true"]:hover {
	background: var(--brand-600);
	border-color: var(--brand-600);
}

/* Three-bar icon that morphs into an X */
.menu-toggle__icon {
	display: inline-flex;
	flex-direction: column;
	justify-content: space-between;
	width: 18px;
	height: 12px;
	flex-shrink: 0;
	pointer-events: none;
}
.menu-toggle__bar {
	display: block;
	width: 100%;
	height: 2px;
	background: currentColor;
	border-radius: 2px;
	transform-origin: center;
	transition:
		transform 240ms cubic-bezier(0.23, 1, 0.32, 1),
		opacity 160ms cubic-bezier(0.23, 1, 0.32, 1);
}
/* Open state: top bar rotates down, middle disappears, bottom rotates up */
.menu-toggle[aria-expanded="true"] .menu-toggle__bar:nth-child(1) {
	transform: translateY(5px) rotate(45deg);
}
.menu-toggle[aria-expanded="true"] .menu-toggle__bar:nth-child(2) {
	opacity: 0;
	transform: scaleX(0);
}
.menu-toggle[aria-expanded="true"] .menu-toggle__bar:nth-child(3) {
	transform: translateY(-5px) rotate(-45deg);
}

@media (prefers-reduced-motion: reduce) {
	.menu-toggle__bar { transition: none; }
	.menu-toggle:active { transform: none; }
}

/* Visually-hidden text inside the button (label for screen readers) */
.screen-reader-text {
	position: absolute !important;
	clip: rect(1px, 1px, 1px, 1px);
	-webkit-clip-path: inset(50%);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	border: 0;
	white-space: nowrap;
}

/* ─────────────────────────────────────────────────────────
   Mobile menu — slide-down panel
   ───────────────────────────────────────────────────────── */
.mobile-menu {
	position: fixed;
	top: var(--header-height);
	left: 0;
	right: 0;
	max-height: calc(100vh - var(--header-height));
	background: var(--surface-canvas);
	border-bottom: 1px solid var(--border-subtle);
	box-shadow: 0 12px 32px -8px rgba(20, 31, 36, 0.12);
	overflow-y: auto;
	overscroll-behavior: contain;
	z-index: calc(var(--z-sticky) - 1);
	padding: var(--space-4) 0 calc(env(safe-area-inset-bottom, 0) + var(--space-6));

	/* Closed state */
	opacity: 0;
	transform: translateY(-8px);
	pointer-events: none;
	transition:
		opacity 220ms cubic-bezier(0.23, 1, 0.32, 1),
		transform 220ms cubic-bezier(0.23, 1, 0.32, 1);
}
.mobile-menu.is-open {
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
}
.mobile-menu[hidden] { display: none; }

@media (prefers-reduced-motion: reduce) {
	.mobile-menu {
		transition: opacity 120ms ease;
		transform: none;
	}
	.mobile-menu.is-open { transform: none; }
}

.mobile-menu__nav {
	display: flex;
	flex-direction: column;
	padding: 0 var(--space-4);
}

.mobile-menu__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-3);
	padding: 16px 12px;
	min-height: 56px;
	font-size: var(--text-base);
	font-weight: 500;
	color: var(--ink-primary);
	border-radius: var(--radius-md);
	border-bottom: 1px solid var(--surface-sunken);
	transition:
		background var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1),
		color var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1),
		padding-left var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1);
}
.mobile-menu__link:last-child { border-bottom: none; }

.mobile-menu__arrow {
	color: var(--ink-tertiary);
	transition:
		transform var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1),
		color var(--dur-fast) cubic-bezier(0.23, 1, 0.32, 1);
	flex-shrink: 0;
}

@media (hover: hover) and (pointer: fine) {
	.mobile-menu__link:hover {
		background: var(--surface-sunken);
		padding-left: 16px;
		color: var(--brand-700);
	}
	.mobile-menu__link:hover .mobile-menu__arrow {
		color: var(--brand-500);
		transform: translateX(2px);
	}
}
.mobile-menu__link:active {
	background: var(--brand-50);
	color: var(--brand-700);
}
.mobile-menu__link:focus-visible {
	outline: none;
	background: var(--brand-50);
	box-shadow: inset 0 0 0 2px var(--brand-500);
}

.mobile-menu__cta {
	margin-top: var(--space-5);
	padding: var(--space-5) var(--space-4) 0;
	border-top: 1px solid var(--surface-sunken);
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
}
.mobile-menu__cta .btn {
	width: 100%;
	justify-content: center;
	min-height: 48px;
	font-size: var(--text-base);
}

/* ─────────────────────────────────────────────────────────
   Mobile menu — backdrop (dimmed page behind the panel)
   ───────────────────────────────────────────────────────── */
.mobile-menu__backdrop {
	position: fixed;
	top: var(--header-height);
	left: 0;
	right: 0;
	bottom: 0;
	background: var(--surface-overlay);
	opacity: 0;
	pointer-events: none;
	z-index: calc(var(--z-sticky) - 2);
	transition: opacity 220ms cubic-bezier(0.23, 1, 0.32, 1);
}
.mobile-menu__backdrop.is-open {
	opacity: 1;
	pointer-events: auto;
}
.mobile-menu__backdrop[hidden] { display: none; }

@media (prefers-reduced-motion: reduce) {
	.mobile-menu__backdrop { transition: opacity 120ms ease; }
}

/* Lock body scroll while the menu is open */
html.has-menu-open,
html.has-menu-open body {
	overflow: hidden;
	touch-action: none;
}

/* ─────────────────────────────────────────────────────────
   Header responsive switch (mobile vs desktop)
   ───────────────────────────────────────────────────────── */
@media (max-width: 860px) {
	.nav-primary--desktop,
	.site-header__cta--desktop {
		display: none;
	}
	.menu-toggle {
		display: inline-flex;
	}
	.site-header__inner {
		gap: var(--space-3);
	}
}

/* ─────────────────────────────────────────────────────────
   Buttons
   ───────────────────────────────────────────────────────── */
.btn {
	--btn-bg: var(--brand-500);
	--btn-fg: var(--ink-on-brand);
	--btn-border: transparent;

	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	padding: 10px 18px;
	font: inherit;
	font-size: var(--text-sm);
	font-weight: 500;
	line-height: 1;
	color: var(--btn-fg);
	background: var(--btn-bg);
	border: 1px solid var(--btn-border);
	border-radius: var(--radius-md);
	cursor: pointer;
	user-select: none;
	white-space: nowrap;
	/* Emil: specify exact properties, never `all`. */
	transition:
		background-color var(--dur-fast) ease,
		border-color var(--dur-fast) ease,
		color var(--dur-fast) ease,
		transform var(--dur-instant) var(--ease-out),
		box-shadow var(--dur-fast) ease;
}

.btn:focus-visible {
	outline: none;
	box-shadow: var(--shadow-focus);
}

/* Buttons must feel responsive to press */
.btn:active {
	transform: scale(0.97);
}

.btn--primary { --btn-bg: var(--brand-500); }
.btn--primary:hover { --btn-bg: var(--brand-600); }

.btn--ghost {
	--btn-bg: transparent;
	--btn-fg: var(--ink-primary);
	--btn-border: var(--border-default);
}
.btn--ghost:hover {
	--btn-bg: var(--surface-sunken);
	--btn-border: var(--border-strong);
}

.btn--accent {
	--btn-bg: var(--accent-500);
	--btn-fg: var(--ink-primary);
}
.btn--accent:hover { --btn-bg: var(--accent-700); --btn-fg: var(--ink-on-brand); }

.btn--lg { padding: 14px 24px; font-size: var(--text-base); border-radius: var(--radius-lg); }
.btn--sm { padding: 6px 12px; font-size: var(--text-xs); }

.btn--block { display: flex; width: 100%; }

.btn[disabled] {
	opacity: 0.5;
	pointer-events: none;
}

/* ─────────────────────────────────────────────────────────
   Cards
   ───────────────────────────────────────────────────────── */
.card {
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-lg);
	padding: var(--space-6);
	box-shadow: var(--shadow-xs);
	transition:
		box-shadow var(--dur-base) ease,
		border-color var(--dur-base) ease,
		transform var(--dur-base) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
	.card--interactive:hover {
		box-shadow: var(--shadow-md);
		border-color: var(--border-default);
		transform: translateY(-2px);
	}
}

.card__title {
	font-family: var(--font-display);
	font-size: var(--text-xl);
	margin-bottom: var(--space-2);
}

.card__meta {
	display: flex;
	gap: var(--space-2);
	flex-wrap: wrap;
	font-size: var(--text-xs);
	color: var(--ink-tertiary);
}

/* ─────────────────────────────────────────────────────────
   Badges
   ───────────────────────────────────────────────────────── */
.badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	font-size: var(--text-xs);
	font-weight: 500;
	border-radius: var(--radius-full);
	background: var(--surface-sunken);
	color: var(--ink-secondary);
	border: 1px solid var(--border-subtle);
}
.badge--success { background: var(--success-bg); color: var(--success-fg); border-color: transparent; }
.badge--warning { background: var(--warning-bg); color: var(--warning-fg); border-color: transparent; }
.badge--danger  { background: var(--danger-bg);  color: var(--danger-fg);  border-color: transparent; }
.badge--info    { background: var(--info-bg);    color: var(--info-fg);    border-color: transparent; }
.badge--brand   { background: var(--brand-50);   color: var(--brand-700);  border-color: transparent; }

.badge__dot {
	width: 6px; height: 6px;
	border-radius: 50%;
	background: currentColor;
}

/* ─────────────────────────────────────────────────────────
   Forms
   ───────────────────────────────────────────────────────── */
.field { display: flex; flex-direction: column; gap: 6px; }
.field__label {
	font-size: var(--text-sm);
	font-weight: 500;
	color: var(--ink-primary);
}
.field__hint {
	font-size: var(--text-xs);
	color: var(--ink-tertiary);
}

.input,
.textarea,
.select {
	width: 100%;
	padding: 10px 14px;
	font: inherit;
	font-size: var(--text-base);
	color: var(--ink-primary);
	background: var(--surface-raised);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-md);
	transition: border-color var(--dur-fast) ease, box-shadow var(--dur-fast) ease;
}
.input:hover, .textarea:hover, .select:hover { border-color: var(--border-strong); }
.input:focus, .textarea:focus, .select:focus {
	outline: none;
	border-color: var(--brand-500);
	box-shadow: var(--shadow-focus);
}
.textarea { min-height: 96px; resize: vertical; line-height: var(--leading-relaxed); }

.select {
	appearance: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='none' stroke='%234A5862' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5L6 7.5L9 4.5'/></svg>");
	background-repeat: no-repeat;
	background-position: right 14px center;
	padding-right: 36px;
}

/* ─────────────────────────────────────────────────────────
   Hero
   ───────────────────────────────────────────────────────── */
.hero {
	position: relative;
	padding-block: clamp(var(--space-16), 12vw, var(--space-24));
	overflow: hidden;
}

.hero::before {
	/* Soft brand-tinted radial wash behind hero, very subtle */
	content: "";
	position: absolute;
	inset: -10%;
	background:
		radial-gradient(60% 50% at 80% 20%, rgba(31, 114, 104, 0.08), transparent 60%),
		radial-gradient(40% 40% at 10% 80%, rgba(232, 165, 95, 0.10), transparent 60%);
	pointer-events: none;
	z-index: -1;
}

.hero__grid {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: var(--space-12);
	align-items: center;
}
@media (max-width: 900px) {
	.hero__grid { grid-template-columns: 1fr; }
}

.hero__title {
	font-size: clamp(var(--text-3xl), 5vw + 1rem, var(--text-5xl));
	line-height: 1.05;
	letter-spacing: -0.02em;
}
.hero__title em {
	font-style: italic;
	color: var(--brand-500);
}

.hero__sub {
	font-size: var(--text-lg);
	max-width: 52ch;
	color: var(--ink-secondary);
	line-height: var(--leading-relaxed);
}

.hero__cta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3);
	margin-top: var(--space-6);
}

.hero__trust {
	display: flex;
	gap: var(--space-6);
	margin-top: var(--space-8);
	flex-wrap: wrap;
	color: var(--ink-tertiary);
	font-size: var(--text-sm);
}
.hero__trust strong {
	display: block;
	font-family: var(--font-display);
	font-size: var(--text-2xl);
	color: var(--ink-primary);
	font-weight: 500;
}

/* Hero illustration card stack */
.hero__visual {
	position: relative;
	aspect-ratio: 4 / 5;
	min-height: 420px;
}
.hero__card {
	position: absolute;
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-xl);
	padding: var(--space-5);
	box-shadow: var(--shadow-lg);
	width: 280px;
}
.hero__card--main {
	top: 5%;
	left: 10%;
	width: 60%;
}
.hero__card--secondary {
	bottom: 8%;
	right: 5%;
	width: 65%;
}

.hero__card-avatar {
	width: 48px; height: 48px;
	border-radius: var(--radius-full);
	background: linear-gradient(135deg, var(--brand-300), var(--brand-600));
	display: grid;
	place-items: center;
	color: var(--ink-on-brand);
	font-weight: 600;
	margin-bottom: var(--space-3);
}

/* ─────────────────────────────────────────────────────────
   Feature grid
   ───────────────────────────────────────────────────────── */
.features {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: var(--space-6);
}
.feature {
	padding: var(--space-6);
}
.feature__icon {
	width: 44px;
	height: 44px;
	border-radius: var(--radius-md);
	background: var(--brand-50);
	color: var(--brand-600);
	display: grid;
	place-items: center;
	margin-bottom: var(--space-4);
}
.feature__title {
	font-family: var(--font-display);
	font-size: var(--text-lg);
	margin-bottom: var(--space-2);
}

/* ─────────────────────────────────────────────────────────
   Steps / process
   ───────────────────────────────────────────────────────── */
.steps {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--space-6);
	counter-reset: step;
}
.step {
	position: relative;
	padding: var(--space-6);
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-lg);
}
.step::before {
	counter-increment: step;
	content: counter(step, decimal-leading-zero);
	position: absolute;
	top: var(--space-5);
	right: var(--space-5);
	font-family: var(--font-display);
	font-size: var(--text-2xl);
	color: var(--brand-200);
}
.step__title {
	font-family: var(--font-display);
	font-size: var(--text-lg);
	margin-bottom: var(--space-2);
	max-width: 80%;
}

/* ─────────────────────────────────────────────────────────
   Testimonial
   ───────────────────────────────────────────────────────── */
.testimonial {
	background: linear-gradient(135deg, var(--brand-700), var(--brand-500));
	color: var(--ink-on-brand);
	border-radius: var(--radius-2xl);
	padding: clamp(var(--space-8), 6vw, var(--space-16));
	position: relative;
	overflow: hidden;
}
.testimonial::before {
	content: "";
	position: absolute;
	top: -40px; right: -40px;
	width: 200px; height: 200px;
	background: rgba(255, 255, 255, 0.06);
	border-radius: 50%;
}
.testimonial__quote {
	font-family: var(--font-display);
	font-size: clamp(var(--text-xl), 2.5vw, var(--text-2xl));
	line-height: var(--leading-snug);
	max-width: 60ch;
	margin-bottom: var(--space-6);
	color: var(--ink-on-brand);
	font-style: italic;
}
.testimonial__author {
	display: flex;
	align-items: center;
	gap: var(--space-3);
}
.testimonial__avatar {
	width: 48px; height: 48px;
	border-radius: var(--radius-full);
	background: rgba(255, 255, 255, 0.2);
	display: grid;
	place-items: center;
	font-weight: 600;
}

/* ─────────────────────────────────────────────────────────
   CTA strip
   ───────────────────────────────────────────────────────── */
.cta-strip {
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-2xl);
	padding: clamp(var(--space-8), 5vw, var(--space-12));
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: var(--space-8);
	align-items: center;
	box-shadow: var(--shadow-sm);
}
@media (max-width: 720px) {
	.cta-strip { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────────
   Site footer
   ───────────────────────────────────────────────────────── */
.site-footer {
	background: var(--ink-primary);
	color: rgba(255, 255, 255, 0.72);
	padding-block: var(--space-16) var(--space-8);
	margin-top: var(--space-20);
}
.site-footer a {
	color: rgba(255, 255, 255, 0.72);
	transition: color var(--dur-fast) ease;
}
.site-footer a:hover { color: var(--ink-on-brand); }

.site-footer__grid {
	display: grid;
	grid-template-columns: 1.5fr repeat(3, 1fr);
	gap: var(--space-8);
	padding-bottom: var(--space-8);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
@media (max-width: 720px) {
	.site-footer__grid { grid-template-columns: 1fr 1fr; }
}

.site-footer__col h4 {
	color: var(--ink-on-brand);
	font-family: var(--font-sans);
	font-size: var(--text-sm);
	font-weight: 600;
	letter-spacing: var(--tracking-wide);
	text-transform: uppercase;
	margin-bottom: var(--space-4);
}
.site-footer__col ul {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
}
.site-footer__col ul a { font-size: var(--text-sm); }

.site-footer__bottom {
	padding-top: var(--space-6);
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--space-4);
	font-size: var(--text-xs);
	color: rgba(255, 255, 255, 0.5);
}

/* ─────────────────────────────────────────────────────────
   Stagger entry animation for lists (used on landing sections)
   Emil: 30-80ms between items, ease-out, never block interaction.
   ───────────────────────────────────────────────────────── */
.stagger > * {
	opacity: 0;
	transform: translateY(8px);
	animation: stagger-in 360ms var(--ease-out) forwards;
}
.stagger > *:nth-child(1) { animation-delay: 0ms; }
.stagger > *:nth-child(2) { animation-delay: 60ms; }
.stagger > *:nth-child(3) { animation-delay: 120ms; }
.stagger > *:nth-child(4) { animation-delay: 180ms; }
.stagger > *:nth-child(5) { animation-delay: 240ms; }
.stagger > *:nth-child(6) { animation-delay: 300ms; }

@keyframes stagger-in {
	to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
	.stagger > * { animation: none; opacity: 1; transform: none; }
}

/* ============================================================
   AUTH PAGES (login, lost, reset, account)
   ============================================================ */

.auth-page {
	min-height: calc(100vh - 80px);
	display: flex;
	align-items: center;
	padding: var(--space-12) 0;
	background: var(--surface-canvas);
}

.auth-page__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-8);
	max-width: 1080px;
	margin: 0 auto;
}
@media (min-width: 900px) {
	.auth-page__inner {
		grid-template-columns: minmax(360px, 480px) 1fr;
		align-items: center;
	}
}

.auth-card {
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle, #E3E6E3);
	border-radius: var(--radius-xl, 16px);
	padding: var(--space-8);
	box-shadow: var(--shadow-sm, 0 1px 2px rgba(20, 31, 36, 0.04));
}

.auth-card__brand {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	color: var(--brand-600);
	font-weight: 500;
	font-size: 14px;
	margin-bottom: var(--space-6);
}
.auth-card__brand .site-brand__mark {
	color: var(--brand-500);
}

.auth-card__title {
	font-family: var(--font-display, 'Fraunces', serif);
	font-size: clamp(28px, 4vw, 36px);
	font-weight: 500;
	line-height: 1.15;
	color: var(--ink-primary);
	margin: 0 0 var(--space-3);
}

.auth-card__lede {
	color: var(--ink-secondary);
	margin: 0 0 var(--space-6);
	line-height: 1.55;
}

.auth-card__footer {
	margin: var(--space-6) 0 0;
	padding-top: var(--space-5);
	border-top: 1px solid var(--surface-sunken);
	color: var(--ink-secondary);
	font-size: 14px;
	text-align: center;
}

/* Form fields */
.auth-form {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}

.auth-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.auth-field__label {
	font-size: 13px;
	font-weight: 500;
	color: var(--ink-primary);
}
.auth-field__input {
	width: 100%;
	padding: 11px 14px;
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle, #D2D6D2);
	border-radius: var(--radius-md);
	font-family: inherit;
	font-size: 15px;
	color: var(--ink-primary);
	transition: border-color 180ms cubic-bezier(0.23, 1, 0.32, 1),
		box-shadow 180ms cubic-bezier(0.23, 1, 0.32, 1);
}
.auth-field__input:focus {
	outline: none;
	border-color: var(--brand-500);
	box-shadow: 0 0 0 3px rgba(31, 114, 104, 0.12);
}
.auth-field__hint {
	color: var(--ink-tertiary);
	font-size: 12px;
}
textarea.auth-field__input {
	resize: vertical;
	min-height: 120px;
	line-height: 1.5;
}
select.auth-field__input {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237A8590' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	padding-right: 36px;
}

.auth-row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-3);
	flex-wrap: wrap;
}
.auth-checkbox {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--ink-secondary);
	cursor: pointer;
}
.auth-link {
	color: var(--brand-600);
	font-size: 14px;
	text-decoration: none;
}
.auth-link:hover { text-decoration: underline; }
.auth-link--strong { font-weight: 500; }

.auth-alert {
	padding: 14px 16px;
	border-radius: var(--radius-md);
	font-size: 14px;
	line-height: 1.5;
	margin-bottom: var(--space-4);
}
.auth-alert p { margin: 4px 0; }
.auth-alert--error {
	background: #FEF2F2;
	color: #991B1B;
	border: 1px solid #FECACA;
}
.auth-alert--success {
	background: #ECFDF5;
	color: #065F46;
	border: 1px solid #A7F3D0;
}

.auth-aside {
	display: none;
	color: var(--ink-secondary);
}
@media (min-width: 900px) {
	.auth-aside { display: block; }
}
.auth-aside__quote {
	background: linear-gradient(135deg, var(--brand-50), transparent);
	border-left: 3px solid var(--brand-500);
	padding: var(--space-6);
	border-radius: var(--radius-md);
	max-width: 460px;
}
.auth-aside__quote p {
	font-family: var(--font-display, 'Fraunces', serif);
	font-size: 22px;
	line-height: 1.4;
	color: var(--ink-primary);
	margin: 0 0 var(--space-4);
}
.auth-aside__quote footer {
	color: var(--ink-tertiary);
	font-size: 13px;
}
.auth-aside__quote footer strong { color: var(--ink-secondary); }

/* btn--full + btn--lg helpers */
.btn--full {
	display: inline-flex;
	width: 100%;
	justify-content: center;
}
.btn--lg {
	padding: 14px 28px;
	font-size: 16px;
}
