/**
 * Student booking calendar — gated by token (ADR-015).
 * Colours inherit the lucasrey.com theme tokens (--lr-color-accent et al.);
 * the theme is the single source of truth, so no hex is pinned here.
 */
.lr-booking,
.lr-student-portal {
	--lr-booking-accent: var(--lr-color-accent, #1959a8);
	--lr-booking-accent-hover: var(--lr-color-accent-hover, #134677);
	--lr-booking-accent-rgb: var(--lr-color-accent-rgb, 11, 102, 211);
	--lr-booking-accent-wash: var(--lr-color-accent-wash, #eff4fc);
	--lr-booking-border: var(--lr-color-border-subtle, var(--lr-color-border-card, #e5e5e5));
	--lr-booking-text: var(--lr-color-text, #334155);
	--lr-booking-text-heading: var(--lr-color-text-heading, #14213d);
	--lr-booking-surface-muted: var(--lr-color-surface-muted, #f8fafc);
	/* ink / muted / surface were referenced across this file but never defined,
	   so each usage rendered a scattered (and sometimes missing) fallback. Pin
	   them to the theme tokens — the single source of truth — so every usage
	   resolves to one consistent value. */
	--lr-booking-ink: var(--lr-color-text-heading, #0f172a);
	--lr-booking-muted: var(--lr-color-text-muted, #64748b);
	--lr-booking-surface: var(--lr-color-background-white, #ffffff);
	/* Rhythm + motion (v1.45 micro-interactions) */
	--lr-booking-space-xs: 0.35rem;
	--lr-booking-space-sm: 0.5rem;
	--lr-booking-space-md: 0.75rem;
	--lr-booking-space-lg: 1.25rem;
	--lr-booking-space-xl: 1.5rem;
	--lr-booking-motion-fast: 0.14s;
	--lr-booking-motion-base: 0.22s;
	--lr-booking-motion-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
	--lr-booking-radius-control: var(--lr-radius-small, 6px);
	--lr-booking-radius-pill: var(--lr-radius-medium, 10px);
	/* radius-md / radius-lg were referenced with conflicting inline fallbacks
	   (md: 10px vs 8px); pin to the theme radius scale for one consistent value. */
	--lr-booking-radius-md: var(--lr-radius-medium, 10px);
	--lr-booking-radius-lg: var(--lr-radius-large, 12px);
}

.lr-booking {
	padding: clamp(0.75rem, 3vw, 1.5rem);
	max-width: 48rem;
	min-width: 0;
}

.lr-student-portal.lr-panel-white {
	overflow-x: clip;
	min-width: 0;
}

.lr-student-portal [hidden] {
	display: none !important;
}

.lr-portal__boot-status {
	margin: 0.75rem 0 1rem;
	padding: 0.75rem 0;
	text-align: center;
	border-block: 1px solid var(--lr-booking-border);
}

.lr-portal__boot-status--error {
	color: var(--lr-color-danger, #c63838);
	border-color: rgba(239, 68, 68, 0.25);
	background: var(--lr-color-danger-wash, #fef2f2);
	padding-inline: 0.75rem;
	border-radius: var(--lr-booking-radius-control);
}

.lr-booking__header {
	margin-bottom: 1.25rem;
}

.lr-booking__intro {
	margin: 0.5rem 0 0;
	opacity: 0.9;
	font-size: 0.95rem;
	color: var(--lr-booking-text);
}

.lr-booking__toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	margin-bottom: 1rem;
}

.lr-booking__nav {
	appearance: none;
	border: 1px solid var(--lr-booking-border);
	background: #fff;
	color: var(--lr-booking-text-heading);
	border-radius: var(--lr-booking-radius-pill);
	padding: 0.45rem 0.85rem;
	min-height: 44px;
	min-width: 44px;
	cursor: pointer;
	font: inherit;
	font-weight: 600;
	transition:
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		box-shadow var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		opacity var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-booking__nav:active:not(:disabled) {
	transform: scale(0.97);
}

.lr-booking__nav:disabled,
.lr-booking__nav[aria-disabled="true"] {
	opacity: 0.42;
	cursor: not-allowed;
	pointer-events: none;
}

.lr-booking__nav:hover {
	border-color: var(--lr-booking-accent);
	color: var(--lr-booking-accent);
	background: var(--lr-booking-accent-wash);
}

.lr-booking__nav:focus-visible {
	outline: none;
	border-color: var(--lr-booking-accent);
	box-shadow: 0 0 0 2px rgba(var(--lr-booking-accent-rgb), 0.35);
}

.lr-booking__range {
	flex: 1;
	text-align: center;
	font-weight: 600;
	min-width: 12rem;
	color: var(--lr-booking-text-heading);
}

.lr-booking__slots {
	display: block;
}

.lr-booking__slots-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
	gap: 0.65rem;
	margin-top: 0.65rem;
}

.lr-booking__cal-wrap {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	margin-bottom: 1.25rem;
	min-width: 0;
}

.lr-booking__cal-weekdays {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 0.25rem;
	margin-bottom: 0.35rem;
	font-size: 0.75rem;
	font-weight: 600;
	text-align: center;
	color: var(--lr-booking-text);
	opacity: 0.85;
	min-width: 0;
}

.lr-booking__cal-grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 0.35rem;
	min-width: 0;
}

.lr-booking__cal-row {
	display: contents;
}

.lr-booking__cal-day--blocked,
.lr-booking__cal-day--reason-blocked {
	opacity: 0.5;
}

.lr-booking__cal-day--no_hours,
.lr-booking__cal-day--reason-no_hours {
	opacity: 0.48;
}

.lr-booking__cal-day--fully_booked,
.lr-booking__cal-day--reason-fully_booked {
	opacity: 0.62;
}

.lr-booking__gcal-link {
	font-weight: 600;
	color: var(--lr-booking-accent);
}

/* Non-day nodes must never occupy a single grid column (legacy/cached JS guard). */
.lr-booking__cal-grid > :not(.lr-booking__cal-day):not(.lr-booking__cal-skeleton) {
	grid-column: 1 / -1;
	width: 100%;
	min-width: 0;
	max-width: 100%;
	box-sizing: border-box;
}

.lr-booking__cal-grid > .lr-booking__nav,
.lr-booking__cal-grid > button:not(.lr-booking__cal-day) {
	white-space: normal;
	text-align: center;
	min-height: 44px;
}

.lr-booking__cal-grid .lr-booking__status,
.lr-booking__cal-grid .lr-booking__reschedule-banner {
	margin: 0 0 0.35rem;
}

.lr-booking__cal-empty {
	grid-column: 1 / -1;
}

.lr-booking__cal-day {
	appearance: none;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 3rem;
	padding: 0.35rem 0.25rem;
	border: 1px solid var(--lr-booking-border);
	border-radius: var(--lr-booking-radius-control);
	background: #fff;
	color: var(--lr-booking-text-heading);
	font: inherit;
	cursor: pointer;
	position: relative;
	transition:
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		box-shadow var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		opacity var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-booking__cal-day--open:active:not(.lr-booking__cal-day--selected) {
	transform: scale(0.96);
}

.lr-booking__cal-day--adjacent:not(.lr-booking__cal-day--open) {
	opacity: 0.45;
}

.lr-booking__cal-day--adjacent.lr-booking__cal-day--open {
	opacity: 0.9;
}

.lr-booking__cal-day--today {
	border-color: var(--lr-booking-accent);
}

.lr-booking__cal-day--open:hover,
.lr-booking__cal-day--open:focus-visible {
	border-color: var(--lr-booking-accent);
	background: var(--lr-booking-accent-wash);
}

.lr-booking__cal-day--selected {
	border-color: var(--lr-booking-accent);
	background: var(--lr-booking-accent-wash);
	box-shadow: 0 0 0 2px rgba(var(--lr-booking-accent-rgb), 0.25);
}

.lr-booking__cal-day--past,
.lr-booking__cal-day--closed,
.lr-booking__cal-day--out_of_range {
	background: var(--lr-booking-surface-muted);
	color: var(--lr-booking-text);
	opacity: 0.55;
	cursor: not-allowed;
}

.lr-booking__cal-day-num {
	font-weight: 600;
	font-size: 0.95rem;
	line-height: 1.2;
}

.lr-booking__cal-day-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--lr-booking-accent);
	margin-top: 0.2rem;
}

.lr-booking__cal-day-count {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.65rem;
	font-weight: 700;
	line-height: 1;
	color: var(--lr-booking-accent);
	letter-spacing: -0.02em;
}

.lr-booking__cal-day--open .lr-booking__cal-day-count {
	color: var(--lr-booking-accent);
}

.lr-booking__slot-duration {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.78rem;
	font-weight: 500;
	opacity: 0.85;
}

.lr-booking__confirm-lead {
	margin: 0 0 0.5rem;
	font-size: 0.95rem;
	line-height: 1.45;
}

.lr-booking__celebration {
	margin-top: 1rem;
	padding: 1rem 1.1rem;
	border: 1px solid var(--lr-booking-accent);
	border-radius: 10px;
	background: var(--lr-booking-accent-wash);
	animation: lr-rise-in 0.35s ease-out;
}

.lr-booking__celebration-body {
	margin: 0.5rem 0 0.75rem;
	font-size: 0.92rem;
	line-height: 1.5;
}

.lr-booking__celebration-actions {
	margin: 0.75rem 0 0;
}

.lr-booking__booking-ics {
	margin: 0.35rem 0 0;
	font-size: 0.88rem;
}

.lr-portal__help-link {
	font-weight: 600;
	color: var(--lr-booking-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lr-portal__help-actions {
	margin: 0.5rem 0 0;
}

.lr-booking__cal-day:focus-visible {
	outline: none;
	box-shadow: 0 0 0 2px rgba(var(--lr-booking-accent-rgb), 0.45);
}

.lr-booking__nav--today {
	font-size: 0.85rem;
}

.lr-booking__nav--next-available {
	font-size: 0.85rem;
}

.lr-booking__cal-hint {
	margin: 0.35rem 0 0;
	font-size: 0.8rem;
	line-height: 1.45;
	color: var(--lr-booking-text);
	opacity: 0.85;
}

@media (pointer: coarse) {
	.lr-booking__cal-hint {
		display: none !important;
	}
}

.lr-portal__masthead--calm {
	margin-bottom: 0.75rem;
}

.lr-portal__masthead--calm .lr-section-heading {
	margin-bottom: 0.35rem;
}

.lr-portal__masthead--calm .lr-portal__meta {
	margin: 0 0 0.5rem;
	font-size: 0.92rem;
	opacity: 0.85;
}

.lr-portal__bookmark {
	margin: 0.35rem 0 0;
	font-size: 0.85rem;
	opacity: 0.75;
}

.lr-portal__policy {
	margin: 0 0 1rem;
	font-size: 0.88rem;
	opacity: 0.85;
}

.lr-portal__practice-steps-list--primary {
	margin: 0.5rem 0 0;
	padding-left: 1.2rem;
	line-height: 1.5;
}

.lr-portal__practice-steps-list--primary li {
	margin: 0.35rem 0;
}

.lr-booking__next-available {
	margin-bottom: 1rem;
}

.lr-portal__practice-status {
	margin-bottom: 1.25rem;
	padding: 1rem 1.15rem;
	border-radius: 8px;
	border: 1px solid var(--lr-booking-border);
	border-left: 4px solid var(--lr-booking-accent, #1a5fb4);
	background: var(--lr-booking-surface, #f8f9fa);
}

.lr-portal__practice-heading {
	margin: 0 0 0.5rem;
	font-size: 1.15rem;
	font-weight: 600;
	color: var(--lr-booking-text-heading);
}

.lr-portal__practice-body {
	margin: 0 0 0.75rem;
	line-height: 1.5;
}

.lr-portal__practice-readiness {
	list-style: none;
	margin: 0 0 0.75rem;
	padding: 0;
}

.lr-portal__practice-readiness li {
	margin: 0.35rem 0;
	display: flex;
	align-items: baseline;
	gap: 0.4rem;
}

.lr-portal__practice-readiness .is-ready {
	color: #0d6b4d;
}

.lr-portal__practice-readiness .is-pending {
	color: #8a5a00;
}

.lr-portal__practice-steps-label {
	margin: 0 0 0.35rem;
	font-weight: 600;
	font-size: 0.92rem;
}

.lr-portal__practice-steps-list {
	margin: 0;
	padding-left: 1.25rem;
	line-height: 1.5;
}

.lr-portal__practice-steps-list li {
	margin: 0.3rem 0;
}

.lr-booking__day-panel {
	margin-top: 1rem;
	padding-top: 1rem;
	border-top: 1px solid var(--lr-booking-border);
	scroll-margin-top: calc(3.25rem + env(safe-area-inset-top, 0px));
}

.lr-booking__day-heading {
	margin: 0 0 0.65rem;
	font-size: 1rem;
	font-weight: 600;
	color: var(--lr-booking-text-heading);
}

.lr-booking__slot-time {
	display: block;
	font-weight: 600;
	font-size: 1rem;
}

@media (max-width: 520px) {
	.lr-booking__cal-day {
		min-height: 2.6rem;
		padding: 0.25rem 0.15rem;
	}

	.lr-booking__cal-day-num {
		font-size: 0.85rem;
	}

	.lr-booking__toolbar {
		justify-content: center;
	}

	.lr-booking__range {
		flex: 1 1 100%;
		order: -1;
		min-width: 0;
	}

	.lr-booking__toolbar .lr-booking__nav[data-cal-dir] {
		flex: 1 1 calc(50% - 0.35rem);
		min-width: 0;
		padding-inline: 0.5rem;
		font-size: 0.8rem;
	}

	.lr-booking__nav--today,
	.lr-booking__nav--next-available {
		width: 100%;
		text-align: center;
	}

	.lr-booking__slots-grid {
		grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr));
		gap: 0.5rem;
	}

	.lr-booking__slot {
		padding: 0.65rem 0.35rem;
		font-size: 0.9rem;
	}

	.lr-booking__booking-item {
		flex-direction: column;
		align-items: stretch;
	}

	.lr-booking__cancel-wrap {
		flex-direction: column;
		align-items: stretch;
	}

	.lr-booking__reschedule,
	.lr-booking__cancel {
		width: 100%;
		margin-right: 0;
		text-align: center;
	}

	.lr-portal__home-actions .lr-portal__cta {
		width: 100%;
		justify-content: center;
	}

	.lr-booking__next-card .lr-portal__home-actions .lr-portal__cta {
		width: 100%;
	}

	.lr-booking__confirm-actions {
		flex-direction: column-reverse;
		align-items: stretch;
	}

	.lr-booking__confirm-actions .lr-booking__confirm-btn {
		width: 100%;
		text-align: center;
	}

	.lr-booking__confirm-anchor--visible .lr-booking__confirm {
		bottom: max(0.75rem, env(safe-area-inset-bottom, 0px));
	}

	.lr-student-portal .lr-portal__toast:not([hidden]) {
		position: sticky;
		top: calc(2.75rem + env(safe-area-inset-top, 0px));
		z-index: 6;
		background: var(--lr-booking-surface, #fff);
		padding: 0.35rem 0;
		margin-bottom: 0.75rem;
	}
}

.lr-booking__cal-grid--loading {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 0.35rem;
	min-height: 12rem;
	min-width: 0;
}

.lr-booking__cal-skeleton {
	min-height: 2.75rem;
	border-radius: 6px;
	background: linear-gradient(
		90deg,
		var(--lr-booking-surface-muted, #f0f2f4) 0%,
		#e8eaed 50%,
		var(--lr-booking-surface-muted, #f0f2f4) 100%
	);
	background-size: 200% 100%;
	animation: lr-booking-skeleton 1.2s ease-in-out infinite;
}

@keyframes lr-booking-skeleton {
	0% { background-position: 100% 0; }
	100% { background-position: -100% 0; }
}

.lr-booking__slots-grid--loading {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
	gap: 0.5rem;
}

.lr-booking__slot-skeleton {
	min-height: 3rem;
	border-radius: 8px;
	background: linear-gradient(
		90deg,
		var(--lr-booking-surface-muted, #f0f2f4) 0%,
		#e8eaed 50%,
		var(--lr-booking-surface-muted, #f0f2f4) 100%
	);
	background-size: 200% 100%;
	animation: lr-booking-skeleton 1.2s ease-in-out infinite;
}

.lr-booking__reschedule-context {
	width: 100%;
	min-width: 0;
	margin: 0.15rem 0 0.5rem;
}

.lr-booking__reschedule-context.lr-booking__next-card {
	margin-bottom: 0.5rem;
	padding: 0.85rem 1rem;
}

.lr-booking__reschedule-context-label {
	margin: 0 0 0.25rem;
	font-size: 0.85rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--lr-booking-text);
	opacity: 0.85;
}

.lr-booking__reschedule-context .lr-booking__reschedule-banner {
	margin: 0.5rem 0 0;
	font-size: 0.92rem;
	line-height: 1.45;
}

.lr-booking__reschedule-context .lr-booking__nav--ghost {
	display: block;
	width: 100%;
	max-width: 100%;
	margin-top: 0.65rem;
	box-sizing: border-box;
	white-space: normal;
	text-align: center;
}

.lr-booking__nav--ghost {
	background: transparent;
	border: 1px solid var(--lr-booking-border);
}

.lr-booking__next-card {
	margin-bottom: 1.25rem;
	padding: 1rem 1.1rem;
	border: 1px solid var(--lr-booking-border);
	border-radius: 8px;
	background: var(--lr-booking-surface-muted);
}

.lr-booking__standing-summary {
	margin: 0.35rem 0 0;
	font-size: 1rem;
}

.lr-booking__next-when {
	margin: 0.35rem 0 0.5rem;
	font-size: 1.05rem;
}

.lr-booking__ics-link {
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--lr-booking-accent);
}

.lr-booking__policy {
	margin-top: 1.25rem;
	font-size: 0.85rem;
	opacity: 0.85;
	color: var(--lr-booking-text);
}

.lr-booking__portal-hint {
	margin: 0.5rem 0 0;
	font-size: 0.9rem;
	opacity: 0.85;
}

.lr-booking__reschedule {
	appearance: none;
	border: 2px solid var(--lr-booking-accent);
	background: #fff;
	color: var(--lr-booking-accent);
	border-radius: 999px;
	padding: 0.35rem 0.85rem;
	min-height: 44px;
	cursor: pointer;
	font: inherit;
	font-weight: 600;
	margin-right: 0.5rem;
	transition:
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-booking__reschedule:active {
	transform: scale(0.98);
}

.lr-booking__reschedule:hover {
	background: var(--lr-booking-accent-wash);
}

.lr-booking__reschedule-banner {
	margin-bottom: 0.5rem;
}

.lr-booking__slot {
	appearance: none;
	border: 2px solid var(--lr-booking-border);
	background: #fff;
	color: var(--lr-booking-text-heading);
	border-radius: 8px;
	padding: 0.75rem 0.5rem;
	min-height: 3rem;
	cursor: pointer;
	text-align: center;
	font: inherit;
	line-height: 1.35;
	transition:
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		box-shadow var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-booking__slot:active {
	transform: scale(0.98);
}

.lr-booking__slot:hover,
.lr-booking__slot:focus-visible {
	border-color: var(--lr-booking-accent);
	box-shadow: 0 0 0 2px rgba(var(--lr-booking-accent-rgb), 0.15);
	outline: none;
	background: var(--lr-booking-accent-wash);
}

.lr-booking__slot[data-selected="true"] {
	border-color: var(--lr-booking-accent);
	background: rgba(var(--lr-booking-accent-rgb), 0.1);
	color: var(--lr-booking-text-heading);
	box-shadow: 0 0 0 2px rgba(var(--lr-booking-accent-rgb), 0.2);
}

.lr-booking__slot-day {
	display: block;
	font-size: 0.8rem;
	opacity: 0.75;
}

.lr-booking__slot-time {
	display: block;
	font-weight: 600;
}

.lr-booking__confirm {
	margin-top: 0.75rem;
	padding: 1rem 1.1rem;
	border: 2px solid var(--lr-booking-accent);
	border-radius: 10px;
	background: rgba(var(--lr-booking-accent-rgb), 0.08);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	box-shadow: 0 4px 16px rgba(var(--lr-booking-accent-rgb), 0.12);
	animation: lr-booking-rise-in var(--lr-booking-motion-base) var(--lr-booking-motion-ease);
}

.lr-booking__confirm-anchor--visible {
	margin-top: 0.25rem;
}

.lr-booking__confirm-anchor--visible .lr-booking__confirm {
	position: sticky;
	bottom: 0.75rem;
	z-index: 2;
}

.lr-booking__confirm-summary {
	margin: 0 0 0.75rem;
	font-size: 0.95rem;
	color: var(--lr-booking-text);
}

.lr-booking__confirm-day,
.lr-booking__confirm-time {
	margin: 0 0 0.35rem;
}

.lr-booking__confirm-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: center;
}

.lr-booking__confirm-change {
	appearance: none;
	border: none;
	background: transparent;
	color: var(--lr-booking-accent);
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	padding: 0.5rem 0.25rem;
	min-height: 44px;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lr-booking__confirm-change:hover {
	color: var(--lr-booking-accent-hover);
}

.lr-booking__confirm button.lr-booking__confirm-btn {
	appearance: none;
	border: 2px solid var(--lr-booking-accent);
	background: var(--lr-booking-accent);
	color: #ffffff;
	border-radius: 999px;
	padding: 0.65rem 1.25rem;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition:
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-booking__confirm button.lr-booking__confirm-btn:active:not(:disabled) {
	transform: scale(0.98);
}

.lr-booking__confirm button:hover {
	background: var(--lr-booking-accent-hover);
	border-color: var(--lr-booking-accent-hover);
}

.lr-booking__confirm button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

.lr-booking__status,
.lr-booking__message {
	font-size: 0.95rem;
	color: var(--lr-booking-text);
}

.lr-booking__message--success {
	color: #0a5c42;
}

.lr-booking__message--error {
	color: #8f2218;
}

.lr-booking__subheading {
	margin: 0 0 0.75rem;
	font-size: 1.05rem;
	color: var(--lr-booking-text-heading);
}

.lr-booking__upcoming {
	margin-top: 1.5rem;
	margin-bottom: 0;
	padding-bottom: 0;
	border-bottom: none;
}

.lr-booking__picker {
	margin-top: 0.5rem;
}

.lr-portal__panel--lessons {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.lr-portal__panel--lessons [data-step-guide] {
	order: 0;
}

.lr-portal__panel--lessons [data-lessons-intro] {
	order: 1;
}

.lr-portal__panel--lessons [data-booking-picker] {
	order: 2;
}

.lr-portal__panel--lessons [data-upcoming] {
	order: 3;
}

.lr-portal__panel--reschedule [data-upcoming] {
	opacity: 0.85;
}

.lr-booking__upcoming--muted .lr-booking__subheading {
	font-size: 1rem;
	opacity: 0.9;
}

.lr-portal__step-guide {
	margin: 0 0 1rem;
	padding: 0.9rem 1rem;
	border-radius: 8px;
	border: 1px solid var(--lr-booking-border);
	background: #f8fafc;
}

.lr-portal__step-guide-heading {
	margin: 0 0 0.35rem;
	font-size: 0.85rem;
	font-weight: 700;
	text-transform: none;
	letter-spacing: normal;
	color: var(--lr-booking-text-heading);
}

.lr-portal__step-guide-body {
	margin: 0;
	font-size: 0.95rem;
	line-height: 1.5;
	color: var(--lr-booking-text);
}

.lr-booking__reschedule-banner {
	font-weight: 600;
	color: var(--lr-booking-text-heading);
}

.lr-booking__slot[data-selected="true"] {
	border-color: var(--lr-booking-accent);
	background: rgba(var(--lr-booking-accent-rgb), 0.12);
	box-shadow: 0 0 0 2px rgba(var(--lr-booking-accent-rgb), 0.25);
}

.lr-booking__status-badge--rescheduled {
	background: rgba(var(--lr-booking-accent-rgb), 0.12);
	color: var(--lr-booking-accent);
	font-style: normal;
	font-weight: 600;
}

.lr-booking__history {
	margin-bottom: 1.25rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--lr-booking-border);
}

.lr-booking__bookings-list--past .lr-booking__booking-item {
	opacity: 0.88;
}

.lr-booking__change-notice {
	margin: 0;
	font-size: 0.85rem;
	color: #5f6b7a;
	max-width: 18rem;
}

.lr-booking__bookings-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.lr-booking__booking-item {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--lr-booking-border);
	transition: background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

@media (hover: hover) {
	.lr-booking__booking-item:hover {
		background: var(--lr-booking-surface-muted);
		margin-inline: -0.35rem;
		padding-inline: 0.35rem;
		border-radius: var(--lr-booking-radius-control);
	}
}

.lr-booking__cancel {
	appearance: none;
	border: 2px solid #b42318;
	background: transparent;
	color: #b42318;
	border-radius: 999px;
	padding: 0.5rem 0.85rem;
	min-height: 44px;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition:
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-booking__cancel:active {
	transform: scale(0.98);
}

.lr-booking__cancel:hover {
	background: rgba(180, 35, 24, 0.06);
}

.lr-booking__cancel:focus-visible {
	outline: none;
	box-shadow: 0 0 0 2px rgba(180, 35, 24, 0.35);
}

.lr-booking__cancel-wrap {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

.lr-booking__cancel-prompt {
	font-size: 0.9rem;
	color: #7a271a;
}

.lr-booking__cancel--confirm {
	background: #b42318;
	color: #fff;
	border-color: #b42318;
}

.lr-booking__cancel--dismiss {
	border-color: var(--lr-booking-border);
	color: var(--lr-booking-text-heading);
}

.lr-booking__status-badge {
	font-style: normal;
	font-size: 0.8rem;
	padding: 0.1rem 0.45rem;
	border-radius: 4px;
	background: #eef0f2;
}

.lr-booking__status-badge--confirmed {
	background: rgba(13, 107, 77, 0.12);
	color: #0d6b4d;
}

.lr-booking__status-badge--pending {
	background: rgba(181, 110, 0, 0.12);
	color: #8a5a00;
}

.lr-booking__status-badge--cancelled {
	background: rgba(180, 35, 24, 0.1);
	color: #7a271a;
}

.lr-booking--gate p {
	margin: 0.75rem 0;
}

.lr-booking__gate-body {
	line-height: 1.55;
	color: var(--lr-booking-text);
	max-width: 36rem;
}

.lr-booking__gate-footnote {
	font-size: 0.88rem;
	opacity: 0.8;
	margin-top: 1.25rem;
}

.lr-portal__gate-actions {
	margin: 1.25rem 0 0;
}

.lr-portal__cta--gate {
	display: inline-flex;
	text-decoration: none;
}

.lr-portal__trust {
	margin: 0.65rem 0 0;
	font-size: 0.88rem;
	line-height: 1.45;
	color: var(--lr-booking-text);
	opacity: 0.88;
}

.lr-portal__trust--gate {
	padding: 0.65rem 0.85rem;
	border-radius: 6px;
	background: var(--lr-booking-accent-wash);
	border-left: 3px solid var(--lr-booking-accent);
	opacity: 1;
}

.lr-booking__gate-alert {
	padding: 0.75rem 1rem;
	border-radius: 6px;
	background: rgba(180, 35, 24, 0.08);
	border: 1px solid rgba(180, 35, 24, 0.25);
	color: #7a271a;
}

/* Student portal shell (ADR-028) */
.lr-student-portal {
	max-width: 52rem;
}

.lr-portal__masthead {
	margin-bottom: 1.25rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--lr-booking-border);
}

.lr-portal__eyebrow {
	margin: 0 0 0.35rem;
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: normal;
	text-transform: none;
	color: var(--lr-booking-accent);
}

.lr-portal__intro-heading {
	margin: 0.5rem 0 0.25rem;
	font-weight: 600;
	font-size: 1rem;
	color: var(--lr-booking-text-heading);
}

.lr-portal__intro-body {
	margin: 0;
	line-height: 1.5;
	font-size: 0.95rem;
}

.lr-portal__panel-intro {
	margin: 0 0 1rem;
	font-size: 0.92rem;
	line-height: 1.5;
	opacity: 0.88;
}

.lr-portal__journey {
	margin: 0 0 1rem;
	padding: 0.85rem 1rem;
	border-radius: 10px;
	background: var(--lr-booking-accent-wash);
	border: 1px solid rgba(var(--lr-booking-accent-rgb), 0.12);
}

.lr-portal__journey-steps {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.lr-portal__journey-step {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.85rem;
	color: var(--lr-booking-text);
	opacity: 0.65;
	flex: 1 1 auto;
	min-width: 5.5rem;
	transition:
		opacity var(--lr-booking-motion-base) var(--lr-booking-motion-ease),
		color var(--lr-booking-motion-base) var(--lr-booking-motion-ease);
}

.lr-portal__journey-step.is-active {
	opacity: 1;
	font-weight: 600;
	color: var(--lr-booking-text-heading);
}

.lr-portal__journey-step.is-done {
	opacity: 0.85;
}

.lr-portal__journey-step.is-done .lr-portal__journey-num {
	background: #0d6b4d;
	border-color: #0d6b4d;
	color: #fff;
}

.lr-portal__journey-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.35rem;
	height: 1.35rem;
	border-radius: 50%;
	border: 2px solid var(--lr-booking-border);
	font-size: 0.75rem;
	font-weight: 700;
	flex-shrink: 0;
	transition:
		background-color var(--lr-booking-motion-base) var(--lr-booking-motion-ease),
		border-color var(--lr-booking-motion-base) var(--lr-booking-motion-ease),
		color var(--lr-booking-motion-base) var(--lr-booking-motion-ease);
}

.lr-portal__journey-step.is-active .lr-portal__journey-num {
	border-color: var(--lr-booking-accent);
	background: var(--lr-booking-accent);
	color: #fff;
}

.lr-portal__home-skeleton {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin-bottom: 1rem;
}

.lr-portal__skel-card {
	height: 5.5rem;
	border-radius: 10px;
	background: linear-gradient(
		90deg,
		var(--lr-booking-surface-muted, #f0f2f4) 0%,
		#e8eaed 50%,
		var(--lr-booking-surface-muted, #f0f2f4) 100%
	);
	background-size: 200% 100%;
	animation: lr-booking-skeleton 1.2s ease-in-out infinite;
}

.lr-portal__skel-card--short {
	height: 3.25rem;
	max-width: 14rem;
}

.lr-portal__skel-line {
	height: 2.75rem;
	max-width: 10rem;
	border-radius: 999px;
	background: linear-gradient(
		90deg,
		var(--lr-booking-surface-muted, #f0f2f4) 0%,
		#e8eaed 50%,
		var(--lr-booking-surface-muted, #f0f2f4) 100%
	);
	background-size: 200% 100%;
	animation: lr-booking-skeleton 1.2s ease-in-out infinite;
}

.lr-portal__home-content--ready {
	animation: lr-booking-fade-in var(--lr-booking-motion-base) var(--lr-booking-motion-ease);
}

.lr-booking__day-panel--enter {
	animation: lr-booking-fade-in var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

@keyframes lr-booking-rise-in {
	from {
		opacity: 0;
		transform: translateY(0.4rem);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes lr-booking-fade-in {
	from { opacity: 0; }
	to { opacity: 1; }
}

@keyframes lr-booking-toast-in {
	from {
		opacity: 0;
		transform: translateY(-0.35rem);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.lr-booking__confirm-reassurance {
	margin: 0 0 0.85rem;
	font-size: 0.9rem;
	line-height: 1.5;
	color: var(--lr-booking-text);
	opacity: 0.92;
}

.lr-booking__empty-calm {
	padding: 0.75rem 0;
	line-height: 1.5;
	opacity: 0.9;
}

.lr-portal__lessons-intro {
	margin: 0 0 1rem;
	padding: 0.85rem 1rem;
	line-height: 1.55;
	font-size: 0.95rem;
	border-radius: 8px;
	background: var(--lr-booking-surface-muted, #f8f9fa);
	border-left: 3px solid var(--lr-booking-accent);
}

@media (max-width: 520px) {
	.lr-portal__journey-steps {
		flex-direction: column;
		gap: 0.4rem;
	}

	.lr-portal__journey-step {
		min-width: 0;
	}
}

.lr-portal__meta {
	margin: 0.35rem 0 0;
	font-size: 0.9rem;
	opacity: 0.85;
	color: var(--lr-booking-text);
}

.lr-portal__tz-notice {
	margin: 0.5rem 0 0;
	font-size: 0.85rem;
	line-height: 1.45;
	color: var(--lr-booking-text);
	opacity: 0.9;
}

.lr-booking__tz-hint,
.lr-booking__slot-local {
	display: block;
	margin-top: 0.25rem;
	font-size: 0.8rem;
	font-weight: 400;
	opacity: 0.85;
	color: var(--lr-booking-text);
}

.lr-booking__slot-local {
	font-size: 0.75rem;
	margin-top: 0.15rem;
}

.lr-portal__intro {
	margin: 0.75rem 0 0;
	font-size: 0.95rem;
	line-height: 1.5;
	color: var(--lr-booking-text);
}

.lr-portal__bookmark {
	margin: 0.65rem 0 0;
	font-size: 0.85rem;
	opacity: 0.8;
}

.lr-portal__lessons-intro {
	margin: 0 0 1.25rem;
	padding: 0.85rem 1rem;
	font-size: 0.95rem;
	line-height: 1.55;
	color: var(--lr-booking-text);
	background: var(--lr-booking-accent-wash);
	border-radius: 6px;
	border-left: 3px solid var(--lr-booking-accent);
}

.lr-portal__nav {
	display: flex;
	flex-wrap: nowrap;
	gap: 0;
	margin: 0 0 1.25rem;
	padding: 0;
	border-bottom: 1px solid var(--lr-booking-border);
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	position: sticky;
	top: 0;
	z-index: 5;
	background: rgba(255, 255, 255, 0.85);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	padding-top: env(safe-area-inset-top, 0);
}

.lr-portal__nav::-webkit-scrollbar {
	display: none;
}

.lr-portal__nav-btn {
	appearance: none;
	border: none;
	border-bottom: 2px solid transparent;
	background: transparent;
	padding: 0.65rem 0.85rem;
	margin-bottom: -1px;
	font: inherit;
	font-weight: 500;
	cursor: pointer;
	color: var(--lr-booking-text);
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	flex-shrink: 0;
	white-space: nowrap;
	transition:
		color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		border-color var(--lr-booking-motion-base) var(--lr-booking-motion-ease),
		box-shadow var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-portal__nav-btn:active:not([aria-disabled="true"]) {
	transform: scale(0.98);
}

.lr-portal__nav-btn:hover {
	color: var(--lr-booking-accent);
}

.lr-portal__nav-btn[aria-selected="true"] {
	border-bottom-color: var(--lr-booking-accent);
	color: var(--lr-booking-accent);
	font-weight: 600;
}

.lr-portal__nav-btn:focus-visible {
	outline: none;
	box-shadow: inset 0 -2px 0 var(--lr-booking-accent);
}

.lr-portal__nav-btn--soon {
	opacity: 0.75;
}

.lr-portal__nav-badge {
	font-size: 0.65rem;
	font-weight: 600;
	text-transform: none;
	letter-spacing: normal;
	padding: 0.15rem 0.4rem;
	border-radius: 4px;
	background: #eef0f2;
	color: #5c6570;
}

.lr-portal__panel[hidden] {
	display: none !important;
}

.lr-portal__stats {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin: 0 0 1.25rem;
}

.lr-portal__stat {
	flex: 1;
	min-width: 7rem;
	padding: 0.85rem 1rem;
	border: 1px solid var(--lr-booking-border);
	border-radius: 8px;
	background: var(--lr-booking-surface-muted);
	text-align: center;
}

.lr-portal__stat-value {
	display: block;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.2;
	color: var(--lr-booking-accent);
}

.lr-portal__stat-label {
	display: block;
	margin-top: 0.2rem;
	font-size: 0.85rem;
	opacity: 0.85;
}

.lr-portal__home-actions {
	margin: 0 0 1rem;
}

.lr-portal__cta {
	appearance: none;
	border: 2px solid var(--lr-booking-accent);
	border-radius: 999px;
	background: var(--lr-booking-accent);
	color: #ffffff;
	padding: 0.6rem 1.1rem;
	min-height: 44px;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition:
		background-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		border-color var(--lr-booking-motion-fast) var(--lr-booking-motion-ease),
		transform var(--lr-booking-motion-fast) var(--lr-booking-motion-ease);
}

.lr-portal__cta:active:not(:disabled) {
	transform: scale(0.98);
}

.lr-portal__cta:hover {
	background: var(--lr-booking-accent-hover);
	border-color: var(--lr-booking-accent-hover);
}

.lr-portal__cta:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px rgba(var(--lr-booking-accent-rgb), 0.35);
}

.lr-portal__toast {
	margin-bottom: 1rem;
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	justify-content: space-between;
}

.lr-portal__toast:not([hidden]) {
	animation: lr-booking-toast-in var(--lr-booking-motion-base) var(--lr-booking-motion-ease);
}

.lr-portal__toast[role="alert"]:not([hidden]) {
	border-left: 3px solid #8f2218;
	padding-left: 0.65rem;
	background: rgba(180, 35, 24, 0.05);
	border-radius: 6px;
}

.lr-portal__toast.lr-booking__message--success:not([hidden]) {
	border-left: 3px solid #0a5c42;
	background: rgba(13, 107, 77, 0.06);
}

.lr-portal__toast-text {
	flex: 1;
	min-width: 0;
}

.lr-portal__toast-dismiss {
	appearance: none;
	border: none;
	background: transparent;
	font-size: 1.35rem;
	line-height: 1;
	padding: 0.15rem 0.35rem;
	cursor: pointer;
	color: inherit;
	opacity: 0.7;
	min-height: 44px;
	min-width: 44px;
	flex-shrink: 0;
}

.lr-portal__toast-dismiss:hover {
	opacity: 1;
}

.lr-portal__toast[role="alert"] {
	font-weight: 600;
}

.lr-portal__bookmark-dismiss {
	appearance: none;
	border: none;
	background: transparent;
	color: var(--lr-booking-accent);
	font: inherit;
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
	cursor: pointer;
	padding: 0.25rem 0;
	margin-left: 0.35rem;
}

.lr-portal__help {
	margin: 1.25rem 0 0;
	padding: 1rem 1.1rem;
	border-radius: 8px;
	border: 1px dashed var(--lr-booking-border);
	background: var(--lr-booking-surface-muted, #f8f9fa);
}

.lr-portal__help-heading {
	margin: 0 0 0.35rem;
	font-weight: 600;
	font-size: 0.95rem;
	color: var(--lr-booking-text-heading);
}

.lr-portal__help-body {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.5;
	opacity: 0.9;
}

.lr-portal__session-gate {
	position: fixed;
	inset: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(18, 22, 28, 0.45);
	padding: 1rem;
}

.lr-portal__session-gate[hidden] {
	display: none;
}

.lr-portal__session-gate-inner {
	max-width: 28rem;
	padding: 1.5rem;
	border-radius: 8px;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}

.lr-booking__inline-error-wrap {
	grid-column: 1 / -1;
	padding: 0.5rem 0;
}

.lr-booking__inline-error-wrap .lr-booking__nav {
	margin-top: 0.5rem;
}

.lr-booking__confirm-btn[aria-busy="true"] {
	position: relative;
	padding-right: 2rem;
}

.lr-booking__confirm-btn[aria-busy="true"]::after {
	content: '';
	position: absolute;
	right: 0.85rem;
	top: 50%;
	width: 0.85rem;
	height: 0.85rem;
	margin-top: -0.425rem;
	border: 2px solid rgba(255, 255, 255, 0.35);
	border-top-color: #fff;
	border-radius: 50%;
	animation: lr-booking-spin 0.7s linear infinite;
}

@keyframes lr-booking-spin {
	to { transform: rotate(360deg); }
}

.lr-portal__coming-soon {
	padding: 1.25rem 1rem;
	border: 1px dashed var(--lr-booking-border);
	border-radius: 8px;
	background: #fafbfc;
	text-align: center;
}

.lr-portal__coming-soon p {
	margin: 0.5rem 0;
	opacity: 0.9;
}

.lr-portal__coming-soon-badge {
	display: inline-block;
	margin-top: 0.75rem !important;
	font-size: 0.75rem;
	font-weight: 600;
	text-transform: none;
	letter-spacing: normal;
	padding: 0.25rem 0.6rem;
	border-radius: 4px;
	background: #eef0f2;
}

.lr-portal__module-list {
	margin: 0;
	padding-left: 1.25rem;
}

/* Beat theme .wp-element-button inheritance on the book page */
.lr-student-portal .lr-portal__cta,
.lr-student-portal .lr-booking__confirm button {
	background-color: var(--lr-booking-accent) !important;
	border-color: var(--lr-booking-accent) !important;
	color: #ffffff !important;
}

.lr-student-portal .lr-booking__reschedule,
.lr-student-portal .lr-booking__nav,
.lr-student-portal .lr-booking__slot {
	color: var(--lr-booking-text-heading);
}

.lr-student-portal .lr-booking__reschedule {
	color: var(--lr-booking-accent) !important;
	background: #ffffff !important;
}

.lr-student-portal .lr-booking__reschedule:focus-visible,
.lr-student-portal .lr-booking__confirm-change:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px rgba(var(--lr-booking-accent-rgb), 0.35);
}

/* Cross-platform shell hardening (ADR-050, ADR-051) */
.lr-student-portal.lr-booking {
	scroll-padding-top: calc(3.25rem + env(safe-area-inset-top, 0px));
}

.lr-student-portal .lr-booking__picker {
	scroll-margin-top: calc(3.25rem + env(safe-area-inset-top, 0px));
}

.lr-student-portal .lr-portal__nav {
	top: env(safe-area-inset-top, 0);
	padding-left: max(0px, env(safe-area-inset-left, 0px));
	padding-right: max(0px, env(safe-area-inset-right, 0px));
}

.lr-student-portal .lr-booking__nav,
.lr-student-portal .lr-booking__slot,
.lr-student-portal .lr-portal__cta,
.lr-student-portal .lr-booking__cancel,
.lr-student-portal .lr-booking__reschedule {
	touch-action: manipulation;
	-webkit-tap-highlight-color: transparent;
}

@supports (padding: max(0px)) {
	.lr-student-portal.lr-booking {
		padding-left: max(0.75rem, env(safe-area-inset-left, 0px));
		padding-right: max(0.75rem, env(safe-area-inset-right, 0px));
		padding-bottom: max(0.75rem, env(safe-area-inset-bottom, 0px));
	}
}

@media (prefers-reduced-motion: reduce) {
	.lr-student-portal *,
	.lr-student-portal *::before,
	.lr-student-portal *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	.lr-booking__confirm-btn[aria-busy="true"]::after {
		animation: none;
		border-top-color: rgba(255, 255, 255, 0.8);
	}

	.lr-booking__confirm,
	.lr-portal__home-content--ready,
	.lr-booking__day-panel--enter,
	.lr-portal__toast:not([hidden]) {
		animation: none;
	}

	.lr-student-portal .lr-booking__slot:active,
	.lr-student-portal .lr-booking__cal-day--open:active,
	.lr-student-portal .lr-booking__nav:active,
	.lr-student-portal .lr-portal__nav-btn:active,
	.lr-student-portal .lr-portal__cta:active {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.lr-student-portal .lr-booking__cal-day,
	.lr-student-portal .lr-booking__slot,
	.lr-student-portal .lr-booking__nav {
		border-width: 3px;
	}
}

/* —— Student dashboard (v1.52) —— */
.lr-dashboard {
	display: flex;
	flex-direction: column;
	gap: var(--lr-booking-space-lg, 1.25rem);
	margin-block-end: var(--lr-booking-space-lg, 1.25rem);
}

.lr-dashboard__hero {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--lr-booking-space-md, 0.75rem);
	padding: var(--lr-booking-space-lg, 1.25rem);
	border-radius: var(--lr-booking-radius-lg, 12px);
	background: linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.95));
	border: 1px solid rgba(15, 23, 42, 0.08);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.06);
}

.lr-dashboard__hero-eyebrow {
	margin: 0 0 0.35rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--lr-booking-muted, #64748b);
}

.lr-dashboard__hero-title {
	margin: 0;
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	font-weight: 650;
	line-height: 1.25;
	color: var(--lr-booking-ink, #0f172a);
}

.lr-dashboard__hero-meta,
.lr-dashboard__hero-sub,
.lr-dashboard__hero-standing {
	margin: 0.5rem 0 0;
	font-size: 0.9375rem;
	line-height: 1.5;
	color: var(--lr-booking-muted, #64748b);
}

.lr-dashboard__hero-standing-label {
	font-weight: 600;
	color: var(--lr-booking-ink, #0f172a);
}

.lr-dashboard__hero-links {
	margin: 0.75rem 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.lr-dashboard__hero-actions {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: min(100%, 11rem);
}

.lr-dashboard__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 2.75rem;
	padding: 0.5rem 1rem;
	border-radius: var(--lr-booking-radius-md, 8px);
	font-size: 0.9375rem;
	font-weight: 600;
	cursor: pointer;
	border: 1px solid transparent;
	transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
}

.lr-dashboard__btn--primary {
	background: var(--lr-booking-accent, #2563eb);
	color: #fff;
}

.lr-dashboard__btn--primary:hover {
	filter: brightness(1.05);
}

.lr-dashboard__btn--ghost {
	background: transparent;
	border-color: rgba(15, 23, 42, 0.12);
	color: var(--lr-booking-ink, #0f172a);
}

.lr-dashboard__actions {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.lr-dashboard__section-label {
	margin: 0;
	font-size: 0.8125rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--lr-booking-muted, #64748b);
}

.lr-dashboard__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.lr-dashboard__chip {
	padding: 0.4rem 0.85rem;
	border-radius: 999px;
	border: 1px solid rgba(15, 23, 42, 0.1);
	background: #fff;
	font-size: 0.875rem;
	cursor: pointer;
	color: var(--lr-booking-ink, #0f172a);
	transition: border-color 0.15s ease, background 0.15s ease;
}

.lr-dashboard__chip--primary {
	background: rgba(37, 99, 235, 0.08);
	border-color: rgba(37, 99, 235, 0.25);
	color: var(--lr-booking-accent, #2563eb);
	font-weight: 600;
}

.lr-dashboard__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--lr-booking-space-md, 0.75rem);
}

@media (min-width: 640px) {
	.lr-dashboard__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1024px) {
	.lr-dashboard__grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

.lr-dashboard__card {
	display: flex;
	flex-direction: column;
	min-height: 8rem;
	padding: var(--lr-booking-space-md, 0.75rem);
	border-radius: var(--lr-booking-radius-md, 10px);
	border: 1px solid rgba(15, 23, 42, 0.08);
	background: #fff;
	box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04);
	transition: transform var(--lr-booking-motion-base) var(--lr-booking-motion-ease), box-shadow var(--lr-booking-motion-base) var(--lr-booking-motion-ease);
}

.lr-dashboard__card:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 16px rgba(15, 23, 42, 0.08);
}

.lr-dashboard__card--progress {
	grid-column: 1 / -1;
}

@media (min-width: 1024px) {
	.lr-dashboard__card--progress {
		grid-column: span 1;
	}
}

.lr-dashboard__card-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin-block-end: 0.75rem;
}

.lr-dashboard__card-title {
	margin: 0;
	flex: 1 1 auto;
	font-size: 1rem;
	font-weight: 650;
}

.lr-dashboard__card-link {
	margin-inline-start: auto;
	padding: 0;
	border: 0;
	background: none;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--lr-booking-accent, #2563eb);
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lr-dashboard__badge {
	font-size: 0.75rem;
	font-weight: 600;
	padding: 0.15rem 0.5rem;
	border-radius: 999px;
	background: rgba(234, 88, 12, 0.12);
	color: #c2410c;
}

.lr-dashboard__empty {
	margin: 0;
	font-size: 0.875rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.5;
}

.lr-dashboard__list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.65rem;
}

.lr-dashboard__list-item {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding-block-end: 0.65rem;
	border-block-end: 1px solid rgba(15, 23, 42, 0.06);
}

.lr-dashboard__list-item:last-child {
	border-block-end: 0;
	padding-block-end: 0;
}

.lr-dashboard__list-title {
	font-weight: 600;
	font-size: 0.9375rem;
}

.lr-dashboard__list-body,
.lr-dashboard__list-meta {
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.45;
}

.lr-dashboard__list-link {
	color: inherit;
	text-decoration: none;
}

.lr-dashboard__list-link:hover .lr-dashboard__list-title {
	color: var(--lr-booking-accent, #2563eb);
}

.lr-dashboard__pill {
	display: inline-block;
	align-self: flex-start;
	font-size: 0.6875rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	padding: 0.1rem 0.4rem;
	border-radius: 4px;
	background: rgba(15, 23, 42, 0.06);
}

.lr-dashboard__pill--pending {
	background: rgba(234, 88, 12, 0.12);
	color: #c2410c;
}

.lr-dashboard__pill--done {
	background: rgba(22, 163, 74, 0.12);
	color: #15803d;
}

.lr-dashboard__progress-track {
	height: 0.5rem;
	border-radius: 999px;
	background: rgba(15, 23, 42, 0.08);
	overflow: hidden;
}

.lr-dashboard__progress-fill {
	height: 100%;
	border-radius: inherit;
	background: linear-gradient(90deg, var(--lr-booking-accent, #2563eb), #60a5fa);
	transition: width 0.4s ease;
}

.lr-dashboard__progress-value {
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--lr-booking-accent, #2563eb);
}

.lr-dashboard__progress-caption {
	margin: 0.5rem 0 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-dashboard__milestones {
	margin: 0.75rem 0 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	font-size: 0.875rem;
}

.lr-dashboard__milestone.is-done {
	color: var(--lr-booking-muted, #64748b);
}

.lr-dashboard__row {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--lr-booking-space-md, 0.75rem);
	margin-block-start: var(--lr-booking-space-md, 0.75rem);
}

@media (min-width: 768px) {
	.lr-dashboard__row {
		grid-template-columns: repeat(2, 1fr);
	}
}

.lr-dashboard__sessions {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.lr-dashboard__session {
	display: flex;
	flex-direction: column;
	gap: 0.1rem;
	padding: 0.5rem 0;
	border-block-end: 1px solid rgba(15, 23, 42, 0.06);
}

.lr-dashboard__session:last-child {
	border-block-end: 0;
}

.lr-dashboard__session-label {
	font-weight: 600;
	font-size: 0.875rem;
}

.lr-dashboard__session-time {
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-portal__module-body {
	margin: 0.35rem 0 0;
	font-size: 0.875rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.5;
}

.lr-portal__module-item {
	padding-block: 0.65rem;
	border-block-end: 1px solid rgba(15, 23, 42, 0.06);
}

/* Learning Hub (v1.53) */
.lr-learn-host {
	min-height: 0;
}

.lr-learn {
	display: flex;
	flex-direction: column;
	gap: var(--lr-booking-space-md, 0.75rem);
	padding-block-end: var(--lr-booking-space-lg, 1.25rem);
}

.lr-learn__header {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}

.lr-learn__heading {
	margin: 0;
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	font-weight: 700;
	letter-spacing: -0.02em;
}

.lr-learn__sub {
	margin: 0;
	font-size: 0.9375rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.5;
	max-width: 42rem;
}

.lr-learn__search-wrap {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}

.lr-learn__search-label {
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--lr-booking-muted, #64748b);
}

.lr-learn__search {
	width: 100%;
	padding: 0.65rem 0.85rem;
	border: 1px solid rgba(15, 23, 42, 0.12);
	border-radius: 0.65rem;
	font-size: 1rem;
	background: #fff;
	color: inherit;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.lr-learn__search:focus {
	outline: none;
	border-color: var(--lr-booking-accent, #2563eb);
	box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}

.lr-learn__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}

.lr-learn__filter {
	padding: 0.35rem 0.75rem;
	border: 1px solid rgba(15, 23, 42, 0.1);
	border-radius: 999px;
	background: #fff;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--lr-booking-muted, #64748b);
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.lr-learn__filter:hover {
	border-color: rgba(37, 99, 235, 0.35);
	color: var(--lr-booking-accent, #2563eb);
}

.lr-learn__filter.is-active {
	background: rgba(37, 99, 235, 0.1);
	border-color: rgba(37, 99, 235, 0.35);
	color: var(--lr-booking-accent, #2563eb);
}

.lr-learn__kind-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
}

.lr-learn__kind-chip {
	padding: 0.25rem 0.55rem;
	border: 0;
	border-radius: 0.4rem;
	background: rgba(15, 23, 42, 0.05);
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--lr-booking-muted, #64748b);
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}

.lr-learn__kind-chip:hover,
.lr-learn__kind-chip.is-active {
	background: rgba(37, 99, 235, 0.12);
	color: var(--lr-booking-accent, #2563eb);
}

.lr-learn__count {
	margin: 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-learn__section {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin-block-start: 0.25rem;
}

.lr-learn__section-title {
	margin: 0;
	font-size: 0.9375rem;
	font-weight: 650;
	color: inherit;
}

.lr-learn__lesson-block {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.lr-learn__lesson-title {
	margin: 0;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--lr-booking-muted, #64748b);
}

.lr-learn__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.75rem;
}

@media (min-width: 640px) {
	.lr-learn__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1024px) {
	.lr-learn__grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

.lr-learn__grid--compact {
	grid-template-columns: 1fr;
}

@media (min-width: 768px) {
	.lr-learn__grid--compact {
		grid-template-columns: repeat(2, 1fr);
	}
}

.lr-learn__card {
	position: relative;
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 0.65rem;
	align-items: start;
	padding: 0.85rem;
	border: 1px solid rgba(15, 23, 42, 0.08);
	border-radius: 0.75rem;
	background: #fff;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.lr-learn__card:hover {
	border-color: rgba(37, 99, 235, 0.25);
	box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
}

.lr-learn__card.is-bookmarked {
	border-color: rgba(234, 179, 8, 0.45);
}

.lr-learn__card-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 0.5rem;
	background: rgba(37, 99, 235, 0.08);
	font-size: 0.75rem;
	font-weight: 700;
	color: var(--lr-booking-accent, #2563eb);
	flex-shrink: 0;
}

.lr-learn__card-body {
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}

.lr-learn__card-link {
	color: inherit;
	text-decoration: none;
}

.lr-learn__card-link:hover .lr-learn__card-title {
	color: var(--lr-booking-accent, #2563eb);
}

.lr-learn__card-title {
	margin: 0;
	font-size: 0.9375rem;
	font-weight: 650;
	line-height: 1.35;
	transition: color 0.15s ease;
}

.lr-learn__card-body-text {
	margin: 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.45;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.lr-learn__card-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	align-items: center;
	font-size: 0.6875rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--lr-booking-muted, #64748b);
}

.lr-learn__card-kind,
.lr-learn__card-subject {
	padding: 0.1rem 0.4rem;
	border-radius: 0.25rem;
	background: rgba(15, 23, 42, 0.05);
}

.lr-learn__card-lesson {
	font-weight: 600;
	text-transform: none;
	letter-spacing: normal;
	color: var(--lr-booking-accent, #2563eb);
}

.lr-learn__card-ai {
	padding: 0.1rem 0.4rem;
	border-radius: 0.25rem;
	background: rgba(139, 92, 246, 0.12);
	color: #6d28d9;
	text-transform: none;
	letter-spacing: normal;
}

.lr-learn__bookmark {
	padding: 0.15rem 0.35rem;
	border: 0;
	background: none;
	font-size: 1.1rem;
	line-height: 1;
	color: #cbd5e1;
	cursor: pointer;
	transition: color 0.15s ease, transform 0.15s ease;
}

.lr-learn__bookmark:hover,
.lr-learn__card.is-bookmarked .lr-learn__bookmark {
	color: #eab308;
}

.lr-learn__bookmark[aria-pressed="true"] {
	color: #eab308;
}

.lr-learn__empty {
	margin: 0;
	padding: 1.5rem;
	text-align: center;
	font-size: 0.9375rem;
	color: var(--lr-booking-muted, #64748b);
	border: 1px dashed rgba(15, 23, 42, 0.12);
	border-radius: 0.75rem;
}

.lr-learn__future {
	margin-block-start: 0.5rem;
	padding: 0.85rem 1rem;
	border-radius: 0.65rem;
	background: rgba(15, 23, 42, 0.03);
	border: 1px solid rgba(15, 23, 42, 0.06);
}

.lr-learn__future-item {
	margin: 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.5;
}

.lr-learn__future-item + .lr-learn__future-item {
	margin-block-start: 0.35rem;
}

.lr-learn__future-label {
	font-weight: 650;
	color: inherit;
}

@media (prefers-reduced-motion: reduce) {
	.lr-learn__card,
	.lr-learn__search,
	.lr-learn__filter,
	.lr-learn__kind-chip,
	.lr-learn__bookmark,
	.lr-learn__card-title {
		transition: none;
	}
}

/* Progress Centre (v1.54) */
.lr-progress-host {
	min-height: 0;
}

.lr-progress {
	display: flex;
	flex-direction: column;
	gap: var(--lr-booking-space-md, 0.75rem);
	padding-block-end: var(--lr-booking-space-lg, 1.25rem);
}

.lr-progress__header {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem;
}

.lr-progress__heading {
	margin: 0;
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	font-weight: 700;
	letter-spacing: -0.02em;
}

.lr-progress__sub {
	margin: 0.35rem 0 0;
	font-size: 0.9375rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.5;
	max-width: 40rem;
}

.lr-progress__btn {
	padding: 0.45rem 0.85rem;
	border: 1px solid rgba(15, 23, 42, 0.12);
	border-radius: 0.5rem;
	background: #fff;
	font-size: 0.8125rem;
	font-weight: 600;
	color: inherit;
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease;
}

.lr-progress__btn:hover {
	border-color: var(--lr-booking-accent, #2563eb);
	color: var(--lr-booking-accent, #2563eb);
}

.lr-progress__exam {
	padding: 1rem 1.15rem;
	border-radius: 0.75rem;
	background: linear-gradient(135deg, rgba(15, 23, 42, 0.04), rgba(37, 99, 235, 0.06));
	border: 1px solid rgba(37, 99, 235, 0.15);
}

.lr-progress__exam-label {
	margin: 0;
	font-size: 0.75rem;
	font-weight: 650;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__exam-value {
	margin: 0.25rem 0 0;
	font-size: 2rem;
	font-weight: 700;
	line-height: 1.1;
	color: var(--lr-booking-accent, #2563eb);
}

.lr-progress__exam-value span {
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__exam-target {
	margin: 0.35rem 0 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.65rem;
}

@media (min-width: 768px) {
	.lr-progress__stats {
		grid-template-columns: repeat(4, 1fr);
	}
}

.lr-progress__stat {
	padding: 0.85rem;
	border: 1px solid rgba(15, 23, 42, 0.08);
	border-radius: 0.65rem;
	background: #fff;
}

.lr-progress__stat-label {
	margin: 0;
	font-size: 0.6875rem;
	font-weight: 650;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__stat-value {
	margin: 0.25rem 0 0;
	font-size: 1.35rem;
	font-weight: 700;
	line-height: 1.2;
}

.lr-progress__stat-sub {
	margin: 0.2rem 0 0;
	font-size: 0.6875rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__metrics-row {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.75rem;
}

@media (min-width: 640px) {
	.lr-progress__metrics-row {
		grid-template-columns: repeat(2, 1fr);
	}
}

.lr-progress__metric-head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	margin-block-end: 0.35rem;
}

.lr-progress__metric-label {
	font-size: 0.875rem;
	font-weight: 650;
}

.lr-progress__metric-value {
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--lr-booking-accent, #2563eb);
}

.lr-progress__bar {
	height: 0.45rem;
	border-radius: 999px;
	background: rgba(15, 23, 42, 0.08);
	overflow: hidden;
}

.lr-progress__bar-fill {
	height: 100%;
	border-radius: inherit;
	background: linear-gradient(90deg, var(--lr-booking-accent, #2563eb), #60a5fa);
	transition: width 0.35s ease;
}

.lr-progress__metric-caption {
	margin: 0.35rem 0 0;
	font-size: 0.75rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__section {
	padding: 0.85rem 0;
	border-block-start: 1px solid rgba(15, 23, 42, 0.06);
}

.lr-progress__section-title {
	margin: 0;
	font-size: 0.9375rem;
	font-weight: 650;
}

.lr-progress__section-sub {
	margin: 0.35rem 0 0.75rem;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.45;
}

.lr-progress__recs {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.65rem;
	margin-block-start: 0.65rem;
}

@media (min-width: 768px) {
	.lr-progress__recs {
		grid-template-columns: repeat(3, 1fr);
	}
}

.lr-progress__rec {
	padding: 0.85rem;
	border: 1px solid rgba(15, 23, 42, 0.08);
	border-radius: 0.65rem;
	background: rgba(15, 23, 42, 0.02);
}

.lr-progress__rec-title {
	margin: 0;
	font-size: 0.875rem;
	font-weight: 650;
}

.lr-progress__rec-body {
	margin: 0.35rem 0 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.45;
}

.lr-progress__rec-action {
	margin-block-start: 0.65rem;
	padding: 0;
	border: 0;
	background: none;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--lr-booking-accent, #2563eb);
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lr-progress__columns {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.75rem;
}

@media (min-width: 768px) {
	.lr-progress__columns {
		grid-template-columns: repeat(2, 1fr);
	}
}

.lr-progress__topic-list {
	margin: 0.65rem 0 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
}

.lr-progress__topic-item {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem 0.5rem;
	padding: 0.55rem 0.65rem;
	border-radius: 0.5rem;
	background: rgba(15, 23, 42, 0.03);
}

.lr-progress__topic-item--weak {
	border-inline-start: 3px solid #f59e0b;
}

.lr-progress__topic-item--strong {
	border-inline-start: 3px solid #16a34a;
}

.lr-progress__topic-name {
	font-size: 0.875rem;
	font-weight: 600;
	flex: 1 1 auto;
}

.lr-progress__topic-subject {
	font-size: 0.6875rem;
	font-weight: 600;
	text-transform: uppercase;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__topic-confidence {
	font-size: 0.75rem;
	font-weight: 700;
	color: var(--lr-booking-accent, #2563eb);
}

.lr-progress__empty-inline {
	margin: 0.5rem 0 0;
	font-size: 0.8125rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__confidence-list {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.lr-progress__confidence {
	padding: 0.75rem;
	border: 1px solid rgba(15, 23, 42, 0.08);
	border-radius: 0.65rem;
	background: #fff;
}

.lr-progress__confidence-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.35rem 0.65rem;
	margin-block-end: 0.5rem;
}

.lr-progress__confidence-title {
	font-size: 0.875rem;
	font-weight: 650;
}

.lr-progress__confidence-subject {
	font-size: 0.6875rem;
	font-weight: 600;
	text-transform: uppercase;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__confidence-scale {
	display: flex;
	gap: 0.35rem;
}

.lr-progress__confidence-dot {
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.lr-progress__confidence-dot-inner {
	display: block;
	width: 1.35rem;
	height: 1.35rem;
	border-radius: 999px;
	border: 2px solid rgba(15, 23, 42, 0.15);
	background: transparent;
	transition: background 0.15s ease, border-color 0.15s ease;
}

.lr-progress__confidence-dot.is-active .lr-progress__confidence-dot-inner,
.lr-progress__confidence-dot:hover .lr-progress__confidence-dot-inner {
	border-color: var(--lr-booking-accent, #2563eb);
	background: rgba(37, 99, 235, 0.2);
}

.lr-progress__confidence-hint {
	margin: 0.4rem 0 0;
	font-size: 0.75rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__milestones {
	margin: 0.65rem 0 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
}

.lr-progress__milestone {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 0.5rem;
	padding: 0.55rem 0;
	border-block-end: 1px solid rgba(15, 23, 42, 0.06);
	font-size: 0.875rem;
}

.lr-progress__milestone:last-child {
	border-block-end: 0;
}

.lr-progress__milestone-due {
	font-size: 0.75rem;
	color: var(--lr-booking-muted, #64748b);
	flex-shrink: 0;
}

.lr-progress__heatmap-wrap {
	overflow-x: auto;
	padding-block-end: 0.35rem;
}

.lr-progress__heatmap {
	display: grid;
	grid-template-columns: repeat(12, minmax(0.75rem, 1fr));
	grid-auto-rows: 0.75rem;
	gap: 3px;
	min-width: 16rem;
}

.lr-progress__heatmap-cell {
	border-radius: 2px;
	background: rgba(15, 23, 42, 0.06);
}

.lr-progress__heatmap-cell--1 { background: rgba(37, 99, 235, 0.12); }
.lr-progress__heatmap-cell--2 { background: rgba(37, 99, 235, 0.28); }
.lr-progress__heatmap-cell--3 { background: rgba(37, 99, 235, 0.48); }
.lr-progress__heatmap-cell--4 { background: rgba(37, 99, 235, 0.72); }

.lr-progress__heatmap-legend {
	display: flex;
	align-items: center;
	gap: 0.35rem;
	margin-block-start: 0.5rem;
	font-size: 0.6875rem;
	color: var(--lr-booking-muted, #64748b);
}

.lr-progress__heatmap-legend .lr-progress__heatmap-cell {
	width: 0.65rem;
	height: 0.65rem;
}

.lr-progress__badges {
	margin: 0.65rem 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.65rem;
}

@media (min-width: 640px) {
	.lr-progress__badges {
		grid-template-columns: repeat(2, 1fr);
	}
}

.lr-progress__badge {
	display: flex;
	gap: 0.65rem;
	padding: 0.85rem;
	border: 1px solid rgba(15, 23, 42, 0.08);
	border-radius: 0.65rem;
	background: #fff;
}

.lr-progress__badge.is-locked {
	opacity: 0.55;
}

.lr-progress__badge-icon {
	font-size: 1.1rem;
	line-height: 1;
	color: var(--lr-booking-accent, #2563eb);
	flex-shrink: 0;
}

.lr-progress__badge-title {
	display: block;
	font-size: 0.875rem;
	font-weight: 650;
}

.lr-progress__badge-desc {
	margin: 0.25rem 0 0;
	font-size: 0.75rem;
	color: var(--lr-booking-muted, #64748b);
	line-height: 1.4;
}

.lr-progress__badge-progress {
	margin: 0.35rem 0 0;
	font-size: 0.6875rem;
	font-weight: 600;
	color: var(--lr-booking-accent, #2563eb);
}

.lr-progress__print-footer {
	display: none;
	margin-block-start: 1.5rem;
	padding-block-start: 0.75rem;
	border-block-start: 1px solid rgba(15, 23, 42, 0.12);
	font-size: 0.75rem;
	color: var(--lr-booking-muted, #64748b);
}

@media print {
	.lr-student-portal .lr-portal__nav,
	.lr-student-portal .lr-portal__masthead,
	.lr-progress__no-print,
	.lr-portal__help {
		display: none !important;
	}

	.lr-student-portal [data-panel] {
		display: block !important;
		position: static !important;
	}

	.lr-student-portal [data-panel]:not([data-panel="progress"]) {
		display: none !important;
	}

	.lr-progress {
		padding: 0;
	}

	.lr-progress__print-footer {
		display: block;
	}

	.lr-progress__stat,
	.lr-progress__rec,
	.lr-progress__badge,
	.lr-progress__confidence {
		break-inside: avoid;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lr-progress__bar-fill,
	.lr-progress__confidence-dot-inner,
	.lr-progress__btn {
		transition: none;
	}
}

