/* Tagency — component stylesheet. Loads after tokens.css. Every value is a token var; fallbacks only guard a missing tokens.css. */
:root {
  --tg-ease: var(--ease-tag, cubic-bezier(.2,.7,.1,1));
  --tg-fs-display: 112px; --tg-fs-statement: 56px; --tg-fs-quote: 44px; --tg-fs-case: 32px; --tg-fs-numeral: 64px;
  --tg-fs-h1: 64px; --tg-fs-h2: 44px; --tg-fs-h3: 28px; --tg-fs-body-l: 20px; --tg-fs-body: 17px; --tg-fs-stat: 96px;
  --tg-section-y: 144px; --tg-margin: var(--page-margin, 64px); --tg-gutter: var(--gutter, 24px);
  --tg-header-h: var(--header-h, 88px); --tg-control-h: var(--control-h, 52px);
}
@media (max-width: 1023px) {
  :root { --tg-fs-display: 80px; --tg-fs-statement: 44px; --tg-fs-h1: 52px; --tg-fs-h2: 38px; --tg-section-y: 96px; --tg-margin: 40px; --tg-fs-stat: 80px; }
}
@media (max-width: 767px) {
  :root {
    --tg-fs-display: 52px; --tg-fs-statement: 34px; --tg-fs-quote: 28px; --tg-fs-case: 24px; --tg-fs-numeral: 44px;
    --tg-fs-h1: 40px; --tg-fs-h2: 32px; --tg-fs-h3: 22px; --tg-fs-body-l: 18px; --tg-fs-body: 16px; --tg-fs-stat: 64px;
    --tg-section-y: 68px; --tg-margin: var(--page-margin-mobile, 20px); --tg-gutter: var(--gutter-mobile, 16px);
    --tg-header-h: 72px; --tg-control-h: var(--control-h-mobile, 48px);
  }
}
/* type classes from tokens.css follow the responsive sizes */
.type-signature, .type-signature-key, .type-display { font-size: var(--tg-fs-display); }
.type-statement { font-size: var(--tg-fs-statement); }
.type-quote { font-size: var(--tg-fs-quote); }
.type-case-title { font-size: var(--tg-fs-case); }
.type-numeral { font-size: var(--tg-fs-numeral); }
.type-h1 { font-size: var(--tg-fs-h1); } .type-h2 { font-size: var(--tg-fs-h2); } .type-h3 { font-size: var(--tg-fs-h3); }
.type-body-l { font-size: var(--tg-fs-body-l); } .type-body { font-size: var(--tg-fs-body); }
.type-stat { font-size: var(--tg-fs-stat); }
.type-eyebrow { text-transform: uppercase; }
.type-display, .type-statement, .type-quote, .type-case-title, .type-numeral, .tg-serif { font-variation-settings: "SOFT" 100, "opsz" 144; }

/* ---------- base ---------- */
.tg-root, .tg-page { font-family: var(--font-sans); color: var(--ink); background: var(--surface); -webkit-font-smoothing: antialiased; }
.tg-root *, .tg-page * { box-sizing: border-box; }
.tg-serif { font-family: var(--font-display); font-weight: 800; }
.tg-container { width: 100%; max-width: calc(var(--container-max, 1280px) + 2 * var(--tg-margin)); margin: 0 auto; padding: 0 var(--tg-margin); }
.tg-section { padding: var(--tg-section-y) 0; }
.tg-section--alt { background: var(--surface-alt); }
.tg-section--dark { background: var(--surface-dark); color: var(--ink-on-dark); }
.tg-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.tg-skip { position: absolute; left: 16px; top: -60px; z-index: 200; background: var(--tg-black); color: var(--tg-white); padding: 12px 20px; border-radius: var(--radius-pill); font: 700 17px/1 var(--font-bold); text-decoration: none; }
.tg-skip:focus { top: 16px; }
.tg-root :focus-visible, .tg-page :focus-visible { outline: var(--focus-width, 3px) solid var(--focus-ring); outline-offset: var(--focus-offset, 3px); }
.tg-on-dark :focus-visible, .tg-section--dark :focus-visible { outline-color: var(--focus-ring-on-dark); }

/* placeholder slot for client content */
.tg-ph { display: flex; align-items: center; justify-content: center; text-align: center; background: var(--surface-alt); color: var(--ink-secondary); font: 400 14px/1.4 var(--font-sans); padding: 12px; width: 100%; height: 100%; }
.tg-section--alt .tg-ph, .tg-section--alt .tg-media { background: var(--surface); }
.tg-ph.tg-ph--dark, .tg-on-dark .tg-ph, .tg-section--dark .tg-ph { background: var(--surface-dark-raised); color: var(--ink-secondary-on-dark); }

/* ---------- Arrow ---------- */
.tg-arrow { display: inline-block; flex: none; width: 1em; height: 1em; vertical-align: -0.12em; transition: transform var(--dur-micro, 150ms) var(--tg-ease); }
.tg-arrow line { stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; }
.tg-arrow path { fill: currentColor; stroke: currentColor; stroke-width: 1.5; stroke-linejoin: round; }

/* ---------- Logo / TMark ---------- */
.tg-logo { display: inline-flex; align-items: center; text-decoration: none; line-height: 1; }
.tg-logo img { display: block; height: 100%; width: auto; }
.tg-logo--type { font-family: var(--font-sans); font-weight: 500; letter-spacing: -0.02em; }
.tg-logo--red { color: var(--tg-red); } .tg-logo--dark, .tg-logo--white { color: var(--tg-white); } .tg-logo--light, .tg-logo--black { color: var(--tg-black); }
.tg-tmark { display: inline-block; position: relative; aspect-ratio: 1.05 / 1; }
.tg-tmark img { display: block; width: 100%; height: 100%; object-fit: contain; }
.tg-tmark--slot { border: 1.5px dashed currentColor; border-radius: var(--radius-8); display: inline-flex; align-items: center; justify-content: center; font: 500 11px/1.2 var(--font-sans); letter-spacing: .1em; text-transform: uppercase; text-align: center; padding: 4px; }
.tg-tmark--red { color: var(--tg-red); } .tg-tmark--white { color: var(--tg-white); } .tg-tmark--black { color: var(--tg-black); }

