/**
 * CARP SELECT Session Planner.
 *
 * This component deliberately relies on the public design tokens defined in
 * site.css. It is mobile-first, keeps native form controls operable, and does
 * not require JavaScript for its visual hierarchy.
 */

.cs-session-planner {
	display: grid;
	gap: var(--cs-space-lg);
	min-inline-size: 0;
	padding: var(--cs-space-md);
	border: 1px solid var(--cs-border);
	border-inline-start: 2px solid var(--cs-olive);
	background: var(--cs-surface);
}

.cs-session-planner__intro {
	display: grid;
	gap: var(--cs-space-xs);
	align-content: start;
	max-inline-size: 48rem;
}

.cs-session-planner__intro > :is(h1, h2, h3) {
	max-inline-size: 16ch;
	font-size: clamp(2.1rem, 1.7rem + 2.1vw, 3.6rem);
	line-height: 1;
}

.cs-session-planner__intro > p:not(.cs-eyebrow) {
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: clamp(1rem, 0.96rem + 0.2vw, 1.12rem);
}

.cs-session-planner__privacy,
.cs-session-planner__noscript {
	padding: var(--cs-space-xs) var(--cs-space-sm);
	border-inline-start: 2px solid var(--cs-olive);
	background: rgb(36 42 36 / 56%);
	color: var(--cs-text-subtle);
	font-size: 0.88rem;
	line-height: 1.5;
}

.cs-session-planner__noscript {
	border-inline-start-color: var(--cs-accent);
}

.cs-session-planner__form {
	display: grid;
	gap: var(--cs-space-lg);
	min-inline-size: 0;
}

.cs-session-planner__progress {
	margin: 0;
	color: var(--cs-muted);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	line-height: 1.3;
	text-transform: uppercase;
}

.cs-session-planner__steps {
	display: grid;
	padding: 0;
	margin: 0;
	list-style: none;
}

.cs-session-planner__step {
	display: grid;
	gap: var(--cs-space-sm);
	min-inline-size: 0;
	padding: var(--cs-space-md) 0 0;
	margin: 0;
	border: 0;
	border-block-start: 1px solid var(--cs-border);
}

.cs-session-planner__step fieldset {
	display: grid;
	gap: var(--cs-space-sm);
	min-inline-size: 0;
	padding: 0;
	margin: 0;
	border: 0;
}

.cs-session-planner__step legend {
	max-inline-size: 26ch;
	padding: 0;
	margin: 0;
	font-family: var(--cs-font-display);
	font-size: clamp(1.5rem, 1.3rem + 0.85vw, 2.1rem);
	font-weight: 500;
	line-height: 1.06;
}

.cs-session-planner__step-number {
	display: inline-block;
	margin-inline-end: 0.62rem;
	color: var(--cs-accent);
	font-family: var(--cs-font-body);
	font-size: 0.62em;
	font-weight: 800;
	letter-spacing: 0.1em;
	vertical-align: 0.16em;
}

.cs-session-planner__step-copy {
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: 0.94rem;
}

.cs-session-planner__fields {
	display: grid;
	gap: var(--cs-space-sm);
	min-inline-size: 0;
}

.cs-session-planner__field {
	display: grid;
	gap: 0.45rem;
	min-inline-size: 0;
}

.cs-session-planner__field > label,
.cs-session-question > legend,
.cs-session-question > label {
	color: var(--cs-muted);
	font-size: 0.7rem;
	font-weight: 750;
	letter-spacing: 0.1em;
	line-height: 1.35;
	text-transform: uppercase;
}

