:root {
	--g2-cyan: #00d8ff;
	--g2-orange: #ff8a00;
	--g2-bg: #071013;
	--g2-surface: #0d1a1f;
	--g2-surface-2: #13262c;
	--g2-text: #edf8fb;
	--g2-muted: #a8b7bd;
	--g2-line: rgba(237, 248, 251, 0.16);
	--g2-shadow: 0 18px 48px rgba(0, 0, 0, 0.32);
	--g2-radius: 8px;
	--g2-wrap: min(1120px, calc(100vw - 32px));
	color-scheme: dark;
}

:root[data-theme="light"] {
	--g2-bg: #f7fbfc;
	--g2-surface: #ffffff;
	--g2-surface-2: #edf4f6;
	--g2-text: #101820;
	--g2-muted: #5c6870;
	--g2-line: rgba(16, 24, 32, 0.14);
	--g2-shadow: 0 18px 48px rgba(16, 24, 32, 0.1);
	color-scheme: light;
}

:root[data-theme="dark"] {
	--g2-bg: #071013;
	--g2-surface: #0d1a1f;
	--g2-surface-2: #13262c;
	--g2-text: #edf8fb;
	--g2-muted: #a8b7bd;
	--g2-line: rgba(237, 248, 251, 0.16);
	--g2-shadow: 0 18px 48px rgba(0, 0, 0, 0.32);
	color-scheme: dark;
}

* {
	box-sizing: border-box;
}

body {
	margin: 0;
	background: var(--g2-bg);
	color: var(--g2-text);
	font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	line-height: 1.6;
}

img,
iframe {
	max-width: 100%;
}

img {
	height: auto;
	display: block;
}

a {
	color: inherit;
	text-decoration-color: color-mix(in srgb, var(--g2-cyan), transparent 55%);
	text-underline-offset: 0.18em;
}

h1,
h2,
h3 {
	margin: 0;
	line-height: 1.1;
	font-family: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
	font-weight: 700;
}

p {
	margin: 0;
}