/* ---------- Button ---------- */
.tg-btn { --_bg: var(--tg-black); --_fg: var(--tg-white); --_bd: var(--tg-black);
  display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: var(--tg-control-h); padding: 0 28px;
  border-radius: var(--radius-pill); border: var(--border-control, 1.5px) solid var(--_bd); background: var(--_bg); color: var(--_fg);
  font: 700 19px/1 var(--font-bold); text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: background-color var(--dur-micro,150ms) var(--tg-ease), color var(--dur-micro,150ms) var(--tg-ease), border-color var(--dur-micro,150ms) var(--tg-ease); }
.tg-btn .tg-arrow { font-size: 20px; }
.tg-btn:hover .tg-arrow, .tg-btn:focus-visible .tg-arrow { transform: translateX(4px); }
.tg-btn--primary:hover { --_bg: var(--tg-red); --_bd: var(--tg-red); }
.tg-btn--primary-on-dark { --_bg: var(--tg-red); --_bd: var(--tg-red); --_fg: var(--tg-white); }
.tg-btn--primary-on-dark:hover { --_bg: var(--tg-white); --_bd: var(--tg-white); --_fg: var(--tg-black); }
.tg-btn--on-brand { --_bg: var(--tg-black); --_bd: var(--tg-black); --_fg: var(--tg-white); }
.tg-btn--on-brand:hover { --_bg: var(--tg-white); --_bd: var(--tg-white); --_fg: var(--tg-black); }
.tg-btn--secondary { --_bg: transparent; --_fg: var(--tg-black); --_bd: var(--tg-black); }
.tg-btn--secondary:hover { --_bg: var(--tg-black); --_fg: var(--tg-white); }
.tg-btn--secondary-on-dark { --_bg: transparent; --_fg: var(--tg-white); --_bd: var(--tg-white); }
.tg-btn--secondary-on-dark:hover { --_bg: var(--tg-white); --_fg: var(--tg-black); }
.tg-btn--block { width: 100%; }
.tg-btn--sm { min-height: 44px; padding: 0 22px; }
.tg-btn[disabled], .tg-btn[aria-disabled="true"] { --_bg: var(--disabled-fill); --_bd: var(--disabled-fill); --_fg: var(--disabled-ink); cursor: not-allowed; }
.tg-btn[disabled] .tg-arrow, .tg-btn[aria-disabled="true"] .tg-arrow { transform: none; }
.tg-btn--primary-on-dark:focus-visible, .tg-btn--secondary-on-dark:focus-visible { outline-color: var(--focus-ring-on-dark); }

/* ---------- TextLink ---------- */
.tg-link { display: inline-flex; align-items: center; gap: 8px; color: var(--ink); font: 500 17px/1.3 var(--font-sans); text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 4px; min-height: 44px; }
.tg-link:hover { text-decoration-color: var(--accent); }
.tg-link:hover .tg-arrow { transform: translateX(4px); }
.tg-link .tg-arrow { color: var(--accent); }
.tg-link--on-dark { color: var(--ink-on-dark); }
.tg-link--on-dark .tg-arrow { color: var(--ink-on-dark); }
.tg-link--on-dark:hover { text-decoration-color: var(--accent-on-dark); }
.tg-link--red { color: var(--link-small); }
.tg-link--red .tg-arrow { color: var(--link-small); }
.tg-link--on-brand { color: var(--ink-on-brand); font: 700 19px/1.3 var(--font-bold); }
.tg-link--on-brand .tg-arrow { color: var(--ink-on-brand); }
.tg-link--on-brand:hover { text-decoration-color: var(--tg-black); }

/* ---------- Eyebrow ---------- */
.tg-eyebrow { display: inline-flex; align-items: center; gap: 10px; margin: 0; font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-secondary); }
.tg-eyebrow::before { content: ""; width: 8px; height: 8px; background: var(--accent); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.tg-eyebrow--plain::before { display: none; }
.tg-eyebrow--on-dark { color: var(--ink-secondary-on-dark); }
.tg-eyebrow--on-dark::before { background: var(--accent-on-dark); }

/* ---------- SectionHeading ---------- */
.tg-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 16px 48px; margin-bottom: 64px; }
.tg-heading__main { display: grid; gap: 20px; max-width: 820px; }
.tg-heading__title { margin: 0; font: 400 var(--tg-fs-h2)/1.1 var(--font-sans); letter-spacing: -0.01em; }
.tg-heading__title em { font-style: italic; font-weight: 700; color: var(--accent); }
.tg-heading--h1 .tg-heading__title { font-size: var(--tg-fs-h1); font-weight: 300; line-height: 1.05; }
.tg-heading__intro { margin: 0; font: 400 var(--tg-fs-body-l)/1.55 var(--font-sans); color: var(--ink-secondary); max-width: var(--text-max, 720px); }
.tg-heading--on-dark .tg-heading__title { color: var(--ink-on-dark); }
.tg-heading--on-dark .tg-heading__title em { color: var(--accent-on-dark); }
.tg-heading--on-dark .tg-heading__intro { color: var(--ink-secondary-on-dark); }
.tg-heading--center { grid-template-columns: 1fr; justify-items: center; text-align: center; }
@media (max-width: 767px) { .tg-heading { grid-template-columns: 1fr; margin-bottom: 40px; } }

/* ---------- SignatureHeadline ---------- */
.tg-sig { margin: 0; font: 300 var(--tg-fs-display)/.95 var(--font-sans); letter-spacing: -0.02em; color: var(--ink); }
.tg-sig__line { display: block; }
.tg-sig__key { font-weight: 700; font-style: italic; color: var(--accent); padding-right: .06em; }
.tg-sig--on-brand { color: var(--ink-on-brand); }
.tg-sig--on-brand .tg-sig__key { color: var(--ink-on-brand); }
.tg-sig--on-dark { color: var(--ink-on-dark); }
.tg-sig--on-dark .tg-sig__key { color: var(--accent-on-dark); }
.tg-sig--h2 { font-size: calc(var(--tg-fs-display) * .8); }
.tg-anim .tg-sig__line { opacity: 0; transform: translateY(24px); animation: tg-rise var(--dur-reveal,600ms) var(--tg-ease) forwards; }
@keyframes tg-rise { to { opacity: 1; transform: none; } }

/* ---------- Header ---------- */
.tg-header { position: sticky; top: 0; z-index: 50; height: var(--tg-header-h); background: transparent; color: var(--ink);
  transition: transform var(--dur-ui,300ms) var(--tg-ease), background-color var(--dur-ui,300ms) var(--tg-ease), box-shadow var(--dur-ui,300ms) var(--tg-ease);
  border-bottom: var(--border-hairline, 1px) solid transparent; }
