/* /Components/ChatPanel.razor.rz.scp.css */
/* The conversation. Everything here is plain HTML written in ChatPanel.razor —
   scoped styles never reach a child component, so the Send <Button> is styled
   through its Classes parameter in app.css, not from here. */

.chat[b-qw1vf4bq91] {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.chat__stream[b-qw1vf4bq91] {
	display: flex;
	flex-direction: column;
	gap: 10px;
	max-height: min(58vh, 520px);
	overflow-y: auto;
	padding-right: 4px;
}

/* Inside a pane that already has a height of its own — the coach's inbox — the
   stream takes whatever is left over instead of capping itself. min-height:0 on
   both, or the flex items refuse to shrink below their content and the composer
   gets pushed off the bottom. */
.chat--fill[b-qw1vf4bq91] {
	flex: 1 1 auto;
	min-height: 0;
}

	.chat--fill .chat__stream[b-qw1vf4bq91] {
		flex: 1 1 auto;
		min-height: 0;
		max-height: none;
	}

.chat__older[b-qw1vf4bq91] {
	display: flex;
	justify-content: center;
}

.chat__older-btn[b-qw1vf4bq91] {
	padding: 4px 12px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-pill);
	background: var(--surface-card);
	color: var(--ink-3);
	font-size: 0.72rem;
	font-weight: 700;
	cursor: pointer;
}

	.chat__older-btn:hover[b-qw1vf4bq91] {
		color: var(--ink);
	}

/* A hairline with the date sitting in a gap in the middle of it. */
.chat__daybreak[b-qw1vf4bq91] {
	position: relative;
	margin: 6px 0 2px;
	text-align: center;
}

	.chat__daybreak[b-qw1vf4bq91]::before {
		content: "";
		position: absolute;
		top: 50%;
		left: 0;
		right: 0;
		border-top: 1px solid var(--hairline);
	}

	.chat__daybreak span[b-qw1vf4bq91] {
		position: relative;
		padding: 0 10px;
		background: var(--surface-card);
		font-size: 0.68rem;
		font-weight: 800;
		letter-spacing: 0.06em;
		text-transform: uppercase;
		color: var(--ink-3);
	}

.chat__msg[b-qw1vf4bq91] {
	display: flex;
	flex-direction: column;
	gap: 3px;
	max-width: min(78%, 460px);
}

.chat__msg--mine[b-qw1vf4bq91] {
	align-self: flex-end;
	align-items: flex-end;
}

.chat__msg--theirs[b-qw1vf4bq91] {
	align-self: flex-start;
}

.chat__bubble[b-qw1vf4bq91] {
	padding: 9px 13px;
	border-radius: var(--r-card);
	background: var(--surface-sunken);
	color: var(--ink);
}

.chat__msg--mine .chat__bubble[b-qw1vf4bq91] {
	background: var(--primary-soft);
	color: var(--primary-strong);
	/* Squares off the corner nearest the sender, so the two sides read as a
	   conversation rather than two lists. */
	border-bottom-right-radius: 6px;
}

.chat__msg--theirs .chat__bubble[b-qw1vf4bq91] {
	border-bottom-left-radius: 6px;
}

.chat__sender[b-qw1vf4bq91] {
	margin: 0 0 3px;
	font-size: 0.68rem;
	font-weight: 800;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--ink-3);
}

.chat__body[b-qw1vf4bq91] {
	margin: 0;
	font-size: 0.88rem;
	line-height: 1.45;
	/* Newlines the sender typed are meaningful; long words shouldn't overflow. */
	white-space: pre-wrap;
	overflow-wrap: anywhere;
}

.chat__time[b-qw1vf4bq91] {
	font-size: 0.66rem;
	font-weight: 700;
	color: var(--ink-3);
}

/* --- Attached workout / exercise --- */

.chat__ref[b-qw1vf4bq91] {
	margin-top: 8px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	overflow: hidden;
}

/* Two actions side by side rather than one nested in the other: expanding the
   detail, and opening the lift's record. */
.chat__ref-head[b-qw1vf4bq91] {
	display: flex;
	align-items: stretch;
}

.chat__ref-toggle[b-qw1vf4bq91] {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 7px;
	padding: 6px 9px;
	border: none;
	background: none;
	color: var(--ink-2);
	font-size: 0.78rem;
	font-weight: 700;
	text-align: left;
	cursor: pointer;
}

	.chat__ref-toggle:hover[b-qw1vf4bq91] {
		color: var(--ink);
	}

	/* The two <Icon>s are flex items and would otherwise squash before the label
	   clips. ::deep, because a scoped rule never reaches a child component. */
	.chat__ref-toggle[b-qw1vf4bq91]  svg {
		flex: none;
	}

/* Pushes the chevron to the far end whatever the label's length — long lift
   names clip rather than shoving the chevron out of the card. */
.chat__ref-label[b-qw1vf4bq91] {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Only on an exercise. Carries the brand colour so it reads as the one thing
   here that goes and fetches something, but stays a hairline away from the
   label so it never looks like the chip's primary action. */
.chat__ref-progress[b-qw1vf4bq91] {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 6px 10px;
	border: none;
	border-left: 1px solid var(--hairline);
	background: none;
	color: var(--primary-strong);
	font: inherit;
	font-size: 0.72rem;
	font-weight: 800;
	cursor: pointer;
	transition: background 0.15s ease;
}

	.chat__ref-progress:hover[b-qw1vf4bq91] {
		background: var(--primary-soft);
	}

	/* Keeps its word at every width — an arrow on its own is a guess. The lift
	   name clips instead. */
	.chat__ref-progress span[b-qw1vf4bq91] {
		white-space: nowrap;
	}

.chat__ref-detail[b-qw1vf4bq91] {
	padding: 0 9px 8px;
	border-top: 1px solid var(--hairline);
}

.chat__ref-summary[b-qw1vf4bq91] {
	margin: 7px 0 4px;
	font-size: 0.7rem;
	font-weight: 800;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--ink-3);
}

.chat__ref-line[b-qw1vf4bq91] {
	margin: 0 0 3px;
	font-size: 0.8rem;
	color: var(--ink-2);
}

/* --- Composer --- */

.chat__composer[b-qw1vf4bq91] {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding-top: 12px;
	border-top: 1px solid var(--hairline);
}

.chat__input[b-qw1vf4bq91] {
	resize: vertical;
	min-height: 62px;
	font-family: inherit;
}

.chat__pending[b-qw1vf4bq91] {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.chat__pending-chip[b-qw1vf4bq91] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 6px 4px 9px;
	border-radius: var(--r-pill);
	background: var(--primary-soft);
	color: var(--primary-strong);
	font-size: 0.74rem;
	font-weight: 700;
}

.chat__pending-clear[b-qw1vf4bq91] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 17px;
	height: 17px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: inherit;
	cursor: pointer;
}

	.chat__pending-clear:hover[b-qw1vf4bq91] {
		background: var(--surface-card);
	}

.chat__error[b-qw1vf4bq91] {
	margin: 0;
	font-size: 0.78rem;
	font-weight: 600;
	color: var(--danger);
}

.chat__actions[b-qw1vf4bq91] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
}

/* Send sits opposite the two attach buttons. The rule targets the class handed
   to <Button>, so it lives in app.css — see .chat__send there. */
/* /Components/ConsistencyGrid.razor.rz.scp.css */
/* Rows are a fixed height so the weekday initials stay legible at any range;
   columns flex, capped at square, so a month doesn't sprawl and a year still
   fits. Past the cap the strip scrolls rather than shrinking to dust. */

.consistency__scroll[b-co42gzswna] {
	overflow-x: auto;
	padding-bottom: 2px;
}

.consistency__grid[b-co42gzswna] {
	display: grid;
	grid-template-columns: 20px repeat(var(--weeks), minmax(9px, 1fr));
	grid-template-rows: 14px repeat(7, 15px);
	gap: 3px;
	max-width: calc(20px + var(--weeks) * 18px);
}

.consistency__month[b-co42gzswna] {
	font-size: 0.62rem;
	font-weight: 700;
	line-height: 14px;
	color: var(--ink-3);
	white-space: nowrap;
	overflow: visible;
}

.consistency__day[b-co42gzswna] {
	font-size: 0.6rem;
	font-weight: 700;
	line-height: 15px;
	text-align: right;
	color: var(--ink-3);
}

.consistency__cell[b-co42gzswna] {
	border-radius: 3px;
	background: var(--surface-sunken);
}

.consistency__cell--session[b-co42gzswna] {
	background: var(--primary);
}

/* A check-in is a hollow session: they turned up to the app, not to the gym. */
.consistency__cell--checkin[b-co42gzswna] {
	background: var(--primary-soft);
	box-shadow: inset 0 0 0 2px var(--primary);
}

.consistency__cell--future[b-co42gzswna] {
	background: transparent;
	box-shadow: inset 0 0 0 1px var(--hairline);
}

/* Dashed, so today never reads as the check-in cell's solid ring. */
.consistency__cell--today[b-co42gzswna] {
	outline: 1.5px dashed var(--ink-3);
	outline-offset: 1px;
}

.consistency__legend[b-co42gzswna] {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px 8px;
	margin: 14px 0 0;
	font-size: 0.75rem;
	color: var(--ink-2);
}

	.consistency__legend span + .consistency__key[b-co42gzswna] {
		margin-left: 8px;
	}

.consistency__key[b-co42gzswna] {
	width: 11px;
	height: 11px;
	border-radius: 3px;
	flex: none;
}

.consistency__key--session[b-co42gzswna] {
	background: var(--primary);
}

.consistency__key--checkin[b-co42gzswna] {
	background: var(--primary-soft);
	box-shadow: inset 0 0 0 2px var(--primary);
}

.consistency__key--none[b-co42gzswna] {
	background: var(--surface-sunken);
}

@media (max-width: 575px) {
	.consistency__grid[b-co42gzswna] {
		grid-template-columns: 16px repeat(var(--weeks), minmax(8px, 1fr));
		grid-template-rows: 13px repeat(7, 13px);
		gap: 2px;
	}

	.consistency__day[b-co42gzswna] {
		font-size: 0.55rem;
		line-height: 13px;
	}

	.consistency__month[b-co42gzswna] {
		line-height: 13px;
	}
}
/* /Components/GoalOnboarding.razor.rz.scp.css */
.onboard[b-rsnj9f33m3] {
	max-width: 860px;
	margin: 0 auto;
	width: 100%;
}

.onboard__hero[b-rsnj9f33m3] {
	max-width: 600px;
}

.onboard__lede[b-rsnj9f33m3] {
	margin-top: 12px;
}

.onboard__card[b-rsnj9f33m3] {
	display: grid;
	gap: 18px;
	padding: 28px;
}

	.onboard__card h2[b-rsnj9f33m3] {
		margin: 0 0 4px;
	}

.onboard__blurb[b-rsnj9f33m3] {
	color: var(--ink-2);
	max-width: 560px;
}

.onboard__actions[b-rsnj9f33m3] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}

.onboard__kinds[b-rsnj9f33m3] {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 12px;
}

.kind-card[b-rsnj9f33m3] {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	text-align: left;
	padding: 16px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-card);
	background: var(--surface-card);
	color: var(--ink);
	font: inherit;
	cursor: pointer;
	transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

	.kind-card:hover[b-rsnj9f33m3] {
		border-color: var(--primary);
		transform: translateY(-1px);
		box-shadow: var(--shadow-card);
	}

	.kind-card:focus-visible[b-rsnj9f33m3] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.kind-card__icon[b-rsnj9f33m3] {
	color: var(--primary);
	flex-shrink: 0;
	margin-top: 2px;
}

.kind-card__text[b-rsnj9f33m3] {
	display: grid;
	gap: 4px;
}

	.kind-card__text strong[b-rsnj9f33m3] {
		font-weight: 700;
	}

	.kind-card__text small[b-rsnj9f33m3] {
		color: var(--ink-3);
		line-height: 1.35;
	}

.onboard__sessions[b-rsnj9f33m3] {
	max-width: 220px;
}

.onboard__form[b-rsnj9f33m3] {
	display: grid;
	gap: 14px;
	max-width: 520px;
}

.onboard__form-row[b-rsnj9f33m3] {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

.onboard__hint[b-rsnj9f33m3] {
	font-size: 0.82rem;
	color: var(--ink-3);
	margin-top: -6px;
}

.onboard__error[b-rsnj9f33m3] {
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--danger);
	margin: -6px 0 0;
}

.onboard__later[b-rsnj9f33m3] {
	background: none;
	border: none;
	padding: 0;
	justify-self: start;
	font: inherit;
	font-size: 0.85rem;
	color: var(--ink-3);
	text-decoration: underline;
	cursor: pointer;
}

	.onboard__later:hover[b-rsnj9f33m3] {
		color: var(--primary-strong);
	}

.onboard__created[b-rsnj9f33m3] {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

@media (max-width: 575px) {
	.onboard__form-row[b-rsnj9f33m3] {
		grid-template-columns: 1fr;
	}
}
/* /Components/LiftProgressModal.razor.rz.scp.css */
/* One lift's record, in a dialog. The shell (.modal__scrim / .modal /
   .modal__head / .modal__close) is app.css's — only what's new to this dialog
   lives here. Scoped styles never reach a child component, so LineChart and
   LoadingSpinner keep their own looks. */

/* Wider than the stock dialog: a chart needs the room, and the session rows
   read badly once the sets label starts wrapping. */
.modal--lift[b-joc0uswp4h] {
	width: min(560px, 100%);
}

/* --- The verdict ---
   The one line that answers the question the dialog was opened to ask. Set in
   the display face rather than boxed up: the dialog already has enough panels,
   and this should read as a statement, not another tile. */

.lift-verdict[b-joc0uswp4h] {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	margin: 0 0 16px;
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-weight: 700;
	font-size: 1.02rem;
	line-height: 1.3;
	color: var(--ink);
	text-wrap: balance;
}

	/* ::deep, because the arrow is an <Icon> — a child component, which a scoped
	   rule never reaches on its own. */
	.lift-verdict[b-joc0uswp4h]  svg {
		flex: none;
		margin-top: 3px;
		/* Gains get the colour. A drop stays neutral — this sits in a coaching
		   conversation, where a quiet month isn't an error state. */
		color: var(--ink-3);
	}

	.lift-verdict--gain[b-joc0uswp4h]  svg {
		color: var(--ok);
	}

/* --- Stat tiles --- */

.lift-stats[b-joc0uswp4h] {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 14px;
}

.ministat[b-joc0uswp4h] {
	flex: 1 1 130px;
	background: var(--surface-sunken);
	border-radius: var(--r-ctl);
	padding: 10px 12px;
}

	.ministat > span:first-child[b-joc0uswp4h] {
		display: block;
		font-size: 0.66rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		font-weight: 700;
		color: var(--ink-3);
		margin-bottom: 2px;
	}

	.ministat strong[b-joc0uswp4h] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-weight: 800;
		font-size: 1.15rem;
		color: var(--ink);
		font-variant-numeric: tabular-nums;
	}