.wrap {
	width: var(--g2-wrap);
	margin-inline: auto;
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.skip-link:focus {
	top: 12px;
	left: 12px;
	width: auto;
	height: auto;
	padding: 10px 14px;
	clip: auto;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	z-index: 100;
}

.site-header {
	position: sticky;
	top: 0;
	z-index: 20;
	background: color-mix(in srgb, var(--g2-bg), transparent 8%);
	border-bottom: 1px solid var(--g2-line);
	backdrop-filter: blur(14px);
}

.site-header__inner {
	position: relative;
	min-height: 76px;
	display: grid;
	grid-template-columns: auto auto 1fr auto;
	gap: 20px;
	align-items: center;
}

.brand {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	text-decoration: none;
}

.brand__mark {
	display: block;
	width: 64px;
	height: 64px;
	object-fit: contain;
}

.brand__text {
	display: grid;
	gap: 2px;
}

.brand__text strong {
	font-family: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
	font-size: 1rem;
	line-height: 1;
}

.brand__text small {
	color: var(--g2-orange);
	font-size: 0.78rem;
	line-height: 1.2;
}

.site-nav {
	position: absolute;
	inset: calc(100% + 8px) auto auto 0;
	display: none;
	min-width: 230px;
	padding: 10px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	box-shadow: var(--g2-shadow);
	z-index: 30;
}

.site-nav.is-open {
	display: block;
}

.site-nav__list {
	display: grid;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-nav a {
	display: block;
	padding: 10px 12px;
	border-radius: 6px;
	color: var(--g2-muted);
	text-decoration: none;
	font-size: 0.94rem;
}

.site-nav a:hover,
.site-nav a:focus {
	background: var(--g2-surface-2);
	color: var(--g2-text);
}

.site-header-links {
	justify-self: end;
	display: flex;
	align-items: center;
	gap: 6px;
}

.site-header-links a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	padding: 0 10px;
	border-radius: 6px;
	color: var(--g2-muted);
	font-size: 0.94rem;
	font-weight: 700;
	text-decoration: none;
}

.site-header-links a:hover,
.site-header-links a:focus {
	background: var(--g2-surface-2);
	color: var(--g2-text);
}

.nav-toggle,
.theme-toggle,
.filter-toggle,
.button,
.project-search button {
	min-height: 42px;
	border: 1px solid var(--g2-line);
	border-radius: 6px;
	background: var(--g2-surface);
	color: var(--g2-text);
	cursor: pointer;
	font: inherit;
}

.nav-toggle {
	display: inline-grid;
	place-items: center;
	width: 44px;
	padding: 0;
}

.nav-toggle__bar,
.nav-toggle__bar::before,
.nav-toggle__bar::after {
	display: block;
	width: 18px;
	height: 2px;
	margin-inline: auto;
	background: currentColor;
	content: "";
}

.nav-toggle__bar::before {
	transform: translateY(-6px);
}

.nav-toggle__bar::after {
	transform: translateY(4px);
}

.theme-toggle {
	justify-self: end;
	width: 44px;
	padding: 0;
}

.theme-toggle__icon {
	display: block;
	width: 18px;
	height: 18px;
	margin: auto;
	border-radius: 50%;
	background: linear-gradient(90deg, var(--g2-cyan) 50%, var(--g2-orange) 50%);
}

.g2fab-ticker {
	overflow: hidden;
	background: var(--g2-surface);
	border-top: 1px solid var(--g2-line);
}

.g2fab-ticker__viewport {
	width: 100%;
	overflow: hidden;
}

.g2fab-ticker__track {
	width: max-content;
	display: inline-flex;
	align-items: center;
	gap: 30px;
	min-height: 38px;
	padding-left: 100%;
	white-space: nowrap;
	animation: g2fab-ticker-scroll var(--g2fab-ticker-duration, 32s) linear infinite;
}

.g2fab-ticker:hover .g2fab-ticker__track,
.g2fab-ticker:focus-within .g2fab-ticker__track {
	animation-play-state: paused;
}

.g2fab-ticker__link {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 9px;
	min-height: 38px;
	color: var(--g2-text);
	font-size: 0.9rem;
	font-weight: 700;
	text-decoration: none;
}

.g2fab-ticker__link::before {
	width: 7px;
	height: 7px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--g2-orange);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--g2-orange), transparent 78%);
	content: "";
}

.g2fab-ticker__link:hover,
.g2fab-ticker__link:focus {
	color: var(--g2-cyan);
}

@keyframes g2fab-ticker-scroll {
	to {
		transform: translateX(-100%);
	}
}

.blueprint-surface {
	background-color: var(--g2-surface);
	background-image:
		linear-gradient(var(--g2-line) 1px, transparent 1px),
		linear-gradient(90deg, var(--g2-line) 1px, transparent 1px);
	background-size: 40px 40px;
}

.home-hero {
	border-bottom: 1px solid var(--g2-line);
}

.home-hero__inner {
	min-height: min(560px, calc(100vh - 148px));
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(320px, 430px);
	gap: 40px;
	align-items: center;
	padding: 46px 0;
}

.home-hero__copy {
	max-width: 680px;
	display: grid;
	gap: 16px;
}

.home-hero h1 {
	max-width: 10ch;
	font-size: clamp(3rem, 7vw, 5.8rem);
}

.home-hero p:not(.eyebrow) {
	max-width: 58ch;
	color: var(--g2-muted);
	font-size: 1.13rem;
}

.eyebrow {
	color: var(--g2-orange);
	font-family: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
	font-size: 0.82rem;
	font-weight: 700;
	text-transform: uppercase;
}

.button {
	display: inline-flex;
	width: fit-content;
	align-items: center;
	justify-content: center;
	padding: 10px 16px;
	text-decoration: none;
}

.button--primary {
	background: var(--g2-cyan);
	border-color: transparent;
	color: #061013;
	font-weight: 700;
}

.button--ghost {
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	color: var(--g2-text);
	font-weight: 700;
}

.button--ghost:hover,
.button--ghost:focus {
	border-color: var(--g2-cyan);
	color: var(--g2-cyan);
}

.home-section {
	padding: 46px 0;
}