.tg-header--solid { background: var(--surface); border-bottom-color: var(--border); box-shadow: var(--shadow-sm); }
.tg-header--dark { background: var(--surface-dark); color: var(--ink-on-dark); border-bottom-color: var(--border-on-dark); }
.tg-header--hidden { transform: translateY(-100%); }
.tg-header__in { height: 100%; display: flex; align-items: center; gap: 32px; }
.tg-header__logo { height: var(--logo-h, 36px); margin-right: auto; }
.tg-header__nav ul { display: flex; gap: 32px; list-style: none; margin: 0; padding: 0; }
.tg-header__nav a { position: relative; display: inline-flex; align-items: center; min-height: 44px; color: inherit; text-decoration: none; font: 400 15px/1.4 var(--font-sans); }
.tg-header__nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 8px; height: 2px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform var(--dur-micro,150ms) var(--tg-ease); }
.tg-header__nav a:hover::after, .tg-header__nav a[aria-current="page"]::after { transform: scaleX(1); }
.tg-header--dark .tg-header__nav a::after { background: var(--accent-on-dark); }
.tg-header__menu { display: none; align-items: center; gap: 10px; min-height: 44px; min-width: 44px; padding: 0 4px; border: 0; background: none; color: inherit; font: 500 15px/1 var(--font-sans); cursor: pointer; }
.tg-header__burger { display: grid; gap: 6px; width: 24px; }
.tg-header__burger i { display: block; height: 1.75px; border-radius: 2px; background: currentColor; }
.tg-header__burger i:last-child { width: 16px; justify-self: end; }
@media (max-width: 1023px) {
  .tg-header__nav, .tg-header__cta { display: none; }
  .tg-header__menu { display: inline-flex; }
  .tg-header__logo { height: 28px; }
}
.tg-header--dark :focus-visible { outline-color: var(--focus-ring-on-dark); }

/* ---------- MobileMenu ---------- */
.tg-menu { position: fixed; inset: 0; z-index: 100; background: var(--surface-dark); color: var(--ink-on-dark); display: flex; flex-direction: column; overflow: hidden;
  padding: 0 var(--page-margin-mobile, 20px) 32px; opacity: 0; visibility: hidden; transition: opacity var(--dur-ui,300ms) var(--tg-ease), visibility 0s linear var(--dur-ui,300ms); }
.tg-menu--inline { position: absolute; }
.tg-menu--open { opacity: 1; visibility: visible; transition: opacity var(--dur-ui,300ms) var(--tg-ease); }
.tg-menu__top { height: 72px; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 1; }
.tg-menu__close { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; min-width: 44px; border: 0; background: none; color: inherit; font: 500 15px/1 var(--font-sans); cursor: pointer; }
.tg-menu__close svg { width: 24px; height: 24px; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; }
.tg-menu__list { list-style: none; margin: 40px 0 0; padding: 0; display: grid; gap: 4px; position: relative; z-index: 1; }
.tg-menu__list a { display: flex; align-items: center; justify-content: space-between; min-height: 56px; color: inherit; text-decoration: none; font: 300 36px/1.1 var(--font-sans); letter-spacing: -0.01em;
  opacity: 0; transform: translateY(12px); transition: opacity var(--dur-ui,300ms) var(--tg-ease), transform var(--dur-ui,300ms) var(--tg-ease); }
.tg-menu--open .tg-menu__list a { opacity: 1; transform: none; }
.tg-menu__list a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--accent-on-dark); text-decoration-thickness: 2px; text-underline-offset: 8px; }
.tg-menu__list .tg-arrow { font-size: 24px; color: var(--accent-on-dark); }
.tg-menu__foot { margin-top: auto; display: grid; gap: 20px; position: relative; z-index: 1; }
.tg-menu__contact { display: flex; flex-wrap: wrap; gap: 8px 24px; font: 400 15px/1.4 var(--font-sans); }
.tg-menu__contact a { color: var(--ink-secondary-on-dark); min-height: 44px; display: inline-flex; align-items: center; }
.tg-menu__mark { position: absolute; right: -18%; bottom: 14%; width: 70%; opacity: 1; pointer-events: none; }
.tg-menu :focus-visible { outline-color: var(--focus-ring-on-dark); }

/* ---------- Hero ---------- */
.tg-hero { position: relative; overflow: hidden; background: var(--surface); padding: calc(var(--tg-header-h) + 72px) 0 96px; min-height: 760px; display: flex; align-items: center; }
.tg-hero--flush { padding-top: 88px; }
.tg-hero__grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); gap: var(--tg-gutter); align-items: center; }
.tg-hero__text { grid-column: 1 / span 7; display: grid; gap: 40px; justify-items: start; }
.tg-hero__lede { margin: 0; max-width: 520px; font: 400 var(--tg-fs-body-l)/1.55 var(--font-sans); color: var(--ink-secondary); }
.tg-hero__ctas { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; }
.tg-hero__art { position: absolute; top: calc(var(--tg-header-h) + 24px); right: 0; bottom: 0; width: 44%; z-index: 0; overflow: hidden; }
.tg-hero__art img.tg-hero__t { position: absolute; right: -22%; top: 50%; height: 118%; width: auto; transform: translateY(-50%); }
/* the slab's left edge is skewed exactly 30° off vertical — the T crossbar's diagonal */
.tg-hero__slab { position: absolute; top: 0; bottom: 0; left: 0; right: -80%; background: var(--tg-red); border-radius: var(--radius-24) 0 0 0; transform: skewX(-30deg); transform-origin: 0 100%; }
.tg-hero__artlabel { position: absolute; right: var(--tg-margin); bottom: 32px; color: var(--tg-white); font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; max-width: 240px; text-align: right; }
.tg-hero__scroll { position: absolute; left: var(--tg-margin); bottom: 32px; display: inline-flex; align-items: center; gap: 12px; font: 500 13px/1 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-secondary); z-index: 1; }
.tg-hero__scroll i { display: block; width: 1.5px; height: 40px; background: var(--ink); transform-origin: top; animation: tg-scroll 1.6s var(--tg-ease) infinite; }
@keyframes tg-scroll { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); transform-origin: top; } 51% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
.tg-anim .tg-hero__art { animation: tg-t-in var(--dur-reveal,600ms) var(--tg-ease) both; }
@keyframes tg-t-in { from { opacity: 0; transform: translate(12%, 7%); } to { opacity: 1; transform: none; } }
@media (max-width: 1023px) {
  .tg-hero { min-height: 0; padding: calc(var(--tg-header-h) + 40px) 0 72px; display: flex; flex-direction: column; align-items: stretch; }
  .tg-hero > .tg-container { order: 0; } .tg-hero__art { order: 1; }
  .tg-hero__text { grid-column: 1 / -1; gap: 28px; }
  .tg-hero__art { position: relative; top: auto; width: auto; height: 240px; margin: 48px 0 0 30%; }
  .tg-hero__scroll { display: none; }
}
@media (max-width: 767px) {
  .tg-hero__ctas { width: 100%; }
  .tg-hero__ctas .tg-btn { width: 100%; }
  .tg-hero__art { height: 180px; margin-left: 30%; }
}

