/*
 * Architect Hub page components.
 *
 * Loaded only by page-architect-hub.php. Layout utilities come from app.css;
 * this file owns the hub's own components (file strip, dividers, spec routes,
 * profile tiles, swatches, courses, reps) and references the theme's tokens
 * so it tracks any palette or type change made upstream.
 */

/* ---------- Hero ---------- */

.hub-hero__title {
	max-width: 26ch;
}

/* Phones: the 58-character H1 at display scale drowns the photograph.
   Step it down one size and drop the persistent rep link; the strip's
   "Your rep" and the closing section carry the same action there. */
@media (max-width: 959px) {
	.hub-hero__title {
		font-size: var(--text-4xl);
		line-height: var(--text-4xl--line-height);
	}

	.hub-hero__persistent {
		display: none;
	}
}

.hub-hero__kicker {
	color: var(--color-secondary);
}

.hub-hero__project {
	max-width: 36ch;
	margin-top: 0.5rem;
}

.hub-hero__detail {
	max-width: 44ch;
	margin-top: 0.5rem;
	font-size: var(--text-base);
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.85);
}

.hub-hero__persistent {
	margin-top: 2rem;
	padding-top: 1.25rem;
	border-top: 1px solid rgba(255, 255, 255, 0.18);
}

.hub-hero__rep-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
	color: #fff;
	text-decoration: underline;
	text-decoration-color: rgba(255, 255, 255, 0.4);
	text-underline-offset: 4px;
	transition: text-decoration-color 0.2s ease-out;
}

.hub-hero__rep-link:hover,
.hub-hero__rep-link:focus-visible {
	text-decoration-color: var(--color-secondary);
}

.hub-hero__rep-link:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 4px;
}

/* ---------- Intro ---------- */

.hub-intro__media {
	margin: 0;
}

.hub-intro__img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 0.25rem;
	background-color: var(--color-brand-900);
}

.hub-intro__caption {
	margin-top: 0.625rem;
	font-size: var(--text-sm);
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.7);
}

/* ---------- Project file strip ---------- */

.hub-file {
	position: sticky;
	top: 0;
	z-index: 30;
	background-color: #fff;
	border-bottom: 1px solid var(--color-brand-200);
	box-shadow: 0 6px 16px -12px rgba(11, 15, 21, 0.35);
}

.hub-file__inner {
	display: flex;
	align-items: stretch;
	gap: 1.25rem;
	min-height: 3.25rem;
}

.hub-file__label {
	display: none;
	align-items: center;
	padding-right: 1.25rem;
	border-right: 1px solid var(--color-brand-200);
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-sm);
	letter-spacing: var(--tracking-wide);
	text-transform: uppercase;
	color: var(--color-brand-500);
	white-space: nowrap;
}

.hub-file__list {
	display: flex;
	flex: 1 1 auto;
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	overflow-x: auto;
	scrollbar-width: none;
	scroll-snap-type: x proximity;
	-webkit-overflow-scrolling: touch;
}

.hub-file__list::-webkit-scrollbar {
	display: none;
}

/* Edge fade so a thumb knows the row scrolls. */
@media (max-width: 959px) {
	.hub-file__list {
		mask-image: linear-gradient(to right, #000 calc(100% - 2.5rem), transparent);
		-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 2.5rem), transparent);
		padding-right: 2.5rem;
	}
}

.hub-file__item {
	flex: none;
	scroll-snap-align: start;
}

.hub-file__link {
	position: relative;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	height: 100%;
	min-height: 3.25rem;
	padding: 0 0.875rem;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-sm);
	line-height: 1;
	color: var(--color-brand-600);
	text-decoration: none;
	white-space: nowrap;
	transition: color 0.2s ease-out;
}

.hub-file__link::after {
	content: "";
	position: absolute;
	left: 0.875rem;
	right: 0.875rem;
	bottom: 0;
	height: 3px;
	background-color: var(--color-primary);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.hub-file__n {
	font-variant-numeric: tabular-nums;
	font-size: var(--text-xs);
	color: var(--color-brand-400);
	transition: color 0.2s ease-out;
}

.hub-file__tick svg {
	width: 0.75rem;
	height: 0.75rem;
}

.hub-file__tick {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1rem;
	height: 1rem;
	border: 1px solid var(--color-brand-300);
	color: transparent;
	background-color: transparent;
	clip-path: polygon(3px 0, 100% 0, calc(100% - 3px) 100%, 0 100%);
	transition: background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out;
}

.hub-file__link:hover,
.hub-file__link:focus-visible,
.hub-file__link[aria-current="location"] {
	color: var(--color-brand-950);
}

.hub-file__link:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: -2px;
}

