/* ==========================================================================
   Town & Country Driveways
   Brand: navy #313f52 (current site), blue #60a6fa (logo ampersand).
   Type: Inter throughout, large tight headings.
   ========================================================================== */

:root {
	--navy: #313f52;
	--navy-d: #263142;
	--navy-dd: #1b2331;
	--blue: #60a6fa;
	--blue-h: #7db6fb;
	--blue-d: #2f7fd6;
	--text: #3d4756;
	--head: #1b2331;
	--muted: #6b7584;
	--line: #e3e6ea;
	--bg: #f2f3f5;
	--white: #fff;
	--wa: #25d366;

	--font: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
	--serif: "Newsreader", Georgia, serif;
	--wrap: 1280px;
	--gutter: clamp(16px, 4vw, 40px);
	--section: clamp(64px, 8vw, 110px);
	--r: 4px;
	--r-l: 8px;
	--hdr: 72px;
	--ease: cubic-bezier(.2, .7, .2, 1);
	--shadow: 0 20px 50px -20px rgba(27, 35, 49, .25);
}
@media (min-width: 1100px) { :root { --hdr: 78px; } }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--hdr) + 16px); }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body { margin: 0; background: var(--bg); color: var(--text); font: 400 1rem/1.65 var(--font); -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg, video { display: block; max-width: 100%; height: auto; }
a { color: var(--blue-d); text-underline-offset: .15em; }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
button { font: inherit; color: inherit; cursor: pointer; }
h1, h2, h3, h4 { font-family: var(--font); font-weight: 600; line-height: 1.1; letter-spacing: -.035em; color: var(--head); margin: 0 0 .5em; text-wrap: balance; }
h3 { letter-spacing: -.02em; }
h1 em, h2 em, h3 em { font-style: normal; color: inherit; }
p { margin: 0 0 1em; }
address { font-style: normal; }
[hidden] { display: none !important; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.tcd-skip { position: absolute; left: 12px; top: -60px; z-index: 200; padding: 10px 16px; background: var(--navy); color: #fff; border-radius: var(--r); }
.tcd-skip:focus { top: 12px; }
.tcd-wrap { width: 100%; max-width: calc(var(--wrap) + var(--gutter) * 2); margin-inline: auto; padding-inline: var(--gutter); }
.tcd-wrap--narrow { max-width: calc(820px + var(--gutter) * 2); }
.tcd-icon, .tcd-btn svg { width: 1.1em; height: 1.1em; flex: none; }

/* Section label above titles: small, plain, uppercase. */
.tcd-pill, p.tcd-pill { display: block; margin: 0 0 16px; padding: 0; border: 0; background: none; font-size: .78rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--blue-d); }
.is-ink .tcd-pill, .tcd-hero .tcd-pill, .tcd-services__band .tcd-pill, .tcd-cta .tcd-pill, .tcd-pagehead .tcd-pill { color: var(--blue); background: none; border: 0; }
.tcd-eyebrow { display: inline-flex; margin: 0 0 14px; font-size: .9rem; font-weight: 500; color: var(--blue); }

/* ---------- Buttons ---------- */
.tcd-btn { --bg: var(--navy); --fg: #fff; display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 54px; padding: 15px 26px; background: var(--bg); color: var(--fg); border: 0; border-radius: var(--r); font: 600 1rem/1.1 var(--font); text-decoration: none; white-space: nowrap; transition: background .2s, color .2s; }
.tcd-btn .tcd-icon--arrow { transform: rotate(-45deg); transition: transform .25s var(--ease); }
.tcd-btn:hover .tcd-icon--arrow { transform: rotate(0); }
.tcd-btn--primary { --bg: var(--blue); --fg: var(--head); }
.tcd-btn--primary:hover { --bg: var(--blue-h); }
.tcd-btn--light { --bg: #fff; --fg: var(--head); }
.tcd-btn--light:hover { --bg: #e9eef5; }
.tcd-btn--ghost { --bg: rgba(255, 255, 255, .08); --fg: #fff; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .35); }
.tcd-btn--ghost:hover { --bg: rgba(255, 255, 255, .16); }
.tcd-btn--outline { --bg: transparent; --fg: var(--head); box-shadow: inset 0 0 0 1.5px var(--head); }
.tcd-btn--outline:hover { --bg: var(--head); --fg: #fff; }
.tcd-btn--block { width: 100%; }
.tcd-link { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; color: var(--blue-d); text-decoration: none; }
.tcd-arrow { display: inline-flex; align-items: center; gap: 12px; font-weight: 600; color: var(--head); text-decoration: none; }
.tcd-arrow i { display: grid; place-items: center; width: 34px; height: 34px; border-radius: var(--r); background: var(--blue); color: var(--head); transition: transform .25s var(--ease); }
.tcd-arrow i .tcd-icon { width: 16px; height: 16px; transform: rotate(-45deg); }
.tcd-arrow:hover i { transform: rotate(45deg); }
.tcd-arrow--light, .is-ink .tcd-arrow { color: #fff; }
.tcd-stars { display: inline-flex; gap: 1px; color: #f5b100; vertical-align: middle; }
.tcd-stars .tcd-icon { width: 15px; height: 15px; }
.tcd-stars .is-off { opacity: .25; }

/* ==========================================================================
   Header
   ========================================================================== */
.tcd-header { position: fixed; inset: 0 0 auto; z-index: 100; transition: transform .35s ease; }
.tcd-header.is-hidden { transform: translateY(-100%); }
body.menu-open .tcd-header { transform: none; }
.admin-bar .tcd-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .tcd-header { top: 46px; } }
.tcd-utility { display: none; }

.tcd-bar { position: relative; background: var(--navy-dd); color: #fff; border-bottom: 1px solid rgba(255, 255, 255, .1); transition: background .3s; }
.has-hero .tcd-header:not(.is-scrolled) .tcd-bar { background: transparent; }
.tcd-header.is-scrolled .tcd-bar { background: rgba(27, 35, 49, .96); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.tcd-bar__inner { display: flex; align-items: center; gap: 24px; height: var(--hdr); }
.tcd-logo { display: block; flex: none; position: relative; }
.tcd-logo .tcd-logo__img { width: clamp(150px, 13vw, 180px); height: auto; }
.tcd-bar__inner > .tcd-logo picture:first-child { display: none; }

.tcd-nav__list { list-style: none; margin: 0; padding: 0; }
.tcd-nav__drawerhead, .tcd-nav__drawerfoot { display: none; }
.tcd-nav__link, .tcd-bar__phonetext strong { white-space: nowrap; }
@media (min-width: 1100px) {
	.tcd-nav { margin: 0 auto; }
	.tcd-nav__list { display: flex; align-items: center; gap: 4px; }
	.tcd-nav__item { position: relative; display: flex; align-items: center; }
	.tcd-nav__link { display: block; padding: 10px 10px; font-weight: 500; font-size: .95rem; color: rgba(255, 255, 255, .92); text-decoration: none; }
	.tcd-nav__link:hover, .tcd-nav__item.is-active > .tcd-nav__link { color: var(--blue); }
	.tcd-nav__item.has-sub > .tcd-nav__link { padding-right: 2px; }
	.tcd-nav__toggle { background: none; border: 0; padding: 10px 8px 10px 3px; color: rgba(255, 255, 255, .8); display: grid; place-items: center; }
	.tcd-nav__toggle svg { width: 10px; }
	.tcd-nav__panel { position: absolute; top: 100%; left: -8px; padding-top: 14px; opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .15s, transform .2s, visibility .15s; z-index: 10; }
	.tcd-nav__item:hover > .tcd-nav__panel, .tcd-nav__item:focus-within > .tcd-nav__panel, .tcd-nav__item.is-open > .tcd-nav__panel { opacity: 1; visibility: visible; transform: none; }
	.tcd-nav__sub { list-style: none; margin: 0; padding: 8px; min-width: 250px; background: #fff; border-radius: var(--r); box-shadow: var(--shadow); }
	.tcd-nav__sub .tcd-nav__link { padding: 10px 14px; color: var(--head); border-radius: var(--r); }
	.tcd-nav__sub .tcd-nav__link:hover { background: var(--bg); color: var(--blue-d); }
	.tcd-nav__panel--areas { left: 50%; transform: translate(-50%, 6px); }
	.tcd-nav__item:hover > .tcd-nav__panel--areas, .tcd-nav__item:focus-within > .tcd-nav__panel--areas, .tcd-nav__item.is-open > .tcd-nav__panel--areas { transform: translate(-50%, 0); }
	.tcd-nav__areas { display: grid; grid-template-columns: repeat(3, minmax(160px, 1fr)); gap: 6px 32px; padding: 22px 26px; background: #fff; border-radius: var(--r); box-shadow: var(--shadow); width: max-content; max-width: 720px; }
}
@media (min-width: 1100px) and (max-width: 1340px) { .tcd-nav__link { padding-inline: 7px; font-size: .92rem; } .tcd-bar__phonetext { display: none !important; } }
.tcd-nav__countyname { margin: 0 0 6px; font-weight: 600; font-size: .95rem; }
.tcd-nav__countyname a { color: var(--head); text-decoration: none; }
.tcd-nav__county ul { list-style: none; margin: 0; padding: 0; }
.tcd-nav__county li a { display: block; padding: 3px 0; font-size: .92rem; color: var(--muted); text-decoration: none; }
.tcd-nav__county li a:hover { color: var(--blue-d); }

.tcd-bar__actions { display: flex; align-items: center; gap: 14px; margin-left: auto; }
@media (min-width: 1100px) { .tcd-bar__actions { margin-left: 0; } }
.tcd-bar__phone { display: flex; align-items: center; gap: 10px; color: #fff; text-decoration: none; }
.tcd-bar__phoneicon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r); background: rgba(255, 255, 255, .1); color: var(--blue); }
.tcd-bar__phoneicon .tcd-icon { width: 19px; height: 19px; }
.tcd-bar__phonetext { display: none; line-height: 1.2; }
.tcd-bar__phonetext small { display: block; font-size: .75rem; color: rgba(255, 255, 255, .65); }
.tcd-bar__phonetext strong { font-size: 1.05rem; font-weight: 600; font-variant-numeric: tabular-nums; }
@media (min-width: 640px) { .tcd-bar__phonetext { display: block; } }
.tcd-bar__cta { display: none; min-height: 48px; padding: 12px 20px; }
@media (min-width: 1100px) { .tcd-bar__cta { display: inline-flex; } }
.tcd-burger { display: grid; gap: 5px; place-content: center; width: 46px; height: 46px; background: rgba(255, 255, 255, .1); border: 0; border-radius: var(--r); padding: 0; color: #fff; }
.tcd-burger span { display: block; width: 20px; height: 2px; background: currentColor; }
@media (min-width: 1100px) { .tcd-burger { display: none; } }

@media (max-width: 1099.98px) {
	.tcd-nav { position: fixed; inset: 0; z-index: 120; display: flex; flex-direction: column; background: var(--navy-dd); color: #fff; overflow-y: auto; padding: 0 var(--gutter) calc(24px + env(safe-area-inset-bottom)); visibility: hidden; opacity: 0; transition: opacity .2s, visibility .2s; }
	body.menu-open { overflow: hidden; }
	body.menu-open .tcd-nav { visibility: visible; opacity: 1; }
	.tcd-nav__drawerhead { display: flex; align-items: center; justify-content: space-between; height: var(--hdr); flex: none; }
	.tcd-nav__drawerhead .tcd-logo__img { width: 160px; }
	.tcd-nav__close { display: grid; place-items: center; width: 46px; height: 46px; border-radius: var(--r); border: 0; background: rgba(255, 255, 255, .1); color: #fff; }
	.tcd-nav { background: radial-gradient(120% 60% at 100% 100%, rgba(96, 166, 250, .14), transparent 60%), var(--navy-dd); }
	.tcd-nav__list { margin-top: 8px; }
	.tcd-nav__list > .tcd-nav__item { display: grid; grid-template-columns: 1fr auto; align-items: center; border-bottom: 1px solid rgba(255, 255, 255, .08); }
	.tcd-nav__list > .tcd-nav__item > .tcd-nav__link { display: block; padding: 14px 0; font-family: var(--serif); font-weight: 400; font-size: 1.7rem; line-height: 1.15; letter-spacing: -.01em; color: #fff; text-decoration: none; }
	.tcd-nav__list > .tcd-nav__item.is-active > .tcd-nav__link, .tcd-nav__list > .tcd-nav__item.is-open > .tcd-nav__link { color: var(--blue); }
	.tcd-nav__toggle { width: 40px; height: 40px; display: grid; place-items: center; background: rgba(255, 255, 255, .07); border: 0; border-radius: 50%; color: #fff; transition: background .2s; }
	.tcd-nav__item.is-open > .tcd-nav__toggle { background: var(--blue); color: var(--navy-dd); }
	.tcd-nav__toggle svg { width: 12px; transition: transform .25s; }
	.tcd-nav__item.is-open .tcd-nav__toggle svg { transform: rotate(180deg); }
	.tcd-nav__panel { grid-column: 1 / -1; display: none; padding: 2px 0 16px; }
	.tcd-nav__item.is-open > .tcd-nav__panel { display: block; animation: tcd-drop .25s ease-out; }
	.tcd-nav__sub { list-style: none; margin: 0; padding: 0 0 0 16px; border-left: 2px solid rgba(96, 166, 250, .5); }
	.tcd-nav__sub .tcd-nav__item { display: block; border: 0; }
	.tcd-nav__sub .tcd-nav__link { display: block; font-weight: 500; font-size: 1rem; padding: 8px 0; color: rgba(255, 255, 255, .75); text-decoration: none; }
	.tcd-nav__sub .tcd-nav__item.is-active > .tcd-nav__link { color: #fff; }
	.tcd-nav__areas { display: grid; gap: 16px; padding-left: 16px; border-left: 2px solid rgba(96, 166, 250, .5); }
	.tcd-nav__countyname { margin-bottom: 4px; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }
	.tcd-nav__countyname a { color: var(--blue); }
	.tcd-nav__county li a { color: rgba(255, 255, 255, .75); padding: 5px 0; font-size: .95rem; }
	.tcd-nav__county ul { columns: 2; column-gap: 16px; }
	body.menu-open .tcd-nav__list > .tcd-nav__item, body.menu-open .tcd-nav__drawerfoot { animation: tcd-rise .4s cubic-bezier(.2, .7, .2, 1) both; }
	body.menu-open .tcd-nav__list > .tcd-nav__item:nth-child(2) { animation-delay: .03s; }
	body.menu-open .tcd-nav__list > .tcd-nav__item:nth-child(3) { animation-delay: .06s; }
	body.menu-open .tcd-nav__list > .tcd-nav__item:nth-child(4) { animation-delay: .09s; }
	body.menu-open .tcd-nav__list > .tcd-nav__item:nth-child(5) { animation-delay: .12s; }
	body.menu-open .tcd-nav__list > .tcd-nav__item:nth-child(6) { animation-delay: .15s; }
	body.menu-open .tcd-nav__list > .tcd-nav__item:nth-child(n+7) { animation-delay: .18s; }
	body.menu-open .tcd-nav__drawerfoot { animation-delay: .22s; }
	.tcd-nav__drawerfoot { display: grid; gap: 10px; margin-top: 28px; }
	.tcd-nav__drawerfoot .tcd-btn { min-height: 54px; }
	.tcd-nav__drawerfoot .tcd-btn--outline { box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .35); --fg: #fff; }
	.tcd-phones--drawer { margin-top: 14px; padding-top: 16px; border-top: 1px solid rgba(255, 255, 255, .08); }
	.tcd-phones--drawer::before { content: "Local numbers"; display: block; margin-bottom: 4px; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(255, 255, 255, .5); }
	.tcd-phones--drawer a { color: rgba(255, 255, 255, .85); padding: 6px 0; font-size: .95rem; }
	.tcd-phones--drawer a:hover { background: none; }
}
@keyframes tcd-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes tcd-drop { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { body.menu-open .tcd-nav__list > .tcd-nav__item, body.menu-open .tcd-nav__drawerfoot, .tcd-nav__item.is-open > .tcd-nav__panel { animation: none; } }

.tcd-main { padding-top: var(--hdr); }
.has-hero .tcd-main { padding-top: 0; }

/* ==========================================================================
   Hero
   ========================================================================== */
.tcd-block.tcd-hero { position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: center; min-height: min(100svh, 980px); padding: calc(var(--hdr) + 60px) 0 70px; background: var(--navy-dd); color: #fff; }
.tcd-block.tcd-hero--compact { min-height: min(78svh, 720px); }
.tcd-block.tcd-hero--form { padding-bottom: 0; }
.tcd-hero__media { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.tcd-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; opacity: 0; transition: opacity 1.4s ease; }
.tcd-hero__img.is-active { opacity: 1; }
.tcd-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(20, 27, 38, .92) 0%, rgba(20, 27, 38, .65) 50%, rgba(20, 27, 38, .25) 100%), linear-gradient(0deg, rgba(20, 27, 38, .6), transparent 40%); }
.tcd-hero__inner { flex: 1; display: flex; align-items: center; }
.tcd-hero__copy { max-width: 820px; }
.tcd-hero .tcd-crumbs, .tcd-hero .tcd-crumbs a { color: rgba(255, 255, 255, .7); }
.tcd-hero .tcd-crumbs .breadcrumb_last { color: #fff; }
.tcd-hero__title { font-size: clamp(2.6rem, 1.4rem + 4.6vw, 5.2rem); line-height: 1.02; letter-spacing: -.045em; color: #fff; margin: 0 0 24px; }
.tcd-hero--compact .tcd-hero__title { font-size: clamp(2.4rem, 1.4rem + 3.4vw, 4.2rem); }
.tcd-hero__text { max-width: 600px; font-size: clamp(1.02rem, .98rem + .3vw, 1.15rem); color: rgba(255, 255, 255, .82); margin-bottom: 36px; }
.tcd-hero__actions { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; }
.tcd-hero__call { display: inline-flex; align-items: center; gap: 12px; color: #fff; text-decoration: none; line-height: 1.2; }
.tcd-hero__callicon { display: grid; place-items: center; width: 54px; height: 54px; border-radius: var(--r); border: 1px solid rgba(255, 255, 255, .35); color: var(--blue); }
.tcd-hero__call small { display: block; font-size: .8rem; color: rgba(255, 255, 255, .65); }
.tcd-hero__call strong { font-size: 1.25rem; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Quote bar under the hero */
.tcd-quotebar-wrap { position: relative; z-index: 2; margin-top: 56px; margin-bottom: -64px; }
.tcd-quotebar { display: grid; gap: 14px 24px; align-items: center; padding: 22px 26px; background: #fff; border-radius: var(--r-l); box-shadow: var(--shadow); color: var(--text); }
@media (min-width: 1100px) { .tcd-quotebar { grid-template-columns: 200px 1fr; } }
.tcd-quotebar__title { margin: 0; font-size: 1.15rem; font-weight: 600; letter-spacing: -.02em; color: var(--head); line-height: 1.25; }
.tcd-hero--form + .tcd-block, .tcd-hero--form + * { padding-top: calc(var(--section) + 64px) !important; }
.tcd-form--bar .tcd-bar-fields { display: grid; gap: 10px; grid-template-columns: 1fr; }
@media (min-width: 600px) { .tcd-form--bar .tcd-bar-fields { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .tcd-form--bar .tcd-bar-fields { grid-template-columns: 1.3fr 1fr 1fr .8fr auto; } }
.tcd-form--bar .tcd-input input, .tcd-form--bar .tcd-input select { min-height: 54px; background: var(--bg); border-color: transparent; }
.tcd-form--bar .tcd-btn { min-height: 54px; }
@media (max-width: 999.98px) {
	.tcd-block.tcd-hero { min-height: 0; padding-top: calc(var(--hdr) + 48px); }
	.tcd-hero::before { background: linear-gradient(180deg, rgba(20, 27, 38, .8), rgba(20, 27, 38, .72)); }
	.tcd-quotebar-wrap { margin-top: 40px; }
}
@media (max-width: 640px) {
	.tcd-hero__actions { flex-direction: column; align-items: stretch; gap: 18px; }
}

/* ==========================================================================
   Forms
   ========================================================================== */
.tcd-form { display: grid; gap: 14px; }
.tcd-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.tcd-form__title { font-size: 1.5rem; font-weight: 600; letter-spacing: -.03em; color: var(--head); margin: 0; }
.tcd-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.tcd-form legend { font-weight: 600; font-size: .9rem; color: var(--head); margin-bottom: 8px; padding: 0; }
.tcd-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.tcd-chip { position: relative; }
.tcd-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.tcd-chip span { display: inline-block; padding: 8px 14px; border-radius: var(--r); background: var(--bg); font-size: .88rem; font-weight: 500; color: var(--head); line-height: 1.2; }
.tcd-chip:hover span { background: #e6e9ee; }
.tcd-chip input:checked + span { background: var(--navy); color: #fff; }
.tcd-chip input:focus-visible + span { outline: 2px solid var(--blue); outline-offset: 2px; }
.is-invalid .tcd-chip span { box-shadow: inset 0 0 0 1px #c2412d; }
.tcd-form__grid { display: grid; gap: 12px; }
@media (min-width: 520px) { .tcd-form__grid { grid-template-columns: 1fr 1fr; } }
.tcd-input--wide { grid-column: 1 / -1; }
.tcd-input label { display: block; font-size: .85rem; font-weight: 600; color: var(--head); margin-bottom: 6px; }
.tcd-optional { font-weight: 400; color: var(--muted); }
.tcd-input input, .tcd-input select, .tcd-input textarea { width: 100%; min-height: 52px; padding: 12px 16px; background: var(--bg); color: var(--head); border: 1px solid transparent; border-radius: var(--r); font: 400 1rem/1.3 var(--font); appearance: none; transition: border-color .2s, background .2s; }
.tcd-input input::placeholder, .tcd-input textarea::placeholder { color: #8a93a0; }
.tcd-input select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='m1 1.5 5 5 5-5' fill='none' stroke='%231b2331' stroke-width='1.6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; background-size: 12px; padding-right: 40px; }
.tcd-input textarea { min-height: 120px; resize: vertical; }
.tcd-input input:focus, .tcd-input select:focus, .tcd-input textarea:focus { outline: none; background: #fff; border-color: var(--blue); }
.tcd-input.is-invalid input, .tcd-input.is-invalid select { border-color: #c2412d; }
.tcd-file input[type=file] { padding: 12px; min-height: 0; font-size: .9rem; border: 1px dashed #c3cad3; }
.tcd-file input[type=file]::file-selector-button { margin-right: 12px; padding: 8px 14px; border: 0; border-radius: var(--r); background: var(--navy); color: #fff; font: 600 .85rem var(--font); cursor: pointer; }
.tcd-file__hint { margin: 6px 0 0; font-size: .82rem; color: var(--muted); }
.tcd-form__foot { display: grid; gap: 8px; }
.tcd-form__small { margin: 0; font-size: .8rem; color: var(--muted); line-height: 1.45; }
.tcd-form__small a { color: inherit; }
.tcd-form__status { margin: 0; font-size: .9rem; font-weight: 600; }
.tcd-form__status:empty { display: none; }
.tcd-form__calcnote { margin: 0; padding: 10px 14px; border-radius: var(--r); background: #e8f2fe; color: var(--blue-d); font-size: .9rem; font-weight: 600; }
.tcd-form.is-sending button[type=submit] { opacity: .7; pointer-events: none; }

/* ==========================================================================
   Sections
   ========================================================================== */
.tcd-block { padding-block: var(--section); position: relative; }
.tcd-head { margin-bottom: clamp(36px, 4vw, 56px); }
.tcd-head--split { display: grid; gap: 20px 64px; align-items: end; }
@media (min-width: 900px) { .tcd-head--split { grid-template-columns: 1.15fr 1fr; } }
.tcd-head__main { max-width: 680px; }
.tcd-head__side { display: grid; gap: 18px; justify-items: start; }
.tcd-block__title { font-size: clamp(2rem, 1.3rem + 2.2vw, 3rem); margin: 0; }
.tcd-block__intro { font-size: 1.02rem; color: var(--muted); margin: 0; max-width: 520px; }
.is-white { background: #fff; }
.is-grey, .is-stone { background: #fff; }
.is-ink { background: var(--navy-dd); color: rgba(255, 255, 255, .78); }
.is-ink .tcd-block__title, .is-ink h3 { color: #fff; }
.is-ink .tcd-block__intro { color: rgba(255, 255, 255, .7); }
.js .tcd-reveal { opacity: 1; }

/* Trust strip (inner pages) */
.tcd-block.tcd-trust { background: #fff; padding-block: 28px; border-bottom: 1px solid var(--line); }
.tcd-trust__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 18px 28px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.tcd-trust__list li { display: grid; grid-template-columns: auto 1fr; gap: 0 14px; align-items: center; }
.tcd-trust__list .tcd-icon { grid-row: span 2; width: 44px; height: 44px; padding: 11px; border-radius: var(--r); background: var(--bg); color: var(--navy); stroke-width: 1.8; }
.tcd-trust__list strong { font-weight: 600; color: var(--head); }
.tcd-trust__list span { color: var(--muted); font-size: .9rem; line-height: 1.4; }

/* About */
.tcd-about__grid { display: grid; gap: 48px; align-items: center; }
@media (min-width: 1000px) { .tcd-about__grid { grid-template-columns: 1fr 1fr; gap: 80px; } }
.tcd-about__media { position: relative; padding-right: 22%; }
.tcd-about__main { position: relative; border-radius: var(--r-l); overflow: hidden; aspect-ratio: 4 / 4.6; }
.tcd-about__main img { width: 100%; height: 100%; object-fit: cover; }
.tcd-about__main::after { content: ""; position: absolute; inset: 50% 0 0; background: linear-gradient(0deg, rgba(20, 27, 38, .85), transparent); }
.tcd-about__badge { position: absolute; left: 24px; right: 24px; bottom: 22px; z-index: 1; display: flex; align-items: center; gap: 14px; color: #fff; }
.tcd-about__badge strong { font-size: 3rem; font-weight: 600; letter-spacing: -.04em; line-height: 1; }
.tcd-about__badge span { max-width: 190px; font-size: .9rem; line-height: 1.35; }
.tcd-about__inset { position: absolute; right: 0; top: 14%; width: 42%; aspect-ratio: 3 / 3.4; border: 6px solid var(--bg); border-radius: var(--r-l); overflow: hidden; box-shadow: var(--shadow); }
.is-grey .tcd-about__inset, .tcd-about.is-white .tcd-about__inset { border-color: #fff; }
.tcd-about__inset img { width: 100%; height: 100%; object-fit: cover; }
.tcd-about__body .tcd-block__title { margin-bottom: 18px; }
.tcd-about__text { color: var(--muted); font-size: 1.02rem; }
.tcd-about__ticks { list-style: none; margin: 22px 0; padding: 0; display: grid; gap: 10px; }
.tcd-about__ticks li { display: flex; gap: 12px; align-items: flex-start; font-weight: 500; color: var(--head); }
.tcd-about__ticks .tcd-icon { width: 22px; height: 22px; padding: 4px; margin-top: 1px; border-radius: var(--r); background: var(--blue); color: var(--head); stroke-width: 3; }
.tcd-about__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding: 26px 0; margin: 26px 0; border-block: 1px solid var(--line); }
.tcd-about__stat strong { display: block; font-size: 2.6rem; font-weight: 600; letter-spacing: -.04em; line-height: 1; color: var(--head); margin-bottom: 8px; }
.tcd-about__stat span { font-size: .92rem; color: var(--muted); }
.tcd-about__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; }
.tcd-about__call { display: inline-flex; align-items: center; gap: 12px; color: var(--head); text-decoration: none; line-height: 1.2; }
.tcd-about__callicon { display: grid; place-items: center; width: 50px; height: 50px; border-radius: var(--r); background: #fff; color: var(--blue-d); box-shadow: 0 0 0 1px var(--line); }
.tcd-about__call small { display: block; font-size: .8rem; color: var(--muted); }
.tcd-about__call strong { font-size: 1.15rem; font-weight: 600; }

/* Services: cards overlap a navy band */
.tcd-block.tcd-services { padding-top: 0; }
.tcd-hero--form + .tcd-services { padding-top: 0 !important; }
.tcd-services__band { background: var(--navy-dd); color: rgba(255, 255, 255, .75); padding: var(--section) 0 190px; }
.tcd-services__band .tcd-block__title { color: #fff; }
.tcd-services__band .tcd-block__intro { color: rgba(255, 255, 255, .72); }
.tcd-services__grid { display: grid; gap: 32px 24px; grid-template-columns: 1fr; margin-top: -150px; }
@media (max-width: 639.98px) {
	/* Phones: swipe through the services instead of scrolling past eight tall cards. */
	.tcd-services__grid { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 80%; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); margin-inline: calc(-1 * var(--gutter)); padding: 0 var(--gutter) 6px; scrollbar-width: none; }
	.tcd-services__grid::-webkit-scrollbar { display: none; }
	.tcd-service { scroll-snap-align: start; }
	.tcd-service__body { border-bottom: 0; padding-bottom: 6px; }
}
@media (min-width: 640px) { .tcd-services__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .tcd-services__grid { grid-template-columns: repeat(3, 1fr); } }
.tcd-service { display: flex; flex-direction: column; color: inherit; text-decoration: none; }
.tcd-service__media { position: relative; display: block; aspect-ratio: 4 / 3.6; border-radius: var(--r-l); overflow: hidden; background: #dfe3e8; }
.tcd-service__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.tcd-service:hover .tcd-service__media img { transform: scale(1.05); }
.tcd-service__go { position: absolute; right: 14px; bottom: 14px; display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r); background: var(--blue); color: var(--head); transition: transform .3s var(--ease); }
.tcd-service__go .tcd-icon { transform: rotate(-45deg); }
.tcd-service:hover .tcd-service__go { transform: rotate(45deg); }
.tcd-service__body { display: grid; gap: 6px; padding: 20px 2px 22px; border-bottom: 1px solid var(--line); }
.tcd-service__title { font-size: 1.3rem; font-weight: 600; letter-spacing: -.025em; color: var(--head); }
.tcd-service__text { color: var(--muted); font-size: .95rem; line-height: 1.55; }

/* Projects */
.tcd-projects { display: grid; gap: 24px; }
.tcd-projects--grid, .tcd-projects--mosaic { grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); }
.tcd-projects--rail { grid-auto-flow: column; grid-auto-columns: min(82%, 380px); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 10px; }
.tcd-projects--rail .tcd-project { scroll-snap-align: start; }
@media (max-width: 639.98px) {
	/* Phones: project strips on home, service and town pages swipe sideways; the full gallery stays a grid. */
	.tcd-projects--grid:not(.tcd-projects--all), .tcd-projects--mosaic { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 84%; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); margin-inline: calc(-1 * var(--gutter)); padding: 0 var(--gutter) 6px; scrollbar-width: none; }
	.tcd-projects--grid:not(.tcd-projects--all)::-webkit-scrollbar, .tcd-projects--mosaic::-webkit-scrollbar { display: none; }
	.tcd-projects--grid:not(.tcd-projects--all) > *, .tcd-projects--mosaic > * { scroll-snap-align: start; grid-column: auto !important; grid-row: auto !important; }
}
.tcd-project { position: relative; display: block; border-radius: var(--r-l); overflow: hidden; color: #fff; text-decoration: none; background: var(--navy); isolation: isolate; }
.tcd-project__media { display: block; aspect-ratio: 4 / 4.2; }
.tcd-project__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.tcd-project:hover .tcd-project__media img { transform: scale(1.05); }
.tcd-project::after { content: ""; position: absolute; inset: 40% 0 0; z-index: 1; background: linear-gradient(0deg, rgba(20, 27, 38, .92), transparent); }
.tcd-project__meta { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; display: grid; gap: 6px; padding: 24px; }
.tcd-project__tag { justify-self: start; padding: 5px 12px; border-radius: var(--r); background: rgba(255, 255, 255, .14); backdrop-filter: blur(6px); font-size: .78rem; font-weight: 500; }
.tcd-project__tag:empty { display: none; }
.tcd-project__title { font-size: 1.3rem; font-weight: 600; letter-spacing: -.025em; line-height: 1.25; }
.tcd-project__place { display: inline-flex; align-items: center; gap: 6px; font-size: .9rem; color: rgba(255, 255, 255, .75); }
.tcd-project__place .tcd-icon { width: 15px; height: 15px; color: var(--blue); }
.tcd-projects__cell { display: contents; }

/* Reviews */
.tcd-reviews { position: relative; }
.tcd-reviews__summary { display: flex; align-items: center; gap: 10px; }
.tcd-reviews__summary strong { font-size: 2.2rem; font-weight: 600; color: var(--head); }
.tcd-reviews__summary span { font-size: .9rem; color: var(--muted); }
.tcd-reviews__track { display: grid; grid-auto-flow: column; grid-auto-columns: min(86%, 400px); gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 12px; scrollbar-width: none; }
.tcd-reviews__track::-webkit-scrollbar { display: none; }
.tcd-review { scroll-snap-align: start; margin: 0; display: flex; flex-direction: column; gap: 14px; padding: 28px; background: #fff; border-radius: var(--r-l); }
.tcd-review blockquote { margin: 0; flex: 1; color: var(--head); font-size: 1.05rem; }
.tcd-review figcaption { display: grid; gap: 2px; font-size: .9rem; padding-top: 14px; border-top: 1px solid var(--line); }
.tcd-review figcaption strong { color: var(--head); }
.tcd-review figcaption span, .tcd-review figcaption em { color: var(--muted); font-style: normal; font-size: .85rem; }
.tcd-carousel-nav { display: flex; gap: 8px; margin-top: 8px; }
.tcd-carousel-nav button { width: 48px; height: 48px; border-radius: var(--r); border: 0; background: #fff; color: var(--head); }
.tcd-carousel-nav button:disabled { opacity: .35; cursor: default; }
.tcd-reviews__sources { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 24px 0 0; font-size: .9rem; color: var(--muted); }
.tcd-reviews__sources a { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }

/* How it works */
.tcd-process__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.tcd-process__list li { position: relative; padding: 30px 28px 32px; background: var(--bg); border-radius: var(--r-l); }
.is-white .tcd-process__list li, .is-grey .tcd-process__list li { background: var(--bg); }
.tcd-process__n { display: block; margin-bottom: 36px; font-size: 3.2rem; font-weight: 600; letter-spacing: -.05em; line-height: 1; color: var(--blue); }
.tcd-process__list h3 { font-size: 1.3rem; margin-bottom: .4em; color: var(--head) !important; }
.tcd-process__list p { margin: 0; color: var(--muted); font-size: .95rem; }

/* Calculator */
.tcd-calc { display: grid; border-radius: var(--r-l); overflow: hidden; background: #fff; }
@media (min-width: 960px) { .tcd-calc { grid-template-columns: 1.15fr 1fr; } }
.tcd-calc__controls { padding: clamp(24px, 3vw, 40px); display: grid; gap: 24px; align-content: start; }
.tcd-calc__step { display: grid; grid-template-columns: 32px 1fr; gap: 14px; }
.tcd-calc__num { display: grid; place-items: center; width: 32px; height: 32px; border-radius: var(--r); background: var(--blue); color: var(--head); font-weight: 600; font-size: .9rem; }
.tcd-calc__label { font-weight: 600; color: var(--head); margin: 5px 0 12px; }
.tcd-calc__labelrow { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.tcd-calc__labelrow .tcd-calc__label { margin-bottom: 12px; }
.tcd-calc__hint { margin: 10px 0 0; font-size: .85rem; color: var(--muted); }
.tcd-seg, .tcd-units { display: inline-flex; padding: 4px; background: var(--bg); border-radius: var(--r); }
.tcd-seg label, .tcd-units label, .tcd-shapes label, .tcd-mats label { position: relative; }
.tcd-seg input, .tcd-units input, .tcd-shapes input, .tcd-mats input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.tcd-seg span { display: block; padding: 9px 22px; border-radius: var(--r); font-weight: 600; color: var(--head); }
.tcd-units { margin-bottom: 12px; }
.tcd-units span { display: block; padding: 5px 12px; border-radius: var(--r); font-size: .82rem; font-weight: 600; }
.tcd-seg input:checked + span, .tcd-units input:checked + span { background: var(--navy); color: #fff; }
.tcd-shapes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.tcd-shapes span { display: grid; justify-items: center; gap: 6px; padding: 12px 4px 10px; background: var(--bg); border: 1px solid transparent; border-radius: var(--r); font-size: .8rem; font-weight: 600; color: var(--head); text-align: center; }
.tcd-shapes svg { width: 40px; height: 28px; fill: #fff; stroke: var(--muted); stroke-width: 1.5; }
.tcd-shapes input:checked + span { border-color: var(--blue); background: #eaf3fe; }
.tcd-shapes input:checked + span svg { fill: var(--blue); stroke: var(--head); }
.tcd-dims { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.tcd-dim label { display: block; font-size: .82rem; font-weight: 600; color: var(--muted); margin-bottom: 5px; }
.tcd-dim__ctl { display: grid; grid-template-columns: 42px 1fr auto 42px; align-items: center; background: var(--bg); border: 1px solid transparent; border-radius: var(--r); overflow: hidden; }
.tcd-dim__ctl:focus-within { border-color: var(--blue); background: #fff; }
.tcd-dim__ctl button { height: 48px; border: 0; background: transparent; font-size: 1.2rem; color: var(--head); }
.tcd-dim__ctl input { width: 100%; min-width: 0; height: 48px; border: 0; text-align: right; font: 600 1.05rem/1 var(--font); padding: 0 4px; background: none; color: var(--head); -moz-appearance: textfield; }
.tcd-dim__ctl input::-webkit-outer-spin-button, .tcd-dim__ctl input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.tcd-dim__ctl input:focus { outline: none; }
.tcd-dim__u { padding: 0 8px 0 3px; color: var(--muted); font-size: .9rem; }
.tcd-mats { display: flex; flex-wrap: wrap; gap: 8px; }
.tcd-calc[data-type="driveway"] .tcd-mats[data-for="patio"], .tcd-calc[data-type="patio"] .tcd-mats[data-for="driveway"] { display: none; }
.tcd-mats span { display: inline-flex; align-items: center; padding: 9px 16px; background: var(--bg); border-radius: var(--r); font-size: .9rem; font-weight: 500; color: var(--head); }
.tcd-mats i { display: none; }
.tcd-mats input:checked + span { background: var(--navy); color: #fff; }
.tcd-calc__result { display: grid; align-content: start; gap: 20px; padding: clamp(24px, 3vw, 40px); background: var(--navy-dd); color: #fff; }
.tcd-calc__plan { border-radius: var(--r); background: rgba(255, 255, 255, .04); padding: 10px; }
.tcd-calc__plan svg { width: 100%; height: auto; }
.tcd-plan__grid { fill: none; stroke: rgba(255, 255, 255, .06); stroke-width: 1; }
.tcd-plan__shape { stroke: var(--blue); stroke-width: 2; }
.tcd-plan--resin { fill: #cba878; } .tcd-plan--block { fill: #8d4f3c; } .tcd-plan--tarmac { fill: #4a535b; } .tcd-plan--gravel { fill: #bba57d; } .tcd-plan--porcelain { fill: #d6d4d0; } .tcd-plan--sandstone { fill: #d2ad7b; }
.tcd-plan__dim { fill: rgba(255, 255, 255, .85); font: 600 12px var(--font); }
.tcd-calc__figures { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 20px; margin: 0; }
.tcd-calc__figures > div { display: grid; gap: 4px; }
.tcd-calc__figures dt { font-size: .82rem; color: rgba(255, 255, 255, .6); }
.tcd-calc__figures dd { margin: 0; font-size: 2.2rem; font-weight: 600; letter-spacing: -.04em; line-height: 1.05; font-variant-numeric: tabular-nums; }
.tcd-calc__figures dd span[data-out="cars"] { font-size: .7em; }
.tcd-calc__price { grid-column: 1 / -1; padding-top: 14px; border-top: 1px solid rgba(255, 255, 255, .12); }
.tcd-calc__price dd { color: var(--blue); font-size: 1.5rem; }
.tcd-calc__small { margin: 0; font-size: .84rem; color: rgba(255, 255, 255, .6); }
.tcd-calc__result .tcd-btn { white-space: normal; }

/* Surface comparison */
.tcd-mat-ui { display: grid; gap: 20px; }
@media (min-width: 900px) { .tcd-mat-ui { grid-template-columns: 260px 1fr; gap: 28px; } }
.tcd-mat-tabs { display: flex; gap: 8px; overflow-x: auto; }
@media (min-width: 900px) { .tcd-mat-tabs { flex-direction: column; } }
.tcd-mat-tab { display: flex; align-items: center; padding: 16px 20px; border: 0; border-radius: var(--r); background: var(--bg); font-weight: 600; text-align: left; white-space: nowrap; color: var(--head); }
.tcd-mat-tab i { display: none; }
.tcd-mat-tab[aria-selected="true"] { background: var(--navy-dd); color: #fff; }
.tcd-mat-panel { display: grid; overflow: hidden; border-radius: var(--r-l); background: var(--bg); }
@media (min-width: 700px) { .tcd-mat-panel { grid-template-columns: 1fr 1fr; } }
.tcd-mat-panel__swatch { position: relative; min-height: 260px; background: #dfe3e8 !important; }
.tcd-mat-panel__swatch img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tcd-mat-panel__body { padding: clamp(24px, 3vw, 40px); }
.tcd-mat-panel__body h3 { font-size: 1.8rem; }
.tcd-mat-panel__body > p { color: var(--muted); }
.tcd-meters { list-style: none; margin: 18px 0; padding: 0; display: grid; gap: 10px; }
.tcd-meters li { display: grid; grid-template-columns: 100px 1fr; align-items: center; gap: 12px; font-size: .9rem; font-weight: 500; color: var(--head); }
.tcd-meter { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; }
.tcd-meter i { height: 6px; border-radius: var(--r); background: #dde1e6; }
.tcd-meter i:nth-child(-n + 1), .tcd-meter[style*="--v:2"] i:nth-child(-n + 2), .tcd-meter[style*="--v:3"] i:nth-child(-n + 3), .tcd-meter[style*="--v:4"] i:nth-child(-n + 4), .tcd-meter[style*="--v:5"] i { background: var(--blue); }
.tcd-mat-panel dl { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0 0 20px; padding: 16px 0; border-block: 1px solid #dde1e6; }
.tcd-mat-panel dt { font-size: .8rem; color: var(--muted); }
.tcd-mat-panel dd { margin: 2px 0 0; font-weight: 600; color: var(--head); }

/* Areas */
.tcd-areas__grid { display: grid; gap: 40px; }
@media (min-width: 1000px) { .has-map .tcd-areas__grid { grid-template-columns: 5fr 7fr; gap: 64px; align-items: start; } }
.tcd-areas__intro .tcd-head { margin-bottom: 18px; }
.tcd-areas__call { color: var(--muted); }
.tcd-areas__call a { font-weight: 600; white-space: nowrap; }
.tcd-areas__map { margin-top: 24px; padding: 16px; border-radius: var(--r-l); background: var(--navy-dd); color: var(--blue); }
.tcd-mapviz { width: 100%; height: auto; }
.tcd-mapviz__pin circle:last-child { fill: var(--blue); }
.tcd-mapviz__pin circle:first-child { display: none; }
.tcd-mapviz__county { fill: rgba(255, 255, 255, .6); font: 600 12px var(--font); letter-spacing: .04em; text-transform: uppercase; }
.tcd-mapviz__office rect { fill: #fff; }
.tcd-mapviz__office text { fill: #fff; font: 600 10px var(--font); }
.tcd-areas { display: grid; gap: 28px; }
@media (min-width: 640px) { .tcd-areas { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } }
.tcd-areas__name { font-size: 1.15rem; font-weight: 600; padding-bottom: 12px; margin-bottom: 14px; border-bottom: 1px solid var(--line); }
.tcd-areas__name a { color: var(--head); text-decoration: none; }
.tcd-areas ul { list-style: none; margin: 0; padding: 0 !important; display: flex; flex-wrap: wrap; gap: 6px; }
.tcd-areas li { font-size: .9rem; color: var(--muted); padding: 6px 12px; background: var(--bg); border-radius: var(--r); }
.is-grey .tcd-areas li, .is-white .tcd-areas li { background: var(--bg); }
.tcd-areas li a { color: var(--head); text-decoration: none; font-weight: 500; }
.tcd-areas li:has(a):hover { background: #e3eefc; }
.tcd-areas li[aria-current] { background: var(--navy); color: #fff; }

/* CTA band */
.tcd-block.tcd-cta { background: var(--navy-dd); color: #fff; overflow: hidden; isolation: isolate; padding-block: clamp(80px, 10vw, 140px); text-align: center; }
.tcd-cta__bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.tcd-cta.has-bg::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(20, 27, 38, .78); }
.tcd-cta__inner { display: grid; gap: 28px; justify-items: center; }
.tcd-cta .tcd-head { margin: 0 auto; display: block; text-align: center; max-width: 820px; }
.tcd-cta .tcd-head__main, .tcd-cta .tcd-head__side { max-width: none; justify-items: center; }
.tcd-cta .tcd-block__title { color: #fff; font-size: clamp(2.2rem, 1.4rem + 3vw, 3.8rem); margin-bottom: 18px; }
.tcd-cta .tcd-block__intro { color: rgba(255, 255, 255, .8); margin: 0 auto; }
.tcd-cta__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.tcd-cta__local { margin: 14px 0 0; color: rgba(255, 255, 255, .75); }
.tcd-cta__local a { color: #fff; font-weight: 600; }

/* Before / after */
.tcd-ba { margin: 0; }
.tcd-ba__frame { position: relative; overflow: hidden; border-radius: var(--r-l); aspect-ratio: 4 / 3; background: #dfe3e8; user-select: none; }
.tcd-ba__frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tcd-ba__before { position: absolute; inset: 0; clip-path: inset(0 calc(100% - var(--pos)) 0 0); }
.tcd-ba__handle { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 3px; margin-left: -1.5px; background: #fff; pointer-events: none; }
.tcd-ba__handle::after { content: "‹ ›"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: grid; place-items: center; width: 46px; height: 46px; border-radius: var(--r); background: var(--blue); color: var(--head); font-weight: 700; }
.tcd-ba input[type=range] { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; }
.tcd-ba__tag { position: absolute; top: 14px; padding: 6px 12px; border-radius: var(--r); background: rgba(20, 27, 38, .75); color: #fff; font-size: .78rem; font-weight: 600; pointer-events: none; }
.tcd-ba__tag--b { left: 14px; } .tcd-ba__tag--a { right: 14px; }
.tcd-ba figcaption { margin-top: 10px; font-size: .88rem; color: var(--muted); }

/* Contact card */
.tcd-contact { padding: 0; }
.tcd-contact__card { display: grid; gap: 10px; padding: clamp(24px, 3vw, 32px); background: var(--navy-dd); color: #fff; border-radius: var(--r-l); }
.tcd-contact__card .tcd-block__title { margin: 0 0 8px; font-size: 1.8rem; color: #fff; }
.tcd-contact__main, .tcd-contact__wa, .tcd-contact__email { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border-radius: var(--r); text-decoration: none; background: rgba(255, 255, 255, .06); color: #fff; }
.tcd-contact__main:hover, .tcd-contact__wa:hover, .tcd-contact__email:hover { background: rgba(255, 255, 255, .1); }
.tcd-contact__card .tcd-icon { width: 24px; height: 24px; color: var(--blue); }
.tcd-contact__card a span { display: grid; line-height: 1.25; font-weight: 600; font-size: 1.05rem; }
.tcd-contact__card a small { font-weight: 400; font-size: .8rem; color: rgba(255, 255, 255, .6); }
.tcd-contact__main { background: var(--blue); color: var(--head); }
.tcd-contact__main:hover { background: var(--blue-h); }
.tcd-contact__main small { color: rgba(27, 35, 49, .7) !important; }
.tcd-contact__main span { font-size: 1.35rem !important; }
.tcd-contact__main .tcd-icon { color: var(--head); }
.tcd-contact__wa .tcd-icon { color: var(--wa); }
.tcd-contact__email span { font-size: .95rem !important; word-break: break-all; }
.tcd-content .tcd-contact .tcd-contact__sub { font-size: .8rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: rgba(255, 255, 255, .55); margin: 16px 0 2px; }
.tcd-contact .tcd-phones a { padding: 9px 0; color: #fff; border-bottom: 1px solid rgba(255, 255, 255, .1); border-radius: 0; }
.tcd-contact .tcd-phones a:hover { background: none; color: var(--blue); }
.tcd-contact .tcd-phones__label { color: rgba(255, 255, 255, .6); }
.tcd-addresses { display: grid; gap: 16px; }
.tcd-address { display: grid; gap: 1px; font-size: .95rem; }
.tcd-address strong { font-weight: 600; }
.tcd-address a { color: inherit; }
.tcd-address__map { font-size: .85rem; font-weight: 600; color: var(--blue) !important; }

/* ==========================================================================
   Page header & content
   ========================================================================== */
.tcd-crumbs { font-size: .88rem; color: var(--muted); margin-bottom: 18px; }
.tcd-crumbs a { color: inherit; text-decoration: none; }
.tcd-crumbs a:hover { text-decoration: underline; }
.tcd-pagehead { position: relative; padding: calc(var(--hdr) + 70px) 0 80px; margin-top: calc(var(--hdr) * -1); background: var(--navy-dd); color: #fff; }
.tcd-pagehead .tcd-crumbs, .tcd-pagehead .tcd-crumbs a { color: rgba(255, 255, 255, .65); }
.tcd-pagehead .tcd-crumbs .breadcrumb_last { color: #fff; }
.tcd-pagehead .tcd-eyebrow { color: var(--blue); }
.tcd-pagehead__title { font-size: clamp(2.4rem, 1.4rem + 3.6vw, 4.4rem); letter-spacing: -.045em; line-height: 1.04; color: #fff; margin: 0 0 18px; max-width: 18ch; }
.tcd-pagehead__intro { font-size: 1.1rem; color: rgba(255, 255, 255, .78); max-width: 60ch; margin: 0; }
.tcd-pagehead.has-image .tcd-pagehead__media { position: absolute; inset: 0; }
.tcd-pagehead.has-image .tcd-pagehead__media img { width: 100%; height: 100%; object-fit: cover; opacity: .28; }
.tcd-pagehead.has-image .tcd-pagehead__inner { position: relative; }

/* Content flow */
.tcd-content { padding-block: clamp(40px, 6vw, 80px); background: #fff; }
.tcd-content--hero { padding-block: 0; background: transparent; }
.tcd-content--intro { padding-block: 0 24px; background: transparent; }
.tcd-content--hero > :not(.tcd-block):not(.tcd-faq) { background: #fff; }
.tcd-content > :not(.tcd-block):not(.alignfull):not(.alignwide) { max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); box-sizing: content-box; }
.tcd-content > p, .tcd-content > ul, .tcd-content > ol, .tcd-content > details, .tcd-content > h2, .tcd-content > h3 { max-width: 820px !important; margin-left: max(0px, calc((100% - var(--wrap)) / 2 - var(--gutter))) !important; margin-right: auto !important; }
.tcd-article__body > p, .tcd-article__body > ul, .tcd-article__body > ol, .tcd-article__body > h2, .tcd-article__body > h3, .tcd-article__body > figure, .tcd-article__body > .wp-block-table { max-width: 760px !important; margin-left: auto !important; margin-right: auto !important; }
.tcd-content > .alignwide { max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); box-sizing: content-box; }
/* Text runs between full-width blocks become white sections with proper spacing. */
.tcd-content--hero > .tcd-block + :not(.tcd-block) { padding-top: var(--section); }
.tcd-content--hero > :not(.tcd-block):has(+ .tcd-block) { padding-bottom: var(--section); margin-bottom: 0; }
.tcd-content--hero > :not(.tcd-block) + :not(.tcd-block) { margin-top: 0; padding-top: 1.2em; }
.tcd-content--hero > :not(.tcd-block):last-child { padding-bottom: var(--section); }
.tcd-content--hero > p, .tcd-content--hero > ul, .tcd-content--hero > h2, .tcd-content--hero > h3, .tcd-content--hero > details { margin-block: 0 !important; }
.tcd-content--hero > :not(.tcd-block) { box-shadow: 0 0 0 100vmax #fff; clip-path: inset(0 -100vmax); }
.tcd-content h2 { font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem); margin-top: 1.2em; margin-bottom: .45em; }
.tcd-content h3 { font-size: 1.3rem; margin-top: 1.2em; margin-bottom: .35em; }
.tcd-content > h2:first-child { margin-top: 0; }
.tcd-content ul:not([class]), .tcd-content ol:not([class]), .tcd-content ul.wp-block-list:not(.is-style-ticks) { padding-left: 1.25em; }
.tcd-content ul.wp-block-list:not(.is-style-ticks) li, .tcd-content ul:not([class]) li { margin-bottom: .4em; }
.tcd-content ul.wp-block-list:not(.is-style-ticks) li::marker { color: var(--blue-d); }
.tcd-content .is-style-ticks { list-style: none; display: grid; gap: 10px; padding-left: 0; }
.tcd-content > .is-style-ticks { padding-inline: var(--gutter); }
@media (min-width: 700px) { .tcd-content > .is-style-ticks { grid-template-columns: 1fr 1fr; gap: 12px 28px; } }
.tcd-content .is-style-ticks li { position: relative; padding-left: 34px; font-weight: 500; color: var(--head); }
.tcd-content .is-style-ticks li::before { content: ""; position: absolute; left: 0; top: .15em; width: 22px; height: 22px; border-radius: var(--r); background: var(--blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m6 12.5 4 4 8-9' fill='none' stroke='%231b2331' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 13px no-repeat; }
.tcd-content blockquote { margin: 1.6em 0; padding: 4px 0 4px 20px; border-left: 3px solid var(--blue); font-size: 1.1rem; color: var(--head); }
.tcd-content figure, .tcd-content .wp-block-image { margin-block: 1.6em; }
.tcd-content img { border-radius: var(--r-l); }
.tcd-content figcaption { font-size: .88rem; color: var(--muted); margin-top: 6px; }
.tcd-content .lead { font-size: 1.2rem; color: var(--muted); }
.tcd-content p a:not([class]), .tcd-content li a:not([class]), .tcd-content details a { color: var(--blue-d); }
.tcd-table-scroll { overflow-x: auto; }
.tcd-content table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.tcd-content th, .tcd-content td { padding: 12px 14px; border-bottom: 1px solid var(--line); text-align: left; }
.tcd-content th { font-weight: 600; color: var(--head); background: var(--bg); }

/* Columns */
.tcd-content .wp-block-columns { display: flex; flex-wrap: wrap; gap: clamp(24px, 4vw, 64px); max-width: var(--wrap) !important; margin-block: 0; }
.tcd-content .wp-block-column { flex: 1 1 300px; min-width: 0; }
.tcd-content .wp-block-column > :first-child { margin-top: 0; }
.tcd-content .wp-block-column > :last-child { margin-bottom: 0; }
.tcd-content .tcd-split { align-items: stretch !important; }
.tcd-content .tcd-split > .wp-block-column { align-self: stretch !important; }
.tcd-content .tcd-split > .wp-block-column:has(.wp-block-image) { display: flex; }
.tcd-content .tcd-split .wp-block-image { margin: 0; width: 100%; min-height: 340px; display: flex; }
.tcd-content .tcd-split .wp-block-image img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--r-l); }
.tcd-content .tcd-split > .wp-block-column:not(:has(.wp-block-image)) { align-self: center !important; }
.tcd-content .tcd-split h2 { font-size: clamp(1.9rem, 1.3rem + 1.8vw, 2.7rem); }
.tcd-content .wp-block-columns:not(.tcd-split):not(.tcd-contactcols):not(.tcd-local):not(.tcd-faq) { gap: 20px; }
.tcd-content .wp-block-columns:not(.tcd-split):not(.tcd-contactcols):not(.tcd-local):not(.tcd-faq) > .wp-block-column { padding: 28px; background: var(--bg); border-radius: var(--r-l); }
.tcd-content .wp-block-columns:not(.tcd-split):not(.tcd-contactcols):not(.tcd-local):not(.tcd-faq) > .wp-block-column h3 { font-size: 1.2rem; }
.tcd-content .wp-block-columns:not(.tcd-split):not(.tcd-contactcols):not(.tcd-local):not(.tcd-faq) > .wp-block-column p { margin: 0; color: var(--muted); font-size: .95rem; }
.tcd-content .wp-block-columns + .wp-block-columns { margin-top: 20px; }
.tcd-content .wp-block-group.is-card { padding: 28px; border-radius: var(--r-l); background: var(--bg); }
.tcd-content .wp-block-group.is-card h3 { margin-top: 0; font-size: 1.3rem; }
.tcd-content .tcd-local .is-style-ticks { grid-template-columns: 1fr !important; padding-inline: 0 !important; }

/* FAQ */
.tcd-content .tcd-faq { padding-block: var(--section) !important; gap: clamp(28px, 5vw, 80px) !important; box-shadow: 0 0 0 100vmax var(--bg); clip-path: inset(0 -100vmax); background: var(--bg); }
@media (min-width: 782px) {
	.tcd-content .tcd-faq > .wp-block-column:first-child { flex: 0 1 38% !important; }
	.tcd-content .tcd-faq > .wp-block-column:last-child { flex: 1 1 520px !important; }
}
@media (max-width: 781.98px) { .tcd-content .tcd-faq > .wp-block-column { flex-basis: 100% !important; } }
.tcd-content .tcd-faq h2 { margin-top: 0; }
.tcd-content .tcd-faq p:not(.tcd-pill) { color: var(--muted); }
.tcd-content details { border-radius: var(--r); margin-bottom: 10px; background: #fff; }
.tcd-content summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 20px 22px; font-weight: 600; color: var(--head); }
.tcd-content summary::-webkit-details-marker { display: none; }
.tcd-content summary::after { content: "+"; flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: var(--r); background: var(--bg); font-weight: 400; font-size: 1.2rem; line-height: 1; color: var(--head); }
.tcd-content details[open] summary::after { content: "−"; background: var(--blue); }
.tcd-content details > :not(summary) { margin: 0; padding: 0 22px 20px; color: var(--muted); }

/* Contact page */
.tcd-contactcols { gap: clamp(24px, 3vw, 40px) !important; align-items: flex-start; }
.tcd-contactcols > .wp-block-column:first-child { flex: 1.5 1 420px; }
.tcd-contactcols > .wp-block-column:last-child { flex: 0 1 400px; }
@media (max-width: 999.98px) { .tcd-contactcols > .wp-block-column:last-child { flex-basis: 100%; } }
.tcd-contactcols .tcd-quote-form { padding: clamp(24px, 3vw, 40px); background: #fff; border-radius: var(--r-l); box-shadow: 0 0 0 1px var(--line); }
@media (min-width: 1000px) { .tcd-contactcols .tcd-contact { position: sticky; top: calc(var(--hdr) + 24px); } }
.tcd-quote-form { padding: 0; }
.tcd-content > .tcd-quote-form { max-width: 820px; margin: 1.5em auto; padding: clamp(24px, 3vw, 40px); border-radius: var(--r-l); background: #fff; }

/* ==========================================================================
   Project, article, archives
   ========================================================================== */
.tcd-project-page, .tcd-article, .tcd-archive { background: #fff; }
.tcd-projhead { padding: calc(var(--hdr) + 56px) 0 48px; margin-top: calc(var(--hdr) * -1); background: var(--navy-dd); color: #fff; margin-bottom: 40px; }
.tcd-projhead .tcd-crumbs, .tcd-projhead .tcd-crumbs a { color: rgba(255, 255, 255, .65); }
.tcd-projhead .tcd-crumbs .breadcrumb_last { color: #fff; }
.tcd-projhead .tcd-eyebrow { color: var(--blue); }
.tcd-projhead__title { font-size: clamp(2.2rem, 1.4rem + 3vw, 3.8rem); letter-spacing: -.045em; color: #fff; max-width: 22ch; margin-bottom: 14px; }
.tcd-projhead__intro { font-size: 1.1rem; color: rgba(255, 255, 255, .78); max-width: 62ch; margin: 0; }
.tcd-projgallery { display: grid; gap: 10px; grid-template-columns: 1fr 1fr; }
.tcd-projgallery__item { position: relative; display: block; overflow: hidden; border-radius: var(--r); background: #dfe3e8; }
.tcd-projgallery__item img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.tcd-projgallery__item:first-child { grid-column: 1 / -1; }
@media (min-width: 900px) {
	.tcd-projgallery--3, .tcd-projgallery--4, .tcd-projgallery--5 { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; height: min(62vh, 580px); }
	.tcd-projgallery--3 .tcd-projgallery__item:first-child, .tcd-projgallery--4 .tcd-projgallery__item:first-child, .tcd-projgallery--5 .tcd-projgallery__item:first-child { grid-column: 1; grid-row: span 2; }
	.tcd-projgallery--3 .tcd-projgallery__item:nth-child(2), .tcd-projgallery--3 .tcd-projgallery__item:nth-child(3), .tcd-projgallery--4 .tcd-projgallery__item:nth-child(4) { grid-column: span 2; }
	.tcd-projgallery--3 img, .tcd-projgallery--4 img, .tcd-projgallery--5 img { aspect-ratio: auto; }
	.tcd-projgallery--2 { grid-template-columns: 1.6fr 1fr; }
	.tcd-projgallery--2 .tcd-projgallery__item:first-child { grid-column: auto; }
}
.tcd-projgallery__more { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(20, 27, 38, .6); color: #fff; font-weight: 600; }
.tcd-projbody { display: grid; gap: 40px; padding-block: clamp(40px, 5vw, 72px); }
@media (min-width: 1000px) { .tcd-projbody { grid-template-columns: minmax(0, 1fr) 360px; gap: 64px; } }
.tcd-projbody__side { display: grid; gap: 18px; align-content: start; }
@media (min-width: 1000px) { .tcd-projbody__side { position: sticky; top: calc(var(--hdr) + 24px); } }
.tcd-facts { margin: 0; display: grid; border-radius: var(--r-l); padding: 8px 22px; background: var(--bg); }
.tcd-facts > div { display: grid; grid-template-columns: 100px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px solid #dde1e6; }
.tcd-facts > div:last-child { border-bottom: 0; }
.tcd-facts dt { font-size: .85rem; color: var(--muted); }
.tcd-facts dd { margin: 0; font-weight: 600; color: var(--head); }
.tcd-sidecta { display: grid; gap: 12px; padding: 28px; border-radius: var(--r-l); background: var(--navy-dd); color: #fff; }
.tcd-sidecta__title { font-size: 1.35rem; font-weight: 600; letter-spacing: -.02em; margin: 0; }
.tcd-sidecta p { margin: 0; color: rgba(255, 255, 255, .75); font-size: .95rem; }
.tcd-sidecta__tel { display: inline-flex; align-items: center; gap: 8px; color: #fff; font-weight: 600; text-decoration: none; font-size: 1.1rem; }
.tcd-sidecta .tcd-link { color: var(--blue); }
.tcd-prose { color: var(--text); }
.tcd-prose > :first-child { margin-top: 0; }
.tcd-prose h2 { font-size: 1.9rem; margin-top: 1.3em; }
.tcd-prose img { border-radius: var(--r-l); }
.tcd-projquote { margin: 2em 0 0; padding: 28px; border-radius: var(--r-l); background: var(--bg); }
.tcd-projquote p { margin: 8px 0 0; font-size: 1.1rem; color: var(--head); }
.tcd-projvideo { margin-block: 2em; border-radius: var(--r-l); overflow: hidden; aspect-ratio: 16 / 9; background: #000; }
.tcd-projvideo iframe, .tcd-projvideo video { width: 100%; height: 100%; }
.tcd-related { background: var(--bg); }

.tcd-articlehead { padding: calc(var(--hdr) + 56px) 0 56px; margin-top: calc(var(--hdr) * -1); background: var(--navy-dd); color: #fff; margin-bottom: 48px; }
.tcd-articlehead .tcd-crumbs, .tcd-articlehead .tcd-crumbs a { color: rgba(255, 255, 255, .65); }
.tcd-articlehead .tcd-eyebrow { color: var(--blue); }
.tcd-articlehead__title { font-size: clamp(2.2rem, 1.4rem + 2.8vw, 3.6rem); letter-spacing: -.045em; color: #fff; }
.tcd-articlehead__intro { font-size: 1.15rem; color: rgba(255, 255, 255, .78); }
.tcd-articlehead__by { font-size: .88rem; color: rgba(255, 255, 255, .6); margin: 0; }
.tcd-articlehero { margin: 0 auto; }
.tcd-articlehero img { width: 100%; aspect-ratio: 16 / 8; object-fit: cover; border-radius: var(--r-l); }
.tcd-articlecta { display: grid; gap: 18px; align-items: center; padding: clamp(24px, 3vw, 36px); margin-bottom: var(--section); border-radius: var(--r-l); background: var(--navy-dd); color: #fff; }
@media (min-width: 760px) { .tcd-articlecta { grid-template-columns: 1fr auto; } }
.tcd-articlecta__title { font-size: 1.4rem; font-weight: 600; letter-spacing: -.02em; margin: 0 0 6px; }
.tcd-articlecta p:last-child { margin: 0; color: rgba(255, 255, 255, .75); }
.tcd-archive { padding-block: clamp(40px, 5vw, 64px) var(--section); }
.tcd-filter { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }
.tcd-filter a, .tcd-filter button { display: inline-flex; align-items: center; gap: 6px; padding: 9px 16px; border: 0; border-radius: var(--r); background: var(--bg); font-size: .9rem; font-weight: 500; color: var(--head); text-decoration: none; }
.tcd-filter [aria-current="page"], .tcd-filter [aria-pressed="true"] { background: var(--navy); color: #fff; }
.tcd-filter button span { font-size: .78rem; opacity: .7; }
.tcd-postgrid { display: grid; gap: 28px 24px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.tcd-postcard { display: flex; flex-direction: column; color: inherit; text-decoration: none; }
.tcd-postcard__media { display: block; aspect-ratio: 16 / 11; border-radius: var(--r-l); overflow: hidden; background: #dfe3e8; }
.tcd-postcard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.tcd-postcard:hover .tcd-postcard__media img { transform: scale(1.05); }
.tcd-postcard__body { display: grid; gap: 8px; padding-top: 18px; }
.tcd-postcard__meta { font-size: .85rem; color: var(--blue-d); font-weight: 500; }
.tcd-postcard__title { font-size: 1.3rem; font-weight: 600; letter-spacing: -.025em; line-height: 1.25; color: var(--head); }
.tcd-postcard__text { color: var(--muted); font-size: .95rem; }
.nav-links { display: flex; gap: 6px; justify-content: center; margin-top: 48px; }
.nav-links .page-numbers { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 12px; border-radius: var(--r); background: var(--bg); text-decoration: none; font-weight: 600; color: var(--head); }
.nav-links .current { background: var(--navy); color: #fff; }
.tcd-404 { padding-block: calc(var(--section) + var(--hdr)) var(--section); background: #fff; }
.tcd-404 .tcd-pagehead__title { color: var(--head); }
.tcd-404 .tcd-pagehead__intro { color: var(--muted); }
.tcd-404__links { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; padding: 0; margin-top: 28px; }
.tcd-404__links a { display: inline-block; padding: 12px 20px; border-radius: var(--r); background: var(--bg); text-decoration: none; font-weight: 600; color: var(--head); }

.tcd-lightbox { width: 100vw; height: 100vh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgba(10, 14, 20, .95); color: #fff; }
.tcd-lightbox[open] { display: grid; grid-template-columns: 64px 1fr 64px; align-items: center; }
.tcd-lightbox figure { margin: 0; display: grid; place-items: center; gap: 10px; height: 100%; padding: 56px 0; }
.tcd-lightbox img { max-height: calc(100vh - 140px); width: auto; border-radius: var(--r); }
.tcd-lightbox figcaption { font-size: .9rem; opacity: .7; }
.tcd-lightbox button { background: none; border: 0; color: #fff; font-size: 1.8rem; height: 64px; }
.tcd-lightbox__close { position: absolute; top: 10px; right: 14px; font-size: 2.4rem !important; }

/* ==========================================================================
   Footer
   ========================================================================== */
.tcd-footer { background: var(--navy-dd); color: rgba(255, 255, 255, .7); font-size: .95rem; }
.tcd-footer a { color: inherit; text-decoration: none; }
.tcd-footer a:hover { color: #fff; }
.tcd-footer__band { border-bottom: 1px solid rgba(255, 255, 255, .1); }
.tcd-footer__bandinner { display: grid; gap: 24px; align-items: center; padding-block: clamp(48px, 6vw, 72px); }
@media (min-width: 900px) { .tcd-footer__bandinner { grid-template-columns: 1fr auto; } }
.tcd-footer__pitch { margin: 0; max-width: 16ch; font-size: clamp(2rem, 1.3rem + 2.4vw, 3.2rem); font-weight: 600; letter-spacing: -.045em; line-height: 1.05; color: #fff; }
.tcd-footer__bandactions { display: flex; flex-wrap: wrap; gap: 12px; }
.tcd-footer__grid { display: grid; gap: 36px 32px; padding-block: clamp(48px, 6vw, 72px); grid-template-columns: 1fr; }
@media (min-width: 640px) { .tcd-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .tcd-footer__grid { grid-template-columns: 1.3fr 1fr 1fr .9fr 1fr; } }
.tcd-footer__brand .tcd-logo__img { width: 190px; margin-bottom: 18px; }
.tcd-footer__brand p { max-width: 34ch; }
.tcd-footer__h { font-size: 1.05rem; font-weight: 600; letter-spacing: -.01em; color: #fff; margin: 0 0 18px; }
.tcd-footer__h--gap { margin-top: 28px; }
.tcd-footer__main { display: grid; margin-bottom: 10px; font-size: 1.35rem; font-weight: 600; color: #fff !important; }
.tcd-footer__main small { font-size: .8rem; font-weight: 400; color: var(--blue); }
.tcd-phones--footer a { padding: 4px 0; border-radius: 0; color: inherit; font-size: .92rem; }
.tcd-phones--footer a:hover { background: none; color: #fff; }
.tcd-phones--footer .tcd-phones__label { color: rgba(255, 255, 255, .5); }
.tcd-phones--footer .tcd-phones__num { color: rgba(255, 255, 255, .9); font-weight: 500; }
.tcd-footer__email { display: inline-block; margin-top: 12px; color: var(--blue) !important; word-break: break-all; }
.tcd-footer__links { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
@media (max-width: 639.98px) { .tcd-footer__links { grid-template-columns: 1fr 1fr; gap: 10px 16px; } }
.tcd-addresses--footer .tcd-address strong { color: #fff; }
.tcd-social { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 22px 0 0; padding: 0; }
.tcd-social a { display: grid; place-items: center; width: 42px; height: 42px; border-radius: var(--r); background: rgba(255, 255, 255, .08); }
.tcd-social a:hover { background: var(--blue); color: var(--head); }
.tcd-social span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.tcd-social .tcd-icon { width: 18px; height: 18px; }
.tcd-footer__legal { border-top: 1px solid rgba(255, 255, 255, .1); font-size: .85rem; color: rgba(255, 255, 255, .5); }
.tcd-footer__legalinner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 24px; padding-block: 22px calc(22px + 64px); }
@media (min-width: 1000px) { .tcd-footer__legalinner { padding-bottom: 22px; } }
.tcd-footer__legalinner p { margin: 0; }
.tcd-footer__legalinner ul { display: flex; gap: 18px; list-style: none; margin: 0; padding: 0; }

/* ==========================================================================
   Mobile action bar + WhatsApp
   ========================================================================== */
.tcd-actionbar { position: fixed; z-index: 90; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); background: var(--navy-dd); transform: translateY(110%); transition: transform .3s ease; }
body.show-actionbar .tcd-actionbar { transform: none; }
body.menu-open .tcd-actionbar { transform: translateY(110%); }
.tcd-actionbar a { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 50px; border-radius: var(--r); font-weight: 600; text-decoration: none; }
.tcd-actionbar__call { background: rgba(255, 255, 255, .1); color: #fff; }
.tcd-actionbar__quote { background: var(--blue); color: var(--head); }
@media (min-width: 1000px) { .tcd-actionbar { display: none; } }

.tcd-wa { position: fixed; z-index: 95; right: 18px; bottom: calc(18px + env(safe-area-inset-bottom)); transition: transform .3s ease, opacity .2s; }
@media (max-width: 999.98px) { body.show-actionbar .tcd-wa { transform: translateY(-70px); } }
.tcd-wa.is-tucked, body.menu-open .tcd-wa { opacity: 0; pointer-events: none; }
.tcd-wa__bubble { display: none !important; }
.tcd-wa__btn { display: flex; align-items: center; gap: 10px; padding: 5px 16px 5px 5px; background: var(--wa); color: #0b2a16; border: 3px solid #fff; border-radius: 999px; text-decoration: none; box-shadow: 0 8px 24px rgba(0, 0, 0, .22); }
.tcd-wa__btn:hover { background: #2ee06f; }
.tcd-wa__badge { position: relative; display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; background: #fff; border: 2px solid #1d7a40; flex: none; }
.tcd-wa__badge img { width: 40px; height: 40px; object-fit: contain; border-radius: 50%; }
.tcd-wa__mono { font-weight: 700; font-size: .95rem; color: var(--navy); }
.tcd-wa__mono em { font-style: normal; color: var(--blue-d); }
.tcd-wa__online { position: absolute; right: 0; bottom: 0; width: 12px; height: 12px; border-radius: 50%; background: #1fbf5c; border: 2px solid #fff; }
.tcd-wa__copy { display: grid; line-height: 1.1; }
.tcd-wa__copy strong { font-size: 1.02rem; font-weight: 700; }
.tcd-wa__copy span { font-size: .8rem; font-weight: 600; }
.tcd-wa__icon { width: 30px !important; height: 30px !important; color: #fff; }
@media (max-width: 640px) {
	.tcd-wa { right: 12px; }
	.tcd-wa__btn { padding: 0; border-width: 2px; }
	.tcd-wa__badge, .tcd-wa__copy { display: none; }
	.tcd-wa__icon { width: 54px !important; height: 54px !important; padding: 11px; }
}

/* ==========================================================================
   Cookie consent
   ========================================================================== */
.tcd-consent { position: fixed; z-index: 110; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); max-width: 440px; max-height: calc(100dvh - 24px); overflow-y: auto; padding: 22px; background: var(--navy-dd); color: rgba(255, 255, 255, .8); border-radius: var(--r-l); box-shadow: 0 20px 50px -10px rgba(0, 0, 0, .45); font-size: .92rem; line-height: 1.55; }
@media (min-width: 640px) { .tcd-consent { left: 20px; right: auto; bottom: 20px; } }
.tcd-consent__title { margin: 0 0 6px; font-size: 1.05rem; font-weight: 700; color: #fff; }
.tcd-consent__text { margin: 0 0 16px; }
.tcd-consent a { color: var(--blue); }
.tcd-consent__choices { display: grid; gap: 10px; margin: 0 0 16px; padding: 14px 0; border-block: 1px solid rgba(255, 255, 255, .12); }
.tcd-consent__choices label { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; }
.tcd-consent__choices input { flex: none; width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--blue); }
.tcd-consent__choices strong { display: block; color: #fff; }
.tcd-consent__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.tcd-consent__actions .tcd-btn { min-height: 46px; padding: 12px 16px; font-size: .95rem; }
.tcd-consent__more { grid-column: 1 / -1; justify-self: center; padding: 6px; background: none; border: 0; color: rgba(255, 255, 255, .75); font-size: .88rem; text-decoration: underline; text-underline-offset: .15em; }
.tcd-consent__more:hover { color: #fff; }
body.consent-open .tcd-wa, body.consent-open .tcd-actionbar { opacity: 0; pointer-events: none; }
.tcd-footer__cookies { padding: 0; background: none; border: 0; color: inherit; font: inherit; }
.tcd-footer__cookies:hover { color: #fff; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } }

/* Section titles never inherit content heading margins. */
.tcd-content .tcd-head .tcd-block__title, .tcd-content .tcd-about__body .tcd-block__title, .tcd-content .tcd-contact__card .tcd-block__title { margin-top: 0; }
.tcd-content .tcd-about__body .tcd-block__title { margin-bottom: 18px; }
.tcd-areas__intro .tcd-head--split, .tcd-cta .tcd-head--split { display: block; }
.tcd-areas__intro .tcd-head__side { margin-top: 18px; }
.tcd-content .tcd-areas li a { color: var(--head); }
body:has(.tcd-cta) .tcd-footer__band { display: none; }

/* Phone lists (header popover, drawer, footer, contact card) */
.tcd-phones { list-style: none; margin: 0; padding: 0 !important; }
.tcd-phones li { margin: 0 !important; padding: 0 !important; }
.tcd-phones a { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 7px 0; text-decoration: none; }
.tcd-phones__num { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tcd-hero--form + .tcd-block.tcd-trust { padding-top: 100px !important; padding-bottom: 36px; }
.tcd-block.tcd-hero { z-index: 3; }


/* Serif display headings; Plus Jakarta Sans for everything else. */
.tcd-hero__title, .tcd-block__title, .tcd-pagehead__title, .tcd-projhead__title, .tcd-articlehead__title, .tcd-footer__pitch,
.tcd-content h2, .tcd-prose h2, .tcd-about__badge strong, .tcd-mat-panel__body h3, .tcd-contact__card .tcd-block__title {
	font-family: var(--serif); font-weight: 500; letter-spacing: -.02em;
}
.tcd-hero__title { letter-spacing: -.025em; line-height: 1.02; }
.tcd-block__title { line-height: 1.08; }
.tcd-service__title, .tcd-project__title, .tcd-postcard__title, .tcd-process__list h3, .tcd-content h3 { font-family: var(--font); font-weight: 700; letter-spacing: -.02em; }
.tcd-process__n, .tcd-about__stat strong, .tcd-calc__figures dd { font-family: var(--serif); font-weight: 500; letter-spacing: -.02em; }
.tcd-wa__mono { font-family: var(--serif) !important; font-weight: 600 !important; font-size: 1.05rem !important; letter-spacing: -.01em; }
.tcd-wa__mono em { color: var(--blue-d); }


/* Lighter desktop header */
@media (min-width: 1100px) {
	.tcd-bar__inner { gap: 32px; }
	.tcd-logo .tcd-logo__img { width: 156px; }
	.tcd-nav__list { gap: 6px; }
	.tcd-nav__link { font-size: .875rem; font-weight: 500; padding: 8px 9px; letter-spacing: .005em; }
	.tcd-nav__toggle { padding: 8px 6px 8px 0; }
	.tcd-bar__phoneicon { width: 38px; height: 38px; background: transparent; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .25); }
	.tcd-bar__phonetext small { font-size: .7rem; }
	.tcd-bar__phonetext strong { font-size: .95rem; }
	.tcd-bar__cta { min-height: 42px; padding: 10px 16px; font-size: .88rem; }
}
@media (min-width: 1100px) and (max-width: 1280px) { .tcd-bar__phonetext { display: none !important; } .tcd-nav__link { padding-inline: 6px; } }

/* ---------- Hero, refined ---------- */
.tcd-hero__title { font-size: clamp(2.5rem, 1.5rem + 3.6vw, 4.6rem); max-width: 15ch; }
.tcd-hero__text { max-width: 560px; }
.tcd-hero__img { transform: scale(1.08); transition: opacity 1.4s ease, transform 9s ease-out; }
.tcd-hero__img.is-active { transform: scale(1); }
@media (prefers-reduced-motion: reduce) { .tcd-hero__img, .tcd-hero__img.is-active { transform: none; } }
.tcd-hero::before { background: linear-gradient(95deg, rgba(20, 27, 38, .88) 0%, rgba(20, 27, 38, .6) 42%, rgba(20, 27, 38, .12) 75%), linear-gradient(0deg, rgba(20, 27, 38, .7) 0%, transparent 38%); }

.tcd-hero__foot { position: relative; display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-top: 48px; }
.tcd-hero__slides { list-style: none; display: flex; gap: 18px; margin: 0; padding: 0; }
.tcd-hero__slides button { display: grid; gap: 10px; width: 180px; padding: 0; border: 0; background: none; color: rgba(255, 255, 255, .6); text-align: left; cursor: pointer; }
.tcd-hero__slides button.is-active, .tcd-hero__slides button:hover { color: #fff; }
.tcd-hero__bar { display: block; height: 2px; background: rgba(255, 255, 255, .25); overflow: hidden; }
.tcd-hero__bar i { display: block; height: 100%; width: 0; background: var(--blue); }
.tcd-hero__slides button.is-active .tcd-hero__bar i { animation: tcd-progress var(--slide-ms, 7000ms) linear forwards; }
@keyframes tcd-progress { to { width: 100%; } }
.tcd-hero__cap { font-size: .8rem; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tcd-hero__latest { display: flex; align-items: center; gap: 14px; max-width: 360px; padding: 10px 14px 10px 10px; border-radius: var(--r-l); background: rgba(20, 27, 38, .55); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); color: #fff; text-decoration: none; transition: background .2s; }
.tcd-hero__latest:hover { background: rgba(20, 27, 38, .75); }
.tcd-hero__latestimg img { width: 64px; height: 64px; object-fit: cover; border-radius: var(--r); }
.tcd-hero__latesttext { display: grid; gap: 2px; line-height: 1.3; }
.tcd-hero__latesttext small { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--blue); }
.tcd-hero__latesttext strong { font-size: .95rem; font-weight: 600; }
.tcd-hero__latest i { display: grid; place-items: center; flex: none; width: 34px; height: 34px; border-radius: var(--r); background: var(--blue); color: var(--head); }
.tcd-hero__latest i .tcd-icon { width: 15px; height: 15px; transform: rotate(-45deg); }
.tcd-hero--form .tcd-quotebar-wrap { margin-top: 36px; }

@media (max-width: 999.98px) {
	.tcd-hero__foot { margin-top: 32px; }
	.tcd-hero__latest { display: none; }
	.tcd-hero__slides { gap: 10px; width: 100%; }
	.tcd-hero__slides li { flex: 1; }
	.tcd-hero__slides button { width: 100%; }
	.tcd-hero__cap { display: none; }
}
@media (max-width: 640px) {
	.tcd-block.tcd-hero { padding-top: calc(var(--hdr) + 28px); }
	/* Let the photo show at the top on phones, darken only behind the words. */
	.tcd-hero::before { background: linear-gradient(180deg, rgba(20, 27, 38, .35) 0%, rgba(20, 27, 38, .78) 34%, rgba(20, 27, 38, .9) 100%); }
	.tcd-hero__inner { padding-top: 120px; }
	.tcd-hero__title { font-size: 2.45rem; line-height: 1.04; }
	.tcd-hero__text { font-size: 1rem; margin-bottom: 26px; }
	.tcd-hero .tcd-pill { font-size: .72rem; }
	.tcd-hero__actions .tcd-btn { width: 100%; }
	.tcd-quotebar { padding: 20px; }
}
@media (min-width: 1100px) { .tcd-nav__areas { grid-template-columns: repeat(var(--areas, 2), minmax(170px, 1fr)); max-width: 900px; } }
.tcd-hero__title { max-width: 19ch; font-size: clamp(2.5rem, 1.5rem + 3.2vw, 4.3rem); }
@media (min-width: 1000px) {
	.tcd-block.tcd-hero { min-height: min(calc(100svh - 30px), 940px); }
	.tcd-hero__foot { position: static; }
	.tcd-hero__latest { position: absolute; top: calc(var(--hdr) + 36px); right: max(var(--gutter), calc((100% - var(--wrap)) / 2)); }
}
.tcd-footer a.tcd-btn, .tcd-footer a.tcd-btn:hover { color: var(--fg); }

/* Pages without a hero: full-width sections sit flush with the page edges and get proper spacing from text. */
.tcd-content:has(> .tcd-block:last-child) { padding-bottom: 0; }
.tcd-content:has(> .tcd-block:first-child) { padding-top: 0; }
.tcd-content:not(.tcd-content--hero) > :not(.tcd-block) + .tcd-block { margin-top: var(--section); }
.tcd-content:not(.tcd-content--hero) > .tcd-block + :not(.tcd-block) { margin-top: var(--section); }