.ministat__unit[b-joc0uswp4h] {
	font-size: 0.74rem;
	font-weight: 700;
	color: var(--ink-2);
	margin-left: 3px;
}

/* "3 weeks ago" is words, not a figure — it shouldn't shout at the size a
   weight does, or it wraps in a tile this narrow. */
.ministat__when[b-joc0uswp4h] {
	font-size: 0.95rem !important;
}

/* --- Metric tabs ---
   Same look as the Progress page's; scoped styles don't cross files. */

.metric-tabs[b-joc0uswp4h] {
	display: inline-flex;
	gap: 4px;
	background: var(--surface-sunken);
	border-radius: var(--r-pill);
	padding: 4px;
	max-width: 100%;
	overflow-x: auto;
}

.metric-tabs__tab[b-joc0uswp4h] {
	border: none;
	border-radius: var(--r-pill);
	background: none;
	color: var(--ink-2);
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	padding: 6px 14px;
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.15s ease, color 0.15s ease;
}

	.metric-tabs__tab:hover[b-joc0uswp4h] {
		color: var(--ink);
	}

	.metric-tabs__tab:focus-visible[b-joc0uswp4h] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.metric-tabs__tab--on[b-joc0uswp4h] {
	background: var(--primary);
	color: #fff;
}

	.metric-tabs__tab--on:hover[b-joc0uswp4h] {
		color: #fff;
	}

.lift-note[b-joc0uswp4h] {
	font-size: 0.75rem;
	color: var(--ink-3);
	margin: 8px 0 0;
}

/* --- Recent sessions ---
   A list rather than the Progress page's table: at dialog width five numeric
   columns collapse into noise, and what's actually asked about in a chat is
   what was lifted and whether it moved. */

.lift-recent[b-joc0uswp4h] {
	margin-top: 18px;
	padding-top: 14px;
	border-top: 1px solid var(--hairline);
}

.lift-recent__label[b-joc0uswp4h] {
	font-size: 0.66rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
	margin: 0 0 8px;
}

.lift-recent__list[b-joc0uswp4h] {
	list-style: none;
	margin: 0;
	padding: 0;
}

.lift-session[b-joc0uswp4h] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 9px 0;
	border-bottom: 1px solid var(--surface-sunken);
}

	.lift-session:last-child[b-joc0uswp4h] {
		border-bottom: none;
		padding-bottom: 0;
	}

.lift-session__when[b-joc0uswp4h] {
	min-width: 0;
}

.lift-session__date[b-joc0uswp4h] {
	display: block;
	font-size: 0.84rem;
	font-weight: 700;
	color: var(--ink);
	white-space: nowrap;
}

.lift-session__sets[b-joc0uswp4h] {
	display: block;
	font-size: 0.76rem;
	color: var(--ink-2);
	font-variant-numeric: tabular-nums;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.lift-session__top[b-joc0uswp4h] {
	flex: none;
	display: flex;
	align-items: center;
	gap: 7px;
}

.lift-session__weight[b-joc0uswp4h] {
	font-size: 0.88rem;
	font-weight: 700;
	color: var(--ink);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* The change on the session before it — the subtraction a coach would do in
   their head reading a column of absolute numbers. */
.lift-session__delta[b-joc0uswp4h] {
	font-size: 0.74rem;
	font-weight: 700;
	color: var(--ink-3);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.lift-session__delta--up[b-joc0uswp4h] {
	color: var(--ok);
}

.pr-tag[b-joc0uswp4h] {
	font-size: 0.62rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	background: var(--accent);
	color: var(--accent-ink);
	border-radius: var(--r-pill);
	padding: 2px 7px;
	white-space: nowrap;
}

/* --- Foot --- */

.lift-foot[b-joc0uswp4h] {
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--hairline);
	display: flex;
	justify-content: flex-end;
}

.lift-foot__link[b-joc0uswp4h] {
	border: none;
	background: none;
	padding: 4px 2px;
	font: inherit;
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--primary-strong);
	cursor: pointer;
}

	.lift-foot__link:hover[b-joc0uswp4h] {
		text-decoration: underline;
	}

	.lift-foot__link:focus-visible[b-joc0uswp4h] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* The dialog takes focus on open so Escape lands here — but it's a container,
   not a control, and shouldn't take the control focus ring (and the 6px radius
   that comes with it) from app.css. */
.modal--lift:focus[b-joc0uswp4h],
.modal--lift:focus-visible[b-joc0uswp4h] {
	outline: none;
	box-shadow: 0 24px 60px -18px rgba(5, 36, 44, 0.5);
	border-radius: var(--r-card);
}

@media (max-width: 460px) {
	/* Two tiles per row rather than three squeezed ones. */
	.ministat[b-joc0uswp4h] {
		flex-basis: calc(50% - 5px);
	}

	.lift-session[b-joc0uswp4h] {
		align-items: flex-start;
	}

	.lift-session__top[b-joc0uswp4h] {
		flex-wrap: wrap;
		justify-content: flex-end;
	}
}
/* /Components/LineChart.razor.rz.scp.css */
.chart[b-3ln44l70rc] {
	width: 100%;
}

.chart svg[b-3ln44l70rc] {
	width: 100%;
	height: auto;
	font-family: var(--font-body);
}

.chart-empty[b-3ln44l70rc] {
	display: grid;
	place-items: center;
	min-height: 140px;
	border: 1px dashed var(--hairline);
	border-radius: var(--r-ctl);
	color: var(--ink-3);
	font-size: 0.85rem;
	padding: 16px;
	text-align: center;
}

.chart__grid[b-3ln44l70rc] {
	stroke: var(--viz-grid);
	stroke-width: 1;
}

.chart__tick[b-3ln44l70rc] {
	fill: var(--viz-axis);
	font-size: 10.5px;
	font-variant-numeric: tabular-nums;
}

.chart__target[b-3ln44l70rc] {
	stroke: var(--viz-target);
	stroke-width: 1.4;
	stroke-dasharray: 5 4;
}

.chart__target-label[b-3ln44l70rc] {
	fill: var(--viz-target);
	font-size: 10.5px;
	font-weight: 700;
}

.chart__line[b-3ln44l70rc] {
	fill: none;
	stroke: var(--viz-line);
	stroke-width: 2.4;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.chart__marker[b-3ln44l70rc] {
	fill: var(--surface-card);
	stroke: var(--viz-line);
	stroke-width: 2;
	transition: r 0.1s ease;
}

.chart__marker--latest[b-3ln44l70rc] {
	fill: var(--viz-line);
}

.chart__latest[b-3ln44l70rc] {
	fill: var(--ink);
	font-size: 12px;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
}

.chart__tip rect[b-3ln44l70rc] {
	fill: var(--ink);
	opacity: 0.94;
}

.chart__tip text[b-3ln44l70rc] {
	fill: #ffffff;
	font-size: 11px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.chart__tip .chart__tip-detail[b-3ln44l70rc] {
	fill: #9fd3da;
	font-size: 9.5px;
	font-weight: 600;
}
/* /Components/MonthCalendar.razor.rz.scp.css */
.cal[b-nob1lwuboh] {
	display: grid;
	gap: 12px;
}

.cal__header[b-nob1lwuboh] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.cal__title[b-nob1lwuboh] {
	font-size: 1.05rem;
}

.cal__nav[b-nob1lwuboh] {
	display: flex;
	align-items: center;
	gap: 6px;
}

.cal__today[b-nob1lwuboh] {
	padding: 7px 14px;
	font-size: 0.8rem;
}

.cal__weekdays[b-nob1lwuboh] {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 4px;
	font-size: 0.68rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--ink-3);
	text-align: center;
}

.cal__grid[b-nob1lwuboh] {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 4px;
}

.cal__day[b-nob1lwuboh] {
	appearance: none;
	font-family: inherit;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	min-height: 62px;
	padding: 6px 2px;
	background: var(--surface-card);
	border: 1px solid var(--viz-grid);
	border-radius: 10px;
	cursor: pointer;
	transition: border-color 0.12s ease, background-color 0.12s ease;
}

.cal__day:hover[b-nob1lwuboh] {
	border-color: var(--primary);
}

.cal__day--out[b-nob1lwuboh] {
	background: var(--surface-sunken);
	border-color: transparent;
}

.cal__day--out .cal__day-num[b-nob1lwuboh] {
	color: var(--ink-3);
}

.cal__day--today .cal__day-num[b-nob1lwuboh] {
	background: var(--accent);
	color: var(--accent-ink);
}

.cal__day--selected[b-nob1lwuboh] {
	background: var(--primary-soft);
	border-color: var(--primary);
	box-shadow: inset 0 0 0 1px var(--primary);
}

.cal__day-num[b-nob1lwuboh] {
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-2);
	width: 22px;
	height: 22px;
	display: grid;
	place-items: center;
	border-radius: 50%;
}

.cal__day-body[b-nob1lwuboh] {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 2px;
	min-height: 16px;
}

@media (max-width: 640px) {
	.cal__day[b-nob1lwuboh] {
		min-height: 48px;
	}
}
/* /Components/NotificationBell.razor.rz.scp.css */
/* The bell button. Rendered in the sidebar brand row on desktop and in the
   mobile top bar — only one is ever visible, so both can carry the same style. */

.bell[b-ylm6zptnpp] {
	position: relative;
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: var(--ink-2);
	cursor: pointer;
}

	.bell:hover[b-ylm6zptnpp],
	.bell--open[b-ylm6zptnpp] {
		background: var(--surface-sunken);
		color: var(--ink);
	}

	.bell:focus-visible[b-ylm6zptnpp] {
		outline: var(--focus-ring);
		outline-offset: 2px;
	}

/* Sits over the bell's top-right. Small enough that a two-character "9+" still
   fits without the pill growing into the icon. */
.bell__badge[b-ylm6zptnpp] {
	position: absolute;
	top: 1px;
	right: 0;
	min-width: 16px;
	height: 16px;
	padding: 0 4px;
	border-radius: var(--r-pill);
	background: var(--accent);
	color: var(--accent-ink);
	font-size: 0.62rem;
	font-weight: 800;
	line-height: 16px;
	text-align: center;
}
/* /Components/NotificationPanel.razor.rz.scp.css */
/* The dropdown behind the bell. Fixed rather than absolute: the sidebar it
   hangs off is an overflow-y: auto column and would clip an absolute child.
   Backgrounds use --surface-card — there is no --surface token, and a bare
   var(--surface) resolves to nothing, leaving a floating panel transparent. */

.notif-scrim[b-nvxg7jiuve] {
	position: fixed;
	inset: 0;
	z-index: 900;
}

.notif-panel[b-nvxg7jiuve] {
	position: fixed;
	top: 62px;
	left: 16px;
	width: min(340px, calc(100vw - 32px));
	max-height: min(70vh, 520px);
	overflow-y: auto;
	padding: 14px 16px 16px;
	border-radius: var(--r-card);
	border: 1px solid var(--hairline);
	background: var(--surface-card);
	box-shadow: 0 24px 60px -18px rgba(5, 36, 44, 0.5);
	z-index: 1000;
}

/* Under 900px the sidebar is off-canvas and the bell lives in the top bar, so
   the panel drops from there and spans the width instead. */
@media (max-width: 899px) {
	.notif-panel[b-nvxg7jiuve] {
		top: 58px;
		left: 12px;
		right: 12px;
		width: auto;
	}
}

.notif-panel__head[b-nvxg7jiuve] {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 10px;
}

.notif-panel__title[b-nvxg7jiuve] {
	margin: 0;
	font-size: 0.95rem;
}

.notif-panel__mark[b-nvxg7jiuve] {
	flex: none;
	padding: 0;
	border: none;
	background: none;
	color: var(--primary-strong);
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
}

	.notif-panel__mark:hover[b-nvxg7jiuve] {
		text-decoration: underline;
	}

.notif-list[b-nvxg7jiuve] {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.notif[b-nvxg7jiuve] {
	width: 100%;
	display: flex;
	align-items: flex-start;
	gap: 9px;
	padding: 9px 10px;
	border: none;
	border-radius: var(--r-ctl);
	background: transparent;
	text-align: left;
	cursor: pointer;
}

	.notif:hover[b-nvxg7jiuve] {
		background: var(--surface-sunken);
	}

/* The dot only earns its space on an unread row; read rows keep the indent so
   the titles still line up. */
.notif__dot[b-nvxg7jiuve] {
	flex: none;
	width: 7px;
	height: 7px;
	margin-top: 6px;
	border-radius: 50%;
	background: transparent;
}

.notif--unread .notif__dot[b-nvxg7jiuve] {
	background: var(--accent);
}

.notif__text[b-nvxg7jiuve] {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.notif__title[b-nvxg7jiuve] {
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--ink-2);
}

.notif--unread .notif__title[b-nvxg7jiuve] {
	font-weight: 800;
	color: var(--ink);
}

.notif__body[b-nvxg7jiuve] {
	font-size: 0.78rem;
	color: var(--ink-3);
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.notif__time[b-nvxg7jiuve] {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--ink-3);
}
/* /Components/NumberField.razor.rz.scp.css */
.number-wrap[b-vlq0ob0v16] {
	position: relative;
}

.number-suffix[b-vlq0ob0v16] {
	position: absolute;
	right: 14px;
	top: 50%;
	transform: translateY(-50%);
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--ink-3);
	pointer-events: none;
}
/* /Components/SideBar.razor.rz.scp.css */
.sidebar[b-u0lqxj66vc] {
	display: flex;
	flex-direction: column;
	height: 100%;
	padding: 20px 14px;
	gap: 18px;
}

/* The logo stays optically centred in the column; the bell is taken out of the
   flow so it can't push it off-centre on the way. */
.sidebar__brand[b-u0lqxj66vc] {
	position: relative;
	display: grid;
	place-items: center;
	padding: 6px 10px 2px;
}

.sidebar__logo[b-u0lqxj66vc] {
	width: 180px;
	height: auto;
	/* The gym's own logo may be square or taller than it is wide, where
	   width alone would let the brand block push the menu down the panel.
	   Clears the stock logo's 141px, so the built-in skin is unaffected. */
	max-height: 150px;
	object-fit: contain;
}

.sidebar__bell[b-u0lqxj66vc] {
	position: absolute;
	top: 0;
	right: 0;
}

.sidebar__user[b-u0lqxj66vc] {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-pill);
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--ink-2);
	justify-content: center;
}

.sidebar__user-dot[b-u0lqxj66vc] {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--ok);
	flex: none;
}

.sidebar__menu[b-u0lqxj66vc] {
	list-style: none;
	padding: 0;
	display: grid;
	gap: 4px;
}