.hub-file__link[aria-current="location"]::after {
	transform: scaleX(1);
}

.hub-file__link[aria-current="location"] .hub-file__n {
	color: var(--color-primary);
}

.hub-file__item.is-passed .hub-file__tick {
	background-color: var(--color-secondary);
	border-color: var(--color-secondary);
	color: var(--color-brand-900);
}

@media (min-width: 960px) {
	.hub-file__label {
		display: flex;
	}

	.hub-file__inner {
		min-height: 3.5rem;
	}

	.hub-file__list {
		gap: 0.25rem;
	}

	.hub-file__link {
		min-height: 3.5rem;
		padding: 0 1rem;
		font-size: var(--text-base);
	}
}

/* ---------- Section dividers ---------- */

.hub-divider {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	column-gap: 1.25rem;
	align-items: start;
}

.hub-divider__n {
	font-family: var(--font-display);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	font-size: var(--text-sm);
	line-height: 1;
	padding: 0.4rem 0.6rem;
	margin-top: 0.35rem;
	color: var(--color-brand-900);
	background-color: var(--color-secondary);
	clip-path: polygon(6px 0, 100% 0, calc(100% - 6px) 100%, 0 100%);
}

.hub-divider__title {
	color: var(--color-brand-950);
}

.hub-divider--dark .hub-divider__title {
	color: #fff;
}

.hub-divider__lede {
	margin-top: 0.75rem;
}

.hub-divider--dark .hub-divider__lede {
	color: rgba(255, 255, 255, 0.85);
}

@media (min-width: 960px) {
	.hub-divider {
		column-gap: 1.75rem;
	}

	.hub-divider__n {
		font-size: var(--text-base);
		padding: 0.5rem 0.75rem;
		margin-top: 0.55rem;
	}
}

/* ---------- 01 Specification routes ---------- */

.hub-routes {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
	margin: 2.5rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-route__link {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"cta icon"
		"note icon";
	column-gap: 1rem;
	row-gap: 0.375rem;
	height: 100%;
	padding: 1.5rem;
	border: 1px solid var(--color-brand-200);
	background-color: #fff;
	color: var(--color-brand-900);
	text-decoration: none;
	transition: border-color 0.2s ease-out, box-shadow 0.2s ease-out, transform 0.2s ease-out;
}

.hub-route__link:hover {
	border-color: var(--color-primary);
	box-shadow: 0 10px 24px -16px rgba(11, 15, 21, 0.45);
}

.hub-route__link:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

.hub-route__cta {
	grid-area: cta;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-lg);
	line-height: 1.3;
}

.hub-route__note {
	grid-area: note;
	font-size: var(--text-sm);
	line-height: 1.5;
	color: var(--color-brand-600);
}

.hub-route__icon {
	grid-area: icon;
	align-self: start;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	color: var(--color-primary);
	background-color: var(--color-brand-50);
	transition: background-color 0.2s ease-out, color 0.2s ease-out;
}

.hub-route__link:hover .hub-route__icon {
	background-color: var(--color-primary);
	color: #fff;
}

@media (min-width: 782px) {
	.hub-routes {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.25rem;
		margin-top: 3rem;
	}
}

/* ---------- 02 Profiles ---------- */

.hub-group {
	margin-top: 3rem;
}

.hub-group + .hub-group {
	margin-top: 4rem;
}

.hub-group__head {
	max-width: 56rem;
}

.hub-group__count {
	display: inline-block;
	margin-left: 0.5rem;
	font-family: var(--font-sans);
	font-weight: 500;
	font-size: var(--text-sm);
	font-variant-numeric: tabular-nums;
	color: var(--color-brand-500);
	vertical-align: 0.15em;
}

.hub-group__lede {
	margin-top: 0.5rem;
	max-width: 62ch;
	font-size: var(--text-base);
	line-height: 1.6;
	color: var(--color-brand-600);
}