/* ---------- MediaFrame ---------- */
.tg-media { position: relative; overflow: hidden; border-radius: var(--radius-16); background: var(--surface-alt); aspect-ratio: var(--_ratio, 4 / 3); margin: 0; }
.tg-media > img, .tg-media > video { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-zoom,400ms) var(--tg-ease); }
.tg-media--angle { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); border-radius: var(--radius-16) 0 0 var(--radius-16); }
.tg-media--angle::after { content: ""; position: absolute; top: 0; right: -1px; bottom: 0; width: 30%; background: var(--_edge, var(--surface)); clip-path: polygon(100% 0, 100% 100%, 42% 100%); }
.tg-media--tmask { border-radius: 0; background: none; -webkit-mask: var(--_mask) center / contain no-repeat; mask: var(--_mask) center / contain no-repeat; }
.tg-media--full { border-radius: 0; }
.tg-media__overlay { position: absolute; inset: 0; background: var(--overlay); }
.tg-media__content { position: absolute; inset: auto 0 0 0; padding: 32px; color: var(--ink-on-dark); z-index: 1; }
.tg-media__cap { margin-top: 12px; font: 400 14px/1.5 var(--font-sans); color: var(--ink-secondary); }

/* ---------- Tag / Chip ---------- */
.tg-tag { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 14px; border-radius: var(--radius-pill); border: var(--border-control,1.5px) solid var(--field-border); background: transparent; color: var(--ink); font: 700 14px/1 var(--font-bold); white-space: nowrap; text-decoration: none; }
.tg-tag--static { border-color: transparent; background: var(--surface-alt); color: var(--ink-secondary); font-weight: 600; }
button.tg-tag, a.tg-tag { min-height: 44px; padding: 0 18px; cursor: pointer; transition: background-color var(--dur-micro,150ms) var(--tg-ease), border-color var(--dur-micro,150ms) var(--tg-ease); }
button.tg-tag:hover, a.tg-tag:hover { border-color: var(--border-strong); }
.tg-tag[aria-pressed="true"], .tg-tag--active { background: var(--tg-black); border-color: var(--tg-black); color: var(--tg-white); }
.tg-tag[aria-pressed="true"]::before, .tg-tag--active::before { content: ""; width: 7px; height: 7px; background: var(--tg-red-bright); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.tg-tag--on-dark { border-color: var(--border-on-dark); color: var(--ink-on-dark); }
.tg-tag--on-dark.tg-tag--static { background: var(--surface-dark-raised); color: var(--ink-secondary-on-dark); }

/* ---------- CaseStudyCard ---------- */
.tg-case { display: grid; gap: 20px; color: inherit; text-decoration: none; }
.tg-case__media { position: relative; }
.tg-case:hover .tg-media > img, .tg-case:focus-visible .tg-media > img { transform: scale(1.03); }
.tg-case__go { position: absolute; top: 20px; right: 20px; width: 56px; height: 56px; border-radius: var(--radius-pill); background: var(--tg-white); color: var(--tg-red); display: grid; place-items: center; font-size: 26px;
  opacity: 0; transform: translate(-14px, 8px); transition: opacity var(--dur-ui,300ms) var(--tg-ease), transform var(--dur-ui,300ms) var(--tg-ease); }
.tg-case:hover .tg-case__go, .tg-case:focus-visible .tg-case__go { opacity: 1; transform: none; }
.tg-case__meta { display: grid; gap: 10px; }
.tg-case__top { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; }
.tg-case__client { font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-secondary); }
.tg-case__metric { font: 700 15px/1.3 var(--font-bold); color: var(--ink); white-space: nowrap; }
.tg-case__title { margin: 0; font: 800 var(--tg-fs-case)/1.1 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; letter-spacing: -0.01em; }
.tg-case__title span { background: linear-gradient(var(--accent), var(--accent)) 0 100% / 0 2px no-repeat; transition: background-size var(--dur-ui,300ms) var(--tg-ease); padding-bottom: 2px; }
.tg-case:hover .tg-case__title span, .tg-case:focus-visible .tg-case__title span { background-size: 100% 2px; }
.tg-case__tags { display: flex; flex-wrap: wrap; gap: 8px; }

/* ---------- ServiceRow ---------- */
.tg-service { display: grid; grid-template-columns: 72px minmax(0, 5fr) minmax(0, 4fr) 56px; align-items: center; gap: 24px; padding: 36px 0; border-top: var(--border-hairline,1px) solid var(--border-on-dark); color: var(--ink-on-dark); text-decoration: none; }
.tg-services > .tg-service:last-child, .tg-service--last { border-bottom: var(--border-hairline,1px) solid var(--border-on-dark); }
.tg-service__num { font: 900 22px/1 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; color: var(--ink-muted-on-dark); }
.tg-service__name { margin: 0; font: 300 clamp(28px, 3.4vw, 48px)/1.05 var(--font-sans); letter-spacing: -0.01em; }
.tg-service__name span { background: linear-gradient(var(--accent-on-dark), var(--accent-on-dark)) 0 100% / 0 3px no-repeat; transition: background-size var(--dur-ui,300ms) var(--tg-ease); padding-bottom: 4px; }
.tg-service__desc { margin: 0; font: 400 16px/1.55 var(--font-sans); color: var(--ink-secondary-on-dark); }
.tg-service__go { justify-self: end; width: 52px; height: 52px; border-radius: var(--radius-pill); border: var(--border-control,1.5px) solid var(--border-on-dark); display: grid; place-items: center; font-size: 22px; transition: background-color var(--dur-ui,300ms) var(--tg-ease), border-color var(--dur-ui,300ms) var(--tg-ease); }
.tg-service:hover .tg-service__name span, .tg-service:focus-visible .tg-service__name span { background-size: 100% 3px; }
.tg-service:hover .tg-service__go, .tg-service:focus-visible .tg-service__go { background: var(--tg-red); border-color: var(--tg-red); }
.tg-service:hover .tg-arrow, .tg-service:focus-visible .tg-arrow { transform: translateX(4px); }
.tg-service:focus-visible { outline-color: var(--focus-ring-on-dark); }
@media (max-width: 767px) {
  .tg-service { grid-template-columns: 40px minmax(0,1fr) 44px; gap: 8px 12px; padding: 24px 0; min-height: 88px; }
  .tg-service__desc { grid-column: 2 / 3; grid-row: 2; font-size: 15px; }
  .tg-service__go { grid-column: 3; grid-row: 1 / span 2; width: 44px; height: 44px; }
  .tg-service__name { font-size: 26px; }
}