.sidebar__item[b-u0lqxj66vc] {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 14px;
	border-radius: var(--r-ctl);
	color: var(--ink-2);
	font-weight: 600;
	font-size: 0.92rem;
	text-decoration: none;
	transition: background-color 0.12s ease, color 0.12s ease;
}

.sidebar__item:hover[b-u0lqxj66vc] {
	background: var(--surface-sunken);
	color: var(--ink);
}

.sidebar__item--active[b-u0lqxj66vc] {
	background: var(--primary-soft);
	color: var(--primary-strong);
}

/* The Admin row is a button, not a link — it opens the group rather than going
   anywhere, so the UA's button chrome has to come off first. */
.sidebar__item--group[b-u0lqxj66vc] {
	width: 100%;
	background: none;
	border: 0;
	font: inherit;
	font-size: 0.92rem;
	font-weight: 600;
	text-align: left;
	cursor: pointer;
}

/* Takes the free space so the badge and chevron sit at the end together. */
.sidebar__label[b-u0lqxj66vc] {
	flex: 1;
}

.sidebar__chevron[b-u0lqxj66vc] {
	display: inline-flex;
	color: var(--ink-3);
	transition: transform 0.15s ease;
}

.sidebar__chevron--open[b-u0lqxj66vc] {
	transform: rotate(180deg);
}

/* Indented past the parent's icon and hung off a rail, so the two items read as
   belonging to Admin rather than as more of the menu. */
.sidebar__submenu[b-u0lqxj66vc] {
	list-style: none;
	margin: 2px 0 2px 27px;
	padding: 0 0 0 10px;
	display: grid;
	gap: 2px;
	border-left: 1px solid var(--hairline);
}

.sidebar__subitem[b-u0lqxj66vc] {
	padding: 8px 12px;
	gap: 10px;
	font-size: 0.86rem;
}

/* The accent marker moves onto the rail — at the row's own edge it would sit in
   the gap and read as a second line. */
.sidebar__subitem.sidebar__item--active[b-u0lqxj66vc]::before {
	left: -11px;
}

/* Unread replies, pushed to the end of the "Ask the Coaches" row. Plain HTML in
   SideBar.razor on purpose — a class on the <Icon> beside it would never pick
   up these scoped styles. */
.sidebar__badge[b-u0lqxj66vc] {
	margin-left: auto;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: var(--r-pill);
	background: var(--accent);
	color: var(--accent-ink);
	font-size: 0.68rem;
	font-weight: 800;
	line-height: 18px;
	text-align: center;
}

/* The accent marker — the one place the highlighter yellow lives in chrome */
.sidebar__item--active[b-u0lqxj66vc]::before {
	content: "";
	position: absolute;
	left: 0;
	top: 22%;
	bottom: 22%;
	width: 3.5px;
	border-radius: var(--r-pill);
	background: var(--accent);
}

.sidebar__footer[b-u0lqxj66vc] {
	margin-top: auto;
	display: grid;
	gap: 10px;
	border-top: 1px solid var(--hairline);
	padding-top: 14px;
}

.sidebar__credit[b-u0lqxj66vc] {
	text-align: center;
	font-size: 0.72rem;
	color: var(--ink-3);
}

.sidebar__credit strong[b-u0lqxj66vc] {
	color: var(--ink-2);
	letter-spacing: 0.03em;
}
/* /Layout/MainLayout.razor.rz.scp.css */
.shell[b-d4ofw1vf5x] {
	display: grid;
	grid-template-columns: 252px minmax(0, 1fr);
	height: 100%;
}

.shell__topbar[b-d4ofw1vf5x] {
	display: none;
}

.shell__sidebar[b-d4ofw1vf5x] {
	background: var(--surface-card);
	border-right: 1px solid var(--hairline);
	overflow-y: auto;
}

.shell__main[b-d4ofw1vf5x] {
	overflow-y: auto;
	min-width: 0;
}

.shell__scrim[b-d4ofw1vf5x] {
	display: none;
}

@media (max-width: 899px) {
	.shell[b-d4ofw1vf5x] {
		grid-template-columns: minmax(0, 1fr);
		grid-template-rows: auto minmax(0, 1fr);
	}

	.shell__topbar[b-d4ofw1vf5x] {
		display: flex;
		align-items: center;
		gap: 12px;
		padding: 10px 14px;
		background: var(--surface-card);
		border-bottom: 1px solid var(--hairline);
	}

	/* The gym supplies this logo, so it can be any shape — a wide wordmark is
	   the usual one for a banner. A replaced element's automatic minimum size
	   is its intrinsic width, so without min-width a wordmark refuses to
	   shrink and shoves the menu button and the bell off the bar; object-fit
	   then keeps it whole rather than squashing it into what is left. */
	.shell__topbar-logo[b-d4ofw1vf5x] {
		height: 34px;
		width: auto;
		min-width: 0;
		object-fit: contain;
	}

	/* The controls hold their size — the logo is what gives way. */
	.shell__topbar .btn--icon[b-d4ofw1vf5x],
	.shell__topbar-end[b-d4ofw1vf5x] {
		flex-shrink: 0;
	}

	/* Pushes the bell to the far end, opposite the menu button. */
	.shell__topbar-end[b-d4ofw1vf5x] {
		margin-left: auto;
	}

	.shell__sidebar[b-d4ofw1vf5x] {
		position: fixed;
		inset: 0 auto 0 0;
		width: min(280px, 82vw);
		z-index: 60;
		transform: translateX(-100%);
		transition: transform 0.22s ease;
	}

	.shell__sidebar--open[b-d4ofw1vf5x] {
		transform: none;
		box-shadow: 0 0 40px rgba(11, 43, 48, 0.3);
	}

	.shell__scrim[b-d4ofw1vf5x] {
		display: block;
		position: fixed;
		inset: 0;
		z-index: 50;
		background: rgba(11, 43, 48, 0.45);
	}
}
/* /Pages/Admin.razor.rz.scp.css */
.admin-hero__description[b-3dgt0w5o5v] {
	color: var(--hero-ink-2);
	margin-top: 12px;
	max-width: 480px;
}

.admin-card[b-3dgt0w5o5v] {
	max-width: 560px;
}

.admin-form[b-3dgt0w5o5v] {
	display: grid;
	gap: 14px;
	justify-items: start;
}

	.admin-form[b-3dgt0w5o5v]  .field {
		width: 100%;
	}

.admin-invite__hint[b-3dgt0w5o5v] {
	color: var(--ink-2);
	font-size: 0.9rem;
	max-width: 440px;
}

.admin-invite__result[b-3dgt0w5o5v] {
	display: flex;
	gap: 8px;
	width: 100%;
}

	.admin-invite__result input[b-3dgt0w5o5v] {
		flex: 1;
		min-width: 0;
	}

.admin-invite__expiry[b-3dgt0w5o5v] {
	color: var(--ink-3);
	font-size: 0.8rem;
}

.admin-colour[b-3dgt0w5o5v] {
	display: flex;
	align-items: center;
	gap: 10px;
}

.admin-colour__swatch[b-3dgt0w5o5v] {
	width: 44px;
	height: 32px;
	padding: 2px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	cursor: pointer;
}

.admin-colour__value[b-3dgt0w5o5v] {
	color: var(--ink-2);
	font-size: 0.9rem;
	min-width: 90px;
}

.admin-logo[b-3dgt0w5o5v] {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
}

/* A window the size of the chrome the logo lands in, so what the preview
   shows is what the gym gets rather than an arbitrary thumbnail. Flex, not
   grid: a percentage max-height on a grid item resolves against the auto-sized
   row — which is the image's own height — so it never constrains anything. */
.admin-logo__preview[b-3dgt0w5o5v] {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 140px;
	height: 56px;
	padding: 6px;
	overflow: hidden;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
}

	/* The banner is a short, wide strip — the same logo has far less height. */
	.admin-logo__preview--banner[b-3dgt0w5o5v] {
		height: 40px;
	}

	/* Whatever the gym uploads, it is shown whole and inside the window —
	   a tall mark is capped by the height, a wordmark by the width. */
	.admin-logo__preview img[b-3dgt0w5o5v] {
		max-width: 100%;
		max-height: 100%;
		object-fit: contain;
	}

.admin-settings__hint[b-3dgt0w5o5v] {
	color: var(--ink-3);
	font-size: 0.8rem;
	margin-top: 4px;
}

.admin-settings__error[b-3dgt0w5o5v] {
	color: var(--danger);
	font-size: 0.9rem;
}

.admin-settings__saved[b-3dgt0w5o5v] {
	color: var(--ok);
	font-size: 0.9rem;
}
/* /Pages/AdminMember.razor.rz.scp.css */
/* Admin · member review.
   Two rules shape this page on a phone: identity data is a contact sheet (label
   and value, free to wrap) while measurements are tiles (short, gridded), and
   every number is tabular so dates and loads line up down the screen. */

/* --- Hero --- */

.member-hero[b-239trooxt5] {
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	align-items: center;
}

.member-hero__text[b-239trooxt5] {
	flex: 1 1 300px;
	min-width: 0;
}

.member-hero__back[b-239trooxt5] {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-bottom: 10px;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--hero-ink-2);
	transition: color 0.15s ease;
}

	.member-hero__back:hover[b-239trooxt5] {
		color: var(--hero-ink);
	}

.member-hero__back-arrow[b-239trooxt5] {
	font-size: 0.95rem;
	line-height: 1;
}

.member-hero__description[b-239trooxt5] {
	color: var(--hero-ink-2);
	margin-top: 10px;
	max-width: 46ch;
}

.member-hero__metrics[b-239trooxt5] {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.hero-metric[b-239trooxt5] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 14px 20px;
	min-width: 118px;
}

	.hero-metric span[b-239trooxt5] {
		display: block;
		font-size: 0.72rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--hero-ink-2);
		margin-bottom: 4px;
	}

	.hero-metric strong[b-239trooxt5] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.5rem;
		font-weight: 800;
		color: var(--glow);
	}

.member-chips[b-239trooxt5] {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}

/* --- Contact sheet ---
   The old stat tiles couldn't hold an email at any phone width. Rows give the
   value the full column, and email and phone become things you can act on. */

.contact-sheet[b-239trooxt5] {
	display: grid;
}

.contact-sheet__row[b-239trooxt5] {
	display: grid;
	grid-template-columns: 128px minmax(0, 1fr);
	gap: 2px 16px;
	align-items: baseline;
	padding: 12px 0;
	border-top: 1px solid var(--hairline);
}

	.contact-sheet__row:first-child[b-239trooxt5] {
		border-top: none;
		padding-top: 0;
	}

	.contact-sheet__row:last-child[b-239trooxt5] {
		padding-bottom: 0;
	}

.contact-sheet dt[b-239trooxt5] {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ink-3);
}

.contact-sheet dd[b-239trooxt5] {
	min-width: 0;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	overflow-wrap: anywhere;
}

	.contact-sheet dd a[b-239trooxt5] {
		color: var(--primary-strong);
		text-decoration: none;
		border-bottom: 1px solid var(--primary-soft);
	}

		.contact-sheet dd a:hover[b-239trooxt5] {
			border-bottom-color: var(--primary);
		}

.contact-sheet__empty[b-239trooxt5] {
	color: var(--ink-3);
	font-weight: 500;
}

/* --- The training log --- */

.day-list[b-239trooxt5] {
	display: grid;
	gap: 8px;
}

.day[b-239trooxt5] {
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	overflow: hidden;
}

.day--open[b-239trooxt5] {
	border-color: var(--primary);
}

.day__head[b-239trooxt5] {
	width: 100%;
	display: grid;
	grid-template-columns: 46px minmax(0, 1fr) auto;
	gap: 12px;
	align-items: center;
	padding: 12px 14px;
	border: none;
	background: none;
	font: inherit;
	text-align: left;
	color: inherit;
	cursor: pointer;
}

	.day__head:hover[b-239trooxt5] {
		background: var(--surface-sunken);
	}

.day__date[b-239trooxt5] {
	display: grid;
	justify-items: center;
	gap: 1px;
	padding: 6px 0;
	border-radius: 8px;
	background: var(--primary-soft);
	color: var(--primary-strong);
}

.day--checkin .day__date[b-239trooxt5] {
	background: var(--surface-sunken);
	color: var(--ink-2);
}

	.day__date strong[b-239trooxt5] {
		font-size: 0.72rem;
		font-weight: 800;
		text-transform: uppercase;
		letter-spacing: 0.06em;
	}

	.day__date span[b-239trooxt5] {
		font-size: 0.68rem;
		font-variant-numeric: tabular-nums;
	}

.day__body[b-239trooxt5] {
	display: grid;
	gap: 2px;
	min-width: 0;
}

.day__title[b-239trooxt5] {
	display: flex;
	align-items: center;
	gap: 6px;
	font-weight: 700;
	font-size: 0.92rem;
	min-width: 0;
}

	.day__title > span[b-239trooxt5] {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.day__title[b-239trooxt5]  svg {
		flex: none;
		color: var(--ink-3);
	}

.day__tag[b-239trooxt5] {
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-2);
}

.day__summary[b-239trooxt5] {
	font-size: 0.8rem;
	color: var(--ink-3);
	font-variant-numeric: tabular-nums;
}

.day__chevron[b-239trooxt5] {
	display: grid;
	place-items: center;
	color: var(--ink-3);
	transition: transform 0.18s ease;
}

.day__chevron--open[b-239trooxt5] {
	transform: rotate(90deg);
}

.day__detail[b-239trooxt5] {
	display: grid;
	gap: 14px;
	padding: 0 14px 14px;
	border-top: 1px solid var(--hairline);
	padding-top: 14px;
}

/* Exercises within a day */

.lift-list[b-239trooxt5] {
	display: grid;
	gap: 10px;
}

.lift[b-239trooxt5] {
	display: grid;
	gap: 5px;
}

.lift__name[b-239trooxt5] {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	font-weight: 700;
	font-size: 0.9rem;
}

.lift__flag[b-239trooxt5] {
	font-size: 0.66rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--primary-strong);
}

.lift__sets[b-239trooxt5] {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
}

.setchip[b-239trooxt5] {
	padding: 3px 9px;
	border-radius: var(--r-pill);
	background: var(--surface-sunken);
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-2);
	font-variant-numeric: tabular-nums;
}

.setchip--unit[b-239trooxt5] {
	background: none;
	padding-inline: 0;
	color: var(--ink-3);
	font-weight: 600;
}

.lift__empty[b-239trooxt5],
.goal-review__pending[b-239trooxt5] {
	font-size: 0.8rem;
	color: var(--ink-3);
}

.lift__note[b-239trooxt5] {
	font-size: 0.85rem;
	color: var(--ink-2);
	padding-left: 10px;
	border-left: 2px solid var(--hairline);
}

.day__note p:last-child[b-239trooxt5] {
	font-size: 0.88rem;
	color: var(--ink-2);
}

.day__note-label[b-239trooxt5] {
	font-size: 0.7rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--ink-3);
	margin-bottom: 5px;
}