.hub-profiles {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.75rem;
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-profile {
	display: flex;
	flex-direction: column;
	height: 100%;
	background-color: #fff;
	border: 1px solid var(--color-brand-200);
	color: var(--color-brand-900);
	text-decoration: none;
	transition: border-color 0.2s ease-out, box-shadow 0.2s ease-out;
}

.hub-profile:hover {
	border-color: var(--color-primary);
	box-shadow: 0 10px 24px -16px rgba(11, 15, 21, 0.45);
}

.hub-profile:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

.hub-profile__media {
	position: relative;
	display: block;
	aspect-ratio: 2 / 1;
	background-color: #fff;
	border-bottom: 1px solid var(--color-brand-100);
	overflow: hidden;
}

.hub-profile__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 0.5rem;
}

.hub-profile__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.5rem;
	padding: 0.75rem 0.875rem 0.875rem;
}

.hub-profile__name {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-sm);
	line-height: 1.3;
}

.hub-profile__use {
	position: absolute;
	top: 0.5rem;
	right: 0.5rem;
	z-index: 1;
}

.hub-profile__use--roof {
	background-color: var(--color-brand-100);
	color: var(--color-brand-700);
}

.hub-profile__use--wall {
	background-color: var(--color-primary);
	color: #fff;
}

@media (min-width: 600px) {
	.hub-profiles {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1rem;
	}
}

@media (min-width: 960px) {
	.hub-profiles {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.25rem;
	}

	.hub-profile__name {
		font-size: var(--text-base);
	}
}

