/**
 * Grady Property Restoration — Global Design System
 * Sprint 2C · Founder Perspective + Jump Navigation
 * Import after design-tokens.css and main.css
 */

/* —— Site shell —— */

.grady-site {
	--grady-header-offset: var(--header-height);
}

@media (max-width: 48rem) {
	.grady-site {
		--grady-header-offset: var(--header-height-mobile);
	}
}

/* Remove legacy per-page sticky-call offsets when global header is active */
.grady-site.fsd-page,
.grady-site.wdr-page,
.grady-site.tbc-page,
.grady-site.mdr-page,
.grady-site.cwd-page,
.grady-site.scr-page,
.grady-site.msr-page {
	padding-top: 0;
}

/* —— Skip link —— */

.grady-skip-link {
	position: absolute;
	top: -100%;
	left: var(--space-s);
	z-index: 10000;
	padding: var(--space-xs) var(--space-s);
	font-family: var(--font-display);
	font-size: var(--font-size-3xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	text-decoration: none;
	color: var(--black);
	background: var(--bronze);
	border-radius: var(--radius-sm);
}

.grady-skip-link:focus {
	top: var(--space-s);
}

/* —— Global header —— */

.grady-site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	height: var(--header-height);
	background: transparent;
	border-bottom: 1px solid transparent;
	transition:
		background var(--duration-normal) var(--ease-premium),
		border-color var(--duration-normal) var(--ease-premium),
		backdrop-filter var(--duration-normal) var(--ease-premium);
}

.grady-site-header.is-scrolled {
	background: rgba(9, 9, 9, 0.94);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	border-bottom-color: var(--divider-bronze-muted);
}

.grady-site-header__inner {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: var(--space-m);
	height: 100%;
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--container-gutter);
}

.grady-site-header .brand--wordmark {
	min-width: auto;
	align-items: flex-start;
	padding-right: 0;
}

.grady-site-header .brand__name {
	font-size: clamp(1.25rem, 2vw, 1.5rem);
	letter-spacing: var(--letter-spacing-logo);
	text-indent: var(--letter-spacing-logo);
}

.grady-site-header .brand__tag {
	font-size: 0.5rem;
	letter-spacing: var(--letter-spacing-brand-tag);
	text-indent: var(--letter-spacing-brand-tag);
}

.grady-site-nav {
	justify-self: center;
}

.grady-site-nav__list {
	display: flex;
	align-items: center;
	gap: clamp(1rem, 2.5vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-site-nav__list a {
	position: relative;
	padding-block: 0.25rem;
	font-family: var(--font-display);
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-ui);
	letter-spacing: var(--letter-spacing-nav);
	text-decoration: none;
	text-transform: uppercase;
	color: var(--ivory);
	opacity: 0.88;
	transition:
		color var(--duration-normal) var(--ease-premium),
		opacity var(--duration-normal) var(--ease-premium);
}

.grady-site-nav__list a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -0.125rem;
	width: 100%;
	height: 1px;
	background: var(--bronze);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--duration-normal) var(--ease-premium);
}

.grady-site-nav__list a:hover,
.grady-site-nav__list a:focus-visible {
	color: var(--bronze);
	opacity: 1;
}

.grady-site-nav__list a:hover::after,
.grady-site-nav__list a:focus-visible::after {
	transform: scaleX(1);
}

.grady-site-header__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.5625rem 1.125rem;
	font-family: var(--font-display);
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	text-decoration: none;
	color: var(--black);
	background: var(--bronze);
	border: 1px solid var(--bronze);
	border-radius: 999px;
	transition:
		background var(--duration-normal) var(--ease-premium),
		transform var(--duration-fast) var(--ease-premium),
		box-shadow var(--duration-normal) var(--ease-premium);
}

.grady-site-header__cta:hover {
	background: var(--bronze-dark);
	border-color: var(--bronze-dark);
	transform: translateY(-1px);
	box-shadow: 0 0 20px rgba(185, 155, 104, 0.22);
}

.grady-site-nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 5px;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	background: transparent;
	border: 1px solid var(--divider-bronze-muted);
	border-radius: var(--radius-sm);
	cursor: pointer;
}

.grady-site-nav-toggle span {
	display: block;
	width: 1.125rem;
	height: 1px;
	background: var(--ivory);
	transition: transform var(--duration-normal) var(--ease-premium), opacity var(--duration-normal) var(--ease-premium);
}

/* —— Mobile navigation overlay —— */

.grady-mobile-nav {
	position: fixed;
	inset: 0;
	z-index: 1100;
	display: flex;
	flex-direction: column;
	padding: calc(var(--header-height-mobile) + var(--space-m)) var(--space-m) var(--space-m);
	background: var(--black);
	opacity: 0;
	visibility: hidden;
	transform: translateY(var(--anim-fade-distance-sm));
	transition:
		opacity var(--duration-slow) var(--ease-premium),
		visibility var(--duration-slow) var(--ease-premium),
		transform var(--duration-slow) var(--ease-premium);
}

.grady-mobile-nav.is-open {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.grady-mobile-nav__close {
	position: absolute;
	top: var(--space-m);
	right: var(--container-gutter);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	font-family: var(--font-display);
	font-size: 1.25rem;
	font-weight: var(--font-weight-regular);
	line-height: 1;
	color: var(--bronze);
	background: transparent;
	border: none;
	cursor: pointer;
}

.grady-mobile-nav__list {
	flex: 1;
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-mobile-nav__list a {
	display: block;
	padding: var(--space-s) 0;
	font-family: var(--font-display);
	font-size: clamp(1.375rem, 5vw, 1.75rem);
	font-weight: var(--font-weight-semibold);
	line-height: 1.15;
	letter-spacing: var(--letter-spacing-wide);
	text-decoration: none;
	text-transform: uppercase;
	color: var(--ivory);
	border-bottom: 1px solid var(--divider-bronze-muted);
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-mobile-nav__list a:hover {
	color: var(--bronze);
}

.grady-mobile-nav__actions {
	display: grid;
	gap: var(--space-s);
	margin-top: var(--space-m);
}

.grady-mobile-nav__meta {
	margin-top: auto;
	padding-top: var(--space-m);
	border-top: 1px solid var(--divider-bronze-muted);
}

.grady-mobile-nav__phone {
	display: block;
	margin-bottom: var(--space-s);
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-bold);
	letter-spacing: var(--letter-spacing-phone);
	text-decoration: none;
	color: var(--bronze);
}

.grady-mobile-nav__creds {
	margin: var(--space-s) 0 0;
	padding: 0;
	list-style: none;
	font-size: var(--font-size-4xs);
	line-height: 1.6;
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--text-secondary-dark);
}

.grady-mobile-nav__creds li + li {
	margin-top: 0.25rem;
}

.grady-mobile-nav__social {
	display: flex;
	gap: var(--space-s);
	margin-top: var(--space-s);
}

.grady-mobile-nav__social a {
	display: flex;
	color: var(--bronze);
	opacity: 0.85;
	transition: opacity var(--duration-normal) var(--ease-premium);
}

.grady-mobile-nav__social a:hover {
	opacity: 1;
}

body.is-mobile-nav-open {
	overflow: hidden;
}

@media (max-width: 64rem) {
	.grady-site-nav {
		display: none;
	}

	.grady-site-header__cta {
		display: none;
	}

	.grady-site-nav-toggle {
		display: flex;
		flex-shrink: 0;
		width: 2.75rem;
		min-width: 2.75rem;
		height: 2.75rem;
		min-height: 2.75rem;
	}

	.grady-site-header {
		height: auto;
		min-height: var(--header-height-mobile);
		padding-block: var(--space-xs);
		overflow: hidden;
		isolation: isolate;
	}

	.grady-site-header__inner {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--space-s);
		height: auto;
		min-height: calc(var(--header-height-mobile) - (var(--space-xs) * 2));
	}

	.grady-site-header .brand--wordmark {
		flex: 0 1 auto;
		min-width: 0;
		max-width: clamp(96px, 28vw, 150px);
		height: auto;
		align-items: flex-start;
		padding-right: 0;
		overflow: hidden;
	}

	.grady-site-header .brand__name {
		width: 100%;
		font-size: clamp(0.9375rem, 4.2vw, 1.125rem);
		letter-spacing: 0.1em;
		text-indent: 0;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		line-height: 1.05;
	}

	.grady-site-header .brand__tag {
		width: 100%;
		margin-top: 0.125rem;
		font-size: clamp(0.4375rem, 2.5vw, 0.5rem);
		letter-spacing: 0.12em;
		text-indent: 0;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		line-height: 1.2;
	}
}