.checkin-list[b-239trooxt5] {
	display: grid;
	gap: 6px;
}

.checkin[b-239trooxt5] {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 4px 10px;
	padding: 8px 10px;
	border-radius: 8px;
	background: var(--surface-sunken);
}

.checkin__goal[b-239trooxt5] {
	font-size: 0.85rem;
	font-weight: 700;
	min-width: 0;
}

.checkin__value[b-239trooxt5] {
	font-size: 0.85rem;
	font-weight: 800;
	color: var(--primary-strong);
	font-variant-numeric: tabular-nums;
	margin-left: auto;
}

.checkin__note[b-239trooxt5] {
	flex-basis: 100%;
	font-size: 0.82rem;
	color: var(--ink-2);
}

/* --- Goal review --- */

.goal-review[b-239trooxt5] {
	display: grid;
	gap: 22px;
}

.goal-review__card[b-239trooxt5] {
	display: grid;
	gap: 12px;
	padding-top: 20px;
	border-top: 1px solid var(--hairline);
}

	.goal-review__card:first-child[b-239trooxt5] {
		padding-top: 0;
		border-top: none;
	}

.goal-review__head[b-239trooxt5] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
}

	.goal-review__head h3[b-239trooxt5] {
		font-size: 1rem;
		min-width: 0;
	}

.goal-review__stats[b-239trooxt5] {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 8px;
}

.goal-review__stat[b-239trooxt5] {
	padding: 10px 12px;
	border-radius: var(--r-ctl);
	background: var(--surface-sunken);
}

	.goal-review__stat span[b-239trooxt5] {
		display: block;
		font-size: 0.66rem;
		font-weight: 700;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--ink-3);
		margin-bottom: 2px;
	}

	.goal-review__stat strong[b-239trooxt5] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.2rem;
		font-weight: 800;
		font-variant-numeric: tabular-nums;
	}

.goal-review__bar[b-239trooxt5] {
	display: flex;
	align-items: center;
	gap: 12px;
}

	.goal-review__bar .progress-track[b-239trooxt5] {
		flex: 1;
	}

	.goal-review__bar span[b-239trooxt5] {
		font-size: 0.78rem;
		font-weight: 700;
		color: var(--ink-2);
		white-space: nowrap;
	}

.goal-review__done[b-239trooxt5] {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 0.88rem;
	font-weight: 700;
	color: var(--ok);
}

.goal-review__caption[b-239trooxt5] {
	font-size: 0.75rem;
	color: var(--ink-3);
}

.goal-review__archived[b-239trooxt5] {
	margin-top: 24px;
	padding-top: 18px;
	border-top: 1px solid var(--hairline);
}

/* --- Lifts --- */

.lift-toolbar[b-239trooxt5] {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 18px;
}

	.lift-toolbar > .field[b-239trooxt5] {
		flex: 1 1 220px;
		min-width: 0;
	}

.metric-tabs[b-239trooxt5] {
	display: inline-flex;
	gap: 4px;
	background: var(--surface-sunken);
	border-radius: var(--r-pill);
	padding: 4px;
}

.metric-tabs__tab[b-239trooxt5] {
	border: none;
	border-radius: var(--r-pill);
	background: none;
	color: var(--ink-2);
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	padding: 6px 14px;
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.15s ease, color 0.15s ease;
}

	.metric-tabs__tab:hover[b-239trooxt5] {
		color: var(--ink);
	}

.metric-tabs__tab--on[b-239trooxt5],
.metric-tabs__tab--on:hover[b-239trooxt5] {
	background: var(--primary);
	color: #fff;
}

.lift-stats[b-239trooxt5] {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 10px;
	margin-bottom: 18px;
}

.lift-stat[b-239trooxt5] {
	padding: 12px 14px;
	border-radius: var(--r-ctl);
	background: var(--surface-sunken);
}

	.lift-stat > span:first-child[b-239trooxt5] {
		display: block;
		font-size: 0.66rem;
		font-weight: 700;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--ink-3);
		margin-bottom: 3px;
	}

	.lift-stat strong[b-239trooxt5] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.3rem;
		font-weight: 800;
		font-variant-numeric: tabular-nums;
	}

.lift-stat__unit[b-239trooxt5] {
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-2);
	margin-left: 3px;
}

/* --- Phones --- */

@media (max-width: 575px) {
	.member-hero[b-239trooxt5] {
		gap: 14px;
	}

	.member-hero__description[b-239trooxt5] {
		display: none;
	}

	.member-hero__metrics[b-239trooxt5] {
		width: 100%;
		gap: 8px;
	}

	.hero-metric[b-239trooxt5] {
		flex: 1 1 0;
		min-width: 0;
		padding: 10px 12px;
	}

		.hero-metric span[b-239trooxt5] {
			font-size: 0.6rem;
			letter-spacing: 0.04em;
		}

		.hero-metric strong[b-239trooxt5] {
			font-size: 1.1rem;
		}

	/* The label stops competing for width — a long email gets the whole row. */
	.contact-sheet__row[b-239trooxt5] {
		grid-template-columns: minmax(0, 1fr);
		padding: 10px 0;
	}

	.day__head[b-239trooxt5] {
		gap: 10px;
		padding: 10px 12px;
	}

	.goal-review__stat strong[b-239trooxt5] {
		font-size: 1.05rem;
	}

	.lift-toolbar[b-239trooxt5] {
		gap: 10px;
	}

		.lift-toolbar > .field[b-239trooxt5] {
			flex-basis: 100%;
		}

	.metric-tabs[b-239trooxt5] {
		width: 100%;
		justify-content: space-between;
	}

	.metric-tabs__tab[b-239trooxt5] {
		padding: 6px 10px;
		font-size: 0.74rem;
	}
}
/* /Pages/AskCoaches.razor.rz.scp.css */
/* Matches the description line the other hero bands use. */
.coaches-hero__description[b-bc8f5jt4go] {
	margin: 8px 0 0;
	max-width: 52ch;
	color: var(--hero-ink);
	opacity: 0.85;
	font-size: 0.95rem;
	line-height: 1.5;
}

/* --- The coach's inbox ---
   Two panes that own their height rather than growing with their content: the
   roster scrolls on the left, the conversation scrolls on the right, and
   neither pushes the other down the page. */

.inbox[b-bc8f5jt4go] {
	display: grid;
	grid-template-columns: minmax(0, 330px) minmax(0, 1fr);
	gap: clamp(12px, 1.6vw, 20px);
	height: clamp(460px, 70vh, 780px);
}

.inbox__list[b-bc8f5jt4go],
.inbox__thread[b-bc8f5jt4go] {
	display: flex;
	flex-direction: column;
	/* Both are flex columns holding a scroller — without this they refuse to
	   shrink below their content and the scrollbar never appears. */
	min-height: 0;
	background: var(--surface-card);
	border: 1px solid var(--hairline);
	border-radius: var(--r-card);
	box-shadow: var(--shadow-card);
	overflow: hidden;
}

/* --- Left: the roster --- */

.inbox__list-head[b-bc8f5jt4go] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 16px 16px 0;
}

.inbox__search[b-bc8f5jt4go] {
	flex: none;
	padding: 0 16px;
	margin-top: 12px;
}

	/* The shared .exercise-search rule pins its icon to the search box's own
	   left edge; here the box is inset by the pane's padding. */
	.inbox__search[b-bc8f5jt4go]  svg {
		left: 28px;
	}

.inbox__rows[b-bc8f5jt4go] {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	padding: 10px 10px 12px;
}

.inbox__empty[b-bc8f5jt4go] {
	padding: 22px 10px;
	color: var(--ink-3);
	text-align: center;
	font-size: 0.85rem;
}

.inbox-row[b-bc8f5jt4go] {
	display: flex;
	align-items: center;
	gap: 11px;
	width: 100%;
	padding: 10px;
	border: none;
	border-radius: var(--r-ctl);
	background: none;
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: background 0.15s ease;
}

	.inbox-row:hover[b-bc8f5jt4go] {
		background: var(--surface-sunken);
	}

.inbox-row--on[b-bc8f5jt4go] {
	background: var(--primary-soft);
}

	.inbox-row--on:hover[b-bc8f5jt4go] {
		background: var(--primary-soft);
	}

.inbox-row__avatar[b-bc8f5jt4go] {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--surface-sunken);
	color: var(--ink-2);
	font-size: 0.8rem;
	font-weight: 800;
	letter-spacing: 0.02em;
}

.inbox-row--on .inbox-row__avatar[b-bc8f5jt4go],
.inbox-row--unread .inbox-row__avatar[b-bc8f5jt4go] {
	background: var(--primary);
	color: #fff;
}

/* min-width:0 all the way down, or the name and preview refuse to ellipsis. */
.inbox-row__body[b-bc8f5jt4go] {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.inbox-row__top[b-bc8f5jt4go] {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 8px;
	min-width: 0;
}

.inbox-row__name[b-bc8f5jt4go] {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 0.88rem;
	font-weight: 700;
	color: var(--ink);
}

.inbox-row__when[b-bc8f5jt4go] {
	flex: none;
	font-size: 0.68rem;
	font-weight: 700;
	color: var(--ink-3);
}

.inbox-row__preview[b-bc8f5jt4go] {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 0.79rem;
	color: var(--ink-3);
}

/* Unread reads as weight, not colour — the dot carries the alarm. */
.inbox-row--unread .inbox-row__preview[b-bc8f5jt4go] {
	color: var(--ink-2);
	font-weight: 700;
}

.inbox-row--unread .inbox-row__when[b-bc8f5jt4go] {
	color: var(--primary-strong);
}

.inbox-row__dot[b-bc8f5jt4go] {
	flex: none;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--accent);
}

/* --- Right: the conversation --- */

.inbox__thread-head[b-bc8f5jt4go] {
	flex: none;
	display: flex;
	align-items: center;
	gap: 11px;
	padding: 12px 16px;
	border-bottom: 1px solid var(--hairline);
}

.inbox__thread-avatar[b-bc8f5jt4go] {
	width: 36px;
	height: 36px;
	background: var(--primary-soft);
	color: var(--primary-strong);
}

.inbox__thread-who[b-bc8f5jt4go] {
	flex: 1 1 auto;
	min-width: 0;
}

.inbox__thread-name[b-bc8f5jt4go] {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 0.95rem;
	font-weight: 800;
	color: var(--ink);
}

.inbox__thread-sub[b-bc8f5jt4go] {
	font-size: 0.72rem;
	color: var(--ink-3);
}

.inbox__progress[b-bc8f5jt4go] {
	flex: none;
	padding: 6px 12px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-pill);
	color: var(--primary-strong);
	font-size: 0.76rem;
	font-weight: 800;
	text-decoration: none;
	white-space: nowrap;
}

	.inbox__progress:hover[b-bc8f5jt4go] {
		background: var(--primary-soft);
	}

/* The conversation itself is padded here rather than by the panel, so the
   header can run edge to edge above it. */
.inbox__thread[b-bc8f5jt4go]  .chat {
	padding: 16px;
}

.inbox__none[b-bc8f5jt4go] {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 30px;
	color: var(--ink-3);
	text-align: center;
	font-size: 0.9rem;
}

/* Phones reach the list by leaving the thread, so the button is theirs alone. */
.inbox__back[b-bc8f5jt4go] {
	display: none;
}

/* --- Phones: one pane at a time --- */

@media (max-width: 899px) {
	/* A messaging screen wants the height more than it wants a hero band. */
	.inbox-hero[b-bc8f5jt4go] {
		display: none;
	}

	.page--inbox[b-bc8f5jt4go] {
		padding: 14px;
	}

	.inbox[b-bc8f5jt4go] {
		grid-template-columns: minmax(0, 1fr);
		/* The shell's top bar (≈56px) plus this page's padding — everything
		   left over belongs to the pane. */
		height: calc(100dvh - 86px);
	}

	.inbox__thread[b-bc8f5jt4go] {
		display: none;
	}

	/* Opening a member swaps the panes over. */
	.inbox--open .inbox__list[b-bc8f5jt4go] {
		display: none;
	}

	.inbox--open .inbox__thread[b-bc8f5jt4go] {
		display: flex;
	}

	.inbox__back[b-bc8f5jt4go] {
		flex: none;
		display: inline-flex;
		align-items: center;
		gap: 2px;
		margin-left: -6px;
		padding: 4px 6px 4px 2px;
		border: none;
		background: none;
		color: var(--primary-strong);
		font: inherit;
		font-size: 0.78rem;
		font-weight: 800;
		cursor: pointer;
	}

	/* The header has a back button and a progress link to fit beside the name,
	   so the avatar and the standing note both give up their room. */
	.inbox__thread-avatar[b-bc8f5jt4go],
	.inbox__thread-sub[b-bc8f5jt4go] {
		display: none;
	}

	.inbox__thread-head[b-bc8f5jt4go] {
		padding: 10px 12px;
	}

	.inbox__thread[b-bc8f5jt4go]  .chat {
		padding: 12px;
	}
}
/* /Pages/Display.razor.rz.scp.css */
/* The TV page — everything sits on a full-bleed dark canvas. */
.display-page[b-o0qnpi1obs] {
	position: fixed;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #05242c;
	color: #eafbfd;
}

.display-video[b-o0qnpi1obs] {
	width: 100%;
	height: 100%;
	object-fit: contain;
	background: #000;
}

.display-note[b-o0qnpi1obs] {
	position: absolute;
	right: 18px;
	bottom: 14px;
	font-size: 0.85rem;
	color: rgba(234, 251, 253, 0.6);
}

.display-message[b-o0qnpi1obs] {
	display: grid;
	justify-items: center;
	gap: 18px;
	max-width: 420px;
	padding: 32px;
	text-align: center;
}

.display-message h1[b-o0qnpi1obs] {
	font-size: 1.6rem;
	color: #eafbfd;
}

.display-message p[b-o0qnpi1obs] { color: #9fd3da; }

.display-logo[b-o0qnpi1obs] {
	max-width: 180px;
	max-height: 120px;
	object-fit: contain;
}

.display-code[b-o0qnpi1obs] {
	width: 180px;
	padding: 14px;
	font-size: 2rem;
	text-align: center;
	letter-spacing: 0.4em;
	border: 1px solid rgba(234, 251, 253, 0.3);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.06);
	color: #eafbfd;
}

.display-code:focus[b-o0qnpi1obs] { outline: none; border-color: rgba(234, 251, 253, 0.7); }