/* ---------- StatBlock ---------- */
.tg-stat { display: grid; gap: 12px; padding-top: 24px; border-top: 2px solid var(--ink); }
.tg-stat__value { font: 900 var(--tg-fs-stat)/.95 var(--font-bold); letter-spacing: -0.02em; color: var(--ink); }
.tg-stat__value sup { font-size: .45em; vertical-align: .9em; color: var(--accent); margin-left: 2px; }
.tg-stat__label { font: 400 16px/1.45 var(--font-sans); color: var(--ink-secondary); max-width: 240px; }
.tg-stat--on-dark { border-top-color: var(--ink-on-dark); }
.tg-stat--on-dark .tg-stat__value { color: var(--ink-on-dark); }
.tg-stat--on-dark .tg-stat__value sup { color: var(--accent-on-dark); }
.tg-stat--on-dark .tg-stat__label { color: var(--ink-secondary-on-dark); }

/* ---------- LogoStrip ---------- */
.tg-logos { overflow: hidden; }
.tg-logos__label { margin: 0 0 24px; }
.tg-logos__row { display: flex; align-items: center; gap: 24px; list-style: none; margin: 0; padding: 0; }
.tg-logos__row li { flex: 1 0 160px; height: 72px; border-radius: var(--radius-12); overflow: hidden; display: grid; place-items: center; }
.tg-logos__row img { max-width: 70%; max-height: 40px; filter: grayscale(1); opacity: .8; transition: opacity var(--dur-micro,150ms) var(--tg-ease), filter var(--dur-micro,150ms) var(--tg-ease); }
.tg-logos__row li:hover img { filter: none; opacity: 1; }
.tg-logos--marquee .tg-logos__row { width: max-content; animation: tg-drift 40s linear infinite; }
.tg-logos--marquee .tg-logos__row li { flex: 0 0 180px; }
@media (max-width: 767px) { .tg-logos:not(.tg-logos--marquee) .tg-logos__row { flex-wrap: wrap; gap: 12px; } .tg-logos:not(.tg-logos--marquee) .tg-logos__row li { flex: 1 0 40%; height: 64px; } }