/* —— Global footer —— */

.grady-site-footer {
	background: var(--black);
	border-top: var(--border-light);
}

.grady-site-footer__inner {
	display: grid;
	grid-template-columns: var(--grid-footer-global);
	gap: var(--space-m) var(--space-l);
	padding-block: clamp(var(--space-l), 8vw, var(--space-xl)) var(--space-m);
}

.grady-site-footer__brand .grady-logo__name {
	font-size: var(--font-size-logo-footer);
}

.grady-site-footer__brand p {
	max-width: 18rem;
	margin: var(--space-s) 0 var(--space-m);
	font-size: var(--font-size-xs);
	line-height: 1.65;
	color: var(--caption);
}

.grady-site-footer__emergency {
	display: inline-flex;
	flex-direction: column;
	gap: 0.125rem;
	margin-bottom: var(--space-s);
	text-decoration: none;
}

.grady-site-footer__emergency-number {
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-bold);
	letter-spacing: var(--letter-spacing-phone);
	color: var(--accent);
}

.grady-site-footer__emergency-label,
.grady-site-footer__area {
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--text-secondary);
}

.grady-site-footer__area {
	text-decoration: none;
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-site-footer__area:hover {
	color: var(--text-primary);
}

.grady-site-footer__col h3 {
	margin: 0 0 var(--space-s);
	font-family: var(--font-display);
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-footer-col);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-site-footer__col ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-site-footer__col li + li {
	margin-top: 0.375rem;
}

.grady-site-footer__col a {
	font-size: var(--font-size-xs);
	line-height: 1.5;
	text-decoration: none;
	color: var(--text-secondary);
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-site-footer__col a:hover {
	color: var(--text-primary);
}

.grady-site-footer__cred-value {
	display: block;
	margin-top: 0.125rem;
	font-size: var(--font-size-3xs);
	font-weight: var(--font-weight-medium);
	color: var(--text-primary);
}

.grady-site-footer__bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-s);
	padding-block: var(--space-s) var(--space-m);
	border-top: var(--border-light);
}

.grady-site-footer__legal-nav {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-s) var(--space-m);
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-site-footer__bar p {
	margin: 0;
	font-size: var(--font-size-4xs);
	color: var(--caption);
}

.grady-site-footer__legal-nav a {
	font-size: var(--font-size-4xs);
	text-decoration: none;
	color: var(--caption);
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-site-footer__legal-nav a:hover {
	color: var(--accent);
}

@media (max-width: 75rem) {
	.grady-site-footer__inner {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.grady-site-footer__brand {
		grid-column: 1 / -1;
	}
}

@media (max-width: 48rem) {
	.grady-site-footer__inner {
		grid-template-columns: 1fr 1fr;
	}
}

@media (max-width: 36rem) {
	.grady-site-footer__inner {
		grid-template-columns: 1fr;
	}

	.grady-site-footer__bar {
		flex-direction: column;
		align-items: flex-start;
	}
}

/* —— Global CTA system —— */

.grady-editorial-more {
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-ui);
	letter-spacing: var(--letter-spacing-wide);
	text-decoration: none;
	color: var(--link);
	cursor: pointer;
	transition:
		color var(--duration-normal) var(--ease-premium),
		text-decoration-color var(--duration-normal) var(--ease-premium),
		transform var(--duration-normal) var(--ease-premium);
}

.grady-editorial-more:hover {
	color: var(--accent-hover);
	text-decoration: underline;
	text-decoration-color: var(--accent);
	text-underline-offset: 0.2em;
	transform: translateX(0.25rem);
}

.grady-editorial-more--light {
	color: var(--link);
}

.grady-editorial-more--light:hover,
.grady-editorial-more--light:focus-visible {
	color: var(--black);
	text-decoration-color: var(--black);
}

/* —— Breadcrumbs —— */

.grady-breadcrumb {
	margin: 0 0 var(--space-s);
	padding: 0;
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--muted-dark);
}

.grady-breadcrumb a {
	color: var(--text-secondary-dark);
	text-decoration: none;
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-breadcrumb a:hover,
.grady-breadcrumb a:focus-visible {
	color: var(--link-dark);
}

.grady-breadcrumb span[aria-hidden="true"] {
	margin-inline: var(--space-xs);
	color: var(--text-decorative-dark);
}

/* —— Layout system —— */

.grady-section {
	padding-block: var(--section-y);
}

.grady-section--tight {
	padding-block: var(--section-y-tight);
}

/* —— Global animations (locked set) —— */

[data-grady-animate="fade-up"],
[data-grady-reveal] {
	opacity: 0;
	transform: translateY(var(--anim-fade-distance));
	transition:
		opacity var(--duration-slow) var(--ease-premium),
		transform var(--duration-slow) var(--ease-premium);
}

[data-grady-animate="fade-left"] {
	opacity: 0;
	transform: translateX(calc(var(--anim-fade-distance) * -1));
	transition:
		opacity var(--duration-slow) var(--ease-premium),
		transform var(--duration-slow) var(--ease-premium);
}

[data-grady-animate="fade-right"] {
	opacity: 0;
	transform: translateX(var(--anim-fade-distance));
	transition:
		opacity var(--duration-slow) var(--ease-premium),
		transform var(--duration-slow) var(--ease-premium);
}

[data-grady-animate].is-visible,
[data-grady-reveal].is-visible {
	opacity: 1;
	transform: none;
}

/* Card hover — global */
.grady-card-hover {
	transition:
		transform var(--duration-normal) var(--ease-premium),
		border-color var(--duration-normal) var(--ease-premium),
		box-shadow var(--duration-normal) var(--ease-premium);
}

@media (min-width: 48.0625rem) {
	.grady-card-hover:hover {
		transform: translateY(-4px);
		border-color: var(--divider-bronze-soft);
		box-shadow: var(--card-shadow-hover);
	}
}

@media (prefers-reduced-motion: reduce) {
	.grady-site-header,
	.grady-mobile-nav,
	[data-grady-animate],
	[data-grady-reveal],
	.grady-site-header__cta,
	.grady-editorial-more,
	.grady-card-hover {
		transition: none;
	}

	[data-grady-animate],
	[data-grady-reveal] {
		opacity: 1;
		transform: none;
	}

	.grady-mobile-nav {
		transform: none;
	}

	.grady-site-header__cta:hover,
	.grady-editorial-more:hover,
	.grady-card-hover:hover {
		transform: none;
		box-shadow: none;
	}
}

/* —— Global icon library —— */

.grady-icon {
	display: block;
	flex-shrink: 0;
	color: var(--bronze);
	fill: none;
	stroke: currentColor;
	stroke-width: 1.25;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* —— Shared component library —— */

.grady-module {
	padding-block: var(--section-y);
}

.grady-module__header {
	margin-bottom: var(--space-l);
	max-width: var(--container-text);
}

.grady-module__eyebrow {
	margin: 0 0 var(--space-s);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--bronze);
}

.grady-module__title {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--type-section-heading);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-height-tight);
	color: var(--ivory);
}