.display-error[b-o0qnpi1obs] { color: #ff9d9d; }

.display-screens[b-o0qnpi1obs] { display: flex; gap: 14px; }

.display-screen-btn[b-o0qnpi1obs] {
	width: 72px;
	height: 72px;
	font-size: 1.8rem;
	font-weight: 700;
	border: 1px solid rgba(234, 251, 253, 0.3);
	border-radius: 16px;
	background: rgba(255, 255, 255, 0.06);
	color: #eafbfd;
	cursor: pointer;
}

.display-screen-btn:hover[b-o0qnpi1obs] { border-color: rgba(234, 251, 253, 0.7); background: rgba(255, 255, 255, 0.12); }
/* /Pages/Goals.razor.rz.scp.css */
.goals-hero[b-4xeg48ogud] {
	display: flex;
	flex-wrap: wrap;
	gap: 32px;
	align-items: center;
}

.goals-hero__text[b-4xeg48ogud] {
	flex: 1 1 320px;
}

.goals-hero__description[b-4xeg48ogud] {
	color: var(--hero-ink-2);
	margin-top: 12px;
	max-width: 480px;
}

.goals-hero__metrics[b-4xeg48ogud] {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.hero-metric[b-4xeg48ogud] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 14px 20px;
	min-width: 120px;
}

	.hero-metric span[b-4xeg48ogud] {
		display: block;
		font-size: 0.72rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--hero-ink-2);
		margin-bottom: 4px;
	}

	.hero-metric strong[b-4xeg48ogud] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.6rem;
		font-weight: 800;
		color: var(--glow);
	}

.goal-actions[b-4xeg48ogud] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
}

	.goal-actions h2[b-4xeg48ogud] {
		margin-bottom: 4px;
	}

	.goal-actions p[b-4xeg48ogud] {
		color: var(--ink-2);
		font-size: 0.92rem;
	}

.goal-actions__buttons[b-4xeg48ogud] {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.goal-grid[b-4xeg48ogud] {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr));
	gap: 24px;
	align-items: start;
}

.goal-card h3[b-4xeg48ogud] {
	font-size: 1.05rem;
}

.goal-card__summary[b-4xeg48ogud] {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
	gap: 10px;
	margin-bottom: 16px;
}

.goal-stat[b-4xeg48ogud] {
	background: var(--surface-sunken);
	border-radius: var(--r-ctl);
	padding: 10px 12px;
}

	.goal-stat span[b-4xeg48ogud] {
		display: block;
		font-size: 0.7rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		font-weight: 700;
		color: var(--ink-3);
		margin-bottom: 2px;
	}

	.goal-stat strong[b-4xeg48ogud] {
		font-size: 1rem;
		color: var(--ink);
	}

.goal-card__progress[b-4xeg48ogud] {
	display: grid;
	gap: 6px;
	margin-bottom: 16px;
}

	.goal-card__progress span[b-4xeg48ogud] {
		font-size: 0.8rem;
		font-weight: 600;
		color: var(--ink-2);
	}

@media (max-width: 575px) {
	.goals-hero[b-4xeg48ogud] {
		gap: 14px;
	}

	/* Flavor copy goes; the metric tiles squeeze into one slim row. */
	.goals-hero__description[b-4xeg48ogud] {
		display: none;
	}

	.goals-hero__metrics[b-4xeg48ogud] {
		width: 100%;
		gap: 8px;
	}

	.hero-metric[b-4xeg48ogud] {
		flex: 1 1 0;
		min-width: 0;
		padding: 10px 12px;
	}

		.hero-metric span[b-4xeg48ogud] {
			font-size: 0.62rem;
		}

		.hero-metric strong[b-4xeg48ogud] {
			font-size: 1.15rem;
		}
}
/* /Pages/GoalsEdit.razor.rz.scp.css */
.edit-hero[b-8fmn3x3hji] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.edit-hero__description[b-8fmn3x3hji] {
	color: var(--hero-ink-2);
	margin-top: 12px;
	max-width: 480px;
}

.edit-list[b-8fmn3x3hji] {
	display: grid;
	gap: 24px;
}

.edit-card__body[b-8fmn3x3hji] {
	display: grid;
	grid-template-columns: minmax(280px, 1fr) minmax(0, 1.2fr);
	gap: 24px;
	align-items: start;
}

.edit-form[b-8fmn3x3hji] {
	display: grid;
	gap: 14px;
}

.edit-form__row[b-8fmn3x3hji] {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

.edit-form__hint[b-8fmn3x3hji] {
	font-size: 0.82rem;
	color: var(--ink-3);
	margin-top: -6px;
}

.edit-card__actions[b-8fmn3x3hji] {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}

.goal-action[b-8fmn3x3hji] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	color: var(--ink-2);
	font: inherit;
	font-weight: 700;
	font-size: 0.8rem;
	padding: 8px 12px;
	cursor: pointer;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}

	.goal-action:hover[b-8fmn3x3hji] {
		border-color: var(--primary);
		color: var(--primary-strong);
	}

	.goal-action:focus-visible[b-8fmn3x3hji] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

	.goal-action--danger:hover[b-8fmn3x3hji] {
		border-color: var(--danger);
		color: var(--danger);
		background: var(--surface-card);
	}

.delete-confirm[b-8fmn3x3hji] {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 0.82rem;
	color: var(--ink-2);
}

.delete-confirm__yes[b-8fmn3x3hji],
.delete-confirm__no[b-8fmn3x3hji] {
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	font: inherit;
	font-weight: 700;
	font-size: 0.8rem;
	padding: 7px 12px;
	cursor: pointer;
}

.delete-confirm__yes[b-8fmn3x3hji] {
	border-color: var(--danger);
	background: var(--danger);
	color: #fff;
}

.delete-confirm__no[b-8fmn3x3hji] {
	background: var(--surface-card);
	color: var(--ink-2);
}

.edit-archived[b-8fmn3x3hji] {
	display: grid;
	gap: 16px;
}

.edit-archived__head h2[b-8fmn3x3hji] {
	margin-bottom: 4px;
}

.edit-archived__head p[b-8fmn3x3hji] {
	color: var(--ink-3);
	font-size: 0.88rem;
}

.card--archived[b-8fmn3x3hji] {
	opacity: 0.75;
}

.edit-chart[b-8fmn3x3hji] {
	min-width: 0;
}

.edit-actions[b-8fmn3x3hji] {
	display: flex;
	justify-content: flex-start;
}

@media (max-width: 899px) {
	.edit-card__body[b-8fmn3x3hji] {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 575px) {
	.edit-hero[b-8fmn3x3hji] {
		gap: 14px;
	}

	.edit-hero__description[b-8fmn3x3hji] {
		display: none;
	}
}
/* /Pages/Home.razor.rz.scp.css */
.dash-hero[b-lsdd5edi6e] {
	display: flex;
	flex-wrap: wrap;
	gap: 32px;
}

.dash-hero__text[b-lsdd5edi6e] {
	flex: 1 1 320px;
}

.dash-hero__description[b-lsdd5edi6e] {
	color: var(--hero-ink-2);
	margin: 12px 0 20px;
	max-width: 520px;
}

.dash-hero__tags[b-lsdd5edi6e] {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.dash-hero__insights[b-lsdd5edi6e] {
	flex: 1 1 280px;
	display: flex;
	flex-direction: column;
	gap: 16px;
	align-self: center;
}

.hero-progress[b-lsdd5edi6e] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 20px;
}

.hero-progress__header[b-lsdd5edi6e] {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	margin-bottom: 10px;
	font-size: 0.85rem;
	color: var(--hero-ink-2);
}

	.hero-progress__header strong[b-lsdd5edi6e] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.6rem;
		font-weight: 800;
		color: var(--glow);
	}

.hero-progress small[b-lsdd5edi6e] {
	display: block;
	margin-top: 10px;
	color: var(--hero-ink-2);
	font-size: 0.8rem;
}

.hero-mini-metrics[b-lsdd5edi6e] {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: 12px;
}

.mini-metric[b-lsdd5edi6e] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 14px 16px;
}

.mini-metric__label[b-lsdd5edi6e] {
	font-size: 0.72rem;
	color: var(--hero-ink-2);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 6px;
}

.mini-metric__value[b-lsdd5edi6e] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 1.4rem;
	font-weight: 800;
	margin: 0;
	color: var(--hero-ink);
}

	.mini-metric__value span[b-lsdd5edi6e] {
		font-size: 0.85rem;
		font-family: var(--font-body);
		font-weight: 600;
		margin-left: 2px;
		color: var(--hero-ink-2);
	}

.mini-metric__trend[b-lsdd5edi6e] {
	display: inline-block;
	margin-top: 6px;
	font-size: 0.8rem;
	color: var(--glow);
}

.mini-metric__trend--muted[b-lsdd5edi6e] {
	color: var(--hero-ink-2);
}

.stat-grid[b-lsdd5edi6e] {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
	gap: 16px;
}

.stat-card[b-lsdd5edi6e] {
	background: var(--surface-card);
	border-radius: var(--r-card);
	padding: 20px 22px;
	border: 1px solid var(--hairline);
	box-shadow: var(--shadow-card);
	position: relative;
	overflow: hidden;
}

	.stat-card[b-lsdd5edi6e]::after {
		content: "";
		position: absolute;
		inset: auto 0 0 0;
		height: 4px;
		background: var(--accent-color, var(--primary));
	}

.stat-card__label[b-lsdd5edi6e] {
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
	margin-bottom: 8px;
}

.stat-card__value[b-lsdd5edi6e] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 1.8rem;
	font-weight: 800;
	margin: 0;
	color: var(--ink);
}

.stat-card__detail[b-lsdd5edi6e] {
	color: var(--ink-2);
	margin: 4px 0 10px;
	font-size: 0.9rem;
}

.stat-card__delta[b-lsdd5edi6e] {
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--primary);
}

.dash-main[b-lsdd5edi6e] {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr);
	gap: 24px;
	align-items: start;
}

.dash-main__left[b-lsdd5edi6e] {
	display: flex;
	flex-direction: column;
	gap: 24px;
	min-width: 0;
}

.record-name[b-lsdd5edi6e] {
	font-weight: 700;
	color: var(--ink);
}

.record-date[b-lsdd5edi6e] {
	font-size: 0.8rem;
	color: var(--ink-3);
	font-weight: 400;
}

.card-empty[b-lsdd5edi6e] {
	margin: 0;
	color: var(--ink-3);
	font-size: 0.9rem;
}

.plan-list[b-lsdd5edi6e] {
	display: flex;
	flex-direction: column;
}

.plan-item[b-lsdd5edi6e] {
	display: flex;
	gap: 16px;
	padding: 14px 0;
	border-top: 1px solid var(--hairline);
}

	.plan-item:first-child[b-lsdd5edi6e] {
		border-top: none;
		padding-top: 0;
	}

.plan-pill[b-lsdd5edi6e] {
	border: 1.5px solid var(--primary);
	border-radius: var(--r-ctl);
	padding: 8px 12px;
	min-width: 88px;
	text-align: center;
	display: flex;
	flex-direction: column;
	gap: 2px;
	align-self: flex-start;
}

	.plan-pill span[b-lsdd5edi6e] {
		text-transform: uppercase;
		font-size: 0.7rem;
		font-weight: 700;
		letter-spacing: 0.08em;
		color: var(--ink-3);
	}

	.plan-pill strong[b-lsdd5edi6e] {
		font-size: 0.95rem;
		color: var(--ink);
	}

.plan-title[b-lsdd5edi6e] {
	margin: 0;
	font-weight: 700;
	color: var(--ink);
}

.plan-focus[b-lsdd5edi6e] {
	margin: 2px 0;
	color: var(--ink-2);
	font-size: 0.9rem;
}

.plan-body small[b-lsdd5edi6e] {
	color: var(--ink-3);
}

.activity-feed[b-lsdd5edi6e] {
	display: flex;
	flex-direction: column;
}

.activity-row[b-lsdd5edi6e] {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 14px 0;
	border-top: 1px solid var(--hairline);
}

	.activity-row:first-child[b-lsdd5edi6e] {
		border-top: none;
		padding-top: 0;
	}

.activity-body[b-lsdd5edi6e] {
	flex: 1;
	min-width: 0;
}

.activity-title[b-lsdd5edi6e] {
	margin: 0;
	font-weight: 600;
	color: var(--ink);
	font-size: 0.92rem;
}

.activity-detail[b-lsdd5edi6e] {
	margin: 2px 0 0;
	color: var(--ink-2);
	font-size: 0.82rem;
}

.activity-time[b-lsdd5edi6e] {
	font-size: 0.78rem;
	color: var(--ink-3);
	white-space: nowrap;
}

@media (max-width: 991px) {
	.dash-main[b-lsdd5edi6e] {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 575px) {
	.dash-hero[b-lsdd5edi6e] {
		gap: 16px;
	}

	.dash-hero__description[b-lsdd5edi6e] {
		margin: 8px 0 12px;
		font-size: 0.9rem;
	}

	/* The goal chips and mini metrics repeat what the stat cards below
	   already show — drop them on phones to keep the hero short. */
	.dash-hero__tags[b-lsdd5edi6e],
	.hero-mini-metrics[b-lsdd5edi6e] {
		display: none;
	}

	.hero-progress[b-lsdd5edi6e] {
		padding: 14px 16px;
	}

	.hero-progress__header strong[b-lsdd5edi6e] {
		font-size: 1.3rem;
	}

	.activity-row[b-lsdd5edi6e] {
		flex-wrap: wrap;
	}
}
/* /Pages/Leaderboard.razor.rz.scp.css */
.board-hero[b-s45ql0al3b] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.board-hero__description[b-s45ql0al3b] {
	color: var(--hero-ink-2);
	margin-top: 12px;
	max-width: 480px;
}

.hero-metric[b-s45ql0al3b] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 14px 20px;
}

	.hero-metric span[b-s45ql0al3b] {
		display: block;
		font-size: 0.72rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--hero-ink-2);
		margin-bottom: 4px;
	}

	.hero-metric strong[b-s45ql0al3b] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.6rem;
		font-weight: 800;
		color: var(--glow);
	}

.board-search[b-s45ql0al3b] {
	position: relative;
	display: flex;
	align-items: center;
	color: var(--ink-3);
}

	.board-search svg[b-s45ql0al3b] {
		position: absolute;
		left: 12px;
		pointer-events: none;
	}

	.board-search input[b-s45ql0al3b] {
		padding-left: 38px;
		min-width: 220px;
	}

.board-list[b-s45ql0al3b] {
	list-style: none;
	display: flex;
	flex-direction: column;
}

.board-row[b-s45ql0al3b] {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 12px 10px;
	border-top: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
}

	.board-row:first-child[b-s45ql0al3b] {
		border-top: none;
	}

.board-rank[b-s45ql0al3b] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-weight: 800;
	font-size: 1.1rem;
	color: var(--ink-3);
	min-width: 2.2em;
	text-align: center;
}

.board-row--top .board-rank[b-s45ql0al3b] {
	color: var(--accent-ink);
	background: var(--accent);
	border-radius: var(--r-pill);
	padding: 2px 0;
}

.board-row--rank2 .board-rank[b-s45ql0al3b] {
	background: var(--surface-sunken);
	color: var(--ink-2);
}

.board-row--rank3 .board-rank[b-s45ql0al3b] {
	background: var(--primary-soft);
	color: var(--primary-strong);
}