.cs-session-planner :is(
	input:not([type]),
	input[type="date"],
	input[type="datetime-local"],
	input[type="email"],
	input[type="month"],
	input[type="number"],
	input[type="password"],
	input[type="search"],
	input[type="tel"],
	input[type="text"],
	input[type="time"],
	input[type="url"],
	input[type="week"],
	select,
	textarea
) {
	inline-size: 100%;
	min-block-size: 3rem;
	padding: 0.7rem 0.8rem;
	border: 1px solid var(--cs-border-strong);
	border-radius: 0;
	background: var(--cs-bg);
	color: var(--cs-text);
	font: inherit;
	line-height: 1.4;
	transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.cs-session-planner textarea {
	min-block-size: 8rem;
	resize: vertical;
}

.cs-session-planner :is(input, textarea)::placeholder {
	color: var(--cs-muted);
	opacity: 1;
}

.cs-session-planner :is(input, select, textarea):hover:not(:disabled) {
	border-color: var(--cs-text-subtle);
}

.cs-session-planner :is(input, select, textarea):focus-visible {
	border-color: var(--cs-accent);
	box-shadow: var(--cs-focus-ring);
	outline: 0;
}

.cs-session-planner :is(input, select, textarea)[aria-invalid="true"] {
	border-inline-start-width: 3px;
	border-color: var(--cs-accent);
}

.cs-session-planner__field-help,
.cs-session-planner__field [role="alert"] {
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: 0.82rem;
	line-height: 1.45;
}

.cs-session-planner__field-tip {
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: 0.82rem;
	line-height: 1.5;
}

.cs-session-planner__field-tip summary {
	inline-size: fit-content;
	cursor: pointer;
	color: var(--cs-accent);
	font-size: 0.76rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	line-height: 1.35;
	text-transform: uppercase;
}

.cs-session-planner__field-tip summary:focus-visible {
	outline: 2px solid var(--cs-accent);
	outline-offset: 3px;
}

.cs-session-planner__field-tip p {
	margin: 0.42rem 0 0;
}

.cs-session-planner__field-help,

.cs-session-planner__field-tip,
.cs-session-insight li,
.cs-session-question li,
.cs-session-protocol li,
.cs-session-summary dd {
	overflow-wrap: anywhere;
}

.cs-session-planner__choices {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 0.55rem;
	padding: 0;
	margin: 0;
	list-style: none;
}

.cs-session-planner__choices > li {
	min-inline-size: 0;
	list-style: none;
}

.cs-session-planner__choices label {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 0.7rem;
	align-items: start;
	min-block-size: 3.25rem;
	padding: 0.78rem 0.85rem;
	border: 1px solid var(--cs-border);
	background: var(--cs-bg);
	color: var(--cs-text-subtle);
	font-size: 0.92rem;
	font-weight: 650;
	letter-spacing: normal;
	line-height: 1.4;
	text-transform: none;
	transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.cs-session-planner__choices :is(input[type="checkbox"], input[type="radio"]) {
	inline-size: 1.1rem;
	block-size: 1.1rem;
	padding: 0;
	margin: 0.1rem 0 0;
	accent-color: var(--cs-accent);
}

.cs-session-planner__choices label:hover {
	border-color: var(--cs-border-strong);
	color: var(--cs-text);
}

.cs-session-planner__choices label:focus-within {
	border-color: var(--cs-accent);
	box-shadow: var(--cs-focus-ring);
}

@supports selector(label:has(input:checked)) {
	.cs-session-planner__choices label:has(:is(input[type="checkbox"], input[type="radio"]):checked) {
		border-color: var(--cs-accent);
		background: var(--cs-surface-2);
		color: var(--cs-text);
	}
}

.cs-session-planner input[type="range"] {
	inline-size: 100%;
	margin: 0;
	accent-color: var(--cs-accent);
}

.cs-session-planner__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cs-space-xs);
	padding-block-start: var(--cs-space-md);
	border-block-start: 1px solid var(--cs-border);
}

.cs-session-planner :is(.cs-session-planner__actions, .cs-session-planner__results-actions) .cs-text-link {
	min-block-size: 2.75rem;
	padding: 0;
	border-block-start: 0;
	border-inline: 0;
	border-radius: 0;
	background: transparent;
}

.cs-session-planner__actions .cs-button {
	flex: 1 1 12rem;
	max-inline-size: 100%;
}

.cs-session-planner__results {
	display: grid;
	gap: var(--cs-space-md);
	min-inline-size: 0;
	padding: var(--cs-space-md);
	border: 1px solid var(--cs-border);
	border-inline-start: 2px solid var(--cs-accent);
	background: var(--cs-surface-2);
}

.cs-session-planner__results-intro {
	display: grid;
	gap: var(--cs-space-xs);
}

.cs-session-planner__results-intro > .cs-eyebrow {
	margin: 0;
}

.cs-session-planner__results-title {
	max-inline-size: 22ch;
	margin: 0;
	font-size: clamp(1.65rem, 1.4rem + 1vw, 2.35rem);
	line-height: 1.04;
}

.cs-session-planner__results-grid {
	display: grid;
	gap: var(--cs-space-sm);
}

.cs-session-insight,
.cs-session-question,
.cs-session-protocol {
	display: grid;
	gap: var(--cs-space-xs);
	min-inline-size: 0;
	margin: 0;
	padding: var(--cs-space-sm);
	border: 1px solid var(--cs-border);
	background: var(--cs-bg);
}

.cs-session-insight {
	border-inline-start: 2px solid var(--cs-accent);
}