.grady-module__lead {
	margin: var(--space-s) 0 0;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary-dark);
}

.grady-feature-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	gap: var(--space-m);
}

.grady-feature-card {
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--graphite-card);
}

.grady-feature-card__icon {
	margin-bottom: var(--space-s);
}

.grady-feature-card__title {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	color: var(--ivory);
}

.grady-feature-card__body {
	margin: 0;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary-dark);
}

.grady-pull-quote {
	margin: var(--space-l) 0;
	padding-inline: var(--space-l);
	border-left: 2px solid var(--bronze);
	font-family: var(--font-display);
	font-size: clamp(1.25rem, 2.5vw, 1.75rem);
	line-height: var(--line-height-tight);
	color: var(--ivory);
}

.grady-pull-quote cite {
	display: block;
	margin-top: var(--space-s);
	font-family: var(--font-body);
	font-size: var(--font-size-xs);
	font-style: normal;
	color: var(--bronze);
}

.grady-credential-card,
.grady-doc-card {
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--graphite-card);
}

.grady-knowledge-callout {
	padding: var(--space-m) var(--space-l);
	border-left: 2px solid var(--bronze);
	background: rgba(185, 155, 104, 0.06);
}

.grady-cta-module {
	padding: var(--section-y-tight) var(--space-l);
	text-align: center;
}

.grady-cta-module__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-s);
	margin-top: var(--space-m);
}

.grady-faq details {
	border-bottom: var(--border-light);
}

.grady-faq summary {
	padding-block: var(--space-s);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	color: var(--heading);
	cursor: pointer;
	list-style: none;
}

.grady-faq summary::-webkit-details-marker {
	display: none;
}

.grady-faq details[open] summary {
	color: var(--link);
}

.grady-faq details p {
	margin: 0 0 var(--space-s);
	padding-bottom: var(--space-s);
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

.grady-timeline {
	display: grid;
	gap: var(--space-m);
}

.grady-comparison-table {
	width: 100%;
	border-collapse: collapse;
}

.grady-comparison-table th,
.grady-comparison-table td {
	padding: var(--space-s) var(--space-m);
	border-bottom: var(--border-light);
	text-align: left;
}

.grady-comparison-table th {
	font-family: var(--font-display);
	font-size: var(--font-size-xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--bronze);
}

.grady-project-card {
	display: flex;
	flex-direction: column;
	border: var(--card-border);
	border-radius: var(--card-radius);
	overflow: hidden;
	background: var(--graphite-card);
}

.grady-project-card__body {
	padding: var(--space-m);
	flex: 1;
}

.grady-service-area-module {
	padding-block: var(--section-y);
}

/* —— Sprint 2B: Accessibility utilities —— */

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

.grady-sr-only:focus,
.grady-sr-only:active {
	position: static;
	width: auto;
	height: auto;
	margin: 0;
	overflow: visible;
	clip: auto;
	white-space: normal;
}

.grady-focus-ring:focus-visible {
	outline: var(--focus-ring);
	outline-offset: var(--focus-ring-offset);
}

a:focus-visible,
button:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
	outline: var(--focus-ring);
	outline-offset: var(--focus-ring-offset);
}

.grady-btn:focus-visible,
.grady-site-header__cta:focus-visible,
.grady-editorial-more:focus-visible {
	outline: var(--focus-ring);
	outline-offset: var(--focus-ring-offset);
}

/* —— Sprint 2B: Editorial layout system —— */

/* Dark theme surfaces */
.grady-theme-dark,
.grady-editorial--dark,
.grady-editorial--graphite,
.grady-process-timeline,
.grady-site-footer,
.grady-emergency-cta,
.grady-weather-alert {
	--text-primary: var(--text-primary-dark);
	--text-secondary: var(--text-secondary-dark);
	--text-muted: var(--muted-dark);
	--heading: var(--heading-dark);
	--eyebrow: var(--link-dark);
	--caption: var(--muted-dark);
	--link: var(--link-dark);
	--link-hover: var(--ivory);
	--link-decoration: rgba(185, 155, 104, 0.45);
	--list-marker: var(--link-dark);
	--list-separator: rgba(185, 155, 104, 0.14);
	--utility-text: var(--text-secondary-dark);
	--placeholder-text: var(--muted-dark);
	--accent: var(--bronze);
	--accent-strong: var(--bronze-dark);
	--accent-hover: var(--ivory);
}

/* Light theme surfaces */
.grady-theme-light,
.grady-editorial--light,
.grady-editorial--ivory,
.grady-editorial--limestone {
	--text-primary: var(--text-primary-light);
	--text-secondary: var(--text-secondary-light);
	--text-muted: var(--muted-light);
	--heading: var(--heading-light);
	--eyebrow: var(--link-light);
	--caption: var(--muted-light);
	--link: var(--link-light);
	--link-hover: var(--black);
	--link-decoration: rgba(143, 116, 77, 0.45);
	--list-marker: var(--link-light);
	--list-separator: rgba(143, 116, 77, 0.18);
	--utility-text: var(--text-secondary-light);
	--placeholder-text: var(--muted-light);
	--accent: var(--bronze-dark);
	--accent-strong: var(--bronze-dark);
	--accent-hover: var(--black);
}

.grady-editorial {
	padding-block: var(--section-y);
	color: var(--text-primary);
}

.grady-editorial--dark {
	background: var(--charcoal);
}

.grady-editorial--graphite {
	background: var(--graphite);
}

.grady-editorial--light {
	background: var(--ivory);
}

.grady-editorial--ivory {
	background: var(--ivory);
}

.grady-editorial--limestone {
	background: var(--limestone);
}

.grady-editorial__inner {
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--container-gutter);
}

.grady-editorial__header {
	max-width: var(--container-text);
	margin-bottom: var(--space-l);
}

.grady-editorial__header--center {
	margin-inline: auto;
	text-align: center;
	text-wrap: balance;
}

.grady-editorial__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(var(--space-m), 5vw, var(--space-xl));
	align-items: start;
}

.grady-editorial__prose {
	max-width: var(--container-text);
	color: var(--text-primary);
}

.grady-editorial__prose p + p {
	margin-top: var(--space-m);
}

/* Typography inherits theme tokens — no per-section color overrides needed */
.grady-editorial .grady-heading {
	color: var(--heading);
}

.grady-editorial .grady-body {
	color: var(--text-primary);
}

.grady-editorial .grady-list li {
	color: var(--text-primary);
}

