/* ------------------------------------------------------------------
   NGD theme styles.
   Tokens come from theme.json. No raw hex values belong in this file.
   ------------------------------------------------------------------ */

/* Accessibility -------------------------------------------------- */

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

.ngd-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 999;
	padding: .75rem 1.25rem;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-weight: 700;
	text-decoration: none;
}
.ngd-skip-link:focus {
	left: 0;
	outline: 3px solid var(--wp--preset--color--orange);
	outline-offset: 0;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--wp--preset--color--orange-text);
	outline-offset: 2px;
}

/* Prevent horizontal overflow at any width. */
html, body { overflow-x: clip; }

/* Wide content scrolls inside itself rather than pushing the page. */
.wp-block-table { overflow-x: auto; }
pre, .wp-block-code { overflow-x: auto; }

/* Header --------------------------------------------------------- */

.ngd-header {
	border-bottom: 1px solid var(--wp--preset--color--border);
	background: var(--wp--preset--color--base);
	position: relative;
	z-index: 100;
}
.ngd-header__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--wp--preset--spacing--30); }
.ngd-logo { display: inline-flex; align-items: center; text-decoration: none; }
.ngd-logo img, .ngd-logo svg { display: block; width: auto; height: 2.75rem; max-width: 100%; }
@media (min-width: 48rem) { .ngd-logo img, .ngd-logo svg { height: 3.25rem; } }

.ngd-header__utility {
	display: none;
	align-items: center;
	gap: var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--small);
}
@media (min-width: 64rem) { .ngd-header__utility { display: flex; } }

/* Navigation ----------------------------------------------------- */

.ngd-nav .wp-block-navigation-item__content {
	font-weight: 600;
	text-decoration: none;
	padding-bottom: 2px;
	border-bottom: 2px solid transparent;
}
.ngd-nav .wp-block-navigation-item__content:hover,
.ngd-nav .wp-block-navigation-item__content:focus-visible { border-bottom-color: var(--wp--preset--color--orange); }
.ngd-nav .current-menu-item > .wp-block-navigation-item__content { border-bottom-color: var(--wp--preset--color--orange); }

/* Footer --------------------------------------------------------- */

.ngd-footer {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--border);
}
.ngd-footer a { color: var(--wp--preset--color--base); }
.ngd-footer a:hover, .ngd-footer a:focus-visible { color: var(--wp--preset--color--orange-ondark); }
.ngd-footer h2, .ngd-footer h3, .ngd-footer h4 { color: var(--wp--preset--color--base); }
.ngd-footer .ngd-contact-info__heading,
.ngd-footer .ngd-phone__label,
.ngd-footer .ngd-contact-info__label { color: var(--wp--preset--color--border-strong); }
.ngd-footer .ngd-contact-info__heading { border-bottom-color: rgba(255,255,255,.15); }
.ngd-footer .ngd-phone__number,
.ngd-footer .ngd-contact-info__company { color: var(--wp--preset--color--base); }
.ngd-footer .ngd-phone__number:hover { color: var(--wp--preset--color--orange-ondark); }
.ngd-footer__bottom {
	border-top: 1px solid rgba(255,255,255,.15);
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--border-strong);
}

/* Breadcrumbs ---------------------------------------------------- */

.ngd-breadcrumbs { font-size: var(--wp--preset--font-size--x-small); color: var(--wp--preset--color--ink-soft); }
.ngd-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.ngd-breadcrumbs li:not(:last-child)::after { content: "/"; margin-left: .4rem; color: var(--wp--preset--color--border-strong); }
.ngd-breadcrumbs a { color: inherit; text-decoration: none; }
.ngd-breadcrumbs a:hover, .ngd-breadcrumbs a:focus-visible { text-decoration: underline; color: var(--wp--preset--color--orange-text); }

/* Shared bits ---------------------------------------------------- */

.ngd-eyebrow {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--x-small);
	text-transform: uppercase;
	letter-spacing: .12em;
	font-weight: 700;
	color: var(--wp--preset--color--orange-text);
	margin: 0 0 .75rem;
}
.ngd-textlink {
	font-weight: 700;
	font-size: var(--wp--preset--font-size--small);
	text-decoration: none;
	border-bottom: 2px solid var(--wp--preset--color--orange);
	padding-bottom: 1px;
	color: var(--wp--preset--color--contrast);
}
.ngd-textlink:hover, .ngd-textlink:focus-visible { color: var(--wp--preset--color--orange-text); }
.ngd-block-empty {
	padding: var(--wp--preset--spacing--30);
	border: 1px dashed var(--wp--preset--color--border-strong);
	color: var(--wp--preset--color--ink-soft);
	font-size: var(--wp--preset--font-size--small);
}
.ngd-rule { width: 3rem; height: 4px; background: var(--wp--preset--color--orange); border: 0; margin: 0 0 var(--wp--preset--spacing--30); }

/* Post / project meta -------------------------------------------- */