/* ---------- Testimonial ---------- */
.tg-quote { margin: 0; display: grid; gap: 40px; max-width: 1040px; }
.tg-quote__mark { width: 56px; height: 40px; color: var(--accent); }
.tg-quote__text { margin: 0; font: 800 var(--tg-fs-quote)/1.12 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; letter-spacing: -0.01em; color: var(--ink); }
.tg-quote__by { display: flex; align-items: center; gap: 16px; font: 400 16px/1.45 var(--font-sans); color: var(--ink-secondary); }
.tg-quote__by strong { display: block; font: 700 17px/1.3 var(--font-bold); color: var(--ink); }
.tg-quote__avatar { width: 56px; height: 56px; border-radius: var(--radius-pill); overflow: hidden; flex: none; background: var(--tg-silver); }
.tg-quote__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------- ProcessStep ---------- */
.tg-process { display: grid; grid-template-columns: repeat(var(--_n, 4), minmax(0, 1fr)); gap: var(--tg-gutter); list-style: none; margin: 0; padding: 0; counter-reset: step; }
.tg-step { position: relative; display: grid; align-content: start; gap: 16px; padding-top: 40px; }
.tg-step::before { content: ""; position: absolute; top: 0; left: 0; right: calc(-1 * var(--tg-gutter)); height: 1.5px; background: var(--ink); }
.tg-step:last-child::before { right: 0; }
.tg-step::after { content: ""; position: absolute; top: -6px; left: 0; width: 12px; height: 13px; background: var(--accent); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.tg-step__num { font: 900 var(--tg-fs-numeral)/1 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; color: var(--accent); }
.tg-step__title { margin: 0; font: 400 var(--tg-fs-h3)/1.2 var(--font-sans); }
.tg-step__text { margin: 0; font: 400 16px/1.6 var(--font-sans); color: var(--ink-secondary); max-width: 300px; }
@media (max-width: 767px) {
  .tg-process { grid-template-columns: 1fr; gap: 0; }
  .tg-step { padding: 0 0 40px 40px; }
  .tg-step::before { top: 6px; bottom: 0; left: 5px; right: auto; width: 1.5px; height: auto; }
  .tg-step:last-child::before { display: none; }
  .tg-step::after { top: 0; }
}

/* ---------- ArticleCard ---------- */
.tg-article { display: grid; gap: 20px; align-content: start; color: inherit; text-decoration: none; }
.tg-article:hover .tg-media > img { transform: scale(1.03); }
.tg-article__meta { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; font: 400 14px/1.4 var(--font-sans); color: var(--ink-secondary); }
.tg-article__title { margin: 0; font: 400 24px/1.25 var(--font-sans); }
.tg-article__title span { background: linear-gradient(var(--accent), var(--accent)) 0 100% / 0 2px no-repeat; transition: background-size var(--dur-ui,300ms) var(--tg-ease); padding-bottom: 2px; }
.tg-article:hover .tg-article__title span, .tg-article:focus-visible .tg-article__title span { background-size: 100% 2px; }
.tg-article__more { display: inline-flex; gap: 8px; align-items: center; font: 500 15px/1 var(--font-sans); }
.tg-article__more .tg-arrow { color: var(--accent); }
.tg-article:hover .tg-article__more .tg-arrow { transform: translateX(4px); }

/* ---------- PatternBand ---------- */
.tg-pattern { position: relative; overflow: hidden; height: var(--_h, 96px); background-color: var(--_bg, var(--surface)); }
.tg-pattern__track { position: absolute; inset: 0 auto 0 0; width: 200%; background-image: var(--_img); background-repeat: repeat-x; background-size: auto 100%; background-position: 0 50%; }
.tg-pattern--drift .tg-pattern__track { animation: tg-drift 60s linear infinite; }
.tg-pattern--red { --_bg: var(--tg-red); }
.tg-pattern__slot { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 16px; background: var(--tg-red); color: var(--tg-white); font: 700 19px/1 var(--font-bold); letter-spacing: .02em; }
.tg-pattern__slot small { font: 500 13px/1 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; opacity: 1; }
@keyframes tg-drift { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------- CTASection ---------- */
.tg-cta { position: relative; overflow: hidden; background: var(--surface-brand); color: var(--ink-on-brand); padding: 160px 0; }
.tg-cta__in { position: relative; z-index: 1; display: grid; gap: 48px; justify-items: start; }
.tg-cta__row { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 40px; }
.tg-cta__mark { position: absolute; right: -6%; bottom: -18%; width: 38%; max-width: 520px; pointer-events: none; }
.tg-cta__mark img { width: 100%; display: block; }
.tg-cta :focus-visible { outline-color: var(--focus-ring); }
@media (max-width: 767px) { .tg-cta { padding: 88px 0; } .tg-cta__row { width: 100%; } .tg-cta__row .tg-btn { width: 100%; } .tg-cta__mark { width: 60%; right: -18%; bottom: -10%; } }

/* ---------- Forms ---------- */
.tg-field { display: grid; gap: 8px; }
.tg-field__label { font: 700 15px/1.3 var(--font-bold); color: var(--ink); }
.tg-field__label .tg-field__opt { font: 400 14px/1 var(--font-sans); color: var(--ink-secondary); margin-left: 6px; }
.tg-field__hint { font: 400 14px/1.45 var(--font-sans); color: var(--ink-secondary); margin: 0; }
.tg-input { width: 100%; min-height: var(--control-h, 52px); padding: 0 16px; border-radius: var(--radius-12); border: var(--border-control,1.5px) solid var(--field-border); background: var(--surface); color: var(--ink);
  font: 400 17px/1.4 var(--font-sans); transition: border-color var(--dur-micro,150ms) var(--tg-ease); appearance: none; -webkit-appearance: none; }
textarea.tg-input { min-height: 160px; padding: 14px 16px; resize: vertical; }
select.tg-input { padding-right: 48px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%231b191a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; }
.tg-input:hover { border-color: var(--ink-secondary); }
.tg-input:focus { outline: none; }
.tg-input:focus-visible { border-color: var(--border-strong); outline: var(--focus-width,3px) solid var(--focus-ring); outline-offset: var(--focus-offset, 3px); }
.tg-input[aria-invalid="true"] { border-color: var(--error); }
.tg-field__error { display: flex; align-items: flex-start; gap: 8px; margin: 0; font: 400 14px/1.45 var(--font-sans); color: var(--error); }
.tg-field__error svg { flex: none; width: 18px; height: 18px; margin-top: 1px; stroke: currentColor; fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.tg-chips { border: 0; margin: 0; padding: 0; display: grid; gap: 12px; min-width: 0; }
.tg-chips legend { padding: 0; }
.tg-chips__list { display: flex; flex-wrap: wrap; gap: 8px; }
.tg-check { display: flex; align-items: flex-start; gap: 12px; font: 400 15px/1.5 var(--font-sans); color: var(--ink); cursor: pointer; min-height: 44px; }
.tg-check input { appearance: none; -webkit-appearance: none; flex: none; width: 24px; height: 24px; margin: 0; border-radius: 6px; border: var(--border-control,1.5px) solid var(--field-border); background: var(--surface) center / 16px no-repeat; cursor: pointer; }
.tg-check input:checked { background-color: var(--tg-black); border-color: var(--tg-black); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5 9-10'/%3E%3C/svg%3E"); }
.tg-check input:focus-visible { outline: var(--focus-width,3px) solid var(--focus-ring); outline-offset: var(--focus-offset,3px); }
.tg-check input[aria-invalid="true"] { border-color: var(--error); }
.tg-check a { color: var(--link-small); text-underline-offset: 3px; }
.tg-success { display: grid; justify-items: start; gap: 20px; padding: 48px; border-radius: var(--radius-24); background: var(--surface-dark); color: var(--ink-on-dark); }
.tg-success__mark { width: 72px; height: 69px; display: grid; place-items: center; }
.tg-success__mark img { width: 100%; }
.tg-success__tick { width: 72px; height: 72px; border-radius: var(--radius-pill); border: 1.5px solid var(--ink-on-dark); display: grid; place-items: center; }
.tg-success__tick svg { width: 32px; height: 32px; stroke: var(--ink-on-dark); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 30; stroke-dashoffset: 30; animation: tg-draw var(--dur-reveal,600ms) var(--tg-ease) .2s forwards; }
.tg-anim-in { animation: tg-t-in var(--dur-reveal,600ms) var(--tg-ease) both; }
@keyframes tg-draw { to { stroke-dashoffset: 0; } }
.tg-success h3 { margin: 0; font: 300 36px/1.1 var(--font-sans); }
.tg-success h3 em { font-weight: 700; color: var(--accent-on-dark); }
.tg-success p { margin: 0; font: 400 17px/1.6 var(--font-sans); color: var(--ink-secondary-on-dark); max-width: 460px; }

/* ---------- Breadcrumb ---------- */
.tg-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; list-style: none; margin: 0; padding: 0; font: 400 14px/1.4 var(--font-sans); color: var(--ink-secondary); }
.tg-crumbs li { display: inline-flex; align-items: center; gap: 10px; }
.tg-crumbs li + li::before { content: ""; width: 6px; height: 7px; background: var(--ink-secondary); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.tg-crumbs a { color: var(--ink); text-underline-offset: 3px; min-height: 44px; display: inline-flex; align-items: center; }
.tg-crumbs [aria-current] { color: var(--ink-secondary); }

/* ---------- Pagination ---------- */
.tg-pages ul { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; list-style: none; margin: 0; padding: 0; }
.tg-pages__btn { min-width: 44px; height: 44px; padding: 0 14px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: var(--radius-pill); border: var(--border-control,1.5px) solid transparent; background: none; color: var(--ink); font: 700 15px/1 var(--font-bold); cursor: pointer; text-decoration: none; }
.tg-pages__btn:hover { border-color: var(--border-strong); }
.tg-pages__btn[aria-current="page"] { background: var(--tg-black); color: var(--tg-white); }
.tg-pages__btn[disabled] { color: var(--ink-secondary); opacity: .6; cursor: not-allowed; border-color: transparent; }
.tg-pages__gap { color: var(--ink-secondary); padding: 0 4px; }

/* ---------- Footer ---------- */
.tg-footer { background: var(--surface-dark); color: var(--ink-on-dark); position: relative; overflow: hidden; }
.tg-footer__band { height: 40px; }
.tg-footer__in { padding-top: 96px; padding-bottom: 16px; display: grid; gap: 80px; }
.tg-footer__top { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px; align-items: end; }
.tg-footer__logo { height: 40px; }
.tg-footer__line { margin: 32px 0 0; font: 300 clamp(40px, 5.2vw, 72px)/1 var(--font-sans); letter-spacing: -0.02em; }
.tg-footer__line em { font-weight: 700; color: var(--accent-on-dark); }
.tg-footer__news { display: grid; gap: 12px; }
.tg-footer__news .tg-field__label { color: var(--ink-on-dark); }
.tg-footer__newsrow { display: flex; gap: 8px; }
.tg-footer__newsrow .tg-input { background: transparent; color: var(--ink-on-dark); border-color: var(--tg-grey); }
.tg-footer__newsrow .tg-input::placeholder { color: var(--ink-muted-on-dark); }
.tg-footer__newsrow .tg-input:focus-visible { border-color: var(--tg-white); outline-color: var(--focus-ring-on-dark); }
.tg-footer__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
.tg-footer__col h2 { margin: 0 0 16px; font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted-on-dark); }
.tg-footer__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.tg-footer__col a, .tg-footer__col span { color: var(--ink-on-dark); text-decoration: none; font: 400 16px/1.5 var(--font-sans); min-height: 36px; display: inline-flex; align-items: center; }
.tg-footer__col a:hover { text-decoration: underline; text-decoration-color: var(--accent-on-dark); text-underline-offset: 4px; }
.tg-footer__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding-top: 24px; border-top: var(--border-hairline,1px) solid var(--border-on-dark); font: 400 14px/1.4 var(--font-sans); color: var(--ink-muted-on-dark); }
.tg-footer__bottom ul { display: flex; gap: 24px; list-style: none; margin: 0; padding: 0; }
.tg-footer__bottom a { color: var(--ink-muted-on-dark); min-height: 44px; display: inline-flex; align-items: center; }
.tg-footer :focus-visible { outline-color: var(--focus-ring-on-dark); }
@media (max-width: 1023px) { .tg-footer__top { grid-template-columns: 1fr; } .tg-footer__cols { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 767px) { .tg-footer__in { padding-top: 64px; gap: 56px; } .tg-footer__logo { height: 32px; } }

/* ---------- Sticky mobile CTA bar ---------- */
.tg-stickybar { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 40; display: flex; align-items: center; gap: 8px; padding: 8px 8px 8px 20px; border-radius: var(--radius-pill); background: var(--surface-dark); color: var(--ink-on-dark); box-shadow: var(--shadow-md); }
.tg-stickybar--inline { position: absolute; }
.tg-stickybar p { margin: 0 auto 0 0; font: 400 15px/1.3 var(--font-sans); }
.tg-stickybar .tg-btn { min-height: 44px; padding: 0 18px; }
.tg-stickybar__x { width: 44px; height: 44px; border: 0; border-radius: var(--radius-pill); background: none; color: var(--ink-secondary-on-dark); cursor: pointer; display: grid; place-items: center; }
.tg-stickybar__x svg { width: 20px; height: 20px; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; }
.tg-stickybar :focus-visible { outline-color: var(--focus-ring-on-dark); }

/* ---------- Reveal ---------- */
.tg-reveal { opacity: 0; transform: translateY(16px); transition: opacity var(--dur-reveal,600ms) var(--tg-ease), transform var(--dur-reveal,600ms) var(--tg-ease); }
.tg-reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .tg-pattern--drift .tg-pattern__track, .tg-logos--marquee .tg-logos__row, .tg-hero__scroll i { animation: none; }
  .tg-anim .tg-hero__art, .tg-anim-in { animation: tg-fade var(--dur-reveal,600ms) linear both; }
  .tg-anim .tg-sig__line { animation-name: tg-fade; transform: none; }
  .tg-reveal { transform: none; }
  .tg-header, .tg-menu__list a, .tg-case__go, .tg-arrow, .tg-media > img { transition-property: opacity, background-color, color, border-color; transform: none !important; }
  .tg-header--hidden { transform: none !important; }
}
@keyframes tg-fade { from { opacity: 0; } to { opacity: 1; } }

/* =========================================================
   Page templates — layout patterns shared by inner pages
   ========================================================= */
.tg-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--tg-gutter); }
@media (max-width: 767px) { .tg-grid { grid-template-columns: minmax(0, 1fr); } .tg-grid > * { grid-column: 1 / -1 !important; margin-top: 0 !important; } }