.board-athlete[b-s45ql0al3b] {
	flex: 1;
	min-width: 0;
	display: grid;
	gap: 5px;
}

.board-name[b-s45ql0al3b] {
	font-weight: 700;
	color: var(--ink);
	font-size: 0.95rem;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.board-bar[b-s45ql0al3b] {
	height: 6px;
	border-radius: var(--r-pill);
	background: var(--surface-sunken);
	overflow: hidden;
}

.board-bar__fill[b-s45ql0al3b] {
	height: 100%;
	border-radius: var(--r-pill);
	background: linear-gradient(90deg, var(--primary), var(--glow));
}

.board-points[b-s45ql0al3b] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-weight: 800;
	font-size: 1.05rem;
	color: var(--ink);
	white-space: nowrap;
}

	.board-points small[b-s45ql0al3b] {
		font-family: var(--font-body);
		font-weight: 600;
		font-size: 0.75rem;
		color: var(--ink-3);
	}

@media (max-width: 575px) {
	.board-search input[b-s45ql0al3b] {
		min-width: 0;
		width: 100%;
	}

	.board-hero[b-s45ql0al3b] {
		gap: 14px;
	}

	.board-hero__description[b-s45ql0al3b] {
		display: none;
	}

	.hero-metric[b-s45ql0al3b] {
		padding: 10px 14px;
	}

		.hero-metric span[b-s45ql0al3b] {
			font-size: 0.62rem;
		}

		.hero-metric strong[b-s45ql0al3b] {
			font-size: 1.15rem;
		}
}
/* /Pages/Login.razor.rz.scp.css */
.login[b-3ztgwc7yn3] {
	position: relative;
	min-height: 100vh;
	display: grid;
	place-items: center;
	padding: 24px;
	background: var(--hero-grad);
	overflow: hidden;
	color: var(--glow);
}

.login[b-3ztgwc7yn3]  .swell__wave {
	position: absolute;
	inset: 0 0 0 auto;
	height: 100%;
	width: min(70vw, 900px);
	opacity: 0.8;
}

.login__panel[b-3ztgwc7yn3] {
	position: relative;
	width: min(400px, 100%);
	background: var(--surface-card);
	border-radius: var(--r-card);
	padding: 36px 32px 24px;
	box-shadow: 0 24px 64px rgba(2, 20, 25, 0.5);
	text-align: center;
	color: var(--ink);
	animation: panel-rise-b-3ztgwc7yn3 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes panel-rise-b-3ztgwc7yn3 {
	from {
		opacity: 0;
		transform: translateY(16px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

.login__logo[b-3ztgwc7yn3] {
	width: 180px;
	margin: 0 auto 8px;
	display: block;
}

.login__tagline[b-3ztgwc7yn3] {
	color: var(--ink-2);
	font-size: 0.9rem;
	margin-bottom: 24px;
}

.login__panel[b-3ztgwc7yn3]  form {
	display: grid;
	gap: 12px;
	text-align: left;
}

.login__panel[b-3ztgwc7yn3]  .login__submit {
	margin-top: 8px;
}

.login__forgot[b-3ztgwc7yn3] {
	justify-self: center;
	font-size: 0.85rem;
	color: var(--primary);
	text-decoration: none;
	padding: 4px;
}

	.login__forgot:hover[b-3ztgwc7yn3] {
		text-decoration: underline;
	}

.login__name-row[b-3ztgwc7yn3] {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

.login__consent[b-3ztgwc7yn3] {
	display: grid;
	gap: 4px;
	text-align: left;
}

.login__consent-row[b-3ztgwc7yn3] {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-size: 0.85rem;
	cursor: pointer;
}

	.login__consent-row input[b-3ztgwc7yn3] {
		margin-top: 2px;
		accent-color: var(--primary);
	}

.login__consent-hint[b-3ztgwc7yn3] {
	font-size: 0.75rem;
	color: var(--ink-3);
	padding-left: 24px;
}

.login__error[b-3ztgwc7yn3] {
	background: color-mix(in srgb, #d64545 12%, transparent);
	border: 1px solid color-mix(in srgb, #d64545 40%, transparent);
	color: #d64545;
	border-radius: 8px;
	padding: 10px 12px;
	font-size: 0.85rem;
}

.login__switch[b-3ztgwc7yn3] {
	margin-top: 20px;
	font-size: 0.85rem;
	color: var(--ink-2);
}

.login__link[b-3ztgwc7yn3] {
	background: none;
	border: none;
	padding: 0;
	font: inherit;
	color: var(--primary);
	cursor: pointer;
}

	.login__link:hover[b-3ztgwc7yn3] {
		text-decoration: underline;
	}

.login__credit[b-3ztgwc7yn3] {
	margin-top: 24px;
	padding-top: 16px;
	border-top: 1px solid var(--hairline);
	font-size: 0.75rem;
	color: var(--ink-3);
}

	.login__credit strong[b-3ztgwc7yn3] {
		color: var(--ink-2);
		letter-spacing: 0.04em;
	}

@media (prefers-reduced-motion: reduce) {
	.login__panel[b-3ztgwc7yn3] {
		animation: none;
	}
}
/* /Pages/LogWorkout.razor.rz.scp.css */
.workout-hero[b-mxex9133t8] {
	display: flex;
	flex-wrap: wrap;
	gap: 32px;
	align-items: center;
}

.workout-hero__text[b-mxex9133t8] {
	flex: 1 1 320px;
}

.workout-hero__description[b-mxex9133t8] {
	color: var(--hero-ink-2);
	margin-top: 12px;
	max-width: 480px;
}

.workout-hero__metrics[b-mxex9133t8] {
	flex: 0 1 auto;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.hero-metric[b-mxex9133t8] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 14px 20px;
	min-width: 120px;
}

	.hero-metric span[b-mxex9133t8] {
		display: block;
		font-size: 0.72rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--hero-ink-2);
		margin-bottom: 4px;
	}

	.hero-metric strong[b-mxex9133t8] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.6rem;
		font-weight: 800;
		color: var(--glow);
	}

.workout-layout[b-mxex9133t8] {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) minmax(300px, 1fr);
	gap: 24px;
	align-items: start;
}

.save-state[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ok);
	background: rgba(27, 138, 76, 0.1);
	border-radius: var(--r-pill);
	padding: 4px 12px;
	white-space: nowrap;
}

.save-state--busy[b-mxex9133t8] {
	color: var(--ink-3);
	background: var(--surface-sunken);
}

.day-flags[b-mxex9133t8] {
	display: flex;
	flex-wrap: wrap;
	gap: 2px;
	color: var(--primary);
}

/* Goal check-in marker — target color, so it reads apart from the activity icons. */
.day-flags__goal[b-mxex9133t8] {
	display: inline-flex;
	color: var(--viz-target);
}

/* A day a best was set. The accent again — the same signal as the tile's badge
   and banner, so a trophy means the same thing wherever it turns up. */
.day-flags__pb[b-mxex9133t8] {
	display: inline-flex;
	color: var(--accent-ink);
}

.detail-section[b-mxex9133t8] {
	margin-bottom: 20px;
}

.detail-section__label[b-mxex9133t8] {
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
	margin-bottom: 10px;
}

/* --- Activities --- */

.activity-chips[b-mxex9133t8] {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 10px;
}

.activity-chip[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 7px 10px 7px 14px;
	border-radius: var(--r-pill);
	border: 1.5px solid var(--primary);
	background: var(--primary-soft);
	color: var(--primary-strong);
	font-size: 0.85rem;
	font-weight: 600;
}

.activity-chip__remove[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: inherit;
	cursor: pointer;
}

	.activity-chip__remove:hover[b-mxex9133t8] {
		background: rgba(14, 138, 150, 0.18);
	}

	.activity-chip__remove:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* --- Collapsible sections --- */

.log-section[b-mxex9133t8] {
	border-top: 1px solid var(--hairline);
	padding: 6px 0 14px;
	margin-bottom: 6px;
}

.section-toggle[b-mxex9133t8] {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	padding: 10px 0;
	border: none;
	background: none;
	cursor: pointer;
	font: inherit;
	text-align: left;
}

	.section-toggle:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
		border-radius: 8px;
	}

.section-toggle__title[b-mxex9133t8] {
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
}

.section-toggle__meta[b-mxex9133t8] {
	margin-left: auto;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--primary-strong);
	background: var(--primary-soft);
	border-radius: var(--r-pill);
	padding: 3px 10px;
	white-space: nowrap;
}

.section-toggle__chevron[b-mxex9133t8] {
	display: inline-flex;
	color: var(--ink-3);
	transition: transform 0.15s ease;
}

.section-toggle__chevron--open[b-mxex9133t8] {
	transform: rotate(90deg);
}

.section-hint[b-mxex9133t8] {
	font-size: 0.82rem;
	color: var(--ink-2);
	margin: 2px 0 10px;
}

/* --- Scheduled workout: the coach's board --- */

.plan-schedule[b-mxex9133t8] {
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--ink-2);
	margin: 0 0 10px;
}

.plan-group[b-mxex9133t8] {
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-3);
	margin: 4px 0 0;
}

.plan-list[b-mxex9133t8] {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-bottom: 4px;
}

/* A tile is one exercise: compact summary when closed, editor when open.
   Only one tile is open at a time. */
.tile[b-mxex9133t8] {
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-sunken);
	transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}

.tile--done[b-mxex9133t8] {
	border-color: var(--primary);
	background: var(--primary-soft);
}

.tile--open[b-mxex9133t8] {
	border-color: var(--primary);
	background: var(--surface-card);
	box-shadow: var(--shadow-card);
}

.tile__head[b-mxex9133t8] {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	cursor: pointer;
	border-radius: var(--r-ctl);
}

	.tile__head:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.tile__id[b-mxex9133t8] {
	flex: 1 1 auto;
	min-width: 0;
}

.tile__name[b-mxex9133t8] {
	display: block;
	font-weight: 700;
	color: var(--ink);
	font-size: 0.92rem;
}

.tile__summary[b-mxex9133t8] {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	margin-top: 5px;
}

.tile__hint[b-mxex9133t8] {
	font-size: 0.78rem;
	color: var(--ink-3);
}

.setchip[b-mxex9133t8] {
	font-size: 0.72rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--ink-2);
	background: var(--surface-card);
	border: 1px solid var(--hairline);
	border-radius: var(--r-pill);
	padding: 1px 8px;
	white-space: nowrap;
}

.tile--done .setchip[b-mxex9133t8] {
	border-color: rgba(14, 138, 150, 0.35);
	color: var(--primary-strong);
}

.setchip--unit[b-mxex9133t8] {
	border: none;
	background: none;
	padding-left: 2px;
}

.tile__rx[b-mxex9133t8] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 1rem;
	font-weight: 800;
	color: var(--primary-strong);
	white-space: nowrap;
}

.tile__chevron[b-mxex9133t8] {
	display: inline-flex;
	color: var(--ink-3);
	transition: transform 0.15s ease;
}

.tile__chevron--open[b-mxex9133t8] {
	transform: rotate(90deg);
}

.tile__editor[b-mxex9133t8] {
	padding: 0 14px 14px 56px;
}

.tile__actions[b-mxex9133t8] {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 12px;
}

.tile__actions-spacer[b-mxex9133t8] {
	flex: 1 1 auto;
}

.tile__graph[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	color: var(--ink-2);
	cursor: pointer;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}

	.tile__graph:hover[b-mxex9133t8] {
		border-color: var(--primary);
		color: var(--primary-strong);
		background: var(--primary-soft);
	}

	.tile__graph:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.tile__save[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: none;
	border-radius: var(--r-ctl);
	background: var(--primary);
	color: #fff;
	font: inherit;
	font-weight: 700;
	font-size: 0.8rem;
	padding: 8px 14px;
	cursor: pointer;
	transition: background 0.15s ease;
}

	.tile__save:hover[b-mxex9133t8] {
		background: var(--primary-strong);
	}

	.tile__save:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.tile__remove[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 4px;
	border: none;
	border-radius: 8px;
	background: transparent;
	color: var(--ink-3);
	cursor: pointer;
}

	.tile__remove:hover[b-mxex9133t8] {
		color: var(--danger);
		background: rgba(194, 54, 54, 0.08);
	}

	.tile__remove:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* --- Notes (tile, goal, and session-wide) --- */

.tile__note-btn[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 4px;
	border: none;
	border-radius: 8px;
	background: transparent;
	color: var(--ink-3);
	cursor: pointer;
	transition: color 0.15s ease, background 0.15s ease;
}

	.tile__note-btn:hover[b-mxex9133t8] {
		color: var(--primary-strong);
		background: var(--primary-soft);
	}

	.tile__note-btn:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.tile__note-btn--on[b-mxex9133t8] {
	color: var(--primary-strong);
}

.note-input[b-mxex9133t8] {
	display: block;
	width: 100%;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	color: var(--ink);
	font: inherit;
	font-size: 0.85rem;
	padding: 8px 10px;
	resize: vertical;
}

	.note-input:focus-visible[b-mxex9133t8] {
		outline: none;
		border-color: var(--primary);
		box-shadow: var(--focus-ring);
	}

.note-input--session[b-mxex9133t8] {
	margin-top: 4px;
}

/* Aligned with the editor: clear of the ring on desktop, full width on phones. */
.tile__note[b-mxex9133t8] {
	padding: 0 14px 12px 56px;
}

.tile__note-text[b-mxex9133t8] {
	display: block;
	width: 100%;
	padding: 0 14px 12px 56px;
	border: none;
	background: none;
	text-align: left;
	font: inherit;
	font-size: 0.8rem;
	font-style: italic;
	color: var(--ink-2);
	cursor: pointer;
	white-space: pre-wrap;
}

	.tile__note-text:hover[b-mxex9133t8] {
		color: var(--ink);
	}

	.tile__note-text:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
		border-radius: 8px;
	}

.goal-entry__actions[b-mxex9133t8] {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.goal-entry__note[b-mxex9133t8] {
	margin-top: 10px;
}

.goal-entry__note-text[b-mxex9133t8] {
	display: block;
	width: 100%;
	margin-top: 10px;
	padding: 0;
	border: none;
	background: none;
	text-align: left;
	font: inherit;
	font-size: 0.8rem;
	font-style: italic;
	color: var(--ink-2);
	cursor: pointer;
	white-space: pre-wrap;
}

	.goal-entry__note-text:hover[b-mxex9133t8] {
		color: var(--ink);
	}

	.goal-entry__note-text:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
		border-radius: 8px;
	}

.plan-ring[b-mxex9133t8] {
	flex: none;
	width: 30px;
	height: 30px;
	margin-top: 1px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1.5px solid var(--hairline);
	border-radius: 50%;
	background: var(--surface-card);
	color: var(--ink-3);
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 0.85rem;
	font-weight: 800;
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}

	.plan-ring:hover[b-mxex9133t8] {
		border-color: var(--primary);
		color: var(--primary-strong);
	}

	.plan-ring:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.tile--done .plan-ring[b-mxex9133t8] {
	border-color: var(--primary);
	background: var(--primary);
	color: #fff;
}