.grady-editorial a:not(.grady-btn):not(.grady-editorial-more):not(.grady-emergency-cta__call) {
	color: var(--link);
	text-decoration-color: var(--link-decoration);
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-editorial a:not(.grady-btn):not(.grady-editorial-more):hover,
.grady-editorial a:not(.grady-btn):not(.grady-editorial-more):focus-visible {
	color: var(--link-hover);
}

@media (max-width: 48rem) {
	.grady-editorial__grid {
		grid-template-columns: 1fr;
	}
}

/* —— Sprint 2B: Warning & info callouts —— */

.grady-callout {
	padding: var(--space-m) var(--space-l);
	border-left: 2px solid var(--color-callout-info-border);
	background: var(--color-callout-info-bg);
}

.grady-callout--warning {
	border-left-color: var(--color-callout-warning-border);
	background: var(--color-callout-warning-bg);
}

.grady-callout__eyebrow {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--eyebrow);
}

.grady-callout__title {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-height-snug);
	color: var(--heading);
}

.grady-callout__body {
	margin: 0;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

/* —— Sprint 2B: Certification cards —— */

.grady-cert-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	gap: var(--space-m);
}

.grady-cert-card {
	display: flex;
	flex-direction: column;
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--color-surface-card);
}

.grady-cert-card__badge {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	margin-bottom: var(--space-s);
	border: var(--border-bronze);
	border-radius: var(--radius-sm);
	color: var(--accent);
}

.grady-cert-card__title {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-height-snug);
	color: var(--text-primary);
}

.grady-cert-card__id {
	margin: 0 0 var(--space-s);
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-cert-card__body {
	margin: 0;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

/* —— Sprint 2B: Process timeline (global pattern) —— */

.grady-process-timeline {
	position: relative;
	padding-block: var(--section-y);
	background: var(--charcoal);
	color: var(--text-primary);
}

.grady-process-timeline__inner {
	display: grid;
	grid-template-columns: 38fr 62fr;
	gap: clamp(var(--space-l), 6vw, var(--space-xl));
	align-items: start;
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--container-gutter);
}

.grady-process-timeline__intro {
	position: sticky;
	top: var(--space-l);
}

.grady-process-timeline__steps {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: grady-step;
}

.grady-process-timeline__step {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--space-m);
	align-items: start;
	padding-bottom: var(--space-l);
	counter-increment: grady-step;
}

.grady-process-timeline__step:last-child {
	padding-bottom: 0;
}

.grady-process-timeline__marker {
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--process-hex-width);
	height: var(--process-hex-height);
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-bold);
	color: var(--accent);
	border: var(--border-bronze);
	clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
	background: var(--charcoal);
}

.grady-process-timeline__marker::before {
	content: counter(grady-step, decimal-leading-zero);
}

.grady-process-timeline__title {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	letter-spacing: var(--letter-spacing-process);
	text-transform: uppercase;
	color: var(--text-primary);
}

.grady-process-timeline__desc {
	margin: 0;
	max-width: 22rem;
	font-size: var(--font-size-sm);
	line-height: var(--line-height-body-lg);
	color: var(--text-secondary);
}

@media (max-width: 64rem) {
	.grady-process-timeline__inner {
		grid-template-columns: 1fr;
	}

	.grady-process-timeline__intro {
		position: static;
	}
}

/* —— Sprint 2B: Project gallery —— */

.grady-project-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
	gap: var(--space-m);
}

.grady-project-card__photo {
	margin: 0;
	overflow: hidden;
}

.grady-project-card__photo-inner {
	min-height: 11rem;
	border-bottom: var(--border-light);
}

.grady-project-card__title {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-bold);
	letter-spacing: var(--letter-spacing-process);
	text-transform: uppercase;
	color: var(--text-primary);
}

.grady-project-card__location {
	margin: 0 0 var(--space-m);
	font-size: var(--font-size-3xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-project-card__meta {
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-project-card__meta li {
	padding: var(--space-s) 0;
	font-size: var(--font-size-sm);
	line-height: var(--line-height-list);
	color: var(--text-secondary);
	border-top: var(--border-light);
}

.grady-project-card__meta li:first-child {
	border-top: none;
	padding-top: 0;
}

.grady-project-card__more {
	margin-top: auto;
	padding-top: var(--space-m);
}

/* —— Sprint 2B: FAQ module —— */

.grady-faq-module {
	padding-block: var(--section-y);
}

.grady-faq-module__inner {
	max-width: 57.5rem;
	margin-inline: auto;
	padding-inline: var(--container-gutter);
}

.grady-faq-module .grady-heading {
	text-align: center;
	margin-inline: auto;
	text-wrap: balance;
}

.grady-faq details:first-child {
	border-top: var(--border-light);
}

.grady-faq summary {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--space-m);
}

.grady-faq summary::after {
	content: "+";
	flex-shrink: 0;
	align-self: center;
	font-size: 1.375rem;
	font-weight: var(--font-weight-regular);
	line-height: 1;
	color: var(--accent-strong);
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-faq details[open] summary::after {
	content: "−";
	color: var(--accent);
}

/* —— Sprint 2B: Resource cards (Knowledge Center) —— */

.grady-resource-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
	gap: var(--space-m);
}

.grady-resource-card {
	display: flex;
	flex-direction: column;
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--color-surface-card);
}

.grady-resource-card__category {
	margin: 0 0 var(--space-xs);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-resource-card__title {
	margin: 0 0 var(--space-s);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-height-snug);
	color: var(--text-primary);
}

.grady-resource-card__title a {
	color: inherit;
	text-decoration: none;
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-resource-card__title a:hover {
	color: var(--accent);
}

.grady-resource-card__summary {
	margin: 0 0 var(--space-m);
	flex: 1;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

.grady-resource-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-s);
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--font-size-4xs);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--caption);
}

/* —— Sprint 2B: EEAT blocks —— */

.grady-eeat {
	padding-block: var(--section-y-tight);
}

.grady-eeat__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	gap: var(--space-m);
}

.grady-eeat-block {
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--color-surface-card-light);
}

.grady-eeat-block__label {
	margin: 0 0 var(--space-xs);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-eeat-block__value {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-ui);
	color: var(--text-primary);
}

.grady-eeat-block__detail {
	margin: var(--space-xs) 0 0;
	font-size: var(--font-size-xs);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

.grady-eeat-author {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--space-m);
	align-items: start;
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--color-surface-card-light);
}

.grady-eeat-author__avatar {
	width: 4rem;
	height: 4rem;
	border-radius: var(--radius-full);
	background: var(--graphite);
	border: var(--border-bronze);
	overflow: hidden;
}

.grady-eeat-author__name {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	color: var(--text-primary);
}

.grady-eeat-author__role {
	margin: 0 0 var(--space-s);
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-eeat-author__bio {
	margin: 0;
	font-size: var(--font-size-sm);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

.grady-eeat-review-date {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	font-size: var(--font-size-4xs);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--caption);
}

.grady-eeat-service-area {
	padding: var(--space-m);
	border: var(--card-border);
	border-radius: var(--card-radius);
	background: var(--color-surface-card-light);
}

.grady-eeat-service-area__cities {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs) var(--space-s);
	margin: var(--space-s) 0 0;
	padding: 0;
	list-style: none;
}

.grady-eeat-service-area__cities a {
	font-size: var(--font-size-xs);
	text-decoration: none;
	color: var(--text-secondary-dark);
	transition: color var(--duration-normal) var(--ease-premium);
}

.grady-eeat-service-area__cities a:hover {
	color: var(--bronze);
}

/* —— Sprint 2B: Documentation cards (enhanced) —— */

.grady-doc-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	gap: var(--space-m);
}

.grady-doc-card__icon {
	margin-bottom: var(--space-s);
	color: var(--bronze);
}

.grady-doc-card h3 {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	color: var(--ivory);
}

.grady-doc-card p {
	margin: 0;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary-dark);
}