/* PageIntro: breadcrumb, eyebrow, lowercase H1 (one <em> word), lede */
.tg-pagehead { padding: calc(var(--tg-header-h) + 72px) 0 80px; }
.tg-pagehead__in { display: grid; gap: 28px; justify-items: start; }
.tg-pagehead h1 { margin: 0; max-width: 1000px; font: 300 var(--tg-fs-h1)/1.05 var(--font-sans); letter-spacing: -0.015em; }
.tg-pagehead h1 em { font-style: italic; font-weight: 700; color: var(--accent); }
.tg-pagehead h1.tg-serif { font-family: var(--font-display); font-weight: 800; font-variation-settings: "SOFT" 100, "opsz" 144; }
.tg-pagehead__lede { margin: 0; max-width: 640px; font: 400 var(--tg-fs-body-l)/1.55 var(--font-sans); color: var(--ink-secondary); }
@media (max-width: 767px) { .tg-pagehead { padding: calc(var(--tg-header-h) + 32px) 0 48px; } }

/* Filter bar (Work, Insights) */
.tg-filterbar { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 24px; padding-bottom: 32px; margin-bottom: 64px; border-bottom: var(--border-hairline,1px) solid var(--border); }
.tg-filterbar__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tg-filterbar__side { display: flex; align-items: center; gap: 16px; }
.tg-filterbar__side .tg-field { min-width: 220px; }
.tg-filterbar__count { font: 400 14px/1.4 var(--font-sans); color: var(--ink-secondary); }
@media (max-width: 767px) { .tg-filterbar__chips { flex-wrap: nowrap; overflow-x: auto; width: calc(100% + 2 * var(--tg-margin)); margin: 0 calc(-1 * var(--tg-margin)); padding: 0 var(--tg-margin) 4px; } .tg-filterbar__side { width: 100%; } .tg-filterbar__side .tg-field { flex: 1; } }