.home-section__cta {
	display: flex;
	width: 100%;
	justify-content: center;
	margin: 48px 0 18px;
	text-align: center;
}

.section-heading {
	margin-bottom: 22px;
}

.section-heading--split {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 16px;
}

.section-heading--split a {
	color: var(--g2-muted);
	font-weight: 700;
	text-decoration: none;
}

.section-heading--split a:hover,
.section-heading--split a:focus {
	color: var(--g2-text);
}

.category-grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 12px;
}

.category-card {
	min-height: 96px;
	display: grid;
	place-items: center;
	gap: 10px;
	padding: 18px 14px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	text-decoration: none;
	font-family: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
	font-weight: 700;
	text-align: center;
}

.category-card__icon {
	width: 52px;
	height: 52px;
	display: grid;
	place-items: center;
	color: var(--g2-cyan);
}

.category-card__icon img {
	width: 100%;
	height: 100%;
	display: block;
	filter: brightness(0) saturate(100%) invert(67%) sepia(99%) saturate(1700%) hue-rotate(142deg) brightness(104%) contrast(104%);
}

.category-card:hover,
.category-card:focus {
	border-color: color-mix(in srgb, var(--g2-cyan), transparent 40%);
	background: var(--g2-surface-2);
}

.category-card:hover .category-card__icon,
.category-card:focus .category-card__icon {
	color: var(--g2-orange);
}

.category-card:hover .category-card__icon img,
.category-card:focus .category-card__icon img {
	filter: brightness(0) saturate(100%) invert(61%) sepia(97%) saturate(1465%) hue-rotate(360deg) brightness(101%) contrast(105%);
}

.project-dashboard {
	padding: 42px 0 72px;
}

.dashboard-header {
	display: grid;
	grid-template-columns: 1fr minmax(280px, 420px);
	gap: 20px;
	align-items: end;
	margin-bottom: 24px;
}

.dashboard-header h1 {
	margin-top: 6px;
	font-size: clamp(2.2rem, 5vw, 4rem);
}

.project-search {
	display: flex;
	gap: 8px;
}

.project-search input {
	min-width: 0;
	flex: 1;
	padding: 0 12px;
	border: 1px solid var(--g2-line);
	border-radius: 6px;
	background: var(--g2-surface);
	color: var(--g2-text);
	font: inherit;
}

.project-search button {
	padding: 0 14px;
}

.filter-toggle {
	display: none;
	padding: 0 14px;
}

.dashboard-layout {
	display: grid;
	grid-template-columns: 240px 1fr;
	gap: 28px;
	align-items: start;
}

.dashboard-filters {
	position: sticky;
	top: 96px;
	padding: 18px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
}

.dashboard-filters h2 {
	font-size: 1rem;
	margin-bottom: 16px;
}

.filter-group + .filter-group {
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid color-mix(in srgb, var(--g2-line), var(--g2-cyan) 22%);
}

.filter-group h3 {
	margin-bottom: 8px;
	color: var(--g2-muted);
	font-size: 0.84rem;
	text-transform: uppercase;
}

.filter-group ul {
	display: grid;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.filter-group a {
	display: block;
	padding: 7px 8px;
	border-radius: 6px;
	text-decoration: none;
}

.filter-group a:hover,
.filter-group a:focus {
	background: var(--g2-surface-2);
}

.dashboard-filters .filter-group a.is-active,
.dashboard-filters .filter-group a[aria-current="page"] {
	position: relative;
	padding-left: 18px;
	background: var(--g2-cyan);
	color: #061013;
	font-weight: 700;
	text-decoration: none;
}

.dashboard-filters .filter-group a.is-active::before,
.dashboard-filters .filter-group a[aria-current="page"]::before {
	position: absolute;
	inset: 7px auto 7px 7px;
	width: 3px;
	border-radius: 999px;
	background: var(--g2-orange);
	content: "";
}

.project-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 18px;
}

.project-infinite-scroll {
	display: grid;
	justify-items: center;
	gap: 10px;
	padding: 28px 0 4px;
}

.project-infinite-scroll__sentinel {
	width: 100%;
	min-height: 1px;
}

