/* ===== TrizMatrix — FR.com colour system ===== */
/* FR.com palette: navy #001C34 | teal #00A8B6 | dark-teal #007882 | white #ffffff */

/* ---------- Reset every background to white ---------- */
*,
*::before,
*::after {
  background-color: transparent;
}

html {
  scroll-behavior: smooth;
}

/* ---------- Cross-device layout safety net ----------
   Prevents horizontal scrollbars / off-center content on any screen size.
   Decorative absolutely-positioned elements (blurred orbs, -left-1/4 etc.)
   are common in this design and can bleed past the viewport edge on some
   widths — clip them at the document root instead of touching each one. */
html, body {
  max-width: 100%;
  overflow-x: hidden;
}
#root {
  overflow-x: clip;
  width: 100%;
}
img, video, svg, iframe {
  max-width: 100%;
  height: auto;
}

html, body {
  background: #ffffff !important;
  color: #001C34 !important;
  font-size: 100% !important;
}

/* ---------- Corporate typographic pairing ---------- */
/* Serif for headline gravitas (law-firm/MNC register), Inter for everything
   else. Loaded via the Source Serif 4 <link> in <head>. */
h1, h2 {
  font-family: "Source Serif 4", Georgia, "Times New Roman", serif !important;
  letter-spacing: -0.01em !important;
  font-weight: 600 !important;
}
h3, h4, h5, h6 {
  font-family: "Inter", system-ui, sans-serif !important;
  letter-spacing: -0.005em !important;
}

/* Focus states — visible, on-brand, accessible */
a:focus-visible, button:focus-visible, [class*="btn"]:focus-visible,
input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid #00A8B6 !important;
  outline-offset: 2px !important;
}