/* Fact list (case study, service detail) */
.tg-facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; margin: 0; padding: 32px 0; border-top: var(--border-hairline,1px) solid var(--border); border-bottom: var(--border-hairline,1px) solid var(--border); }
.tg-facts dt { font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-secondary); margin-bottom: 8px; }
.tg-facts dd { margin: 0; font: 400 17px/1.5 var(--font-sans); }
@media (max-width: 767px) { .tg-facts { grid-template-columns: 1fr 1fr; } }

/* Split: sticky label column + content (case chapters, legal, service detail) */
.tg-split { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--tg-gutter); align-items: start; }
.tg-split + .tg-split { margin-top: 96px; }
.tg-split__label { position: sticky; top: 120px; display: grid; gap: 12px; }
.tg-split__label .tg-num { font: 900 var(--tg-fs-numeral)/1 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; color: var(--accent); }
.tg-split__label h2 { margin: 0; font: 400 var(--tg-fs-h3)/1.2 var(--font-sans); }
@media (max-width: 767px) { .tg-split { grid-template-columns: 1fr; gap: 16px; } .tg-split__label { position: static; } .tg-split + .tg-split { margin-top: 56px; } }

/* Prose: long-form text (articles, case chapters, legal) */
.tg-prose { max-width: var(--text-max, 720px); font: 400 var(--tg-fs-body)/1.7 var(--font-sans); color: var(--ink); }
.tg-prose > * { margin: 0; }
.tg-prose > * + * { margin-top: 24px; }
.tg-prose .tg-lead { font-size: var(--tg-fs-body-l); line-height: 1.55; }
.tg-prose h2 { margin-top: 64px; font: 400 var(--tg-fs-h3)/1.2 var(--font-sans); }
.tg-prose h3 { margin-top: 40px; font: 500 20px/1.3 var(--font-sans); }
.tg-prose a { color: var(--link-small); text-underline-offset: 3px; }
.tg-prose ul, .tg-prose ol { padding-left: 24px; }
.tg-prose li + li { margin-top: 8px; }
.tg-prose ul li::marker { color: var(--accent); }
.tg-prose blockquote { margin: 48px 0; padding: 0; font: 800 var(--tg-fs-case)/1.2 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; }
.tg-prose blockquote::before { content: ""; display: block; width: 14px; height: 16px; margin-bottom: 16px; background: var(--accent); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.tg-prose figure { margin: 48px 0; }

/* Deliverables / values: numbered editorial list */
.tg-numlist { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--tg-gutter); }
.tg-numlist li { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 8px 16px; padding: 28px 0; border-top: var(--border-hairline,1px) solid var(--border); }
.tg-numlist__n { font: 900 22px/1.2 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; color: var(--accent); }
.tg-numlist h3 { margin: 0; font: 400 22px/1.3 var(--font-sans); }
.tg-numlist p { grid-column: 2; margin: 0; font: 400 16px/1.6 var(--font-sans); color: var(--ink-secondary); }
.tg-numlist--one { grid-template-columns: 1fr; }
.tg-on-dark .tg-numlist li { border-top-color: var(--border-on-dark); }
.tg-on-dark .tg-numlist__n { color: var(--accent-on-dark); }
.tg-on-dark .tg-numlist p { color: var(--ink-secondary-on-dark); }
@media (max-width: 767px) { .tg-numlist { grid-template-columns: 1fr; } }

/* Person card (About → team) */
.tg-person { display: grid; gap: 16px; }
.tg-person .tg-media { aspect-ratio: 4 / 5; }
.tg-person h3 { margin: 0; font: 400 22px/1.2 var(--font-sans); }
.tg-person p { margin: 4px 0 0; font: 400 15px/1.4 var(--font-sans); color: var(--ink-secondary); }

/* Contact panel beside the form */
.tg-contact { display: grid; gap: 32px; align-content: start; padding: 40px; border-radius: var(--radius-24); background: var(--surface-alt); }
.tg-contact h2 { margin: 0; font: 400 var(--tg-fs-h3)/1.2 var(--font-sans); }
.tg-contact dl { margin: 0; display: grid; gap: 20px; }
.tg-contact dt { font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-secondary); margin-bottom: 4px; }
.tg-contact dd { margin: 0; }
.tg-contact dd a { color: var(--ink); font: 400 20px/1.4 var(--font-sans); text-underline-offset: 4px; text-decoration-thickness: 1.5px; }
.tg-contact ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; counter-reset: nx; }
.tg-contact ol li { counter-increment: nx; display: grid; grid-template-columns: 32px 1fr; font: 400 16px/1.5 var(--font-sans); color: var(--ink-secondary); }
.tg-contact ol li::before { content: "0" counter(nx); font: 900 16px/1.5 var(--font-display); color: var(--ink); }
@media (max-width: 767px) { .tg-contact { padding: 28px; } }
.tg-form { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 24px; }
.tg-form > .tg-span { grid-column: 1 / -1; }
@media (max-width: 767px) { .tg-form { grid-template-columns: 1fr; } }

/* Legal table of contents */
.tg-toc { display: grid; gap: 4px; }
.tg-toc a { color: var(--ink-secondary); text-decoration: none; font: 400 15px/1.4 var(--font-sans); min-height: 36px; display: flex; align-items: center; border-left: 2px solid var(--border); padding-left: 16px; }
.tg-toc a:hover, .tg-toc a[aria-current="true"] { color: var(--ink); border-left-color: var(--accent); }

/* Next-project teaser */
.tg-next { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--tg-gutter); align-items: center; color: inherit; text-decoration: none; }
.tg-next__k { font: 500 13px/1.4 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-secondary-on-dark); }
.tg-next__t { margin: 12px 0 24px; font: 800 var(--tg-fs-statement)/1.05 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; }
.tg-next:hover .tg-media > img { transform: scale(1.03); }
@media (max-width: 767px) { .tg-next { grid-template-columns: 1fr; } }

/* 404 */
.tg-404 { padding: calc(var(--tg-header-h) + 96px) 0 128px; }
.tg-404__code { font: 900 clamp(160px, 22vw, 320px)/.8 var(--font-display); font-variation-settings: "SOFT" 100, "opsz" 144; color: var(--accent); letter-spacing: -0.03em; }
.tg-prose a.tg-tag { color: var(--ink); text-decoration: none; }
.tg-section--alt .tg-tag--static { background: var(--surface); }