.project-infinite-scroll__status {
	min-height: 1.4em;
	color: var(--g2-muted);
	font-size: 0.9rem;
	font-weight: 700;
}

.updates-archive {
	padding: 42px 0 72px;
}

.archive-header {
	max-width: 760px;
	margin-bottom: 28px;
}

.archive-header h1 {
	margin-top: 6px;
	font-size: clamp(2.2rem, 5vw, 4rem);
}

.archive-header p:not(.eyebrow) {
	margin-top: 12px;
	color: var(--g2-muted);
	font-size: 1.08rem;
}

.post-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 18px;
}

.project-card,
.entry-card,
.post-card {
	position: relative;
	overflow: hidden;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	box-shadow: var(--g2-shadow);
}

.project-card::before {
	position: absolute;
	inset: 10px auto auto 10px;
	width: 28px;
	height: 28px;
	border-top: 2px solid var(--g2-cyan);
	border-left: 2px solid var(--g2-cyan);
	content: "";
	opacity: 0.75;
	pointer-events: none;
}

.project-card__media {
	display: block;
	aspect-ratio: 4 / 3;
	background: var(--g2-surface-2);
	text-decoration: none;
}

.project-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.project-card__placeholder {
	width: 100%;
	height: 100%;
	display: grid;
	place-items: center;
	color: var(--g2-cyan);
	font-family: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
	font-size: 3rem;
	font-weight: 800;
}

.project-card__body {
	display: grid;
	gap: 10px;
	padding: 16px;
}