/* Catch every dark utility class Tailwind generates */
.bg-black, .bg-zinc-900, .bg-zinc-950,
.bg-slate-900, .bg-slate-950, .bg-gray-900, .bg-gray-950,
.bg-neutral-900, .bg-neutral-950,
.bg-\[\#050508\],
.bg-\[\#04101e\], .bg-\[\#040c1a\],
.bg-\[--color-bg\], .bg-dark, .dark {
  background-color: #ffffff !important;
}

/* Home page rotating service showcase (dark cinematic hero band) — this
   one uses a Tailwind class (bg-[#020208]) rather than an inline style, so
   it was missed by the "known dark containers" relight rules below and
   ended up with white text on a background forced to white. Keep it dark
   and re-light its text instead of flattening it to white. */
.bg-\[\#020208\] {
  background-color: #020208 !important;
}
.bg-\[\#020208\] [class*="text-white/"] {
  color: rgba(255,255,255,0.65) !important;
}
.bg-\[\#020208\] [class*="text-white"],
.bg-\[\#020208\] h2,
.bg-\[\#020208\] p {
  color: #ffffff !important;
}
.bg-\[\#020208\] [class*="text-transparent"] {
  color: transparent !important;
}

/* Sections, header, footer, cards — all white */
section, article, aside, main,
header, footer, nav,
.card, .card-body,
[class*="bg-"] {
  background-color: #ffffff !important;
  color: #001C34 !important;
}

/* ---------- Typography — FR.com navy ---------- */
h1, h2, h3, h4, h5, h6 {
  color: #001C34 !important;
}

p, span, li, td, th, label, blockquote {
  color: #001C34 !important;
}

/* Fix white-on-white text */
.text-white, [class*="text-white"] {
  color: #001C34 !important;
}
.text-gray-300, .text-gray-400, .text-gray-500,
.text-slate-300, .text-slate-400, .text-slate-500,
[class*="text-slate-3"], [class*="text-slate-4"],
[class*="text-gray-3"], [class*="text-gray-4"] {
  color: #4a5568 !important;
}

/* ---------- Accent — FR.com teal ---------- */
a {
  color: #007882 !important;
  text-decoration: none;
  transition: color 0.2s ease;
}
a:hover {
  color: #00A8B6 !important;
}
/* Underline-on-hover for inline text links (not nav/buttons) so links read
   as deliberate, editorial-style affordances rather than flat colour text. */
p a, li a, blockquote a {
  background-image: linear-gradient(#00A8B6, #00A8B6);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0% 1px;
  transition: background-size 0.25s ease, color 0.2s ease;
}
p a:hover, li a:hover, blockquote a:hover {
  background-size: 100% 1px;
}

/* Buttons */
button, .btn, [class*="btn-"] {
  background-color: #001C34 !important;
  color: #ffffff !important;
  border-color: #001C34 !important;
  border-radius: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 0.01em !important;
  transition: background-color 0.2s ease, border-color 0.2s ease,
    transform 0.15s ease, box-shadow 0.2s ease !important;
}
button:hover, .btn:hover {
  background-color: #007882 !important;
  border-color: #007882 !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0, 28, 52, 0.18) !important;
}
button:active, .btn:active {
  transform: translateY(0);
}

/* Primary / outlined variants */
.btn-primary, [class*="btn-primary"] {
  background-color: #00A8B6 !important;
  color: #ffffff !important;
  border-color: #00A8B6 !important;
}
.btn-primary:hover, [class*="btn-primary"]:hover {
  background-color: #007882 !important;
  border-color: #007882 !important;
}
.btn-outline, .btn-outline-white, [class*="btn-outline"] {
  background-color: transparent !important;
  color: #001C34 !important;
  border: 2px solid #001C34 !important;
}
.btn-outline:hover, .btn-outline-white:hover {
  background-color: #001C34 !important;
  color: #ffffff !important;
}

/* Gradient-text accent word (e.g. hero "Conversation") — align to brand
   navy/teal instead of the generic blue that shipped in the template. */
.text-gradient-blue, [class*="text-gradient"] {
  background: linear-gradient(135deg, #001C34, #00A8B6) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}

/* ---------- Navigation ---------- */
nav, header {
  background-color: #ffffff !important;
  border-bottom: 1px solid #e2e8f0 !important;
  box-shadow: 0 1px 0 rgba(0, 28, 52, 0.03) !important;
}
nav a, header a {
  color: #001C34 !important;
}
nav a:hover, header a:hover {
  color: #00A8B6 !important;
}

/* ---------- Borders & dividers ---------- */
[class*="border-white"] {
  border-color: #e2e8f0 !important;
}
hr {
  border-color: #e2e8f0 !important;
}

/* ---------- Cards & panels ---------- */
/* Resting elevation gives structure/depth against the flat white background
   — reads as considered design rather than a plain reskin. */
.card, [class*="card-"],
[class*="panel-"], [class*="glass"],
[class*="border-opacity"] {
  background-color: #f7fafc !important;
  border-color: #e2e8f0 !important;
  color: #001C34 !important;
  border-radius: 16px !important;
  box-shadow: 0 1px 3px rgba(0, 28, 52, 0.05), 0 1px 2px rgba(0, 28, 52, 0.04) !important;
  transition: box-shadow 0.25s ease, border-color 0.25s ease, transform 0.25s ease !important;
}
.card:hover, [class*="card-hover"]:hover,
[class*="card-"]:hover, [class*="panel-"]:hover {
  border-color: #00A8B6 !important;
  box-shadow: 0 12px 28px rgba(0, 28, 52, 0.12) !important;
  transform: translateY(-2px);
}

/* ---------- Teal accent utilities ---------- */
[class*="text-teal"], [class*="text-cyan"],
[class*="text-blue-4"], [class*="text-blue-5"],
[class*="text-blue-6"] {
  color: #00A8B6 !important;
}
[class*="bg-teal"], [class*="bg-cyan"] {
  background-color: #00A8B6 !important;
  color: #ffffff !important;
}

/* ---------- Glows / blurs that used to be pink/dark ---------- */
[class*="glow"], [class*="blur"] {
  background: rgba(0,168,182,0.08) !important;
  border-color: rgba(0,168,182,0.2) !important;
}
.glow-green { box-shadow: 0 0 28px rgba(0,168,182,0.3) !important; }

/* ---------- Team/leadership photo box — missing width utility fix ----------
   The build's CSS purge dropped the .w-44 and .w-36 utility classes (only
   their .h-44/.h-36 height counterparts survived), even though the "Our
   People" and "Founders" pages apply them to the photo container via a
   template string ("w-44 h-44" / "w-36 h-36"). With no width rule, the
   photo box stretched to the full card width while height stayed fixed at
   176px/144px, stretching each portrait into a short, wide strip and
   cropping out everything but the forehead. Restore the missing widths. */
.w-44 { width: 11rem !important; }
.w-36 { width: 9rem !important; }

/* ---------- Scrollbar ---------- */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: #f1f5f9; }
::-webkit-scrollbar-thumb { background: #00A8B6; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #007882; }

/* ---------- Misc ---------- */
[class*="bg-white\/0"], [class*="bg-white\/1"] {
  background-color: #f7fafc !important;
}
[class*="border-white\/"] { border-color: #e2e8f0 !important; }
[class*="bg-blue-4"], [class*="bg-blue-5"], [class*="bg-blue-6"] {
  background-color: #00A8B6 !important;
  color: #ffffff !important;
}

/* ---------- Dark decorative sections (hero bands, disclaimer modal, IPR
   map, services cards, industries hero, assistant section) ----------
   These render with an inline dark background set directly in the React
   component (not a Tailwind bg-* class). The browser normalises those
   inline colours to rgb()/rgba() when read back, and the blanket "make
   all text navy/gray" rules above were leaving that text unreadable
   against a background that never got flipped to white. Re-light the
   text specifically inside these known dark containers instead of
   touching the background (the dark band is intentional design here).
   Marker list generated from every inline dark background used across
   the compiled bundles - see /assets/*.js "background:" values. */
[style*="rgb(10, 20, 40)"],
[style*="rgb(10, 24, 48)"],
[style*="rgb(11, 11, 15)"],
[style*="rgb(14, 31, 61)"],
[style*="rgb(15, 23, 42)"],
[style*="rgb(17, 17, 20)"],
[style*="rgb(3, 12, 26)"],
[style*="rgb(30, 41, 59)"],
[style*="rgb(4, 16, 30)"],
[style*="rgb(5, 12, 26)"],
[style*="rgb(5, 13, 28)"],
[style*="rgb(5, 15, 29)"],
[style*="rgb(6, 16, 30)"],
[style*="rgb(6, 22, 40)"],
[style*="rgb(6, 6, 20)"],
[style*="rgb(6, 6, 26)"],
[style*="rgb(8, 8, 32)"],
[style*="rgba(10, 10, 22"],
[style*="rgba(2, 2, 8"],
[style*="rgba(5, 14, 30"],
[style*="rgba(6, 6, 17"],
[style*="rgba(6, 6, 26"],
[style*="rgba(6, 6, 16"],
[style*="rgba(10, 10, 20"] {
  color: #f1f5f9 !important;
}

/* The blanket [class*="bg-"] rule above also catches interactive utility
   classes that merely CONTAIN "bg-" as a substring (e.g. "hover:bg-white/06",
   "group-hover:bg-slate-800"), forcing a permanent solid white background on
   list rows / cards that sit inside these dark panels (nav dropdowns like
   "IPR Practice Areas", and similar dark-background lists reused on the
   About and Services pages). Combined with the light-text rule above, that
   left near-invisible light text on a now-white background. Neutralise the
   forced white background for those utility classes at rest, inside these
   known dark containers only, so hover states still work normally. */
[style*="rgb(10, 20, 40)"] [class*="bg-"],
[style*="rgb(10, 24, 48)"] [class*="bg-"],
[style*="rgb(11, 11, 15)"] [class*="bg-"],
[style*="rgb(14, 31, 61)"] [class*="bg-"],
[style*="rgb(15, 23, 42)"] [class*="bg-"],
[style*="rgb(17, 17, 20)"] [class*="bg-"],
[style*="rgb(3, 12, 26)"] [class*="bg-"],
[style*="rgb(30, 41, 59)"] [class*="bg-"],
[style*="rgb(4, 16, 30)"] [class*="bg-"],
[style*="rgb(5, 12, 26)"] [class*="bg-"],
[style*="rgb(5, 13, 28)"] [class*="bg-"],
[style*="rgb(5, 15, 29)"] [class*="bg-"],
[style*="rgb(6, 16, 30)"] [class*="bg-"],
[style*="rgb(6, 22, 40)"] [class*="bg-"],
[style*="rgb(6, 6, 20)"] [class*="bg-"],
[style*="rgb(6, 6, 26)"] [class*="bg-"],
[style*="rgb(8, 8, 32)"] [class*="bg-"],
[style*="rgba(10, 10, 22"] [class*="bg-"],
[style*="rgba(2, 2, 8"] [class*="bg-"],
[style*="rgba(5, 14, 30"] [class*="bg-"],
[style*="rgba(6, 6, 17"] [class*="bg-"],
[style*="rgba(6, 6, 26"] [class*="bg-"],
[style*="rgba(6, 6, 16"] [class*="bg-"],
[style*="rgba(10, 10, 20"] [class*="bg-"] {
  background-color: transparent !important;
}

/* Restore a real (subtle, non-white) hover highlight for these list rows,
   so hovering still gives visual feedback instead of doing nothing. */
[style*="rgb(10, 20, 40)"] [class*="bg-"]:hover,
[style*="rgb(10, 24, 48)"] [class*="bg-"]:hover,
[style*="rgb(11, 11, 15)"] [class*="bg-"]:hover,
[style*="rgb(14, 31, 61)"] [class*="bg-"]:hover,
[style*="rgb(15, 23, 42)"] [class*="bg-"]:hover,
[style*="rgb(17, 17, 20)"] [class*="bg-"]:hover,
[style*="rgb(3, 12, 26)"] [class*="bg-"]:hover,
[style*="rgb(30, 41, 59)"] [class*="bg-"]:hover,
[style*="rgb(4, 16, 30)"] [class*="bg-"]:hover,
[style*="rgb(5, 12, 26)"] [class*="bg-"]:hover,
[style*="rgb(5, 13, 28)"] [class*="bg-"]:hover,
[style*="rgb(5, 15, 29)"] [class*="bg-"]:hover,
[style*="rgb(6, 16, 30)"] [class*="bg-"]:hover,
[style*="rgb(6, 22, 40)"] [class*="bg-"]:hover,
[style*="rgb(6, 6, 20)"] [class*="bg-"]:hover,
[style*="rgb(6, 6, 26)"] [class*="bg-"]:hover,
[style*="rgb(8, 8, 32)"] [class*="bg-"]:hover,
[style*="rgba(10, 10, 22"] [class*="bg-"]:hover,
[style*="rgba(2, 2, 8"] [class*="bg-"]:hover,
[style*="rgba(5, 14, 30"] [class*="bg-"]:hover,
[style*="rgba(6, 6, 17"] [class*="bg-"]:hover,
[style*="rgba(6, 6, 26"] [class*="bg-"]:hover,
[style*="rgba(6, 6, 16"] [class*="bg-"]:hover,
[style*="rgba(10, 10, 20"] [class*="bg-"]:hover {
  background-color: rgba(255, 255, 255, 0.08) !important;
}

[style*="rgb(10, 20, 40)"] [class*="text-white"],
[style*="rgb(10, 24, 48)"] [class*="text-white"],
[style*="rgb(11, 11, 15)"] [class*="text-white"],
[style*="rgb(14, 31, 61)"] [class*="text-white"],
[style*="rgb(15, 23, 42)"] [class*="text-white"],
[style*="rgb(17, 17, 20)"] [class*="text-white"],
[style*="rgb(3, 12, 26)"] [class*="text-white"],
[style*="rgb(30, 41, 59)"] [class*="text-white"],
[style*="rgb(4, 16, 30)"] [class*="text-white"],
[style*="rgb(5, 12, 26)"] [class*="text-white"],
[style*="rgb(5, 13, 28)"] [class*="text-white"],
[style*="rgb(5, 15, 29)"] [class*="text-white"],
[style*="rgb(6, 16, 30)"] [class*="text-white"],
[style*="rgb(6, 22, 40)"] [class*="text-white"],
[style*="rgb(6, 6, 20)"] [class*="text-white"],
[style*="rgb(6, 6, 26)"] [class*="text-white"],
[style*="rgb(8, 8, 32)"] [class*="text-white"],
[style*="rgba(10, 10, 22"] [class*="text-white"],
[style*="rgba(2, 2, 8"] [class*="text-white"],
[style*="rgba(5, 14, 30"] [class*="text-white"],
[style*="rgba(6, 6, 17"] [class*="text-white"],
[style*="rgba(6, 6, 26"] [class*="text-white"],
[style*="rgba(6, 6, 16"] [class*="text-white"],
[style*="rgba(10, 10, 20"] [class*="text-white"] {
  color: #ffffff !important;
}

[style*="rgb(10, 20, 40)"] [class*="text-white/"],
[style*="rgb(10, 24, 48)"] [class*="text-white/"],
[style*="rgb(11, 11, 15)"] [class*="text-white/"],
[style*="rgb(14, 31, 61)"] [class*="text-white/"],
[style*="rgb(15, 23, 42)"] [class*="text-white/"],
[style*="rgb(17, 17, 20)"] [class*="text-white/"],
[style*="rgb(3, 12, 26)"] [class*="text-white/"],
[style*="rgb(30, 41, 59)"] [class*="text-white/"],
[style*="rgb(4, 16, 30)"] [class*="text-white/"],
[style*="rgb(5, 12, 26)"] [class*="text-white/"],
[style*="rgb(5, 13, 28)"] [class*="text-white/"],
[style*="rgb(5, 15, 29)"] [class*="text-white/"],
[style*="rgb(6, 16, 30)"] [class*="text-white/"],
[style*="rgb(6, 22, 40)"] [class*="text-white/"],
[style*="rgb(6, 6, 20)"] [class*="text-white/"],
[style*="rgb(6, 6, 26)"] [class*="text-white/"],
[style*="rgb(8, 8, 32)"] [class*="text-white/"],
[style*="rgba(10, 10, 22"] [class*="text-white/"],
[style*="rgba(2, 2, 8"] [class*="text-white/"],
[style*="rgba(5, 14, 30"] [class*="text-white/"],
[style*="rgba(6, 6, 17"] [class*="text-white/"],
[style*="rgba(6, 6, 26"] [class*="text-white/"],
[style*="rgba(6, 6, 16"] [class*="text-white/"],
[style*="rgba(10, 10, 20"] [class*="text-white/"] {
  color: rgba(255,255,255,0.8) !important;
}

[style*="rgb(10, 20, 40)"] [class*="text-gray-3"],
[style*="rgb(10, 20, 40)"] [class*="text-gray-4"],
[style*="rgb(10, 20, 40)"] [class*="text-gray-5"],
[style*="rgb(10, 20, 40)"] [class*="text-gray-6"],
[style*="rgb(10, 20, 40)"] [class*="text-slate-3"],
[style*="rgb(10, 20, 40)"] [class*="text-slate-4"],
[style*="rgb(10, 20, 40)"] [class*="text-slate-5"],
[style*="rgb(10, 24, 48)"] [class*="text-gray-3"],
[style*="rgb(10, 24, 48)"] [class*="text-gray-4"],
[style*="rgb(10, 24, 48)"] [class*="text-gray-5"],
[style*="rgb(10, 24, 48)"] [class*="text-gray-6"],
[style*="rgb(10, 24, 48)"] [class*="text-slate-3"],
[style*="rgb(10, 24, 48)"] [class*="text-slate-4"],
[style*="rgb(10, 24, 48)"] [class*="text-slate-5"],
[style*="rgb(11, 11, 15)"] [class*="text-gray-3"],
[style*="rgb(11, 11, 15)"] [class*="text-gray-4"],
[style*="rgb(11, 11, 15)"] [class*="text-gray-5"],
[style*="rgb(11, 11, 15)"] [class*="text-gray-6"],
[style*="rgb(11, 11, 15)"] [class*="text-slate-3"],
[style*="rgb(11, 11, 15)"] [class*="text-slate-4"],
[style*="rgb(11, 11, 15)"] [class*="text-slate-5"],
[style*="rgb(14, 31, 61)"] [class*="text-gray-3"],
[style*="rgb(14, 31, 61)"] [class*="text-gray-4"],
[style*="rgb(14, 31, 61)"] [class*="text-gray-5"],
[style*="rgb(14, 31, 61)"] [class*="text-gray-6"],
[style*="rgb(14, 31, 61)"] [class*="text-slate-3"],
[style*="rgb(14, 31, 61)"] [class*="text-slate-4"],
[style*="rgb(14, 31, 61)"] [class*="text-slate-5"],
[style*="rgb(15, 23, 42)"] [class*="text-gray-3"],
[style*="rgb(15, 23, 42)"] [class*="text-gray-4"],
[style*="rgb(15, 23, 42)"] [class*="text-gray-5"],
[style*="rgb(15, 23, 42)"] [class*="text-gray-6"],
[style*="rgb(15, 23, 42)"] [class*="text-slate-3"],
[style*="rgb(15, 23, 42)"] [class*="text-slate-4"],
[style*="rgb(15, 23, 42)"] [class*="text-slate-5"],
[style*="rgb(17, 17, 20)"] [class*="text-gray-3"],
[style*="rgb(17, 17, 20)"] [class*="text-gray-4"],
[style*="rgb(17, 17, 20)"] [class*="text-gray-5"],
[style*="rgb(17, 17, 20)"] [class*="text-gray-6"],
[style*="rgb(17, 17, 20)"] [class*="text-slate-3"],
[style*="rgb(17, 17, 20)"] [class*="text-slate-4"],
[style*="rgb(17, 17, 20)"] [class*="text-slate-5"],
[style*="rgb(3, 12, 26)"] [class*="text-gray-3"],
[style*="rgb(3, 12, 26)"] [class*="text-gray-4"],
[style*="rgb(3, 12, 26)"] [class*="text-gray-5"],
[style*="rgb(3, 12, 26)"] [class*="text-gray-6"],
[style*="rgb(3, 12, 26)"] [class*="text-slate-3"],
[style*="rgb(3, 12, 26)"] [class*="text-slate-4"],
[style*="rgb(3, 12, 26)"] [class*="text-slate-5"],
[style*="rgb(30, 41, 59)"] [class*="text-gray-3"],
[style*="rgb(30, 41, 59)"] [class*="text-gray-4"],
[style*="rgb(30, 41, 59)"] [class*="text-gray-5"],
[style*="rgb(30, 41, 59)"] [class*="text-gray-6"],
[style*="rgb(30, 41, 59)"] [class*="text-slate-3"],
[style*="rgb(30, 41, 59)"] [class*="text-slate-4"],
[style*="rgb(30, 41, 59)"] [class*="text-slate-5"],
[style*="rgb(4, 16, 30)"] [class*="text-gray-3"],
[style*="rgb(4, 16, 30)"] [class*="text-gray-4"],
[style*="rgb(4, 16, 30)"] [class*="text-gray-5"],
[style*="rgb(4, 16, 30)"] [class*="text-gray-6"],
[style*="rgb(4, 16, 30)"] [class*="text-slate-3"],
[style*="rgb(4, 16, 30)"] [class*="text-slate-4"],
[style*="rgb(4, 16, 30)"] [class*="text-slate-5"],
[style*="rgb(5, 12, 26)"] [class*="text-gray-3"],
[style*="rgb(5, 12, 26)"] [class*="text-gray-4"],
[style*="rgb(5, 12, 26)"] [class*="text-gray-5"],
[style*="rgb(5, 12, 26)"] [class*="text-gray-6"],
[style*="rgb(5, 12, 26)"] [class*="text-slate-3"],
[style*="rgb(5, 12, 26)"] [class*="text-slate-4"],
[style*="rgb(5, 12, 26)"] [class*="text-slate-5"],
[style*="rgb(5, 13, 28)"] [class*="text-gray-3"],
[style*="rgb(5, 13, 28)"] [class*="text-gray-4"],
[style*="rgb(5, 13, 28)"] [class*="text-gray-5"],
[style*="rgb(5, 13, 28)"] [class*="text-gray-6"],
[style*="rgb(5, 13, 28)"] [class*="text-slate-3"],
[style*="rgb(5, 13, 28)"] [class*="text-slate-4"],
[style*="rgb(5, 13, 28)"] [class*="text-slate-5"],
[style*="rgb(5, 15, 29)"] [class*="text-gray-3"],
[style*="rgb(5, 15, 29)"] [class*="text-gray-4"],
[style*="rgb(5, 15, 29)"] [class*="text-gray-5"],
[style*="rgb(5, 15, 29)"] [class*="text-gray-6"],
[style*="rgb(5, 15, 29)"] [class*="text-slate-3"],
[style*="rgb(5, 15, 29)"] [class*="text-slate-4"],
[style*="rgb(5, 15, 29)"] [class*="text-slate-5"],
[style*="rgb(6, 16, 30)"] [class*="text-gray-3"],
[style*="rgb(6, 16, 30)"] [class*="text-gray-4"],
[style*="rgb(6, 16, 30)"] [class*="text-gray-5"],
[style*="rgb(6, 16, 30)"] [class*="text-gray-6"],
[style*="rgb(6, 16, 30)"] [class*="text-slate-3"],
[style*="rgb(6, 16, 30)"] [class*="text-slate-4"],
[style*="rgb(6, 16, 30)"] [class*="text-slate-5"],
[style*="rgb(6, 22, 40)"] [class*="text-gray-3"],
[style*="rgb(6, 22, 40)"] [class*="text-gray-4"],
[style*="rgb(6, 22, 40)"] [class*="text-gray-5"],
[style*="rgb(6, 22, 40)"] [class*="text-gray-6"],
[style*="rgb(6, 22, 40)"] [class*="text-slate-3"],
[style*="rgb(6, 22, 40)"] [class*="text-slate-4"],
[style*="rgb(6, 22, 40)"] [class*="text-slate-5"],
[style*="rgb(6, 6, 20)"] [class*="text-gray-3"],
[style*="rgb(6, 6, 20)"] [class*="text-gray-4"],
[style*="rgb(6, 6, 20)"] [class*="text-gray-5"],
[style*="rgb(6, 6, 20)"] [class*="text-gray-6"],
[style*="rgb(6, 6, 20)"] [class*="text-slate-3"],
[style*="rgb(6, 6, 20)"] [class*="text-slate-4"],
[style*="rgb(6, 6, 20)"] [class*="text-slate-5"],
[style*="rgb(6, 6, 26)"] [class*="text-gray-3"],
[style*="rgb(6, 6, 26)"] [class*="text-gray-4"],
[style*="rgb(6, 6, 26)"] [class*="text-gray-5"],
[style*="rgb(6, 6, 26)"] [class*="text-gray-6"],
[style*="rgb(6, 6, 26)"] [class*="text-slate-3"],
[style*="rgb(6, 6, 26)"] [class*="text-slate-4"],
[style*="rgb(6, 6, 26)"] [class*="text-slate-5"],
[style*="rgb(8, 8, 32)"] [class*="text-gray-3"],
[style*="rgb(8, 8, 32)"] [class*="text-gray-4"],
[style*="rgb(8, 8, 32)"] [class*="text-gray-5"],
[style*="rgb(8, 8, 32)"] [class*="text-gray-6"],
[style*="rgb(8, 8, 32)"] [class*="text-slate-3"],
[style*="rgb(8, 8, 32)"] [class*="text-slate-4"],
[style*="rgb(8, 8, 32)"] [class*="text-slate-5"],
[style*="rgba(10, 10, 22"] [class*="text-gray-3"],
[style*="rgba(10, 10, 22"] [class*="text-gray-4"],
[style*="rgba(10, 10, 22"] [class*="text-gray-5"],
[style*="rgba(10, 10, 22"] [class*="text-gray-6"],
[style*="rgba(10, 10, 22"] [class*="text-slate-3"],
[style*="rgba(10, 10, 22"] [class*="text-slate-4"],
[style*="rgba(10, 10, 22"] [class*="text-slate-5"],
[style*="rgba(2, 2, 8"] [class*="text-gray-3"],
[style*="rgba(2, 2, 8"] [class*="text-gray-4"],
[style*="rgba(2, 2, 8"] [class*="text-gray-5"],
[style*="rgba(2, 2, 8"] [class*="text-gray-6"],
[style*="rgba(2, 2, 8"] [class*="text-slate-3"],
[style*="rgba(2, 2, 8"] [class*="text-slate-4"],
[style*="rgba(2, 2, 8"] [class*="text-slate-5"],
[style*="rgba(5, 14, 30"] [class*="text-gray-3"],
[style*="rgba(5, 14, 30"] [class*="text-gray-4"],
[style*="rgba(5, 14, 30"] [class*="text-gray-5"],
[style*="rgba(5, 14, 30"] [class*="text-gray-6"],
[style*="rgba(5, 14, 30"] [class*="text-slate-3"],
[style*="rgba(5, 14, 30"] [class*="text-slate-4"],
[style*="rgba(5, 14, 30"] [class*="text-slate-5"],
[style*="rgba(6, 6, 17"] [class*="text-gray-3"],
[style*="rgba(6, 6, 17"] [class*="text-gray-4"],
[style*="rgba(6, 6, 17"] [class*="text-gray-5"],
[style*="rgba(6, 6, 17"] [class*="text-gray-6"],
[style*="rgba(6, 6, 17"] [class*="text-slate-3"],
[style*="rgba(6, 6, 17"] [class*="text-slate-4"],
[style*="rgba(6, 6, 17"] [class*="text-slate-5"],
[style*="rgba(6, 6, 26"] [class*="text-gray-3"],
[style*="rgba(6, 6, 16"] [class*="text-gray-3"],
[style*="rgba(6, 6, 26"] [class*="text-gray-4"],
[style*="rgba(6, 6, 16"] [class*="text-gray-4"],
[style*="rgba(6, 6, 26"] [class*="text-gray-5"],
[style*="rgba(6, 6, 16"] [class*="text-gray-5"],
[style*="rgba(6, 6, 26"] [class*="text-gray-6"],
[style*="rgba(6, 6, 16"] [class*="text-gray-6"],
[style*="rgba(6, 6, 26"] [class*="text-slate-3"],
[style*="rgba(6, 6, 16"] [class*="text-slate-3"],
[style*="rgba(6, 6, 26"] [class*="text-slate-4"],
[style*="rgba(6, 6, 16"] [class*="text-slate-4"],
[style*="rgba(6, 6, 26"] [class*="text-slate-5"],
[style*="rgba(6, 6, 16"] [class*="text-slate-5"],
[style*="rgba(10, 10, 20"] [class*="text-gray-3"],
[style*="rgba(10, 10, 20"] [class*="text-gray-4"],
[style*="rgba(10, 10, 20"] [class*="text-gray-5"],
[style*="rgba(10, 10, 20"] [class*="text-gray-6"],
[style*="rgba(10, 10, 20"] [class*="text-slate-3"],
[style*="rgba(10, 10, 20"] [class*="text-slate-4"],
[style*="rgba(10, 10, 20"] [class*="text-slate-5"] {
  color: #cbd5e1 !important;
}

/* ---------- Stray pink accents (any leftover Tailwind utility classes,
   the compiled hex accents were already swapped in the JS bundles) —
   keep everything on the navy/teal brand palette. ---------- */
[class*="text-pink-"] {
  color: #0e7490 !important;
}
[class*="bg-pink-"] {
  background-color: #0e7490 !important;
  color: #ffffff !important;
}
[class*="border-pink-"] {
  border-color: #0e7490 !important;
}

/* ---------- Insights page "Featured Topics" sidebar ----------
   These are plain list-style toggle buttons (button.text-left), not
   calls-to-action, but the generic `button{...}` rule above turns every
   <button> in the app into a solid navy pill. That flattened this list
   into a stack of dark boxes with barely-visible text. Give this specific
   list-button pattern back a plain, transparent, left-aligned row style
   (higher specificity than the bare `button` selector, so it wins). */
button.text-left {
  background-color: transparent !important;
  color: inherit !important;
  border-radius: 0 !important;
  padding: 0.75rem 0 !important;
  font-weight: inherit !important;
  letter-spacing: normal !important;
  box-shadow: none !important;
  border-color: inherit !important;
}
button.text-left:hover {
  background-color: transparent !important;
  transform: none !important;
  box-shadow: none !important;
}

/* ---------- Home "Global Reach / Our Presence" band ----------
   Full-bleed video section with its own inline dark background
   (#020610 → serialises to rgb(2, 6, 16)) that wasn't in the dark-marker
   catalogue above, so its heading/paragraph text was getting the default
   navy text color forced onto it — nearly invisible against the dark
   video band. Relight the text inside this specific section. */
[style*="rgb(2, 6, 16)"] [class*="text-white"] {
  color: #ffffff !important;
}
[style*="rgb(2, 6, 16)"] [class*="text-white/"] {
  color: rgba(255, 255, 255, 0.75) !important;
}
[style*="rgb(2, 6, 16)"] [class*="text-blue-4"] {
  color: #4fd1c5 !important;
}
/* ---------- Main navbar (top: Home / About / Services / Industries /
   Insights / Careers / Contact) ----------
   The navbar component itself was updated to render a proper light/white
   theme natively (white background, dark text, light dropdown + mobile
   menu backgrounds), so the old "restore nav to dark" patch that used to
   live here has been removed — it was only needed to fix a white-bar/
   white-text clash caused by the navbar's old inline dark background,
   which no longer exists. */

/* ---------- Home "IPR Knowledge Map" interactive tree section ----------
   This section has its own inline dark navy gradient background
   (linear-gradient(160deg, #0a1830 ...)) which — unlike solid inline
   colors — never gets normalised into an "rgb(...)" string the existing
   dark-marker selectors above can match, so its heading/caption text
   was left on the default forced navy color and became unreadable
   against the (still-dark) gradient behind it. Re-light that text. */
[style*="160deg, #0a1830"] h2,
[style*="160deg, #0a1830"] [class*="text-white"] {
  color: #ffffff !important;
}
[style*="160deg, #0a1830"] p,
[style*="160deg, #0a1830"] [class*="text-gray-3"],
[style*="160deg, #0a1830"] [class*="text-gray-4"] {
  color: rgba(255, 255, 255, 0.65) !important;
}

/* ---------- Home hero: remove overlaid headline text ----------
   The hero video (hero-bg-video.mp4) now carries its own baked-in
   title cards ("IP LAW", "Protect the Innovation", "Decode. Disrupt.
   Defend.", etc.), so the cycling on-page headline/subline that used
   to sit in front of the old plain video is redundant and duplicates
   what the video already says. Hide the exact headline block and its
   slide-dot indicator (the video has its own slide navigation — see
   below) without touching any other page that might reuse similar
   utility classes elsewhere. */
section.min-h-screen [class="relative min-h-[190px] sm:min-h-[260px] md:min-h-[340px] mb-8 overflow-visible"],
section.min-h-screen [class="flex gap-2 mt-10"] {
  display: none !important;
}

/* ---------- Home hero background video ----------
   Guards the injected hero video (see index.html) against the general
   "img, video, svg, iframe { max-width:100%; height:auto }" responsive
   reset above, which was letting the video collapse to its intrinsic
   aspect ratio instead of filling the hero band — the visible symptom
   being the video looking cropped in half. Force it to always fill its
   section edge-to-edge and crop evenly instead. */
video.kks-hero-bg-video {
  position: absolute !important;
  inset: 0 !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  min-width: 100% !important;
  min-height: 100% !important;
  object-fit: cover !important;
  object-position: center center !important;
  z-index: 0 !important;
}

/* ---------- Home hero — fr.com-style slide navigation ----------
   Segmented progress bar + play/pause control sitting over the hero
   video (see index.html: makeHeroSlideControls). Each segment maps to
   one of the video's baked-in title cards; a visitor can click a
   segment to jump to that slide, or use the play/pause button to stop
   on the current slide and resume later — mirroring the fr.com
   homepage hero pattern. */
.kks-hero-slide-controls {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 10px;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: 640px;
  margin: 0 auto;
  padding: 0 24px;
}
.kks-hero-slide-track {
  flex: 1;
  display: flex;
  gap: 6px;
}
.kks-hero-slide-seg {
  position: relative;
  flex: 1;
  height: 3px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.22);
  border: none;
  padding: 0;
  cursor: pointer;
  overflow: hidden;
  transition: background-color 0.2s ease, height 0.2s ease;
}
.kks-hero-slide-seg:hover {
  background: rgba(255, 255, 255, 0.36);
  height: 4px;
}
.kks-hero-slide-seg-fill {
  position: absolute;
  inset: 0;
  width: 0%;
  background: #ffffff;
  border-radius: 2px;
  display: block;
}
.kks-hero-playpause {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: rgba(0, 0, 0, 0.25);
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(6px);
  transition: background-color 0.2s ease, border-color 0.2s ease;
}
.kks-hero-playpause:hover {
  background: rgba(0, 0, 0, 0.45);
  border-color: rgba(255, 255, 255, 0.6);
}
.kks-hero-playpause svg {
  margin-left: 1px;
}
@media (max-width: 640px) {
  .kks-hero-slide-controls {
    bottom: 6px;
    padding: 0 16px;
    gap: 10px;
  }
}

/* ---------- IPR service pill row (Patent Filing / Trademark / ... chips
   under the "IPR Knowledge Map" tree, on both Home and /services) ----------
   These sit on a light "#f8fafc" chip inside a dark navy section. The
   dark-section "re-light text to #f1f5f9" rule above (matching
   [style*="rgb(10, 20, 40)"] and friends) was inherited into this chip too,
   washing its label out to near-invisible light-grey-on-near-white. Force
   it back to dark, readable text — belt-and-suspenders on top of the
   explicit inline colour now also set directly in the component. */
[class="flex items-center gap-2 px-3 py-1.5 rounded-full text-xs font-semibold transition-all hover:scale-105 hover:shadow-md"],
[class="flex items-center gap-2 px-3 py-1.5 rounded-full text-xs font-semibold transition-all hover:scale-105 hover:shadow-md"] * {
  color: #0f172a !important;
  opacity: 1 !important;
}

/* ---------- Main navbar links — permanent box bug fix ----------
   Each top-level nav link (Home / About / Services / Industries / Our
   People / Insights / Careers / Contact) carries a conditional Tailwind
   class like "hover:bg-white/05" (inactive) or "bg-blue-500/10" (current
   page). The blanket [class*="bg-"] rule earlier in this file matches on
   the raw class-attribute text regardless of the "hover:" prefix, so it
   was painting a solid background box behind every link permanently
   instead of only on hover. Reset just the "hover:bg-white" links back to
   transparent at rest, and give them a real hover highlight — current-page
   links (which don't carry that hover class) are left untouched. */
nav .hidden.lg\:flex > a[class*="hover:bg-white"],
nav .hidden.lg\:flex > div > button[class*="hover:bg-white"] {
  background-color: transparent !important;
}
nav .hidden.lg\:flex > a[class*="hover:bg-white"]:hover,
nav .hidden.lg\:flex > div > button[class*="hover:bg-white"]:hover {
  background-color: rgba(0, 28, 52, 0.06) !important;
}

/* ---------- Home "Complete IPR Solutions" (Services) cards ----------
   Premium animated rotating border/glow. A conic-gradient ring sits on
   a pseudo-element behind each card/button (masked down to just the
   border thickness) and rotates continuously; the card's own white
   background and black text sit in front, completely still — only the
   glowing ring spins. Colours are the site's existing blue/cyan accent
   (#0e7490 / rgba(14,116,144,…)), so this reads as an extension of the
   card's own icon colour rather than a new palette. */
.kks-service-card {
  isolation: isolate;
}
.kks-service-card::before {
  content: "";
  position: absolute;
  inset: -1.5px;
  border-radius: inherit;
  z-index: -1;
  padding: 1.5px;
  background: conic-gradient(
    from 0deg,
    rgba(14, 116, 144, 0) 0%,
    rgba(14, 116, 144, 0.85) 12%,
    rgba(34, 211, 238, 0.95) 22%,
    rgba(14, 116, 144, 0.85) 32%,
    rgba(14, 116, 144, 0) 46%,
    rgba(14, 116, 144, 0) 100%
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}
.kks-service-card::after {
  content: "";
  position: absolute;
  inset: -6px;
  border-radius: inherit;
  z-index: -2;
  background: conic-gradient(
    from 0deg,
    transparent 0%,
    rgba(34, 211, 238, 0.35) 22%,
    transparent 46%,
    transparent 100%
  );
  filter: blur(10px);
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}
.kks-service-card:hover::before,
.kks-service-card:hover::after {
  opacity: 1;
}
/* Subtle idle presence even without hover — a faint always-on ring so
   the effect reads as intentional premium detailing, not purely a
   hover gimmick, while staying understated at rest. No rotation —
   static ring only. */
.kks-service-card::before {
  opacity: 0.35;
}
.kks-service-card::after {
  opacity: 0.12;
}
.kks-service-card:hover::before { opacity: 1; }
.kks-service-card:hover::after { opacity: 0.4; }

/* Pill CTA ("View All Services") is round, not rounded-2xl — round off
   the glow ring to match its fully circular shape. */
.kks-pill-ring::before,
.kks-pill-ring::after {
  border-radius: 9999px;
}

@media (prefers-reduced-motion: reduce) {
  .kks-service-card::before,
  .kks-service-card::after {
    animation: none !important;
  }
}

/* ============================================================
   FLUID RESPONSIVE LAYOUT SYSTEM
   ------------------------------------------------------------
   Reference: general enterprise-site responsive behaviour (the
   way a site such as Siemens's fluidly re-fits its layout at
   every width) — NOT its branding, colours, copy or assets,
   none of which are used here. This layer only smooths out how
   the EXISTING TrizMatrix layout scales; it doesn't change
   content, components, routes or functionality.
   ============================================================ */

/* ---------- Box model safety net ---------- */
*, *::before, *::after {
  box-sizing: border-box;
}

/* ---------- Fluid section container gutters ----------
   Every major section in this build wraps its content in
   "max-w-7xl mx-auto px-6" / "max-w-6xl mx-auto px-6" (a fixed
   24px side gutter at literally every viewport width, from a
   360px phone to a 4K monitor). Make that gutter fluid instead:
   tighter on small phones (more usable width for text/cards),
   the original 24px through the mid-range, and a slightly wider
   professional margin on large monitors — never a single fixed
   pixel value doing double duty for every screen. Narrower prose
   wrappers (max-w-3xl/2xl/xl) are left untouched since they
   already sit safely inside this fluid outer gutter. */
[class*="max-w-7xl"][class*="mx-auto"],
[class*="max-w-6xl"][class*="mx-auto"] {
  padding-left: clamp(1rem, 0.55rem + 1.8vw, 2.5rem) !important;
  padding-right: clamp(1rem, 0.55rem + 1.8vw, 2.5rem) !important;
}

/* ---------- Tablet-range heading correction (768–1024px) ----------
   Tailwind's "md:" prefix fires at exactly 768px, which is also
   an iPad-portrait width. Several hero headings jump straight
   from their mobile size to their full desktop size at that same
   768px breakpoint (e.g. "text-4xl sm:text-6xl md:text-8xl"),
   so a 768–1024px tablet — which has nowhere near desktop width —
   was rendering the same 72–96px display type a 1920px monitor
   gets. Ease just that tablet band back down to a size that
   actually fits a ~768–1024px column; phones (<768px) and real
   desktops (≥1024px) keep their original, already-tuned sizes. */
@media (min-width: 768px) and (max-width: 1024px) {
  [class*="text-8xl"] { font-size: clamp(2.75rem, 3.2vw + 2rem, 4rem) !important; }
  [class*="text-7xl"] { font-size: clamp(2.5rem, 2.8vw + 2rem, 3.5rem) !important; }
  [class*="text-6xl"] { font-size: clamp(2.25rem, 2.4vw + 1.75rem, 3rem) !important; }
}

/* ---------- Fluid section vertical rhythm ----------
   Large py-16/20/24 section padding is part of this design's
   enterprise feel, but on small phones it pushes real content
   far down the page for no visual benefit. Ease it down below
   the small breakpoint only — tablet and desktop keep the
   original spacing untouched. */
@media (max-width: 640px) {
  [class*="py-24"] { padding-top: 3rem !important; padding-bottom: 3rem !important; }
  [class*="py-20"] { padding-top: 2.75rem !important; padding-bottom: 2.75rem !important; }
}

/* ---------- Header height ----------
   The navbar's inner row is a fixed 80px (h-20) at every
   viewport. Let it settle slightly shorter on small phones —
   more viewport for content on short devices — while keeping the
   original 80px from tablet width up, matching the "header
   height adapts to viewport" pattern of a professional
   enterprise site. */
nav .h-20, header .h-20 {
  height: clamp(4rem, 3.4rem + 1.5vw, 5rem) !important;
}

/* ---------- Comfortable touch targets on small screens ----------
   Below the small breakpoint, guarantee every interactive
   control meets a ~44px minimum touch target — buttons, links
   styled as buttons, and form fields all fit the screen and are
   easy to tap without changing their appearance on larger
   screens. */
@media (max-width: 640px) {
  button, .btn, [class*="btn-"],
  input, textarea, select {
    min-height: 44px;
  }
}

/* ---------- Belt-and-suspenders overflow guard ----------
   Layered on top of the existing html/body/#root overflow-x
   safety net above: clip any individual element type that could
   still end up wider than its parent (a stray fixed-width
   utility, an un-clamped inline style, an embedded iframe, etc.)
   so nothing forces a horizontal scrollbar on any screen size. */
img, video, svg, canvas, iframe, table {
  max-width: 100%;
}

/* ---------- Flex/grid children must not force overflow ----------
   Flex and grid items default to a minimum content size that can
   exceed their track width (long unbroken words/URLs, wide
   inline SVGs, etc.), which is a common, easy-to-miss source of
   horizontal scrolling in CSS Grid/Flexbox layouts. Allow every
   direct flex/grid child in this build to shrink below that
   default floor so it always fits its column instead of pushing
   the layout wider than the viewport. */
[class*="flex"] > *, [class*="grid"] > * {
  min-width: 0;
}

/* ---------- Floating AI chat button — robot face invisible ----------
   The launcher button's own inline background gradient
   (linear-gradient(135deg, #1e293b, #0f172a)) happens to embed the exact
   rgb() values ("rgb(30, 41, 59)" / "rgb(15, 23, 42)") that the "known dark
   container" rules above use as markers, so the button was itself being
   treated as one of those dark containers. That triggered the "neutralise
   forced-white background on bg-* utility classes inside dark containers"
   rule against the button's OWN children — but here those children (the
   robot face's eyes, mouth and eyebrow) are plain divs that are only
   visible because of their background-color; forcing that to transparent
   made the whole face disappear, leaving just the bare gradient circle.
   Restore it, scoped tightly to this one button via its unique
   "animate-float" class so nothing else is affected. */
.animate-float [class*="rounded-full bg-white"] {
  background-color: #ffffff !important;
}
.animate-float [class*="bg-cyan-200"] {
  background-color: #67e8f9 !important;
}

/* ---------- Page-width containers — fr.com-style fluid width ----------
   Tailwind's max-w-5xl/6xl/7xl (1024/1152/1280px) are FIXED pixel caps.
   On a laptop that's fine, but on a larger monitor the cap doesn't grow
   with the screen, so a big static empty margin appears on both sides
   (nav, hero, footer, every section — since these classes are reused
   site-wide as the page container). fr.com's content column is wider and
   its side margin scales WITH the viewport instead of sitting fixed, so
   the page reads as properly filled on every screen size rather than
   floating in the middle with dead space. Give every such page-level
   container ("max-w-*xl mx-auto") the same fluid behaviour: a generous
   width cap plus viewport-relative side padding instead of the fixed
   24px "px-6". Deliberately scoped to containers that are ALSO
   horizontally centred (".mx-auto") so smaller centred components (cards,
   modals, narrow text blocks using max-w-xl/2xl/3xl) are untouched. */
.max-w-5xl.mx-auto,
.max-w-6xl.mx-auto,
.max-w-7xl.mx-auto {
  max-width: min(1600px, 94vw) !important;
  padding-left: clamp(20px, 4vw, 80px) !important;
  padding-right: clamp(20px, 4vw, 80px) !important;
}

/* ---------- Full IP Suite service page — animated circuit overlay ----------
   The uploaded hero image already has circuit-trace artwork baked into the
   picture; this overlay adds real motion on top of it — eight small glowing
   dots travelling outward from the shield along an SVG "offset-path" (see
   service-page-yhW5sn8N.js, the `i==="comprehensive"` block), each on a
   staggered delay so they read as current pulsing outward through the
   circuit, looping continuously. mix-blend-mode:screen keeps the glow
   additive so it only brightens the dark parts of the photo instead of
   sitting on top like a flat sticker. */
.kks-circuit-pulse-dot {
  offset-distance: 0%;
  opacity: 0;
  animation: kksCircuitPulse 2.4s linear infinite;
}
@keyframes kksCircuitPulse {
  0%   { offset-distance: 0%;   opacity: 0; }
  8%   { opacity: 1; }
  85%  { opacity: 1; }
  100% { offset-distance: 100%; opacity: 0; }
}

/* ---------- Icon-chip boxes forced solid teal — invisible icon fix ----------
   Two separate blanket rules above both target the same elements here and
   collide: any box using Tailwind's bg-blue-400/500/600, bg-teal-*, or
   bg-cyan-* gets forced to a SOLID teal background (#00A8B6), while the
   icon *inside* it usually carries its own text-blue-4/500/600, text-teal-*
   or text-cyan-* class, which a different rule also forces to that exact
   same teal. The icon and its own background end up the identical colour,
   so it disappears — the box just reads as a flat teal blob with no visible
   glyph. This is a sitewide "icon chip" pattern (contact details, feature
   lists, etc.), not a one-off — so fix it generically: any actual icon
   (svg) sitting inside one of these forced-teal boxes should render white,
   which is both visible and reads as an intentional solid-colour icon chip
   rather than a tinted one. */
[class*="bg-blue-4"] svg,
[class*="bg-blue-5"] svg,
[class*="bg-blue-6"] svg,
[class*="bg-teal"] svg,
[class*="bg-cyan"] svg {
  color: #ffffff !important;
}

/* ---------- Main navbar — generous, symmetric corner margins ----------
   The navbar's inner row (logo+wordmark on the left, link list on the
   right) shares the sitewide "max-w-7xl mx-auto px-6" gutter, which tops
   out at a fairly tight 2.5rem (40px) on large monitors — the logo and
   the last nav link ("Contact") end up sitting close to the browser
   edge instead of the wider, more deliberate corner margin a premium
   enterprise site (law firm sites especially) tends to use. Give just
   the header row its own slightly larger fluid gutter, capping higher
   on wide desktop screens, while leaving the general section gutter
   above untouched. Both left and right stay identical at every width,
   so the logo and the nav/CTA stay equally inset from their corners. */
nav[class*="fixed"][class*="z-50"] > div[class*="max-w-7xl"] {
  padding-left: clamp(1.25rem, 0.7rem + 2.6vw, 4rem) !important;
  padding-right: clamp(1.25rem, 0.7rem + 2.6vw, 4rem) !important;
}

/* ---------- "Our People" / Founders team grid — merge Mr. KK Sharma and
   Arun Mishra into ONE shared card ----------
   Both entries carry team.js's "featured" flag, which currently makes each
   of them independently span the full grid row (lg:col-span-3) — the
   visible symptom being two separate full-width white boxes stacked one
   above the other. Instead, sit them side by side (KK Sharma left, Arun
   Mishra right) inside what reads as a single shared box: each keeps its
   own centred photo/name/buttons stack, but only takes half the row, the
   gap between them is closed, and the touching inner corners are squared
   off so the rounded outer corners read as one continuous card. Only
   applies at the desktop breakpoint (lg) where these cards would otherwise
   span the full row; below that they keep the normal stacked mobile
   layout. The unique combination of classes below (only ever produced for
   these two "featured" team entries) targets them without touching any
   other card or grid on the site. */
@media (min-width: 1024px) {
  [class*="lg:col-span-3 md:col-span-2 lg:flex-row lg:text-left lg:items-start lg:gap-10"] {
    grid-column: span 1 !important;
    flex-direction: column !important;
    text-align: center !important;
    align-items: center !important;
    gap: 1rem !important;
  }
  [class*="lg:col-span-3 md:col-span-2 lg:flex-row lg:text-left lg:items-start lg:gap-10"]:nth-child(1) {
    grid-column: 1 / span 1 !important;
    grid-row: 1 !important;
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
  }
  [class*="lg:col-span-3 md:col-span-2 lg:flex-row lg:text-left lg:items-start lg:gap-10"]:nth-child(2) {
    grid-column: 2 / span 1 !important;
    grid-row: 1 !important;
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
    margin-left: -1.75rem !important;
    border-left: 1px solid rgba(15, 23, 42, 0.08) !important;
  }
}

/* ---------- About page: rotating TRIZ MATRIX practice-areas wheel ---------- */
@keyframes triz-wheel-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
.animate-spin-slow {
  animation: triz-wheel-spin 18s linear infinite;
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  .animate-spin-slow {
    animation: none !important;
  }
}