.ngd-meta { font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--ink-soft); }
.ngd-prose > * + * { margin-top: 1.25em; }
.ngd-prose h2 { margin-top: 1.8em; }
.ngd-prose h3 { margin-top: 1.5em; }
.ngd-prose ul, .ngd-prose ol { padding-left: 1.35em; }
.ngd-prose li + li { margin-top: .35em; }
.ngd-prose img { height: auto; }

/* Post cards ----------------------------------------------------- */

.ngd-post-card { border-top: 1px solid var(--wp--preset--color--border); padding-top: var(--wp--preset--spacing--30); }
.ngd-post-card__title { font-family: var(--wp--preset--font-family--display); font-size: var(--wp--preset--font-size--x-large); line-height: 1.15; margin: 0 0 .35rem; }
.ngd-post-card__title a { text-decoration: none; color: var(--wp--preset--color--contrast); }
.ngd-post-card__title a:hover, .ngd-post-card__title a:focus-visible { color: var(--wp--preset--color--orange-text); }

/* Print ---------------------------------------------------------- */

@media print {
	.ngd-header, .ngd-footer, .ngd-skip-link, .ngd-breadcrumbs { display: none; }
	body { color: #000; background: #fff; }
}

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

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important; /* Kill motion for users who ask for it. */
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

/* Primary nav ---------------------------------------------------- */

.ngd-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0;
}
.ngd-nav__list a {
	display: block;
	padding: .75rem 0;
	font-weight: 600;
	text-decoration: none;
	color: var(--wp--preset--color--contrast);
	border-bottom: 1px solid var(--wp--preset--color--border);
}
.ngd-nav__list .sub-menu { list-style: none; margin: 0; padding: 0 0 0 1rem; }
.ngd-nav__list .sub-menu a { font-weight: 400; font-size: var(--wp--preset--font-size--small); }
.ngd-nav__cta { display: flex; flex-direction: column; gap: .75rem; padding-top: 1rem; }

.ngd-btn {
	display: inline-block;
	background: var(--wp--preset--color--orange-text);
	color: var(--wp--preset--color--base);
	font-weight: 700;
	font-size: var(--wp--preset--font-size--small);
	letter-spacing: .02em;
	text-decoration: none;
	padding: .9em 1.6em;
	border-radius: 2px;
	text-align: center;
	transition: background var(--wp--custom--transition--base) var(--wp--custom--transition--ease);
}
.ngd-btn:hover, .ngd-btn:focus-visible { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); }

/* Mobile disclosure */
.ngd-nav {
	display: none;
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	background: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--border);
	padding: var(--wp--preset--spacing--30);
	box-shadow: var(--wp--preset--shadow--md);
}
.ngd-nav.is-open { display: block; }

.ngd-nav-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	background: none;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 2px;
	cursor: pointer;
	padding: 0;
}
.ngd-nav-toggle__bars { display: block; width: 1.15rem; }
.ngd-nav-toggle__bars span {
	display: block;
	height: 2px;
	background: var(--wp--preset--color--contrast);
	border-radius: 1px;
}
.ngd-nav-toggle__bars span + span { margin-top: 4px; }
.ngd-nav-toggle[aria-expanded="true"] { background: var(--wp--preset--color--surface); }

@media (min-width: 64rem) {
	.ngd-nav-toggle { display: none; }
	.ngd-nav {
		display: flex;
		position: static;
		align-items: center;
		gap: var(--wp--preset--spacing--30);
		background: none;
		border: 0;
		padding: 0;
		box-shadow: none;
	}
	.ngd-nav__list { flex-direction: row; gap: var(--wp--preset--spacing--30); align-items: center; }
	.ngd-nav__list > li { position: relative; }
	.ngd-nav__list a { padding: .35rem 0; border-bottom: 2px solid transparent; }
	.ngd-nav__list > li > a:hover,
	.ngd-nav__list > li > a:focus-visible,
	.ngd-nav__list > li.current-menu-item > a,
	.ngd-nav__list > li.current-page-ancestor > a { border-bottom-color: var(--wp--preset--color--orange); }
	.ngd-nav__list .sub-menu {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		min-width: 13rem;
		background: var(--wp--preset--color--base);
		border: 1px solid var(--wp--preset--color--border);
		box-shadow: var(--wp--preset--shadow--md);
		padding: .5rem 0;
		z-index: 10;
	}
	.ngd-nav__list > li:hover > .sub-menu,
	.ngd-nav__list > li:focus-within > .sub-menu { display: block; }
	.ngd-nav__list .sub-menu a { padding: .5rem 1rem; border-bottom: 0; }
	.ngd-nav__list .sub-menu a:hover, .ngd-nav__list .sub-menu a:focus-visible { background: var(--wp--preset--color--base-alt); }
	.ngd-nav__cta { flex-direction: row; align-items: center; gap: var(--wp--preset--spacing--30); padding-top: 0; }
}

