/* ==========================================================================
   TAZ Networks — theme styles
   Palette sampled from the company logo: crimson #A8002F, graphite #606060.
   ========================================================================== */

:root {
	--taz-crimson: #A8002F;
	--taz-crimson-lt: #E8556F;
	--taz-crimson-wash: #FBEEF1;
	--taz-ink: #15171B;
	--taz-ink-deep: #0E1014;
	--taz-ink-soft: #33363B;
	--taz-graphite: #5D636D;
	--taz-mute: #7A756E;
	--taz-faint: #948F88;
	--taz-stone: #6E6960;
	--taz-sand: #F6F5F3;
	--taz-line: #E6E4E0;
	--taz-line-2: #E0DDD8;
	--taz-white: #FFFFFF;

	--taz-shell: 1280px;
	--taz-gut: 48px;
	--taz-r: 16px;

	--taz-sans: Roboto, system-ui, -apple-system, sans-serif;
	--taz-display: Roboto, var(--taz-sans);
	--taz-mono: "IBM Plex Mono", ui-monospace, monospace;

	--taz-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
	margin: 0;
	background: var(--taz-white);
	color: var(--taz-ink);
	font-family: var(--taz-sans);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	overflow-x: clip;
}

img, svg, video, canvas { max-width: 100%; height: auto; display: block; }
input, textarea, select, button { font-family: inherit; font-size: inherit; }
p { text-wrap: pretty; margin: 0 0 1em; }
h1, h2, h3, h4 { font-family: var(--taz-display); margin: 0; text-wrap: balance; }
a { color: var(--taz-crimson); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--taz-ink); }
::selection { background: var(--taz-crimson); color: #fff; }

:focus-visible { outline: 2px solid var(--taz-crimson); outline-offset: 3px; border-radius: 4px; }

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

.taz-skip {
	position: absolute; left: -9999px; top: 0; z-index: 200;
	background: var(--taz-ink); color: #fff; padding: 14px 20px; border-radius: 0 0 10px 0;
}
.taz-skip:focus { left: 0; color: #fff; }

.taz-shell { max-width: var(--taz-shell); margin: 0 auto; padding: 0 var(--taz-gut); }
.taz-narrow { max-width: 780px; }
.taz-center { text-align: center; }

/* --------------------------------------------------------------- Typography */
.taz-h1 { font-size: clamp(34px, 5vw, 58px); font-weight: 800; line-height: 1.05; letter-spacing: -.022em; color: #fff; }
.taz-h1--xl { font-size: clamp(36px, 5.2vw, 58px); line-height: 1.06; letter-spacing: -.02em; }
.taz-h1--article { font-size: clamp(30px, 4.4vw, 52px); letter-spacing: -.021em; }
/* The export runs H2 at 44px on the homepage, 40px on every inner page, and
   38px in the dark "what's included" band. Same one-step-larger homepage
   pattern as the 122px section rhythm. */
.taz-h2 { font-size: clamp(28px, 3.5vw, 40px); font-weight: 800; line-height: 1.1; letter-spacing: -.019em; color: var(--taz-ink); }
.taz-front .taz-h2 { font-size: clamp(28px, 3.5vw, 44px); }
.taz-included .taz-h2, .e-con.e-con.taz-included .taz-h2 { font-size: clamp(26px, 3.2vw, 38px); }
.taz-h2--light { color: #fff; }
.taz-h2--xl { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -.02em; }
.taz-h2--sm { font-size: clamp(26px, 3.2vw, 40px); line-height: 1.1; letter-spacing: -.028em; }

.taz-hl { position: relative; display: inline-block; white-space: nowrap; color: var(--taz-crimson-lt); }
.taz-hl > i {
	position: absolute; left: 0; right: 0; bottom: 4px; height: 10px; border-radius: 3px;
	background: linear-gradient(90deg, rgba(168,0,47,.5), rgba(168,0,47,0));
}

.taz-kicker {
	font-family: var(--taz-mono); font-size: 12.5px; font-weight: 600; letter-spacing: .13em;
	text-transform: uppercase; color: var(--taz-crimson); margin: 0 0 18px;
	display: flex; align-items: center; gap: 9px;
}
.taz-kicker--light { color: #E8556F; } /* same red as the pill -- client wants one shade site-wide */

.taz-lede { font-size: clamp(16px, 1.37vw, 17.5px); line-height: 1.7; color: rgba(255,255,255,.68); margin: 22px 0 0; max-width: 62ch; }
.taz-hero .taz-lede { font-size: clamp(16px, 1.45vw, 18.5px); line-height: 1.68; color: rgba(255,255,255,.66); max-width: none; margin-top: 24px; }
.taz-hero--tall .taz-lede { font-size: clamp(16px, 1.45vw, 18px); max-width: 570px; }
.taz-hero--tall .taz-lede { margin-top: 26px; }
.taz-sectionintro .taz-lede { max-width: none; }
/* Inside a section head the lede's parent is Elementor's widget wrapper, not
   .taz-sectionintro, so the un-cap above never matches. The export runs this
   copy the full 680px of the intro column. */
.e-con.e-con.taz-sectionhead .taz-lede, .e-con.e-con.taz-sectionintro .taz-lede,
.e-con.e-con.taz-sectionhead .elementor-widget-container > .taz-lede { max-width: none; }
.taz-lede--dark { color: var(--taz-graphite); }

.taz-num { font-family: var(--taz-mono); font-size: 11.5px; line-height: normal; color: var(--taz-crimson); display: block; }
.taz-smallprint { font-size: 13px; color: var(--taz-faint); }
.taz-empty { color: var(--taz-graphite); font-size: 17px; }

.taz-pill {
	display: inline-flex; align-items: center; gap: 10px; margin: 0 0 24px;
	font-family: var(--taz-mono); font-weight: 600; font-size: 12.5px; letter-spacing: .13em; text-transform: uppercase;
	color: #E8556F; background: rgba(232,85,111,.06);
	border: 1px solid rgba(232,85,111,.34); border-radius: 999px; padding: 8px 15px; /* export: 34px tall */
}

.taz-pulse { width: 6px; height: 6px; border-radius: 50%; background: var(--taz-crimson); flex: none; }
.taz-motion-full .taz-pulse { animation: tazPulse 2.4s ease-in-out infinite; }
.taz-pulse--ring { position: relative; }
.taz-pulse--ring::after {
	content: ""; position: absolute; inset: -1px; border-radius: 50%;
	border: 1px solid var(--taz-crimson);
}
.taz-motion-full .taz-pulse--ring::after { animation: tazRing 2.4s ease-out infinite; }

.taz-tick { width: 20px; height: 20px; border-radius: 50%; background: var(--taz-crimson); position: relative; flex: none; }
.taz-tick::after {
	content: ""; position: absolute; inset: 0; margin: auto; width: 8px; height: 4px;
	border-left: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(-45deg) translateY(-1px);
}
.taz-tick--sm { width: 17px; height: 17px; background: var(--taz-crimson-wash); }
.taz-tick--sm::after { width: 6px; height: 3px; border-color: var(--taz-crimson); border-width: 1.5px; }
.taz-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--taz-crimson); flex: none; margin-top: 8px; }

.taz-tag {
	font-family: var(--taz-mono); font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
	color: var(--taz-crimson-lt); border: 1px solid rgba(232,85,111,.32); border-radius: 5px;
	padding: 4px 9px; white-space: nowrap;
}
.taz-chip {
	font-family: var(--taz-display); font-weight: 500; font-size: 14.5px; letter-spacing: -.007em;
	color: var(--taz-ink-soft); background: var(--taz-sand); border: 1px solid var(--taz-line);
	border-radius: 8px; padding: 9px 14px;
}

/* ------------------------------------------------------------------ Buttons */
.taz-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	font-family: var(--taz-sans); font-size: 15px; font-weight: 600; line-height: 1;
	padding: 16px 26px; border-radius: 10px; border: 1px solid transparent;
	cursor: pointer; white-space: nowrap; text-align: center;
	transition: background .2s ease, color .2s ease, border-color .2s ease, transform .22s var(--taz-ease), box-shadow .22s var(--taz-ease);
}
.taz-btn:hover { transform: translateY(-2px); }
.taz-btn--lg { font-size: 16px; padding: 18px 32px; }
.taz-btn--block { display: flex; width: 100%; }

.taz-btn--light { background: #fff; color: var(--taz-ink-deep); }
.taz-btn--light:hover { background: var(--taz-crimson-lt); color: #fff; box-shadow: 0 14px 34px rgba(232,85,111,.3); }

.taz-btn--brand { background: var(--taz-crimson); color: #fff; }
.taz-btn--brand:hover { background: var(--taz-ink); color: #fff; box-shadow: 0 14px 32px rgba(168,0,47,.32); }

.taz-btn--dark { background: var(--taz-ink); color: #fff; }
.taz-btn--dark:hover { background: var(--taz-crimson); color: #fff; box-shadow: 0 12px 28px rgba(168,0,47,.3); }

.taz-btn--ghost { background: #fff; color: var(--taz-ink); border-color: var(--taz-line-2); }
.taz-btn--ghost:hover { border-color: var(--taz-crimson); color: var(--taz-crimson); }

.taz-hero .taz-btn--ghost, .taz-section--dark .taz-btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.24); }
.taz-hero .taz-btn--ghost:hover, .taz-section--dark .taz-btn--ghost:hover { border-color: #fff; background: rgba(255,255,255,.08); color: #fff; }
.taz-btn--ghost-light { background: transparent; color: #fff; border-color: rgba(255,255,255,.24); }
.taz-btn--ghost-light:hover { border-color: #fff; background: rgba(255,255,255,.08); color: #fff; }

.taz-btn-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 30px; }
.taz-btn-row:empty { display: none; }

.taz-cardlink { font-size: 14px; font-weight: 600; color: var(--taz-crimson); margin-top: auto; padding-top: 14px; display: block; }

/* ------------------------------------------------------------ Utility + nav */
.taz-progress { position: fixed; inset: 0 0 auto; height: 3px; z-index: 90; pointer-events: none; }
.taz-progress span { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--taz-crimson), var(--taz-crimson-lt), #fff); }

.taz-utility { background: var(--taz-ink-deep); color: rgba(255,255,255,.62); font-size: 12.5px; position: relative; z-index: 60; }
.taz-utility__inner { display: flex; align-items: center; justify-content: space-between; gap: 32px; min-height: 46px; }
.taz-utility__places { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }
.taz-utility__place { display: inline-flex; align-items: center; gap: 9px; color: rgba(255,255,255,.62); }
.taz-utility__place:hover { color: #fff; }
.taz-utility__right { display: flex; align-items: center; gap: 22px; }
.taz-utility__social { display: flex; align-items: center; gap: 14px; font-family: var(--taz-mono); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; }
.taz-utility__social a { display: flex; align-items: center; color: rgba(255,255,255,.72); transition: color .2s ease; }
.taz-utility__social a:hover { color: #fff; }
.taz-utility__rule { width: 1px; height: 15px; background: rgba(255,255,255,.14); }
.taz-utility__phone { color: #fff; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; }
.taz-utility__phone span { font-family: var(--taz-mono); font-weight: 600; font-size: 11.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--taz-crimson-lt); }
.taz-utility__phone:hover { color: var(--taz-crimson-lt); }

.taz-header {
	position: sticky; top: 0; z-index: 70;
	background: rgba(255,255,255,.93); backdrop-filter: blur(18px) saturate(1.4);
	border-bottom: 1px solid var(--taz-line);
}
.taz-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 36px; padding-top: 20px; padding-bottom: 20px; transition: padding .26s var(--taz-ease); }
.taz-header.is-tight .taz-header__inner { padding-top: 11px; padding-bottom: 11px; }
.taz-logo { display: flex; align-items: center; flex: none; }
.taz-logo img { width: auto; }
.taz-logo__text { font-family: var(--taz-display); font-weight: 700; font-size: 22px; letter-spacing: -.014em; color: var(--taz-ink); }
.taz-header__cta { display: flex; align-items: center; gap: 10px; flex: none; }
.taz-header__cta .taz-btn--ghost-light { background: #fff; color: var(--taz-ink); border-color: var(--taz-line-2); }
.taz-header__cta .taz-btn--ghost-light:hover { border-color: var(--taz-ink); background: var(--taz-sand); color: var(--taz-ink); }
.taz-header__cta .taz-btn { font-size: 13.5px; padding: 12px 18px; }

.taz-nav__list { display: flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; }
.taz-nav__link {
	display: flex; align-items: center; gap: 7px; padding: 10px 14px; border-radius: 8px;
	font-size: 14.5px; font-weight: 500; color: var(--taz-graphite);
	transition: background .18s ease, color .18s ease;
}
.taz-nav__link:hover, .taz-nav__item.is-open > .taz-nav__link { color: var(--taz-ink); background: var(--taz-sand); }
.taz-nav-is-item > .taz-nav__link, .taz-nav-is-ancestor > .taz-nav__link,
.current-menu-item > .taz-nav__link, .current_page_item > .taz-nav__link,
.current-menu-ancestor > .taz-nav__link, .current_page_ancestor > .taz-nav__link,
.current-menu-parent > .taz-nav__link { color: var(--taz-ink); }
.taz-caret { width: 5px; height: 5px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); margin-top: -3px; transition: transform .24s var(--taz-ease); }
.taz-nav__item.is-open .taz-caret { transform: rotate(-135deg); }

.taz-mega {
	position: absolute; left: 0; right: 0; top: 100%;
	background: #fff; border-bottom: 1px solid var(--taz-line);
	box-shadow: 0 30px 60px -20px rgba(21,23,27,.22);
	opacity: 0; visibility: hidden; transform: translateY(-8px);
	transition: opacity .22s ease, transform .28s var(--taz-ease), visibility .22s;
}
.taz-nav__item.is-open .taz-mega { opacity: 1; visibility: visible; transform: none; }
.taz-mega__inner { display: grid; grid-template-columns: 300px 1fr; gap: 48px; padding-top: 36px; padding-bottom: 40px; }
.taz-mega__promo { background: var(--taz-ink-deep); border-radius: 14px; padding: 28px; position: relative; overflow: hidden; color: #fff; }
.taz-mega__promo:empty { display: none; }
.taz-mega__promo::before {
	content: ""; position: absolute; top: -60px; right: -60px; width: 220px; height: 220px; border-radius: 50%;
	background: radial-gradient(circle, rgba(168,0,47,.45) 0%, transparent 70%);
}
.taz-motion-full .taz-mega__promo::before { animation: tazDrift 14s ease-in-out infinite; }
.taz-mega__promo > * { position: relative; }
.taz-mega__promo small { font-family: var(--taz-mono); font-size: 11px; font-weight: 600; letter-spacing: .13em; text-transform: uppercase; color: #E8556F; } /* same weight/tracking/red as every other eyebrow */
.taz-mega__promo h4 { font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -.014em; margin: 14px 0 10px; }
.taz-mega__promo p { font-size: 14px; line-height: 1.65; color: rgba(255,255,255,.62); margin: 0 0 22px; }
.taz-mega__list, .taz-mega__sublist { list-style: none; margin: 0; padding: 0; }
.taz-mega__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px 24px; align-content: start; }
.taz-mega__sublist { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px 24px; }
.taz-mega__link { display: block; padding: 12px 14px; border-radius: 9px; border: 1px solid transparent; }
.taz-mega__link:hover { background: var(--taz-sand); border-color: var(--taz-line); }
.taz-mega__link span { display: block; font-family: var(--taz-display); font-weight: 500; font-size: 14.5px; letter-spacing: -.007em; color: var(--taz-ink); }
.taz-mega__link small { display: block; font-size: 12.5px; line-height: 1.5; color: var(--taz-mute); margin-top: 5px; }

.taz-burger { display: none; width: 42px; height: 42px; border: 1px solid var(--taz-line-2); border-radius: 9px; background: #fff; cursor: pointer; padding: 11px 10px; }
.taz-burger span { display: block; height: 2px; background: var(--taz-ink); border-radius: 2px; }
.taz-burger span + span { margin-top: 5px; }

.taz-mobile-nav { display: none; }

/* -------------------------------------------------------------------- Heroes */
.taz-hero { position: relative; background: var(--taz-ink-deep); overflow: hidden; color: #fff; isolation: isolate; }
.taz-hero__inner { position: relative; padding-top: 44px; padding-bottom: 96px; }
.taz-hero--tall .taz-hero__inner { padding-top: clamp(72px, 8vw, 104px); padding-bottom: 0; }

/* Home hero. The export runs a fixed 863px rhythm (104px top padding) at every
   desktop height; earlier short-viewport compression was removed to match it.
   139px = utility bar (46) + unshrunk header (93). Spacing flexes with
   viewport height; content can still overflow into scroll on tiny screens. */
@media (min-width: 1025px) {
	.taz-front .taz-hero--tall { display: flex; flex-direction: column; min-height: calc(100vh - 139px); min-height: calc(100svh - 139px); }
	.taz-front .taz-hero--tall .taz-hero__inner { flex: 1; display: flex; flex-direction: column; justify-content: flex-start4px; }
	.taz-front .taz-hero--tall .taz-stats { margin-top: 76px; } /* export */
	.taz-front .taz-hero--tall .taz-stats__cell { padding: 34px 28px 40px; } /* export */
	.taz-front .taz-hero--tall .taz-marquee { margin-top: auto; }
}


.taz-hero--compact .taz-hero__inner { padding-bottom: 80px; }

.taz-hero__bgwrap { position: absolute; inset: 0; z-index: -1; }
.taz-hero__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Elementor's global `.elementor img { height: auto }` outranks the rule above
   and turns the cover-fit photo into an auto-height image that no longer
   fills its box. Restate at higher specificity. */
.elementor .taz-hero__bgwrap .taz-hero__photo { height: 100%; max-width: none; width: 100%; }
.taz-hero__scrim { position: absolute; inset: 0; background: linear-gradient(100deg, rgba(66,68,72,.88) 0%, rgba(74,76,80,.62) 44%, rgba(84,86,90,.30) 100%); }
.taz-hero__scrim--v { background: linear-gradient(180deg, rgba(68,70,74,.30) 0%, transparent 36%, rgba(56,58,62,.56) 100%); }
.taz-hero__grid {
	position: absolute; inset: 0;
	background-image: linear-gradient(rgba(255,255,255,.022) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.022) 1px, transparent 1px);
	background-size: 64px 64px;
}
.taz-hero__glow {
	position: absolute; top: -280px; right: -150px; width: 900px; height: 900px; border-radius: 50%;
	background: radial-gradient(circle, rgba(168,0,47,.32) 0%, rgba(168,0,47,.05) 46%, transparent 70%);
}
.taz-motion-full .taz-hero__glow { animation: tazDrift 23s ease-in-out infinite; }
.taz-hero__glow--soft { opacity: .6; }


.taz-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12.5px; color: rgba(255,255,255,.58); margin-bottom: 56px; }
.taz-crumbs a { color: rgba(255,255,255,.58); }
.taz-crumbs a:hover { color: #fff; }
.taz-crumbs span[aria-hidden] { color: rgba(255,255,255,.24); }
.taz-crumbs__current { color: rgba(255,255,255,.78); }

.taz-hero__split { display: grid; grid-template-columns: minmax(0, 53fr) minmax(0, 47fr); gap: 68px; align-items: center; }
.taz-hero__single { max-width: 820px; }
.taz-hero__copy--wide { max-width: 780px; }
/* Page heroes now carry their copy width as an Elementor width setting (the
   export tunes it per page: 720 / 760 / 780 / 800); the class cap must not
   clamp it. */
.e-con.e-con.taz-hero__copy--wide { max-width: none; }

.taz-heromedia__frame {
	position: relative; border-radius: 18px; overflow: hidden; aspect-ratio: 4 / 3.1;
	border: 1px solid rgba(255,255,255,.13); background: #191C22;
}
.taz-heromedia__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.taz-heromedia__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(96,96,96,.06) 0%, rgba(78,80,84,.22) 46%, rgba(56,58,62,.78) 100%); }
.taz-heromedia__badge {
	position: absolute; left: 20px; bottom: 18px; display: inline-flex; align-items: center; gap: 10px;
	font-family: var(--taz-mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.72);
}
.taz-play { position: absolute; inset: 0; display: grid; place-items: center; }
.taz-play__disc {
	width: 78px; height: 78px; border-radius: 50%; background: rgba(14,16,20,.44);
	backdrop-filter: blur(4px); border: 1px solid rgba(255,255,255,.44); position: relative;
}
.taz-play__disc::after {
	content: ""; position: absolute; inset: 0; margin: auto; width: 0; height: 0;
	border-left: 17px solid #fff; border-top: 11px solid transparent; border-bottom: 11px solid transparent;
	transform: translateX(3px);
}
.taz-play__ring { position: absolute; width: 78px; height: 78px; border-radius: 50%; border: 1px solid rgba(232,85,111,.6); }
.taz-motion-full .taz-play__ring { animation: tazRing 2.8s ease-out infinite; }
.taz-play:hover .taz-play__disc { background: rgba(168,0,47,.7); }

.taz-stats { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid rgba(255,255,255,.09); margin-top: 76px; }
.taz-stats__cell { padding: 34px 28px 40px; border-right: 1px solid rgba(255,255,255,.09); }
.taz-stats__cell:last-child { border-right: 0; }
.taz-stats__value { display: flex; align-items: baseline; gap: 3px; font-family: var(--taz-display); font-weight: 800; font-size: clamp(30px, 3.4vw, 46px); letter-spacing: -.02em; line-height: 1; margin: 0; }
.taz-stats__value em { font-style: normal; font-size: .64em; color: var(--taz-crimson-lt); }
.taz-stats__label { font-size: 13.5px; color: rgba(255,255,255,.5); margin: 12px 0 0; line-height: 1.5; }

.taz-marquee { position: relative; border-top: 1px solid rgba(255,255,255,.09); background: rgba(255,255,255,.018); overflow: hidden; }
.taz-marquee__inner { display: flex; align-items: center; gap: 40px; height: 82px; }
.taz-marquee__label { font-family: var(--taz-mono); font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.56); margin: 0; max-width: 90px; line-height: 1.6; }
.taz-marquee__track { flex: 1; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.taz-marquee__run { display: flex; gap: 56px; width: max-content; }
.taz-motion-full .taz-marquee__run { animation: tazMarquee 26s linear infinite; }
.taz-marquee__run span { font-family: var(--taz-display); font-weight: 700; font-size: 19px; letter-spacing: -.01em; color: rgba(255,255,255,.72); white-space: nowrap; }

.taz-factpanel { display: grid; gap: 1px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.08); border-radius: 14px; overflow: hidden; }
.taz-factpanel__row { background: var(--taz-ink-deep); padding: 22px 26px; display: flex; align-items: baseline; justify-content: space-between; gap: 20px; }
.taz-factpanel__row strong { font-family: var(--taz-display); font-weight: 600; font-size: 26px; line-height: normal; letter-spacing: -.017em; } /* export rows are 74px; inherited 1.6 leading made them 86 */
.taz-factpanel__row span { font-size: 13.5px; color: rgba(255,255,255,.5); text-align: right; }

/* ------------------------------------------------------------------ Sections */
.taz-section { position: relative; padding: clamp(72px, 9.5vw, 104px) 0; overflow: clip; }
.taz-section--white { background: #fff; }
.taz-section--sand { background: var(--taz-sand); border-top: 1px solid var(--taz-line); border-bottom: 1px solid var(--taz-line); }
.taz-section--dark { background: var(--taz-ink); color: #fff; isolation: isolate; }
.taz-section--dark .taz-h2 { color: #fff; }
.taz-section--dark .taz-lede { color: rgba(255,255,255,.64); }
/* The sticky intro column runs a size down from a section head. */
.taz-split .taz-lede { font-size: clamp(15.5px, 1.3vw, 16.5px); line-height: 1.72; }
.taz-section--dark .taz-split .taz-lede { color: rgba(255,255,255,.62); }
.taz-section--top-rule { border-top: 1px solid var(--taz-line); }
.taz-section--top-rule .taz-h2 { margin-bottom: 44px; }
.taz-prose--lead + .taz-cellgrid--tight { margin-top: 22px; }
.taz-section--center { text-align: center; }
.taz-section--center .taz-kicker, .taz-section--center .taz-lede { justify-content: center; margin-left: auto; margin-right: auto; }

.taz-sectionintro { max-width: 680px; }
.taz-sectionhead { display: flex; align-items: flex-end; justify-content: space-between; gap: 48px; margin-bottom: 52px; }
.taz-sectionhead .taz-sectionintro { margin-bottom: 0; }
.taz-sectionhead .taz-btn-row { margin-top: 0; }
.taz-sectionhead .taz-btn, .taz-quotes .taz-center .taz-btn { font-size: 14.5px; padding: 14px 22px; }

.taz-split { display: grid; grid-template-columns: .82fr 1.18fr; gap: 76px; align-items: start; }
.taz-split__sticky { position: sticky; top: 130px; }

.taz-numlist__row { display: grid; grid-template-columns: 52px 1fr; gap: 26px; padding: 32px 0; border-top: 1px solid var(--taz-line); }
.taz-numlist__row:last-child { border-bottom: 0; }
.taz-numlist__foot { display: flex; align-items: center; gap: 18px; border-top: 1px solid var(--taz-line); padding-top: 32px; }
.taz-numlist__footlabel { font-family: var(--taz-mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--taz-stone); }
.taz-numlist__foot a { font-family: var(--taz-display); font-weight: 700; font-size: 20px; letter-spacing: -.014em; color: var(--taz-ink); }
.taz-numlist__foot a:hover { color: var(--taz-crimson); }
.taz-numlist > .taz-numlist__row:last-of-type { border-bottom: 1px solid var(--taz-line); }
.taz-numlist:has(.taz-numlist__foot) > .taz-numlist__row:last-of-type { border-bottom: 0; }
.taz-section--dark .taz-numlist__row { border-color: rgba(255,255,255,.1); }
.taz-numlist__row h3 { font-size: 22px; font-weight: 700; line-height: 1.3; letter-spacing: -.012em; margin: 0 0 11px; }
.taz-numlist__row p { font-size: 16px; line-height: 1.72; color: var(--taz-graphite); margin: 0; max-width: 62ch; }
.taz-section--dark .taz-numlist__row p { color: rgba(255,255,255,.64); }

.taz-grid { display: grid; gap: 20px; }
.taz-grid--gap { gap: 22px; }
.taz-grid--3 { grid-template-columns: repeat(3, 1fr); }
.taz-grid--4 { grid-template-columns: repeat(4, 1fr); }

.taz-card {
	display: flex; flex-direction: column; gap: 12px; padding: 30px;
	border: 1px solid var(--taz-line); border-radius: var(--taz-r); background: #fff;
	color: var(--taz-ink); min-height: 220px;
	transition: border-color .3s var(--taz-ease), transform .3s var(--taz-ease), box-shadow .3s var(--taz-ease), background .3s ease;
}
.taz-card:hover { border-color: var(--taz-crimson); transform: translateY(-6px); box-shadow: 0 24px 46px -22px rgba(21,23,27,.24); color: var(--taz-ink); }
.taz-card--outline:hover { background: var(--taz-sand); }
.taz-card h3 { font-size: 21px; font-weight: 700; line-height: 1.26; letter-spacing: -.014em; margin: 0; }
.taz-card p { font-size: 14.5px; line-height: 1.68; color: var(--taz-graphite); margin: 0; }
.taz-card small { font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-faint); }
.taz-card__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }

.taz-photocard {
	display: flex; flex-direction: column; border: 1px solid var(--taz-line); border-radius: var(--taz-r);
	overflow: hidden; background: #fff; color: var(--taz-ink);
	transition: border-color .3s var(--taz-ease), transform .3s var(--taz-ease), box-shadow .3s var(--taz-ease);
}
.taz-photocard:hover { border-color: var(--taz-crimson); transform: translateY(-6px); box-shadow: 0 26px 50px -22px rgba(21,23,27,.26); color: var(--taz-ink); }
.taz-photocard__media { display: block; height: 172px; background: #EDEBE7 center / cover no-repeat; }
.taz-photocard__body { display: flex; flex-direction: column; gap: 12px; flex: 1; padding: 28px 28px 30px; }
.taz-photocard__body h3 { font-size: 22px; font-weight: 600; line-height: 1.26; letter-spacing: -.014em; margin: 0; }
.taz-photocard__body p { font-size: 15px; line-height: 1.7; color: var(--taz-graphite); margin: 0; }

.taz-tileshead { display: flex; align-items: baseline; justify-content: space-between; gap: 40px; margin-bottom: 28px; }
.taz-tileshead h3 { font-family: var(--taz-display); font-weight: 700; font-size: 26px; letter-spacing: -.014em; margin: 0; }
.taz-tileshead span { font-family: var(--taz-mono); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-stone); }
.taz-section--attached { padding-top: 0; margin-top: -56px; border-top: 0; }
.taz-attach-rule { border-top: 1px solid var(--taz-line); margin-bottom: 44px; }
.taz-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.taz-tile {
	display: flex; flex-direction: column; justify-content: space-between; gap: 38px;
	min-height: 152px; padding: 22px; border: 1px solid var(--taz-line); border-radius: 13px;
	background: #fff; color: var(--taz-ink);
	transition: border-color .26s var(--taz-ease), transform .26s var(--taz-ease), box-shadow .26s var(--taz-ease);
}
.taz-tile:hover { border-color: var(--taz-crimson); transform: translateY(-4px); box-shadow: 0 18px 36px -18px rgba(21,23,27,.22); color: var(--taz-ink); }
.taz-tile__glyph { width: 42px; height: 42px; border-radius: 11px; background: var(--taz-crimson-wash); display: grid; place-items: center; flex: none; color: var(--taz-crimson); }
.taz-tile__label { display: block; font-family: var(--taz-display); font-weight: 700; font-size: 16.5px; letter-spacing: -.01em; line-height: 1.3; }
.taz-tile__hint { display: block; font-size: 12.5px; color: var(--taz-mute); margin-top: 6px; }


.taz-accent { display: flex; flex-direction: column; gap: 10px; }
.taz-accent__row {
	background: rgba(255,255,255,.042); border: 1px solid rgba(255,255,255,.09);
	border-radius: 14px; padding: 24px 26px;
	transition: border-color .26s var(--taz-ease), background .26s ease, transform .26s var(--taz-ease);
}
.taz-accent__row:hover { border-color: rgba(232,85,111,.48); background: rgba(255,255,255,.075); transform: translateX(6px); }
.taz-accent__head { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; }
.taz-accent__row h3 { font-size: 21px; font-weight: 600; letter-spacing: -.014em; margin: 0; color: #fff; }
.taz-accent__row p { font-size: 14.5px; line-height: 1.7; color: rgba(255,255,255,.6); margin: 11px 0 0; }

.taz-cellgrid { display: grid; gap: 2px; background: var(--taz-line); border: 1px solid var(--taz-line); border-radius: var(--taz-r); overflow: hidden; }
.taz-cellgrid--2 { grid-template-columns: repeat(2, 1fr); }
.taz-cellgrid--3 { grid-template-columns: repeat(3, 1fr); }
.taz-cellgrid--tight { margin-top: 40px; }
.taz-cell { background: #fff; padding: 36px 32px 40px; transition: background .26s ease; } /* export */
.taz-cell:hover { background: var(--taz-sand); }
.taz-cell:not(.taz-cell--link) .taz-num { margin-bottom: 16px; } /* link cells space with their own 8px gap */
.taz-cell h3 { font-size: 21px; font-weight: 700; line-height: 1.28; letter-spacing: -.014em; margin: 0 0 11px; } /* export: 248px cells */
.taz-cell p, .taz-cell__body { font-size: 15px; line-height: 1.72; color: var(--taz-graphite); }
.taz-cell > p:last-child { margin-bottom: 0; }
.taz-cell__body p:last-child { margin-bottom: 0; }
.taz-cell--link { display: flex; flex-direction: column; gap: 8px; color: var(--taz-ink); padding: 26px 28px; }
.taz-cell--link strong { font-family: var(--taz-display); font-weight: 700; font-size: 18px; line-height: normal; letter-spacing: -.012em; }
.taz-cell--link small { font-size: 14px; line-height: 1.6; color: var(--taz-graphite); }

.taz-quotes__marquee { margin-top: 48px; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent); }
.taz-quotes__run { display: flex; gap: 20px; width: max-content; }
.taz-motion-full .taz-quotes__run { animation: tazMarquee 46s linear infinite; }
.taz-quotes__columns { column-count: 2; column-gap: 22px; margin-top: 48px; }
.taz-quotes__columns .taz-quote { break-inside: avoid; margin-bottom: 22px; }
.taz-quote {
	width: 420px; max-width: 100%; margin: 0; padding: 30px; background: #fff;
	border: 1px solid var(--taz-line); border-radius: var(--taz-r);
	display: flex; flex-direction: column; gap: 18px;
	transition: border-color .28s var(--taz-ease), background .28s ease;
}
.taz-quotes__columns .taz-quote { width: auto; }
.taz-quote:hover { border-color: var(--taz-crimson); background: var(--taz-sand); }
.taz-quote__mark { font-family: var(--taz-display); font-size: 40px; line-height: .6; color: var(--taz-crimson); }
.taz-quote blockquote { margin: 0; font-size: 15.5px; line-height: 1.72; color: var(--taz-ink-soft); flex: 1; }
.taz-quote figcaption { display: flex; align-items: center; gap: 13px; border-top: 1px solid #F0EEEA; padding-top: 18px; }
.taz-quote__avatar { width: 42px; height: 42px; border-radius: 50%; background: #EDEBE7 center / cover no-repeat; flex: none; }
.taz-quote figcaption strong { display: block; font-family: var(--taz-display); font-weight: 600; font-size: 15px; letter-spacing: -.007em; }
.taz-quote figcaption small { display: block; font-size: 12.5px; color: var(--taz-mute); margin-top: 3px; }

.taz-member { display: flex; flex-direction: column; text-align: left; padding: 0; background: #fff; border: 1px solid var(--taz-line); border-radius: var(--taz-r); overflow: hidden; cursor: pointer; font: inherit; color: inherit; transition: border-color .3s var(--taz-ease), transform .3s var(--taz-ease), box-shadow .3s var(--taz-ease); }
.taz-member:hover { transform: translateY(-6px); box-shadow: 0 24px 46px -22px rgba(21,23,27,.24); border-color: var(--taz-crimson); }
.taz-member__photo { display: block; aspect-ratio: 1; background: #EDEBE7 center top / cover no-repeat; }
.taz-member__body { display: block; padding: 20px 22px 24px; }
.taz-member__name { display: block; font-family: var(--taz-display); font-weight: 700; font-size: 17px; letter-spacing: -.01em; }
.taz-member__role { display: block; font-size: 13px; color: var(--taz-mute); margin-top: 5px; line-height: 1.5; }

.taz-band { display: flex; align-items: center; justify-content: space-between; gap: 40px; margin-top: 56px; padding: 40px; background: var(--taz-sand); border: 1px solid var(--taz-line); border-radius: var(--taz-r); }
.taz-band h3 { font-size: 26px; font-weight: 700; letter-spacing: -.014em; margin: 0 0 10px; }
.taz-band p { font-size: 16px; line-height: 1.7; color: var(--taz-graphite); margin: 0; max-width: 60ch; }

.taz-postcard { display: flex; flex-direction: column; border: 1px solid var(--taz-line); border-radius: var(--taz-r); overflow: hidden; background: #fff; color: var(--taz-ink); transition: border-color .3s var(--taz-ease), transform .3s var(--taz-ease), box-shadow .3s var(--taz-ease); }
.taz-postcard:hover { border-color: var(--taz-crimson); transform: translateY(-6px); box-shadow: 0 24px 46px -22px rgba(21,23,27,.24); color: var(--taz-ink); }
.taz-postcard__media { height: 190px; overflow: hidden; background: #EDEBE7; }
.taz-postcard__media img { width: 100%; height: 100%; object-fit: cover; }
.taz-postcard__ph { display: flex; align-items: center; justify-content: center; height: 100%; background: repeating-linear-gradient(52deg, rgba(21,23,27,.055) 0 7px, transparent 7px 17px); }
.taz-postcard__ph i { font-style: normal; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-mute); }
.taz-postcard__body { display: flex; flex-direction: column; gap: 12px; flex: 1; padding: 24px 26px 28px; }
.taz-postcard__body h3 { font-size: 19.5px; font-weight: 600; line-height: 1.32; letter-spacing: -.012em; margin: 0; }
.taz-postcard__excerpt { font-size: 14.5px; line-height: 1.7; color: var(--taz-graphite); margin: 0; }
.taz-postmeta { display: flex; align-items: center; gap: 10px; font-family: var(--taz-mono); font-size: 10.5px; letter-spacing: .13em; text-transform: uppercase; color: var(--taz-stone); margin: 0; }
.taz-postmeta i { width: 3px; height: 3px; border-radius: 50%; background: #CFCAC3; }
.taz-postmeta--light { color: var(--taz-crimson-lt); }
.taz-postmeta--light time { color: rgba(255,255,255,.5); }

.taz-joblist { display: flex; flex-direction: column; margin-top: 16px; }
.taz-joblist__row { display: grid; grid-template-columns: 1.1fr .9fr 140px; gap: 32px; align-items: center; padding: 32px 0; border-top: 1px solid var(--taz-line); color: var(--taz-ink); transition: background .24s ease, padding .24s ease; }
.taz-joblist__row:last-child { border-bottom: 1px solid var(--taz-line); }
.taz-joblist__row:hover { background: var(--taz-sand); padding-left: 20px; padding-right: 20px; color: var(--taz-ink); }
.taz-joblist__row h3 { font-size: 23px; font-weight: 600; line-height: 1.26; letter-spacing: -.014em; margin: 0 0 8px; }
.taz-joblist__meta { font-family: var(--taz-mono); font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--taz-faint); margin: 0; }
.taz-joblist__summary { font-size: 15px; line-height: 1.7; color: var(--taz-graphite); margin: 0; }
.taz-joblist .taz-cardlink { text-align: right; padding-top: 0; }

/* --------------------------------------------------------------- Service page */
.taz-service__body { display: grid; grid-template-columns: 1.35fr .65fr; gap: 72px; align-items: start; }
.taz-service__aside { position: sticky; top: 130px; background: var(--taz-sand); border: 1px solid var(--taz-line); border-radius: var(--taz-r); padding: 30px; }
.taz-service__aside h3 { font-size: 22px; font-weight: 600; line-height: 1.26; letter-spacing: -.014em; margin: 14px 0 10px; }
.taz-service__aside p { font-size: 14.5px; line-height: 1.7; color: var(--taz-graphite); }
.taz-service__aside .taz-btn { margin-bottom: 10px; }
.taz-service__area { border-top: 1px solid var(--taz-line); margin: 24px 0 0; padding-top: 20px; font-size: 13px; color: var(--taz-mute); }

.taz-featuregrid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; background: var(--taz-line); margin-top: 40px; }
.taz-featuregrid__cell { background: #fff; padding: 30px; }
.taz-featuregrid__cell h3 { font-size: 19px; font-weight: 600; line-height: 1.3; letter-spacing: -.012em; margin: 14px 0 10px; }
.taz-featuregrid__cell p { font-size: 15px; line-height: 1.7; color: var(--taz-graphite); margin: 0; }

.taz-included { display: grid; grid-template-columns: .8fr 1.2fr; gap: 72px; align-items: start; position: relative; }
.taz-checklist { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.taz-checklist li {
	display: flex; align-items: flex-start; gap: 13px; padding: 18px 20px;
	background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); border-radius: 11px;
	font-size: 15px; line-height: 1.55; color: rgba(255,255,255,.84);
	transition: background .24s ease, border-color .24s ease;
}
.taz-checklist li:hover { background: rgba(255,255,255,.07); border-color: rgba(232,85,111,.4); }

/* ------------------------------------------------------------------- Pricing */
.taz-offerings { display: grid; grid-template-columns: 1.25fr .95fr; gap: 24px; align-items: start; margin-top: 52px; }
.taz-offer { border-radius: 20px; padding: 40px; background: #fff; position: relative; overflow: hidden; }
.taz-offer--primary { border: 1px solid var(--taz-ink); }
.taz-offer--addon { border: 1px solid var(--taz-line); background: var(--taz-sand); padding: 34px; }
.taz-offer__rule { position: absolute; inset: 0 0 auto; height: 4px; background: linear-gradient(90deg, var(--taz-crimson), var(--taz-crimson-lt)); }
.taz-offer__eyebrow { display: flex; align-items: center; gap: 10px; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-crimson); margin: 0; }
.taz-offer__eyebrow i { width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.taz-offer__eyebrow--muted { color: var(--taz-mute); }
.taz-offer h3 { font-size: 29px; font-weight: 800; line-height: 1.16; letter-spacing: -.018em; margin: 16px 0 8px; }
.taz-offer--addon h3 { line-height: 1.18; letter-spacing: -.016em; }
.taz-offer--addon h3 { font-size: 24px; }
.taz-offer__body { font-size: 15.5px; line-height: 1.68; color: var(--taz-graphite); margin: 0 0 24px; }
.taz-offer--addon .taz-offer__body { font-size: 14.5px; }
.taz-offer__price { display: flex; align-items: baseline; gap: 10px; margin: 0; padding: 22px 0 8px; border-top: 1px solid #EFEDE9; }
.taz-offer--addon .taz-offer__price { border-color: var(--taz-line); }
.taz-offer__price small { font-family: var(--taz-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--taz-faint); }
.taz-offer__price strong { font-family: var(--taz-display); font-weight: 700; font-size: 46px; letter-spacing: -.02em; line-height: 1; }
.taz-offer__price--sm strong { font-size: 34px; }
.taz-offer__price span { font-size: 15px; color: var(--taz-graphite); }
.taz-offer__price--sm span { font-size: 13.5px; }
.taz-offer__note { font-size: 13px; color: var(--taz-faint); margin: 0 0 26px; }
.taz-offer__features { list-style: none; margin: 0 0 30px; padding: 0; display: grid; gap: 11px; }
.taz-offer__features--two { grid-template-columns: 1fr 1fr; gap: 11px 20px; }
.taz-offer__features li { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; line-height: 1.55; color: var(--taz-ink-soft); }
.taz-offer .taz-btn-row { margin-top: 0; }

.taz-chips { margin-top: 44px; border: 1px solid var(--taz-line); border-radius: 18px; padding: 34px 36px; background: #fff; }
.taz-section--dark .taz-chips, .taz-chips--flush { background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.1); }
.taz-section--dark .taz-chip { border-color: rgba(255,255,255,.16); color: rgba(255,255,255,.78); background: rgba(255,255,255,.04); }
.taz-chips__row { display: flex; flex-wrap: wrap; gap: 9px; }

/* ------------------------------------------------------------------- Contact */
.taz-hero--contact .taz-hero__inner { padding-bottom: 104px; }
/* The export sets the contact H1 at 56px so "Let's talk about your IT." holds
   one line in its 558px column; at the site-wide 58px it wraps. */
.taz-hero--contact .taz-h1 { font-size: clamp(34px, 5vw, 56px); }
.taz-contact { display: grid; grid-template-columns: 1fr 1fr; gap: 68px; align-items: start; position: relative; }
.taz-contact .taz-lede { max-width: 520px; }
.taz-contact__rows { display: flex; flex-direction: column; gap: 12px; margin-top: 38px; }
.taz-contact__row {
	display: flex; align-items: center; justify-content: space-between; gap: 20px;
	background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.1); border-radius: 13px;
	padding: 22px 24px; color: #fff; transition: border-color .24s ease, background .24s ease, transform .24s var(--taz-ease);
}
.taz-contact__row:hover { border-color: rgba(232,85,111,.5); background: rgba(255,255,255,.075); transform: translateX(6px); color: #fff; }
.taz-contact__row small { display: block; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-crimson-lt); margin-bottom: 7px; }
.taz-contact__row strong { display: block; font-family: var(--taz-display); font-weight: 600; font-size: 24px; letter-spacing: -.015em; }
.taz-contact__row i { color: rgba(255,255,255,.4); font-size: 20px; font-style: normal; }
.taz-contact__offices { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.taz-contact__offices a { background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.1); border-radius: 13px; padding: 22px 24px; color: rgba(255,255,255,.8); }
.taz-contact__offices a:hover { border-color: rgba(232,85,111,.5); background: rgba(255,255,255,.075); color: #fff; }
.taz-contact__offices small { display: block; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-crimson-lt); margin-bottom: 9px; }
.taz-contact__offices span { font-size: 15px; line-height: 1.6; }

/* The closing band's headline is the design's 50px in both builders. */
.taz-ctaband .taz-h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -.02em; }
.taz-ctaband .taz-sectionintro { max-width: none; }
.taz-ctaband .taz-lede { max-width: 560px; }
.taz-ctaband__inner { display: grid; grid-template-columns: 1.15fr .85fr; gap: 72px; align-items: center; position: relative; }

.taz-formcard { background: #fff; color: var(--taz-ink); border-radius: 18px; padding: 36px; box-shadow: 0 40px 80px -30px rgba(0,0,0,.5); }
.taz-formcard h3 { font-size: 26px; font-weight: 600; letter-spacing: -.016em; margin: 0 0 8px; }
.taz-formcard > p { font-size: 14.5px; line-height: 1.65; color: var(--taz-graphite); margin: 10px 0 26px; }
.taz-modal .taz-gf textarea { height: 64px; }
.taz-formcard__note { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 12.5px; line-height: 1.6; color: var(--taz-stone); text-align: center; margin: 12px 0 0; }
.taz-lock { width: 11px; height: 13px; border: 1.5px solid var(--taz-faint); border-radius: 2px; border-top-left-radius: 5px; border-top-right-radius: 5px; flex: none; }
.taz-formcard--glass { background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.11); box-shadow: none; padding: 30px; color: #fff; }
.taz-formcard--glass h3 { font-size: 20px; }
.taz-formcard--glass > p { font-size: 13.5px; line-height: 1.6; color: rgba(255,255,255,.52); margin: 8px 0 22px; }

.taz-newsletter { background: var(--taz-sand); border-top: 1px solid var(--taz-line); padding: 56px 0; }
.taz-newsletter__inner { display: flex; align-items: center; justify-content: space-between; gap: 44px; flex-wrap: wrap; }
.taz-newsletter h2 { font-size: 26px; font-weight: 700; letter-spacing: -.014em; margin: 0 0 8px; }
.taz-newsletter p { font-size: 15.5px; color: var(--taz-graphite); margin: 0; max-width: 56ch; }
.taz-newsletter__form { min-width: 380px; flex: 1; }

/* -------------------------------------------------------------------- Footer */
.taz-footer { background: var(--taz-ink); color: rgba(255,255,255,.66); padding: 76px 0 0; border-top: 1px solid rgba(255,255,255,.08); }
.taz-footer__grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.15fr; gap: 56px; }
.taz-footer__brand img { height: 62px; width: auto; }
.taz-footer__brand p { font-size: 14.5px; line-height: 1.72; color: rgba(255,255,255,.56); margin: 22px 0 0; max-width: 42ch; }
.taz-footer__social { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 24px; font-family: var(--taz-mono); font-size: 10.5px; letter-spacing: .15em; text-transform: uppercase; }
.taz-footer__social a { color: rgba(255,255,255,.58); }
.taz-footer__social a:hover { color: var(--taz-crimson-lt); }
.taz-footer h4 { font-family: var(--taz-mono); font-weight: 500; font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--taz-crimson-lt); margin: 0 0 20px; }
.taz-footer__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.taz-footer__list a { font-size: 14.5px; color: rgba(255,255,255,.66); }
.taz-footer__list a:hover { color: #fff; }
.taz-footer__office { margin-bottom: 18px; font-size: 14.5px; line-height: 1.7; }
.taz-footer__office strong { display: block; font-family: var(--taz-display); font-weight: 600; font-size: 15px; color: #fff; }
.taz-footer__office a { color: rgba(255,255,255,.6); }
.taz-footer__office a:hover { color: #fff; }
.taz-footer__phone { display: block; font-family: var(--taz-display); font-weight: 700; font-size: 18px; line-height: 1.7; letter-spacing: -.014em; color: #fff; }
.taz-footer__phone:hover { color: var(--taz-crimson-lt); }
.taz-footer__base { display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; margin-top: 60px; padding: 24px 0 30px; border-top: 1px solid rgba(255,255,255,.08); font-size: 13px; color: rgba(255,255,255,.58); }
.taz-footer__legal { list-style: none; margin: 0; padding: 0; display: flex; gap: 22px; }
.taz-footer__legal a { color: rgba(255,255,255,.58); font-size: 13px; }
.taz-footer__legal a:hover { color: #fff; }

/* ------------------------------------------------------------------ Article */
.taz-article__hero { margin: -48px 0 0; border-radius: 18px; overflow: hidden; border: 1px solid var(--taz-line); }
.taz-article__hero img { width: 100%; }
.taz-article__body { display: grid; grid-template-columns: 1fr 300px; gap: 72px; margin-top: 72px; align-items: start; padding-bottom: clamp(60px, 8vw, 100px); }
.taz-aside-card { position: sticky; top: 130px; border: 1px solid var(--taz-line); border-radius: 15px; padding: 26px; }
.taz-aside-card + .taz-aside-card { position: static; margin-top: 12px; }
.taz-aside-card__link { display: block; color: var(--taz-ink); margin-bottom: 16px; }
.taz-aside-card__link small { display: block; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .13em; text-transform: uppercase; color: var(--taz-faint); margin-bottom: 6px; }
.taz-aside-card__link span { font-family: var(--taz-display); font-weight: 500; font-size: 15.5px; line-height: 1.36; letter-spacing: -.008em; }
.taz-aside-card__link:hover span { color: var(--taz-crimson); }
.taz-aside-card--cta { background: var(--taz-sand); }
.taz-aside-card--cta h3 { font-size: 20px; font-weight: 600; letter-spacing: -.014em; margin: 0 0 10px; }
.taz-aside-card--cta p { font-size: 14.5px; line-height: 1.7; color: var(--taz-graphite); }
.taz-aside-card--cta .taz-btn { width: 100%; margin-bottom: 10px; }
.taz-aside-card--inflow { position: static; margin-top: 48px; padding: 34px; background: var(--taz-sand); }
.taz-aside-card--inflow h3 { font-size: 22px; }
.taz-aside-card--inflow .taz-btn { width: auto; margin-bottom: 0; }
.taz-aside-card--all { display: block; text-align: center; font-size: 14.5px; font-weight: 600; color: var(--taz-ink); padding: 16px; }
.taz-aside-card--all:hover { border-color: var(--taz-crimson); color: var(--taz-crimson); }
.taz-band--newsletter { margin-top: 56px; }
.taz-band__form { min-width: 380px; }
.taz-band__form .taz-gf form { display: flex; gap: 10px; align-items: stretch; }
.taz-band__form .taz-gf .gform_fields { display: flex; gap: 10px; flex: 1; }
.taz-band__form .taz-gf .taz-gfield { flex: 1; }
.taz-band__form .taz-gf .gform_footer { margin: 0; }
.taz-band__form .taz-gf__submit { width: auto; }

.taz-prose { font-size: 19px; line-height: 1.72; color: var(--taz-ink-soft); max-width: 74ch; }
.taz-prose--lead > p:first-child { font-size: 19px; font-weight: 400; }
.taz-prose h2 { font-size: clamp(24px, 2.4vw, 30px); font-weight: 600; line-height: 1.2; letter-spacing: -.016em; color: var(--taz-ink); margin: 44px 0 16px; }
.taz-prose h3 { font-size: 22px; font-weight: 600; letter-spacing: -.014em; margin: 34px 0 12px; }
.taz-prose ul, .taz-prose ol { padding-left: 22px; }
.taz-prose li { margin-bottom: 10px; }
.taz-prose li::marker { color: var(--taz-crimson); }
.taz-prose blockquote { margin: 36px 0; padding: 6px 0 6px 26px; border-left: 3px solid var(--taz-crimson); }
.taz-prose blockquote p { font-family: var(--taz-display); font-weight: 500; font-size: 22px; line-height: 1.5; letter-spacing: -.012em; color: var(--taz-ink); margin: 0; }
.taz-prose img { border-radius: 12px; }
.taz-prose a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }

.taz-results { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; background: var(--taz-line); border: 1px solid var(--taz-line); border-radius: var(--taz-r); overflow: hidden; }
.taz-results a { display: block; background: #fff; padding: 28px 30px; color: var(--taz-ink); }
.taz-results a:hover { background: var(--taz-sand); }
.taz-results small { font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-crimson); }
.taz-results h2 { font-size: 22px; font-weight: 600; letter-spacing: -.014em; margin: 8px 0 6px; }
.taz-results p { font-size: 15px; color: var(--taz-graphite); margin: 0; }

.taz-pagination { margin-top: 52px; display: flex; justify-content: center; }
.taz-pagination .nav-links { display: flex; gap: 8px; flex-wrap: wrap; }
.taz-pagination .page-numbers { display: grid; place-items: center; min-width: 42px; height: 42px; padding: 0 12px; border: 1px solid var(--taz-line-2); border-radius: 9px; color: var(--taz-ink); font-size: 14.5px; font-weight: 600; }
.taz-pagination .page-numbers:hover, .taz-pagination .current { border-color: var(--taz-crimson); color: var(--taz-crimson); }
.taz-pagination .current { background: var(--taz-crimson-wash); }

.taz-search { display: flex; gap: 10px; }
.taz-search input { flex: 1; border: 1px solid var(--taz-line-2); border-radius: 9px; padding: 14px 16px; font-size: 15px; }
.taz-searchwrap { max-width: 460px; margin-top: 26px; }
.taz-searchwrap .taz-search input { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.2); color: #fff; }
.taz-searchwrap .taz-search input::placeholder { color: rgba(255,255,255,.5); }


/* ------------------------------------------------------------------- Modals */
.taz-modal { position: fixed; inset: 0; z-index: 120; display: flex; align-items: flex-start; justify-content: center; overflow-y: auto; padding: 40px 20px; }
.taz-modal[hidden] { display: none; }
.taz-modal__backdrop { position: fixed; inset: 0; background: rgba(10,11,14,.76); backdrop-filter: blur(7px); }
.taz-motion-full .taz-modal__backdrop { animation: tazFade .22s ease both; }
.taz-modal__dialog { position: relative; width: 100%; margin: auto; background: #fff; border-radius: 22px; overflow: hidden; box-shadow: 0 60px 130px -30px rgba(0,0,0,.7); }
.taz-motion-full .taz-modal__dialog { animation: tazPop .34s var(--taz-ease) both; }
.taz-modal__dialog--split { max-width: 940px; display: grid; grid-template-columns: .85fr 1.15fr; }
.taz-modal__dialog--bio { max-width: 780px; display: grid; grid-template-columns: 280px 1fr; }
.taz-modal__dialog--wizard { max-width: 720px; }

.taz-modal__aside { position: relative; background: var(--taz-ink-deep); color: #fff; padding: 44px 38px 40px; overflow: hidden; isolation: isolate; }
.taz-modal__asideinner { position: relative; display: flex; flex-direction: column; height: 100%; }
.taz-modal__aside h2 { font-size: 32px; font-weight: 700; line-height: 1.1; letter-spacing: -.019em; margin: 18px 0 14px; }
.taz-modal__aside > .taz-modal__asideinner > p { font-size: 15px; line-height: 1.68; color: rgba(255,255,255,.62); margin: 0 0 26px; }
.taz-modal__points { list-style: none; margin: 0; padding: 0; display: grid; gap: 13px; }
.taz-modal__points li { display: flex; align-items: flex-start; gap: 11px; font-size: 14px; line-height: 1.55; color: rgba(255,255,255,.84); }
.taz-modal__points .taz-tick { width: 18px; height: 18px; margin-top: 1px; }
.taz-modal__points .taz-tick::after { width: 7px; height: 3.5px; }
.taz-modal__phone { margin-top: auto; padding-top: 30px; }
.taz-modal__phone small { display: block; font-family: var(--taz-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.4); margin-bottom: 9px; }
.taz-modal__phone a { display: inline-block; font-family: var(--taz-display); font-weight: 700; font-size: 26px; letter-spacing: -.018em; color: #fff; }
.taz-modal__phone a:hover { color: var(--taz-crimson-lt); }
.taz-modal__phone span { display: block; font-size: 12.5px; color: rgba(255,255,255,.42); margin-top: 7px; }

.taz-modal__body { padding: 40px; }
.taz-modal__body h3 { font-size: 21px; font-weight: 600; letter-spacing: -.015em; margin: 0 0 6px; }
.taz-modal__sub { font-size: 13.5px; line-height: 1.6; color: var(--taz-mute); margin: 0 0 22px; }

.taz-modal__close { position: absolute; top: 16px; right: 16px; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--taz-line); background: rgba(255,255,255,.94); color: var(--taz-graphite); font-size: 17px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: border-color .2s ease, color .2s ease; }
.taz-modal__close:hover { border-color: var(--taz-crimson); color: var(--taz-crimson); }
.taz-modal__close--light { border-color: rgba(255,255,255,.24); background: rgba(255,255,255,.1); color: #fff; }
.taz-modal__close--light:hover { border-color: #fff; background: rgba(255,255,255,.2); color: #fff; }

.taz-bio__photo { background: #EDEBE7 center top / cover no-repeat; min-height: 340px; }
.taz-bio__body { padding: 40px 40px 44px; display: flex; flex-direction: column; }
.taz-bio__body h2 { font-size: 30px; font-weight: 700; line-height: 1.14; letter-spacing: -.018em; margin: 0 0 18px; }
.taz-bio__text { font-size: 15.5px; line-height: 1.74; color: #4A5158; margin: 0; }
.taz-bio__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; padding-top: 24px; border-top: 1px solid #EFEDE9; }
.taz-bio__cta .taz-btn { font-size: 14px; padding: 13px 20px; }

/* ------------------------------------------------------------------- Wizard */
.taz-wizard__head { position: relative; background: var(--taz-ink-deep); padding: 26px 36px 22px; overflow: hidden; isolation: isolate; }
.taz-wizard__headinner { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.taz-wizard__head .taz-kicker { margin: 0; }
.taz-wizard__step { font-family: var(--taz-display); font-weight: 600; font-size: 19px; letter-spacing: -.014em; color: #fff; margin: 7px 0 0; }
.taz-steps { display: flex; align-items: center; gap: 7px; }
.taz-steps__bar { width: 26px; height: 4px; border-radius: 2px; background: #DAD6D0; transition: background .26s ease; }
.taz-steps__bar.is-current { background: var(--taz-crimson); }
.taz-steps__bar.is-done { background: var(--taz-crimson-lt); }

.taz-wizard__viewport { overflow: hidden; }
.taz-wizard__track { display: flex; width: 400%; transition: transform .48s var(--taz-ease); }
.taz-motion-off .taz-wizard__track { transition: none; }
.taz-wizard__panel { width: 25%; padding: 34px 36px 32px; }
.taz-wizard__panel h3 { font-size: 22px; font-weight: 600; letter-spacing: -.015em; margin: 0 0 6px; }
.taz-wizard__panel--done { text-align: center; padding: 48px 44px 44px; }
.taz-wizard__panel--done p { font-size: 15.5px; line-height: 1.68; color: var(--taz-graphite); margin: 0 auto 28px; max-width: 44ch; }
.taz-wizard__pair { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; border-top: 1px solid #EFEDE9; padding-top: 24px; }
.taz-wizard__pair label { display: block; font-size: 14.5px; font-weight: 600; margin-bottom: 9px; }
.taz-wizard__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 26px; padding-top: 22px; border-top: 1px solid #EFEDE9; }
.taz-wizard__foot--end { justify-content: flex-end; }
.taz-wizard__foot .taz-btn { font-size: 15px; padding: 15px 26px; }

.taz-dial { margin-bottom: 26px; }
.taz-dial__head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 10px; }
.taz-dial__head label { font-size: 14.5px; font-weight: 600; }
.taz-dial__head output { font-family: var(--taz-display); font-weight: 700; font-size: 26px; letter-spacing: -.016em; color: var(--taz-crimson); line-height: 1; }
.taz-dial input[type="range"] { width: 100%; accent-color: var(--taz-crimson); cursor: pointer; }
.taz-dial__scale { display: flex; justify-content: space-between; font-family: var(--taz-mono); font-size: 10px; color: var(--taz-faint); margin-top: 5px; }

.taz-stepper { display: flex; align-items: center; gap: 10px; }
.taz-stepper button { width: 36px; height: 36px; border-radius: 9px; border: 1px solid var(--taz-line-2); background: #fff; color: var(--taz-ink); font-size: 18px; line-height: 1; cursor: pointer; transition: border-color .18s ease, color .18s ease; }
.taz-stepper button:hover { border-color: var(--taz-crimson); color: var(--taz-crimson); }
.taz-stepper span { font-family: var(--taz-display); font-weight: 700; font-size: 20px; letter-spacing: -.014em; min-width: 62px; text-align: center; }
.taz-toggle { margin-top: 10px; font-size: 12.5px; font-weight: 600; padding: 8px 13px; border-radius: 8px; border: 1px solid var(--taz-line-2); background: #fff; color: var(--taz-graphite); cursor: pointer; transition: all .18s ease; }
.taz-toggle[aria-pressed="true"] { border-color: var(--taz-crimson); background: var(--taz-crimson-wash); color: var(--taz-crimson); }

.taz-choices { border: 0; margin: 0; padding: 0; display: grid; gap: 10px; }
.taz-choices legend { font-size: 14.5px; font-weight: 600; margin-bottom: 12px; padding: 0; }
.taz-choice { display: flex; align-items: center; gap: 13px; padding: 17px 18px; border: 1px solid var(--taz-line-2); border-radius: 11px; cursor: pointer; transition: border-color .18s ease, background .18s ease; }
.taz-choice input { position: absolute; opacity: 0; pointer-events: none; }
.taz-choice__radio { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--taz-line-2); display: grid; place-items: center; flex: none; transition: border-color .18s ease; }
.taz-choice__radio::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: transparent; transition: background .18s ease; }
.taz-choice:has(input:checked) { border-color: var(--taz-crimson); background: var(--taz-crimson-wash); }
.taz-choice:has(input:checked) .taz-choice__radio { border-color: var(--taz-crimson); }
.taz-choice:has(input:checked) .taz-choice__radio::after { background: var(--taz-crimson); }
.taz-choice:has(input:focus-visible) { outline: 2px solid var(--taz-crimson); outline-offset: 2px; }
.taz-choice__text strong { display: block; font-family: var(--taz-display); font-weight: 600; font-size: 15.5px; }
.taz-choice__text small { display: block; font-size: 13px; color: var(--taz-mute); margin-top: 3px; }
.taz-helper { font-size: 13px; line-height: 1.66; color: var(--taz-graphite); margin: 16px 0 0; background: var(--taz-sand); border: 1px solid var(--taz-line); border-radius: 10px; padding: 15px 16px; }

.taz-fields { display: grid; gap: 11px; }
.taz-fields__row { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.taz-fields__row--uneven { grid-template-columns: 1fr 1.4fr; }
.taz-field input, .taz-field select { width: 100%; border: 1px solid var(--taz-line-2); border-radius: 9px; padding: 14px 15px; font-size: 14.5px; color: var(--taz-ink); background: #fff; transition: border-color .18s ease; }
.taz-field input:focus, .taz-field select:focus { border-color: var(--taz-crimson); outline: none; }
.taz-field input[aria-invalid="true"], .taz-field select[aria-invalid="true"] { border-color: var(--taz-crimson); background: var(--taz-crimson-wash); }
.taz-check { display: flex; align-items: flex-start; gap: 11px; cursor: pointer; }
.taz-check input { width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--taz-crimson); flex: none; }
.taz-check span { font-size: 12.5px; line-height: 1.6; color: var(--taz-graphite); }
.taz-formerror { font-size: 13.5px; color: var(--taz-crimson); background: var(--taz-crimson-wash); border-radius: 9px; padding: 12px 14px; margin: 16px 0 0; }

.taz-done { display: grid; place-items: center; width: 62px; height: 62px; border-radius: 50%; background: var(--taz-crimson); margin: 0 auto 22px; }
.taz-done i { display: block; width: 21px; height: 11px; border-left: 3px solid #fff; border-bottom: 3px solid #fff; transform: rotate(-45deg) translateY(-3px); }
.taz-done__cta { display: grid; gap: 10px; max-width: 320px; margin: 0 auto; }

/* -------------------------------------------------------- Gravity Forms skin */
.taz-gf .gform_wrapper { margin: 0; }
.taz-gf .gform_wrapper form { margin: 0; }
.taz-gf .gform_fields { display: grid; gap: 11px; grid-template-columns: repeat(12, 1fr); }
.taz-gf .taz-gfield { grid-column: span 12; margin: 0; }
.taz-gf [class*="width-half"] { grid-column: span 6; }
.taz-gf [class*="width-third"] { grid-column: span 4; }
/* The design uses placeholder-only fields: keep labels for screen readers. */
.taz-gf .gfield_label { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; margin: 0; padding: 0; }
.taz-gf .gfield_required { display: none; }
.taz-gf [class*="type-honeypot"], .taz-gf .gform_validation_container { display: none !important; }
.taz-gf input[type="text"], .taz-gf input[type="email"], .taz-gf input[type="tel"],
.taz-gf input[type="url"], .taz-gf input[type="number"], .taz-gf select, .taz-gf textarea {
	width: 100%; border: 1px solid var(--taz-line-2); border-radius: 9px; padding: 14px 15px;
	font-family: var(--taz-sans); font-size: 14.5px; color: var(--taz-ink); background: #fff;
	transition: border-color .18s ease;
}
.taz-gf textarea { resize: vertical; height: 118px; min-height: 0; }
.taz-gf input:focus, .taz-gf select:focus, .taz-gf textarea:focus { border-color: var(--taz-crimson); outline: none; }
.taz-gf fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.taz-gf legend { padding: 0; }
.taz-gf .ginput_container_consent { display: flex; align-items: flex-start; gap: 11px; }
.taz-gf .ginput_container_consent input { width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--taz-crimson); flex: none; }
.taz-gf .gfield_consent_label { font-size: 12.5px; line-height: 1.6; color: var(--taz-graphite); }
.taz-gf .gform_footer { margin: 16px 0 0; padding: 0; }
.taz-gf__submit { width: 100%; }
.taz-gf .gfield_description { font-size: 12.5px; color: var(--taz-mute); margin-top: 6px; }
.taz-gf .gfield_validation_message, .taz-gf .validation_message {
	font-size: 12.5px; color: var(--taz-crimson); background: var(--taz-crimson-wash);
	border: 0; border-radius: 7px; padding: 8px 10px; margin-top: 6px;
}
.taz-gf .gform_validation_errors {
	border: 1px solid var(--taz-crimson); background: var(--taz-crimson-wash); border-radius: 10px;
	padding: 14px 16px; margin: 0 0 16px; box-shadow: none;
}
.taz-gf .gform_validation_errors h2 { font-size: 14.5px; color: var(--taz-crimson); margin: 0; }
.taz-gf .gform_confirmation_message { font-size: 15.5px; line-height: 1.7; color: var(--taz-ink-soft); }
.taz-gf .gform_ajax_spinner { display: inline-block; margin-left: 10px; }

.taz-formcard--glass .taz-gf .gfield_label { color: rgba(255,255,255,.6); }
.taz-formcard--glass .taz-gf .gform_fields { gap: 10px; }
.taz-formcard--glass .taz-gf input, .taz-formcard--glass .taz-gf select { padding: 13px 14px; font-size: 14px; }
.taz-formcard--glass .taz-gf textarea { padding: 13px 14px; font-size: 14px; height: 84px; }
.taz-formcard--glass .taz-gf__submit { padding: 15px; font-size: 14.5px; }
.taz-formcard--glass .taz-gf .gform_footer { margin-top: 14px; }
.taz-formcard--glass .taz-gf input, .taz-formcard--glass .taz-gf select, .taz-formcard--glass .taz-gf textarea {
	background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.13); color: #fff;
}
.taz-formcard--glass .taz-gf input::placeholder, .taz-formcard--glass .taz-gf textarea::placeholder { color: rgba(255,255,255,.45); }
.taz-formcard--glass .taz-gf input:focus, .taz-formcard--glass .taz-gf select:focus, .taz-formcard--glass .taz-gf textarea:focus { border-color: var(--taz-crimson-lt); }
.taz-formcard--glass .taz-gf .gfield_consent_label { color: rgba(255,255,255,.6); }
.taz-formcard--glass .taz-gf .gform_confirmation_message { color: rgba(255,255,255,.8); }

.taz-newsletter__form .taz-gf .gform_fields { grid-template-columns: 1fr 1fr; }
.taz-newsletter__form .taz-gf .taz-gfield { grid-column: span 1; }
.taz-newsletter__form .taz-gf .gform_footer { grid-column: span 2; margin-top: 11px; }

.taz-form-notice { border: 1px dashed var(--taz-crimson); background: var(--taz-crimson-wash); border-radius: 12px; padding: 20px 22px; }
.taz-form-notice strong { display: block; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-crimson); margin-bottom: 8px; }
.taz-form-notice p { font-size: 14px; line-height: 1.6; color: var(--taz-ink-soft); }
.taz-form-fallback { text-align: center; }
.taz-form-fallback p { font-size: 15px; color: var(--taz-graphite); }

/* --------------------------------------------------------------- Animations */
@keyframes tazDrift { 0%, 100% { transform: none; } 50% { transform: translate3d(-40px, 30px, 0) scale(1.08); } }
@keyframes tazMarquee { from { transform: none; } to { transform: translateX(-50%); } }
@keyframes tazPulse { 0%, 100% { opacity: .4; transform: scale(1); } 50% { opacity: 1; transform: scale(1.3); } }
@keyframes tazRing { from { transform: scale(.85); opacity: .55; } to { transform: scale(1.9); opacity: 0; } }
@keyframes tazFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes tazPop { from { opacity: 0; transform: translateY(22px) scale(.97); } to { opacity: 1; transform: none; } }

[data-reveal] { will-change: opacity, transform; }
.taz-js [data-reveal]:not(.is-in) { opacity: 0; transform: translateY(20px); }
.taz-js [data-reveal] { transition: opacity .76s var(--taz-ease), transform .76s var(--taz-ease); }
.taz-js [data-reveal].is-in { opacity: 1; transform: none; }
.taz-motion-off [data-reveal], .taz-motion-off [data-reveal]:not(.is-in) { opacity: 1 !important; transform: none !important; transition: none !important; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
	[data-reveal], [data-reveal]:not(.is-in) { opacity: 1 !important; transform: none !important; }
}

/* ---------------------------------------------------------------- Responsive */
@media (max-width: 1200px) {
	:root { --taz-gut: 32px; }
	.taz-mega__inner { grid-template-columns: 260px 1fr; gap: 32px; }
	.taz-mega__list, .taz-mega__sublist { grid-template-columns: repeat(2, 1fr); }
	.taz-split, .taz-service__body, .taz-included, .taz-contact, .taz-ctaband__inner, .taz-article__body { grid-template-columns: 1fr; gap: 48px; }
	.taz-split__sticky, .taz-service__aside, .taz-aside-card { position: static; }
	.taz-offerings { grid-template-columns: 1fr; }
	.taz-tiles { grid-template-columns: repeat(2, 1fr); }
	.taz-grid--4 { grid-template-columns: repeat(2, 1fr); }
	.taz-footer__grid { grid-template-columns: 1fr 1fr; gap: 40px; }
}

@media (max-width: 980px) {
	.taz-nav, .taz-header__cta .taz-btn { display: none; }
	.taz-burger { display: block; }
	.taz-mobile-nav { display: block; border-bottom: 1px solid var(--taz-line); background: #fff; }
	.taz-mobile-nav[hidden] { display: none; }
	.taz-mobile-nav__list, .taz-mobile-nav__list ul { list-style: none; margin: 0; padding: 0; }
	.taz-mobile-nav__list a { display: block; padding: 15px var(--taz-gut); font-size: 16px; font-weight: 500; color: var(--taz-ink); border-bottom: 1px solid var(--taz-line); }
	.taz-mobile-nav__list ul a { padding-left: calc(var(--taz-gut) + 18px); font-size: 14.5px; color: var(--taz-graphite); }
	.taz-mobile-nav__cta { display: grid; gap: 10px; padding: 20px var(--taz-gut) 26px; }
	.taz-hero__split { grid-template-columns: 1fr; gap: 40px; }
	.taz-stats { grid-template-columns: repeat(2, 1fr); }
	.taz-stats__cell:nth-child(2n) { border-right: 0; }
	.taz-grid--3, .taz-grid--4, .taz-featuregrid, .taz-checklist,
	.taz-cellgrid--2, .taz-cellgrid--3, .taz-offer__features--two,
	.taz-contact__offices, .taz-quotes__columns { grid-template-columns: 1fr; column-count: 1; }
	.taz-sectionhead, .taz-band, .taz-newsletter__inner { flex-direction: column; align-items: flex-start; gap: 24px; }
	.taz-joblist__row { grid-template-columns: 1fr; gap: 12px; }
	.taz-joblist .taz-cardlink { text-align: left; }
	.taz-modal__dialog--split, .taz-modal__dialog--bio { grid-template-columns: 1fr; }
	.taz-bio__photo { min-height: 240px; }
	.taz-newsletter__form { min-width: 0; width: 100%; }
	.taz-article__hero { margin-top: 0; }
}

@media (max-width: 640px) {
	:root { --taz-gut: 20px; }
	.taz-utility { display: none; }
	.taz-tiles, .taz-stats { grid-template-columns: 1fr; }
	.taz-stats__cell { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.09); padding: 24px 0 26px; }
	.taz-footer__grid { grid-template-columns: 1fr; }
	.taz-modal { padding: 16px; }
	.taz-modal__aside, .taz-modal__body, .taz-wizard__panel, .taz-offer, .taz-formcard { padding: 26px 22px; }
	.taz-wizard__pair, .taz-fields__row, .taz-fields__row--uneven { grid-template-columns: 1fr; }
	.taz-wizard__foot { flex-direction: column-reverse; }
	.taz-wizard__foot .taz-btn { width: 100%; }
	.taz-btn { width: 100%; }
	.taz-btn-row { flex-direction: column; align-items: stretch; }
	.taz-quote { width: 84vw; }
}

@media print {
	.taz-header, .taz-utility, .taz-footer, .taz-modal, .taz-progress, .taz-newsletter { display: none !important; }
	body { color: #000; }
	.taz-section { padding: 20px 0; }
}

.taz-modal__asideinner .taz-kicker { font-size: 9.5px; letter-spacing: .18em; }
.taz-section.taz-ctaband { padding: clamp(56px, 8vw, 104px) 0; }

/* ------------------------------------------------------------- Cursor ring */
@media (pointer: fine) {
	.taz-cursor {
		position: fixed; top: 0; left: 0; width: 34px; height: 34px;
		border: 1.5px solid var(--taz-crimson-lt); border-radius: 50%;
		pointer-events: none; z-index: 200; opacity: 0;
		transform: translate(-50%, -50%);
		transition: width .25s var(--taz-ease), height .25s var(--taz-ease), opacity .3s ease, border-color .25s ease, background .25s ease;
	}
	.taz-cursor.is-active { opacity: 1; }
	.taz-cursor.is-link { width: 54px; height: 54px; border-color: var(--taz-crimson); background: rgba(232,85,111,.08); }
	.taz-cursor.is-down { width: 24px; height: 24px; }
	.taz-motion-off .taz-cursor { display: none; }
}
@media (prefers-reduced-motion: reduce) { .taz-cursor { display: none; } }

/* The Elementor editor canvas never fires the reveal observer, so content must
   never depend on it there. */
body.elementor-editor-active [data-reveal],
body.elementor-editor-active [data-reveal]:not(.is-in) {
	opacity: 1 !important;
	transform: none !important;
}

/* ------------------------------------------ Container-ready section shells */
/* Atomic building: an Elementor container can be a designed section just by
   carrying the tone class. Where the old markup-based backdrop is present we
   leave it alone; otherwise the grid and glow are drawn as pseudo-elements. */
.taz-section--dark:not(:has(> .taz-hero__bgwrap)),
.taz-hero:not(:has(> .taz-hero__bgwrap)) {
	position: relative;
	isolation: isolate;
	overflow: clip;
}
.taz-section--dark:not(:has(> .taz-hero__bgwrap))::before,
.taz-hero:not(:has(> .taz-hero__bgwrap))::before {
	content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background-image:
		linear-gradient(rgba(255,255,255,.022) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255,255,255,.022) 1px, transparent 1px);
	background-size: 64px 64px;
}
.taz-section--dark:not(:has(> .taz-hero__bgwrap))::after,
.taz-hero:not(:has(> .taz-hero__bgwrap))::after {
	content: ""; position: absolute; z-index: -1; pointer-events: none;
	top: -280px; right: -150px; width: 900px; height: 900px; border-radius: 50%;
	background: radial-gradient(circle, rgba(168,0,47,.32) 0%, rgba(168,0,47,.05) 46%, transparent 70%);
}
.taz-motion-full .taz-section--dark:not(:has(> .taz-hero__bgwrap))::after { animation: tazDrift 23s ease-in-out infinite; }

/* Elementor containers used as section shells inherit the design rhythm. */
/* The export runs 104px section padding on every page; the homepage is the
   single exception at 122px. */
.e-con.e-con.taz-section, .elementor-section.taz-section { padding-top: clamp(72px, 9.5vw, 104px); padding-bottom: clamp(72px, 9.5vw, 104px); }
.taz-front .e-con.e-con.taz-section, .taz-front .elementor-section.taz-section { padding-top: clamp(72px, 9.5vw, 122px); padding-bottom: clamp(72px, 9.5vw, 122px); }
/* The homepage's query-driven sections (recent blogs, etc.) are PHP <section>
   elements, so they need the plain selector too or they drop to the 104px
   site default. */
.taz-front .taz-section { padding-top: clamp(72px, 9.5vw, 122px); padding-bottom: clamp(72px, 9.5vw, 122px); }
.e-con.e-con.taz-section--dark, .elementor-section.taz-section--dark { color: #fff; }


/* --------------------------------------------- Atom + container additions */
/* Standalone equivalents of items that used to live only inside a parent list. */
.taz-checkitem {
	display: flex; align-items: flex-start; gap: 13px;
	background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08);
	border-radius: 11px; padding: 18px 20px; font-size: 15px; line-height: 1.55;
	color: rgba(255,255,255,.82); transition: background .24s ease, border-color .24s ease;
}
.taz-checkitem:hover { background: rgba(255,255,255,.07); border-color: rgba(232,85,111,.4); }
.taz-officecard {
	display: block; background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.1);
	border-radius: 13px; padding: 22px 24px; color: rgba(255,255,255,.8);
	transition: background .24s ease, border-color .24s ease, color .24s ease;
}
.taz-officecard:hover { border-color: rgba(232,85,111,.5); background: rgba(255,255,255,.075); color: #fff; }
.taz-officecard small { display: block; font-family: var(--taz-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--taz-crimson-lt); margin-bottom: 9px; }
.taz-officecard span { font-size: 15px; line-height: 1.6; }


/* Muted kicker, used for the compact tiles header. */
.taz-kicker--muted { color: var(--taz-stone); letter-spacing: .16em; }

/* ---------------------------------------- Elementor container layout hosts */
/* Elementor emits a per-element rule shaped like
     .elementor-{page} .elementor-element.elementor-element-{id} { --display: flex }
   and its (0,3,0) specificity beats any `.e-con.e-con.taz-*` rule that only sets the
   `--display` custom property — which is why these layouts collapsed to a
   single stacked column. Setting the real `display` property sidesteps the
   variable altogether and still needs no !important.

   A boxed container wraps its children in `> .e-con-inner`, so that wrapper,
   not the container itself, has to carry the layout. Every container is either
   full or boxed, so each pair below lands on whichever element holds the
   children. Sizing stays in real properties too, so a per-element `--gap` or
   `--align-items` from Elementor cannot quietly undo the design. */

/* Grid layouts. */
.e-con.e-con.taz-grid.e-con-full, .e-con.e-con.taz-grid > .e-con-inner { display: grid; }
.e-con.e-con.taz-grid--3.e-con-full, .e-con.e-con.taz-grid--3 > .e-con-inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.e-con.e-con.taz-grid--4.e-con-full, .e-con.e-con.taz-grid--4 > .e-con-inner { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.e-con.e-con.taz-grid--gap.e-con-full, .e-con.e-con.taz-grid--gap > .e-con-inner { display: grid; gap: 22px; }
/* Card grids run 22px in the export everywhere EXCEPT the two service
   listings -- the services hub and the "related services" row -- which are
   20px. Those two templates opt in explicitly. */
.taz-grid--gap-sm { gap: 20px; }
.e-con.e-con.taz-cellgrid.e-con-full, .e-con.e-con.taz-cellgrid > .e-con-inner { display: grid; gap: 2px; }
/* The cell grid draws its dividers by showing --taz-line through a 2px gap.
   Elementor's default 20px gap turns that into a gray slab with cards adrift
   in it. The export carries no border or radius on this grid either. */
.e-con.e-con.taz-cellgrid { gap: 2px; border: 0; border-radius: 0; }
/* A grid stretches Elementor's widget wrapper to the row height, not the cell
   inside it. On a hairline grid a shorter cell then leaves the parent's gray
   showing as a slab under it (mission values, about links, service features);
   on a card grid it leaves ragged card bottoms. Fill the wrapper. */
.e-con.e-con.taz-cellgrid .elementor-widget-container > .taz-cell,
.e-con.e-con.taz-featuregrid .elementor-widget-container > .taz-featuregrid__cell,
.e-con.e-con.taz-grid .elementor-widget-container > .taz-card,
.e-con.e-con.taz-grid .elementor-widget-container > .taz-photocard,
.e-con.e-con.taz-grid .elementor-widget-container > .taz-postcard,
.e-con.e-con.taz-grid .elementor-widget-container > .taz-member,
.e-con.e-con.taz-offerings .elementor-widget-container > .taz-offer { height: 100%; box-sizing: border-box; }
.e-con.e-con.taz-tiles.e-con-full, .e-con.e-con.taz-tiles > .e-con-inner { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.e-con.e-con.taz-offerings.e-con-full, .e-con.e-con.taz-offerings > .e-con-inner { display: grid; grid-template-columns: 1.25fr .95fr; gap: 24px; align-items: start; }
.e-con.e-con.taz-split.e-con-full, .e-con.e-con.taz-split > .e-con-inner { display: grid; grid-template-columns: .82fr 1.18fr; gap: 76px; align-items: start; }
/* The export uses several split ratios, one per section type. Base .taz-split
   is the 41/59 @76 "numbered list" split; these are the other two. */
.e-con.e-con.taz-split--wide.e-con-full, .e-con.e-con.taz-split--wide > .e-con-inner { grid-template-columns: 45fr 55fr; gap: 76px; }
.e-con.e-con.taz-split--prose.e-con-full, .e-con.e-con.taz-split--prose > .e-con-inner { grid-template-columns: 40fr 60fr; gap: 72px; }
.taz-split--wide { grid-template-columns: 45fr 55fr; gap: 76px; }
.taz-split--prose { grid-template-columns: 40fr 60fr; gap: 72px; }
/* Service and compliance heroes sit at 55/45; the homepage hero is 53/47. */
.single-taz_service .e-con.e-con.taz-hero__split.e-con-full,
.single-taz_service .e-con.e-con.taz-hero__split > .e-con-inner { grid-template-columns: minmax(0, 55fr) minmax(0, 45fr); align-items: end; }
/* Service heroes bottom-align the fact panel with the buttons (align-items:
   end in the export); the homepage split stays centered. */
.e-con.e-con.taz-stats.e-con-full, .e-con.e-con.taz-stats > .e-con-inner { display: grid; grid-template-columns: repeat(4, 1fr); }
.e-con.e-con.taz-factpanel.e-con-full, .e-con.e-con.taz-factpanel > .e-con-inner { display: grid; gap: 1px; }
.e-con.e-con.taz-checklist.e-con-full, .e-con.e-con.taz-checklist > .e-con-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.e-con.e-con.taz-contact__offices.e-con-full, .e-con.e-con.taz-contact__offices > .e-con-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.e-con.e-con.taz-contact.e-con-full, .e-con.e-con.taz-contact > .e-con-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 68px; align-items: start; }
.e-con.e-con.taz-hero__split.e-con-full, .e-con.e-con.taz-hero__split > .e-con-inner { display: grid; grid-template-columns: minmax(0, 53fr) minmax(0, 47fr); gap: 68px; align-items: center; }
.e-con.e-con.taz-ctaband__inner.e-con-full, .e-con.e-con.taz-ctaband__inner > .e-con-inner { display: grid; grid-template-columns: 1.15fr .85fr; gap: 72px; align-items: center; }

/* Flex layouts. */
.e-con.e-con.taz-sectionhead.e-con-full, .e-con.e-con.taz-sectionhead > .e-con-inner { display: flex; flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 48px; flex-wrap: nowrap; }
.e-con.e-con.taz-btn-row.e-con-full, .e-con.e-con.taz-btn-row > .e-con-inner { display: flex; flex-direction: row; align-items: center; gap: 12px; flex-wrap: wrap; }
.e-con.e-con.taz-tileshead.e-con-full, .e-con.e-con.taz-tileshead > .e-con-inner { display: flex; flex-direction: row; align-items: baseline; justify-content: space-between; gap: 40px; }
.e-con.e-con.taz-accent.e-con-full, .e-con.e-con.taz-accent > .e-con-inner { display: flex; flex-direction: column; gap: 10px; }
.e-con.e-con.taz-contact__rows.e-con-full, .e-con.e-con.taz-contact__rows > .e-con-inner { display: flex; flex-direction: column; gap: 12px; }
.e-con.e-con.taz-numlist.e-con-full, .e-con.e-con.taz-numlist > .e-con-inner { display: flex; flex-direction: column; }

/* A section head is intro-left / button-right. Elementor wraps each child in
   its own widget div, and those wrappers happily shrink below the button's
   natural width, so the button spills past the container at middling widths.
   Pin the trailing child to its content and let the intro absorb the slack. */
.e-con.e-con.taz-sectionhead.e-con-full > .elementor-element,
.e-con.e-con.taz-sectionhead > .e-con-inner > .elementor-element,
.e-con.e-con.taz-tileshead.e-con-full > .elementor-element,
.e-con.e-con.taz-tileshead > .e-con-inner > .elementor-element { flex: 0 0 auto; }
/* Neither child grows: the design sizes both to content and lets
   space-between do the separating. The intro is capped at the design's 680px. */
.e-con.e-con.taz-sectionhead.e-con-full > .elementor-element:first-child,
.e-con.e-con.taz-sectionhead > .e-con-inner > .elementor-element:first-child { flex: 0 1 auto; min-width: 0; max-width: 680px; }
.e-con.e-con.taz-tileshead.e-con-full > .elementor-element:first-child,
.e-con.e-con.taz-tileshead > .e-con-inner > .elementor-element:first-child { flex: 0 1 auto; min-width: 0; }

/* ------------------------------------------ Shell geometry (content column) */
/* The design's column is a 1280px shell, centered, with a 48px gutter — text
   lands at 128px from each edge at 1440. Elementor instead gives every
   container its own 10px padding and zero margins, so the column drifted left
   and ran ~76px wider than the design, and the (non-Elementor) header no
   longer lined up with the body. Real properties again: Elementor sets these
   through --padding-* / --margin-* variables, which a plain declaration beats.

   Bands are full bleed; the column lives one level in. */
.e-con.e-con.taz-section, .e-con.e-con.taz-hero { padding-inline: 0; max-width: none; }
/* Inner-page heroes: the export stacks breadcrumb / pill / h1 / lede / buttons
   with the elements' own margins and nothing else. Elementor adds 10px block
   padding to the hero and to every nested container, plus a 20px gap between
   each widget -- five widgets, four gaps -- which made every inner hero about
   130px taller than the export. Scoped to the copy column so the button row,
   stats grid and homepage split keep their own gaps. */
.e-con.e-con.taz-hero { padding-block: 0; gap: 0; }
/* gap:0 matters even though the hero's children are full-width blocks: the
   zero-height backdrop widget still counts as a flex item, so Elementor's
   default 20px gap pushed every photo hero down by 20px. */
.e-con.e-con.taz-hero__inner > .e-con-inner { gap: 0; padding-block: 0; }
.e-con.e-con.taz-hero__copy, .e-con.e-con.taz-hero__copy > .e-con-inner { gap: 0; padding-block: 0; }
/* The split hero (homepage, service leaves) keeps its copy in an unnamed
   column; same treatment, but leave the fact panel's 1px hairline gap alone. */
.e-con.e-con.taz-hero__split > .e-con:not(.taz-factpanel),
.e-con.e-con.taz-hero__split > .e-con:not(.taz-factpanel) > .e-con-inner { gap: 0; padding-block: 0; }
/* Export: 36px between the hero lede and its buttons. */
.e-con.e-con.taz-hero__split .e-con.taz-btn-row { margin-top: 36px; }
/* Each button atom prints its own .taz-btn-row wrapper inside the widget; the
   row margin above must never land on that inner wrapper too (it inflated the
   homepage button row from 52px to 85px). */
.elementor-widget-container > .taz-btn-row { margin-top: 0; }
/* The export's inner-page kicker sits 20px above the h1 (the homepage pill
   keeps its own 24px). */
.taz-hero__copy .taz-kicker { margin-bottom: 20px; }
.taz-hero__copy .e-con.taz-btn-row { margin-top: 34px; }

/* Nothing inside a band adds a gutter of its own... */
.e-con.e-con.taz-section .e-con, .e-con.e-con.taz-hero .e-con { padding-inline: 0; }

/* ...except the wrapper that actually carries the column. A band is either
   boxed (its own inner is the column) or full with a boxed child (that child's
   inner is the column); a plain .taz-shell container covers the hero. */
.e-con.e-con.taz-section > .e-con-inner,
.e-con.e-con.taz-hero > .e-con-inner,
.e-con.e-con.taz-section > .e-con > .e-con-inner,
.e-con.e-con.taz-hero > .e-con > .e-con-inner,
.e-con.e-con.taz-shell.e-con-full {
	max-width: var(--taz-shell);
	margin-inline: auto;
	padding-inline: var(--taz-gut);
}

/* A .taz-shell container must not clamp its own outer box as well: Elementor
   zeroes its margins, so the clamped box sits hard against the left edge
   instead of centring. Let the inner wrapper do the centring. */
.e-con.e-con.taz-shell.e-con-boxed { max-width: none; padding-inline: 0; }

/* Breakpoints mirror the design's own (1200 / 980 / 640). These have to be
   restated here because the host selectors above outrank the plain `.taz-*`
   responsive rules they would otherwise inherit. */
@media (max-width: 1200px) {
	.e-con.e-con.taz-split.e-con-full, .e-con.e-con.taz-split > .e-con-inner,
	.e-con.e-con.taz-contact.e-con-full, .e-con.e-con.taz-contact > .e-con-inner,
	.e-con.e-con.taz-ctaband__inner.e-con-full, .e-con.e-con.taz-ctaband__inner > .e-con-inner,
	.e-con.e-con.taz-offerings.e-con-full, .e-con.e-con.taz-offerings > .e-con-inner { grid-template-columns: 1fr; }
	.e-con.e-con.taz-grid--4.e-con-full, .e-con.e-con.taz-grid--4 > .e-con-inner,
	.e-con.e-con.taz-tiles.e-con-full, .e-con.e-con.taz-tiles > .e-con-inner { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 980px) {
	.e-con.e-con.taz-hero__split.e-con-full, .e-con.e-con.taz-hero__split > .e-con-inner { grid-template-columns: 1fr; gap: 40px; }
	.e-con.e-con.taz-grid--3.e-con-full, .e-con.e-con.taz-grid--3 > .e-con-inner,
	.e-con.e-con.taz-grid--4.e-con-full, .e-con.e-con.taz-grid--4 > .e-con-inner,
	.e-con.e-con.taz-checklist.e-con-full, .e-con.e-con.taz-checklist > .e-con-inner,
	.e-con.e-con.taz-cellgrid--2.e-con-full, .e-con.e-con.taz-cellgrid--2 > .e-con-inner,
	.e-con.e-con.taz-cellgrid--3.e-con-full, .e-con.e-con.taz-cellgrid--3 > .e-con-inner,
	.e-con.e-con.taz-contact__offices.e-con-full, .e-con.e-con.taz-contact__offices > .e-con-inner { grid-template-columns: 1fr; }
	.e-con.e-con.taz-stats.e-con-full, .e-con.e-con.taz-stats > .e-con-inner { grid-template-columns: repeat(2, 1fr); }
	.e-con.e-con.taz-sectionhead.e-con-full, .e-con.e-con.taz-sectionhead > .e-con-inner { flex-direction: column; align-items: flex-start; gap: 24px; }
	.e-con.e-con.taz-tileshead.e-con-full, .e-con.e-con.taz-tileshead > .e-con-inner { flex-direction: column; align-items: flex-start; gap: 16px; }
}
/* ---------------------------------------------- Mobile + tablet, containers
   The export is a desktop mockup (it reports a 1240px viewport even at phone
   size), so the small-screen layout is ours to get right. Every rule here is
   restated at container specificity because Elementor's own container CSS and
   several desktop rules above (service hero split, split variants, per-page
   copy widths) would otherwise outrank the plain breakpoint rules. */

/* The per-page copy width (720-800px) is an Elementor width setting; below
   that width it must behave as a cap, never a floor. */
.e-con.e-con.taz-hero__copy { max-width: 100%; }

@media (max-width: 980px) {
	/* Service + compliance heroes: the desktop 55/45 rule is (0,5,0) and beat
	   the generic 1-column rule, leaving a 162px copy column on phones. */
	.single-taz_service .e-con.e-con.taz-hero__split.e-con-full,
	.single-taz_service .e-con.e-con.taz-hero__split > .e-con-inner { grid-template-columns: 1fr; align-items: start; gap: 36px; }
	.e-con.e-con.taz-hero__split .e-con.e-con.taz-factpanel { width: 100%; }
	/* Two-up on tablet for the cell, card and chip grids; one-up comes at 640. */
	.e-con.e-con.taz-grid--3.e-con-full, .e-con.e-con.taz-grid--3 > .e-con-inner,
	.e-con.e-con.taz-cellgrid--2.e-con-full, .e-con.e-con.taz-cellgrid--2 > .e-con-inner,
	.e-con.e-con.taz-cellgrid--3.e-con-full, .e-con.e-con.taz-cellgrid--3 > .e-con-inner,
	.e-con.e-con.taz-checklist.e-con-full, .e-con.e-con.taz-checklist > .e-con-inner,
	.e-con.e-con.taz-contact__offices.e-con-full, .e-con.e-con.taz-contact__offices > .e-con-inner { grid-template-columns: repeat(2, 1fr); }
	.taz-grid--3:not(.e-con), .taz-cellgrid--2:not(.e-con), .taz-cellgrid--3:not(.e-con) { grid-template-columns: repeat(2, 1fr); }
	/* Utility bar: keep the socials and service-desk number, drop the two
	   street addresses that wrap onto a second line. */
	.taz-utility__place { display: none; }
}

@media (max-width: 640px) {
	.e-con.e-con.taz-grid--3.e-con-full, .e-con.e-con.taz-grid--3 > .e-con-inner,
	.e-con.e-con.taz-grid--4.e-con-full, .e-con.e-con.taz-grid--4 > .e-con-inner,
	.e-con.e-con.taz-cellgrid--2.e-con-full, .e-con.e-con.taz-cellgrid--2 > .e-con-inner,
	.e-con.e-con.taz-cellgrid--3.e-con-full, .e-con.e-con.taz-cellgrid--3 > .e-con-inner,
	.e-con.e-con.taz-checklist.e-con-full, .e-con.e-con.taz-checklist > .e-con-inner,
	.e-con.e-con.taz-contact__offices.e-con-full, .e-con.e-con.taz-contact__offices > .e-con-inner,
	.e-con.e-con.taz-featuregrid.e-con-full, .e-con.e-con.taz-featuregrid > .e-con-inner { grid-template-columns: 1fr; }
	.taz-grid--3:not(.e-con), .taz-cellgrid--2:not(.e-con), .taz-cellgrid--3:not(.e-con) { grid-template-columns: 1fr; }
	/* Four stacked stats is a screen and a half; 2x2 reads as one block. */
	.e-con.e-con.taz-stats.e-con-full, .e-con.e-con.taz-stats > .e-con-inner { grid-template-columns: repeat(2, 1fr); }
	.taz-stats__cell { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.09); padding: 22px 0 24px; }
	.taz-stats__cell:nth-child(odd) { padding-right: 16px; border-right: 1px solid rgba(255,255,255,.09); }
	.taz-stats__cell:nth-child(even) { padding-left: 16px; }
	.taz-stats__cell:nth-last-child(-n+2) { border-bottom: 0; }
	/* Eight capability tiles: two-up with a tighter pad, not eight tall cards. */
	.e-con.e-con.taz-tiles.e-con-full, .e-con.e-con.taz-tiles > .e-con-inner { grid-template-columns: repeat(2, 1fr); gap: 10px; }
	.taz-tile { padding: 16px; }
	/* Stacked, full-width buttons. The container rule above is (0,4,0), so the
	   plain .taz-btn-row breakpoint rule never won here. */
	.e-con.e-con.taz-btn-row.e-con-full, .e-con.e-con.taz-btn-row > .e-con-inner { flex-direction: column; align-items: stretch; }
	.e-con.e-con.taz-btn-row > .elementor-element, .e-con.e-con.taz-btn-row > .e-con-inner > .elementor-element { width: 100%; }
	.e-con.e-con.taz-btn-row .elementor-widget-container > .taz-btn-row { display: block; }
	.e-con.e-con.taz-btn-row .taz-btn { display: flex; width: 100%; }
	/* Fact panel rows: value above label once the row is narrow. */
	.taz-factpanel__row { flex-direction: column; align-items: flex-start; gap: 4px; }
	.taz-factpanel__row span { text-align: left; }
}

/* ------------------------------------------- Centered sections / narrow column */
/* Elementor containers reset text-align and strip the auto margins a theme
   max-width relies on, so a centered band rendered left-aligned at the very
   edge of the shell. Restate both on the container itself. */
.e-con.e-con.taz-section--center,
.e-con.e-con.taz-section--center .e-con,
.e-con.e-con.taz-section--center .elementor-widget-container { text-align: center; }
.e-con.e-con.taz-narrow.e-con-boxed { max-width: none; }
/* Matched one level deeper than the generic shell rule above, which is four
   classes and would otherwise win the column back to the full 1280. */
.e-con.e-con.taz-section > .e-con.e-con.taz-narrow > .e-con-inner,
.e-con.e-con.taz-hero > .e-con.e-con.taz-narrow > .e-con-inner,
.e-con.e-con.taz-section .e-con.e-con.taz-narrow.e-con-full,
.e-con.e-con.taz-narrow.e-con-full {
	max-width: calc(720px + 2 * var(--taz-gut));
	margin-inline: auto;
	padding-inline: var(--taz-gut);
}

/* Centered bands run their own heading tracking, a size-down lede and a centered
   button row in the design. */
.taz-section--center .taz-h2 { letter-spacing: -.02em; line-height: 1.08; }
.taz-section--center .taz-lede { font-size: 17px; }
.taz-section--dark.taz-section--center .taz-lede { color: rgba(255,255,255,.62); }
.taz-section--center .taz-btn { font-size: 16px; }
.e-con.e-con.taz-section--center .e-con.e-con.taz-btn-row,
.taz-section--center .taz-btn-row { justify-content: center; }

/* The mesh canvas is absolutely positioned to fill the hero it sits in. As an
   Elementor widget it gained a wrapper, and Elementor makes every widget
   `position: relative`, so the canvas was resolving against a zero-height
   widget box and painted nothing. Take the wrapper out of the positioning
   chain so the hero is the containing block again, as it is in the partial. */
.taz-hero .elementor-widget-taz_mesh,
.taz-section .elementor-widget-taz_mesh,
.taz-hero .elementor-widget-taz_hero_backdrop { position: static; }
/* The backdrop's absolute inset:0 wrap otherwise resolves against Elementor's
   position:relative widget box (zero height) instead of the hero, and the
   photo collapses to nothing. Same failure the mesh had. */

/* ------------------------------------------------ Hero effects from the export */
/* Three motion details from the design that the atomic rebuild had lost: a
   second, counter-drifting glow behind the hero; a scan line sweeping down it;
   and a sheen crossing the hero's primary button. All decorative, all disabled
   with the rest of the motion under TAZ Settings → Motion. */
@keyframes tazDrift2 {
	0%, 100% { transform: translate3d(0, 0, 0) scale(1.05); }
	50%      { transform: translate3d(50px, -24px, 0) scale(1); }
}
@keyframes tazScan {
	0%   { transform: translateY(-100%); }
	100% { transform: translateY(1200%); }
}
@keyframes tazSheen {
	0%   { transform: translateX(-120%) skewX(-18deg); }
	100% { transform: translateX(320%) skewX(-18deg); }
}

.taz-heroglow2 {
	position: absolute; left: -177px; top: 40%;
	width: 735px; height: 735px; border-radius: 50%; z-index: -1; pointer-events: none;
	background: radial-gradient(circle, rgba(232,85,111,.13) 0%, rgba(232,85,111,0) 68%);
}
.taz-motion-full .taz-heroglow2 { animation: tazDrift2 26s ease-in-out infinite; }

.taz-scanline {
	position: absolute; left: 0; right: 0; top: 0; height: 2px; z-index: -1; pointer-events: none;
	background: linear-gradient(90deg, rgba(232,85,111,0) 0%, rgba(232,85,111,.42) 50%, rgba(232,85,111,0) 100%);
}
.taz-motion-full .taz-scanline { animation: tazScan 9s linear infinite; }

/* The sheen rides the home hero's primary button only, as in the design. */
.taz-hero--tall .taz-btn--light { position: relative; overflow: hidden; }
.taz-hero--tall .taz-btn--light::after {
	content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 42%;
	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.55) 50%, rgba(255,255,255,0) 100%);
	pointer-events: none;
}
.taz-motion-full .taz-hero--tall .taz-btn--light::after { animation: tazSheen 3.6s ease-in-out infinite; }
.taz-motion-off .taz-hero--tall .taz-btn--light::after { display: none; }

/* Elementor makes every widget a positioning context; these decorations must
   resolve against the hero, exactly as the mesh canvas does. */
.e-con.e-con.taz-split__sticky { position: sticky; top: 130px; }

/* ------------------------------------------------------- Partner ecosystem */
.taz-partners { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.08); border-radius: 16px; overflow: hidden; margin-top: 48px; }
.taz-partner { background: var(--taz-ink); padding: 30px 26px 32px; min-height: 132px; display: flex; flex-direction: column; justify-content: space-between; gap: 16px; transition: background .26s ease; }
.taz-partner:hover { background: #1D2026; }
.taz-partner__name { font-family: var(--taz-display); font-weight: 800; font-size: 21px; letter-spacing: -.014em; color: #fff; }
.taz-partner__tier { display: block; font-family: var(--taz-mono); font-weight: 600; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #FF7189; }
.taz-partner__area { display: block; font-size: 13px; line-height: 1.5; color: rgba(255,255,255,.54); margin-top: 7px; }
.taz-partners__note { font-size: 13.5px; color: rgba(255,255,255,.42); margin: 22px 0 0; }
@media (max-width: 1200px) { .taz-partners { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .taz-partners { grid-template-columns: 1fr; } }

/* The grid is its own layout host when built from an Elementor container. */
.e-con.e-con.taz-partners.e-con-full, .e-con.e-con.taz-partners > .e-con-inner { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; }
@media (max-width: 1200px) { .e-con.e-con.taz-partners.e-con-full, .e-con.e-con.taz-partners > .e-con-inner { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .e-con.e-con.taz-partners.e-con-full, .e-con.e-con.taz-partners > .e-con-inner { grid-template-columns: 1fr; } }

/* ------------------------------------------- Service layouts as containers */
/* Same host pattern as the other layouts: the doubled .e-con wins over
   Elementor's own container rules, and a boxed container lays out on its
   inner wrapper rather than itself. */
.e-con.e-con.taz-service__body.e-con-full, .e-con.e-con.taz-service__body > .e-con-inner {
	display: grid; grid-template-columns: 1.35fr .65fr; gap: 72px; align-items: start;
}
.e-con.e-con.taz-featuregrid.e-con-full, .e-con.e-con.taz-featuregrid > .e-con-inner {
	display: grid; grid-template-columns: 1fr 1fr; gap: 2px; background: var(--taz-line); margin-top: 40px;
}
.e-con.e-con.taz-included.e-con-full, .e-con.e-con.taz-included > .e-con-inner {
	display: grid; grid-template-columns: .8fr 1.2fr; gap: 72px; align-items: start;
}
.e-con.e-con.taz-service__aside { position: sticky; top: 130px; }
@media (max-width: 1200px) {
	.e-con.e-con.taz-service__body.e-con-full, .e-con.e-con.taz-service__body > .e-con-inner,
	.e-con.e-con.taz-included.e-con-full, .e-con.e-con.taz-included > .e-con-inner { grid-template-columns: 1fr; gap: 48px; }
	.e-con.e-con.taz-service__aside { position: static; }
}
@media (max-width: 640px) {
	.e-con.e-con.taz-featuregrid.e-con-full, .e-con.e-con.taz-featuregrid > .e-con-inner { grid-template-columns: 1fr; }
}

/* ------------------------------ Section modifiers, at container specificity */
/* The base section padding rule is written as .e-con.e-con.taz-section so it
   outranks Elementor's own container CSS. That also puts it above every plain
   .taz-section--modifier, which silently killed them. Restate the modifiers at
   matching specificity. */
.e-con.e-con.taz-section--attached { padding-top: 0; margin-top: -56px; border-top: 0; }
.e-con.e-con.taz-section.taz-ctaband { padding-top: 104px; padding-bottom: 104px; }
.e-con.e-con.taz-hero--compact .taz-hero__inner { padding-bottom: 80px; }
.e-con.e-con.taz-hero--contact .taz-hero__inner { padding-bottom: 104px; }

/* The hero node field. Restored 2026-09-14 at the client's request — without
   the inbound "shooting star" streaks the earlier revision carried. */
.taz-mesh { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
@media (max-width: 860px) { .taz-mesh { display: none; } }

/* ------------------------- Container box properties, at container specificity
   Elementor's own container CSS sets `padding` (default 10px 0) and
   `border-radius` on every .e-con, and it loads after this stylesheet, so a
   plain .taz-* rule loses the tie. Layout containers are pure structure in the
   design — zero padding, no corner radius — and the few that ARE cards need
   their box restated here or Elementor flattens them. Same doubling trick as
   the layout hosts above. */
.e-con.e-con.taz-accent, .e-con.e-con.taz-btn-row, .e-con.e-con.taz-cellgrid,
.e-con.e-con.taz-checklist, .e-con.e-con.taz-contact, .e-con.e-con.taz-contact__offices,
.e-con.e-con.taz-contact__rows, .e-con.e-con.taz-ctaband__inner, .e-con.e-con.taz-featuregrid,
.e-con.e-con.taz-grid, .e-con.e-con.taz-grid--3, .e-con.e-con.taz-grid--4,
.e-con.e-con.taz-grid--gap, .e-con.e-con.taz-hero__split, .e-con.e-con.taz-included,
.e-con.e-con.taz-numlist, .e-con.e-con.taz-offerings, .e-con.e-con.taz-partners,
.e-con.e-con.taz-sectionhead, .e-con.e-con.taz-service__body, .e-con.e-con.taz-split,
.e-con.e-con.taz-split__sticky, .e-con.e-con.taz-stats, .e-con.e-con.taz-tiles,
.e-con.e-con.taz-tileshead { padding: 0; }

/* The fact panel and the feature grid draw their hairlines with a colored
   parent showing through a 1-2px gap, so any padding on the parent leaks out
   as a bar along the top and bottom edges. */
.e-con.e-con.taz-factpanel {
	padding: 0; border: 1px solid rgba(255,255,255,.08); border-radius: 14px;
	overflow: hidden; background: rgba(255,255,255,.08);
}
.taz-featuregrid__cell { padding: 30px 30px 32px; }

/* The service aside is a card, not a flex stack: the design spaces its
   contents with the children's own margins. */
.e-con.e-con.taz-service__aside, .e-con.e-con.taz-service__aside > .e-con-inner {
	display: block;
}
/* The shell rule above zeroes padding-inline on every .e-con inside a section
   at (0,4,0), so the card has to out-specify that, not just follow it. */
.e-con.e-con.taz-section .e-con.e-con.taz-service__aside,
.e-con.e-con.taz-service__aside {
	background: var(--taz-sand); border: 1px solid var(--taz-line);
	border-radius: var(--taz-r); padding: 30px;
}
.e-con.e-con.taz-service__aside .taz-btn-row { display: block; margin-top: 0; }
.e-con.e-con.taz-service__aside .taz-btn { display: flex; width: 100%; padding: 15px; font-size: 14.5px; margin-bottom: 0; }
.e-con.e-con.taz-service__aside .taz-btn--ghost { padding: 14px; }
/* Elementor wraps every widget, so the two button rows are never DOM siblings
   -- the stacking margin has to hang off the widget wrappers instead. */
.e-con.e-con.taz-service__aside .elementor-widget-taz_button + .elementor-widget-taz_button .taz-btn-row { margin-top: 10px; }
/* In the card the kicker sits tight against the heading; the h3's own 14px
   top margin is the whole gap. */
.e-con.e-con.taz-service__aside .taz-kicker { margin-bottom: 0; font-size: 10.5px; line-height: normal; }
/* .taz-service__aside p sets 14.5px at (0,2,0), which outranks the area
   footnote's own rule -- restate it here. */
.e-con.e-con.taz-service__aside .taz-service__area { font-size: 13px; }

/* Service singles run a tighter vertical rhythm than the marketing pages:
   104px on the light bands, 100px on the dark "what's included" band. */
/* The related/child service grids are still PHP-rendered <section> elements
   rather than Elementor containers, so they need the plain selector too. */
.single-taz_service .taz-section,
.single-taz_service .e-con.e-con.taz-section { padding-block: 104px; }
.single-taz_service .taz-section--dark,
.single-taz_service .e-con.e-con.taz-section--dark { padding-block: 100px; }

/* ---------------------------------------- Sticky columns release below 1200
   Kept at the END of the file on purpose: the desktop sticky rule
   (.e-con.e-con.taz-split__sticky, line ~1355) is container-specificity and
   media queries add none, so a breakpoint rule written earlier in the file
   loses to it. Once the split is a single column the intro must scroll with
   the page, or it pins at 130px and rides over the list below it. */
@media (max-width: 1200px) {
	.e-con.e-con.e-con.taz-split__sticky,
	.e-con.e-con.e-con.taz-service__aside,
	.taz-split__sticky, .taz-service__aside, .taz-aside-card { position: static; top: auto; }
}

/* Careers with nothing open: same row furniture, but it is a panel, not a
   link -- so no hover lift, and the mailto sits where "Apply" would. */
.taz-joblist__row--static { cursor: default; }
.taz-joblist__row--static:hover { transform: none; box-shadow: none; }
.taz-joblist__row--static .taz-cardlink { align-self: center; }

/* ------------------------------------------------------------ Consent bar */
.taz-consent { position: fixed; inset: auto 0 0 0; z-index: 90; padding: 0 var(--taz-gut) calc(16px + env(safe-area-inset-bottom)); transform: translateY(24px); opacity: 0; transition: transform .32s var(--taz-ease), opacity .32s ease; }
.taz-consent.is-in { transform: none; opacity: 1; }
.taz-consent__inner { max-width: 1280px; margin: 0 auto; display: flex; align-items: center; gap: 24px; background: var(--taz-ink); color: #fff; border: 1px solid rgba(255,255,255,.1); border-radius: 14px; padding: 18px 22px; box-shadow: 0 24px 60px rgba(0,0,0,.35); }
.taz-consent__text { margin: 0; font-size: 14px; line-height: 1.6; color: rgba(255,255,255,.78); }
.taz-consent__text a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.taz-consent__actions { display: flex; gap: 10px; flex: none; }
.taz-consent__btn { padding: 12px 20px; font-size: 14px; width: auto; }
.taz-consent .taz-btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.28); }
@media (max-width: 640px) {
	.taz-consent__inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 18px; }
	.taz-consent__actions .taz-btn { flex: 1; }
}

/* TAZ — Photo atom (wide team shot etc.). Radius matches the hero media card. */
.taz-photo { margin: 0; }
.taz-photo .taz-photo__img { display: block; width: 100%; height: auto; border-radius: 18px; object-fit: cover; }
.elementor .taz-photo--wide .taz-photo__img { aspect-ratio: 21 / 9; height: auto; }
.elementor .taz-photo--landscape .taz-photo__img { aspect-ratio: 3 / 2; height: auto; }
.taz-photo figcaption { margin-top: 14px; font-family: var(--taz-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; opacity: .62; }
.taz-hero .taz-photo { margin-top: 56px; }
@media (max-width: 640px) {
	.elementor .taz-photo--wide .taz-photo__img { aspect-ratio: 3 / 2; }
	.taz-photo .taz-photo__img { border-radius: 14px; }
	.taz-hero .taz-photo { margin-top: 40px; }
}

/* Blog topic links (All articles / Case Studies / Resources). Pill shape matches the pagination. */
.taz-topics { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 44px; }
.taz-topics__link {
	display: inline-flex; align-items: center; gap: 9px; padding: 10px 16px;
	border: 1px solid var(--taz-line-2); border-radius: 9px; background: #fff;
	color: var(--taz-ink); font-size: 14.5px; font-weight: 600; line-height: 1.2;
	transition: border-color .2s ease, background-color .2s ease, color .2s ease;
}
.taz-topics__link small { font-family: var(--taz-mono); font-size: 11px; font-weight: 500; opacity: .55; }
.taz-topics__link:hover { border-color: var(--taz-ink); }
.taz-topics__link.is-active { background: var(--taz-ink); border-color: var(--taz-ink); color: #fff; }
@media (max-width: 640px) { .taz-topics { margin-bottom: 32px; } .taz-topics__link { padding: 9px 13px; font-size: 14px; } }