@media (min-width: 1280px) {
	.hub-profiles {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}

/* ---------- 03 Colors ---------- */

.hub-sri-note {
	margin-top: 1.5rem;
	max-width: 62ch;
	font-size: var(--text-sm);
	line-height: 1.6;
	color: var(--color-brand-600);
}

.hub-sri-note abbr {
	font-family: var(--font-display);
	font-weight: 600;
	text-decoration: none;
	color: var(--color-brand-900);
}

.hub-family {
	margin-top: 2.5rem;
}

.hub-family + .hub-family {
	margin-top: 3.5rem;
}

.hub-swatches {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem 0.75rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-swatch {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

.hub-swatch__chip {
	display: block;
	width: 100%;
	aspect-ratio: 25 / 14;
	border: 1px solid var(--color-brand-200);
	background-color: var(--color-brand-100);
}

.hub-swatch__name {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-sm);
	line-height: 1.3;
	color: var(--color-brand-900);
}

.hub-swatch__sri {
	font-size: var(--text-sm);
	font-variant-numeric: tabular-nums;
	line-height: 1.2;
	color: var(--color-brand-600);
}

.hub-swatch__sri-label {
	font-size: var(--text-xs);
	letter-spacing: var(--tracking-wide);
	color: var(--color-brand-500);
}

@media (min-width: 600px) {
	.hub-swatches {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.25rem 1rem;
	}
}

@media (min-width: 960px) {
	.hub-swatches {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.hub-swatches {
		grid-template-columns: repeat(7, minmax(0, 1fr));
	}
}

.hub-colors-layout {
	display: grid;
	grid-template-columns: 1fr;
	gap: 3rem;
}

.hub-colors-card {
	margin-top: 4rem;
	padding-top: 2.5rem;
	border-top: 1px solid var(--color-brand-200);
}

@media (min-width: 960px) {
	.hub-colors-layout {
		grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
		gap: 3rem;
		align-items: start;
	}

	/* Not sticky: the HubSpot form is taller than most viewports, so pinning it would hide its submit button. */
	.hub-colors-form {
		margin-top: 2.5rem;
	}

	.hub-colors-main .hub-swatches {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.hub-colors-main .hub-swatches {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}

/* ---------- Forms ---------- */

/*
 * HubSpot renders these forms inside an iframe with its own dark label
 * colours, which this stylesheet cannot reach. Every form therefore sits on
 * a white card so the labels stay readable.
 */
.hub-form {
	padding: 1.5rem;
	background-color: #fff;
	border: 1px solid var(--color-brand-200);
	border-radius: 0.25rem;
	box-shadow: 0 20px 40px -24px rgba(11, 15, 21, 0.35);
}

.hub-form--subscribe {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
	margin-top: 3rem;
}

.hub-form--department {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
	margin-top: 4rem;
	padding: 0;
	background: none;
	border: 0;
	box-shadow: none;
}

.hub-hs-form {
	min-height: 6rem;
}

.hub-form__card {
	padding: 1.5rem;
	background-color: #fff;
	border-radius: 0.25rem;
	box-shadow: 0 20px 40px -24px rgba(11, 15, 21, 0.6);
}

@media (min-width: 960px) {
	.hub-form {
		padding: 2rem;
	}

	.hub-form--subscribe {
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		gap: 4rem;
		align-items: start;
	}

	.hub-form__card {
		padding: 2rem;
	}
}

/* ---------- 04 Documents & BIM ---------- */

.hub-embed {
	margin-top: 3rem;
}

.hub-embed + .hub-embed {
	margin-top: 4rem;
}

.hub-embed__frame {
	background-color: #fff;
	border: 1px solid var(--color-brand-200);
	min-height: 12rem;
}

/*
 * The Outgrow selector loads late, and its final height varies with screen
 * size. Hold space only until its iframe arrives so the sections below jump
 * less; after that the frame fits the iframe exactly. architect-hub.js
 * re-lands a strip link if the selector still moves its target.
 */
[data-hub-outgrow]:not(:has(iframe)) {
	min-height: 40rem;
}

.hub-embed__frame--bim iframe {
	display: block;
	width: 100%;
	height: 600px;
	border: 0;
}

/* ---------- 05 Projects ---------- */

/* Photographs lead: a 2-up grid on phones, 4-up on desktop, 4:3 frames. */
.hub-photos {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin: 3rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-photo {
	margin: 0;
}

.hub-photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 0.25rem;
	background-color: var(--color-brand-100);
}

.hub-photo__caption {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
	margin-top: 0.625rem;
}

.hub-photo__name {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
	line-height: 1.3;
	color: var(--color-brand-900);
}

.hub-photo__detail {
	font-size: var(--text-sm);
	line-height: 1.4;
	color: var(--color-brand-600);
}

@media (min-width: 960px) {
	.hub-photos {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.5rem;
	}
}

/* Case studies: compact linked cards under the photographs. */
.hub-cases {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-case {
	display: flex;
	flex-direction: column;
	height: 100%;
	color: inherit;
	text-decoration: none;
}

.hub-case__media {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: 0.25rem;
	background-color: var(--color-brand-100);
}

.hub-case__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.hub-case:hover .hub-case__media img {
	transform: scale(1.03);
}

.hub-case__title {
	margin-top: 0.875rem;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-lg);
	line-height: 1.3;
	color: var(--color-brand-900);
}

.hub-case__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	margin-top: 0.5rem;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
	color: var(--color-primary-ink);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-color: rgba(38, 138, 202, 0.4);
	transition: text-decoration-color 0.2s ease-out;
}

.hub-case:hover .hub-case__cta,
.hub-case:focus-visible .hub-case__cta {
	text-decoration-color: currentColor;
}

.hub-case:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 4px;
}

@media (min-width: 782px) {
	.hub-cases {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.hub-textlink {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
	color: var(--color-primary-ink);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-color: rgba(38, 138, 202, 0.4);
	transition: text-decoration-color 0.2s ease-out;
}

.hub-textlink:hover,
.hub-textlink:focus-visible {
	text-decoration-color: currentColor;
}

/* ---------- 06 Learning ---------- */

.hub-courses {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin: 3rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-course {
	display: flex;
	flex-direction: column;
	height: 100%;
	background-color: #fff;
	border: 1px solid var(--color-brand-200);
	color: var(--color-brand-900);
	text-decoration: none;
	transition: border-color 0.2s ease-out, box-shadow 0.2s ease-out;
}

.hub-course:hover {
	border-color: var(--color-primary);
	box-shadow: 0 10px 24px -16px rgba(11, 15, 21, 0.45);
}

.hub-course:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

.hub-course__media {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background-color: var(--color-brand-100);
}

.hub-course__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hub-course__body {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	padding: 0.875rem 1rem 1rem;
}

.hub-course__title {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
	line-height: 1.3;
}

.hub-course__cta {
	font-size: var(--text-sm);
	color: var(--color-primary-ink);
}

@media (min-width: 960px) {
	.hub-courses {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.25rem;
	}
}

.hub-learning {
	margin-top: 5rem;
	padding-top: 3rem;
	border-top: 1px solid var(--color-brand-200);
}

.hub-articles {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
	margin: 2.5rem 0 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 960px) {
	.hub-articles {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.5rem;
	}
}

/* ---------- Partners ---------- */

.hub-partners__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin: 2.5rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-partners__link {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	min-height: 5rem;
	padding: 0.75rem 1rem 0.75rem 0.75rem;
	border: 1px solid var(--color-brand-200);
	background-color: #fff;
	color: var(--color-brand-900);
	text-decoration: none;
	transition: border-color 0.2s ease-out;
}

.hub-partners__link:hover {
	border-color: var(--color-primary);
}

.hub-partners__link:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

.hub-partners__link img {
	flex: none;
	width: 3.5rem;
	height: 3.5rem;
	object-fit: contain;
}

.hub-partners__name {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-sm);
	line-height: 1.3;
}

@media (min-width: 600px) {
	.hub-partners__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.hub-partners__list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.25rem;
	}

	.hub-partners__link img {
		width: 4rem;
		height: 4rem;
	}

	.hub-partners__name {
		font-size: var(--text-base);
	}
}

/* ---------- 07 Reps ---------- */

.hub-reps-layout {
	display: grid;
	grid-template-columns: 1fr;
	margin-top: 2.5rem;
}

.hub-lookup {
	max-width: 36rem;
}

.hub-lookup__label {
	display: block;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
	color: #fff;
}

.hub-lookup__row {
	display: flex;
	gap: 0.75rem;
	margin-top: 0.625rem;
}

.hub-lookup__select {
	flex: 1 1 auto;
	min-height: 3rem;
	padding: 0 2.5rem 0 1rem;
	font-family: var(--font-sans);
	font-size: var(--text-base);
	color: var(--color-brand-900);
	background-color: #fff;
	border: 1px solid #fff;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232f3c4f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.875rem center;
	background-size: 1rem 1rem;
}

.hub-lookup__select:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
}

.hub-lookup__result {
	min-height: 1.5rem;
	margin-top: 0.75rem;
	font-size: var(--text-base);
	line-height: 1.5;
	color: #fff;
}

.hub-lookup__result:empty {
	display: none;
}

.hub-lookup__result strong {
	font-family: var(--font-display);
	font-weight: 600;
}

.hub-rep-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem;
	margin: 2.5rem 0 0;
	padding: 0;
	list-style: none;
}

.hub-rep {
	display: grid;
	grid-template-columns: 6rem minmax(0, 1fr);
	gap: 1.25rem;
	padding: 1.25rem;
	background-color: rgba(11, 15, 21, 0.28);
	border: 1px solid rgba(255, 255, 255, 0.18);
	transition: background-color 0.3s ease-out, border-color 0.3s ease-out, opacity 0.3s ease-out;
}

.hub-rep.is-match {
	background-color: var(--color-brand-950);
	border-color: var(--color-secondary);
}

.hub-rep.is-dimmed {
	opacity: 0.55;
}

.hub-rep__photo {
	width: 6rem;
	height: 6rem;
	object-fit: cover;
	object-position: top;
}

.hub-rep__states {
	margin-top: 0.5rem;
	font-size: var(--text-sm);
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.85);
}

.hub-rep__states-label {
	font-family: var(--font-display);
	font-weight: 600;
	color: #fff;
}

.hub-rep__contact {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 2rem;
	margin: 1rem 0 0;
}

.hub-rep__contact dt {
	font-size: var(--text-xs);
	letter-spacing: var(--tracking-wide);
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.7);
}