/* —— Sprint 2B: Knowledge callout (enhanced) —— */

.grady-knowledge-callout h3 {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	color: var(--heading);
}

.grady-knowledge-callout p {
	margin: 0 0 var(--space-s);
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

.grady-credential-card h3 {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-display);
	font-size: var(--type-editorial-heading);
	font-weight: var(--font-weight-bold);
	color: var(--heading);
}

.grady-credential-card p {
	margin: 0;
	font-size: var(--type-body);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

/* —— Sprint 2C: Founder's Perspective —— */

.grady-founder-perspective {
	--founder-bg: var(--charcoal);
	--founder-text: var(--text-primary);
	--founder-muted: var(--text-secondary);
	--founder-accent: var(--accent);
	--founder-border: var(--accent);

	padding-block: var(--section-y-tight);
	background: var(--founder-bg);
	color: var(--founder-text);
}

.grady-founder-perspective--light,
.grady-editorial--light .grady-founder-perspective,
.grady-editorial--ivory .grady-founder-perspective,
.grady-editorial--limestone .grady-founder-perspective,
.msr-page .grady-founder-perspective {
	--founder-bg: var(--ivory);
	--founder-text: var(--heading);
	--founder-muted: var(--text-primary);
	--founder-accent: var(--accent);
	--founder-border: var(--accent);
}

.grady-founder-perspective__inner {
	max-width: var(--container-text);
	margin-inline: auto;
	padding-inline: var(--container-gutter);
}

h2.grady-founder-perspective__eyebrow {
	margin: 0 0 var(--space-m);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
}

.grady-founder-perspective__eyebrow {
	margin: 0 0 var(--space-m);
	font-family: var(--font-display);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-mega);
	text-transform: uppercase;
	color: var(--founder-accent);
}

.grady-founder-perspective__quote {
	margin: 0;
	padding-left: var(--space-l);
	border-left: 2px solid var(--founder-border);
	font-family: var(--font-display);
	font-size: clamp(1.25rem, 2.5vw, 1.625rem);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-quote);
	color: var(--founder-text);
}

.grady-founder-perspective__attribution {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--space-xs) var(--space-s);
	margin: var(--space-m) 0 0 var(--space-l);
}

.grady-founder-perspective__name {
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: var(--font-weight-bold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--founder-text);
}

.grady-founder-perspective__role {
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--founder-accent);
}

.grady-founder-perspective__credentials {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs) var(--space-m);
	margin: var(--space-s) 0 0 var(--space-l);
	padding: 0;
	list-style: none;
}

.grady-founder-perspective__credentials li {
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--founder-muted);
}

/* —— Sprint 2C: Jump navigation —— */

.grady-jump-nav {
	margin-bottom: var(--space-l);
	padding: var(--space-m) var(--space-l);
	border: var(--border-light);
	border-radius: var(--card-radius);
	background: var(--color-surface-card-light);
}

.grady-jump-nav__title {
	margin: 0 0 var(--space-s);
	font-family: var(--font-display);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-jump-nav__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs) var(--space-m);
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-jump-nav__list a {
	font-size: var(--font-size-xs);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-ui);
	text-decoration: none;
	color: var(--text-secondary);
	border-bottom: 1px solid transparent;
	transition:
		color var(--duration-normal) var(--ease-premium),
		border-color var(--duration-normal) var(--ease-premium);
}

.grady-jump-nav__list a:hover {
	color: var(--accent);
	border-bottom-color: var(--divider-bronze-soft);
}

/* —— Editorial list (single bronze bullet) —— */

ul.grady-list {
	margin: 0;
	list-style: none;
	padding-left: 0;
}

.grady-list li {
	position: relative;
	padding-left: 1.25rem;
}

.grady-list li::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--list-marker);
	position: absolute;
	left: 0;
	top: 0.7em;
}

/* Diamond outline variant (document-why checklists) */
.grady-list--diamond li::before {
	width: var(--size-check-bullet);
	height: var(--size-check-bullet);
	border-radius: 0;
	border: var(--border-width) solid var(--list-marker);
	background: transparent;
	top: 50%;
	transform: translateY(-50%) rotate(45deg);
	opacity: 0.85;
}

/* —— Sprint 3: Weather alert (disabled until API) —— */

.grady-weather-alert {
	position: relative;
	z-index: 900;
	background: var(--charcoal);
	border-bottom: 1px solid var(--divider-bronze-muted);
}

.grady-weather-alert[hidden] {
	display: none;
}

.grady-weather-alert__inner {
	display: grid;
	grid-template-columns: 1fr auto auto;
	gap: var(--space-s) var(--space-m);
	align-items: center;
	padding-block: var(--space-s);
}

.grady-weather-alert__eyebrow {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-process);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-weather-alert__message {
	margin: 0;
	font-size: var(--font-size-sm);
	line-height: 1.5;
	color: var(--text-primary);
}