/* Footer layout -------------------------------------------------- */

.ngd-footer__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--40);
}
@media (min-width: 48rem) { .ngd-footer__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 64rem) { .ngd-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.ngd-footer__logo { height: 2.75rem; width: auto; }
.ngd-footer__tagline {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--large);
	color: var(--wp--preset--color--base);
	margin: .75rem 0 0;
}
.ngd-footer__heading {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--x-small);
	text-transform: uppercase;
	letter-spacing: .1em;
	font-weight: 700;
	margin: 0 0 .9rem;
}
.ngd-footer__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.ngd-footer__list a { text-decoration: none; font-size: var(--wp--preset--font-size--small); }
.ngd-footer__list a:hover, .ngd-footer__list a:focus-visible { text-decoration: underline; }
.ngd-footer__address { font-style: normal; display: flex; flex-direction: column; gap: .15rem; font-size: var(--wp--preset--font-size--small); }
.ngd-footer__hours { font-size: var(--wp--preset--font-size--small); margin: .75rem 0 0; }
.ngd-footer__social { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .9rem; }
.ngd-footer__social a { font-size: var(--wp--preset--font-size--x-small); text-transform: uppercase; letter-spacing: .06em; }
.ngd-footer__bottom {
	margin-top: var(--wp--preset--spacing--50);
	padding-top: var(--wp--preset--spacing--30);
	display: flex;
	flex-wrap: wrap;
	gap: .5rem var(--wp--preset--spacing--30);
	align-items: center;
	justify-content: space-between;
}
.ngd-footer__legal { margin: 0; }
.ngd-footer__dcjs { display: inline-block; margin-left: .5rem; }
.ngd-footer__legal-nav { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 1rem; }
.ngd-footer__legal-nav a { font-size: var(--wp--preset--font-size--x-small); text-decoration: none; }
.ngd-footer__legal-nav a:hover { text-decoration: underline; }

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

.ngd-hero {
	background: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--border);
	position: relative;
	overflow: hidden;
}
.ngd-hero::after {
	content: "";
	position: absolute;
	right: -10%;
	top: -30%;
	width: 46rem;
	height: 46rem;
	background:
		radial-gradient(circle at 30% 30%, rgba(0,174,239,.10), transparent 60%),
		radial-gradient(circle at 70% 60%, rgba(245,128,32,.10), transparent 60%);
	pointer-events: none;
	z-index: 0;
}
.ngd-hero__inner {
	position: relative;
	z-index: 1;
	padding-top: var(--wp--preset--spacing--70);
	padding-bottom: var(--wp--preset--spacing--70);
	max-width: 58rem;
}
.ngd-hero__heading {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 400;
	font-size: var(--wp--preset--font-size--display);
	line-height: 1.02;
	letter-spacing: -.01em;
	color: var(--wp--preset--color--contrast);
	margin: 0;
	text-wrap: balance;
}
.ngd-hero__mark {
	color: var(--wp--preset--color--orange-text);
	position: relative;
	white-space: nowrap;
}
.ngd-hero__sub {
	font-size: var(--wp--preset--font-size--large);
	color: var(--wp--preset--color--ink-soft);
	margin: var(--wp--preset--spacing--30) 0 0;
	max-width: 44rem;
	text-wrap: pretty;
}
.ngd-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--30);
	margin-top: var(--wp--preset--spacing--40);
}

/* CTA band ------------------------------------------------------- */

.ngd-cta { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--border); }
.ngd-cta__inner {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--60);
	padding-bottom: var(--wp--preset--spacing--60);
}
@media (min-width: 56rem) {
	.ngd-cta__inner { flex-direction: row; align-items: center; justify-content: space-between; }
	.ngd-cta__text { max-width: 34rem; }
}
.ngd-cta__heading {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 400;
	font-size: var(--wp--preset--font-size--xx-large);
	line-height: 1.05;
	color: var(--wp--preset--color--base);
	margin: 0;
}
.ngd-cta__sub { margin: .75rem 0 0; color: var(--wp--preset--color--border-strong); }
.ngd-cta__actions { display: flex; flex-direction: column; gap: var(--wp--preset--spacing--20); align-items: flex-start; }
.ngd-cta__phone { margin: 0; }
.ngd-cta .ngd-phone__label { color: var(--wp--preset--color--border-strong); }
.ngd-cta .ngd-phone__number { color: var(--wp--preset--color--base); }
.ngd-cta .ngd-phone__number:hover { color: var(--wp--preset--color--orange-ondark); }
.ngd-btn--light { background: var(--wp--preset--color--orange); color: var(--wp--preset--color--contrast); }
.ngd-btn--light:hover, .ngd-btn--light:focus-visible { background: var(--wp--preset--color--base); color: var(--wp--preset--color--contrast); }
.ngd-cta a:focus-visible { outline-color: var(--wp--preset--color--orange-ondark); }