.hub-rep__contact dd {
	margin: 0.125rem 0 0;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--text-base);
}

.hub-rep__contact a {
	color: #fff;
	text-decoration: underline;
	text-decoration-color: rgba(255, 255, 255, 0.4);
	text-underline-offset: 4px;
	overflow-wrap: anywhere;
}

.hub-rep__contact a:hover,
.hub-rep__contact a:focus-visible {
	text-decoration-color: var(--color-secondary);
}

.hub-rep__contact a:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
}

@media (min-width: 782px) {
	.hub-rep-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 1.5rem;
	}

	.hub-rep {
		grid-template-columns: 7.5rem minmax(0, 1fr);
		gap: 1.5rem;
		padding: 1.5rem;
	}

	.hub-rep__photo {
		width: 7.5rem;
		height: 7.5rem;
	}
}

@media (min-width: 960px) {
	.hub-reps-layout {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: 4rem;
		align-items: start;
	}

	.hub-reps-layout .hub-lookup {
		max-width: none;
	}

	.hub-reps-layout .hub-rep-list {
		grid-template-columns: 1fr;
	}

	.hub-reps-layout .hub-form--department {
		margin-top: 0;
	}
}

/* ---------- Motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.hub-file__link::after,
	.hub-file__tick,
	.hub-route__link,
	.hub-profile,
	.hub-course,
	.hub-case__media img,
	.hub-rep {
		transition: none;
	}

	.hub-case:hover .hub-case__media img {
		transform: none;
	}
}