.grady-weather-alert__cta {
	font-family: var(--font-display);
	font-size: var(--font-size-3xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	text-decoration: none;
	color: var(--black);
	background: var(--bronze);
	padding: var(--space-xs) var(--space-s);
	border-radius: var(--radius-sm);
	white-space: nowrap;
}

.grady-weather-alert__dismiss {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	padding: 0;
	font-size: 1.25rem;
	line-height: 1;
	color: var(--text-primary);
	background: transparent;
	border: var(--border-width) solid var(--divider-bronze-muted);
	border-radius: var(--radius-sm);
	cursor: pointer;
}

.grady-weather-alert--flood-warning { border-bottom-color: var(--color-alert-flood); }
.grady-weather-alert--freeze-warning { border-bottom-color: var(--color-alert-freeze); }
.grady-weather-alert--heavy-rain { border-bottom-color: var(--color-alert-rain); }
.grady-weather-alert--wind { border-bottom-color: var(--color-alert-wind); }
.grady-weather-alert--hurricane { border-bottom-color: var(--color-alert-hurricane); }
.grady-weather-alert--tornado { border-bottom-color: var(--color-alert-tornado); }

@media (max-width: 40rem) {
	.grady-weather-alert__inner {
		grid-template-columns: 1fr auto;
	}
	.grady-weather-alert__cta {
		grid-column: 1 / -1;
		justify-self: start;
	}
}

/* —— Sprint 3: Service area map —— */

.grady-service-area-map {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: clamp(var(--space-m), 4vw, var(--space-xl));
	align-items: start;
}

.grady-service-area-map__visual {
	position: relative;
	aspect-ratio: 5 / 4;
	background: var(--placeholder-deep);
	border: var(--border-light);
	overflow: hidden;
}

.grady-service-area-map__svg {
	display: block;
	width: 100%;
	height: 100%;
}

.grady-service-area-map__markers {
	position: absolute;
	inset: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-service-area-map__marker {
	position: absolute;
	left: var(--marker-x);
	top: var(--marker-y);
	transform: translate(-50%, -50%);
	text-align: center;
}

.grady-service-area-map__star {
	display: block;
	font-size: 0.625rem;
	color: var(--accent);
	line-height: 1;
}

.grady-service-area-map__marker-label {
	display: block;
	margin-top: 0.125rem;
	font-family: var(--font-display);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-process);
	text-transform: uppercase;
	color: var(--text-primary);
	white-space: nowrap;
}

.grady-service-area-map__marker.is-current .grady-service-area-map__star {
	color: var(--text-primary);
}

.grady-service-area-map__cities {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-service-area-map__cities a {
	display: block;
	padding: var(--space-s) var(--space-xs) var(--space-s) 0;
	font-family: var(--font-display);
	font-size: clamp(0.9375rem, 0.25vw + 0.875rem, 1.0625rem);
	font-weight: 700;
	text-decoration: none;
	color: var(--text-primary);
	border-bottom: var(--border-width) solid var(--list-separator);
	transition: color var(--duration-fast) var(--ease-premium);
}

.grady-service-area-map__cities a:hover,
.grady-service-area-map__cities a.is-focused,
.grady-service-area-map__cities a:focus-visible {
	color: var(--accent);
}

.grady-service-area-map__cities a[aria-current="page"] {
	color: var(--accent);
}

@media (max-width: 48rem) {
	.grady-service-area-map {
		grid-template-columns: 1fr;
	}
}

/* —— Sprint 4.6: Google Maps service area (placeholder / future live map) —— */

.grady-google-map {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: clamp(var(--space-m), 4vw, var(--space-xl));
	align-items: start;
	margin-bottom: clamp(var(--space-m), 4vw, var(--space-xl));
}

.grady-google-map__fallback-lede {
	margin: 0 0 var(--space-s);
	max-width: 38ch;
}

.grady-google-map__fallback-nav {
	margin: 0;
}

.grady-google-map__fallback-cities {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-google-map__fallback-cities a {
	display: block;
	padding: var(--space-s) var(--space-xs) var(--space-s) 0;
	font-family: var(--font-display);
	font-size: clamp(0.9375rem, 0.25vw + 0.875rem, 1.0625rem);
	font-weight: 700;
	text-decoration: none;
	color: var(--text-primary);
	border-bottom: var(--border-width) solid var(--list-separator);
	transition: color var(--duration-fast) var(--ease-premium);
}

.grady-google-map__fallback-cities a:hover,
.grady-google-map__fallback-cities a:focus-visible {
	color: var(--accent);
}

.grady-google-map__fallback-cities a[aria-current="page"] {
	color: var(--accent);
}

.grady-google-map__canvas-wrap {
	position: relative;
	aspect-ratio: 5 / 4;
	background: var(--placeholder-deep);
	border: var(--border-light);
	overflow: hidden;
}

.grady-google-map__canvas {
	width: 100%;
	height: 100%;
	min-height: 16rem;
}

.grady-google-map__placeholder {
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	gap: var(--space-xs);
	padding: var(--space-m);
	text-align: center;
	background:
		linear-gradient(135deg, rgba(185, 155, 104, 0.06) 0%, transparent 55%),
		repeating-linear-gradient(
			-45deg,
			rgba(255, 255, 255, 0.02) 0,
			rgba(255, 255, 255, 0.02) 1px,
			transparent 1px,
			transparent 12px
		),
		var(--placeholder-deep);
}

.grady-google-map.is-map-active .grady-google-map__placeholder {
	display: none;
}

.grady-google-map__placeholder-label {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--font-size-5xs);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-process);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-google-map__placeholder-note {
	margin: 0;
	font-size: var(--font-size-6xs);
	color: var(--placeholder-text);
	max-width: 28ch;
}

.grady-google-map__infowindow {
	padding: 0.25rem 0;
	font-family: var(--font-body);
	font-size: 0.875rem;
	color: var(--infowindow-text);
}

.grady-google-map__infowindow-title {
	margin: 0 0 0.125rem;
	font-family: var(--font-display);
	font-weight: 700;
	font-size: 0.9375rem;
	color: var(--heading-light);
}

.grady-google-map__infowindow-meta {
	margin: 0 0 0.375rem;
	font-size: 0.75rem;
	color: var(--infowindow-muted);
}

.grady-google-map__infowindow a {
	color: var(--infowindow-link);
	font-weight: 600;
	text-decoration: none;
}

.grady-google-map__infowindow a:hover,
.grady-google-map__infowindow a:focus-visible {
	text-decoration: underline;
}

@media (max-width: 48rem) {
	.grady-google-map {
		grid-template-columns: 1fr;
	}

	.grady-google-map__fallback-cities {
		grid-template-columns: 1fr;
	}
}

/* —— Sprint 4.7: Micro-local service area hub —— */

.grady-micro-local-hub {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: clamp(var(--space-m), 4vw, var(--space-xl));
	align-items: start;
}

.grady-micro-local-hub__subhead {
	margin: 0 0 var(--space-s);
	font-family: var(--font-display);
	font-size: var(--font-size-3xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-micro-local-hub__subhead--major {
	color: var(--text-secondary);
}

.grady-micro-local-hub__areas,
.grady-micro-local-hub__major-cities {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.grady-micro-local-hub__area-link,
.micro-area-live,
.grady-micro-local-hub__area-item,
.micro-area-planned,
.micro-area-needs-review,
.grady-micro-local-hub__major-link {
	display: block;
	padding: var(--space-s) var(--space-xs) var(--space-s) 0;
	font-family: var(--font-display);
	font-size: clamp(0.875rem, 0.2vw + 0.8125rem, 1rem);
	font-weight: 700;
	line-height: var(--line-height-ui-sm);
	text-decoration: none;
	color: var(--text-primary);
	border-bottom: var(--border-width) solid var(--list-separator);
	transition: color var(--duration-fast) var(--ease-premium);
}

.grady-micro-local-hub__area-link--live:hover,
.micro-area-live:hover,
.grady-micro-local-hub__area-link--live:focus-visible,
.micro-area-live:focus-visible,
.grady-micro-local-hub__major-link:hover,
.grady-micro-local-hub__major-link:focus-visible {
	color: var(--accent);
}

.grady-micro-local-hub__area-item,
.micro-area-planned,
.micro-area-needs-review {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--space-2xs) var(--space-s);
	cursor: default;
}

.grady-micro-local-hub__area-item--planned,
.micro-area-planned,
.grady-micro-local-hub__area-item--needs-review,
.micro-area-needs-review {
	color: var(--text-secondary);
}

.grady-micro-local-hub__area-label {
	flex: 1 1 auto;
	min-width: 0;
}

.grady-micro-local-hub__badge {
	flex: 0 0 auto;
	font-size: var(--font-size-4xs);
	font-weight: var(--font-weight-semibold);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	line-height: 1.2;
	padding: 0.2em 0.55em;
	border-radius: var(--radius-pill);
	border: var(--border-width) solid currentColor;
}

.grady-micro-local-hub__area-item--planned .grady-micro-local-hub__badge,
.micro-area-planned .grady-micro-local-hub__badge {
	color: var(--text-secondary);
	border-color: var(--divider-bronze-muted);
	background: rgba(9, 9, 9, 0.04);
}

.grady-micro-local-hub__area-item--needs-review .grady-micro-local-hub__badge,
.micro-area-needs-review .grady-micro-local-hub__badge {
	color: var(--accent);
	border-color: color-mix(in srgb, var(--accent) 45%, transparent);
	background: color-mix(in srgb, var(--accent) 8%, transparent);
}

@media (max-width: 48rem) {
	.grady-micro-local-hub {
		grid-template-columns: 1fr;
	}

	.grady-micro-local-hub__areas,
	.grady-micro-local-hub__major-cities {
		grid-template-columns: 1fr;
	}
}

/* —— Sprint 3.1: Emergency CTA —— */
/* Production mobile/tablet (.grady-emergency-cta--mobile) isolated from desktop droplet (.grady-emergency-cta--desktop) */

.grady-emergency-cta {
	position: fixed;
	z-index: 950;
	display: none;
}

/* Desktop droplet chrome — never visible until 1024px + --desktop */
.grady-emergency-cta__dock,
.grady-emergency-cta__trigger,
.grady-emergency-cta__panel {
	display: none;
}

/* —— Mobile + tablet: max-width 1023px (production-approved) —— */
@media (max-width: 63.99rem) {
	.grady-emergency-cta__dock,
	.grady-emergency-cta__trigger,
	.grady-emergency-cta__panel {
		display: none !important;
	}

	.grady-has-emergency-cta .grady-emergency-cta--mobile,
	.grady-has-emergency-cta .grady-emergency-cta:not(.grady-emergency-cta--desktop) {
		display: grid;
		background: rgba(9, 9, 9, 0.96);
		border: var(--border-width) solid var(--divider-bronze-muted);
		box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35);
		backdrop-filter: blur(12px);
		-webkit-backdrop-filter: blur(12px);
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__call,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__call {
		display: flex;
		flex-direction: column;
		justify-content: center;
		padding: 0.75rem 1rem;
		text-decoration: none;
		background: var(--bronze);
		color: var(--black);
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__label,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__label {
		font-family: var(--font-display);
		font-size: var(--font-size-4xs);
		font-weight: var(--font-weight-semibold);
		letter-spacing: var(--letter-spacing-wide);
		text-transform: uppercase;
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__number,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__number {
		font-family: var(--font-display);
		font-size: var(--font-size-sm);
		font-weight: var(--font-weight-bold);
		letter-spacing: var(--letter-spacing-trust);
		line-height: 1.2;
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__text,
	.grady-emergency-cta--mobile .grady-emergency-cta__help,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__text,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__help {
		display: flex;
		align-items: center;
		justify-content: center;
		padding: 0.75rem 0.5rem;
		font-family: var(--font-display);
		font-size: var(--font-size-4xs);
		font-weight: var(--font-weight-semibold);
		letter-spacing: var(--letter-spacing-wide);
		text-transform: uppercase;
		text-decoration: none;
		color: var(--text-primary);
		border-top: var(--border-width) solid var(--divider-bronze-muted);
		transition: color var(--duration-fast) var(--ease-premium);
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__text:hover,
	.grady-emergency-cta--mobile .grady-emergency-cta__help:hover,
	.grady-emergency-cta--mobile .grady-emergency-cta__text:focus-visible,
	.grady-emergency-cta--mobile .grady-emergency-cta__help:focus-visible,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__text:hover,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__help:hover,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__text:focus-visible,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__help:focus-visible {
		color: var(--accent);
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__call:focus-visible,
	.grady-emergency-cta--mobile .grady-emergency-cta__text:focus-visible,
	.grady-emergency-cta--mobile .grady-emergency-cta__help:focus-visible,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__call:focus-visible,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__text:focus-visible,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__help:focus-visible {
		outline: var(--focus-ring);
		outline-offset: -2px;
	}
}

/* Mobile sticky bottom bar — max-width 767px */
@media (max-width: 47.99rem) {
	.grady-emergency-cta--mobile,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) {
		bottom: 0;
		left: 0;
		right: 0;
		grid-template-columns: 1.15fr 1fr 1fr;
		gap: 0;
		border-radius: 0;
		border-top: 1px solid rgba(185, 155, 104, 0.22);
		border-left: none;
		border-right: none;
		border-bottom: none;
		padding-bottom: env(safe-area-inset-bottom, 0);
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__text,
	.grady-emergency-cta--mobile .grady-emergency-cta__help,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__text,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__help {
		border-top: none;
		border-left: var(--border-width) solid var(--divider-bronze-muted);
	}

	.grady-has-emergency-cta .grady-site-footer,
	.grady-has-emergency-cta #grady-global-footer {
		padding-bottom: 3.75rem;
	}

	/* Mobile sticky bar — call shows label only (number hidden, tel: link unchanged) */
	.grady-emergency-cta--mobile .grady-emergency-cta__number,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__number {
		display: none;
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__call,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__call {
		align-items: center;
	}
}

/* Tablet floating corner card — 768px to 1023px */
@media (min-width: 48rem) and (max-width: 63.99rem) {
	.grady-emergency-cta--mobile,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) {
		bottom: 1.5rem;
		right: 1.5rem;
		left: auto;
		width: 13.5rem;
		grid-template-columns: 1fr;
		grid-template-rows: auto auto auto;
		border-radius: var(--card-radius);
		border-left: 2px solid var(--bronze);
		overflow: hidden;
		opacity: 0.94;
		transition: opacity var(--duration-fast) var(--ease-premium);
	}

	.grady-emergency-cta--mobile:hover,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop):hover {
		opacity: 1;
	}

	.grady-emergency-cta--mobile.is-hidden,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop).is-hidden {
		opacity: 0;
		pointer-events: none;
		transform: translateY(0.5rem);
	}

	.grady-emergency-cta--mobile .grady-emergency-cta__call,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) .grady-emergency-cta__call {
		padding: 0.875rem 1rem;
	}
}

@media (max-width: 63.99rem) and (prefers-reduced-motion: reduce) {
	.grady-emergency-cta--mobile,
	.grady-emergency-cta:not(.grady-emergency-cta--desktop) {
		transition: none;
	}
}

/* —— Desktop droplet v2: min-width 1024px —— */
@media (min-width: 64rem) {
	.grady-has-emergency-cta .grady-emergency-cta.grady-emergency-cta--desktop {
		display: block;
		position: fixed;
		right: 2rem;
		bottom: 2rem;
		top: auto;
		left: auto;
		width: auto;
		background: transparent;
		border: none;
		box-shadow: none;
		backdrop-filter: none;
		-webkit-backdrop-filter: none;
		overflow: visible;
		opacity: 1;
		border-radius: 0;
		padding: 0;
		z-index: 950;
		transform: none;
	}

	.grady-emergency-cta--desktop.is-hidden {
		opacity: 0;
		pointer-events: none;
		transform: translateY(0.5rem);
		transition: opacity 200ms ease, transform 200ms ease;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__dock {
		display: flex;
		flex-direction: row;
		align-items: flex-end;
		justify-content: flex-end;
		gap: 0.625rem;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__trigger {
		position: relative;
		flex-shrink: 0;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 3.25rem;
		height: 4.5rem;
		margin: 0;
		padding: 0;
		border: none;
		background: transparent;
		cursor: pointer;
		color: var(--bronze);
		transform: translateY(0) scale(1);
		transition: transform 200ms ease, filter 200ms ease;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__trigger:hover,
	.grady-emergency-cta--desktop .grady-emergency-cta__trigger:focus-visible {
		transform: translateY(-2px) scale(1.04);
		filter: drop-shadow(0 0 14px rgba(185, 155, 104, 0.42));
	}

	.grady-emergency-cta--desktop.is-expanded .grady-emergency-cta__trigger {
		transform: translateY(-1px) scale(1.02);
		filter: drop-shadow(0 0 12px rgba(185, 155, 104, 0.32));
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__trigger:focus-visible {
		outline: var(--focus-ring);
		outline-offset: 3px;
		border-radius: 999px;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__droplet {
		display: block;
		width: 3.25rem;
		height: 4.5rem;
		overflow: visible;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__droplet-fill {
		fill: rgba(14, 14, 14, 0.98);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__droplet-stroke {
		fill: none;
		stroke: var(--bronze);
		stroke-width: 1.35;
		vector-effect: non-scaling-stroke;
		opacity: 0.92;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__panel {
		display: flex;
		flex-direction: column;
		min-width: 0;
		max-width: 0;
		opacity: 0;
		overflow: hidden;
		pointer-events: none;
		background: rgba(12, 12, 12, 0.94);
		border: 1px solid rgba(185, 155, 104, 0.32);
		border-radius: 1.125rem;
		box-shadow:
			0 16px 48px rgba(0, 0, 0, 0.45),
			inset 0 1px 0 rgba(255, 255, 255, 0.04);
		backdrop-filter: blur(14px);
		-webkit-backdrop-filter: blur(14px);
		transform: translateX(0.75rem) scale(0.96);
		transform-origin: right bottom;
		transition:
			max-width 280ms ease,
			opacity 280ms ease,
			transform 280ms ease;
	}

	.grady-emergency-cta--desktop.is-expanded .grady-emergency-cta__panel {
		max-width: 21.25rem;
		opacity: 1;
		pointer-events: auto;
		transform: translateX(0) scale(1);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call,
	.grady-emergency-cta--desktop .grady-emergency-cta__text,
	.grady-emergency-cta--desktop .grady-emergency-cta__help {
		display: flex;
		align-items: center;
		gap: 0.75rem;
		width: 100%;
		padding: 0.875rem 1rem;
		text-decoration: none;
		color: var(--text-primary);
		background: transparent;
		border: none;
		transition: background 180ms ease, color 180ms ease;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero {
		padding: 1rem 1rem 1.125rem;
		background: linear-gradient(135deg, rgba(185, 155, 104, 0.95), rgba(143, 116, 77, 0.98));
		color: var(--black);
		border-radius: 1.125rem 1.125rem 0 0;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero .grady-emergency-cta__row-icon {
		color: rgba(9, 9, 9, 0.82);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero .grady-emergency-cta__row-label,
	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero .grady-emergency-cta__row-value {
		color: var(--black);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero .grady-emergency-cta__row-value {
		font-size: clamp(1.125rem, 2vw, 1.375rem);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero:hover,
	.grady-emergency-cta--desktop .grady-emergency-cta__call--hero:focus-visible {
		background: linear-gradient(135deg, rgba(201, 170, 118, 1), rgba(155, 126, 86, 1));
		color: var(--black);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row--divider {
		border-top: 1px solid rgba(185, 155, 104, 0.16);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__text:hover,
	.grady-emergency-cta--desktop .grady-emergency-cta__text:focus-visible,
	.grady-emergency-cta--desktop .grady-emergency-cta__help:hover,
	.grady-emergency-cta--desktop .grady-emergency-cta__help:focus-visible {
		background: rgba(185, 155, 104, 0.08);
		color: var(--ivory);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row-icon {
		flex-shrink: 0;
		color: var(--bronze);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row-body {
		display: flex;
		flex-direction: column;
		gap: 0.125rem;
		min-width: 0;
		flex: 1;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row-label {
		font-family: var(--font-display);
		font-size: var(--font-size-4xs);
		font-weight: var(--font-weight-semibold);
		letter-spacing: var(--letter-spacing-wide);
		text-transform: uppercase;
		color: var(--text-secondary);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row-value {
		font-family: var(--font-display);
		font-size: var(--font-size-sm);
		font-weight: var(--font-weight-bold);
		letter-spacing: var(--letter-spacing-trust);
		line-height: 1.2;
		color: var(--heading);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row-sub {
		font-family: var(--font-body);
		font-size: var(--font-size-3xs);
		line-height: 1.35;
		color: var(--text-secondary);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__row-arrow {
		flex-shrink: 0;
		font-family: var(--font-display);
		font-size: 1.125rem;
		line-height: 1;
		color: var(--bronze);
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__help--water {
		border-radius: 0 0 1.125rem 1.125rem;
		padding-bottom: 1rem;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__call:focus-visible,
	.grady-emergency-cta--desktop .grady-emergency-cta__text:focus-visible,
	.grady-emergency-cta--desktop .grady-emergency-cta__help:focus-visible {
		outline: var(--focus-ring);
		outline-offset: -2px;
	}
}

@media (min-width: 64rem) and (prefers-reduced-motion: reduce) {
	.grady-emergency-cta--desktop .grady-emergency-cta__panel,
	.grady-emergency-cta--desktop .grady-emergency-cta__trigger,
	.grady-emergency-cta--desktop.is-hidden {
		transition: none;
	}

	.grady-emergency-cta--desktop.is-expanded .grady-emergency-cta__panel {
		max-width: 21.25rem;
		opacity: 1;
		transform: none;
	}

	.grady-emergency-cta--desktop:not(.is-expanded) .grady-emergency-cta__panel {
		max-width: 0;
		opacity: 0;
	}

	.grady-emergency-cta--desktop .grady-emergency-cta__trigger:hover,
	.grady-emergency-cta--desktop .grady-emergency-cta__trigger:focus-visible {
		transform: none;
	}
}

/* —— Sprint 3: Responsive image CLS guard —— */

img:not([width]):not([height]) {
	max-width: 100%;
	height: auto;
}

.grady-picture {
	display: block;
	line-height: 0;
}

.grady-picture img {
	display: block;
	width: 100%;
	height: auto;
}

/* —— Sprint 3.2: Hero heading hierarchy (semantic only — visual via existing classes) —— */

h1.grady-eyebrow {
	margin: 0 0 var(--space-3);
	font-size: var(--font-size-2xs);
	font-weight: var(--font-weight-medium);
}

h2[class*="hero__title"] {
	margin: 0;
}

/* —— Sprint 4.1: City landing & flagship polish (spacing rhythm only) —— */

.grady-city-landing .grady-heading {
	margin-bottom: var(--space-m);
}

.grady-city-landing .grady-editorial__prose p + p {
	margin-top: var(--space-l);
}

.grady-city-landing .grady-editorial__prose .grady-list {
	margin-top: var(--space-m);
}

.grady-city-landing .grady-list li + li {
	margin-top: var(--space-s);
}

.grady-city-landing .grady-editorial__aside-stack {
	display: flex;
	flex-direction: column;
	gap: var(--space-m);
}

.grady-city-landing .grady-asset-placeholder {
	margin: 0;
	padding: 0;
	border: var(--border-width) solid var(--divider-bronze-muted);
	background: var(--graphite);
}

.grady-city-landing .grady-asset-placeholder__frame {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 12rem;
	padding: var(--space-m);
	text-align: center;
}

.grady-city-landing .grady-asset-placeholder__label {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--font-size-3xs);
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-ui);
	letter-spacing: var(--letter-spacing-wide);
	text-transform: uppercase;
	color: var(--accent);
}

.grady-city-landing .grady-asset-placeholder__caption {
	margin: 0;
	padding: var(--space-s) var(--space-m);
	font-size: var(--font-size-sm);
	line-height: var(--line-height-list);
	color: var(--text-secondary);
	border-top: var(--border-width) solid var(--list-separator);
}

.grady-city-landing .grady-project-gallery {
	gap: clamp(var(--space-m), 3vw, var(--space-l));
	margin-top: var(--space-l);
}

.grady-city-landing .grady-project-card__photo-inner {
	min-height: 12.5rem;
}

.grady-city-landing .grady-faq {
	margin-top: var(--space-l);
}

.grady-city-landing .grady-editorial + .grady-editorial {
	/* ivory after light — subtle separation without new sections */
}

@media (min-width: 48rem) {
	.grady-city-landing .grady-editorial__grid {
		align-items: stretch;
	}
}
