/*
 * Thane Professional Platform — canonical Insights components
 * Version 6.4.5
 */

/* Shared card component — no legacy rail/metric classes. */
.tpp-insight-card-v2 {
  min-width: 0;
  height: auto;
  min-height: 0;
  overflow: visible;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: linear-gradient(135deg, color-mix(in srgb,var(--panel) 96%,transparent), color-mix(in srgb,var(--panel2) 90%,transparent));
  box-sizing: border-box;
}
.tpp-insight-card-v2__link {
  display: grid;
  grid-template-columns: 22px minmax(0,1fr);
  gap: 10px;
  width: 100%;
  height: auto;
  min-height: 0;
  padding: 14px;
  color: inherit;
  text-decoration: none;
  box-sizing: border-box;
}
.tpp-insight-card-v2__icon {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  color: var(--insight-accent);
}
.tpp-insight-card-v2__icon svg {
  display:block;
  width:18px !important;
  height:18px !important;
  fill:none !important;
  stroke:currentColor !important;
  stroke-width:1.25 !important;
  stroke-linecap:round;
  stroke-linejoin:round;
  opacity:1 !important;
  filter:none !important;
}
.tpp-insight-card-v2__content {
  display:flex;
  flex-direction:column;
  min-width:0;
}
.tpp-insight-card-v2__title,
.tpp-insight-card-v2__heading,
.tpp-insight-card-v2__body,
.tpp-insight-card-v2__cta {display:block;margin:0;padding:0;}
.tpp-insight-card-v2__title {color:var(--insight-accent);font-size:10pt;line-height:1.2;font-weight:600;}
.tpp-insight-card-v2__heading {margin-top:4px;color:#6b7280;font-size:8pt;line-height:1.3;font-weight:700;}
.tpp-insight-card-v2__body {margin-top:6px;color:var(--text);font-size:8pt;line-height:1.4;font-weight:400;}
.tpp-insight-card-v2__cta {margin-top:10px;color:#6b7280;font-size:8pt;line-height:1.3;font-weight:600;}
html[data-theme="dark"] .tpp-insight-card-v2__heading,
html[data-theme="dark"] .tpp-insight-card-v2__cta {color:#aeb7c4;}
.tpp-insight-card-v2__link:hover .tpp-insight-card-v2__cta,
.tpp-insight-card-v2__link:focus-visible .tpp-insight-card-v2__cta {color:var(--insight-accent);}

/* Homepage rail: natural-height cards, reinforced spacing, no inherited fixed rows. */
.insight-rail {
  grid-template-rows:none !important;
  grid-auto-rows:auto !important;
  align-content:start;
  gap:12px !important;
  overflow:visible;
}
.insight-rail .tpp-insight-card-v2 {height:auto !important;min-height:0 !important;}
.insight-rail .tpp-insight-card-v2__link {padding:12px;min-height:0;}

/* Lower homepage and archive grids. */
.metrics-row {align-items:stretch;gap:16px !important;}
.metrics-row .tpp-insight-card-v2 {height:100%;min-height:190px;}
.metrics-row .tpp-insight-card-v2__link {height:100%;}
.metrics-row .tpp-insight-card-v2__cta {margin-top:auto;padding-top:10px;}
.insights-page .insights-card-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  grid-auto-rows:auto;
  gap:20px;
  align-items:start;
  min-width:0;
}
.insights-page .tpp-insight-card-v2__cta {margin-top:12px;}

/* Individual Executive Insight typography. */
.executive-insight-header h1 {font-size:36px;line-height:1.15;font-weight:600;}
.executive-insight-section h2,
.executive-insight-navigation > h2 {color:#4a4a4a;font-size:22px;line-height:1.25;font-weight:500;}
html[data-theme="dark"] .executive-insight-section h2,
html[data-theme="dark"] .executive-insight-navigation > h2 {color:#d0d0d0;}
.executive-insight-article .prose,
.executive-insight-article .prose p,
.executive-insight-article .prose li,
.executive-insight-article > p {font-size:12px;line-height:1.65;font-weight:400;}
.executive-insight-quote,.executive-insight-quote p {font-size:16px;line-height:1.5;font-weight:300;}

/* Shared compact executive CTA. */
.executive-cta {
  padding:24px 0;
}
.executive-cta__inner {
  display:flex;
  align-items:flex-end;
  justify-content:flex-start;
  gap:16px;
  border:0;
  border-radius:12px;
  padding:18px 20px;
  background:linear-gradient(120deg,rgba(8,124,255,.08),rgba(155,60,255,.025));
}
.executive-cta__copy {
  flex:0 1 auto;
  max-width:680px;
}
.executive-cta__copy h2 {margin:0 0 5px;color:#4a4a4a;font-size:24px;line-height:1.2;font-weight:500;}
.executive-cta__copy p {margin:0;color:var(--muted);font-size:13px;line-height:1.45;}
.executive-cta .button {flex:0 0 auto;min-height:38px;padding:0 16px;font-size:13px;font-weight:600;white-space:nowrap;}
html[data-theme="dark"] .executive-cta__copy h2 {color:#d0d0d0;}

/* Case-study long-form typography aligned with Insights. */
body.single .prose-entry > h1 {font-size:36px;line-height:1.15;font-weight:600;}
body.single .prose-entry .prose h2 {color:#4a4a4a;font-size:22px;line-height:1.25;font-weight:500;}
body.single .prose-entry .prose,
body.single .prose-entry .prose p,
body.single .prose-entry .prose li {font-size:12px;line-height:1.65;font-weight:400;}
html[data-theme="dark"] body.single .prose-entry .prose h2 {color:#d0d0d0;}

@media (max-width:900px) {
  .insight-rail {grid-template-columns:repeat(2,minmax(0,1fr)) !important;overflow:visible !important;}
  .metrics-row {grid-template-columns:repeat(2,minmax(0,1fr)) !important;overflow:visible !important;}
  .executive-cta__inner {align-items:flex-start;flex-direction:column;gap:12px;}
}
@media (max-width:620px) {
  .insight-rail,.metrics-row,.insights-page .insights-card-grid {grid-template-columns:1fr !important;}
  .executive-insight-header h1,body.single .prose-entry > h1 {font-size:28px;}
  .executive-cta__copy h2 {font-size:21px;}
}

/* ========================================================================
   Executive Summary Card — v6.4.0
   Isolated from all legacy .rail-card, .metric-card, and v2 card rules.
   ======================================================================== */
.executive-summary-card {
  min-width: 0;
  height: auto;
  min-height: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: linear-gradient(145deg,
    color-mix(in srgb, var(--panel) 97%, transparent),
    color-mix(in srgb, var(--panel2) 91%, transparent));
  box-sizing: border-box;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.executive-summary-card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--card-accent) 40%, var(--line));
  box-shadow: 0 10px 26px rgba(0,0,0,.12);
}
.executive-summary-card__link {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 16px;
  box-sizing: border-box;
  color: inherit;
  text-decoration: none;
}
.executive-summary-card__icon {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  margin: 0 0 8px;
  color: var(--card-accent);
}
.executive-summary-card__icon svg {
  display: block !important;
  width: 20px !important;
  height: 20px !important;
  min-width: 20px !important;
  min-height: 20px !important;
  fill: none !important;
  stroke: currentColor !important;
  stroke-width: 1.25 !important;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: 1 !important;
  filter: none !important;
}
.executive-summary-card__content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
}
.executive-summary-card__title,
.executive-summary-card__heading,
.executive-summary-card__body,
.executive-summary-card__cta {
  display: block;
  margin: 0;
  padding: 0;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}
.executive-summary-card__title {
  color: var(--card-accent);
  font-size: 10pt;
  line-height: 1.2;
  font-weight: 650;
}
.executive-summary-card__heading {
  margin-top: 5px;
  color: #6b7280;
  font-size: 8pt;
  line-height: 1.35;
  font-weight: 700;
}
.executive-summary-card__body {
  margin-top: 7px;
  color: var(--text);
  font-size: 8pt;
  line-height: 1.45;
  font-weight: 400;
}
.executive-summary-card__cta {
  margin-top: auto;
  padding-top: 10px;
  color: #6b7280;
  font-size: 8pt;
  line-height: 1.3;
  font-weight: 600;
}
html[data-theme="dark"] .executive-summary-card__heading,
html[data-theme="dark"] .executive-summary-card__cta { color: #aeb7c4; }
.executive-summary-card__link:hover .executive-summary-card__cta,
.executive-summary-card__link:focus-visible .executive-summary-card__cta { color: var(--card-accent); }

/* Homepage: natural-height cards with explicit spacing. */
.home .insight-rail {
  grid-template-rows: none !important;
  grid-auto-rows: auto !important;
  align-content: start !important;
  gap: 12px !important;
  overflow: visible;
}
.home .insight-rail .executive-summary-card { width: 100%; }
.home .executive-summary-card--rail .executive-summary-card__link { padding: 12px; }
.home .executive-summary-card--rail .executive-summary-card__icon { margin-bottom: 6px; }
.home .metrics-row {
  align-items: stretch;
  gap: 24px !important;
}
.home .metrics-row .executive-summary-card { height: 100%; min-height: 210px; }

/* Insights listing and related content. */
.insights-page .insights-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  grid-auto-rows: auto;
  gap: 24px;
  align-items: stretch;
}
.insights-page .executive-summary-card { min-height: 230px; }

@media (max-width: 980px) {
  .home .insight-rail {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    overflow: visible !important;
  }
  .home .metrics-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; overflow: visible !important; }
}
@media (max-width: 620px) {
  .home .insight-rail,
  .home .metrics-row,
  .insights-page .insights-card-grid { grid-template-columns: 1fr !important; }
  .executive-summary-card__link { padding: 14px; }
}

/* v6.4.1 — Homepage Insight header alignment */
.executive-summary-card__header {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  margin: 0 0 5px;
}
.executive-summary-card__header .executive-summary-card__icon {
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  margin: 0;
}
.executive-summary-card__header .executive-summary-card__icon svg {
  width: 18px !important;
  height: 18px !important;
  min-width: 18px !important;
  min-height: 18px !important;
}
.executive-summary-card__header .executive-summary-card__title {
  flex: 1 1 auto;
  min-width: 0;
}
.home .executive-summary-card--rail .executive-summary-card__header {
  gap: 7px;
  margin-bottom: 4px;
}


/* v6.4.2 — Homepage final: content-driven Insight card height */
.home .hero-grid {
  height: auto !important;
  min-height: 365px;
  align-items: stretch;
}
.home .hero-copy,
.home .hero-portrait {
  height: auto !important;
  min-height: 365px;
}
.home .insight-rail {
  grid-template-rows: none !important;
  grid-auto-rows: auto !important;
  align-content: start !important;
  overflow: visible !important;
}
.home .insight-rail .executive-summary-card {
  height: auto !important;
  min-height: 0 !important;
  overflow: visible !important;
}
.home .executive-summary-card--rail .executive-summary-card__link {
  height: auto !important;
  min-height: 0 !important;
  padding: 12px !important;
}
.home .executive-summary-card--rail .executive-summary-card__content {
  flex: 0 1 auto;
}
.home .executive-summary-card--rail .executive-summary-card__cta {
  margin-top: 10px;
}


/* ========================================================================
   v6.4.3 — Adaptive homepage Insight tiles
   Every homepage tile sizes from its own rendered content. These rules
   intentionally override legacy fixed-height, equal-height, and stretch rules.
   ======================================================================== */
.home .insight-rail,
.home .metrics-row {
  grid-auto-rows: auto !important;
  align-items: start !important;
  align-content: start !important;
  overflow: visible !important;
}

.home .insight-rail .executive-summary-card,
.home .metrics-row .executive-summary-card,
.home .executive-summary-card--rail,
.home .executive-summary-card--metric {
  align-self: start !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
}

.home .insight-rail .executive-summary-card__link,
.home .metrics-row .executive-summary-card__link,
.home .executive-summary-card--rail .executive-summary-card__link,
.home .executive-summary-card--metric .executive-summary-card__link {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
}

.home .insight-rail .executive-summary-card__content,
.home .metrics-row .executive-summary-card__content,
.home .executive-summary-card--rail .executive-summary-card__content,
.home .executive-summary-card--metric .executive-summary-card__content {
  flex: 0 0 auto !important;
}

.home .insight-rail .executive-summary-card__cta,
.home .metrics-row .executive-summary-card__cta,
.home .executive-summary-card--rail .executive-summary-card__cta,
.home .executive-summary-card--metric .executive-summary-card__cta {
  margin-top: 10px !important;
  padding-top: 0 !important;
}


/* ========================================================================
   v6.4.5 — Production correction: true intrinsic homepage Insight sizing
   The rail previously remained a flex column. Flex shrink compressed each
   card box into the hero height while its text overflowed into adjacent cards.
   Intrinsic grid rows and non-shrinking cards keep each border around all text.
   ======================================================================== */
.home .hero-grid {
  height: auto !important;
  min-height: 0 !important;
  align-items: start !important;
}
.home .hero-copy,
.home .hero-portrait {
  height: auto !important;
  min-height: 520px;
}
.home .insight-rail {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  grid-template-rows: none !important;
  grid-auto-flow: row !important;
  grid-auto-rows: max-content !important;
  align-self: start !important;
  align-items: start !important;
  align-content: start !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  gap: 15px !important;
}
.home .insight-rail-title {
  align-self: start !important;
}
.home .insight-rail .executive-summary-card,
.home .executive-summary-card--rail {
  display: block !important;
  flex: 0 0 auto !important;
  align-self: start !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
}
.home .insight-rail .executive-summary-card__link,
.home .executive-summary-card--rail .executive-summary-card__link {
  display: block !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
}
.home .insight-rail .executive-summary-card__content,
.home .executive-summary-card--rail .executive-summary-card__content {
  display: block !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
}
.home .insight-rail .executive-summary-card__body,
.home .executive-summary-card--rail .executive-summary-card__body {
  display: block !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}
.home .insight-rail .executive-summary-card__cta,
.home .executive-summary-card--rail .executive-summary-card__cta {
  display: block !important;
  margin-top: 10px !important;
  padding-top: 0 !important;
  position: static !important;
}

.home .metrics-row {
  grid-auto-rows: max-content !important;
  align-items: start !important;
}
.home .metrics-row .executive-summary-card,
.home .executive-summary-card--metric {
  flex: 0 0 auto !important;
  align-self: start !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
}
.home .metrics-row .executive-summary-card__link,
.home .executive-summary-card--metric .executive-summary-card__link,
.home .metrics-row .executive-summary-card__content,
.home .executive-summary-card--metric .executive-summary-card__content {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
}

@media (max-width: 980px) {
  .home .insight-rail {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .home .insight-rail-title {
    grid-column: 1 / -1;
  }
  .home .hero-copy,
  .home .hero-portrait {
    min-height: 0;
  }
}
@media (max-width: 620px) {
  .home .insight-rail {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}


/* ========================================================================
   v6.4.9 — Canonical interior title weight (final-loaded stylesheet)
   This file is enqueued after main.css, so the rule belongs here to prevent
   later cascade and semantic-element defaults from restoring bold weight.
   ======================================================================== */
body:not(.home) .interior-main .page-intro h1,
body:not(.home) .interior-main .compact-page-entry > h1,
body:not(.home) .standalone-page .compact-page-entry > h1,
body:not(.home) .interior-main .prose h1,
body:not(.home) .interior-main .prose h2,
body:not(.home) .interior-main .prose h3,
body:not(.home) .interior-main .prose h4,
body:not(.home) .interior-main .compact-page-content h1,
body:not(.home) .interior-main .compact-page-content h2,
body:not(.home) .interior-main .compact-page-content h3,
body:not(.home) .interior-main .compact-page-content h4,
body:not(.home) .standalone-page .prose h1,
body:not(.home) .standalone-page .prose h2,
body:not(.home) .standalone-page .prose h3,
body:not(.home) .standalone-page .prose h4,
body:not(.home) .standalone-page .compact-page-content h1,
body:not(.home) .standalone-page .compact-page-content h2,
body:not(.home) .standalone-page .compact-page-content h3,
body:not(.home) .standalone-page .compact-page-content h4,
body:not(.home) .philosophy-pillars > h2,
body:not(.home) .philosophy-pillar h2,
body:not(.home) .philosophy-pillar h3,
body:not(.home) .service-offering-content h2,
body:not(.home) .service-offering-content h3,
body:not(.home) .contact-content-layout h2,
body:not(.home) .contact-content-layout h3,
body:not(.home) .resume-entry h2,
body:not(.home) .resume-entry h3,
body:not(.home) .experience-details h2,
body:not(.home) .experience-details h3,
body:not(.home) .capability-card__title,
body:not(.home) .capability-card__headline {
  color: #6b7280 !important;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
  font-synthesis: none !important;
  text-shadow: none !important;
}

/* Strong is used as a structural title element in capability cards. It must
   not inherit the browser's semantic bold treatment. */
body:not(.home) .capability-card strong.capability-card__title {
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
}

html[data-theme="dark"] body:not(.home) .interior-main .page-intro h1,
html[data-theme="dark"] body:not(.home) .interior-main h1,
html[data-theme="dark"] body:not(.home) .interior-main h2,
html[data-theme="dark"] body:not(.home) .interior-main h3,
html[data-theme="dark"] body:not(.home) .interior-main h4,
html[data-theme="dark"] body:not(.home) .standalone-page h1,
html[data-theme="dark"] body:not(.home) .standalone-page h2,
html[data-theme="dark"] body:not(.home) .standalone-page h3,
html[data-theme="dark"] body:not(.home) .standalone-page h4,
html[data-theme="dark"] body:not(.home) .capability-card__title,
html[data-theme="dark"] body:not(.home) .capability-card__headline {
  color: #aeb7c4 !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
}


/* ========================================================================
   v6.5.0 — Executive Brand Polish
   Canonical interior typography, signature rainbow divider, and Contact hub.
   ======================================================================== */
:root {
  --tpp-editorial-heading: #6b7280;
  --tpp-editorial-heading-dark: #aeb7c4;
  --tpp-rainbow-divider: linear-gradient(90deg,
    transparent 0%, #e74c3c 3%, #f39c12 18%, #f1c40f 32%,
    #2ecc71 48%, #1abc9c 63%, #3498db 78%, #8e44ad 94%, transparent 100%);
}

body:not(.home) .page-intro {
  position: relative;
  border-bottom: 0 !important;
}
body:not(.home) .page-intro::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: min(980px, calc(100% - 40px));
  height: 2px;
  transform: translateX(-50%);
  border-radius: 999px;
  background: var(--tpp-rainbow-divider);
  opacity: .82;
  box-shadow: 0 0 2px rgba(52, 152, 219, .22);
  pointer-events: none;
}

body:not(.home) .page-intro h1,
body:not(.home) .interior-main h2,
body:not(.home) .interior-main h3,
body:not(.home) .interior-main h4,
body:not(.home) .standalone-page h1,
body:not(.home) .standalone-page h2,
body:not(.home) .standalone-page h3,
body:not(.home) .standalone-page h4,
body:not(.home) .capability-card__title,
body:not(.home) .capability-card__headline {
  color: var(--tpp-editorial-heading) !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
  font-synthesis: none !important;
}
html[data-theme="dark"] body:not(.home) .page-intro h1,
html[data-theme="dark"] body:not(.home) .interior-main h2,
html[data-theme="dark"] body:not(.home) .interior-main h3,
html[data-theme="dark"] body:not(.home) .interior-main h4,
html[data-theme="dark"] body:not(.home) .standalone-page h1,
html[data-theme="dark"] body:not(.home) .standalone-page h2,
html[data-theme="dark"] body:not(.home) .standalone-page h3,
html[data-theme="dark"] body:not(.home) .standalone-page h4 {
  color: var(--tpp-editorial-heading-dark) !important;
}

.contact-hub-section { padding-top: 38px; }
.contact-hub-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}
.contact-method-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
  text-decoration: none;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.contact-method-card:hover,
.contact-method-card:focus-visible {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--blue) 45%, var(--line));
  box-shadow: 0 12px 30px rgba(8, 124, 255, .08);
}
.contact-method-card__label {
  margin-bottom: 11px;
  color: var(--blue);
  font-size: 11px;
  line-height: 1;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.contact-method-card strong {
  color: var(--tpp-editorial-heading);
  font-size: 17px;
  line-height: 1.25;
  font-weight: 400;
}
.contact-method-card > span:last-child {
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
  overflow-wrap: anywhere;
}
.contact-availability {
  display: flex;
  align-items: center;
  gap: 13px;
  margin: 0 0 26px;
  padding: 15px 18px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: color-mix(in srgb, var(--panel) 88%, transparent);
}
.contact-availability__indicator {
  width: 9px;
  height: 9px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: #2ecc71;
  box-shadow: 0 0 0 4px rgba(46, 204, 113, .12);
}
.contact-availability div { display: flex; flex-direction: column; gap: 3px; }
.contact-availability div > span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.contact-availability strong { color: var(--text); font-size: 13px; font-weight: 500; }
.contact-main-layout { margin-top: 0; }
.contact-content-layout { min-width: 0; }
.contact-content-layout .wp-block-button__link,
.contact-content-layout button,
.contact-content-layout input[type="submit"] { min-height: 44px; }
.contact-content-layout input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.contact-content-layout select,
.contact-content-layout textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--text);
  padding: 11px 12px;
}
.contact-content-layout textarea { min-height: 150px; resize: vertical; }
html[data-theme="dark"] .contact-method-card strong { color: var(--tpp-editorial-heading-dark); }

@media (max-width: 780px) {
  .contact-hub-grid { grid-template-columns: 1fr; }
  body:not(.home) .page-intro::after { width: calc(100% - 30px); }
}


/* ========================================================================
   v6.5.1 — Divider and Contact Refinement
   Shorter page-title divider, rainbow section rules, and two-card Contact hub.
   ======================================================================== */
:root {
  --tpp-rainbow-rule: linear-gradient(90deg,
    #e74c3c 0%, #f39c12 17%, #f1c40f 32%, #2ecc71 49%,
    #1abc9c 64%, #3498db 80%, #8e44ad 100%);
}

/* Keep the page-title brand rule clear of the companion artwork/right edge. */
body:not(.home) .page-intro::after {
  width: min(760px, 68vw) !important;
}

/* The blue rules beneath section titles are now the signature rainbow rule. */
body:not(.home) .interior-main .prose h2,
body:not(.home) .interior-main .compact-page-content h2,
body:not(.home) .interior-main .prose-entry h2,
body:not(.home) .standalone-page .prose h2,
body:not(.home) .standalone-page .compact-page-content h2,
body:not(.home) .standalone-page .prose-entry h2 {
  border-bottom: 0 !important;
  padding-bottom: .58em !important;
  background-image: var(--tpp-rainbow-rule) !important;
  background-repeat: no-repeat !important;
  background-position: left bottom !important;
  background-size: min(100%, 560px) 2px !important;
}

/* Contact now presents Email and optional LinkedIn only. */
.contact-hub-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 820px;
}

@media (max-width: 780px) {
  body:not(.home) .page-intro::after { width: calc(100% - 48px) !important; }
  .contact-hub-grid { grid-template-columns: 1fr; max-width: none; }
}

/* ========================================================================
   v6.5.2 — Contained Interior Title Divider
   Anchor the title divider to the page-shell rather than the full page row.
   ======================================================================== */
body:not(.home) .page-intro {
  --tpp-title-divider-offset: 1.125rem;
}

/* Retire the page-wide rule that could continue beneath companion artwork. */
body:not(.home) .page-intro::after {
  content: none !important;
  display: none !important;
}

body:not(.home) .page-intro > .page-shell,
body:not(.home) .page-intro > .tpp-shell.page-shell {
  position: relative;
}

body:not(.home) .page-intro > .page-shell::after,
body:not(.home) .page-intro > .tpp-shell.page-shell::after {
  content: "";
  position: absolute;
  left: var(--content-gutter, 34px);
  bottom: calc(-1 * var(--tpp-title-divider-offset));
  width: min(560px, calc(100% - (2 * var(--content-gutter, 34px))));
  height: 2px;
  border-radius: 999px;
  background: var(--tpp-rainbow-divider);
  opacity: .84;
  box-shadow: 0 0 2px rgba(52, 152, 219, .2);
  pointer-events: none;
}

@media (max-width: 620px) {
  body:not(.home) .page-intro {
    --tpp-title-divider-offset: .9rem;
  }
  body:not(.home) .page-intro > .page-shell::after,
  body:not(.home) .page-intro > .tpp-shell.page-shell::after {
    left: 20px;
    width: min(420px, calc(100% - 40px));
  }
}

/* ========================================================================
   v6.5.3 — Content-Column Rainbow Dividers
   Match title and section rules to the readable text column rather than a
   fixed pixel cap or the full artwork-inclusive page row.
   ======================================================================== */

/* Section-heading rules span the complete width of their text column. */
body:not(.home) .interior-main .prose h2,
body:not(.home) .interior-main .compact-page-content h2,
body:not(.home) .interior-main .prose-entry h2,
body:not(.home) .standalone-page .prose h2,
body:not(.home) .standalone-page .compact-page-content h2,
body:not(.home) .standalone-page .prose-entry h2 {
  background-size: 100% 2px !important;
}

/* Default interior pages without a companion rail use the full text width. */
body:not(.home) .page-intro > .page-shell::after,
body:not(.home) .page-intro > .tpp-shell.page-shell::after {
  width: calc(100% - (2 * var(--content-gutter, 34px)));
}

/* Companion-artwork pages: align the header rule with the actual reading
   column used below. On wide screens the layout borrows up to 96px from the
   outer-right area, so only the net rail footprint is removed. */
@media (min-width: 1180px) {
  .philosophy-page .page-intro > .page-shell::after,
  .philosophy-page .page-intro > .tpp-shell.page-shell::after,
  .services-page .page-intro > .page-shell::after,
  .services-page .page-intro > .tpp-shell.page-shell::after,
  .case-studies-page .page-intro > .page-shell::after,
  .case-studies-page .page-intro > .tpp-shell.page-shell::after,
  .contact-page .page-intro > .page-shell::after,
  .contact-page .page-intro > .tpp-shell.page-shell::after,
  .insights-page .page-intro > .page-shell::after,
  .insights-page .page-intro > .tpp-shell.page-shell::after {
    width: calc(100% - (2 * var(--content-gutter, 34px)) - 188px);
  }
}

@media (max-width: 1179px) and (min-width: 768px) {
  .philosophy-page .page-intro > .page-shell::after,
  .philosophy-page .page-intro > .tpp-shell.page-shell::after,
  .services-page .page-intro > .page-shell::after,
  .services-page .page-intro > .tpp-shell.page-shell::after,
  .case-studies-page .page-intro > .page-shell::after,
  .case-studies-page .page-intro > .tpp-shell.page-shell::after,
  .contact-page .page-intro > .page-shell::after,
  .contact-page .page-intro > .tpp-shell.page-shell::after,
  .insights-page .page-intro > .page-shell::after,
  .insights-page .page-intro > .tpp-shell.page-shell::after {
    width: calc(100% - (2 * var(--content-gutter, 34px)) - 214px);
  }
}

@media (max-width: 767px) {
  body:not(.home) .page-intro > .page-shell::after,
  body:not(.home) .page-intro > .tpp-shell.page-shell::after {
    left: 20px;
    width: calc(100% - 40px);
  }
}

/* ========================================================================
   v6.5.5 — Safe Editorial-Measure Header Dividers
   Roll back the v6.5.4 header-grid experiment. The header divider is purely
   decorative and uses the established 780px readable text measure; no page
   shell, content grid, or companion artwork geometry is modified.
   ======================================================================== */
body:not(.home) .page-intro > .page-shell::after,
body:not(.home) .page-intro > .tpp-shell.page-shell::after {
  left: var(--content-gutter, 34px) !important;
  width: min(780px, calc(100% - (2 * var(--content-gutter, 34px)))) !important;
  max-width: calc(100% - (2 * var(--content-gutter, 34px))) !important;
}

@media (max-width: 620px) {
  body:not(.home) .page-intro > .page-shell::after,
  body:not(.home) .page-intro > .tpp-shell.page-shell::after {
    left: 20px !important;
    width: calc(100% - 40px) !important;
    max-width: calc(100% - 40px) !important;
  }
}


/* ========================================================================
   v6.5.6 — Simplified Contact Links
   Plain email and LinkedIn links; no contact cards or resume action.
   ======================================================================== */
.contact-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px 28px;
  margin: 0 0 24px;
}
.contact-link {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.4;
  text-decoration: none;
  overflow-wrap: anywhere;
  transition: color .18s ease;
}
.contact-link:hover,
.contact-link:focus-visible {
  color: var(--text);
}
.contact-link__icon {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  color: currentColor;
}
.contact-link__icon--email {
  display: inline-grid;
  place-items: center;
  font-size: 17px;
  font-weight: 500;
}
.contact-link--linkedin:hover,
.contact-link--linkedin:focus-visible {
  color: #0a66c2;
}
@media (max-width: 620px) {
  .contact-links { align-items: flex-start; flex-direction: column; gap: 12px; }
}

/* ========================================================================
   v6.5.7 — Contact Page Final Polish
   Vertical contact links, controlled location block, and top-aligned artwork.
   ======================================================================== */
.contact-page .contact-main-layout {
  margin-top: 0;
  align-items: start;
}
.contact-page .contact-main-layout > .tpp-companion-artwork {
  align-self: start;
  margin-top: clamp(-150px, -11vw, -112px);
}
.contact-page .contact-content-layout {
  min-width: 0;
  padding-bottom: 44px;
}
.contact-connect {
  margin-top: 34px;
}
.contact-connect > h2 {
  margin: 0 0 18px !important;
  padding: 0 !important;
  background: none !important;
  border: 0 !important;
  color: var(--tpp-editorial-heading) !important;
  font-size: 18px !important;
  font-weight: 400 !important;
  letter-spacing: .02em;
  text-transform: uppercase;
}
html[data-theme="dark"] .contact-connect > h2 {
  color: var(--tpp-editorial-heading-dark) !important;
}
.contact-page .contact-links {
  display: grid;
  gap: 14px;
  margin: 0;
}
.contact-link-row {
  display: grid;
  grid-template-columns: 24px max-content minmax(0, 1fr);
  align-items: center;
  column-gap: 10px;
  min-width: 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.45;
}
.contact-link-row .contact-link__icon {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
}
.contact-link-row--email .contact-link__icon { color: #e74c3c; }
.contact-link-row--phone .contact-link__icon { color: #2ecc71; }
.contact-link-row--linkedin .contact-link__icon { color: #0a66c2; }
.contact-link-label {
  color: var(--text);
  font-weight: 500;
}
.contact-link-row a {
  min-width: 0;
  color: var(--blue);
  text-decoration: none;
  overflow-wrap: anywhere;
  transition: color .18s ease;
}
.contact-link-row a:hover,
.contact-link-row a:focus-visible {
  color: var(--text);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.contact-link-row--linkedin a:hover,
.contact-link-row--linkedin a:focus-visible { color: #0a66c2; }
.contact-location {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  width: 100%;
  margin: 42px 0 0;
  padding: 0 16px;
  text-align: center;
}
.contact-location__icon {
  width: 30px;
  height: 30px;
  margin-bottom: 2px;
  color: #8e44ad;
}
.contact-location strong {
  color: var(--text);
  font-size: 15px;
  font-weight: 500;
}
.contact-location span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 620px) {
  .contact-link-row {
    grid-template-columns: 22px 1fr;
    row-gap: 2px;
  }
  .contact-link-label { grid-column: 2; }
  .contact-link-row a { grid-column: 2; }
  .contact-location { margin-top: 34px; }
}


/* ========================================================================
   v6.6.0 — Canonical Companion Artwork System
   One layout and one sticky implementation for all interior page artwork.
   ======================================================================== */
.tpp-companion-layout {
  --tpp-companion-width: 220px;
  --tpp-companion-gap: clamp(28px, 4vw, 64px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--tpp-companion-width);
  gap: var(--tpp-companion-gap);
  align-items: start;
  overflow: visible;
  min-width: 0;
}
.tpp-companion-layout.is-narrow { --tpp-companion-width: 180px; }
.tpp-companion-layout.is-medium { --tpp-companion-width: 220px; }
.tpp-companion-layout.is-wide { --tpp-companion-width: 260px; }
.tpp-companion-layout.has-no-artwork { grid-template-columns: minmax(0, 1fr); }
.tpp-companion-content { min-width: 0; }

.tpp-companion-artwork {
  width: var(--tpp-companion-width);
  max-width: 100%;
  align-self: start;
  justify-self: end;
  margin: var(--tpp-measured-artwork-lift, -120px) 0 0;
  transform: none;
  z-index: 2;
}
.tpp-companion-artwork.is-sticky {
  position: sticky;
  top: calc(var(--header-height, 84px) + 20px);
}
.tpp-companion-theme-image,
.tpp-companion-artwork-image {
  width: 100%;
  height: auto;
  max-width: 100%;
}
.tpp-companion-artwork-image {
  display: block;
  max-height: calc(100vh - var(--header-height, 84px) - 44px);
  object-fit: contain;
  object-position: top center;
}
[data-theme="dark"] .tpp-companion-theme-image.is-light-artwork,
body.dark-theme .tpp-companion-theme-image.is-light-artwork { display: none; }
[data-theme="dark"] .tpp-companion-theme-image.is-dark-artwork,
body.dark-theme .tpp-companion-theme-image.is-dark-artwork { display: block; }
[data-theme="light"] .tpp-companion-theme-image.is-dark-artwork,
body:not(.dark-theme) .tpp-companion-theme-image.is-dark-artwork { display: none; }
[data-theme="light"] .tpp-companion-theme-image.is-light-artwork,
body:not(.dark-theme) .tpp-companion-theme-image.is-light-artwork { display: block; }

@media (max-width: 1179px) and (min-width: 768px) {
  .tpp-companion-layout {
    --tpp-companion-gap: clamp(22px, 3vw, 40px);
  }
  .tpp-companion-layout.is-narrow { --tpp-companion-width: 150px; }
  .tpp-companion-layout.is-medium { --tpp-companion-width: 180px; }
  .tpp-companion-layout.is-wide { --tpp-companion-width: 210px; }
  .tpp-companion-artwork {
    margin-top: var(--tpp-measured-artwork-lift, -96px);
  }
  .tpp-companion-artwork.is-sticky {
    top: calc(var(--header-height, 84px) + 16px);
  }
}

@media (max-width: 767px) {
  .tpp-companion-layout,
  .tpp-companion-layout.is-narrow,
  .tpp-companion-layout.is-medium,
  .tpp-companion-layout.is-wide {
    display: block;
  }
  .tpp-companion-artwork { display: none; }
}

/* ========================================================================
   v6.6.1 — Services-Canonical Companion Artwork
   Every interior page uses the same rail, sticky inner element, width system,
   measured top alignment, responsive behavior, and theme-image switching.
   ======================================================================== */
.tpp-companion-layout {
  --tpp-companion-width: 220px !important;
  --tpp-companion-gap: clamp(28px, 4vw, 64px) !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) var(--tpp-companion-width) !important;
  gap: var(--tpp-companion-gap) !important;
  align-items: stretch !important;
  overflow: visible !important;
  width: 100% !important;
  min-width: 0 !important;
}
.tpp-companion-layout.is-narrow { --tpp-companion-width: 180px !important; }
.tpp-companion-layout.is-medium { --tpp-companion-width: 220px !important; }
.tpp-companion-layout.is-wide { --tpp-companion-width: 260px !important; }
.tpp-companion-layout.has-no-artwork { grid-template-columns: minmax(0, 1fr) !important; }
.tpp-companion-layout > .tpp-companion-content,
.tpp-companion-layout > article,
.tpp-companion-layout > div:first-child { min-width: 0 !important; }

.tpp-companion-artwork,
.tpp-companion-artwork.is-narrow,
.tpp-companion-artwork.is-medium,
.tpp-companion-artwork.is-wide {
  width: var(--tpp-companion-width) !important;
  max-width: 100% !important;
  min-height: 100% !important;
  align-self: stretch !important;
  justify-self: end !important;
  margin: var(--tpp-measured-artwork-lift, -120px) 0 0 !important;
  position: relative !important;
  top: auto !important;
  transform: none !important;
  overflow: visible !important;
  z-index: 2 !important;
}

.tpp-companion-artwork-sticky {
  position: sticky !important;
  top: calc(var(--header-height, 84px) + 20px) !important;
  width: 100% !important;
  max-width: 100% !important;
}

.tpp-companion-theme-image {
  width: 100% !important;
  max-width: 100% !important;
}
.tpp-companion-artwork-image {
  display: block !important;
  width: auto !important;
  max-width: 100% !important;
  height: auto !important;
  max-height: var(--tpp-artwork-max-height, calc(100vh - var(--header-height, 84px) - 44px)) !important;
  margin: 0 auto !important;
  object-fit: contain !important;
  object-position: top center !important;
}

/* Theme switching is controlled only by the root data-theme attribute. */
html:not([data-theme="dark"]) .tpp-companion-theme-image.is-light-artwork { display: block !important; }
html:not([data-theme="dark"]) .tpp-companion-theme-image.is-dark-artwork { display: none !important; }
html[data-theme="light"] .tpp-companion-theme-image.is-light-artwork { display: block !important; }
html[data-theme="light"] .tpp-companion-theme-image.is-dark-artwork { display: none !important; }
html[data-theme="dark"] .tpp-companion-theme-image.is-light-artwork { display: none !important; }
html[data-theme="dark"] .tpp-companion-theme-image.is-dark-artwork { display: block !important; }

@media (min-width: 1180px) {
  .interior-main .tpp-companion-layout {
    width: calc(100% + clamp(48px, 6vw, 96px)) !important;
  }
}

@media (max-width: 1179px) and (min-width: 768px) {
  .tpp-companion-layout { --tpp-companion-gap: clamp(22px, 3vw, 40px) !important; }
  .tpp-companion-layout.is-narrow { --tpp-companion-width: 150px !important; }
  .tpp-companion-layout.is-medium { --tpp-companion-width: 180px !important; }
  .tpp-companion-layout.is-wide { --tpp-companion-width: 210px !important; }
  .tpp-companion-artwork { margin-top: var(--tpp-measured-artwork-lift, -96px) !important; }
  .tpp-companion-artwork-sticky { top: calc(var(--header-height, 84px) + 16px) !important; }
}

@media (max-width: 767px) {
  .tpp-companion-layout,
  .tpp-companion-layout.is-narrow,
  .tpp-companion-layout.is-medium,
  .tpp-companion-layout.is-wide {
    display: block !important;
    width: 100% !important;
  }
  .tpp-companion-artwork { display: none !important; }
}

/* ========================================================================
   v6.6.2 — Canonical rail sizing correction
   Artwork always fills the configured rail width. Sticky behavior belongs to
   the full-height rail/sticky wrapper and must not shrink the image to fit the
   viewport height.
   ======================================================================== */
.tpp-companion-artwork-sticky,
.tpp-companion-theme-image,
.tpp-companion-artwork-image {
  width: 100% !important;
  max-width: none !important;
}
.tpp-companion-artwork-image {
  height: auto !important;
  max-height: none !important;
  margin: 0 !important;
  object-fit: contain !important;
  object-position: top center !important;
}
@media (max-width: 1179px) and (min-width: 768px) {
  .tpp-companion-layout.is-narrow { --tpp-companion-width: 180px !important; }
  .tpp-companion-layout.is-medium { --tpp-companion-width: 220px !important; }
  .tpp-companion-layout.is-wide { --tpp-companion-width: 260px !important; }
}

/* ========================================================================
   v6.6.4 — Canonical Pillar Typography & Density
   Compact executive hierarchy: inline accent icon/title, bold supporting
   statement, and smaller editorial body copy.
   ======================================================================== */
.tpp-pillar-section { margin-top: 2.25rem; }
.tpp-pillar-section > h2 { margin-bottom: .9rem; }
.tpp-pillar-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  align-items: stretch;
}
.tpp-pillar-card {
  --pillar-accent: var(--blue);
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(145deg,
    color-mix(in srgb, var(--panel) 97%, transparent),
    color-mix(in srgb, var(--panel2) 91%, transparent));
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.tpp-pillar-card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--pillar-accent) 42%, var(--line));
  box-shadow: 0 10px 22px rgba(0,0,0,.12);
}
.tpp-pillar-card.accent-red { --pillar-accent: var(--red); }
.tpp-pillar-card.accent-orange { --pillar-accent: var(--orange); }
.tpp-pillar-card.accent-gold { --pillar-accent: var(--gold); }
.tpp-pillar-card.accent-green { --pillar-accent: var(--green); }
.tpp-pillar-card.accent-blue { --pillar-accent: var(--blue); }
.tpp-pillar-card.accent-purple { --pillar-accent: var(--purple); }
.tpp-pillar-card__header {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  width: 100%;
}
.tpp-pillar-card__icon {
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  margin-top: 0;
  color: var(--pillar-accent) !important;
}
.tpp-pillar-card__icon svg,
.tpp-pillar-card__icon img {
  width: 20px;
  height: 20px;
  display: block;
  color: inherit;
  stroke: currentColor;
}
body:not(.home) .interior-main .tpp-pillar-card__title,
.tpp-pillar-card__title {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
  font-size: 12pt !important;
  line-height: 1.22 !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  font-synthesis: none !important;
  text-wrap: balance;
}
.tpp-pillar-card.accent-red .tpp-pillar-card__title { color: var(--red) !important; }
.tpp-pillar-card.accent-orange .tpp-pillar-card__title { color: var(--orange) !important; }
.tpp-pillar-card.accent-gold .tpp-pillar-card__title { color: var(--gold) !important; }
.tpp-pillar-card.accent-green .tpp-pillar-card__title { color: var(--green) !important; }
.tpp-pillar-card.accent-blue .tpp-pillar-card__title { color: var(--blue) !important; }
.tpp-pillar-card.accent-purple .tpp-pillar-card__title { color: var(--purple) !important; }
.tpp-pillar-card__content {
  width: 100%;
  margin-top: 10px;
}
body:not(.home) .interior-main .tpp-pillar-card__headline,
.tpp-pillar-card__headline {
  width: 100%;
  margin: 0 !important;
  color: var(--tpp-editorial-heading, #6b7280) !important;
  font-size: 10pt !important;
  line-height: 1.35 !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  font-style: normal !important;
}
html[data-theme="dark"] body:not(.home) .interior-main .tpp-pillar-card__headline,
html[data-theme="dark"] .tpp-pillar-card__headline {
  color: var(--tpp-editorial-heading-dark, #aeb7c4) !important;
}
.tpp-pillar-card__body {
  width: 100%;
  margin: 8px 0 0 !important;
  color: var(--muted) !important;
  font-size: 9.5pt !important;
  line-height: 1.45 !important;
  font-weight: 400 !important;
}
.tpp-pillar-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 10px;
  color: var(--pillar-accent);
  font-size: 9.5pt;
  font-weight: 700;
  text-decoration: none;
}
html[data-theme="light"] .tpp-pillar-card { background: #fff; }
@media (max-width: 1080px) {
  .tpp-pillar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  .tpp-pillar-grid { grid-template-columns: 1fr; gap: 12px; }
  .tpp-pillar-card { padding: 13px; }
  .tpp-pillar-card__title { font-size: 12pt !important; }
}


/* ========================================================================
   v6.6.5 — Canonical Pillar Hierarchy Correction
   Authoritative front-end treatment: colored bold title, 9pt supporting
   statement, and compact 8pt body copy.
   ======================================================================== */
.tpp-pillar-card__title {
  color: var(--pillar-accent) !important;
  font-size: 12pt !important;
  line-height: 1.18 !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  letter-spacing: -.01em !important;
}
.tpp-pillar-card__headline {
  font-size: 9pt !important;
  line-height: 1.32 !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  margin-top: 0 !important;
}
.tpp-pillar-card__body {
  font-size: 8pt !important;
  line-height: 1.42 !important;
  font-weight: 400 !important;
  margin-top: 7px !important;
}
.tpp-pillar-card__content { margin-top: 9px !important; }
@media (max-width: 620px) {
  .tpp-pillar-card__title { font-size: 12pt !important; }
  .tpp-pillar-card__headline { font-size: 9pt !important; }
  .tpp-pillar-card__body { font-size: 8pt !important; }
}


/* 6.7.0 — streamlined contact form */
.contact-form-section {
  margin-top: 28px;
  padding-top: 0;
}
.contact-form-section > h2 {
  margin: 0 0 14px;
  padding-bottom: 7px;
  color: var(--tpp-editorial-heading, #7c8798) !important;
  font-weight: 400 !important;
  font-size: 18px;
  line-height: 1.2;
  border-bottom: 2px solid transparent;
  border-image: linear-gradient(90deg,#e74c3c 0%,#f39c12 17%,#f1c40f 33%,#2ecc71 50%,#1abc9c 64%,#3498db 80%,#8e44ad 100%) 1;
}
html[data-theme="dark"] .contact-form-section > h2 { color: var(--tpp-editorial-heading-dark, #b2bac6) !important; }
.tpp-contact-form { margin: 0; max-width: 780px; }
.tpp-contact-form__grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px 14px;
}
.tpp-contact-field { display: flex; flex-direction: column; gap: 5px; margin: 0; }
.tpp-contact-field > span {
  color: var(--text-muted, #7c8798);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
}
.tpp-contact-field > span em { color: #e74c3c; font-style: normal; }
.tpp-contact-field > span small { font-size: 10px; font-weight: 400; opacity: .8; }
.tpp-contact-field input,
.tpp-contact-field select,
.tpp-contact-field textarea {
  box-sizing: border-box;
  width: 100%;
  min-height: 38px !important;
  padding: 8px 10px !important;
  border: 1px solid color-mix(in srgb, var(--text, #223) 20%, transparent) !important;
  border-radius: 7px;
  background: color-mix(in srgb, var(--surface, #fff) 94%, transparent) !important;
  color: var(--text, #223) !important;
  font: inherit;
  font-size: 13px;
  line-height: 1.35;
}
html[data-theme="dark"] .tpp-contact-field input,
html[data-theme="dark"] .tpp-contact-field select,
html[data-theme="dark"] .tpp-contact-field textarea {
  background: rgba(255,255,255,.035) !important;
  border-color: rgba(255,255,255,.16) !important;
}
.tpp-contact-field input:focus,
.tpp-contact-field select:focus,
.tpp-contact-field textarea:focus {
  outline: 2px solid color-mix(in srgb, #3498db 65%, transparent);
  outline-offset: 1px;
  border-color: #3498db !important;
}
.tpp-contact-field--message { grid-column: 1 / -1; }
.tpp-contact-field--message textarea { min-height: 112px !important; resize: vertical; }
.tpp-contact-submit {
  margin-top: 13px;
  cursor: pointer;
}
/* v6.7.1: Contact submit action uses the site's canonical primary CTA styling. */
.tpp-contact-form .tpp-contact-submit.button-primary {
  background: linear-gradient(135deg,var(--blue),var(--blue2)) !important;
  border: 1px solid var(--blue) !important;
  color: #fff !important;
  box-shadow: 0 10px 30px rgba(8,124,255,.16);
}
.tpp-contact-form .tpp-contact-submit.button-primary:hover,
.tpp-contact-form .tpp-contact-submit.button-primary:focus-visible {
  filter: none;
  transform: translateY(-1px);
}
.tpp-contact-form__honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.contact-form-status {
  margin: 0 0 12px;
  padding: 9px 11px;
  border-radius: 6px;
  font-size: 12px;
  line-height: 1.4;
}
.contact-form-status.is-success { background: rgba(46,204,113,.10); border: 1px solid rgba(46,204,113,.35); color: #269b58; }
.contact-form-status.is-error { background: rgba(231,76,60,.08); border: 1px solid rgba(231,76,60,.30); color: #c4463a; }
.contact-form-section + .contact-connect { margin-top: 26px; }
@media (max-width: 720px) {
  .tpp-contact-form__grid { grid-template-columns: 1fr; gap: 10px; }
  .tpp-contact-field--message { grid-column: auto; }
}

/* ========================================================================
   v6.7.2 — Philosophy Canonical Typography Alignment
   Philosophy is the visual reference for card-title scale/weight, service
   accent titles, long-form Case Study headings, and horizontal rules.
   ======================================================================== */

/* Insights archive/card titles now match Philosophy pillar titles. */
.insights-page .tpp-insight-card-v2__title {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
  font-size: 12pt !important;
  line-height: 1.18 !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  font-synthesis: none !important;
  letter-spacing: -.01em !important;
  color: var(--insight-accent) !important;
}

/* Services titles retain the same accent color as their icon. */
body:not(.home) .services-page .service-offering-card .service-offering-content h2,
html[data-theme="dark"] body:not(.home) .services-page .service-offering-card .service-offering-content h2,
html[data-theme="light"] body:not(.home) .services-page .service-offering-card .service-offering-content h2 {
  color: var(--service-accent) !important;
}

/* Individual Case Studies use Philosophy's editorial heading hierarchy. */
body.single .case-study-single-page .prose-entry > h1 {
  margin: 0 0 .45rem !important;
  color: #6b7280 !important;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
  font-size: 36px !important;
  line-height: 1.15 !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
  font-synthesis: none !important;
  letter-spacing: -.015em !important;
}
body.single .case-study-single-page .prose-entry .prose h2 {
  color: #6b7280 !important;
  font-size: 22px !important;
  line-height: 1.25 !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
  letter-spacing: -.01em !important;
}
body.single .case-study-single-page .prose-entry .prose h3 {
  color: #6b7280 !important;
  font-size: 17px !important;
  line-height: 1.3 !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
}
body.single .case-study-single-page .prose-entry .prose h4 {
  color: #6b7280 !important;
  font-size: 14px !important;
  line-height: 1.35 !important;
  font-weight: 400 !important;
  font-variation-settings: "wght" 400 !important;
}
html[data-theme="dark"] body.single .case-study-single-page .prose-entry > h1,
html[data-theme="dark"] body.single .case-study-single-page .prose-entry .prose h2,
html[data-theme="dark"] body.single .case-study-single-page .prose-entry .prose h3,
html[data-theme="dark"] body.single .case-study-single-page .prose-entry .prose h4 {
  color: #aeb7c4 !important;
}

/* Complete the signature rainbow treatment for actual horizontal rules. */
body:not(.home) .interior-main .prose hr,
body:not(.home) .interior-main .compact-page-content hr,
body:not(.home) .interior-main .prose-entry hr,
body.single .case-study-single-page .prose hr,
body.single .case-study-single-page .prose-entry hr,
body:not(.home) .interior-main .wp-block-separator,
body.single .case-study-single-page .wp-block-separator {
  display: block !important;
  width: 100% !important;
  height: 2px !important;
  margin: 2.25em 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: var(--tpp-rainbow-rule) !important;
  opacity: .9 !important;
}

@media (max-width: 620px) {
  body.single .case-study-single-page .prose-entry > h1 {
    font-size: 28px !important;
  }
}


/* ========================================================================
   v6.7.3 — Order, Rainbow Rules, and Executive CTA Alignment
   ======================================================================== */

/* Render authored HRs and WordPress separators as unmistakable rainbow rules. */
body:not(.home) hr,
body:not(.home) .wp-block-separator,
body:not(.home) .interior-main hr,
body:not(.home) .standalone-page hr {
  display: block !important;
  box-sizing: border-box !important;
  width: 100% !important;
  height: 2px !important;
  min-height: 2px !important;
  margin: 2.25em 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
  background-color: transparent !important;
  background-image: linear-gradient(90deg,
    #e74c3c 0%, #f39c12 17%, #f1c40f 32%, #2ecc71 49%,
    #1abc9c 64%, #3498db 80%, #8e44ad 100%) !important;
  background-repeat: no-repeat !important;
  background-size: 100% 2px !important;
  opacity: 1 !important;
}

/* Use the same explicit rainbow gradient for editorial section rules. */
body:not(.home) .interior-main .prose h2,
body:not(.home) .interior-main .compact-page-content h2,
body:not(.home) .interior-main .prose-entry h2,
body:not(.home) .standalone-page .prose h2,
body:not(.home) .standalone-page .compact-page-content h2,
body:not(.home) .standalone-page .prose-entry h2 {
  border-bottom: 0 !important;
  background-image: linear-gradient(90deg,
    #e74c3c 0%, #f39c12 17%, #f1c40f 32%, #2ecc71 49%,
    #1abc9c 64%, #3498db 80%, #8e44ad 100%) !important;
  background-repeat: no-repeat !important;
  background-position: left bottom !important;
  background-size: 100% 2px !important;
}

/* Page-title rules use the same explicit palette rather than a variable fallback. */
body:not(.home) .page-intro > .page-shell::after,
body:not(.home) .page-intro > .tpp-shell.page-shell::after {
  background: linear-gradient(90deg,
    #e74c3c 0%, #f39c12 17%, #f1c40f 32%, #2ecc71 49%,
    #1abc9c 64%, #3498db 80%, #8e44ad 100%) !important;
  opacity: 1 !important;
}

/* Compact the shared executive CTA and align the action to its top edge. */
.executive-cta__inner {
  align-items: flex-start !important;
}
.executive-cta__copy h2 {
  font-size: 18px !important;
  line-height: 1.2 !important;
  font-weight: 500 !important;
  margin-top: 0 !important;
}
.executive-cta .button {
  align-self: flex-start !important;
  margin-top: 0 !important;
}

@media (max-width: 900px) {
  .executive-cta__copy h2 { font-size: 17px !important; }
}
@media (max-width: 620px) {
  .executive-cta__copy h2 { font-size: 16px !important; }
}

/* ========================================================================
   v6.7.4 — Executive Insight Rainbow Section Rules
   Individual Insight section headings live outside .interior-main, so they
   require their own canonical Philosophy-style rainbow rule.
   ======================================================================== */
body:not(.home) .executive-insight-page .executive-insight-section > h2,
body:not(.home) .executive-insight-page .executive-insight-navigation > h2,
body:not(.home) .executive-insight-page .executive-insight-cta h2 {
  border: 0 !important;
  border-bottom: 0 !important;
  padding-bottom: .58em !important;
  background-color: transparent !important;
  background-image: linear-gradient(90deg,
    #e74c3c 0%, #f39c12 17%, #f1c40f 32%, #2ecc71 49%,
    #1abc9c 64%, #3498db 80%, #8e44ad 100%) !important;
  background-repeat: no-repeat !important;
  background-position: left bottom !important;
  background-size: 100% 2px !important;
}