/* --- "Last time" guide within the open editor ---
   Dashed chips echo the dashed add-set button: a template, not logged work. */

.tile__last[b-mxex9133t8] {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 6px 8px;
	margin: 2px 0 12px;
	padding-bottom: 10px;
	border-bottom: 1px dashed var(--hairline);
}

.tile__last-label[b-mxex9133t8] {
	font-size: 0.68rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
	white-space: nowrap;
}

.tile__last-sets[b-mxex9133t8] {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px;
}

/* Stays quiet on done tiles too — the guide never reads as logged work. */
.tile--done .setchip--ghost[b-mxex9133t8],
.setchip--ghost[b-mxex9133t8] {
	background: none;
	border-style: dashed;
	border-color: var(--hairline);
	color: var(--ink-3);
}

/* --- Per-set lines within the open editor --- */

.set-line[b-mxex9133t8] {
	display: grid;
	grid-template-columns: 22px minmax(0, 1fr) minmax(0, 1.3fr) 24px;
	gap: 8px;
	align-items: center;
	margin-bottom: 6px;
}

.set-line--head[b-mxex9133t8] {
	margin-bottom: 2px;
	font-size: 0.68rem;
	text-transform: uppercase;
	letter-spacing: 0.07em;
	font-weight: 700;
	color: var(--ink-3);
}

/* Timed work counts seconds, and takes calories off the machine beside them —
   both optional, like everything else on the line. */
.set-line--timed[b-mxex9133t8] {
	grid-template-columns: 22px minmax(0, 1fr) minmax(0, 1fr) minmax(0, 0.8fr) 24px;
}

.set-line__num[b-mxex9133t8] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 0.82rem;
	font-weight: 800;
	color: var(--ink-3);
	text-align: center;
}

/* The set number doubles as its tick — the same move as the ring on a scheduled
   row, for the member who did the work and doesn't want to type it. */
.set-line__tick[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	padding: 0;
	border: 1px solid transparent;
	border-radius: 50%;
	background: transparent;
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 0.82rem;
	font-weight: 800;
	color: var(--ink-3);
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

	.set-line__tick:hover[b-mxex9133t8] {
		border-color: var(--primary);
		color: var(--primary-strong);
	}

	.set-line__tick:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.set-line__tick--on[b-mxex9133t8] {
	background: var(--primary);
	border-color: var(--primary);
	color: #fff;
}

/* --- Doing one of two, and doing two of two --- */

/* The coach offered an easier option: whichever the member picks is what gets
   logged, so their history for that exercise stays their history. */
.swapper[b-mxex9133t8] {
	display: inline-flex;
	gap: 3px;
	padding: 3px;
	margin-bottom: 10px;
	background: var(--surface-sunken);
	border-radius: var(--r-pill);
	max-width: 100%;
	flex-wrap: wrap;
}

	.swapper button[b-mxex9133t8] {
		border: 0;
		background: transparent;
		font: inherit;
		font-size: 0.76rem;
		font-weight: 700;
		color: var(--ink-2);
		padding: 5px 11px;
		border-radius: var(--r-pill);
		cursor: pointer;
	}

	.swapper button[aria-pressed="true"][b-mxex9133t8] {
		background: var(--surface-card);
		color: var(--primary-strong);
		box-shadow: var(--shadow-card);
	}

	.swapper button:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* A row the coach built out of two exercises: a heading per part, each logging
   to its own exercise. */
.part-head[b-mxex9133t8] {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 14px 0 6px;
}

.part-head__letter[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	flex: none;
	border-radius: var(--r-pill);
	background: var(--primary-soft);
	color: var(--primary-strong);
	font-size: 0.68rem;
	font-weight: 800;
	text-transform: uppercase;
}

.part-head__name[b-mxex9133t8] { font-size: 0.84rem; font-weight: 700; }

.part-head__rx[b-mxex9133t8] {
	margin-left: auto;
	font-size: 0.76rem;
	font-weight: 700;
	color: var(--ink-3);
	font-variant-numeric: tabular-nums;
}

.set-line[b-mxex9133t8]  .field {
	margin: 0;
}

.set-line[b-mxex9133t8]  .control {
	padding: 7px 10px;
	font-size: 0.88rem;
}

.set-line__remove[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: var(--ink-3);
	cursor: pointer;
}

	.set-line__remove:hover[b-mxex9133t8] {
		color: var(--danger);
		background: rgba(194, 54, 54, 0.08);
	}

	.set-line__remove:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* --- Personal bests --- */

/* Sits under the sets that earned it, which is where the eye lands after
   reading what was lifted. The accent is the app's highlighter, spent here
   because beating your best is the one thing on this page worth interrupting
   for — everything around it stays in the quiet palette. */
.pb[b-mxex9133t8] {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin-top: 12px;
	padding: 10px 12px;
	border-radius: var(--r-ctl);
	border: 1px solid var(--accent);
	background: color-mix(in srgb, var(--accent) 16%, transparent);
}

.pb__badge[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	flex: none;
	border-radius: 50%;
	background: var(--accent);
	color: var(--accent-ink);
}

.pb__body[b-mxex9133t8] {
	display: grid;
	gap: 3px;
	min-width: 0;
}

.pb__title[b-mxex9133t8] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ink);
}

.pb__lines[b-mxex9133t8] { display: grid; gap: 2px; }

.pb__line[b-mxex9133t8] {
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--ink-2);
	font-variant-numeric: tabular-nums;
}

/* The same fact on a folded tile. Small enough to ride beside the name — a
   session is scanned closed, so this is what makes a PB findable at all. */
.pb-flag[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	margin-left: 7px;
	padding: 1px 7px 1px 5px;
	border-radius: var(--r-pill);
	background: var(--accent);
	color: var(--accent-ink);
	font-size: 0.62rem;
	font-weight: 800;
	letter-spacing: 0.07em;
	vertical-align: 1px;
	white-space: nowrap;
}

/* --- Ticking work off, where there's no number worth typing --- */

/* Seconds, lengths and the rounds of a block on the clock are done or not done:
   nobody logs 35 against a target of 40. So the row is a circle per round —
   thumb-sized, because it gets tapped mid-set on a phone — and the tick is the
   whole result. Green here is the app's "good" signal doing the one job it's
   worth spending on. */
.ticks[b-mxex9133t8] {
	display: grid;
	gap: 9px;
	justify-items: start;
	margin-bottom: 4px;
}

.ticks__label[b-mxex9133t8] {
	margin: 0;
	font-size: 0.68rem;
	text-transform: uppercase;
	letter-spacing: 0.07em;
	font-weight: 700;
	color: var(--ink-3);
}

.ticks__row[b-mxex9133t8] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
}

.tick[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	flex: none;
	padding: 0;
	border: 1.5px solid var(--hairline);
	border-radius: 50%;
	background: var(--surface-card);
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 0.95rem;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	color: var(--ink-3);
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

	/* Scoped away from the ticked state so the two never fight over the hover. */
	.tick:not(.tick--on):hover[b-mxex9133t8] {
		border-color: var(--ok);
		color: var(--ok);
	}

	.tick:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.tick--on[b-mxex9133t8] {
	background: var(--ok);
	border-color: var(--ok);
	color: #fff;
}

/* How many rounds the member got through — the count is the result on a block
   run against the clock, so it's adjustable right where it's read. */
.ticks__count[b-mxex9133t8] {
	display: inline-flex;
	gap: 6px;
	margin-left: 4px;
}

.ticks__step[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	flex: none;
	padding: 0;
	border: 1px dashed var(--hairline);
	border-radius: 50%;
	background: none;
	font: inherit;
	font-size: 1.05rem;
	line-height: 1;
	color: var(--ink-3);
	cursor: pointer;
}

	.ticks__step:hover:not(:disabled)[b-mxex9133t8] {
		border-color: var(--primary);
		background: var(--primary-soft);
		color: var(--primary-strong);
	}

	.ticks__step:disabled[b-mxex9133t8] {
		opacity: 0.35;
		cursor: not-allowed;
	}

	.ticks__step:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* The way back to a weight or the calories off a machine, for the member who
   does want them. Quiet — it's the exception, not the invitation. */
.ticks__numbers[b-mxex9133t8] {
	padding: 2px 0;
	border: 0;
	background: none;
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-3);
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

	.ticks__numbers:hover[b-mxex9133t8] {
		color: var(--primary-strong);
	}

	.ticks__numbers:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
		border-radius: 4px;
	}

/* Sits under the set it adds to, so a row with two parts keeps each part's
   "add" with the part it belongs to. */
.set-add[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 2px;
	padding: 5px 10px;
	border: 1px dashed var(--hairline);
	border-radius: 8px;
	background: none;
	color: var(--primary-strong);
	font: inherit;
	font-size: 0.8rem;
	font-weight: 700;
	cursor: pointer;
}

	.set-add:hover[b-mxex9133t8] {
		border-color: var(--primary);
		background: var(--primary-soft);
	}

	.set-add:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* --- Previous sessions (copy into extra work) --- */

.previous-list[b-mxex9133t8] {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.previous-item[b-mxex9133t8] {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: 10px;
	align-items: center;
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-sunken);
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease;
}

	.previous-item:hover[b-mxex9133t8] {
		border-color: var(--primary);
		background: var(--primary-soft);
	}

	.previous-item:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.previous-item__date[b-mxex9133t8] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-size: 0.85rem;
	font-weight: 800;
	color: var(--ink);
	white-space: nowrap;
}

.previous-item__summary[b-mxex9133t8] {
	font-size: 0.8rem;
	color: var(--ink-2);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.previous-item__copy[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--primary-strong);
	white-space: nowrap;
}

/* --- Extra work --- */

/* Just the button that opens the picker — the picker itself is <ExercisePicker />,
   shared with the admin schedule editor, and styled from app.css. */
.extra-add[b-mxex9133t8] {
	margin-top: 10px;
}

/* --- Goals --- */

.goal-list[b-mxex9133t8] {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 4px;
}

.goal-entry[b-mxex9133t8] {
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	padding: 14px 16px;
	background: var(--surface-sunken);
}

.goal-entry__head[b-mxex9133t8] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 10px;
}

.goal-entry__title[b-mxex9133t8] {
	font-weight: 700;
	color: var(--ink);
	font-size: 0.92rem;
}

.goal-entry__fields[b-mxex9133t8] {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
}

/* Milestone goals: one tick-it-off button, then a quiet achieved state. */

.milestone-toggle[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	color: var(--ink-2);
	font: inherit;
	font-weight: 700;
	font-size: 0.85rem;
	padding: 8px 14px;
	cursor: pointer;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}

	.milestone-toggle:hover[b-mxex9133t8] {
		border-color: var(--primary);
		color: var(--primary-strong);
	}

	.milestone-toggle:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.milestone-toggle--on[b-mxex9133t8] {
	border-color: var(--primary);
	background: var(--primary);
	color: #fff;
}

	.milestone-toggle--on:hover[b-mxex9133t8] {
		background: var(--primary-strong);
		color: #fff;
	}

.goal-entry__achieved[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--primary-strong);
	font-weight: 700;
	font-size: 0.85rem;
}

/* Frequency goals: one pip per session against the weekly target. */

.goal-entry__week[b-mxex9133t8] {
	display: flex;
	align-items: center;
	gap: 12px;
}

.week-pips[b-mxex9133t8] {
	display: inline-flex;
	gap: 6px;
}

.week-pip[b-mxex9133t8] {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	border: 1px solid var(--hairline);
	background: var(--surface-card);
}

.week-pip--on[b-mxex9133t8] {
	background: var(--primary);
	border-color: var(--primary);
}

.goal-entry__week-label[b-mxex9133t8] {
	font-size: 0.85rem;
	color: var(--ink-2);
}

.goal-entry__hint[b-mxex9133t8] {
	font-size: 0.78rem;
	color: var(--ink-2);
	margin: 6px 0 0;
}

/* Frequency goals: check a session off the selected day; undo lives beside it. */

.goal-entry__day[b-mxex9133t8] {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 10px;
}

.goal-entry__undo[b-mxex9133t8] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: none;
	background: none;
	color: var(--ink-2);
	font-size: 0.8rem;
	padding: 4px 2px;
	cursor: pointer;
}

	.goal-entry__undo:hover[b-mxex9133t8] {
		color: var(--primary-strong);
	}

	.goal-entry__undo:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

/* --- Lift-progress modal --- */

.lift-modal__scrim[b-mxex9133t8] {
	position: fixed;
	inset: 0;
	background: rgba(5, 36, 44, 0.45);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	z-index: 1000;
}

.lift-modal[b-mxex9133t8] {
	background: var(--surface-card);
	border-radius: var(--r-card);
	box-shadow: 0 24px 60px -18px rgba(5, 36, 44, 0.5);
	width: min(500px, 100%);
	max-height: 100%;
	overflow-y: auto;
	padding: 20px 22px 22px;
}

.lift-modal__head[b-mxex9133t8] {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin-bottom: 14px;
}

	.lift-modal__head > div:first-child[b-mxex9133t8] {
		flex: 1 1 auto;
	}

	.lift-modal__head h2[b-mxex9133t8] {
		margin: 0;
	}

.lift-modal__close[b-mxex9133t8] {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: var(--surface-sunken);
	color: var(--ink-2);
	cursor: pointer;
}

	.lift-modal__close:hover[b-mxex9133t8] {
		color: var(--ink);
		background: var(--hairline);
	}

	.lift-modal__close:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.lift-modal__loading[b-mxex9133t8] {
	text-align: center;
	color: var(--ink-3);
	font-size: 0.85rem;
	padding: 32px 0;
}

.lift-modal__stats[b-mxex9133t8] {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 14px;
}

.ministat[b-mxex9133t8] {
	flex: 1 1 120px;
	background: var(--surface-sunken);
	border-radius: var(--r-ctl);
	padding: 10px 12px;
}

	.ministat span:first-child[b-mxex9133t8] {
		display: block;
		font-size: 0.66rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		font-weight: 700;
		color: var(--ink-3);
		margin-bottom: 2px;
	}

	.ministat strong[b-mxex9133t8] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-weight: 800;
		font-size: 1.15rem;
		color: var(--ink);
	}

.ministat__delta[b-mxex9133t8] {
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--ok);
	margin-left: 6px;
	white-space: nowrap;
}

/* Same look as the Progress page's metric tabs — scoped styles don't cross pages. */
.metric-tabs[b-mxex9133t8] {
	display: inline-flex;
	gap: 4px;
	background: var(--surface-sunken);
	border-radius: var(--r-pill);
	padding: 4px;
	margin-bottom: 12px;
}