.chip-row {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.chip {
	display: inline-flex;
	align-items: center;
	min-height: 26px;
	padding: 4px 8px;
	border: 1px solid var(--g2-line);
	border-radius: 999px;
	background: var(--g2-surface-2);
	color: var(--g2-muted);
	font-size: 0.78rem;
	font-weight: 700;
}

.chip-row--types {
	gap: 8px;
}

.chip--active {
	border-color: color-mix(in srgb, var(--g2-cyan), transparent 35%);
	color: var(--g2-text);
}

.chip--link {
	text-decoration: none;
}

.chip--link:hover,
.chip--link:focus {
	border-color: var(--g2-cyan);
	color: var(--g2-text);
}

.project-card__title {
	font-size: 1.18rem;
}

.project-card__title a {
	text-decoration: none;
}

.project-card__meta {
	color: var(--g2-muted);
	font-size: 0.92rem;
}

.entry-card {
	display: grid;
	gap: 10px;
	padding: 18px;
}

.entry-card__title {
	font-size: 1.35rem;
}

.entry-card__title a {
	text-decoration: none;
}

.entry-card__summary {
	color: var(--g2-muted);
}

.entry-card__summary p {
	margin: 0;
}

.post-card__media {
	display: block;
	aspect-ratio: 16 / 10;
	background: var(--g2-surface-2);
	text-decoration: none;
}

.post-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.post-card__placeholder {
	width: 100%;
	height: 100%;
	display: grid;
	place-items: center;
	color: var(--g2-cyan);
	font-family: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
	font-size: 2.6rem;
	font-weight: 800;
}

.post-card__body {
	display: grid;
	gap: 10px;
	padding: 16px;
}

.post-card__date,
.single-update__meta {
	color: var(--g2-orange);
	font-size: 0.82rem;
	font-weight: 700;
}

.post-card__title {
	font-size: 1.18rem;
}

.post-card__title a {
	text-decoration: none;
}

.post-card__summary {
	color: var(--g2-muted);
	font-size: 0.95rem;
}

.post-card__summary p {
	margin: 0;
}

.single-update__header {
	padding: 56px 0 48px;
	border-bottom: 1px solid var(--g2-line);
}

.single-update__header h1 {
	max-width: 860px;
	margin-top: 8px;
	font-size: clamp(2.4rem, 6vw, 5rem);
}

.single-update__image {
	padding-top: 32px;
}

.single-update__image img {
	width: 100%;
	max-height: 560px;
	object-fit: cover;
	border-radius: var(--g2-radius);
}

.project-hero {
	border-bottom: 1px solid var(--g2-line);
}

.project-hero__media {
	max-height: 58vh;
	overflow: hidden;
	background: var(--g2-surface-2);
}

.project-hero__media img,
.project-hero__media iframe {
	width: 100%;
	max-height: 58vh;
	object-fit: cover;
}

.project-hero__summary {
	display: block;
	padding: 32px 0;
}

.project-hero__summary::after {
	display: block;
	clear: both;
	content: "";
}

.project-hero h1 {
	margin-top: 8px;
	font-size: clamp(2.2rem, 5.25vw, 4.35rem);
}

.project-hero__build-date {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 12px;
	color: var(--g2-muted);
	font-size: 0.95rem;
	font-weight: 700;
}

.project-hero__build-date span {
	color: var(--g2-orange);
}

.project-hero__types {
	margin-top: 16px;
}

.project-hero__types + .project-hero__categories {
	margin-top: 8px;
}

.project-hero__categories {
	margin-top: 16px;
}

.summary-panel {
	padding: 18px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
}

.summary-panel h2 {
	margin-bottom: 14px;
	font-size: 1rem;
}

.summary-panel dl {
	display: grid;
	gap: 10px;
	margin: 0;
}

.summary-panel div {
	display: grid;
	grid-template-columns: 120px 1fr;
	gap: 12px;
}

.summary-panel dt {
	color: var(--g2-muted);
	font-size: 0.82rem;
	font-weight: 700;
}

.summary-panel dd {
	margin: 0;
}

.summary-panel--resources {
	float: right;
	width: clamp(430px, 34vw, 450px);
	margin: 8px 0 24px 32px;
	display: grid;
	gap: 16px;
}

.summary-panel--resources h2 {
	margin-bottom: 0;
}

.summary-panel--resources .summary-panel__resource-group {
	display: grid;
	grid-template-columns: 84px minmax(0, 1fr);
	gap: 8px;
	align-items: start;
}

.summary-panel__resource-group h3 {
	color: var(--g2-muted);
	font-size: 0.82rem;
	line-height: 1.45;
	text-transform: uppercase;
	white-space: nowrap;
}

.summary-panel__resource-group h3::after {
	content: ":";
}

.summary-panel__resource-list {
	display: grid;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.summary-panel__resource-item {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 0;
	color: var(--g2-text);
	font-size: 0.86rem;
	font-weight: 700;
	line-height: 1.45;
}

.summary-panel__resource-thumb {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	object-fit: contain;
	border: 1px solid var(--g2-line);
	border-radius: 4px;
	background: var(--g2-surface-2);
}

.project-resource__link {
	display: inline-flex;
	max-width: 100%;
	min-width: 0;
	align-items: center;
	gap: 8px;
	color: inherit;
	text-decoration: none;
}

.project-resource__link:hover,
.project-resource__link:focus {
	color: var(--g2-cyan);
}

.project-resource__name {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.project-content,
.content-list {
	padding: 48px 0 72px;
}

.project-content {
	padding-bottom: 40px;
}

.project-content > * {
	max-width: 760px;
	margin-inline: auto;
}

.project-content > * + * {
	margin-top: 1.2em;
}

.project-content figure.wp-block-image {
	position: relative;
	overflow: hidden;
}

.project-content figure.wp-block-image > a,
.project-content figure.wp-block-image > img {
	display: block;
}

.project-content figure.wp-block-image img {
	width: 100%;
	height: auto;
}

.project-content figure.wp-block-image figcaption {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	box-sizing: border-box;
	max-height: 100%;
	margin: 0;
	padding: 2.8rem 0.75rem 0.75rem;
	overflow: auto;
	background: linear-gradient(0deg, rgba(0, 0, 0, 0.76), rgba(0, 0, 0, 0.34) 62%, rgba(0, 0, 0, 0));
	color: #fff;
	font-size: 0.85rem;
	line-height: 1.3;
	text-align: center;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.68);
}

.project-resources {
	padding: 0 0 72px;
}

.project-resources__inner {
	max-width: 760px;
	margin-inline: auto;
	padding-top: 28px;
	border-top: 1px solid var(--g2-line);
}

.project-resources h2 {
	margin-top: 6px;
	font-size: clamp(1.8rem, 4vw, 2.7rem);
}

.project-resources__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 14px;
	margin-top: 20px;
}

.contact-hero {
	border-bottom: 1px solid var(--g2-line);
}

.contact-hero__inner {
	max-width: 760px;
	padding: 56px 0 48px;
}

.contact-hero h1 {
	margin-top: 8px;
	font-size: clamp(2.4rem, 6vw, 4.5rem);
}

.contact-hero p:not(.eyebrow) {
	margin-top: 14px;
	color: var(--g2-muted);
	font-size: 1.08rem;
}

.contact-section {
	padding: 48px 0 72px;
}

.contact-layout {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(320px, 520px);
	gap: 44px;
	align-items: start;
}

.contact-copy {
	max-width: 560px;
	display: grid;
	gap: 16px;
}

.contact-copy h2 {
	font-size: clamp(1.7rem, 4vw, 2.5rem);
}

.contact-copy p {
	color: var(--g2-muted);
}

.contact-admin-note {
	padding: 14px 16px;
	background: color-mix(in srgb, var(--g2-orange), transparent 88%);
	border: 1px solid color-mix(in srgb, var(--g2-orange), transparent 55%);
	border-radius: var(--g2-radius);
}

.contact-form {
	display: grid;
	gap: 16px;
	padding: 22px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	box-shadow: var(--g2-shadow);
}

.contact-form__field {
	display: grid;
	gap: 7px;
	margin: 0;
}

.contact-form__field label {
	color: var(--g2-text);
	font-weight: 700;
}

.contact-form input,
.contact-form textarea {
	width: 100%;
	border: 1px solid var(--g2-line);
	border-radius: 6px;
	background: color-mix(in srgb, var(--g2-surface), var(--g2-bg) 36%);
	color: var(--g2-text);
	font: inherit;
}

.contact-form input {
	min-height: 42px;
	padding: 0 12px;
}

.contact-form textarea {
	min-height: 190px;
	padding: 11px 12px;
	resize: vertical;
}

.contact-form input:focus,
.contact-form textarea:focus {
	border-color: var(--g2-cyan);
	outline: 2px solid color-mix(in srgb, var(--g2-cyan), transparent 72%);
	outline-offset: 2px;
}

.contact-form__trap {
	position: absolute;
	left: -10000px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.contact-notice {
	padding: 12px 14px;
	border-radius: var(--g2-radius);
	font-weight: 700;
}

.contact-notice--success {
	background: color-mix(in srgb, var(--g2-cyan), transparent 86%);
	border: 1px solid color-mix(in srgb, var(--g2-cyan), transparent 52%);
}

.contact-notice--error {
	background: color-mix(in srgb, var(--g2-orange), transparent 86%);
	border: 1px solid color-mix(in srgb, var(--g2-orange), transparent 52%);
}

.project-resources__group {
	display: grid;
	grid-template-columns: 132px minmax(0, 1fr);
	gap: 16px;
	align-items: start;
}

.project-resources__group h3 {
	color: var(--g2-muted);
	font-size: 1rem;
	line-height: 1.45;
	text-transform: uppercase;
}

.project-resources__group h3::after {
	content: ":";
}

.project-resources__list {
	display: grid;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.project-resources__item {
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
	color: var(--g2-text);
	font-size: 0.94rem;
	font-weight: 700;
	line-height: 1.45;
}

.project-resources__thumb {
	flex: 0 0 auto;
	width: 48px;
	height: 48px;
	object-fit: contain;
	border: 1px solid var(--g2-line);
	border-radius: 6px;
	background: var(--g2-surface-2);
}

.project-resources__disclosure {
	margin: 16px 0 0;
	color: var(--g2-muted);
	font-size: 0.78rem;
	line-height: 1.45;
}

.project-resources__grid + .project-resources__disclosure {
	margin-top: 18px;
}

.project-platform-links {
	padding: 0 0 40px;
}

.project-platform-links__inner {
	max-width: 760px;
	margin-inline: auto;
	padding-top: 28px;
	border-top: 1px solid var(--g2-line);
}

.project-platform-links h2 {
	margin-top: 6px;
	font-size: clamp(1.8rem, 4vw, 2.7rem);
}

.project-platform-links__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
	margin-top: 20px;
}

.project-platform-card {
	display: grid;
	gap: 14px;
	padding: 16px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
}

.project-platform-card__header {
	display: flex;
	gap: 12px;
	align-items: center;
	min-width: 0;
}

.project-platform-card__icon {
	flex: 0 0 auto;
	width: 48px;
	height: 48px;
	object-fit: contain;
	border: 1px solid var(--g2-line);
	border-radius: 6px;
	background: #fff;
}

.project-platform-card__header h3 {
	font-size: 1rem;
}

.project-platform-card__account {
	display: inline-block;
	margin-top: 3px;
	color: var(--g2-muted);
	font-size: 0.88rem;
}

.project-platform-card__links {
	display: grid;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.project-platform-card__links a {
	display: inline-flex;
	align-items: center;
	min-height: 30px;
	font-weight: 700;
}

.g2fab-platform-icon-fallback {
	display: inline-grid;
	place-items: center;
	color: #fff;
	font-weight: 800;
	background: var(--g2-cyan);
}

.site-footer {
	border-top: 1px solid var(--g2-line);
	background: var(--g2-surface);
}

.site-footer__inner {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	gap: 16px;
	align-items: center;
	padding: 22px 0;
	color: var(--g2-muted);
	font-size: 0.9rem;
}

.site-footer__inner p {
	margin: 0;
}

.site-footer__tagline {
	text-align: center;
}

.site-footer__links {
	justify-self: end;
	display: inline-flex;
	gap: 16px;
	align-items: center;
	text-align: right;
}

.site-footer__links a {
	color: var(--g2-muted);
	font-weight: 700;
	text-decoration: none;
}

.site-footer__links a:hover,
.site-footer__links a:focus {
	color: var(--g2-text);
}

.empty-state {
	padding: 48px 0;
	color: var(--g2-muted);
}

.resource-review-hero {
	border-bottom: 1px solid var(--g2-line);
}

.resource-review-hero__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 28px;
	align-items: center;
	padding: 56px 0 48px;
}

.resource-review-hero h1 {
	max-width: 920px;
	margin-top: 8px;
	font-size: clamp(2.4rem, 5vw, 4.6rem);
}

.resource-review-hero__image {
	width: 120px;
	height: 120px;
	display: grid;
	place-items: center;
	padding: 12px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	box-shadow: var(--g2-shadow);
}

.resource-review-hero__image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.resource-review-content {
	padding: 42px 0 10px;
}

.resource-review-content__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
	gap: 44px;
	align-items: start;
}

.resource-review-copy {
	max-width: 860px;
	color: var(--g2-text);
	font-size: 1.05rem;
	line-height: 1.75;
}

.resource-review-copy__image {
	float: left;
	width: 150px;
	height: 150px;
	display: grid;
	place-items: center;
	margin: 0 24px 14px 0;
	padding: 14px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	box-shadow: var(--g2-shadow);
}

.resource-review-copy__image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.resource-review-copy > * + * {
	margin-top: 1rem;
}

.resource-review-copy > .resource-review-copy__image + * {
	margin-top: 0;
}

.resource-review-empty {
	color: var(--g2-muted);
	font-weight: 700;
}

.resource-affiliate-card {
	position: sticky;
	top: 112px;
	padding: 20px;
	background: var(--g2-surface);
	border: 1px solid var(--g2-line);
	border-radius: var(--g2-radius);
	box-shadow: var(--g2-shadow);
}

.resource-affiliate-card h2 {
	margin: 0 0 14px;
	font-size: 1.25rem;
}

.resource-affiliate-card__links {
	display: grid;
	gap: 10px;
}

.resource-affiliate-link {
	display: grid;
	grid-template-columns: 52px minmax(0, 1fr);
	gap: 12px;
	align-items: center;
	padding: 10px;
	color: var(--g2-text);
	text-decoration: none;
	background: color-mix(in srgb, var(--g2-surface), var(--g2-bg) 42%);
	border: 1px solid var(--g2-line);
	border-radius: 8px;
	transition: border-color 0.18s ease, transform 0.18s ease;
}

.resource-affiliate-link:hover,
.resource-affiliate-link:focus {
	border-color: var(--g2-cyan);
	transform: translateY(-1px);
}

.resource-affiliate-link__icon {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	padding: 5px;
	background: #fff;
	border: 1px solid var(--g2-line);
	border-radius: 8px;
	color: #52636b;
}

.resource-affiliate-link__icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.resource-affiliate-link__body {
	display: grid;
	gap: 2px;
	min-width: 0;
}

.resource-affiliate-link__body strong {
	overflow: hidden;
	font-family: var(--g2-heading);
	text-overflow: ellipsis;
	white-space: nowrap;
}

.resource-affiliate-link__body small {
	color: var(--g2-muted);
	font-weight: 700;
}

.resource-affiliate-card__disclosure {
	margin: 16px 0 0;
	color: var(--g2-muted);
	font-size: 0.86rem;
	line-height: 1.5;
}

.resource-review-projects {
	padding: 32px 0 72px;
}

@media (max-width: 980px) {
	.home-hero__inner,
	.resource-review-content__layout,
	.project-hero__summary,
	.contact-layout,
	.dashboard-layout {
		grid-template-columns: 1fr;
	}

	.resource-affiliate-card {
		position: static;
	}

	.project-hero__summary {
		display: flex;
		flex-direction: column;
		gap: 24px;
	}

	.project-hero__copy {
		order: 1;
	}

	.summary-panel--resources {
		order: 2;
		float: none;
		width: auto;
		margin: 0;
	}

	.home-hero__inner {
		gap: 28px;
	}

	.category-grid,
	.project-grid,
	.post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.dashboard-header {
		grid-template-columns: 1fr;
		align-items: start;
	}

	.filter-toggle {
		display: inline-flex;
		width: fit-content;
		align-items: center;
	}

	.dashboard-filters {
		position: static;
		display: none;
	}

	.dashboard-filters.is-open {
		display: block;
	}
}

@media (max-width: 640px) {
	:root {
		--g2-wrap: min(100vw - 24px, 1120px);
	}

	.site-header__inner {
		min-height: 68px;
		gap: 10px;
	}

	.brand__text strong {
		font-size: 0.92rem;
	}

	.brand__text small {
		display: block;
		max-width: 120px;
		font-size: 0.68rem;
	}

	.site-nav {
		inset-top: 68px;
	}

	.site-header-links {
		display: none;
	}

	.site-footer__inner {
		grid-template-columns: 1fr;
		text-align: left;
	}

	.site-footer__tagline {
		text-align: left;
	}

	.site-footer__links {
		justify-self: start;
		text-align: left;
	}

	.contact-section {
		padding: 36px 0 56px;
	}

	.contact-form {
		padding: 18px;
	}

	.g2fab-ticker__track {
		gap: 22px;
		min-height: 34px;
	}

	.g2fab-ticker__link {
		min-height: 34px;
		font-size: 0.84rem;
	}

	.home-hero__inner {
		min-height: auto;
		padding: 44px 0;
	}

	.home-hero h1 {
		font-size: 3rem;
	}

	.category-grid,
	.project-grid,
	.post-grid,
	.project-resources__grid,
	.project-platform-links__grid {
		grid-template-columns: 1fr;
	}

	.project-search {
		display: grid;
	}

	.resource-review-hero__inner {
		grid-template-columns: 1fr;
	}

	.resource-review-copy__image {
		float: none;
		width: 132px;
		height: 132px;
		margin: 0 auto 18px;
	}

	.summary-panel--resources .summary-panel__resource-group,
	.project-resources__group {
		grid-template-columns: 1fr;
		gap: 6px;
	}

	.summary-panel div {
		grid-template-columns: 1fr;
		gap: 2px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.g2fab-ticker__viewport {
		overflow-x: auto;
	}

	.g2fab-ticker__track {
		width: auto;
		min-width: max-content;
		padding: 0 12px;
		animation: none;
	}
}