.cs-session-question {
	border-inline-start: 2px solid var(--cs-olive);
}

.cs-session-protocol {
	border-inline-start: 2px solid var(--cs-text-subtle);
}

.cs-session-insight > :is(h2, h3, h4),
.cs-session-question > :is(h2, h3, h4, legend),
.cs-session-protocol > :is(h2, h3, h4, legend) {
	padding: 0;
	margin: 0;
	font-family: var(--cs-font-display);
	font-size: clamp(1.22rem, 1.1rem + 0.5vw, 1.55rem);
	font-weight: 500;
	line-height: 1.1;
}

.cs-session-insight > p,
.cs-session-question > p {
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: 0.94rem;
}

.cs-session-protocol > p {
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: 0.94rem;
}

.cs-session-insight :is(ul, ol),
.cs-session-question :is(ul, ol),
.cs-session-protocol :is(ul, ol) {
	display: grid;
	gap: 0.55rem;
	padding-inline-start: 1.25rem;
	margin: 0;
	color: var(--cs-text-subtle);
	font-size: 0.92rem;
	line-height: 1.5;
}

.cs-session-insight ul {
	padding-inline-start: 1.08rem;
}

.cs-session-insight li::marker,
.cs-session-question li::marker,
.cs-session-protocol li::marker {
	color: var(--cs-accent);
	font-weight: 800;
}

/* Expected summary markup: <dl class="cs-session-summary"><div><dt>…</dt><dd>…</dd></div></dl>. */
.cs-session-summary {
	display: grid;
	gap: 1px;
	padding: 0;
	margin: 0;
	border: 1px solid var(--cs-border);
	background: var(--cs-border);
}

.cs-session-summary > div {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: var(--cs-space-sm);
	align-items: baseline;
	padding: 0.78rem var(--cs-space-sm);
	background: var(--cs-surface);
}

.cs-session-summary dt {
	margin: 0;
	color: var(--cs-muted);
	font-size: 0.67rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	line-height: 1.3;
	text-transform: uppercase;
}

.cs-session-summary dd {
	margin: 0;
	color: var(--cs-text);
	font-size: 0.92rem;
	font-weight: 650;
	line-height: 1.4;
	text-align: end;
}

.cs-session-summary dd.is-unknown {
	color: var(--cs-muted);
	font-weight: 500;
}

.cs-session-planner__results-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cs-space-xs);
	padding-block-start: var(--cs-space-sm);
	border-block-start: 1px solid var(--cs-border);
}

@media (min-width: 42rem) {
	.cs-session-planner {
		padding: var(--cs-space-lg);
	}

	.cs-session-planner__choices {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cs-session-planner__fields {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cs-session-planner__fields > .cs-session-planner__field:last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}

	.cs-session-planner__actions .cs-button {
		flex: 0 1 auto;
	}
}

@media (min-width: 68rem) {
	.cs-session-planner {
		grid-template-columns: minmax(15rem, 0.72fr) minmax(0, 1.28fr);
		column-gap: var(--cs-space-xl);
		align-items: start;
	}

	.cs-session-planner__intro {
		position: sticky;
		inset-block-start: calc(var(--cs-header-height) + var(--cs-space-sm));
	}

	.cs-session-planner > .cs-session-planner__form,
	.cs-session-planner > .cs-session-planner__results {
		grid-column: 2;
	}

	.cs-session-planner__results-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (prefers-reduced-motion: reduce) {
	.cs-session-planner :is(input, select, textarea),
	.cs-session-planner__choices label {
		transition: none;
	}
}

@media (forced-colors: active) {
	.cs-session-planner,
	.cs-session-planner__results,
	.cs-session-insight,
	.cs-session-question,
	.cs-session-protocol,
	.cs-session-summary,
	.cs-session-summary > div,
	.cs-session-planner__choices label {
		border-color: CanvasText;
		background: Canvas;
		color: CanvasText;
	}

	.cs-session-planner :is(input, select, textarea) {
		border-color: CanvasText;
		background: Field;
		color: FieldText;
	}
}

@media print {
	.cs-site-header,
	.cs-site-footer,
	.cs-session-planner__form,
	.cs-session-planner__results-actions {
		display: none;
	}

	.cs-session-planner,
	.cs-session-planner__results,
	.cs-session-insight,
	.cs-session-question,
	.cs-session-protocol,
	.cs-session-summary,
	.cs-session-summary > div {
		border-color: #222;
		background: #fff;
		color: #111;
	}

	.cs-session-planner :is(h1, h2, h3, p, li, dt, dd) {
		color: #111;
	}
}