.metric-tabs__tab[b-mxex9133t8] {
	border: none;
	border-radius: var(--r-pill);
	background: none;
	color: var(--ink-2);
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	padding: 6px 14px;
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.15s ease, color 0.15s ease;
}

	.metric-tabs__tab:hover[b-mxex9133t8] {
		color: var(--ink);
	}

	.metric-tabs__tab:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.metric-tabs__tab--on[b-mxex9133t8] {
	background: var(--primary);
	color: #fff;
}

	.metric-tabs__tab--on:hover[b-mxex9133t8] {
		color: #fff;
	}

.lift-modal__meta[b-mxex9133t8] {
	font-size: 0.75rem;
	color: var(--ink-3);
	margin: 6px 0 0;
}

.lift-modal__foot[b-mxex9133t8] {
	display: flex;
	justify-content: flex-end;
	margin-top: 12px;
}

.lift-modal__link[b-mxex9133t8] {
	border: none;
	background: none;
	color: var(--primary-strong);
	font: inherit;
	font-size: 0.84rem;
	font-weight: 700;
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 3px;
	padding: 2px 0;
}

	.lift-modal__link:focus-visible[b-mxex9133t8] {
		outline: none;
		box-shadow: var(--focus-ring);
		border-radius: 4px;
	}

@media (max-width: 991px) {
	.workout-layout[b-mxex9133t8] {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 480px) {
	.tile__editor[b-mxex9133t8] {
		padding-left: 14px;
	}

	.tile__note[b-mxex9133t8],
	.tile__note-text[b-mxex9133t8] {
		padding-left: 14px;
	}

	.goal-entry__fields[b-mxex9133t8] {
		grid-template-columns: 1fr;
	}

	.previous-item[b-mxex9133t8] {
		grid-template-columns: auto minmax(0, 1fr);
	}

	.previous-item__copy[b-mxex9133t8] {
		grid-column: 2;
		justify-self: end;
	}
}

@media (max-width: 575px) {
	.workout-hero[b-mxex9133t8] {
		gap: 14px;
	}

	/* Flavor copy goes; the metric tiles squeeze into one slim row. */
	.workout-hero__description[b-mxex9133t8] {
		display: none;
	}

	.workout-hero__metrics[b-mxex9133t8] {
		width: 100%;
		gap: 8px;
	}

	.hero-metric[b-mxex9133t8] {
		flex: 1 1 0;
		min-width: 0;
		padding: 10px 12px;
	}

		.hero-metric span[b-mxex9133t8] {
			font-size: 0.62rem;
		}

		.hero-metric strong[b-mxex9133t8] {
			font-size: 1.15rem;
		}
}
/* /Pages/Progress.razor.rz.scp.css */
.progress-hero[b-cuowwkzzwz] {
	display: flex;
	flex-wrap: wrap;
	gap: 32px;
	align-items: center;
}

.progress-hero__text[b-cuowwkzzwz] {
	flex: 1 1 320px;
}

.progress-hero__description[b-cuowwkzzwz] {
	color: var(--hero-ink-2);
	margin-top: 12px;
	max-width: 480px;
}

.progress-hero__metrics[b-cuowwkzzwz] {
	flex: 0 1 auto;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.hero-metric[b-cuowwkzzwz] {
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: var(--r-card);
	padding: 14px 20px;
	min-width: 120px;
}

	.hero-metric span[b-cuowwkzzwz] {
		display: block;
		font-size: 0.72rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		color: var(--hero-ink-2);
		margin-bottom: 4px;
	}

	.hero-metric strong[b-cuowwkzzwz] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-size: 1.6rem;
		font-weight: 800;
		color: var(--glow);
	}

/* --- Range bar: the one window the whole page reads --- */

.range-bar[b-cuowwkzzwz] {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: -4px;
}

.range-bar__label[b-cuowwkzzwz] {
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
}

	.range-bar .metric-tabs[b-cuowwkzzwz] {
		margin-left: 0;
	}

/* --- Toolbar: lift select + metric tabs --- */

.progress-toolbar[b-cuowwkzzwz] {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
}

	.progress-toolbar[b-cuowwkzzwz]  .field {
		flex: 0 1 260px;
		margin: 0;
	}

/* Lift picker: folded to the current lift, opening into a search panel that
   floats over the stats rather than pushing the chart down the page. */

.lift-picker[b-cuowwkzzwz] {
	position: relative;
	flex: 0 1 260px;
}

.lift-picker__trigger[b-cuowwkzzwz] {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	width: 100%;
	padding: 9px 12px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color 0.15s ease;
}

	.lift-picker__trigger:hover[b-cuowwkzzwz] {
		border-color: var(--primary);
	}

	.lift-picker__trigger:focus-visible[b-cuowwkzzwz] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.lift-picker__value[b-cuowwkzzwz] {
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--ink);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.lift-picker__chevron[b-cuowwkzzwz] {
	display: inline-flex;
	color: var(--ink-3);
	transition: transform 0.15s ease;
}

.lift-picker__chevron--open[b-cuowwkzzwz] {
	transform: rotate(180deg);
}

.lift-picker__panel[b-cuowwkzzwz] {
	position: absolute;
	z-index: 20;
	top: calc(100% + 6px);
	left: 0;
	/* Wider than the trigger it hangs off — the search placeholder and the
	   body-part chips need more room than a lift name does. */
	min-width: 340px;
	max-width: min(420px, calc(100vw - 48px));
	padding: 4px 14px 14px;
	border: 1px solid var(--hairline);
	border-radius: var(--r-ctl);
	background: var(--surface-card);
	box-shadow: var(--shadow-card);
}

@media (max-width: 560px) {
	.lift-picker[b-cuowwkzzwz] {
		flex: 1 1 100%;
	}
}

.metric-tabs[b-cuowwkzzwz] {
	display: inline-flex;
	gap: 4px;
	background: var(--surface-sunken);
	border-radius: var(--r-pill);
	padding: 4px;
	margin-left: auto;
}

.metric-tabs__tab[b-cuowwkzzwz] {
	border: none;
	border-radius: var(--r-pill);
	background: none;
	color: var(--ink-2);
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	padding: 6px 14px;
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.15s ease, color 0.15s ease;
}

	.metric-tabs__tab:hover[b-cuowwkzzwz] {
		color: var(--ink);
	}

	.metric-tabs__tab:focus-visible[b-cuowwkzzwz] {
		outline: none;
		box-shadow: var(--focus-ring);
	}

.metric-tabs__tab--on[b-cuowwkzzwz] {
	background: var(--primary);
	color: #fff;
}

	.metric-tabs__tab--on:hover[b-cuowwkzzwz] {
		color: #fff;
	}

/* --- Stat tiles --- */

.stat-row[b-cuowwkzzwz] {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 10px;
	margin-bottom: 18px;
}

.stat[b-cuowwkzzwz] {
	background: var(--surface-sunken);
	border-radius: var(--r-ctl);
	padding: 12px 14px;
}

	.stat > span:first-child[b-cuowwkzzwz] {
		display: block;
		font-size: 0.66rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		font-weight: 700;
		color: var(--ink-3);
		margin-bottom: 3px;
	}

	.stat strong[b-cuowwkzzwz] {
		font-family: var(--font-display);
		font-stretch: var(--display-stretch);
		font-weight: 800;
		font-size: 1.3rem;
		color: var(--ink);
	}

.stat__unit[b-cuowwkzzwz] {
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--ink-2);
	margin-left: 3px;
}

.stat__delta[b-cuowwkzzwz] {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--ok);
	margin-left: 7px;
	white-space: nowrap;
}

.chart-caption[b-cuowwkzzwz] {
	font-size: 0.75rem;
	color: var(--ink-3);
	margin: 8px 0 0;
}

/* --- Activity mix: the shape of the training, under the volume chart --- */

.activity-mix[b-cuowwkzzwz] {
	margin-top: 18px;
	padding-top: 16px;
	border-top: 1px solid var(--hairline);
}

.activity-mix__label[b-cuowwkzzwz] {
	font-size: 0.66rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	color: var(--ink-3);
	margin: 0 0 10px;
}

.activity-mix__chips[b-cuowwkzzwz] {
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
}

.activity-mix__chip[b-cuowwkzzwz] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

	.activity-mix__chip strong[b-cuowwkzzwz] {
		font-variant-numeric: tabular-nums;
		color: var(--ink);
	}

/* --- Goal strip --- */

.goal-strip[b-cuowwkzzwz] {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 14px;
	background: var(--surface-sunken);
	border-radius: var(--r-ctl);
	padding: 12px 16px;
	margin-top: 18px;
}

.goal-strip__label[b-cuowwkzzwz] {
	font-size: 0.84rem;
	font-weight: 700;
	color: var(--ink);
}

	.goal-strip__label span[b-cuowwkzzwz] {
		color: var(--ink-3);
		font-weight: 600;
	}

.goal-strip__track[b-cuowwkzzwz] {
	flex: 1 1 160px;
	height: 8px;
	border-radius: var(--r-pill);
	background: var(--surface-card);
	overflow: hidden;
}

.goal-strip__fill[b-cuowwkzzwz] {
	height: 100%;
	border-radius: var(--r-pill);
	background: linear-gradient(90deg, var(--primary) 0%, var(--glow) 100%);
	transition: width 0.4s ease;
}

.goal-strip__pct[b-cuowwkzzwz] {
	font-family: var(--font-display);
	font-stretch: var(--display-stretch);
	font-weight: 800;
	font-size: 0.95rem;
	color: var(--primary-strong);
	white-space: nowrap;
}

/* --- Recent sessions table --- */

.sessions-table[b-cuowwkzzwz] {
	margin-top: 18px;
	overflow-x: auto;
}

	.sessions-table table[b-cuowwkzzwz] {
		width: 100%;
		min-width: 520px;
		border-collapse: collapse;
		font-size: 0.84rem;
	}

	.sessions-table th[b-cuowwkzzwz] {
		text-align: left;
		font-size: 0.66rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		font-weight: 700;
		color: var(--ink-3);
		padding: 6px 10px;
		border-bottom: 1px solid var(--hairline);
	}

	.sessions-table td[b-cuowwkzzwz] {
		padding: 9px 10px;
		border-bottom: 1px solid var(--surface-sunken);
		color: var(--ink-2);
		font-variant-numeric: tabular-nums;
	}

	.sessions-table td:first-child[b-cuowwkzzwz] {
		font-weight: 700;
		color: var(--ink);
		white-space: nowrap;
	}

.sessions-table__num[b-cuowwkzzwz] {
	font-weight: 700;
	color: var(--ink);
	white-space: nowrap;
}

.sessions-table__sets[b-cuowwkzzwz] {
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 260px;
	white-space: nowrap;
}

.pr-tag[b-cuowwkzzwz] {
	font-size: 0.62rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	background: var(--accent);
	color: var(--accent-ink);
	border-radius: var(--r-pill);
	padding: 2px 7px;
	margin-left: 7px;
	white-space: nowrap;
}

@media (max-width: 640px) {
	/* Toolbar stacks: full-width lift picker, metric tabs scroll if cramped */
	.progress-toolbar[b-cuowwkzzwz]  .field {
		flex: 1 1 100%;
	}

	.metric-tabs[b-cuowwkzzwz] {
		margin-left: 0;
		max-width: 100%;
		overflow-x: auto;
	}

	/* Sessions table collapses into one card per session */
	.sessions-table[b-cuowwkzzwz] {
		overflow-x: visible;
	}

		.sessions-table table[b-cuowwkzzwz] {
			min-width: 0;
		}

		.sessions-table thead[b-cuowwkzzwz] {
			display: none;
		}

		.sessions-table table[b-cuowwkzzwz],
		.sessions-table tbody[b-cuowwkzzwz],
		.sessions-table tr[b-cuowwkzzwz],
		.sessions-table td[b-cuowwkzzwz] {
			display: block;
		}

		.sessions-table tr[b-cuowwkzzwz] {
			border: 1px solid var(--hairline);
			border-radius: var(--r-ctl);
			padding: 4px 12px;
			margin-bottom: 10px;
		}

		.sessions-table tr:last-child[b-cuowwkzzwz] {
			margin-bottom: 0;
		}

		.sessions-table td[b-cuowwkzzwz] {
			display: flex;
			align-items: center;
			justify-content: space-between;
			gap: 14px;
			padding: 7px 0;
			border-bottom: none;
			text-align: right;
		}

		.sessions-table td[b-cuowwkzzwz]::before {
			content: attr(data-label);
			font-size: 0.66rem;
			font-weight: 700;
			text-transform: uppercase;
			letter-spacing: 0.08em;
			color: var(--ink-3);
			text-align: left;
			flex-shrink: 0;
		}

	.sessions-table__sets[b-cuowwkzzwz] {
		max-width: none;
		white-space: normal;
	}
}

@media (max-width: 575px) {
	.progress-hero[b-cuowwkzzwz] {
		gap: 14px;
	}

	/* Flavor copy goes; the metric tiles squeeze into one slim row. */
	.progress-hero__description[b-cuowwkzzwz] {
		display: none;
	}

	.progress-hero__metrics[b-cuowwkzzwz] {
		width: 100%;
		gap: 8px;
	}

	.hero-metric[b-cuowwkzzwz] {
		flex: 1 1 0;
		min-width: 0;
		padding: 10px 12px;
	}

		.hero-metric span[b-cuowwkzzwz] {
			font-size: 0.62rem;
		}

		.hero-metric strong[b-cuowwkzzwz] {
			font-size: 1.15rem;
		}
}
/* /Pages/Settings.razor.rz.scp.css */
.settings-hero__description[b-ngzgxvh0gf] {
	max-width: 48ch;
}

.settings-card[b-ngzgxvh0gf] {
	max-width: 560px;
}

.settings-form[b-ngzgxvh0gf] {
	display: grid;
	gap: 14px;
	text-align: left;
}

.settings-form__row[b-ngzgxvh0gf] {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

.settings-email[b-ngzgxvh0gf] {
	color: var(--ink-2);
	font-size: 0.95rem;
}

.settings-hint[b-ngzgxvh0gf] {
	font-size: 0.8rem;
	color: var(--ink-3);
}

.settings-consent[b-ngzgxvh0gf] {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 0.9rem;
	cursor: pointer;
}

	.settings-consent input[b-ngzgxvh0gf] {
		margin-top: 3px;
		accent-color: var(--primary);
	}

.settings-actions[b-ngzgxvh0gf] {
	display: flex;
	align-items: center;
	gap: 14px;
}

.settings-error[b-ngzgxvh0gf] {
	color: #d64545;
	font-size: 0.85rem;
}

.settings-saved[b-ngzgxvh0gf] {
	color: var(--primary);
	font-size: 0.85rem;
}

@media (max-width: 560px) {
	.settings-form__row[b-ngzgxvh0gf] {
		grid-template-columns: 1fr;
	}

	.settings-hero__description[b-ngzgxvh0gf] {
		display: none;
	}
}
