/*
 * Site custom CSS — migrated out of Appearance > Additional CSS on 2026-07-31
 * Loaded from wp-content/uploads/tf-custom-css/site-custom.css
 * Edit THIS FILE, not Additional CSS.
 */
/* NAV CTA BUTTONS */
/*
Add the CSS class "nav-cta-btn" to each navigation CTA button
that should use this positioning.
*/
.nav-cta-btn {
    position: absolute;
    right: 0;
    left: 0;
    bottom: 0;
    margin: auto;
}

/* RESOURCE HOVER */
.resource-hover {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.resource-hover:hover {
    transform: translateY(-8px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

/* RESOURCE HOVER - WEBINARS */
.kt-blocks-post-grid-item {
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.kt-blocks-post-grid-item:hover {
    transform: translateY(-4px);
}

/* HP FILTER */
.wp-block-kadence-query-filter-buttons2_d4e34b-6d
.buttons-options
.kb-button.kb-query-filter-filter-button {
    width: 238px;
    border: 5px solid #E6000F !important;
}

body
.wp-block-kadence-query
.wp-block-kadence-query-filter-buttons1248_2f2477-0d
.buttons-options {
    padding-right: 3px !important;
    padding-left: 3px !important;
}

/* BLOG RESOURCES SEARCH BAR */
.wp-block-kadence-query-filter-search
.kb-filter-search-wrap
.kb-filter-search-btn {
    color: #646366 !important;
}

input.kb-filter-search::placeholder {
    color: #646366 !important;
}

/* BLOG STICKY TABLE OF CONTENTS */
.position-sticky {
    position: -webkit-sticky;
    position: sticky !important;
    top: 220px !important;
    z-index: 2 !important;
}

/* COPY HEADING MARGINS */
.single-content h1,
.single-content h2,
.single-content h3,
.single-content h4,
.single-content h5,
.single-content h6 {
    margin: 0 0 0.5em;
}

/* DEFAULT FILTER BUTTON ORDER */
.kadence-query-filter .btn-inner-wrap {
    order: 0;
}

/* BLOG POST CORNERS */
.entry.single-entry {
    border-radius: 20px;
}

/* POST GRID ICON LIST STYLING */
.kt-blocks-post-loop-block.post-grid-list
.kt-post-grid-layout-grid-wrap
> .kt-blocks-post-grid-item {
    padding-left: 1em;
    position: relative;
}

/* CARD HOVER */
.card-hover .kb-query-item {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card-hover .kb-query-item:hover {
    transform: translateY(-8px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

/* SLIDER HOVER */
.slider-hover {
    transition: transform 0.2s ease;
}

.slider-hover:hover {
    transform: translateY(-8px);
    box-shadow: none;
}

/* INDUSTRY CARD HOVER */
.ind {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.ind:hover {
    transform: translateY(-8px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

/* CAREERS PAGE */
.section {
    position: relative;
    padding: 30px;
}

.container {
    max-width: 960px;
    margin: 0 auto;
}

.job {
    display: inline-block;
    vertical-align: top;
    width: 50%;
    padding: 0 30px;
}

.job-title {
    font-size: 18px;
    text-decoration: none;
}

.job-title:hover {
    color: #01627B;
}

.tags span {
    color: #5F5F5F;
    font-size: 16px;
}

.tags span::after {
    content: ", ";
}

.tags span:last-of-type::after {
    content: "";
}

.jobs-teams {
    padding: 0 30px;
}

.jobs-teams .btn {
    display: inline-block;
    padding: 7px 15px;
    margin: 0 8px 8px 0;
    text-decoration: none;
    font-weight: normal;
    color: #5F5F5F;
    border: 2px solid #EBEBEB;
    border-radius: 4px;
    background: #F9F9F9;
    visibility: hidden;
}

.jobs-teams .btn:hover {
    background: #EBEBEB;
    color: #555555;
}

.jobs-teams .btn.active {
    background: #454545;
    border-color: #454545;
    color: #FFFFFF;
}

.jobs-teams .btn:first-of-type {
    margin-left: 0;
}

.jobs-teams .btn:last-of-type {
    margin-right: 0;
}

.jobs-list .btn {
    padding: 10px;
    color: #FFFFFF;
}

.jobs-list .btn:hover {
    padding: 10px;
}

/* VIDEO CORNERS */
.wp-block-video video {
    vertical-align: middle;
    width: 100%;
    border-radius: 20px;
}

.wp-embed-responsive .wp-has-aspect-ratio iframe {
    border-radius: 15px;
}

/* TABLE CELL ALIGNMENT */
.kb-table td,
.kb-table th,
.kb-table tr {
    vertical-align: top;
}

/* Resources grid: Read More (q-button) bottom-align */
.wp-block-kadence-query94_4f0da5-2c .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query94_4f0da5-2c .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query94_4f0da5-2c .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query94_4f0da5-2c .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query94_4f0da5-2c .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;}

/* Events grid: Read More (q-button) bottom-align */
.wp-block-kadence-query141_7bd20a-d8 .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query141_7bd20a-d8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query141_7bd20a-d8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query141_7bd20a-d8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query141_7bd20a-d8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;}

/* Blog Articles grid: Read More (q-button) bottom-align */
.wp-block-kadence-query95_2c0575-a8 .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query95_2c0575-a8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query95_2c0575-a8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query95_2c0575-a8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query95_2c0575-a8 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;}

/* Webinars grid: Read More (q-button) bottom-align */
.wp-block-kadence-query143_88ae76-c3 .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query143_88ae76-c3 .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query143_88ae76-c3 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query143_88ae76-c3 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query143_88ae76-c3 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;}

/* Case Studies grid: Read More (q-button) bottom-align */
.wp-block-kadence-query87_6d84ae-27 .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query87_6d84ae-27 .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query87_6d84ae-27 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query87_6d84ae-27 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query87_6d84ae-27 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;}

/* Guides grid: Read More (q-button) bottom-align */
.wp-block-kadence-query97_5f5f32-45 .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query97_5f5f32-45 .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query97_5f5f32-45 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query97_5f5f32-45 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query97_5f5f32-45 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;}

/* Media Coverage grid: Read More (q-button) bottom-align */
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post .kb-row-layout-wrap{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post .kb-row-layout-wrap > .kt-row-column-wrap{flex:1 1 auto;grid-template-rows:auto 1fr;}
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post .kt-row-column-wrap > .wp-block-kadence-column:last-child{display:flex;flex-direction:column;}
.wp-block-kadence-query111_02cb78-19 .kb-query-item.kb-query-block-post .kt-row-column-wrap > .wp-block-kadence-column:last-child > .kt-inside-inner-col{flex:1 1 auto;}

/* Press Releases grid: Read More (q-button) bottom-align */
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post{display:flex;flex-direction:column;}
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post > .wp-block-kadence-column{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post > .wp-block-kadence-column > .kt-inside-inner-col{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post .kb-row-layout-wrap{flex:1 1 auto;display:flex;flex-direction:column;}
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post .kb-row-layout-wrap > .kt-row-column-wrap{flex:1 1 auto;grid-template-rows:auto 1fr;}
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post .kt-row-column-wrap > .wp-block-kadence-column:last-child{display:flex;flex-direction:column;}
.wp-block-kadence-query108_220431-9e .kb-query-item.kb-query-block-post .kt-row-column-wrap > .wp-block-kadence-column:last-child > .kt-inside-inner-col{flex:1 1 auto;}

/* === Guard Scheduling LP (lp #17718) === */
/* Hero: rating group -- tight and flush left with the copy above */
.tf-rating-row .wp-block-kadence-column > .kt-inside-inner-col{
  display:flex !important;
  flex-direction:row !important;
  align-items:center;
  justify-content:flex-start;
  flex-wrap:wrap;
  gap:10px;
}
.tf-rating-row figure,
.tf-rating-row .wp-block-kadence-advancedheading{ margin:0 !important; }
.tf-rating-row img{ display:block; }

/* Hero: trust badges -- tight and flush left */
.tf-badge-row .wp-block-kadence-column > .kt-inside-inner-col{
  display:flex !important;
  flex-direction:row !important;
  align-items:center;
  justify-content:flex-start;
  flex-wrap:wrap;
  gap:14px;
}
.tf-badge-row figure{ margin:0 !important; }

/* Trusted by: continuous left-to-right marquee.
   Logo set is duplicated in markup; margin-right (not gap) keeps the
   50% translate seamless. */
.tf-logo-marquee,
.tf-logo-marquee > .kt-row-layout-inner,
.tf-logo-marquee .kt-row-column-wrap{ overflow:hidden !important; }
.tf-logo-marquee .wp-block-kadence-column > .kt-inside-inner-col{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  align-items:center;
  width:max-content !important;
  will-change:transform;
  animation:tf-logo-scroll 45s linear infinite;
}
.tf-logo-marquee figure{
  margin:0 56px 0 0 !important;
  flex:0 0 auto;
}
.tf-logo-marquee img{
  max-height:44px;
  width:auto;
  object-fit:contain;
}
.tf-logo-marquee:hover .wp-block-kadence-column > .kt-inside-inner-col{
  animation-play-state:paused;
}
@keyframes tf-logo-scroll{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (max-width:767px){
  .tf-logo-marquee figure{ margin-right:36px !important; }
  .tf-logo-marquee img{ max-height:34px; }
}
@media (prefers-reduced-motion:reduce){
  .tf-logo-marquee .wp-block-kadence-column > .kt-inside-inner-col{
    animation:none !important;
    flex-wrap:wrap !important;
    justify-content:center;
    width:auto !important;
    gap:28px;
  }
  .tf-logo-marquee figure{ margin-right:0 !important; }
}
/* === end Guard Scheduling LP === */

/* === Book Demo LP (lp #17767) === */
/* Whole page dark, matching source body.dark-mode (--dark-blue #011024).
   The six section rows are TRANSPARENT (no bgColor) so the texture below shows through -
   the navy comes from here, not from each row. */
body.postid-17767{ background-color:#021024 !important; }

/* Decorative geometric texture. Source layers .hero-bg.is-dark{opacity:.3} and
   .body-bg-1{opacity:.4} behind the navy; reproduced as one fixed faded layer. */
body.postid-17767::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  background-image:url('/wp-content/uploads/2026/07/67bf33a781b62099a20724cb_dark-bg-1.webp');
  background-size:cover;
  background-position:center top;
  background-repeat:no-repeat;
  opacity:.3;
}
/* Content sits above the texture; theme wrappers must not paint over it */
body.postid-17767 #wrapper{ position:relative; z-index:1; }
/* Kadence paints '.content-bg, body.content-style-unboxed .site{background:var(--global-palette9)}'
   and #wrapper carries .site - without this it covers the navy + texture with white. */
body.postid-17767 #wrapper,
body.postid-17767 .site,
body.postid-17767 #inner-wrap,
body.postid-17767 #primary,
body.postid-17767 .content-container,
body.postid-17767 #main,
body.postid-17767 .content-wrap,
body.postid-17767 article.entry,
body.postid-17767 .entry-content-wrap,
body.postid-17767 .entry-content{
  background:transparent !important;
  box-shadow:none !important;
}
@media (max-width:767px){ body.postid-17767::before{ background-attachment:scroll; } }

/* Top bar. Source .navbar_component is position:fixed; sticky here so it cannot
   overlap content. .nav-container.is-dark = 20% white + 1px white + blur(10px). */
.tf-topbar-row{ position:sticky; top:1rem; z-index:50; }
.tf-topbar > .kt-row-column-wrap{
  background-color:rgba(255,255,255,.20);
  border:1px solid rgba(255,255,255,.9);
  border-radius:999px;
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  padding:.8rem 1.5rem;
}
.tf-topbar figure{ margin:0 !important; }
.tf-topbar figure img{ height:2rem; width:auto; }
.tf-topbar-actions > .kt-inside-inner-col{
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:.625rem;
}
.tf-topbar-actions .wp-block-kadence-advancedbtn{ margin:0 !important; }
/* first action = the outline "Call today" variant (source .button-outline.is-navbar.is-dark) */
.tf-topbar-actions > .kt-inside-inner-col > *:first-child .kb-button{
  background-color:rgba(255,255,255,.20) !important;
  border:1px solid var(--global-palette9,#fff) !important;
  color:var(--global-palette9,#fff) !important;
}
.tf-topbar-actions > .kt-inside-inner-col > *:first-child .kb-button:hover{
  background-color:var(--global-palette9,#fff) !important;
  color:var(--global-palette3,#011024) !important;
}
@media (max-width:1024px){
  .tf-topbar > .kt-row-column-wrap{ border-radius:20px; }
  .tf-topbar-actions > .kt-inside-inner-col{ justify-content:flex-start; }
}

/* Hero testimonial: lime accent rule, matching the source pull-quote */
.tf-quote > .kt-inside-inner-col{
  border-left:3px solid var(--global-palette10,#bde72a);
  padding-left:18px;
}
.tf-quote .wp-block-kadence-advancedheading:last-child{ opacity:.8; }

/* Translucent glass cards over the navy.
   Source: .full-width-card.is-dark #ffffff1a / .feature-card.is-dark #fff3,
   both with a white hairline border and a 5px backdrop blur. */
.tf-glass-card > .kt-inside-inner-col,
.tf-glass-tile > .kt-inside-inner-col{
  border:1px solid rgba(255,255,255,.28);
  -webkit-backdrop-filter:blur(5px);
  backdrop-filter:blur(5px);
  box-shadow:0 4px 35px rgba(0,0,0,.15);
}
.tf-glass-card > .kt-inside-inner-col{
  background-color:rgba(255,255,255,.10);
  border-radius:25px;
}
.tf-glass-tile > .kt-inside-inner-col{
  background-color:rgba(255,255,255,.16);
  border-radius:10px;
  height:100%;
}

/* Final CTA: blue pill, heading left / button right (source .cta-wrap.is-dark) */
/* Source .cta-wrap has box-shadow:0 4px 35px #00000026 - I had omitted it entirely.
   Using the same two-layer shadow as .tf-lightcard so every card and pill on these pages
   shares one shadow language. Applies to all four .tf-cta-pill pages. */
.tf-cta-pill > .kt-inside-inner-col{
  border-radius:200px;
  box-shadow:0 6px 22px rgba(0,0,0,.13), 0 2px 5px rgba(0,0,0,.08);
}
@media (max-width:1024px){ .tf-cta-pill > .kt-inside-inner-col{ border-radius:20px; } }
/* Heading LEFT / button RIGHT. Kadence emits grid-template-columns:repeat(2,minmax(0,1fr)) for
   this inner row, which halves the pill and forces the heading onto two lines. '1fr auto' gives
   the heading all remaining width and sizes the button to its content.
   Scoped >=768px so Kadence's single-column mobile stack (minmax(0,1fr)) survives.
   Applies to every .tf-cta-pill page: book-demo, guard-tour, mobile-patrol-tour, silvertrac. */
@media (min-width:768px){
  .tf-cta-pill > .kt-inside-inner-col > .kb-row-layout-wrap > .kt-row-column-wrap{
    grid-template-columns:1fr auto !important;
    align-items:center;
  }
}

/* Retention.com disclaimer. Source .prefooter-component is black on WHITE;
   requested on the dark background, so muted light text with a hairline rule above. */
.tf-disclaimer > .kt-inside-inner-col{
  max-width:900px;
  margin-inline:auto;
  border-top:1px solid rgba(255,255,255,.15);
  padding-top:1.5rem;
  opacity:.55;
}
.tf-disclaimer a{ color:var(--global-palette1,#00b5e6); text-decoration:underline; }

/* HubSpot demo form on the glass card (.tf-bd-form).
   Source: go.trackforce.com/book-demo. .form-wrapper.is-dark = #ffffff1a + blur(10px)
   + 1px white hairline + 20px radius + 0 4px 35px shadow. .hs-input = #fff3, 200px
   radius, 3.5rem min-height, 1rem bottom margin, .625rem 1.25rem padding, inherited
   white text. .hs-button = pill, .75rem 2rem, weight 600, auto width.
   Layout mirrors the source .edited-form grid (two columns, 4% gutter, single column
   under 768px). The form is injected client-side, so ".tf-bd-form" is listed in
   Perfmatters > Assets > Remove Unused CSS > Excluded Selectors.
   Installed 2026-09-02. */
.tf-bd-form > .kt-inside-inner-col{
  background-color:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.9);
  border-radius:20px;
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  box-shadow:0 4px 35px rgba(0,0,0,.15);
}

/* Layout */
.tf-bd-form form{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  column-gap:4% !important;
}
.tf-bd-form form fieldset{
  display:contents;
  max-width:none !important;
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
}
.tf-bd-form form .hs-form-field{ width:100% !important; float:none !important; }
.tf-bd-form form .hs-form-field > .input{ margin:0 !important; }
.tf-bd-form form .hs-fieldtype-hidden{ display:none !important; }
.tf-bd-form form legend:empty{ display:none !important; }
/* Rows that span both columns. No blanket "form > *" rule: the field wrappers are
   direct children of the form on this portal and a blanket rule collapses the grid. */
.tf-bd-form form div:has(.hs-richtext),
.tf-bd-form form fieldset:has(.hs-richtext),
.tf-bd-form form .hs-richtext,
.tf-bd-form form .legal-consent-container,
.tf-bd-form form .hs_recaptcha,
.tf-bd-form form .hs-recaptcha,
.tf-bd-form form .hs_error_rollup,
.tf-bd-form form .hs-fieldtype-textarea,
.tf-bd-form form .hs-fieldtype-booleancheckbox,
.tf-bd-form form .hs-fieldtype-checkbox,
.tf-bd-form form .hs-fieldtype-radio,
.tf-bd-form form .hs_submit{ grid-column:1 / -1 !important; }
.tf-bd-form form .hs_recaptcha{ margin:10px 0 25px; }
.tf-bd-form form .hs_submit .actions{ margin:0 !important; padding:0 !important; }
@media (max-width:767px){
  .tf-bd-form form{ display:block !important; }
}

/* Type */
.tf-bd-form form label,
.tf-bd-form form legend,
.tf-bd-form form p,
.tf-bd-form form span,
.tf-bd-form form li{ color:var(--global-palette9,#fff) !important; }
.tf-bd-form form .hs-form-field > label{
  display:block;
  margin:0 0 6px !important;
  font-size:.95rem;
  font-weight:700;
  line-height:1.3;
}
.tf-bd-form form .hs-field-desc{ display:block; margin:0 0 6px; font-size:.85rem; font-weight:400; }
.tf-bd-form form .legal-consent-container,
.tf-bd-form form .hs-richtext{ font-size:.85rem; line-height:1.5; }
.tf-bd-form form .hs-richtext p span,
.tf-bd-form form .legal-consent-container span{ color:inherit !important; }
/* Source link colour fails contrast on the dark card; using the page lime accent */
.tf-bd-form form a{ color:var(--global-palette10,#bde72a) !important; text-decoration:underline; }

/* Pill fields */
.tf-bd-form form input:not([type=submit]):not([type=checkbox]):not([type=radio]),
.tf-bd-form form select,
.tf-bd-form form textarea{
  background-color:rgba(255,255,255,.20) !important;
  color:var(--global-palette9,#fff) !important;
  border:1px solid rgba(255,255,255,.9) !important;
  border-radius:200px !important;
  width:100% !important;
  max-width:100% !important;
  min-height:3.5rem;
  margin:0 0 1rem !important;
  padding:.625rem 1.25rem !important;
  font-size:1rem;
  line-height:1.4;
  box-sizing:border-box !important;
}
.tf-bd-form form textarea{ border-radius:20px !important; min-height:7rem; }
.tf-bd-form form ::placeholder{ color:rgba(255,255,255,.75); opacity:1; }
.tf-bd-form form select{
  -webkit-appearance:none;
  appearance:none;
  padding-right:2.5rem !important;
  background-repeat:no-repeat;
  background-position:right 1.1rem center;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23ffffff' stroke-width='2' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
}
/* native dropdown list paints on the OS surface, so options need their own colours */
.tf-bd-form form select option{ color:#011024; background-color:#fff; }

/* Blue pill submit. Source uses --blue #148cfc, which gives white text only 3.3:1;
   using their --medium-blue #0569c6 instead for 5.7:1, AA at this size. */
.tf-bd-form form input[type=submit],
.tf-bd-form form button[type=submit],
.tf-bd-form form .hs-button{
  background-color:#0569c6 !important;
  border:0 !important;
  color:var(--global-palette9,#fff) !important;
  border-radius:200px !important;
  padding:.75rem 2rem !important;
  min-height:48px;
  width:auto !important;
  font-weight:600 !important;
  font-size:1rem !important;
  cursor:pointer;
  transition:background-color .2s ease-in-out;
}
.tf-bd-form form input[type=submit]:hover,
.tf-bd-form form button[type=submit]:hover,
.tf-bd-form form .hs-button:hover{ background-color:#148cfc !important; }

/* Focus and validation */
.tf-bd-form form input:focus-visible,
.tf-bd-form form select:focus-visible,
.tf-bd-form form textarea:focus-visible,
.tf-bd-form form button:focus-visible,
.tf-bd-form form .hs-button:focus-visible{
  outline:3px solid var(--global-palette10,#bde72a) !important;
  outline-offset:2px !important;
}
.tf-bd-form form .hs-error-msgs{ list-style:none; margin:0 0 .75rem !important; padding:0 !important; }
.tf-bd-form form .hs-error-msg,
.tf-bd-form form .hs-error-msgs li,
.tf-bd-form form .hs-error-msgs label{ color:#ffd7dd !important; }
/* === end Book Demo LP === */

/* === TF Landing Page light kit (tflp-) - START ===
   Light, site-standard chrome for the paid-search /lp/ pages, so an LP reads
   like the main website instead of a separate dark micro-site.
   Pairs with the shared tfc- component layer: the page background stays the
   theme default white and the navy comes from individual rows, exactly as on
   the main site. Page-agnostic on purpose - no postid scoping, so cloning an
   LP does not break it. Installed 2026-09-04. */

/* --- sticky white top bar (site header language, no nav) --- */
.tflp-topbar{
  position:sticky; top:0; z-index:60;
  background:#fff !important;
  border-bottom:1px solid var(--tfc-g200,#dde3ec);
  box-shadow:0 1px 3px rgba(1,16,36,.06);
}
.tflp-topbar figure{ margin:0 !important; }
.tflp-topbar-in > .kt-row-column-wrap{ align-items:center; }
.tflp-topbar .tf-topbar-actions > .kt-inside-inner-col{
  display:flex !important; flex-direction:row !important;
  align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:10px;
}
.tflp-topbar .wp-block-kadence-advancedbtn{ margin:0 !important; }
@media (max-width:767px){
  .tflp-topbar .tf-topbar-actions > .kt-inside-inner-col{ justify-content:center; }
}

/* --- hero band ---
   Reuses the site CTA gradient. NOT .tfc-band-cta, because that class also
   applies max-width:760px to every .kt-inside-inner-col, which is right for a
   centred CTA and wrong for a two-column hero. */
.tflp-hero{ background:linear-gradient(150deg,#011024 0%,#04529a 150%) !important; }
.tflp-hero .tf-quote > .kt-inside-inner-col{
  border-left:3px solid var(--tfc-cyan4,#33c7f0);
  padding-left:18px;
}

/* --- white form card on the navy hero --- */
.tflp-formcard > .kt-inside-inner-col{
  background:#fff;
  border-radius:16px;
  padding:30px;
  box-shadow:0 18px 50px rgba(1,16,36,.30);
}
.tflp-form-h2{
  font-weight:700; font-size:1.35rem; line-height:1.2;
  letter-spacing:-.01em; color:var(--tfc-navy,#011024); margin:0 0 18px;
}
@media (max-width:767px){ .tflp-formcard > .kt-inside-inner-col{ padding:22px; } }

/* --- HubSpot demo form, light ---
   Same grid as the dark .tf-bd-form rules, which are proven against this
   portal/form pair; only the colours change. The form is injected client-side,
   so ".tflp-form" must stay in Perfmatters > Assets > Remove Unused CSS >
   Excluded Selectors. */
.tflp-form form{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  column-gap:4% !important;
}
.tflp-form form fieldset{
  display:contents; max-width:none !important; width:100% !important;
  margin:0 !important; padding:0 !important; border:0 !important;
}
.tflp-form form .hs-form-field{ width:100% !important; float:none !important; }
.tflp-form form .hs-form-field > .input{ margin:0 !important; }
.tflp-form form .hs-fieldtype-hidden{ display:none !important; }
.tflp-form form legend:empty{ display:none !important; }
.tflp-form form div:has(.hs-richtext),
.tflp-form form fieldset:has(.hs-richtext),
.tflp-form form .hs-richtext,
.tflp-form form .legal-consent-container,
.tflp-form form .hs_recaptcha,
.tflp-form form .hs-recaptcha,
.tflp-form form .hs_error_rollup,
.tflp-form form .hs-fieldtype-textarea,
.tflp-form form .hs-fieldtype-booleancheckbox,
.tflp-form form .hs-fieldtype-checkbox,
.tflp-form form .hs-fieldtype-radio,
.tflp-form form .hs_submit{ grid-column:1 / -1 !important; }
.tflp-form form .hs_recaptcha{ margin:10px 0 22px; }
.tflp-form form .hs_submit .actions{ margin:0 !important; padding:0 !important; }
@media (max-width:767px){ .tflp-form form{ display:block !important; } }

/* type */
.tflp-form form label,
.tflp-form form legend,
.tflp-form form p,
.tflp-form form span,
.tflp-form form li{ color:var(--tfc-g800,#1c2536) !important; }
.tflp-form form .hs-form-field > label{
  display:block; margin:0 0 6px !important;
  font-size:.9rem; font-weight:700; line-height:1.3;
  color:var(--tfc-navy,#011024) !important;
}
.tflp-form form .hs-field-desc{
  display:block; margin:0 0 6px; font-size:.82rem; font-weight:400;
  color:var(--tfc-g500,#566072) !important;
}
.tflp-form form .legal-consent-container,
.tflp-form form .hs-richtext{
  font-size:.8rem; line-height:1.5; color:var(--tfc-g500,#566072) !important;
}
.tflp-form form .hs-richtext p span,
.tflp-form form .legal-consent-container span{ color:inherit !important; }
.tflp-form form a{ color:var(--tfc-blue-text,#0b6fd0) !important; text-decoration:underline; }

/* fields - site card language: white, hairline border, 8px radius */
.tflp-form form input:not([type=submit]):not([type=checkbox]):not([type=radio]),
.tflp-form form select,
.tflp-form form textarea{
  background:#fff !important;
  color:var(--tfc-navy,#011024) !important;
  border:1.5px solid var(--tfc-g200,#dde3ec) !important;
  border-radius:8px !important;
  width:100% !important; max-width:100% !important;
  min-height:48px; margin:0 0 14px !important;
  padding:.6rem .9rem !important;
  font-size:1rem; line-height:1.4; box-sizing:border-box !important;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.tflp-form form textarea{ min-height:7rem; }
.tflp-form form ::placeholder{ color:var(--tfc-g400,#8b94a5); opacity:1; }
.tflp-form form input:not([type=submit]):not([type=checkbox]):not([type=radio]):hover,
.tflp-form form select:hover,
.tflp-form form textarea:hover{ border-color:var(--tfc-g400,#8b94a5) !important; }
.tflp-form form select{
  -webkit-appearance:none; appearance:none;
  padding-right:2.4rem !important;
  background-repeat:no-repeat; background-position:right 1rem center;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23566072' stroke-width='2' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
}

/* submit - #0569c6 gives white text 5.7:1, AA at this size.
   The brand --blue #148cfc would only reach 3.3:1. */
.tflp-form form input[type=submit],
.tflp-form form button[type=submit],
.tflp-form form .hs-button{
  background-color:#0569c6 !important;
  border:0 !important; color:#fff !important;
  border-radius:7px !important;
  padding:.8rem 2rem !important; min-height:48px; width:100% !important;
  font-weight:600 !important; font-size:1rem !important;
  cursor:pointer; transition:background-color .2s ease-in-out;
}
.tflp-form form input[type=submit]:hover,
.tflp-form form button[type=submit]:hover,
.tflp-form form .hs-button:hover{ background-color:#04529a !important; }

/* focus and validation */
.tflp-form form input:focus-visible,
.tflp-form form select:focus-visible,
.tflp-form form textarea:focus-visible,
.tflp-form form button:focus-visible,
.tflp-form form .hs-button:focus-visible{
  outline:3px solid #148cfc !important; outline-offset:2px !important;
  border-color:#148cfc !important;
}
.tflp-form form .hs-error-msgs{ list-style:none; margin:0 0 .7rem !important; padding:0 !important; }
.tflp-form form .hs-error-msg,
.tflp-form form .hs-error-msgs li,
.tflp-form form .hs-error-msgs label{ color:#b3001b !important; font-size:.85rem; }

/* --- customer logo strip ---
   The brand logo SVGs are white-only artwork, so this strip stays dark.
   #011024 is the hero gradient's start colour, so the two read as one area. */
.tflp-logos{ background:#011024 !important; }
.tflp-logos .tfc-eyebrow{ text-align:center; }

/* --- feature card icons (existing brand-blue SVGs on a light tile) --- */
.tflp-feat-ico{
  width:52px; height:52px; border-radius:12px;
  background:rgba(20,140,252,.08);
  display:flex !important; align-items:center; justify-content:center;
  margin:0 0 18px !important;
}
.tflp-feat-ico img{ width:28px; height:28px; }

/* --- retention.com disclaimer --- */
.tflp-disclaimer > .kt-inside-inner-col{
  max-width:900px; margin-inline:auto;
  border-top:1px solid var(--tfc-g200,#dde3ec); padding-top:1.4rem;
}
.tflp-disclaimer p,
.tflp-disclaimer .wp-block-kadence-advancedheading{
  font-size:.8rem !important; line-height:1.6 !important;
  color:var(--tfc-g400,#8b94a5) !important;
}
.tflp-disclaimer a{ color:var(--tfc-blue-text,#0b6fd0) !important; text-decoration:underline; }

/* ghost phone button on the light bar (overrides the dark LP rule) */
.tflp-topbar .tf-topbar-actions > .kt-inside-inner-col > *:first-child .kb-button{
  background-color:transparent !important;
  border:1.5px solid var(--tfc-g200,#dde3ec) !important;
  color:var(--tfc-navy,#011024) !important;
}
.tflp-topbar .tf-topbar-actions > .kt-inside-inner-col > *:first-child .kb-button:hover{
  background-color:var(--tfc-g50,#f6f7fa) !important;
  border-color:var(--tfc-g400,#8b94a5) !important;
  color:var(--tfc-navy,#011024) !important;
}

/* Final CTA heading on one line.
   .tfc-band-cta caps every inner column at 760px, which is right when the band
   carries a supporting paragraph but wraps this heading onto two lines at the
   top of the clamp. Widened from 1025px up only: below that it wraps normally,
   so there is no nowrap and no horizontal overflow risk on mobile.
   .tfc-band-cta is in the selector because the tfc- layer sits later in this
   file and would otherwise win the cascade at equal specificity. */
@media (min-width:1025px){
  .tfc-band-cta .tflp-cta-wide > .kt-inside-inner-col{ max-width:1010px; }
}

/* --- Kadence testimonials carousel on a light band --- */
.tflp-testimonials .kt-testimonial-item-wrap{
  margin-inline:auto; background:#fff;
  border:1.5px solid var(--tfc-g200,#dde3ec);
  border-radius:16px; overflow:hidden;
}
.tflp-testimonials .kt-testimonial-title{ color:var(--tfc-navy,#011024); font-weight:700; }
.tflp-testimonials .kt-testimonial-content{ color:var(--tfc-g500,#566072); }
.tflp-testimonials .kt-testimonial-name{ color:var(--tfc-navy,#011024); font-weight:700; }
.tflp-testimonials .kt-testimonial-occupation{ color:var(--tfc-g500,#566072); }
.tflp-testimonials .kt-testimonial-media-wrap img{ width:100%; height:auto; display:block; }

/* --- numbered feature badge on light cards --- */
.tflp-num{
  display:flex !important; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:10px;
  background:rgba(20,140,252,.10);
  color:var(--tfc-blue-text,#0b6fd0) !important;
  font-weight:700; font-size:14px; line-height:1; margin:0 !important;
}

/* --- minimal LP footer on flat navy ---
   Kept dark because the footer logo and the three social icons are white-only
   artwork. #011024 matches the hero gradient start so the CTA band above and
   the footer read as one closing area. */
.tflp-footer{ background:#011024 !important; }

/* --- icon accent for LP check + icon-card SVGs ---
   Those SVGs are stroked with currentColor and read --tf-icon-accent.
   The v1 original scoped it to Trackforce red (#e4022b) per post ID, which the
   stylesheet itself flagged as off-palette. Brand blue matches the icons used
   on the other redesigned LPs and needs no post-ID scoping. */
.tflp-accent{ --tf-icon-accent:#148cfc; }
/* === TF Landing Page light kit (tflp-) - END === */


/* === Checkpoint System LP (lp #17789) === */
/* Page background. Source .page-wrapper.cc-dark-bg applies this image at FULL opacity,
   background-position:0 0, background-size:cover (no fade - the artwork is already dark). */
body.postid-17789{
  background-color:var(--global-palette3,#011024) !important;
  background-image:url('/wp-content/uploads/2026/07/67e37747d4f7c1234888e3b4_Checkpoint-System-%E2%80%93-Landing-Page-Outline-scaled.avif');
  background-size:cover;
  background-position:0 0;
  background-repeat:no-repeat;
  /* scroll, not fixed: the source artwork is 956x2560 (tall). Fixed would make the
     painting box the viewport and crop/upscale it badly; scroll maps it to the full
     page height, which matches how the source paints it on .page-wrapper. */
  background-attachment:scroll;
}

/* Kadence paints '.content-bg, body.content-style-unboxed .site{background:var(--global-palette9)}'
   and #wrapper carries .site - without this it covers the page background with WHITE.
   Required because the section rows no longer carry bgColor. */
body.postid-17789 #wrapper{ position:relative; z-index:1; }
body.postid-17789 #wrapper,
body.postid-17789 .site,
body.postid-17789 #inner-wrap,
body.postid-17789 #primary,
body.postid-17789 .content-container,
body.postid-17789 #main,
body.postid-17789 .content-wrap,
body.postid-17789 article.entry,
body.postid-17789 .entry-content-wrap,
body.postid-17789 .entry-content{
  background:transparent !important;
  box-shadow:none !important;
}

/* Top bar and disclaimer reuse .tf-topbar-row / .tf-topbar / .tf-topbar-actions /
   .tf-disclaimer from the Book Demo block - do not delete that block. */

/* Features panel: source .div-block-2.cc-dark diagonal glass gradient */
.tf-glass-grad > .kt-inside-inner-col{
  background-image:linear-gradient(135deg,rgba(255,255,255,.10),rgba(255,255,255,.30));
  border:1px solid rgba(255,255,255,.28);
  border-radius:20px;
}

/* Numbered feature: number left, title beside it, description under the title
   (source .div-block-3 { display:flex; gap:1.25rem }) */
.tf-feature-item > .kt-inside-inner-col{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  column-gap:1.25rem;
  align-items:start;
}
.tf-feature-item > .kt-inside-inner-col > *:nth-child(1){ grid-column:1; grid-row:1; }
.tf-feature-item > .kt-inside-inner-col > *:nth-child(2){ grid-column:2; grid-row:1; }
.tf-feature-item > .kt-inside-inner-col > *:nth-child(3){ grid-column:2; grid-row:2; }

/* Product tour: Navattic iframe inset into the laptop bezel.
   Percentages are the source's .tour-embed-wrap values. */
.tf-tour-frame > .kt-inside-inner-col{
  position:relative;
  max-width:900px;
  margin-inline:auto;
}
.tf-tour-frame figure{ margin:0 !important; }
.tf-tour-frame figure img{ display:block; width:100%; height:auto; }
.tf-tour-frame .tf-tour-embed{
  position:absolute;
  top:5%;
  left:15%;
  width:70%;
  height:73%;
}
.tf-tour-frame .tf-tour-embed iframe{ width:100%; height:100%; border:0; }
/* Below the laptop's usable size, drop the bezel and show the tour full width */
@media (max-width:767px){
  .tf-tour-frame figure{ display:none; }
  .tf-tour-frame .tf-tour-embed{
    position:static;
    width:100%;
    height:auto;
    aspect-ratio:16/9;
    border-radius:12px;
    overflow:hidden;
  }
}

/* Native Kadence testimonials carousel on dark */
/* Kadence's containerMaxWidth emits 'max-width:900px' on .kt-testimonial-item-wrap but no
   centring, so with columns=1 the card sits flush LEFT in the full-width slide. */
.tf-testimonials .kt-testimonial-item-wrap{
  margin-inline:auto;
  background-color:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.28);
  border-radius:20px;
  overflow:hidden;
}
.tf-testimonials .kt-testimonial-title,
.tf-testimonials .kt-testimonial-content,
.tf-testimonials .kt-testimonial-name{ color:var(--global-palette9,#fff); }
.tf-testimonials .kt-testimonial-title{ font-weight:700; }
.tf-testimonials .kt-testimonial-occupation{ color:var(--global-palette9,#fff); opacity:.55; }
.tf-testimonials .kt-testimonial-media-wrap img{ width:100%; height:auto; display:block; }
/* === end Checkpoint System LP === */

/* === Guard Monitoring Software LP (lp #17796) === */
/* HubSpot form on the NAVY card: these rules moved 2026-09-02 to the shared section
   '=== HubSpot demo form on the navy card (.tf-gt-form) - SHARED ===' further down this
   file, because .tf-gt-form is used by every gt- landing page, not just this one. */

/* Feature: navy numeral circle beside the title, description spanning below
   (source .gt-feature-number 3.5rem circle + .gt-feature_content) */
.tf-gt-feature > .kt-inside-inner-col{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  column-gap:1rem;
  row-gap:.75rem;
  align-items:center;
}
.tf-gt-feature > .kt-inside-inner-col > *:nth-child(1){
  grid-column:1; grid-row:1;
  width:3.5rem; height:3.5rem;
  flex:none;
  background-color:var(--global-palette3,#011024);
  border-radius:999px;
  display:flex; align-items:center; justify-content:center;
  margin:0 !important;
}
.tf-gt-feature > .kt-inside-inner-col > *:nth-child(2){ grid-column:2; grid-row:1; margin:0 !important; }
.tf-gt-feature > .kt-inside-inner-col > *:nth-child(3){ grid-column:1 / -1; grid-row:2; }
@media (max-width:767px){
  .tf-gt-feature > .kt-inside-inner-col > *:nth-child(1){ width:3rem; height:3rem; }
}

/* Features grid is centred and capped at the source's 56rem */
.tf-gt-features > .kt-inside-inner-col{ max-width:56rem; margin-inline:auto; }
/* === end Guard Monitoring Software LP === */

/* === Guard Tour v1 LP (lp #17804) === */
/* Icon accent. The source uses Trackforce red (--_go-tracktik---red #e4022b /
   .check-icon #e71b40), which has no equivalent in the Kadence palette.
   Change this ONE value to e.g. var(--global-palette1) to bring it on-brand. */
body.postid-17804{ --tf-icon-accent:#e4022b; }

/* Icon cards: source .gt-card is centred, light, stretched to equal height,
   with the icon ABOVE the title (.gt-feature_title.icon, gap 1.5rem). */
.tf-gt-iconcard > .kt-inside-inner-col{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1rem;
  height:100%;
  text-align:center;
}
.tf-gt-icon{
  color:var(--tf-icon-accent);
  height:3.875rem;
  display:flex;
  align-items:center;
  justify-content:center;
}
.tf-gt-icon svg{ height:100%; width:auto; display:block; }
/* Source caps this grid at 70rem */
.tf-gt-iconcards > .kt-inside-inner-col{ max-width:70rem; margin-inline:auto; }

/* Horizontal check list: icon inline with its label, row centred
   (source .horizontal-checklist justify-content:center, .check-buletpoint gap 1rem) */
.tf-gt-checklist > .kt-row-column-wrap{ justify-content:center; }
.tf-gt-check > .kt-inside-inner-col{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:1rem;
}
.tf-gt-check .wp-block-kadence-advancedheading{ margin:0 !important; }
.tf-gt-check-icon{
  color:var(--tf-icon-accent);
  width:1.5rem;
  min-width:1.5rem;
  display:flex;
  align-items:center;
}
.tf-gt-check-icon svg{ width:100%; height:auto; display:block; }
/* === end Guard Tour v1 LP === */

/* === Guard Tour V2 LP (lp #17807) === */
/* Page background: source body{background-color:var(--grey) #eeece8} - warm light grey, not
   white. Rows are transparent so this shows through, which means the Kadence .site
   white-wrapper fix is REQUIRED (see the '.site paints white' reference memory). */
body.postid-17807{
  position:relative;
  background-color:#eeece8 !important;
}
/* Decorative line-art overlays. Source positions/opacities:
     .hero-bg   {opacity:.2; position:absolute; inset:0 0 0 auto}  + .hero-bg-img{height:800px}  -> top right
     .body-bg-2 {opacity:.2; position:absolute; inset:auto 0 0 auto}                            -> bottom right
     .body-bg-1 {opacity:.4; position:absolute; inset:-10% auto 0 0}                            -> left
   Grouped by opacity into the two available pseudo-elements: ::before carries the two .2 layers,
   ::after carries the .4 layer. position:absolute (not fixed) so they scroll with the page like
   the source's in-section graphics. z-index 0, with #wrapper lifted to 1 below. */
body.postid-17807::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.2;
  background-image:url('/wp-content/uploads/2026/07/67b8b183a579e0c90903788c_hero-bg.svg'), url('/wp-content/uploads/2026/07/67b8babe51ff4883c70f98c9_body-bg-2.svg');
  background-position:right top, right bottom;
  background-repeat:no-repeat, no-repeat;
  background-size:auto 800px, auto;
}
body.postid-17807::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.4;
  background-image:url('/wp-content/uploads/2026/07/67b8b9649fae9fc865dd8ca2_body-bg.svg');
  background-position:left top;
  background-repeat:no-repeat;
}
@media (max-width:767px){
  body.postid-17807::before{ background-size:auto 500px, auto; }
}
body.postid-17807 #wrapper{ position:relative; z-index:1; }
body.postid-17807 #wrapper,
body.postid-17807 .site,
body.postid-17807 #inner-wrap,
body.postid-17807 #primary,
body.postid-17807 .content-container,
body.postid-17807 #main,
body.postid-17807 .content-wrap,
body.postid-17807 article.entry,
body.postid-17807 .entry-content-wrap,
body.postid-17807 .entry-content{
  background:transparent !important;
  box-shadow:none !important;
}

/* WHITE PILL header. Source .nav-container{background:var(--white);border-radius:3.125rem;
   box-shadow:0 4px 35px #00000026;padding:1.25rem 1.75rem 1.25rem 2.5rem;margin-top:2rem} */
.tf-wpill-row{ position:sticky; top:1rem; z-index:50; }
.tf-wpill > .kt-row-column-wrap{
  background-color:var(--global-palette9,#fff);
  border-radius:3.125rem;
  box-shadow:0 4px 35px rgba(0,0,0,.15);
  padding:1rem 1.75rem 1rem 2.5rem;
  align-items:center;
}
.tf-wpill figure{ margin:0 !important; }
.tf-wpill figure img{ height:2rem; width:auto; }
.tf-wpill-actions > .kt-inside-inner-col{
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:.625rem;
}
.tf-wpill-actions .wp-block-kadence-advancedbtn{ margin:0 !important; }
/* first action = outline phone button (source .button-outline: 1px dark border, transparent) */
.tf-wpill-actions > .kt-inside-inner-col > *:first-child .kb-button{
  background-color:transparent !important;
  border:1px solid var(--global-palette3,#011024) !important;
  color:var(--global-palette3,#011024) !important;
}
.tf-wpill-actions > .kt-inside-inner-col > *:first-child .kb-button:hover{
  background-color:var(--global-palette3,#011024) !important;
  color:var(--global-palette9,#fff) !important;
}
@media (max-width:1024px){ .tf-wpill > .kt-row-column-wrap{ border-radius:20px; padding:1rem 1.25rem; } }

/* CYAN cards. Source .cta-card{background-color:#00b5e6 (== palette1);border:2px solid #fff;
   border-radius:1.25rem;backdrop-filter:blur(20px);box-shadow:0 4px 35px #00000026}.
   The INNER .fw-card-grid.cta-card also carries .cta-card, hence the nested white-bordered box. */
.tf-cyan-card > .kt-inside-inner-col{
  border:2px solid var(--global-palette9,#fff);
  box-shadow:0 4px 35px rgba(0,0,0,.15);
}
.tf-cyan-inner > .kt-row-column-wrap{
  border:2px solid var(--global-palette9,#fff);
  border-radius:1.25rem;
  padding:2rem !important;
  align-items:center;
}

/* Check list inside the cyan card (source ul.list) */
.tf-check-list{ list-style:none; margin:0; padding:0; }
.tf-check-list li{
  position:relative;
  padding-left:1.1rem;
  margin:.35rem 0;
  font-size:15px;
  color:var(--global-palette3,#011024);
}
.tf-check-list li::before{
  content:"";
  position:absolute;
  left:0;
  top:.55em;
  width:6px;
  height:6px;
  border-radius:50%;
  background-color:var(--global-palette3,#011024);
}

/* Light card (source .full-width-card: 1px white border, radius 1.5625rem, shadow) */
/* The source's 0 4px 35px #00000026 is too diffuse to read on light-on-light
   (#f1f1f1 card on the #eeece8 page are ~5% apart), so it looked like no shadow at all.
   Tighter blur + a close contact shadow gives a visible lift without looking heavy.
   Shared: Silvertrac (form + Take Control), guard-tour V2 (Why Fortune 2000),
   mobile-patrol-tour (Take Control). */
.tf-lightcard > .kt-inside-inner-col{
  border:1px solid var(--global-palette9,#fff);
  box-shadow:0 6px 22px rgba(0,0,0,.13), 0 2px 5px rgba(0,0,0,.08);
}
/* source .fw-card-grid{grid-template-columns:.5fr 1fr} -> image narrower than the content */
@media (min-width:768px){
  .tf-why-grid > .kt-row-column-wrap{ grid-template-columns:0.5fr 1fr !important; align-items:center; }
}
.tf-why-tile > .kt-inside-inner-col{ height:100%; }
.tf-why-tile figure{ margin:0 !important; }

/* Hero pull-quote is BLUE on this page (source .div-block-13{color:var(--blue) #148cfc});
   the lime .cc-neon-green variant is NOT used here. */
.tf-bluequote > .kt-inside-inner-col{
  border-left:3px solid #148cfc;
  padding-left:18px;
}
.tf-bluequote > .kt-inside-inner-col > *:first-child{ color:#148cfc !important; }

/* HubSpot form on the LIGHT card: rules moved 2026-09-02 to the shared section
   '=== HubSpot demo form on the light card (.tf-base-form) - SHARED ===' above,
   because .tf-base-form is used by four base-template pages, not just this one. */

/* === end Guard Tour V2 LP === */

/* === Mobile Patrol Tour LP (lp #17818) === */
/* BASE template page (like guard-tour V2 #17807), not a gt- page.
   Source body{background-color:var(--grey) #eeece8} + the same trio of decorative overlays. */
body.postid-17818{
  position:relative;
  background-color:#eeece8 !important;
}
/* .hero-bg opacity .2 (top right) + .body-bg-2 opacity .2 (bottom right) on ::before;
   .body-bg-1 opacity .4 (left) on ::after. absolute (not fixed) so they scroll with the page. */
body.postid-17818::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.2;
  background-image:url('/wp-content/uploads/2026/07/67b8b183a579e0c90903788c_hero-bg.svg'), url('/wp-content/uploads/2026/07/67b8babe51ff4883c70f98c9_body-bg-2.svg');
  background-position:right top, right bottom;
  background-repeat:no-repeat, no-repeat;
  background-size:auto 800px, auto;
}
body.postid-17818::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.4;
  background-image:url('/wp-content/uploads/2026/07/67b8b9649fae9fc865dd8ca2_body-bg.svg');
  background-position:left top;
  background-repeat:no-repeat;
}
@media (max-width:767px){ body.postid-17818::before{ background-size:auto 500px, auto; } }
/* Kadence paints .content-bg / body.content-style-unboxed .site white - must be neutralised
   because the rows are transparent. */
body.postid-17818 #wrapper{ position:relative; z-index:1; }
body.postid-17818 #wrapper,
body.postid-17818 .site,
body.postid-17818 #inner-wrap,
body.postid-17818 #primary,
body.postid-17818 .content-container,
body.postid-17818 #main,
body.postid-17818 .content-wrap,
body.postid-17818 article.entry,
body.postid-17818 .entry-content-wrap,
body.postid-17818 .entry-content{
  background:transparent !important;
  box-shadow:none !important;
}

/* White rounded "Trusted By" panel. Source .hero-logos-bar{background:var(--white);
   border-top-right-radius:100px;border-bottom-right-radius:100px;padding:2rem 0} and
   .hero-logos{opacity:.5;justify-content:space-between;width:100%;padding-right:2rem}.
   The source panel bleeds to the viewport's left edge; kept inside the content width here. */
.tf-trustbar > .kt-inside-inner-col{
  background-color:var(--global-palette9,#fff);
  border-radius:0 100px 100px 0;
  padding:1.25rem 2rem 1.25rem 1.5rem;
  box-shadow:0 4px 24px rgba(0,0,0,.06);
}
.tf-trustbar p{ text-transform:uppercase; letter-spacing:.08em; opacity:.6; }
/* NOTE: .tf-trustbar-logos is on the ROWLAYOUT, whose direct child is .kt-row-column-wrap -
   the column sits one level deeper. A '>' selector here matches nothing and the logos stack.
   Use the same descendant pattern as .tf-logo-marquee / .tf-rating-row. */
.tf-trustbar-logos .wp-block-kadence-column > .kt-inside-inner-col{
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:1rem;
  opacity:.5;
}
.tf-trustbar-logos figure{ margin:0 !important; }
.tf-trustbar-logos img{ width:5rem; height:auto; object-fit:contain; }
@media (max-width:767px){
  .tf-trustbar > .kt-inside-inner-col{ border-radius:16px; }
  .tf-trustbar-logos img{ width:3.25rem; }
}

/* Feature numerals are BLUE #148cfc (source .feature-number{color:var(--blue)}), not cyan.
   Targeted positionally because advancedheading does not emit className. */
/* Feature cards: source .feature-card{border:1px solid var(--white);border-radius:10px;
   box-shadow:0 4px 35px #00000026} - #00000026 is 15% black. The grey panel behind these was
   removed at the user's request, so the border + shadow are what lift them off the warm page. */
.tf-feat > .kt-inside-inner-col{
  height:100%;
  border:1px solid var(--global-palette9,#fff);
  box-shadow:0 4px 35px rgba(0,0,0,.15);
}
.tf-feat > .kt-inside-inner-col > *:first-child{ color:#148cfc !important; }

/* Ratings + badges block sits centred between Take Control and the CTA */
.tf-trust-centre .tf-rating-row > .kt-row-column-wrap,
.tf-trust-centre .tf-badge-row > .kt-row-column-wrap{ justify-content:center; }
.tf-trust-centre .tf-rating-row .wp-block-kadence-column > .kt-inside-inner-col,
.tf-trust-centre .tf-badge-row .wp-block-kadence-column > .kt-inside-inner-col{ justify-content:center; }
/* Width cap for the Key Features block. Source .max-width-xlarge.is-features{max-width:60rem}.
   NOTE: silvertrac #17831 ALSO uses .tf-feature-panel and depends on this rule - it was
   accidentally dropped when this block was rewritten, so keep it here. */
.tf-feature-panel > .kt-inside-inner-col{ max-width:60rem; margin-inline:auto; }

/* === end Mobile Patrol Tour LP === */

/* === Security Operations 2 LP (lp #17825) === */
/* BASE template page: source body{background-color:var(--grey) #eeece8}. Rows are transparent
   so this shows through - EXCEPT the enterprise logo row, which the source paints white
   (div.section.bg-color-white). Requires the Kadence .site white-wrapper fix. */
body.postid-17825{
  position:relative;
  background-color:#eeece8 !important;
}
/* Only ONE decorative layer on this page (unlike guard-tour V2 / mobile-patrol-tour which have
   three): .hero-bg{opacity:.2;position:absolute;inset:0 0 0 auto} with
   .hero-bg-img.security-hero{margin-top:300px} - i.e. top right, pushed down 300px. */
body.postid-17825::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.2;
  background-image:url('/wp-content/uploads/2026/07/67b8b183a579e0c90903788c_hero-bg.svg');
  background-position:right 300px;
  background-repeat:no-repeat;
  background-size:auto 800px;
}
@media (max-width:767px){ body.postid-17825::before{ background-size:auto 500px; background-position:right 150px; } }
body.postid-17825 #wrapper{ position:relative; z-index:1; }
body.postid-17825 #wrapper,
body.postid-17825 .site,
body.postid-17825 #inner-wrap,
body.postid-17825 #primary,
body.postid-17825 .content-container,
body.postid-17825 #main,
body.postid-17825 .content-wrap,
body.postid-17825 article.entry,
body.postid-17825 .entry-content-wrap,
body.postid-17825 .entry-content{
  background:transparent !important;
  box-shadow:none !important;
}

/* Reuses .tf-logo-marquee and .tf-gt-iconcard. */

/* Hero tour: heading OVERLAYS the laptop (source .tour-title-v2 position:absolute;top:50px;
   z-index:3) and the Navattic embed uses the .security inset (top:16% h:70%). */
.tf-so-tourframe > .kt-inside-inner-col{
  position:relative;
  max-width:900px;
  margin-inline:auto;
}
.tf-so-tourframe > .kt-inside-inner-col > .wp-block-kadence-advancedheading:first-child{
  position:absolute;
  top:50px;
  left:0;
  right:0;
  z-index:3;
  margin:0 !important;
}
.tf-so-tourframe figure{ margin:0 !important; }
.tf-so-tourframe figure img{ display:block; width:100%; height:auto; }
.tf-so-tourembed{
  position:absolute;
  top:16%;
  left:15%;
  width:70%;
  height:70%;
}
.tf-so-tourembed iframe{ width:100%; height:100%; border:0; }
/* Below the laptop's usable size: heading back in flow, tour full width */
@media (max-width:767px){
  .tf-so-tourframe > .kt-inside-inner-col > .wp-block-kadence-advancedheading:first-child{
    position:static;
    margin:0 0 1rem !important;
  }
  .tf-so-tourframe figure{ display:none; }
  .tf-so-tourembed{
    position:static;
    width:100%;
    height:auto;
    aspect-ratio:16/9;
    border-radius:12px;
    overflow:hidden;
  }
}

/* Hero badge pair, centred inline */
/* .tf-so-badges is on the ROWLAYOUT - a '>' selector would target .kt-row-column-wrap and never
   match the column, leaving the two badge images stacked. Descendant pattern required. */
/* Source .hero-reviews{flex-flow:column} - the certificate cards STACK above the rating strip. */
.tf-so-badges .wp-block-kadence-column > .kt-inside-inner-col{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1.25rem;
}
.tf-so-badges figure img{ max-width:600px; width:100%; height:auto; }
.tf-so-badges figure{ margin:0 !important; }

/* Benefit cards: equal height (source .feature-card.is-white + 1px white border + shadow) */
.tf-so-card > .kt-inside-inner-col{
  height:100%;
  border:1px solid var(--global-palette9,#fff);
  box-shadow:0 4px 24px rgba(0,0,0,.06);
}

/* Testimonial carousel on light: white cards, grey attribution line
   (source .review-company{color:#838383;font-size:.9rem}) */
/* Same as checkpoint-system: containerMaxWidth emits max-width:400px with no centring,
   which left-shifts each card inside its slide. */
.tf-so-reviews .kt-testimonial-item-wrap{
  margin-inline:auto;
  background-color:var(--global-palette9,#fff);
  border-radius:10px;
  box-shadow:0 4px 24px rgba(0,0,0,.06);
  overflow:hidden;
  height:100%;
}
.tf-so-reviews .kt-testimonial-name{ font-weight:700; }
.tf-so-reviews .kt-testimonial-occupation{ color:#838383; font-size:.9rem; }
.tf-so-reviews .kt-testimonial-media-wrap img{ width:100%; height:auto; display:block; }

/* Final form section: source .header_component.top-line has border-top:1px solid #000;
   softened to a palette tint so it does not read as a hard rule across the page. */
.tf-so-formrow{ border-top:1px solid var(--global-palette11,#e2e6ee); }

/* H1 capped at the source's 30ch and centred (.heading-h1.security-v2) */
.tf-so-hero > .kt-inside-inner-col > .wp-block-kadence-advancedheading:first-child{ max-width:30ch; margin-inline:auto; }

/* Why Fortune 2000: source div._2-col-grid{1fr 1fr;gap:8rem;align-items:center} inside div.top-line */
.tf-so-topline > .kt-inside-inner-col{ border-top:1px solid var(--global-palette11,#e2e6ee); padding-top:3rem; }
@media (min-width:768px){
  .tf-so-whygrid > .kt-row-column-wrap{ grid-template-columns:1fr 1fr !important; align-items:center; }
}
/* each item: icon LEFT, title beside it, description beneath the title */
.tf-so-item > .kt-inside-inner-col{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  column-gap:.75rem;
  align-items:start;
}
.tf-so-item > .kt-inside-inner-col > *:nth-child(1){ grid-column:1; grid-row:1; margin:0 !important; }
.tf-so-item > .kt-inside-inner-col > *:nth-child(2){ grid-column:2; grid-row:1; margin:0 !important; }
.tf-so-item > .kt-inside-inner-col > *:nth-child(3){ grid-column:2; grid-row:2; }
.tf-so-item figure{ margin:0 !important; }

/* Review cards: source .review-slide.v2{flex-flow:row;width:600px} - photo LEFT, text RIGHT.
   Kadence nests them as item-wrap > [text-wrap > (media-wrap, content-wrap), meta-wrap], so
   text-wrap is set to display:contents to promote its children into the same grid. */
.tf-so-reviews .kt-testimonial-item-wrap{
  display:grid;
  grid-template-columns:45% minmax(0,1fr);
  grid-template-rows:1fr auto;
  align-items:stretch;
}
.tf-so-reviews .kt-testimonial-text-wrap{ display:contents; }
.tf-so-reviews .kt-testimonial-media-wrap{ grid-column:1; grid-row:1 / 3; margin:0 !important; height:100%; }
.tf-so-reviews .kt-testimonial-media-inner-wrap,
.tf-so-reviews .kadence-testimonial-image-intrisic{ height:100%; }
.tf-so-reviews .kt-testimonial-image{ width:100%; height:100%; object-fit:cover; display:block; }
.tf-so-reviews .kt-testimonial-content-wrap{ grid-column:2; grid-row:1; display:flex; align-items:center; padding:1.75rem 1.25rem .5rem; }
.tf-so-reviews .kt-testimonial-content{ margin:0; font-style:normal; }
/* the source's .blue-line divider between quote and attribution */
.tf-so-reviews .kt-testimonial-meta-wrap{ grid-column:2; grid-row:2; margin:0 1.25rem 1.5rem; padding-top:1rem; border-top:1px solid #148cfc; }
@media (max-width:767px){
  .tf-so-reviews .kt-testimonial-item-wrap{ grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto auto; }
  .tf-so-reviews .kt-testimonial-media-wrap{ grid-column:1; grid-row:1; }
  .tf-so-reviews .kt-testimonial-content-wrap{ grid-column:1; grid-row:2; }
  .tf-so-reviews .kt-testimonial-meta-wrap{ grid-column:1; grid-row:3; }
}
/* === end Security Operations 2 LP === */

/* === Silvertrac LP (lp #17831) === */
/* Reuses .tf-quote, .tf-rating-row, .tf-badge-row, .tf-tour-frame/.tf-tour-embed,
   .tf-cta-pill and .tf-feature-panel. The gradient headline is an INLINE style on the
   span inside the H1, so it needs no rule here. */

/* Static 3-logo partner row (source .partner-logo.is-static - appears once, no marquee) */
/* Source .partner-logos.is-desktop{justify-content:space-between;width:100%} and
   .partner-logo.is-static{height:4rem;margin:0} - the logos SPREAD across the full width and
   are sized by height, not bunched in the middle with a fixed gap. */
.tf-st-logos > .kt-inside-inner-col{
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:2rem;
  width:100%;
}
.tf-st-logos figure{ margin:0 !important; }
.tf-st-logos img{ max-height:4rem; width:auto; max-width:100%; object-fit:contain; }
@media (max-width:767px){
  .tf-st-logos > .kt-inside-inner-col{ justify-content:center; gap:1.75rem; }
  .tf-st-logos img{ max-height:2.5rem; }
}

/* BASE template page (same design system as guard-tour V2 #17807 and mobile-patrol-tour
   #17818). Source body{background-color:var(--grey) #eeece8}; rows are transparent so this
   shows through, which requires the Kadence .site white-wrapper fix. */
body.postid-17831{
  position:relative;
  background-color:#eeece8 !important;
}
/* All THREE decorative layers here: .hero-bg (opacity .2, top right),
   .body-bg-2 (opacity .2, bottom right), .body-bg-1 (opacity .4, left).
   Grouped by opacity across the two pseudo-elements; absolute so they scroll. */
body.postid-17831::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.2;
  background-image:url('/wp-content/uploads/2026/07/67b8b183a579e0c90903788c_hero-bg.svg'), url('/wp-content/uploads/2026/07/67b8babe51ff4883c70f98c9_body-bg-2.svg');
  background-position:right top, right bottom;
  background-repeat:no-repeat, no-repeat;
  background-size:auto 800px, auto;
}
body.postid-17831::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.4;
  background-image:url('/wp-content/uploads/2026/07/67b8b9649fae9fc865dd8ca2_body-bg.svg');
  background-position:left top;
  background-repeat:no-repeat;
}
@media (max-width:767px){ body.postid-17831::before{ background-size:auto 500px, auto; } }
body.postid-17831 #wrapper{ position:relative; z-index:1; }
body.postid-17831 #wrapper,
body.postid-17831 .site,
body.postid-17831 #inner-wrap,
body.postid-17831 #primary,
body.postid-17831 .content-container,
body.postid-17831 #main,
body.postid-17831 .content-wrap,
body.postid-17831 article.entry,
body.postid-17831 .entry-content-wrap,
body.postid-17831 .entry-content{
  background:transparent !important;
  box-shadow:none !important;
}
/* === end Silvertrac LP === */

/* === gt- template navy footer (shared) === */
/* Shared by the gt- template LPs. Source: footer.footer{background:var(--dark-blue);color:#fff}
   .footer-grid.centered{display:flex;justify-content:space-between;align-items:center;gap:4rem} */
.tf-footer-grid > .kt-row-column-wrap{ align-items:center; }
.tf-footer-grid figure{ margin:0 !important; }
.tf-footer-grid figure img{ height:1.75rem; width:auto; }
/* Kadence lays this row out as grid-template-columns:repeat(3,minmax(0,1fr)), which locks the
   disclaimer to exactly one third and makes it a tall narrow block. The source instead uses
   display:flex + justify-content:space-between so the middle cell absorbs the leftover width.
   Reproduce that: logo and socials size to content, disclaimer takes the rest.
   Scoped to >=768px so Kadence's own single-column mobile stacking is left alone. */
@media (min-width:768px){
  .tf-footer-grid > .kt-row-column-wrap{
    grid-template-columns:auto minmax(0,1fr) auto !important;
  }
}
.tf-footer-disc > .kt-inside-inner-col{ opacity:.75; }
.tf-footer-disc a{ color:var(--global-palette9,#fff); text-decoration:underline; }

/* Social row: source .footer-socials{display:flex;gap:1.5rem} */
.tf-socials{
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:flex-end;
  gap:1.5rem;
}
.tf-socials img{ height:22px; width:auto; display:block; }
.tf-socials a{ display:inline-flex; opacity:.9; }
.tf-socials a:hover{ opacity:1; }

/* Legal bar: source .footer-bottom.gt-footer-bottom{border-top:1px solid #ccc;padding-top:2rem}
   and .footer-link{border-right:1px solid #fff;color:#fff;padding:0 14px} with .is-last unbordered
   (the copyright cell, rendered here as the trailing <span>). */
.tf-footer-legal > .kt-inside-inner-col{
  border-top:1px solid rgba(255,255,255,.35);
  padding-top:1.5rem;
}
.tf-footer-legal a{
  color:var(--global-palette9,#fff);
  text-decoration:none;
  padding:0 14px;
  border-right:1px solid rgba(255,255,255,.55);
  white-space:nowrap;
}
.tf-footer-legal a:hover{ text-decoration:underline; }
.tf-footer-legal span{ padding-left:14px; white-space:nowrap; opacity:.85; }
@media (max-width:1024px){
  .tf-footer-grid > .kt-row-column-wrap{ text-align:center; }
  .tf-footer-grid figure img{ margin-inline:auto; }
  .tf-socials{ justify-content:center; }
  .tf-footer-legal a{ padding:0 10px; border-right:none; }
  .tf-footer-legal span{ padding-left:0; display:block; margin-top:.5rem; }
}
/* guard-tour-v1's footer CTA wraps heading+paragraph in
   .section-txt-container{text-align:center;max-width:66.375rem;margin-inline:auto} */
.tf-footer-cta-txt > .kt-inside-inner-col{ max-width:66.375rem; margin-inline:auto; }

/* === end gt- template navy footer === */

/* === gt- template navy header (shared) === */
/* Source .navbar_component is position:fixed; sticky here so it cannot overlap content. */
.tf-gt-header{ position:sticky; top:0; z-index:50; }
.tf-gt-header-bar > .kt-row-column-wrap{ align-items:center; }
.tf-gt-header figure{ margin:0 !important; }
/* source .navbar_logo.cc-big{height:3rem} */
.tf-gt-header figure img{ height:2.25rem; width:auto; }

/* source .actions_wrapper.gt-actions-wrapper{grid-column-gap:6rem} */
.tf-gt-header-actions > .kt-inside-inner-col{
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:6rem;
}
.tf-gt-header-actions .wp-block-kadence-advancedheading{ margin:0 !important; white-space:nowrap; }
.tf-gt-header-actions .wp-block-kadence-advancedbtn{ margin:0 !important; }
/* phone is a plain white text link (source .nav-inline-link.text-color-white) */
.tf-gt-header-actions a[href^='tel:']{ color:var(--global-palette9,#fff); text-decoration:none; }
.tf-gt-header-actions a[href^='tel:']:hover{ text-decoration:underline; }
/* source .button-fill.gt-nav-button{font-weight:700;padding-inline:3rem} */
.tf-gt-header-actions .kb-button{ font-weight:700 !important; padding-left:3rem !important; padding-right:3rem !important; }

@media (max-width:1024px){
  .tf-gt-header-actions > .kt-inside-inner-col{ gap:2rem; }
  .tf-gt-header-actions .kb-button{ padding-left:1.75rem !important; padding-right:1.75rem !important; }
}
@media (max-width:767px){
  .tf-gt-header-bar > .kt-row-column-wrap{ gap:.75rem; }
  .tf-gt-header-actions > .kt-inside-inner-col{ justify-content:flex-start; gap:1.25rem; }
  .tf-gt-header figure img{ height:1.75rem; }
}
/* === end gt- template navy header === */

/* === LP shared overrides === */
/* Landing pages use the BRAND DARK BLUE instead of the near-black palette3.
   palette3 is #011024 site-wide and also drives every heading plus the theme header
   background (~100+ posts), so it is NOT changed globally. Redefining the variable on
   body.single-lp re-points every existing var(--global-palette3) usage on the 15 landing
   pages - headings, navy form cards, header bars, footers - with no page rebuilds.
   The 12 var(--global-palette3,#011024) fallbacks in this stylesheet are unaffected,
   because a fallback only applies when the variable is undefined. */
/* postid-20163 (/lp/see-whats-changed/) is exempt: it shows the global footer, which palette3 paints. */
body.single-lp:not(.postid-20163){ --global-palette3:#021A56; }
/* === end LP shared overrides === */

/* === HubSpot demo form on the navy card (.tf-gt-form) - SHARED === */
/* Styles the HubSpot demo form wherever the form column carries .tf-gt-form.
   Currently: lp 17718, 17796, 17800, 17804, 17813, 17820, 17823, 17827, 17829.
   Reference look: the old go.trackforce.com gt- pages, whose form CSS was
     .hs-input{background:#fff;color:#000;min-height:45px;border-radius:0}
     .hs-button.primary.large{background:#E4022B;width:100%;border-radius:0}
   HubSpot injects this form client-side, so none of these selectors exist in the
   server-rendered HTML. ".tf-gt-form" is therefore listed in Perfmatters > Assets >
   Remove Unused CSS > Excluded Selectors. Without that entry RUCSS drops this whole
   block from lp.used.css and the form paints with HubSpot defaults (dark labels on a
   navy card) until the async stylesheet lands.
   Installed 2026-09-02. Replaces the rules that used to live in the
   "Guard Monitoring Software LP (lp #17796)" section. */

/* Layout: two fields per row, one per row on small screens.
   fieldset{display:contents} promotes each .hs-form-field to a grid item, so the grid
   holds whether HubSpot emits form-columns-1 or form-columns-2. */
.tf-gt-form form{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  column-gap:16px !important;
  row-gap:16px !important;
}
.tf-gt-form form fieldset{
  display:contents !important;
  max-width:none !important;
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
}
.tf-gt-form form .hs-form-field{
  width:100% !important;
  float:none !important;
  margin:0 !important;
}
.tf-gt-form form .hs-form-field > .input{ margin:0 !important; }
.tf-gt-form form .hs-fieldtype-hidden{ display:none !important; }
.tf-gt-form form legend:empty{ display:none !important; }
.tf-gt-form form .hs_submit .actions{ margin:0 !important; padding:0 !important; }

/* Rows that always span both columns. Never use a blanket 'form > *' rule here:
   HubSpot puts the .hs-form-field wrappers directly in the form on this portal, so a
   blanket rule forces every field to full width and the grid collapses to one column. */
.tf-gt-form form div:has(.hs-richtext),
.tf-gt-form form fieldset:has(.hs-richtext),
.tf-gt-form form .hs_recaptcha,
.tf-gt-form form .hs-fieldtype-textarea,
.tf-gt-form form .hs-fieldtype-booleancheckbox,
.tf-gt-form form .hs-fieldtype-checkbox,
.tf-gt-form form .hs-fieldtype-radio,
.tf-gt-form form .hs-recaptcha,
.tf-gt-form form .hs-richtext,
.tf-gt-form form .legal-consent-container,
.tf-gt-form form .hs_error_rollup,
.tf-gt-form form .hs_submit{ grid-column:1 / -1 !important; }

.tf-gt-form form > .hs-form-field,
.tf-gt-form form fieldset > .hs-form-field{ grid-column:auto !important; }

@media (max-width:600px){
  .tf-gt-form form{ grid-template-columns:minmax(0,1fr) !important; row-gap:14px !important; }
}

/* Type on the navy card */
.tf-gt-form form label,
.tf-gt-form form legend,
.tf-gt-form form p,
.tf-gt-form form span,
.tf-gt-form form li,
.tf-gt-form form h1,
.tf-gt-form form h2,
.tf-gt-form form h3{ color:var(--global-palette9,#fff) !important; }
.tf-gt-form form .hs-form-field > label{
  display:block;
  margin:0 0 6px !important;
  font-size:.95rem;
  font-weight:700;
  line-height:1.3;
}
.tf-gt-form form .hs-field-desc{
  display:block;
  margin:0 0 6px;
  font-size:.85rem;
  font-weight:400;
}
.tf-gt-form form .legal-consent-container,
.tf-gt-form form .hs-richtext{ font-size:.85rem; line-height:1.5; }
/* HubSpot rich text carries inline colours; inherit keeps it readable on navy */
.tf-gt-form form .hs-richtext p span,
.tf-gt-form form .legal-consent-container span{ color:inherit !important; }
.tf-gt-form form a{
  color:var(--global-palette1,#00b5e6) !important;
  text-decoration:underline;
}

/* Fields: white, dark text, full width of their column */
.tf-gt-form form input:not([type=submit]):not([type=checkbox]):not([type=radio]),
.tf-gt-form form select,
.tf-gt-form form textarea{
  background-color:var(--global-palette9,#fff) !important;
  color:var(--global-palette3,#011024) !important;
  border:1px solid rgba(255,255,255,.35) !important;
  border-radius:0 !important;
  width:100% !important;
  max-width:100% !important;
  min-height:45px;
  padding:.6rem .75rem !important;
  font-size:1rem;
  line-height:1.4;
  box-sizing:border-box !important;
}
.tf-gt-form form ::placeholder{ color:#6b7280; opacity:1; }
.tf-gt-form form select{
  -webkit-appearance:none;
  appearance:none;
  padding-right:2.25rem !important;
  background-repeat:no-repeat;
  background-position:right .75rem center;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23011024' stroke-width='2' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
}

/* Red full-width submit, matching the source */
.tf-gt-form form input[type=submit],
.tf-gt-form form button[type=submit],
.tf-gt-form form .hs-button{
  background-color:#e4022b !important;
  border:0 !important;
  color:var(--global-palette9,#fff) !important;
  border-radius:0 !important;
  padding:.9rem 2rem !important;
  width:100% !important;
  min-height:48px;
  font-weight:600 !important;
  font-size:1rem !important;
  cursor:pointer;
  transition:background-color .2s ease-in-out;
}
.tf-gt-form form input[type=submit]:hover,
.tf-gt-form form button[type=submit]:hover,
.tf-gt-form form .hs-button:hover{ background-color:#c00224 !important; }

/* Visible focus on the white fields and the red button (WCAG 2.4.7, 2.4.11) */
.tf-gt-form form input:focus-visible,
.tf-gt-form form select:focus-visible,
.tf-gt-form form textarea:focus-visible,
.tf-gt-form form button:focus-visible,
.tf-gt-form form .hs-button:focus-visible{
  outline:3px solid #ffd200 !important;
  outline-offset:2px !important;
}

/* Validation messages readable on navy */
.tf-gt-form form .hs-error-msgs{ list-style:none; margin:.35rem 0 0 !important; padding:0 !important; }
.tf-gt-form form .hs-error-msg,
.tf-gt-form form .hs-error-msgs li,
.tf-gt-form form .hs-error-msgs label{ color:#ffd7dd !important; }
.tf-gt-form form .hs-input.invalid,
.tf-gt-form form .hs-input.error{ border-color:#ffd7dd !important; }

/* Belt and braces: HubSpot own class names, in case the element rules miss anything */
.tf-gt-form .hs-form-field > label,
.tf-gt-form .hs-form-field > label span,
.tf-gt-form .hs-richtext,
.tf-gt-form .hs-richtext p,
.tf-gt-form .hs-form-booleancheckbox-display span,
.tf-gt-form .hs-main-font-element{ color:var(--global-palette9,#fff) !important; }
/* === end HubSpot demo form on the navy card === */

/* === HubSpot demo form on the light card (.tf-base-form) - SHARED === */
/* Base-template pages: lp 17807 guard-tour, 17818 mobile-patrol-tour,
   17825 security-operations, 17831 silvertrac.
   Reference look: the matching go.trackforce.com pages, whose form CSS is
     .form-wrapper{border:1px solid #fff;background:#f1f1f1;border-radius:20px}
     .hs-input{background:#fff3;border-radius:200px;min-height:3.5rem;padding:.625rem 1.25rem}
     .edited-form form{display:grid;grid-template-columns:48% 48%;grid-gap:0 4%}
   The form is injected client-side, so ".tf-base-form" is listed in
   Perfmatters > Assets > Remove Unused CSS > Excluded Selectors.
   Installed 2026-09-02. Replaces the rules that used to live in the
   "Guard Tour V2 LP (lp #17807)" section. */

/* Layout. No blanket "form > *" rule: the field wrappers are direct children of the
   form on this portal and a blanket rule collapses the grid to one column. */
.tf-base-form form{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  column-gap:4% !important;
}
.tf-base-form form fieldset{
  display:contents;
  max-width:none !important;
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
}
.tf-base-form form .hs-form-field{ width:100% !important; float:none !important; }
.tf-base-form form .hs-form-field > .input{ margin:0 !important; }
.tf-base-form form .hs-fieldtype-hidden{ display:none !important; }
.tf-base-form form legend:empty{ display:none !important; }
.tf-base-form form div:has(.hs-richtext),
.tf-base-form form fieldset:has(.hs-richtext),
.tf-base-form form .hs-richtext,
.tf-base-form form .legal-consent-container,
.tf-base-form form .hs_recaptcha,
.tf-base-form form .hs-recaptcha,
.tf-base-form form .hs_error_rollup,
.tf-base-form form .hs-fieldtype-textarea,
.tf-base-form form .hs-fieldtype-booleancheckbox,
.tf-base-form form .hs-fieldtype-checkbox,
.tf-base-form form .hs-fieldtype-radio,
.tf-base-form form .hs_submit{ grid-column:1 / -1 !important; }
.tf-base-form form .hs_recaptcha{ margin:10px 0 25px; }
.tf-base-form form .hs_submit .actions{ margin:0 !important; padding:0 !important; }
@media (max-width:767px){
  .tf-base-form form{ display:block !important; }
}

/* Labels: dark on the light card, so only weight and spacing are set */
.tf-base-form form .hs-form-field > label{
  display:block;
  margin:0 0 6px !important;
  font-size:.95rem;
  font-weight:700;
  line-height:1.3;
}
.tf-base-form form .hs-field-desc{ display:block; margin:0 0 6px; font-size:.85rem; font-weight:400; }
.tf-base-form form .legal-consent-container,
.tf-base-form form .hs-richtext{ font-size:.85rem; line-height:1.5; }

/* Pill fields. Border is rgba(1,16,36,.45), which clears the 3:1 non-text contrast
   minimum against the card; the source hairline inherits the text colour and does not. */
.tf-base-form form input:not([type=submit]):not([type=checkbox]):not([type=radio]),
.tf-base-form form select,
.tf-base-form form textarea{
  background-color:var(--global-palette9,#fff) !important;
  color:var(--global-palette3,#011024) !important;
  border:1px solid rgba(1,16,36,.45) !important;
  border-radius:200px !important;
  width:100% !important;
  max-width:100% !important;
  min-height:3.5rem;
  margin:0 0 1rem !important;
  padding:.625rem 1.25rem !important;
  font-size:1rem;
  line-height:1.4;
  box-sizing:border-box !important;
}
.tf-base-form form textarea{ border-radius:20px !important; min-height:7rem; }
.tf-base-form form ::placeholder{ color:#5b6472; opacity:1; }
.tf-base-form form select{
  -webkit-appearance:none;
  appearance:none;
  padding-right:2.5rem !important;
  background-repeat:no-repeat;
  background-position:right 1.1rem center;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23011024' stroke-width='2' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
}

/* Blue pill submit. Source uses --blue #148cfc, which gives white text only 3.3:1;
   using their --medium-blue #0569c6 instead for 5.7:1, AA at this size. */
.tf-base-form form input[type=submit],
.tf-base-form form button[type=submit],
.tf-base-form form .hs-button{
  background-color:#0569c6 !important;
  border:0 !important;
  color:var(--global-palette9,#fff) !important;
  border-radius:200px !important;
  padding:.75rem 2.5rem !important;
  min-height:48px;
  width:auto !important;
  font-weight:600 !important;
  font-size:1rem !important;
  cursor:pointer;
  transition:background-color .2s ease-in-out;
}
.tf-base-form form input[type=submit]:hover,
.tf-base-form form button[type=submit]:hover,
.tf-base-form form .hs-button:hover{ background-color:var(--global-palette3,#011024) !important; }

/* Focus and validation */
.tf-base-form form input:focus-visible,
.tf-base-form form select:focus-visible,
.tf-base-form form textarea:focus-visible,
.tf-base-form form button:focus-visible,
.tf-base-form form .hs-button:focus-visible{
  outline:3px solid #0569c6 !important;
  outline-offset:2px !important;
}
.tf-base-form form .hs-error-msgs{ list-style:none; margin:0 0 .75rem !important; padding:0 !important; }
.tf-base-form form .hs-error-msg,
.tf-base-form form .hs-error-msgs li,
.tf-base-form form .hs-error-msgs label{ color:#b82105 !important; }
/* === end HubSpot demo form on the light card === */

/* ===== TF 404 (/404-2/, page 17929) - START =====
   Trackforce 404 design. Serves TWO surfaces from one block of CSS:
     - kadence_element #1768 (hook replace_404) => real 404s, body.error404
     - page #17929 (/404-2/)                    => the sign-off preview
   Component rules hang off .tf-404-hero so they work in both contexts.
   Only the wrapper/background reset needs a body scope.

   WHY THE WRAPPER RESET: Kadence emits
     .content-bg, body.content-style-unboxed .site{background:var(--global-palette9)}  /* white */
   and, for pages, also paints a 500gb.webp texture onto .content-bg AND .site. Both
   must be cleared with the `background` SHORTHAND + !important or the navy vanishes.
   Kadence Pro forces unboxed + vpadding:hide on 404s with a replace_404 element, so
   the wrapper chain is the same on both surfaces. */
body.page-id-17929,body.error404{background-color:#021024!important;}
body.page-id-17929 .content-bg,body.error404 .content-bg,body.page-id-17929 article.entry,body.error404 article.entry,body.page-id-17929 .entry-content-wrap,body.error404 .entry-content-wrap,body.page-id-17929 .entry-content,body.error404 .entry-content,body.page-id-17929 #primary,body.error404 #primary,body.page-id-17929 .content-area,body.error404 .content-area,body.page-id-17929 .content-container,body.error404 .content-container,body.page-id-17929 #main,body.error404 #main,body.page-id-17929 .content-wrap,body.error404 .content-wrap{background:#021024!important;box-shadow:none!important;}
body.page-id-17929 #wrapper,body.error404 #wrapper,body.page-id-17929 .site,body.error404 .site,body.page-id-17929 #inner-wrap,body.error404 #inner-wrap{background:#021024!important;}
/* kill any vertical seam the theme's own .content-area margins could open up */
body.page-id-17929 .content-area,body.error404 .content-area{margin-top:0!important;margin-bottom:0!important;}
/* keep the section itself identical to the ground so no seam is perceptible */
body.page-id-17929 .tf-404-hero,body.error404 .tf-404-hero,body.page-id-17929 .tf-404-hero > .kt-row-column-wrap,body.error404 .tf-404-hero > .kt-row-column-wrap{background-color:#021024!important;}

/* ---- section shell ---- */
.tf-404-hero{position:relative;overflow:hidden;}
.tf-404-hero .tf-404-inner > .kt-inside-inner-col{max-width:860px;margin-left:auto;margin-right:auto;text-align:center;display:flex;flex-direction:column;align-items:center;}

/* ---- status chip ---- */
.tf-404-hero .tf-404-chip{display:inline-flex;align-items:center;gap:9px;margin:0 0 24px;padding:7px 16px 7px 13px;border-radius:999px;background:rgba(0,181,230,.10);border:1px solid rgba(0,181,230,.30);color:#5fd8f5;letter-spacing:.13em;text-transform:uppercase;}
.tf-404-hero .tf-404-dot{width:8px;height:8px;flex:none;border-radius:50%;background:#00b5e6;animation:tf404pulse 1.9s ease-in-out infinite;}
@keyframes tf404pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.35;transform:scale(.78);}}
@media (prefers-reduced-motion: reduce){.tf-404-hero .tf-404-dot{animation:none;}}

/* ---- the numeral: white fallback, gradient where supported, glow behind ---- */
.tf-404-hero .tf-404-num{position:relative;z-index:0;margin:0 0 4px;font-size:clamp(7rem,25vw,19rem);line-height:.86;letter-spacing:-.045em;color:#fff;}
@supports ((-webkit-background-clip:text) or (background-clip:text)){.tf-404-hero .tf-404-num{background-image:linear-gradient(168deg,#ffffff 20%,#5fd8f5 106%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;}}
.tf-404-hero .tf-404-num::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,94vw);height:300px;z-index:-1;pointer-events:none;filter:blur(14px);background:radial-gradient(ellipse at center,rgba(0,181,230,.30) 0%,rgba(0,181,230,0) 68%);}

/* ---- headline + subcopy ---- */
.tf-404-hero .tf-404-h1{letter-spacing:-.02em;}
.tf-404-hero .tf-404-sub{max-width:560px;margin:0 0 34px;color:rgba(255,255,255,.72);text-wrap:pretty;}
.tf-404-hero .tf-404-accent{color:#5fd8f5;font-weight:600;}

/* ---- search: real form; the arrow IS the submit button ---- */
.tf-404-hero .tf-404-search{width:100%;max-width:460px;margin:0 0 28px;}
.tf-404-hero .tf-404-search .kb-search-form{width:100%;}
.tf-404-hero .tf-404-search .kb-search-input-wrapper{display:flex;align-items:center;gap:8px;padding:6px;border-radius:13px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.17);}
.tf-404-hero .tf-404-search .kb-search-input-wrapper:focus-within{border-color:rgba(0,181,230,.60);}
.tf-404-hero .tf-404-search .kb-search-input[type="text"]{flex:1;min-width:0;border:0!important;outline:none;box-shadow:none!important;color:#fff;font-size:15px;padding:8px 10px 8px 40px;background-color:transparent!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='19' height='19' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-opacity='0.55' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.2-3.2'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:12px center!important;background-size:19px 19px!important;}
.tf-404-hero .tf-404-search .kb-search-input::placeholder{color:rgba(255,255,255,.55);opacity:1;}
.tf-404-hero .tf-404-search .kb-search-icon-submit{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;padding:0;border:0;border-radius:9px;cursor:pointer;background:#00b5e6;color:#011024;}
.tf-404-hero .tf-404-search .kb-search-icon-submit:hover{background:#34c6ef;}
.tf-404-hero .tf-404-search .kb-search-icon-submit:focus-visible{outline:2px solid #fff;outline-offset:2px;}
.tf-404-hero .tf-404-search .kb-search-icon{display:inline-flex;}
.tf-404-hero .tf-404-search .kb-search-icon svg{width:18px;height:18px;stroke:currentColor;}

/* ---- CTAs ---- */
.tf-404-hero .tf-404-btns{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;}
.tf-404-hero .tf-404-primary{box-shadow:0 8px 22px rgba(70,110,197,.34);}
.tf-404-hero .tf-404-ghost{background:rgba(255,255,255,.06)!important;border:1px solid rgba(255,255,255,.22)!important;}
.tf-404-hero .tf-404-ghost:hover{background:rgba(255,255,255,.12)!important;border-color:rgba(255,255,255,.40)!important;color:#fff!important;}

/* ---- popular destinations ---- */
.tf-404-hero .tf-404-eyebrow{width:100%;margin:56px 0 18px;padding-top:38px;border-top:1px solid rgba(255,255,255,.10);color:rgba(255,255,255,.45);letter-spacing:.15em;text-transform:uppercase;}
.tf-404-hero .tf-404-cards{width:100%;}
.tf-404-hero .tf-404-cards > .kt-row-column-wrap{display:grid!important;grid-template-columns:repeat(4,1fr);gap:12px;}
.tf-404-hero .tf-404-card > .kt-inside-inner-col{position:relative;height:100%;display:flex;align-items:center;gap:12px;padding:15px 16px;border-radius:13px;text-align:left;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);transition:transform .15s ease,border-color .15s ease,background .15s ease;}
.tf-404-hero .tf-404-card > .kt-inside-inner-col:hover{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.34);transform:translateY(-2px);}
.tf-404-hero .tf-404-card > .kt-inside-inner-col:focus-within{border-color:rgba(0,181,230,.70);}
.tf-404-hero .tf-404-card > .kt-inside-inner-col::after{content:"\2192";flex:none;margin-left:auto;font-size:16px;color:rgba(255,255,255,.40);}
.tf-404-hero .tf-404-card > .kt-inside-inner-col > p{flex:1;margin:0;}
.tf-404-hero .tf-404-cardicon{flex:none;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);}
.tf-404-hero .tf-404-cardicon svg{width:20px;height:20px;color:#fff;}
.tf-404-hero .tf-404-cardlink{color:#fff;text-decoration:none;}
.tf-404-hero .tf-404-cardlink:hover{color:#fff;}
.tf-404-hero .tf-404-cardlink::after{content:"";position:absolute;inset:0;z-index:1;border-radius:13px;}

/* ---- trailing help line ---- */
.tf-404-hero .tf-404-still{margin:28px 0 0;color:rgba(255,255,255,.52);}
.tf-404-hero .tf-404-still a{color:#fff;font-weight:700;text-decoration:none;}
.tf-404-hero .tf-404-still a:hover{color:#34c6ef;}

/* ---- declared mobile collapse: 4 -> 2 -> 1 ---- */
@media (max-width:1024px){.tf-404-hero .tf-404-cards > .kt-row-column-wrap{grid-template-columns:repeat(2,1fr);}}
@media (max-width:767px){.tf-404-hero .tf-404-cards > .kt-row-column-wrap{grid-template-columns:1fr;}.tf-404-hero .tf-404-num{font-size:clamp(6rem,34vw,10rem);}.tf-404-hero .tf-404-eyebrow{margin-top:40px;padding-top:28px;}.tf-404-hero .tf-404-sub{margin-bottom:26px;}}
/* ===== TF 404 - END ===== */

/* ===== TF LEGAL CENTER (page 134) - START ===== */
/* ---- Legal & compliance center (page 134) ---- */

/* Kill Kadence's tablet-only .content-area margin so the full-bleed bands meet cleanly (768-1024px) */
body:is(.page-id-134,.page-id-23931) .content-area{margin-top:0 !important;margin-bottom:0 !important;}

/* --- Quick nav --- */
body:is(.page-id-134,.page-id-23931) .tf-lc-intro{font-size:18px;line-height:1.6;color:#475067;max-width:680px;margin:0 0 16px;}
body:is(.page-id-134,.page-id-23931) .tf-lc-pills{display:flex;flex-wrap:wrap;gap:10px;margin:0;}
body:is(.page-id-134,.page-id-23931) .tf-lc-pill{display:inline-flex;align-items:center;font-size:13px;font-weight:700;line-height:1;color:#475067;background:#f6f7fa;border:1px solid #e2e6ee;border-radius:999px;padding:8px 15px;text-decoration:none;transition:border-color .16s,color .16s,background-color .16s;}
body:is(.page-id-134,.page-id-23931) .tf-lc-pill:hover,body:is(.page-id-134,.page-id-23931) .tf-lc-pill:focus-visible{border-color:#00b5e6;color:#1471c9;background:#fff;}
body:is(.page-id-134,.page-id-23931) .tf-lc-pill:focus-visible{outline:2px solid #00b5e6;outline-offset:2px;}

/* --- Group headings --- */
body:is(.page-id-134,.page-id-23931) .tf-lc-grouptitle{display:flex;align-items:baseline;gap:12px;font-size:1.35rem;font-weight:700;letter-spacing:-.01em;color:#011024;margin:0 0 20px;scroll-margin-top:110px;}
body:is(.page-id-134,.page-id-23931) .tf-lc-grouptitle .tf-lc-gt{flex:none;}
body:is(.page-id-134,.page-id-23931) .tf-lc-grouptitle::after{content:"";height:1px;flex:1 1 auto;background:#e2e6ee;}

/* --- Card grid (2-up desktop, 1-up mobile) --- */
body:is(.page-id-134,.page-id-23931) .tf-lc-grid > .kt-inside-inner-col{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch;}

/* --- Document card --- */
body:is(.page-id-134,.page-id-23931) .tf-lc-card{margin:0 !important;}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-link-wrap{display:flex;align-items:center;gap:14px;height:100%;background:#fff;border:1.5px solid #e2e6ee;border-radius:12px;padding:18px 20px !important;text-decoration:none;transition:border-color .16s,box-shadow .16s;}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-link-wrap:hover{border-color:#00b5e6;box-shadow:0 6px 18px rgba(1,16,36,.07);}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-link-wrap:focus-visible{outline:2px solid #00b5e6;outline-offset:2px;}

/* icon tile (decorative; the card's accessible name is the document title) */
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-link-wrap::before{content:"";width:38px;height:38px;flex:0 0 38px;border-radius:9px;background-color:rgba(20,113,201,.07);background-repeat:no-repeat;background-position:center;background-size:20px 20px;}

/* title / meta / view laid out as a grid so View sits right, vertically centred */
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-infobox-textcontent{flex:1 1 auto;min-width:0;display:grid;grid-template-columns:1fr auto;grid-template-areas:"title view" "meta view";align-items:center;column-gap:14px;}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-title{grid-area:title;font-size:14.5px;font-weight:700;line-height:1.3;color:#011024;margin:0 !important;}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-text{grid-area:meta;font-size:12px;font-weight:600;line-height:1.35;color:#67738a;margin:3px 0 0 !important;}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-learnmore-wrap{grid-area:view;margin:0 !important;}
body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-learnmore{display:inline-block;font-size:13px;font-weight:700;line-height:1;color:#1471c9;white-space:nowrap;margin:0 !important;padding:0 !important;background:none !important;border:0 !important;}

/* --- Contact CTA band --- */
body:is(.page-id-134,.page-id-23931) .tf-lc-ctacol > .kt-inside-inner-col{max-width:760px;margin-left:auto;margin-right:auto;text-align:center;}
body:is(.page-id-134,.page-id-23931) .tf-lc-ctatitle{font-size:clamp(1.5rem,2.4vw,2rem);font-weight:700;letter-spacing:-.02em;line-height:1.14;color:#ffffff;margin:0 0 12px;}
body:is(.page-id-134,.page-id-23931) .tf-lc-ctatext{font-size:15px;line-height:1.6;color:rgba(255,255,255,.72);margin:0 0 26px;}
body:is(.page-id-134,.page-id-23931) .tf-lc-btnwrap{justify-content:center;}
body:is(.page-id-134,.page-id-23931) .tf-lc-btnwrap .kb-button{border-radius:10px;}

/* --- Tablet --- */
@media all and (max-width:1024px){
  body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-link-wrap{padding:16px 18px !important;}
}

/* --- Mobile: single column; View is redundant once the whole card is tappable --- */
@media all and (max-width:767px){
  body:is(.page-id-134,.page-id-23931) .tf-lc-grid > .kt-inside-inner-col{grid-template-columns:1fr;}
  body:is(.page-id-134,.page-id-23931) .tf-lc-intro{font-size:16.5px;}
  body:is(.page-id-134,.page-id-23931) .tf-lc-grouptitle{font-size:1.2rem;scroll-margin-top:90px;}
}
@media all and (max-width:600px){
  body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-infobox-textcontent{grid-template-columns:1fr;grid-template-areas:"title" "meta";}
  body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-learnmore-wrap{display:none;}
}

@media (prefers-reduced-motion:reduce){
  body:is(.page-id-134,.page-id-23931) .tf-lc-card .kt-blocks-info-box-link-wrap,body:is(.page-id-134,.page-id-23931) .tf-lc-pill{transition:none;}
}

/* per-document icons */
.tf-lc-i-document-check .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/document-check.svg);}
.tf-lc-i-document-management .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/document-management.svg);}
.tf-lc-i-lock .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/lock.svg);}
.tf-lc-i-protection-check .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/protection-check.svg);}
.tf-lc-i-cloud-lock .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/cloud-lock.svg);}
.tf-lc-i-people-hr .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/people-hr.svg);}
.tf-lc-i-growth-budget .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/growth-budget.svg);}
.tf-lc-i-safety-help .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/safety-help.svg);}
.tf-lc-i-chip .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/chip.svg);}
.tf-lc-i-quality-check .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/quality-check.svg);}
.tf-lc-i-growth .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/growth.svg);}
.tf-lc-i-document-global .kt-blocks-info-box-link-wrap::before{background-image:url(/wp-content/uploads/2026/07/document-global.svg);}
/* ===== TF LEGAL CENTER - END ===== */

/* ===== TF COMPANY (page 106) - START ===== */
/* LAYOUT ONLY. All typography and colour for text lives on the native Kadence block
   controls (advancedheading fontSize/fontHeight/fontWeight/letterSpacing/textTransform/
   align/color; infobox titleFont/textFont/learnMoreStyles/titleColor/textColor and
   container* chrome). Kadence's block selector is
   .wp-block-kadence-advancedheading.kt-adv-heading{uid}[data-kb-block=...] = (0,3,0),
   which outranks anything here, so do NOT re-declare font or colour in this block -
   it would be dead code. Margins stay here (Spacing, not Text). */

body.page-id-106{
  --tfco-navy:#011024;
  --tfco-cyan:#00b5e6;
  --tfco-blue:#1471c9;
  --tfco-hair:#e2e6ee;
}

/* Hero emits margin-bottom in the BODY, so !important is required to close the seam
   between the navy hero and the navy mission band. */
body.page-id-106 .kb-row-layout-wrap.kb-row-layout-id106_0f6ad3-5f{margin-bottom:0 !important}

/* Kadence emits a TABLET-ONLY .content-area margin (3rem between 768-1024px only).
   It is margin, not padding, so it sits outside #primary and no background reset covers
   it - the body colour #f6f7fa shows through as a light band above the navy hero and
   below the navy closing band. An !important margin beats the media query regardless of
   source order. Same fix already applied to pages 134 and 17929. */
body.page-id-106 .content-area{margin-top:0 !important;margin-bottom:0 !important}

/* ---- text spacing ---- */
body.page-id-106 .tf-co-eyebrow{margin:0 0 14px}
body.page-id-106 .tf-co-mission-h{margin:0 0 20px}
body.page-id-106 .tf-co-mission-p{margin:0}
body.page-id-106 .tf-co-h2{margin:0 0 26px}
body.page-id-106 .tf-co-body{margin:0 0 18px}
body.page-id-106 .tf-co-body:last-child{margin-bottom:0}
body.page-id-106 .tf-co-pillar-t{margin:0 0 10px}
body.page-id-106 .tf-co-pillar-p{margin:0}
body.page-id-106 .tf-co-tl-year{margin:0 0 10px}
body.page-id-106 .tf-co-tl-title{margin:0 0 10px}
body.page-id-106 .tf-co-tl-text{margin:0}
body.page-id-106 .tf-co-val-t{margin:0 0 10px}
body.page-id-106 .tf-co-val-p{margin:0}
body.page-id-106 .tf-co-name{margin:0 0 4px}
body.page-id-106 .tf-co-role{margin:0 0 12px}
body.page-id-106 .tf-co-life-p{margin:0 0 26px}

/* ---- 1. mission ---- */
body.page-id-106 .tf-co-missioncol > .kt-inside-inner-col{
  max-width:740px;margin-left:auto;margin-right:auto
}

/* ---- icon tiles (className sits on the COLUMN, so > .kt-inside-inner-col is correct) ---- */
body.page-id-106 .tf-co-ico > .kt-inside-inner-col::before{
  content:"";display:block;width:54px;height:54px;border-radius:14px;
  margin:0 0 20px;background-repeat:no-repeat,no-repeat;
  background-position:center,center;background-size:26px 26px,100% 100%;
  background-color:var(--tfco-navy)
}
body.page-id-106 .tf-co-ico-shield > .kt-inside-inner-col::before{
  background-image:url(/wp-content/uploads/2026/07/protection-check-white.svg),linear-gradient(145deg,#02132b 0%,#063a7e 100%)
}
body.page-id-106 .tf-co-ico-quality > .kt-inside-inner-col::before{
  background-image:url(/wp-content/uploads/2026/07/quality-check-white.svg),linear-gradient(145deg,#02132b 0%,#063a7e 100%)
}
body.page-id-106 .tf-co-ico-global > .kt-inside-inner-col::before{
  background-image:url(/wp-content/uploads/2026/07/global-white.svg),linear-gradient(145deg,#02132b 0%,#063a7e 100%)
}

/* ---- 3. who we are ---- */
body.page-id-106 .tf-co-wwa > .kt-row-column-wrap{align-items:center}

/* product cards: chrome + type are native infobox controls now. Only the gap between
   cards and the lift-on-hover polish remain here. */
body.page-id-106 .tf-co-prod{margin:0 0 16px}
body.page-id-106 .tf-co-prod:last-child{margin-bottom:0}
body.page-id-106 .tf-co-prod .kt-blocks-info-box-link-wrap{
  display:block;text-decoration:none;
  transition:transform .18s ease,box-shadow .18s ease
}
body.page-id-106 .tf-co-prod .kt-blocks-info-box-link-wrap:hover{
  transform:translateY(-2px);box-shadow:0 8px 24px rgba(1,16,36,.07)
}
body.page-id-106 .tf-co-prod .kt-blocks-info-box-link-wrap:focus-visible{
  outline:2px solid var(--tfco-blue);outline-offset:3px
}

/* ---- BRAND CARD FALLBACK - deliberately low specificity, do not add `body` ----
   The three brand cards (TrackTik / GuardTek / Silvertrac) are styled by native infobox
   attributes. A block-editor round-trip can migrate or drop those attributes (it already
   converted containerBorderWidth -> borderStyle once), and when they go the cards render
   completely naked. These rules are the safety net.
   SPECIFICITY IS THE WHOLE TRICK: Kadence emits
     .kt-info-box{uid} .kt-blocks-info-box-link-wrap        = (0,2,0)
   and these are
     .tf-co-prod .kt-blocks-info-box-link-wrap              = (0,2,0)
   A tie is broken by source order, and Kadence's CSS is printed in the BODY while
   wp-custom-css sits in the HEAD - so whenever the attributes exist Kadence wins and the
   block controls stay authoritative. These only take effect if the attributes vanish.
   Never prefix these with `body.page-id-106` (that would make them (0,3,1) and they would
   override the native controls, defeating the point). Values must mirror tfco_infobox(). */
.tf-co-prod .kt-blocks-info-box-link-wrap{
  background:#f6f7fa;border:1px solid #e2e6ee;border-radius:14px;padding:26px 28px
}
.tf-co-prod .kt-blocks-info-box-link-wrap:hover{border-color:#b9c8dd}
.tf-co-prod .kt-infobox-textcontent h3.kt-blocks-info-box-title{
  color:#1b2536;font-size:19px;line-height:1.3em;font-weight:700;margin:0 0 10px;padding:0
}
.tf-co-prod .kt-infobox-textcontent .kt-blocks-info-box-text{
  color:#4a5568;font-size:15px;line-height:1.65em;margin:0 0 14px;padding:0
}
.tf-co-prod .kt-blocks-info-box-learnmore{
  color:#1471c9;font-size:14px;line-height:1.2em;font-weight:700;
  background:transparent;border-width:0;margin:0;padding:0
}
.tf-co-prod .kt-blocks-info-box-link-wrap:hover .kt-blocks-info-box-learnmore{color:#0f5ba8}

/* ---- 4. timeline ---- */
body.page-id-106 .tf-co-timeline{margin-top:56px}
body.page-id-106 .tf-co-timeline > .kt-row-column-wrap{position:relative}
body.page-id-106 .tf-co-timeline > .kt-row-column-wrap::before{
  content:"";position:absolute;top:11px;left:0;right:0;height:1px;
  background:rgba(255,255,255,.18);z-index:0
}
body.page-id-106 .tf-co-tl-item > .kt-inside-inner-col{position:relative;padding-top:46px;z-index:1}
body.page-id-106 .tf-co-tl-item > .kt-inside-inner-col::before{
  content:"";position:absolute;top:0;left:0;width:22px;height:22px;box-sizing:border-box;
  border-radius:50%;border:2px solid var(--tfco-cyan);background:var(--tfco-navy)
}
body.page-id-106 .tf-co-tl-item > .kt-inside-inner-col::after{
  content:"";position:absolute;top:7px;left:7px;width:8px;height:8px;
  border-radius:50%;background:var(--tfco-cyan)
}

/* ---- 5. values ---- */
body.page-id-106 .tf-co-values{margin-top:48px}
body.page-id-106 .tf-co-val > .kt-inside-inner-col{
  background:#fff;border:1px solid var(--tfco-hair);border-radius:16px;padding:30px 28px;height:100%
}

/* ---- 6. leadership ---- */
body.page-id-106 .tf-co-team{margin-top:44px}
body.page-id-106 .tf-co-team + .tf-co-team{margin-top:24px}
body.page-id-106 .tf-co-person > .kt-inside-inner-col{
  background:#fff;border:1px solid var(--tfco-hair);border-radius:14px;
  border-bottom:3px solid var(--tfco-cyan);
  padding:16px 16px 18px;height:100%;
  display:flex;flex-direction:column;align-items:center
}
body.page-id-106 .tf-co-photo{margin:0 0 14px !important;width:100% !important;max-width:100% !important}
body.page-id-106 .tf-co-photo img{
  width:100% !important;max-width:100% !important;height:auto !important;
  aspect-ratio:1/1.05;object-fit:cover;border-radius:8px;display:block;background:#e9ebee
}
body.page-id-106 .tf-co-li{margin-top:auto}
body.page-id-106 .tf-co-li .kt-svg-icon-link:focus-visible{outline:2px solid var(--tfco-blue);outline-offset:3px;border-radius:4px}

/* ---- 7. life at trackforce ---- */
body.page-id-106 .tf-co-lifecol > .kt-inside-inner-col{max-width:720px}
/* perk pills are plain spans inside one advancedheading, so they are styled here */
body.page-id-106 .tf-co-perks{margin:0 0 30px;display:flex;flex-wrap:wrap;gap:10px}
body.page-id-106 .tf-co-perk{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px 9px 14px;border-radius:999px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);
  font-size:13.5px;font-weight:600;color:#fff;line-height:1
}
body.page-id-106 .tf-co-perk::before{
  content:"";width:15px;height:15px;flex:0 0 15px;
  background:url(/wp-content/uploads/2026/07/protection-check-cyan.svg) no-repeat center;
  background-size:contain
}
body.page-id-106 .tf-co-btns{display:flex;flex-wrap:wrap;gap:14px}
body.page-id-106 .tf-co-btns a.kb-button{padding:15px 30px !important;line-height:1 !important}
body.page-id-106 .tf-co-btns a.kb-button:nth-of-type(2){
  background:transparent !important;border:1px solid rgba(255,255,255,.28) !important;color:#fff !important
}
body.page-id-106 .tf-co-btns a.kb-button:nth-of-type(2):hover{
  background:rgba(255,255,255,.10) !important;border-color:rgba(255,255,255,.5) !important;color:#fff !important
}

/* ---- anchor offset clears the sticky header ---- */
body.page-id-106 #leadership{scroll-margin-top:110px}

/* ---- tablet ---- */
@media all and (max-width:1024px){
  body.page-id-106 .tf-co-timeline > .kt-row-column-wrap::before{display:none}
  body.page-id-106 .tf-co-tl-item > .kt-inside-inner-col{padding-top:40px}
}

/* ---- mobile ---- */
@media all and (max-width:767px){
  body.page-id-106 .tf-co-h2{margin-bottom:22px}
  body.page-id-106 .tf-co-val > .kt-inside-inner-col{padding:24px 22px}
  body.page-id-106 .tf-co-values,body.page-id-106 .tf-co-team{margin-top:32px}
  body.page-id-106 .tf-co-timeline{margin-top:36px}
  body.page-id-106 .tf-co-person > .kt-inside-inner-col{padding:12px 12px 14px}
  body.page-id-106 .tf-co-perks{gap:8px;margin-bottom:26px}
  body.page-id-106 .tf-co-perk{font-size:12.5px;padding:8px 14px 8px 12px}
  body.page-id-106 .tf-co-btns{flex-direction:column;align-items:stretch}
  body.page-id-106 .tf-co-btns a.kb-button{width:100%;justify-content:center}
  body.page-id-106 #leadership{scroll-margin-top:90px}
}

@media (prefers-reduced-motion:reduce){
  body.page-id-106 .tf-co-prod .kt-blocks-info-box-link-wrap{transition:none}
  body.page-id-106 .tf-co-prod .kt-blocks-info-box-link-wrap:hover{transform:none}
}

/* ===== TF COMPANY - END ===== */

/* ===== TF PARTNER (page 18023) - START ===== */
/* LAYOUT + CARD CHROME ONLY. Type and colour live on the native Kadence block
   controls (memory 18017); never declare font/colour for a heading here too or
   the CSS copy becomes dead code. Icon URLs are root-relative on purpose so the
   block survives a domain change. */

/* --- band seams ---------------------------------------------------------- */
/* the theme adds 3rem .content-area margin ONLY between 768-1024px, which shows
   as a light seam above the navy hero and below the navy CTA (memory 18010 F3) */
body.page-id-18023 .content-area{margin-top:0 !important;margin-bottom:0 !important}
/* hero row emits margin-bottom:var(--global-kb-spacing-sm) in the body */
body.page-id-18023 .kb-row-layout-wrap.kb-row-layout-id14340_363c05-d0{margin-bottom:0 !important}

/* --- section rhythm ------------------------------------------------------ */
body.page-id-18023 .tf-pa-eyebrow{margin:0 0 12px}
body.page-id-18023 .tf-pa-h2{margin:0 auto;max-width:660px}
body.page-id-18023 .tf-pa-lead{margin:14px auto 0;max-width:600px}
body.page-id-18023 .tf-pa-steps,
body.page-id-18023 .tf-pa-progs,
body.page-id-18023 .tf-pa-stds{margin-top:52px}

/* --- cards --------------------------------------------------------------- */
body.page-id-18023 .tf-pa-step > .kt-inside-inner-col,
body.page-id-18023 .tf-pa-prog > .kt-inside-inner-col,
body.page-id-18023 .tf-pa-std  > .kt-inside-inner-col{
  position:relative;height:100%;background:#fff;
  border:1.5px solid #e2e6ee;border-radius:14px;
  box-shadow:0 1px 2px rgba(1,16,36,.04);
}
body.page-id-18023 .tf-pa-step > .kt-inside-inner-col{padding:28px}
body.page-id-18023 .tf-pa-prog > .kt-inside-inner-col{padding:30px;display:flex;flex-direction:column}
body.page-id-18023 .tf-pa-std  > .kt-inside-inner-col{padding:26px}
body.page-id-18023 .tf-pa-ct{margin:0 0 9px}
body.page-id-18023 .tf-pa-cp{margin:0}
body.page-id-18023 .tf-pa-cp-grow{flex:1 0 auto;margin:0 0 18px}
body.page-id-18023 .tf-pa-points{margin:0}

/* ghost step numeral - generated content so it stays out of the text flow */
body.page-id-18023 .tf-pa-steps{counter-reset:tfpastep}
body.page-id-18023 .tf-pa-step{counter-increment:tfpastep}
body.page-id-18023 .tf-pa-step > .kt-inside-inner-col::after{
  content:counter(tfpastep);position:absolute;top:22px;right:26px;
  font-size:40px;font-weight:700;line-height:1;letter-spacing:-.04em;color:#eef1f6;
}

/* --- apply section ------------------------------------------------------- */
body.page-id-18023 #apply{scroll-margin-top:110px}
body.page-id-18023 .tf-pa-eyebrow-l{margin:0 0 12px}
body.page-id-18023 .tf-pa-h2-l{margin:0 0 16px}
body.page-id-18023 .tf-pa-body{margin:0 0 26px}
body.page-id-18023 .tf-pa-assure{margin:0}
body.page-id-18023 .tf-pa-formcard > .kt-inside-inner-col{
  background:#f6f7fa;border:1.5px solid #e2e6ee;border-radius:16px;padding:34px;
  box-shadow:0 4px 14px rgba(1,16,36,.05);
}
body.page-id-18023 .tf-pa-formnote{margin:14px 0 0}

/* Kadence ships .kb-advanced-form as flex-direction:column, so the 50% field
   widths would each sit on their own row. Pair them explicitly instead. */
body.page-id-18023 .tf-pa-formcard .kb-advanced-form{flex-direction:row;flex-wrap:wrap;align-items:flex-start}
body.page-id-18023 .tf-pa-formcard .kb-adv-form-field{flex:0 0 100%}
@media (min-width:768px){
  body.page-id-18023 .tf-pa-formcard .kb-adv-form-field.tf-pa-half{flex:0 0 calc(50% - 8px);max-width:calc(50% - 8px)}
}
body.page-id-18023 .tf-pa-formcard .kb-advanced-form input[type=text],
body.page-id-18023 .tf-pa-formcard .kb-advanced-form input[type=email],
body.page-id-18023 .tf-pa-formcard .kb-advanced-form select,
body.page-id-18023 .tf-pa-formcard .kb-advanced-form textarea{background:#fff;width:100%}

/* partnership type rendered as a 3-up segmented control. Kept as inline-block
   rather than grid because <legend> inside a display:grid fieldset is unreliable. */
body.page-id-18023 .tf-pa-type fieldset.kb-radio-check-item-wrap{display:block;border:0;padding:0;margin:0}
body.page-id-18023 .tf-pa-type legend.kb-adv-form-label{display:block;width:100%;margin:0 0 10px;padding:0}
body.page-id-18023 .tf-pa-type .kb-radio-check-item{display:inline-block;vertical-align:top;width:calc((100% - 20px)/3);margin:0 10px 0 0}
body.page-id-18023 .tf-pa-type .kb-radio-check-item:last-of-type{margin-right:0}
body.page-id-18023 .tf-pa-type .kb-radio-check-item input.kb-radio-style{position:absolute;width:1px;height:1px;opacity:0;margin:0}
body.page-id-18023 .tf-pa-type .kb-radio-check-item label{
  display:block;text-align:center;cursor:pointer;padding:12px 8px;
  border:1.5px solid #e2e6ee;border-radius:9px;background:#fff;color:#4a5568;
  transition:background .2s,border-color .2s,color .2s;
}
body.page-id-18023 .tf-pa-type .kb-radio-check-item input.kb-radio-style:checked + label{
  border-color:#00b5e6;background:rgba(0,181,230,.08);color:#1b2536;
}
body.page-id-18023 .tf-pa-type .kb-radio-check-item input.kb-radio-style:focus-visible + label{
  outline:2px solid #1471c9;outline-offset:2px;
}

/* --- FAQ ---------------------------------------------------------------- */
body.page-id-18023 .tf-pa-faqcol{max-width:820px;margin-left:auto;margin-right:auto}
body.page-id-18023 .tf-pa-faq{margin:0 0 12px}
body.page-id-18023 .tf-pa-faq:first-of-type{margin-top:44px}
body.page-id-18023 .tf-pa-faq:last-of-type{margin-bottom:0}
/* these infoboxes carry no link, so they must not read as interactive */
body.page-id-18023 .tf-pa-faq .kt-blocks-info-box-link-wrap{cursor:default}

/* --- closing CTA -------------------------------------------------------- */
body.page-id-18023 .tf-pa-ctah{margin:0 auto 16px;max-width:760px}
body.page-id-18023 .tf-pa-ctap{margin:0 auto 32px;max-width:700px}
body.page-id-18023 .tf-pa-btns{justify-content:center}
body.page-id-18023 .tf-pa-btns .kb-button{padding:15px 36px}
/* second button is the ghost-on-navy secondary */
body.page-id-18023 .tf-pa-btns .kb-button + .kb-button{background:transparent;border:1.5px solid rgba(255,255,255,.25)}
body.page-id-18023 .tf-pa-btns .kb-button + .kb-button:hover{border-color:#00b5e6;background:rgba(0,181,230,.08)}

/* --- responsive --------------------------------------------------------- */
@media (max-width:1024px){
  body.page-id-18023 .tf-pa-steps,
  body.page-id-18023 .tf-pa-progs,
  body.page-id-18023 .tf-pa-stds{margin-top:42px}
}
@media (max-width:767px){
  body.page-id-18023 #apply{scroll-margin-top:90px}
  body.page-id-18023 .tf-pa-steps,
  body.page-id-18023 .tf-pa-progs,
  body.page-id-18023 .tf-pa-stds{margin-top:34px}
  body.page-id-18023 .tf-pa-step > .kt-inside-inner-col,
  body.page-id-18023 .tf-pa-prog > .kt-inside-inner-col,
  body.page-id-18023 .tf-pa-std  > .kt-inside-inner-col{padding:24px}
  body.page-id-18023 .tf-pa-formcard > .kt-inside-inner-col{padding:24px}
  body.page-id-18023 .tf-pa-faq:first-of-type{margin-top:32px}
  body.page-id-18023 .tf-pa-btns .kb-button{padding:14px 28px}
}
@media (max-width:600px){
  body.page-id-18023 .tf-pa-type .kb-radio-check-item{width:100%;margin:0 0 8px}
}
/* ===== TF PARTNER - END ===== */

/* ===== TF CUSTOMER SUCCESS (page 18044) - START ===== */
body.page-id-18044{
  --tfcs-cyan:#00b5e6;
  --tfcs-blue:#1471c9;
  --tfcs-hair:rgba(255,255,255,.12);
  --tfcs-glass:rgba(255,255,255,.05);
}

/* ---------- shared: eyebrow with a leading brand icon ---------- */
body.page-id-18044 .tf-cs-eyebrow{display:flex;align-items:center;gap:10px}
body.page-id-18044 .tf-cs-eyebrow.tf-cs-eyebrow-c{justify-content:center}
body.page-id-18044 .tf-cs-eyebrow::before{
  content:"";flex:none;width:17px;height:17px;
  background:var(--tfcs-ico) center/contain no-repeat;
}
body.page-id-18044 .tf-cs-eyebrow-hero{--tfcs-ico:url(/wp-content/uploads/tf-cs-icons/cs-eyebrow-cyan.svg)}
body.page-id-18044 .tf-cs-eyebrow-plain::before{display:none}

/* eyebrow that sits in a rounded tile (methodology) */
body.page-id-18044 .tf-cs-eyebrow-tile{gap:12px}
body.page-id-18044 .tf-cs-eyebrow-tile::before{
  width:44px;height:44px;border-radius:11px;
  background:rgba(0,181,230,.10) var(--tfcs-ico) center/24px 24px no-repeat;
  --tfcs-ico:url(/wp-content/uploads/tf-cs-icons/cs-expert-guidance-blue.svg);
}

/* ---------- 1. HERO ---------- */
body.page-id-18044 .tf-cs-herogrid .kt-row-column-wrap{align-items:center}
body.page-id-18044 .tf-cs-hero-copy{max-width:560px}
body.page-id-18044 .tf-cs-hero .rank-math-breadcrumb{margin-bottom:18px}
body.page-id-18044 .tf-cs-hero .rank-math-breadcrumb,
body.page-id-18044 .tf-cs-hero .rank-math-breadcrumb a{
  font-size:12.5px;color:#8fa3bd;letter-spacing:.02em;
}
body.page-id-18044 .tf-cs-hero .rank-math-breadcrumb a:hover{color:var(--tfcs-cyan)}

/* hero checklist: two-up on desktop, single column on small screens */
body.page-id-18044 .tf-cs-hero-points ul{
  display:grid;grid-template-columns:1fr 1fr;gap:14px 26px;
}
@media (max-width:767px){
  body.page-id-18044 .tf-cs-hero-points ul{grid-template-columns:1fr}
}

/* ---------- glass product cards (hero + methodology) ---------- */
body.page-id-18044 .tf-cs-card > .kt-inside-inner-col{
  position:relative;
  background:linear-gradient(155deg,#011024 0%,#04223f 62%,#04529a 155%);
  border:1px solid var(--tfcs-hair);
  border-radius:16px;
  padding:26px 28px 28px;
  box-shadow:0 28px 70px rgba(1,16,36,.28);
  overflow:hidden;
}
body.page-id-18044 .tf-cs-card-hero > .kt-inside-inner-col{
  box-shadow:0 40px 90px rgba(1,16,36,.5);
}

/* card title with its own icon tile */
body.page-id-18044 .tf-cs-cardtitle{display:flex;align-items:center;gap:10px}
body.page-id-18044 .tf-cs-cardtitle::before{
  content:"";flex:none;width:34px;height:34px;border-radius:9px;
  background:rgba(0,181,230,.14) var(--tfcs-ico) center/19px 19px no-repeat;
  --tfcs-ico:url(/wp-content/uploads/tf-cs-icons/cs-growth-cyan.svg);
}

/* "trending up" status chip, pinned to the card corner */
body.page-id-18044 .tf-cs-chip-status{
  position:absolute;top:26px;right:28px;
  display:inline-flex;align-items:center;gap:5px;
  background:rgba(0,181,230,.12);border:1px solid rgba(0,181,230,.30);
  border-radius:999px;padding:4px 10px;
}
body.page-id-18044 .tf-cs-chip-status::before{
  content:"";width:7px;height:7px;border-radius:999px;background:var(--tfcs-cyan);
}

/* ---------- decorative bar chart (empty columns, styled) ---------- */
body.page-id-18044 .tf-cs-bars .kt-row-column-wrap{
  display:flex!important;align-items:flex-end;gap:12px;
  grid-template-columns:none!important;
  height:118px;position:relative;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 1px,transparent 1px 29px);
}
body.page-id-18044 .tf-cs-bars .wp-block-kadence-column{flex:1 1 0;min-width:0;align-self:flex-end}
body.page-id-18044 .tf-cs-bars .kt-inside-inner-col{
  border-radius:5px 5px 0 0;
}
body.page-id-18044 .tf-cs-bar-1 .kt-inside-inner-col{height:45px;background:rgba(255,255,255,.14)}
body.page-id-18044 .tf-cs-bar-2 .kt-inside-inner-col{height:61px;background:rgba(0,181,230,.35)}
body.page-id-18044 .tf-cs-bar-3 .kt-inside-inner-col{height:76px;background:rgba(0,181,230,.55)}
body.page-id-18044 .tf-cs-bar-4 .kt-inside-inner-col{height:94px;background:linear-gradient(180deg,var(--tfcs-cyan),rgba(0,181,230,.5))}
body.page-id-18044 .tf-cs-bar-5 .kt-inside-inner-col{
  height:118px;background:linear-gradient(180deg,var(--tfcs-cyan),rgba(20,140,252,.6));
  box-shadow:0 0 24px rgba(0,181,230,.5);
}
body.page-id-18044 .tf-cs-barsmall .kt-row-column-wrap{height:96px}
body.page-id-18044 .tf-cs-barsmall .tf-cs-bar-1 .kt-inside-inner-col{height:30px}
body.page-id-18044 .tf-cs-barsmall .tf-cs-bar-2 .kt-inside-inner-col{height:46px}
body.page-id-18044 .tf-cs-barsmall .tf-cs-bar-3 .kt-inside-inner-col{height:62px}
body.page-id-18044 .tf-cs-barsmall .tf-cs-bar-4 .kt-inside-inner-col{height:78px}
body.page-id-18044 .tf-cs-barsmall .tf-cs-bar-5 .kt-inside-inner-col{height:96px}

/* ---------- hero step rail (Advise / Unlock insights / Grow) ---------- */
body.page-id-18044 .tf-cs-rail .kt-row-column-wrap{
  display:flex!important;flex-wrap:wrap;gap:8px;
  grid-template-columns:none!important;
  counter-reset:tfcs-step;
}
body.page-id-18044 .tf-cs-rail .wp-block-kadence-column{flex:0 0 auto}
body.page-id-18044 .tf-cs-step .kt-inside-inner-col{
  background:rgba(255,255,255,.06);border:1px solid var(--tfcs-hair);
  border-radius:999px;padding:6px 13px;
}
body.page-id-18044 .tf-cs-step-3 .kt-inside-inner-col{
  background:rgba(0,181,230,.16);border-color:rgba(0,181,230,.45);
}
body.page-id-18044 .tf-cs-steptxt{display:flex;align-items:center;gap:7px;white-space:nowrap}
body.page-id-18044 .tf-cs-steptxt::before{
  content:counter(tfcs-step);counter-increment:tfcs-step;
  display:inline-flex;align-items:center;justify-content:center;
  width:17px;height:17px;border-radius:999px;flex:none;
  background:rgba(255,255,255,.14);color:#fff;font-size:9.5px;font-weight:700;
}
body.page-id-18044 .tf-cs-step-3 .tf-cs-steptxt::before{background:var(--tfcs-cyan);color:#011024}

/* ---------- 2. OUTCOME BAND (3 pillars) ---------- */
body.page-id-18044 .tf-cs-pillars .kt-inside-inner-col{
  display:grid;grid-template-columns:42px 1fr;gap:16px;align-items:start;
}
body.page-id-18044 .tf-cs-pillars .kt-inside-inner-col > *{grid-column:2}
body.page-id-18044 .tf-cs-pillar .kt-inside-inner-col::before{
  content:"";grid-column:1;grid-row:1 / span 2;
  width:42px;height:42px;border-radius:11px;
  background:rgba(0,181,230,.12) var(--tfcs-ico) center/22px 22px no-repeat;
  border:1px solid rgba(0,181,230,.28);
  /* Kadence emits `.kadence-columnUID > .kt-inside-inner-col:before{opacity:0.3}`
     on EVERY column, which would wash this tile out. Reassert it. */
  opacity:1;
}
body.page-id-18044 .tf-cs-pillar-1{--tfcs-ico:url(/wp-content/uploads/tf-cs-icons/cs-expert-guidance-cyan.svg)}
body.page-id-18044 .tf-cs-pillar-2{--tfcs-ico:url(/wp-content/uploads/tf-cs-icons/cs-proactive-cyan.svg)}
body.page-id-18044 .tf-cs-pillar-3{--tfcs-ico:url(/wp-content/uploads/tf-cs-icons/cs-strategic-cyan.svg)}
body.page-id-18044 .tf-cs-pillar > .kt-inside-inner-col{padding:6px 34px}
@media (min-width:1025px){
  body.page-id-18044 .tf-cs-pillar-2 > .kt-inside-inner-col,
  body.page-id-18044 .tf-cs-pillar-3 > .kt-inside-inner-col{
    border-left:1px solid rgba(255,255,255,.10);
  }
}
@media (max-width:1024px){
  body.page-id-18044 .tf-cs-pillar > .kt-inside-inner-col{padding:6px 0}
}

/* ---------- 4. METHODOLOGY split ---------- */
body.page-id-18044 .tf-cs-methodgrid .kt-row-column-wrap{align-items:center}
body.page-id-18044 .tf-cs-method-copy{max-width:560px}

/* ---------- value-card stat trio ---------- */
body.page-id-18044 .tf-cs-stats .kt-row-column-wrap{
  border-top:1px solid var(--tfcs-hair);padding-top:20px;
}

/* ---------- 3. INTRO measure ---------- */
body.page-id-18044 .tf-cs-introcol > .kt-inside-inner-col{
  max-width:760px;margin-left:auto;margin-right:auto;
}

/* ---------- 5. QUOTE ---------- */
body.page-id-18044 .tf-cs-quote{max-width:900px;margin-left:auto;margin-right:auto;font-style:italic}
body.page-id-18044 .tf-cs-quote::before{content:"1C";color:var(--tfcs-cyan);font-weight:700}
body.page-id-18044 .tf-cs-quote::after{content:"1D";color:var(--tfcs-cyan);font-weight:700}

/* ---------- mobile tightening ---------- */
@media (max-width:767px){
  body.page-id-18044 .tf-cs-card > .kt-inside-inner-col{padding:22px 20px 24px}
  body.page-id-18044 .tf-cs-chip-status{top:20px;right:20px}
  body.page-id-18044 .tf-cs-cardtitle::before{width:30px;height:30px;background-size:17px 17px}
  body.page-id-18044 .tf-cs-bars .kt-row-column-wrap{gap:8px}
}
@media (prefers-reduced-motion:reduce){
  body.page-id-18044 *{animation:none!important;transition:none!important}
}
/* ===== TF CUSTOMER SUCCESS - END ===== */

/* ===== TF FINANCIAL SERVICES (page 115) - START ===== */
/* Layout, card chrome and icon tiles only. Type + colour live on native
   Kadence block controls (see tf-fs-page.build.txt / memory 18017).
   Icons: /wp-content/uploads/tf-fs-icons/  (7 files, md5 + geometry verified) */

body.page-id-115 .tf-fs-chal .kt-inside-inner-col,
body.page-id-115 .tf-fs-pill .kt-inside-inner-col,
body.page-id-115 .tf-fs-browser .kt-inside-inner-col,
body.page-id-115 .tf-fs-statcard .kt-inside-inner-col { opacity: 1; }

/* ---------- 0. HERO ---------- */
/* The mockup's grid floor and cyan glow were a raster PNG + two overlay divs.
   Both are reproduced in CSS so no extra image is needed. Grid sits on the row's
   ::after, glow on ::before, both behind the content (z-index 0 vs 1). */
body.page-id-115 .tf-fs-hero-row { position: relative; overflow: hidden; }
body.page-id-115 .tf-fs-hero-row::before,
body.page-id-115 .tf-fs-hero-row::after {
  content: ""; position: absolute; pointer-events: none; z-index: 0;
}
/* single radial cyan glow - the design contract allows one per page */
body.page-id-115 .tf-fs-hero-row::before {
  left: -10%; top: -20%; width: 70%; height: 120%;
  background: radial-gradient(ellipse 55% 55% at 40% 45%, rgba(0,181,230,.16) 0%, transparent 68%);
}
/* perspective grid floor, fading out upward */
body.page-id-115 .tf-fs-hero-row::after {
  left: -25%; right: -25%; bottom: -60px; height: 300px;
  background-image:
    repeating-linear-gradient(90deg, rgba(120,190,255,.10) 0 1px, transparent 1px 68px),
    repeating-linear-gradient(0deg,  rgba(120,190,255,.10) 0 1px, transparent 1px 44px);
  transform: perspective(340px) rotateX(62deg);
  transform-origin: bottom center;
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 55%, #000 100%);
          mask-image: linear-gradient(180deg, transparent 0%, #000 55%, #000 100%);
}
body.page-id-115 .tf-fs-herocol { position: relative; z-index: 1; }
body.page-id-115 .tf-fs-heroh1  { max-width: 880px; }
body.page-id-115 .tf-fs-herosub { max-width: 680px; }
/* breadcrumb sits above the eyebrow, muted */
body.page-id-115 .tf-fs-herocol .rank-math-breadcrumb {
  font-size: 12px; font-weight: 600; margin-bottom: 22px;
}
body.page-id-115 .tf-fs-herocol .rank-math-breadcrumb,
body.page-id-115 .tf-fs-herocol .rank-math-breadcrumb a { color: rgba(255,255,255,.55); }
body.page-id-115 .tf-fs-herocol .rank-math-breadcrumb a:hover { color: #34c6ef; }
body.page-id-115 .tf-fs-herocol .rank-math-breadcrumb .last { color: #34c6ef; }
/* eyebrow with the gradient icon tile */
body.page-id-115 .tf-fs-heroeyebrow {
  padding-left: 68px; position: relative; min-height: 54px;
  display: flex; align-items: center;
}
body.page-id-115 .tf-fs-heroeyebrow::before {
  content: ""; position: absolute; left: 0; top: 0;
  width: 54px; height: 54px; border-radius: 13px; opacity: 1;
  background-color: #04529a;
  background-image: url(/wp-content/uploads/tf-fs-icons/fs-lock-white.svg),
                    linear-gradient(150deg, #04529a 0%, #00b5e6 140%);
  background-repeat: no-repeat, no-repeat;
  background-position: center, center;
  background-size: 27px 27px, cover;
  box-shadow: 0 6px 18px rgba(0,181,230,.28);
}

/* ---------- 1. TRUSTED BY / LOGO ROW ---------- */
body.page-id-115 .tf-fs-trustlabel { margin-bottom: 26px !important; }
/* Continuous logo carousel. The column's OUTER div is the viewport (clips +
   fades the edges); its .kt-inside-inner-col is the track. The track holds the
   8 logos twice and slides -50%, so the loop is seamless with no JS.
   Duration scales with the set so speed stays even if logos are added. */
@keyframes tf-fs-logo-scroll {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}
body.page-id-115 .tf-fs-logorow {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
body.page-id-115 .tf-fs-logorow > .kt-inside-inner-col {
  /* flex-direction MUST be declared. Kadence's column block defaults an unset
     `direction` attribute to 'vertical' and emits flex-direction:column on
     .kt-inside-inner-col, which stacks the track. Specificity here is (0,3,1)
     vs Kadence's (0,2,1), so no !important is needed - it just has to be said. */
  display: flex; flex-direction: row; flex-wrap: nowrap;
  align-items: center; width: max-content;
  animation: tf-fs-logo-scroll 60s linear infinite;
  will-change: transform;
}
/* pause on hover / keyboard focus so a reader can settle on a logo */
body.page-id-115 .tf-fs-logorow:hover > .kt-inside-inner-col,
body.page-id-115 .tf-fs-logorow:focus-within > .kt-inside-inner-col {
  animation-play-state: paused;
}
/* Smaller marks + tighter spacing so roughly 10 logos are on screen at once
   (was about 5 at 30px tall with 64px margins).
   SPEED NOTE: the 60s above is the LOOP PERIOD, not the perceived speed. The
   animation moves the track -50% (2 of the 4 logo sets, ~1860px at desktop),
   so 60s is ~31px/second - the calm, readable band for a trust bar. The old 28s
   was ~60px/s, which read as hurried. To retune, hold the ratio:
   duration = half-track width / target px per second. */
body.page-id-115 .tf-fs-logorow figure.tf-fs-logo {
  flex: 0 0 auto; margin: 0 clamp(14px, 2vw, 28px);
}
body.page-id-115 .tf-fs-logorow figure.tf-fs-logo img {
  height: clamp(15px, 1.6vw, 21px); width: auto; max-width: none;
  object-fit: contain; opacity: .72; display: block;
}

/* ---------- 2. CHALLENGE CARDS ---------- */
body.page-id-115 .tf-fs-chalgrid { margin-top: 44px; }
body.page-id-115 .tf-fs-chal > .kt-inside-inner-col {
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 13px;
  padding: 30px 30px 28px;
  box-shadow: 0 1px 3px rgba(1,16,36,.08), 0 1px 2px rgba(1,16,36,.05);
  height: 100%;
}
body.page-id-115 .tf-fs-clabel,
body.page-id-115 .tf-fs-ctext,
body.page-id-115 .tf-fs-slabel,
body.page-id-115 .tf-fs-stext { padding-left: 37px; position: relative; }
body.page-id-115 .tf-fs-clabel::before,
body.page-id-115 .tf-fs-slabel::before {
  content: ""; position: absolute; left: 0; width: 24px; height: 24px;
  background-repeat: no-repeat; background-position: center; background-size: contain;
}
body.page-id-115 .tf-fs-clabel::before {
  top: -2px; background-image: url(/wp-content/uploads/tf-fs-icons/fs-alert.svg);
}
/* hairline divider between the problem and the answer */
body.page-id-115 .tf-fs-slabel {
  margin-top: 20px !important; padding-top: 19px;
  border-top: 1px solid #e2e6ee;
}
body.page-id-115 .tf-fs-slabel::before {
  top: 17px; background-image: url(/wp-content/uploads/tf-fs-icons/fs-check.svg);
}

/* ---------- 3. WHY TRACKFORCE ---------- */
body.page-id-115 .tf-fs-platgrid { align-items: center; }
body.page-id-115 .tf-fs-helps { margin-top: 4px; }
body.page-id-115 .tf-fs-help > .kt-inside-inner-col { padding: 0 0 22px; }
body.page-id-115 .tf-fs-helps > .kt-row-column-wrap > .tf-fs-help:last-child > .kt-inside-inner-col { padding-bottom: 0; }
body.page-id-115 .tf-fs-help-t,
body.page-id-115 .tf-fs-help-p { padding-left: 60px; position: relative; }
body.page-id-115 .tf-fs-help-t::before {
  content: ""; position: absolute; left: 0; top: -2px;
  width: 44px; height: 44px; border-radius: 11px;
  background-color: #ffffff; border: 1px solid #e2e6ee;
  box-shadow: 0 1px 3px rgba(1,16,36,.08);
  background-repeat: no-repeat; background-position: center; background-size: 22px 22px;
  background-image: var(--tffs-ico);
}
body.page-id-115 .tf-fs-help-gps  { --tffs-ico: url(/wp-content/uploads/tf-fs-icons/fs-gps.svg); }
body.page-id-115 .tf-fs-help-doc  { --tffs-ico: url(/wp-content/uploads/tf-fs-icons/fs-doc.svg); }
body.page-id-115 .tf-fs-help-cash { --tffs-ico: url(/wp-content/uploads/tf-fs-icons/fs-cash.svg); }
body.page-id-115 .tf-fs-help-lock { --tffs-ico: url(/wp-content/uploads/tf-fs-icons/fs-lock.svg); }

/* browser-chrome mockup */
body.page-id-115 .tf-fs-browser > .kt-inside-inner-col {
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 13px;
  overflow: hidden; box-shadow: 0 28px 64px rgba(1,16,36,.18);
}
body.page-id-115 .tf-fs-urlbar {
  background: #f6f7fa; border-bottom: 1px solid #e2e6ee;
  padding: 11px 16px; position: relative; margin: 0 !important;
}
body.page-id-115 .tf-fs-urlbar::before {
  content: ""; position: absolute; left: 16px; top: 50%; margin-top: -5px;
  width: 10px; height: 10px; border-radius: 50%; background: #ff5f57;
  box-shadow: 16px 0 0 #febc2e, 32px 0 0 #28c840;
}
body.page-id-115 .tf-fs-urlbar .tf-fs-urlpill {
  display: inline-block; background: #ffffff; border: 1px solid #e2e6ee;
  border-radius: 8px; padding: 4px 16px; max-width: 300px;
}
body.page-id-115 figure.tf-fs-shot { margin: 0; }
body.page-id-115 figure.tf-fs-shot img { display: block; width: 100%; height: auto; }

/* ---------- 4. INDUSTRY STATISTIC (navy panel, no globe) ---------- */
body.page-id-115 .tf-fs-statwrap {
  border-radius: 20px;
  overflow: hidden;
}
body.page-id-115 .tf-fs-statcard > .kt-inside-inner-col {
  padding: clamp(32px, 4vw, 54px);
}
body.page-id-115 .tf-fs-statkey { color: #34c6ef; font-weight: 700; }

/* ---------- 5. COMPLIANCE STRIP ---------- */
body.page-id-115 .tf-fs-compgrid { align-items: center; }
body.page-id-115 .tf-fs-compcopy > .kt-inside-inner-col { padding-left: 68px; position: relative; }
body.page-id-115 .tf-fs-compcopy > .kt-inside-inner-col::before {
  content: ""; position: absolute; left: 0; top: 50%; margin-top: -26px;
  width: 52px; height: 52px; border-radius: 13px; opacity: 1;
  background-color: #ffffff; border: 1px solid #e2e6ee;
  box-shadow: 0 1px 3px rgba(1,16,36,.08);
  background-image: url(/wp-content/uploads/tf-fs-icons/fs-shield.svg);
  background-repeat: no-repeat; background-position: center; background-size: 26px 26px;
}
body.page-id-115 .tf-fs-pill > .kt-inside-inner-col {
  background: #ffffff; border: 1.5px solid #dde3ec; border-radius: 999px;
  padding: 11px 8px; text-align: center;
}

/* ---------- 6. FAQ ---------- */
body.page-id-115 .tf-fs-faqlist { margin-top: 40px; max-width: 900px; }
body.page-id-115 .tf-fs-faq > .kt-inside-inner-col {
  padding: 26px 0; border-top: 1px solid #e2e6ee;
}

/* ---------- 7. CTA ---------- */
body.page-id-115 .tf-fs-ctacol > .kt-inside-inner-col {
  max-width: 900px; margin: 0 auto; text-align: center;
}
body.page-id-115 .tf-fs-ctabtns { justify-content: center; }

/* ---------- 8. RESPONSIVE ---------- */
@media (max-width: 1024px) {
  body.page-id-115 .tf-fs-comptitle { white-space: normal; }
}
@media (max-width: 767px) {
  body.page-id-115 .tf-fs-heroeyebrow { padding-left: 0; min-height: 0; display: block; }
  body.page-id-115 .tf-fs-heroeyebrow::before {
    position: relative; width: 46px; height: 46px; margin-bottom: 14px; display: block;
    background-size: 23px 23px, cover;
  }
  body.page-id-115 .tf-fs-hero-row::after { display: none; }
  body.page-id-115 .tf-fs-herobtns .kb-btn-wrap,
  body.page-id-115 .tf-fs-herobtns .wp-block-kadence-singlebtn { width: 100%; }
  body.page-id-115 .tf-fs-chal > .kt-inside-inner-col { padding: 24px 22px 22px; }
  /* no mobile margin override needed - the base clamp already floors at 14px */
  body.page-id-115 .tf-fs-compcopy > .kt-inside-inner-col {
    padding-left: 0; padding-bottom: 18px; text-align: center;
  }
  body.page-id-115 .tf-fs-compcopy > .kt-inside-inner-col::before {
    position: relative; left: auto; top: auto; margin: 0 auto 12px; display: block;
  }
  body.page-id-115 .tf-fs-comptitle,
  body.page-id-115 .tf-fs-complabel { text-align: center; }
  body.page-id-115 .tf-fs-statwrap {
    border-radius: 14px;
  }
  body.page-id-115 .tf-fs-ctabtns .kb-btn-wrap,
  body.page-id-115 .tf-fs-ctabtns .wp-block-kadence-singlebtn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  body.page-id-115 * { animation: none !important; transition: none !important; }
  /* Freezing the track mid-slide would show a half-empty row, so fall back to a
     static centred row and drop the duplicated half. */
  body.page-id-115 .tf-fs-logorow {
    -webkit-mask-image: none; mask-image: none; overflow: visible;
  }
  body.page-id-115 .tf-fs-logorow > .kt-inside-inner-col {
    flex-wrap: wrap; justify-content: center; width: auto;
    transform: none !important; row-gap: 22px;
  }
  body.page-id-115 .tf-fs-logorow figure.tf-fs-logo[aria-hidden="true"] { display: none; }
}

/* ===== TF FINANCIAL SERVICES (page 115) - END ===== */

/* ===== TF INDUSTRY PAGES (shared) - START ===== */
/* Layout, card chrome and icon tiles only. Type + colour live on native
   Kadence block controls (see tf-ind-page.build.txt / memory 18017).
   Icons: /wp-content/uploads/tf-ind-icons/  (7 files, md5 + geometry verified) */

.tf-ind .tf-ind-chal .kt-inside-inner-col,
.tf-ind .tf-ind-pill .kt-inside-inner-col,
.tf-ind .tf-ind-browser .kt-inside-inner-col,
.tf-ind .tf-ind-statcard .kt-inside-inner-col { opacity: 1; }

/* ---------- 0. HERO ---------- */
/* The mockup's grid floor and cyan glow were a raster PNG + two overlay divs.
   Both are reproduced in CSS so no extra image is needed. Grid sits on the row's
   ::after, glow on ::before, both behind the content (z-index 0 vs 1). */
.tf-ind.tf-ind-hero-row { position: relative; overflow: hidden; }
.tf-ind.tf-ind-hero-row::before,
.tf-ind.tf-ind-hero-row::after {
  content: ""; position: absolute; pointer-events: none; z-index: 0;
}
/* single radial cyan glow - the design contract allows one per page */
.tf-ind.tf-ind-hero-row::before {
  left: -10%; top: -20%; width: 70%; height: 120%;
  background: radial-gradient(ellipse 55% 55% at 40% 45%, rgba(0,181,230,.16) 0%, transparent 68%);
}
/* perspective grid floor, fading out upward */
.tf-ind.tf-ind-hero-row::after {
  left: -25%; right: -25%; bottom: -60px; height: 300px;
  background-image:
    repeating-linear-gradient(90deg, rgba(120,190,255,.10) 0 1px, transparent 1px 68px),
    repeating-linear-gradient(0deg,  rgba(120,190,255,.10) 0 1px, transparent 1px 44px);
  transform: perspective(340px) rotateX(62deg);
  transform-origin: bottom center;
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 55%, #000 100%);
          mask-image: linear-gradient(180deg, transparent 0%, #000 55%, #000 100%);
}
.tf-ind .tf-ind-herocol { position: relative; z-index: 1; }
.tf-ind .tf-ind-heroh1  { max-width: 880px; }
.tf-ind .tf-ind-herosub { max-width: 680px; }
/* breadcrumb sits above the eyebrow, muted */
.tf-ind .tf-ind-herocol .rank-math-breadcrumb {
  font-size: 12px; font-weight: 600; margin-bottom: 22px;
}
.tf-ind .tf-ind-herocol .rank-math-breadcrumb,
.tf-ind .tf-ind-herocol .rank-math-breadcrumb a { color: rgba(255,255,255,.55); }
.tf-ind .tf-ind-herocol .rank-math-breadcrumb a:hover { color: #34c6ef; }
.tf-ind .tf-ind-herocol .rank-math-breadcrumb .last { color: #34c6ef; }
/* eyebrow with the gradient icon tile */
.tf-ind .tf-ind-heroeyebrow {
  padding-left: 68px; position: relative; min-height: 54px;
  display: flex; align-items: center;
}
.tf-ind .tf-ind-heroeyebrow::before {
  content: ""; position: absolute; left: 0; top: 0;
  width: 54px; height: 54px; border-radius: 13px; opacity: 1;
  background-color: #04529a;
  background-image: var(--tfi-heroico), linear-gradient(150deg, #04529a 0%, #00b5e6 140%);
  background-repeat: no-repeat, no-repeat;
  background-position: center, center;
  background-size: 27px 27px, cover;
  box-shadow: 0 6px 18px rgba(0,181,230,.28);
}

/* ---------- 1. TRUSTED BY / LOGO ROW ---------- */
.tf-ind .tf-ind-trustlabel { margin-bottom: 26px !important; }
/* Continuous logo carousel. The column's OUTER div is the viewport (clips +
   fades the edges); its .kt-inside-inner-col is the track. The track holds the
   8 logos twice and slides -50%, so the loop is seamless with no JS.
   Duration scales with the set so speed stays even if logos are added. */
@keyframes tf-ind-logo-scroll {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}
.tf-ind .tf-ind-logorow {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.tf-ind .tf-ind-logorow > .kt-inside-inner-col {
  /* flex-direction MUST be declared. Kadence's column block defaults an unset
     `direction` attribute to 'vertical' and emits flex-direction:column on
     .kt-inside-inner-col, which stacks the track. Specificity here is (0,3,1)
     vs Kadence's (0,2,1), so no !important is needed - it just has to be said. */
  display: flex; flex-direction: row; flex-wrap: nowrap;
  align-items: center; width: max-content;
  animation: tf-ind-logo-scroll 60s linear infinite;
  will-change: transform;
}
/* pause on hover / keyboard focus so a reader can settle on a logo */
.tf-ind .tf-ind-logorow:hover > .kt-inside-inner-col,
.tf-ind .tf-ind-logorow:focus-within > .kt-inside-inner-col {
  animation-play-state: paused;
}
/* Smaller marks + tighter spacing so roughly 10 logos are on screen at once
   (was about 5 at 30px tall with 64px margins).
   SPEED NOTE: the 60s above is the LOOP PERIOD, not the perceived speed. The
   animation moves the track -50% (2 of the 4 logo sets, ~1860px at desktop),
   so 60s is ~31px/second - the calm, readable band for a trust bar. The old 28s
   was ~60px/s, which read as hurried. To retune, hold the ratio:
   duration = half-track width / target px per second. */
.tf-ind .tf-ind-logorow figure.tf-ind-logo {
  flex: 0 0 auto; margin: 0 clamp(14px, 2vw, 28px);
}
.tf-ind .tf-ind-logorow figure.tf-ind-logo img {
  height: clamp(15px, 1.6vw, 21px); width: auto; max-width: none;
  object-fit: contain; opacity: .72; display: block;
}

/* ---------- 2. CHALLENGE CARDS ---------- */
.tf-ind .tf-ind-chalgrid { margin-top: 44px; }
.tf-ind .tf-ind-chal > .kt-inside-inner-col {
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 13px;
  padding: 30px 30px 28px;
  box-shadow: 0 1px 3px rgba(1,16,36,.08), 0 1px 2px rgba(1,16,36,.05);
  height: 100%;
}
.tf-ind .tf-ind-clabel,
.tf-ind .tf-ind-ctext,
.tf-ind .tf-ind-slabel,
.tf-ind .tf-ind-stext { padding-left: 37px; position: relative; }
.tf-ind .tf-ind-clabel::before,
.tf-ind .tf-ind-slabel::before {
  content: ""; position: absolute; left: 0; width: 24px; height: 24px;
  background-repeat: no-repeat; background-position: center; background-size: contain;
}
.tf-ind .tf-ind-clabel::before {
  top: -2px; background-image: url(/wp-content/uploads/tf-ind-icons/ind-alert.svg);
}
/* hairline divider between the problem and the answer */
.tf-ind .tf-ind-slabel {
  margin-top: 20px !important; padding-top: 19px;
  border-top: 1px solid #e2e6ee;
}
.tf-ind .tf-ind-slabel::before {
  top: 17px; background-image: url(/wp-content/uploads/tf-ind-icons/ind-check.svg);
}

/* ---------- 3. WHY TRACKFORCE ---------- */
.tf-ind .tf-ind-platgrid { align-items: center; }
.tf-ind .tf-ind-helps { margin-top: 4px; }
.tf-ind .tf-ind-help > .kt-inside-inner-col { padding: 0 0 22px; }
.tf-ind .tf-ind-helps > .kt-row-column-wrap > .tf-ind-help:last-child > .kt-inside-inner-col { padding-bottom: 0; }
.tf-ind .tf-ind-help-t,
.tf-ind .tf-ind-help-p { padding-left: 60px; position: relative; }
.tf-ind .tf-ind-help-t::before {
  content: ""; position: absolute; left: 0; top: -2px;
  width: 44px; height: 44px; border-radius: 11px;
  background-color: #ffffff; border: 1px solid #e2e6ee;
  box-shadow: 0 1px 3px rgba(1,16,36,.08);
  background-repeat: no-repeat; background-position: center; background-size: 22px 22px;
  background-image: var(--tfi-ico);
}
.tf-ind .tf-ind-help-gps  { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-gps.svg); }
.tf-ind .tf-ind-help-doc  { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-doc.svg); }
.tf-ind .tf-ind-help-cash { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-cash.svg); }
.tf-ind .tf-ind-help-lock { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-lock.svg); }

/* browser-chrome mockup */
.tf-ind .tf-ind-browser > .kt-inside-inner-col {
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 13px;
  overflow: hidden; box-shadow: 0 28px 64px rgba(1,16,36,.18);
}
.tf-ind .tf-ind-urlbar {
  background: #f6f7fa; border-bottom: 1px solid #e2e6ee;
  padding: 11px 16px; position: relative; margin: 0 !important;
}
.tf-ind .tf-ind-urlbar::before {
  content: ""; position: absolute; left: 16px; top: 50%; margin-top: -5px;
  width: 10px; height: 10px; border-radius: 50%; background: #ff5f57;
  box-shadow: 16px 0 0 #febc2e, 32px 0 0 #28c840;
}
.tf-ind .tf-ind-urlbar .tf-ind-urlpill {
  display: inline-block; background: #ffffff; border: 1px solid #e2e6ee;
  border-radius: 8px; padding: 4px 16px; max-width: 300px;
}
.tf-ind figure.tf-ind-shot { margin: 0; }
.tf-ind figure.tf-ind-shot img { display: block; width: 100%; height: auto; }

/* ---------- 4. INDUSTRY STATISTIC (navy panel, no globe) ---------- */
.tf-ind .tf-ind-statwrap {
  border-radius: 20px;
  overflow: hidden;
}
.tf-ind .tf-ind-statcard > .kt-inside-inner-col {
  padding: clamp(32px, 4vw, 54px);
}
.tf-ind .tf-ind-statkey { color: #34c6ef; font-weight: 700; }

/* ---------- 5. COMPLIANCE STRIP ---------- */
.tf-ind .tf-ind-compgrid { align-items: center; }
.tf-ind .tf-ind-compcopy > .kt-inside-inner-col { padding-left: 68px; position: relative; }
.tf-ind .tf-ind-compcopy > .kt-inside-inner-col::before {
  content: ""; position: absolute; left: 0; top: 50%; margin-top: -26px;
  width: 52px; height: 52px; border-radius: 13px; opacity: 1;
  background-color: #ffffff; border: 1px solid #e2e6ee;
  box-shadow: 0 1px 3px rgba(1,16,36,.08);
  background-image: url(/wp-content/uploads/tf-ind-icons/ind-shield.svg);
  background-repeat: no-repeat; background-position: center; background-size: 26px 26px;
}
.tf-ind .tf-ind-pill > .kt-inside-inner-col {
  background: #ffffff; border: 1.5px solid #dde3ec; border-radius: 999px;
  padding: 11px 8px; text-align: center;
}

/* ---------- 6. FAQ ---------- */
.tf-ind .tf-ind-faqlist { margin-top: 40px; max-width: 900px; }
.tf-ind .tf-ind-faq > .kt-inside-inner-col {
  padding: 26px 0; border-top: 1px solid #e2e6ee;
}

/* ---------- 7. CTA ---------- */
.tf-ind .tf-ind-ctacol > .kt-inside-inner-col {
  max-width: 900px; margin: 0 auto; text-align: center;
}
.tf-ind .tf-ind-ctabtns { justify-content: center; }

/* per-industry hero tile icon (both classes sit on the same element) */
.tf-ind .tf-ind-heroicon-lock { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-lock-white.svg); }
.tf-ind .tf-ind-heroicon-care { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-care-white.svg); }
.tf-ind .tf-ind-heroicon-research-star { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-research-star-white.svg); }
.tf-ind .tf-ind-heroicon-people-care { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-people-care-white.svg); }
.tf-ind .tf-ind-heroicon-management { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-management-white.svg); }
.tf-ind .tf-ind-heroicon-worker { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-worker-white.svg); }
.tf-ind .tf-ind-heroicon-shield-gear { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-shield-gear-white.svg); }
.tf-ind .tf-ind-heroicon-shield { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-shield-white.svg); }
.tf-ind .tf-ind-heroicon-shrink { --tfi-heroico: url(/wp-content/uploads/tf-ind-icons/ind-shrink-white.svg); }

/* additional platform-point icon tiles */
.tf-ind .tf-ind-help-incident { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-incident.svg); }
.tf-ind .tf-ind-help-people-care { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-people-care.svg); }
.tf-ind .tf-ind-help-growth { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-growth.svg); }
.tf-ind .tf-ind-help-management { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-management.svg); }
.tf-ind .tf-ind-help-worker { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-worker.svg); }
.tf-ind .tf-ind-help-people-management { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-people-management.svg); }
.tf-ind .tf-ind-help-shrink { --tfi-ico: url(/wp-content/uploads/tf-ind-icons/ind-shrink.svg); }

/* ---------- 3b. OPTIONAL FEATURED REPORT CARD ---------- */
.tf-ind .tf-ind-repcard > .kt-row-column-wrap {
  background: linear-gradient(150deg, #011024 0%, #03417b 165%);
  border-radius: 16px; overflow: hidden; align-items: stretch;
}
.tf-ind .tf-ind-rep-imgwrap > .kt-inside-inner-col {
  background: rgba(255,255,255,.04);
  border-right: 1px solid rgba(255,255,255,.10);
  display: flex; align-items: center; justify-content: center;
  padding: clamp(20px, 2.4vw, 30px); height: 100%;
}
.tf-ind figure.tf-ind-rep-cover { margin: 0; width: 100%; }
.tf-ind figure.tf-ind-rep-cover img {
  display: block; width: 100%; max-width: 240px; height: auto; margin: 0 auto;
  border-radius: 8px; box-shadow: 0 16px 40px rgba(0,0,0,.40);
}
.tf-ind .tf-ind-rep-copy > .kt-inside-inner-col {
  padding: clamp(28px, 3.2vw, 42px) clamp(24px, 3.4vw, 44px);
  display: flex; flex-direction: column; justify-content: center; height: 100%;
}
.tf-ind .tf-ind-rep-body { max-width: 560px; }
/* both links inherit their heading colour and only differ on hover */
.tf-ind .tf-ind-rep-title a,
.tf-ind .tf-ind-rep-cta a { color: inherit; text-decoration: none; }
.tf-ind .tf-ind-rep-title a:hover,
.tf-ind .tf-ind-rep-cta a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* lime emphasis inside a testimonial (brand accent, used sparingly) */
.tf-ind .tf-ind-quote .tf-ind-hl { color: #bde72a; }

/* ---------- 4b. PROOF PANEL, TESTIMONIAL VARIANT ---------- */
.tf-ind .tf-ind-quotecard > .kt-inside-inner-col { padding: clamp(32px, 4vw, 54px); }
/* the opening quote mark is a ::before, so it costs no extra block */
.tf-ind .tf-ind-quote { position: relative; padding-top: 66px; }
.tf-ind .tf-ind-quote::before {
  content: ""; position: absolute; left: 0; top: 0; width: 44px; height: 44px;
  background: url(/wp-content/uploads/tf-ind-icons/ind-quote.svg) center/contain no-repeat;
}
/* attribution: the initials disc floats so the name and title flow beside it,
   which keeps all three as plain siblings with no wrapper block. */
.tf-ind .tf-ind-qinit {
  float: left; width: 48px; height: 48px; border-radius: 50%; background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.18);
  display: flex; align-items: center; justify-content: center;
}
.tf-ind .tf-ind-qname  { padding-top: 4px; }
.tf-ind .tf-ind-qtitle::after { content: ""; display: block; clear: both; }

/* Standards pills: healthcare uses longer labels ("Joint Commission"), so give
   every pill the same min height and let the text wrap rather than overflow. */
.tf-ind .tf-ind-pill > .kt-inside-inner-col {
  min-height: 46px; display: flex; align-items: center; justify-content: center;
}

/* ============================================================================
   ORGANIZATION-TYPE PAGES (tfo_build). Shares the .tf-ind scope.
   ========================================================================== */

/* ---------- hero: live margin card ---------- */
.tf-ind .tf-ind-oherogrid { align-items: center; }
.tf-ind .tf-ind-mcard > .kt-inside-inner-col {
  background: #ffffff; border-radius: 13px; overflow: hidden;
  box-shadow: 0 28px 64px rgba(1,16,36,.28);
  padding: 20px 22px 8px;
}
.tf-ind .tf-ind-mchead > .kt-row-column-wrap { align-items: flex-start; }
.tf-ind .tf-ind-mchead { padding-bottom: 14px; border-bottom: 1px solid #e2e6ee; margin-bottom: 4px; }
/* one contract row: name+region left, margin right, progress bar beneath it */
.tf-ind .tf-ind-crow > .kt-inside-inner-col {
  display: grid; grid-template-columns: 1fr auto; align-items: center;
  column-gap: 16px; padding: 11px 0; border-top: 1px solid #eef1f6;
}
.tf-ind .tf-ind-crows > .kt-row-column-wrap > .tf-ind-crow:first-child > .kt-inside-inner-col { border-top: 0; }
.tf-ind .tf-ind-c-site,
.tf-ind .tf-ind-c-region { grid-column: 1; }
.tf-ind .tf-ind-c-margin {
  grid-column: 2; grid-row: 1 / span 2;
  position: relative; padding-bottom: 12px; min-width: 92px;
  color: var(--tfi-mc) !important;
}
.tf-ind .tf-ind-c-margin .tf-ind-c-unit {
  font-size: 10px; font-weight: 600; color: #97a2b4;
  margin-left: 6px; letter-spacing: .02em;
}
/* track + fill on ONE ::after, so the bar needs no extra markup */
.tf-ind .tf-ind-c-margin::after {
  content: ""; position: absolute; right: 0; bottom: 2px;
  width: 92px; height: 4px; border-radius: 3px;
  background-color: #eef1f6;
  background-image: linear-gradient(90deg, var(--tfi-mc) 0 var(--tfi-mw), transparent var(--tfi-mw) 100%);
}
.tf-ind .tf-ind-crow-ok   { --tfi-mc: #1e9e6a; --tfi-mw: 88%; }
.tf-ind .tf-ind-crow-warn { --tfi-mc: #f5a623; --tfi-mw: 48%; }
.tf-ind .tf-ind-crow-bad  { --tfi-mc: #e6000f; --tfi-mw: 24%; }
/* the three healthy rows differ slightly in fill, keyed by order */
.tf-ind .tf-ind-crows > .kt-row-column-wrap > .tf-ind-crow:nth-child(2) { --tfi-mw: 76%; }
.tf-ind .tf-ind-crows > .kt-row-column-wrap > .tf-ind-crow:nth-child(3) { --tfi-mw: 80%; }

/* ---------- stat band ---------- */
.tf-ind .tf-ind-statband > .kt-row-column-wrap { align-items: start; }
.tf-ind .tf-ind-statcell > .kt-inside-inner-col { max-width: 300px; margin: 0 auto; }

/* ---------- the math of guarding ---------- */
.tf-ind .tf-ind-mathgrid { align-items: center; }
.tf-ind .tf-ind-mathp { max-width: 560px; }
.tf-ind .tf-ind-leak > .kt-inside-inner-col {
  display: grid; grid-template-columns: 62px 1fr; align-items: center; column-gap: 18px;
  background: #f6f7fa; border: 1px solid #e2e6ee; border-radius: 10px;
  padding: 18px 22px; margin-bottom: 12px;
}
.tf-ind .tf-ind-leaks > .kt-row-column-wrap > .tf-ind-leak:last-child > .kt-inside-inner-col { margin-bottom: 0; }

/* ---------- benefit grid: navy icon tile per card ---------- */
.tf-ind .tf-ind-bengrid { margin-top: 44px; }
.tf-ind .tf-ind-ben > .kt-inside-inner-col {
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 13px;
  padding: 26px 26px 24px; height: 100%;
  box-shadow: 0 1px 3px rgba(1,16,36,.06);
}
.tf-ind .tf-ind-ben-title { padding-top: 58px; position: relative; }
.tf-ind .tf-ind-ben-title::before {
  content: ""; position: absolute; left: 0; top: 0;
  width: 42px; height: 42px; border-radius: 11px; opacity: 1;
  background-color: #011024;
  background-image: var(--tfi-benico);
  background-repeat: no-repeat; background-position: center; background-size: 21px 21px;
}
.tf-ind .tf-ind-ben-growth-budget { --tfi-benico: url(/wp-content/uploads/tf-ind-icons/ind-growth-budget-white.svg); }
.tf-ind .tf-ind-ben-growth        { --tfi-benico: url(/wp-content/uploads/tf-ind-icons/ind-growth-white.svg); }
.tf-ind .tf-ind-ben-layers        { --tfi-benico: url(/wp-content/uploads/tf-ind-icons/ind-layers-white.svg); }
.tf-ind .tf-ind-ben-quality-check { --tfi-benico: url(/wp-content/uploads/tf-ind-icons/ind-quality-check-white.svg); }
.tf-ind .tf-ind-ben-growth-people { --tfi-benico: url(/wp-content/uploads/tf-ind-icons/ind-growth-people-white.svg); }
.tf-ind .tf-ind-ben-mobile        { --tfi-benico: url(/wp-content/uploads/tf-ind-icons/ind-mobile-white.svg); }

/* ---------- centred testimonial on a light ground ---------- */
.tf-ind .tf-ind-oquotecol > .kt-inside-inner-col { max-width: 860px; margin: 0 auto; }

/* ---------- 8. RESPONSIVE ---------- */
@media (max-width: 1024px) {
  .tf-ind .tf-ind-comptitle { white-space: normal; }
}
@media (max-width: 767px) {
  .tf-ind .tf-ind-heroeyebrow { padding-left: 0; min-height: 0; display: block; }
  .tf-ind .tf-ind-heroeyebrow::before {
    position: relative; width: 46px; height: 46px; margin-bottom: 14px; display: block;
    background-size: 23px 23px, cover;
  }
  .tf-ind.tf-ind-hero-row::after { display: none; }
  .tf-ind .tf-ind-herobtns .kb-btn-wrap,
  .tf-ind .tf-ind-herobtns .wp-block-kadence-singlebtn { width: 100%; }
  .tf-ind .tf-ind-chal > .kt-inside-inner-col { padding: 24px 22px 22px; }
  /* organization-type sections */
  .tf-ind .tf-ind-mcard > .kt-inside-inner-col { padding: 16px 16px 6px; }
  .tf-ind .tf-ind-c-margin { min-width: 74px; }
  .tf-ind .tf-ind-c-margin::after { width: 74px; }
  .tf-ind .tf-ind-leak > .kt-inside-inner-col { grid-template-columns: 48px 1fr; column-gap: 14px; padding: 15px 16px; }
  .tf-ind .tf-ind-ben > .kt-inside-inner-col { padding: 22px 20px 20px; }
  .tf-ind .tf-ind-statcell > .kt-inside-inner-col { max-width: none; }
  /* no mobile margin override needed - the base clamp already floors at 14px */
  .tf-ind .tf-ind-compcopy > .kt-inside-inner-col {
    padding-left: 0; padding-bottom: 18px; text-align: center;
  }
  .tf-ind .tf-ind-compcopy > .kt-inside-inner-col::before {
    position: relative; left: auto; top: auto; margin: 0 auto 12px; display: block;
  }
  .tf-ind .tf-ind-comptitle,
  .tf-ind .tf-ind-complabel { text-align: center; }
  .tf-ind .tf-ind-statwrap {
    border-radius: 14px;
  }
  .tf-ind .tf-ind-quote { padding-top: 52px; }
  .tf-ind .tf-ind-quote::before { width: 36px; height: 36px; }
  .tf-ind .tf-ind-ctabtns .kb-btn-wrap,
  .tf-ind .tf-ind-ctabtns .wp-block-kadence-singlebtn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .tf-ind * { animation: none !important; transition: none !important; }
  /* Freezing the track mid-slide would show a half-empty row, so fall back to a
     static centred row and drop the duplicated half. */
  .tf-ind .tf-ind-logorow {
    -webkit-mask-image: none; mask-image: none; overflow: visible;
  }
  .tf-ind .tf-ind-logorow > .kt-inside-inner-col {
    flex-wrap: wrap; justify-content: center; width: auto;
    transform: none !important; row-gap: 22px;
  }
  .tf-ind .tf-ind-logorow figure.tf-ind-logo[aria-hidden="true"] { display: none; }
}

/* ===== TF INDUSTRY PAGES (shared) - END ===== */

/* ===== TF SUPPORT HELP CENTER (.tf-sup) - START ===== */
/* Layout + card chrome only. Type and colour live on native Kadence block controls.
   Rows carry BOTH .tf-sup and .tf-sup-*-row, so row-level rules must be compound.
   Rewritten lean after the channel / self-service / topic / article / availability bands
   were removed - only the two card grids remain.

   Two Kadence behaviours drive several rules below:
   1. display:flex is only set on .kt-inside-inner-col for valign middle/bottom rows. Ours
      are valign-top, so we declare the flex column ourselves or margin-top:auto is inert.
   2. Per-block inline CSS uses .kt-adv-heading<uid>[data-kb-block="..."] = (0,3,0), which
      outranks a plain two-class rule. Anything it also sets needs !important here. */

/* ---------- HERO ---------- */
.tf-sup.tf-sup-hero-row { scroll-margin-top: 90px; }
.tf-sup .tf-sup-heropill {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.10); border: 1px solid rgba(0,181,230,.28);
  border-radius: 999px; padding: 6px 16px;
}
.tf-sup .tf-sup-heroh1 .tf-sup-hl { color: #34c6ef; }
.tf-sup .tf-sup-herosub { max-width: 660px; }

/* ---------- STAT BAND ---------- */
.tf-sup.tf-sup-stats-row { border-bottom: 1px solid #e2e6ee; }

/* ---------- SECTION INTRO ---------- */
.tf-sup.tf-sup-chan-row,
.tf-sup.tf-sup-hc-row { scroll-margin-top: 90px; }
/* Centred without depending on margin:auto - a full-width block with centred text is
   centred whatever Kadence does to the margins. */
.tf-sup .tf-sup-lead {
  max-width: none !important;
  margin-left: auto !important; margin-right: auto !important;
  text-align: center !important;
}
.tf-sup .tf-sup-lead a { color: #1471c9; text-decoration: underline; }
.tf-sup .tf-sup-lead a:hover { color: #00b5e6; }

/* ---------- GRIDS: row gap + equal height ---------- */
/* Kadence derives row-gap from the gutter PRESET, so columnGutter:'custom' sets column-gap
   only and row-gap falls back to md (32px). customRowGutter does not drive the desktop grid. */
.tf-sup .tf-sup-platgrid > .kt-row-column-wrap,
.tf-sup .tf-sup-hcgrid > .kt-row-column-wrap { row-gap: 26px; }
.tf-sup .tf-sup-platgrid > .kt-row-column-wrap > .wp-block-kadence-column,
.tf-sup .tf-sup-hcgrid > .kt-row-column-wrap > .wp-block-kadence-column {
  align-self: stretch; height: 100%;
}
.tf-sup .tf-sup-plat > .kt-inside-inner-col,
.tf-sup .tf-sup-hc > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
}

/* ---------- PRODUCT SUPPORT CHANNEL CARDS ---------- */
.tf-sup .tf-sup-plat > .kt-inside-inner-col {
  background: #ffffff; border: 1.5px solid #e2e6ee; border-radius: 13px; padding: 24px;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
  transition: border-color .18s ease-out, box-shadow .18s ease-out, transform .18s ease-out;
}
.tf-sup .tf-sup-platlogo { margin: 0 0 14px 0; height: 50px; display: flex; align-items: center; }
.tf-sup .tf-sup-platlogo img { max-height: 28px; width: auto; max-width: 230px; display: block; }
/* Silvertrac is a PNG whose canvas is 281px tall while its wordmark is only 163px of that -
   the orange corner brackets fill the rest. Scale by 281/163 so wordmark heights match. */
.tf-sup .tf-sup-logo-silvertrac img { max-height: 48px; max-width: 200px; }

/* labelled contact rows, stacked label-over-value as the contact page presents them */
.tf-sup .tf-sup-platrows { margin-bottom: 18px !important; }
.tf-sup .tf-sup-platrows .k {
  display: block; margin-top: 13px;
  font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
  color: #97a2b4;
}
.tf-sup .tf-sup-platrows .k:first-child { margin-top: 0; }
.tf-sup .tf-sup-platrows .v { display: block; margin-top: 2px; }
.tf-sup .tf-sup-platrows .v a { color: #1471c9; text-decoration: none; overflow-wrap: anywhere; }
.tf-sup .tf-sup-platrows .v a:hover { color: #00b5e6; text-decoration: underline; }

/* hours pinned to the bottom of the card, divider aligned across all three */
.tf-sup .tf-sup-hourslbl {
  margin-top: auto !important; padding-top: 14px; border-top: 1px solid #eef1f6; width: 100%;
}
.tf-sup .tf-sup-plathours { width: 100%; }

/* ---------- TRACKTIK HELP CENTER CARDS ---------- */
.tf-sup .tf-sup-hc > .kt-inside-inner-col {
  background: #ffffff; border: 1.5px solid #e2e6ee; border-radius: 13px; overflow: hidden;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
  transition: border-color .18s ease-out, box-shadow .18s ease-out, transform .18s ease-out;
}
.tf-sup .tf-sup-hc > .kt-inside-inner-col:hover {
  border-color: #00b5e6; box-shadow: 0 12px 30px rgba(1,16,36,.12); transform: translateY(-2px);
}
/* the six source images are not a single aspect ratio (768x518, 1432x1057, 2548x1443), so
   pin a ratio and crop rather than letting card heights disagree */
.tf-sup .tf-sup-hcimg { margin: 0 0 18px 0; width: 100%; }
.tf-sup .tf-sup-hcimg img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 768 / 518; object-fit: cover; object-position: center;
}
.tf-sup .tf-sup-hctitle { padding: 0 22px; }
.tf-sup .tf-sup-hctitle a { color: inherit; text-decoration: none; }
.tf-sup .tf-sup-hctitle a:hover { color: #1471c9; }
.tf-sup .tf-sup-hccta { margin-top: auto !important; padding: 0 22px 22px; }
.tf-sup .tf-sup-hccta a { color: #1471c9; text-decoration: none; }
.tf-sup .tf-sup-hccta a::after { content: " \2192"; }
.tf-sup .tf-sup-hccta a:hover { color: #00b5e6; }

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  .tf-sup .tf-sup-platlogo { height: 44px; }
  .tf-sup .tf-sup-platlogo img { max-height: 25px; max-width: 200px; }
  .tf-sup .tf-sup-logo-silvertrac img { max-height: 43px; max-width: 175px; }
  .tf-sup .tf-sup-plat > .kt-inside-inner-col { padding: 20px; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .tf-sup .tf-sup-platlogo { height: 42px; }
  .tf-sup .tf-sup-platlogo img { max-height: 24px; max-width: 200px; }
  .tf-sup .tf-sup-logo-silvertrac img { max-height: 41px; max-width: 170px; }
  .tf-sup .tf-sup-herosub { max-width: none; }
  .tf-sup .tf-sup-h2lead { margin-bottom: 12px !important; }
  .tf-sup .tf-sup-lead { margin-bottom: 26px !important; }
  .tf-sup .tf-sup-hcimg { margin-bottom: 16px; }
  .tf-sup .tf-sup-hctitle { padding: 0 18px; }
  .tf-sup .tf-sup-hccta { padding: 0 18px 18px; }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  .tf-sup .tf-sup-plat > .kt-inside-inner-col,
  .tf-sup .tf-sup-hc > .kt-inside-inner-col { transition: none; }
  .tf-sup .tf-sup-hc > .kt-inside-inner-col:hover { transform: none; }
}

/* ===== TF SUPPORT HELP CENTER (.tf-sup) - END ===== */

/* ===== TF SUPPORT OVERVIEW (.sov) - START ===== */
/* Page 1721, /support/. Layout + card chrome only; type and colour sit on native Kadence
   block controls. Rows carry BOTH .sov and .page-* so row rules must be compound.
   The dotted-globe background from the source is not imported or recreated: the hero keeps
   the existing navy plus a cyan radial wash, and the CTA the palette navy-to-blue gradient.

   Two Kadence behaviours to know:
   1. display:flex is only set on .kt-inside-inner-col for valign middle/bottom rows. Ours are
      valign-top, so declare the flex column here or margin-top:auto is inert.
   2. Per-block inline CSS uses .kt-adv-heading<uid>[data-kb-block] = (0,3,0) and outranks a
      two-class rule, so anything it also sets needs !important. */

/* ---------- HERO ---------- */
/* The cyan wash goes on ::after, NOT on background-image. Kadence emits the row's
   navy-to-blue gradient as
     .kb-row-layout-id<uid>{background-image:linear-gradient(90deg,#011024 49%,#042d63 100%)}
   at specificity (0,1,0). A .sov.page-hero background-image rule is (0,2,0) and REPLACES it
   outright, leaving only the near-black bgColor - the hero loses its blue entirely.
   ::after layers over the gradient instead and keeps the row editable in Gutenberg.
   Same approach as .tf-ind.tf-ind-hero-row::after on the industry pages. */
.sov.page-hero { position: relative; }
.sov.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 70% 70% at 25% 40%, rgba(0,181,230,.16) 0%, transparent 70%);
}
.sov.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.sov .sov-heropill {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.10); border: 1px solid rgba(0,181,230,.28);
  border-radius: 999px; padding: 6px 16px;
}
.sov .sov-heroh1 { max-width: 880px; }
.sov .sov-heroh1 .sov-hl { color: #34c6ef; }
.sov .sov-herosub { max-width: 660px; }

/* ---------- STAT BAND ---------- */
.sov.page-statistics { border-bottom: 1px solid #e2e6ee; }

/* ---------- SUCCESS PATH: intro ---------- */
.sov.page-success-paths { scroll-margin-top: 90px; }
/* full-width block + centred text, so centring never depends on winning a margin fight */
.sov .sov-lead {
  max-width: 640px;
  margin-left: auto !important; margin-right: auto !important;
  text-align: center !important;
}

/* ---------- SUCCESS PATH: the four cards ---------- */
.sov .sov-cardgrid > .kt-row-column-wrap { row-gap: 20px; }
.sov .sov-cardgrid > .kt-row-column-wrap > .wp-block-kadence-column {
  align-self: stretch; height: 100%;
}
.sov .sov-card > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
  background: #ffffff; border: 1.5px solid #e2e6ee; border-radius: 14px; padding: 30px;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
  transition: border-color .18s ease-out, box-shadow .18s ease-out, transform .18s ease-out;
}
.sov .sov-card > .kt-inside-inner-col:hover {
  border-color: #00b5e6; box-shadow: 0 14px 34px rgba(1,16,36,.13); transform: translateY(-3px);
}

/* step row: 52px navy icon tile beside the STEP NN label, built from the label's ::before
   so the pair costs one block instead of a nested row */
.sov .sov-step { display: flex; align-items: center; gap: 16px; }
.sov .sov-step::before {
  content: ""; flex: none; width: 52px; height: 52px; border-radius: 13px;
  background-color: #011024;
  background-image: linear-gradient(145deg, #011024 0%, #04529a 130%);
  box-shadow: 0 10px 22px rgba(1,16,36,.22);
  background-repeat: no-repeat; background-position: center; background-size: 28px 28px, cover;
}
.sov .sov-step-implement::before { background-image: url("/wp-content/uploads/tf-sov-icons/sov-implement-white.svg"), linear-gradient(145deg,#011024 0%,#04529a 130%); }
.sov .sov-step-grow::before      { background-image: url("/wp-content/uploads/tf-sov-icons/sov-grow-white.svg"),      linear-gradient(145deg,#011024 0%,#04529a 130%); }
.sov .sov-step-learn::before     { background-image: url("/wp-content/uploads/tf-sov-icons/sov-learn-white.svg"),     linear-gradient(145deg,#011024 0%,#04529a 130%); }
.sov .sov-step-resolve::before   { background-image: url("/wp-content/uploads/tf-sov-icons/sov-resolve-white.svg"),   linear-gradient(145deg,#011024 0%,#04529a 130%); }

.sov .sov-cardt a { color: inherit; text-decoration: none; }
.sov .sov-cardt a:hover { color: #1471c9; }
.sov .sov-ticks { margin-top: 0; }

/* card footer: pill badge left, link right, pinned to the bottom of the card */
.sov .sov-cardfoot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  margin-top: auto !important;
}
.sov .sov-cardfoot .pill {
  font-size: 11.5px; font-weight: 700; color: #1471c9;
  background: rgba(20,140,252,.07); border-radius: 999px; padding: 5px 14px;
}
.sov .sov-cardfoot a { color: #1471c9; text-decoration: none; white-space: nowrap; }
.sov .sov-cardfoot a::after { content: " \2192"; }
.sov .sov-cardfoot a:hover { color: #00b5e6; text-decoration: underline; }

/* ---------- CLOSING CTA ---------- */
/* !important is load-bearing - Kadence emits margin-left/right:0px per advancedheading at
   (0,3,0), which would pin this max-width box left and throw the centring off. */
.sov .sov-h2navy, .sov .sov-ctalead {
  max-width: 720px;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  .sov .sov-card > .kt-inside-inner-col { padding: 26px; }
  .sov .sov-step { gap: 14px; }
  .sov .sov-step::before { width: 46px; height: 46px; background-size: 25px 25px, cover; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .sov .sov-card > .kt-inside-inner-col { padding: 22px; }
  .sov .sov-step::before { width: 44px; height: 44px; background-size: 24px 24px, cover; }
  .sov .sov-heroh1, .sov .sov-herosub { max-width: none; }
  .sov .sov-lead { margin-bottom: 32px !important; }
  /* stack the footer so the badge and link both keep a comfortable tap target */
  .sov .sov-cardfoot { flex-direction: column; align-items: flex-start; gap: 14px; }
  .sov .sov-cardfoot a { white-space: normal; }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  .sov .sov-card > .kt-inside-inner-col { transition: none; }
  .sov .sov-card > .kt-inside-inner-col:hover { transform: none; }
}

/* ===== TF SUPPORT OVERVIEW (.sov) - END ===== */

/* ===== TF PROFESSIONAL SERVICES (.ps) - START ===== */
/* Page 14674, /support/professional-services/. Layout + card chrome only; type and colour
   sit on native Kadence block controls. Rows carry BOTH .ps and .page-*, so row-level rules
   are compound. No globe in this source, so nothing to rebalance: the hero decoration is the
   design's own cyan grid + radial glow, reproduced with CSS gradients on ::before/::after.

   Two Kadence behaviours drive several rules:
   1. display:flex is only set on .kt-inside-inner-col for valign middle/bottom rows. Ours are
      valign-top, so declare the flex column or margin-top:auto is inert.
   2. Never set background-image on a row - Kadence emits the row's own gradient there at
      (0,1,0) and a two-class rule would REPLACE it. Decoration goes on a pseudo-element. */

/* ---------- HERO: cyan grid + glow, no imagery ---------- */
.ps.page-hero { position: relative; overflow: hidden; }
.ps.page-hero::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(0,181,230,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,181,230,.06) 1px, transparent 1px);
  background-size: 56px 56px, 56px 56px;
  -webkit-mask-image: radial-gradient(ellipse 82% 92% at 80% 42%, #000 0%, transparent 72%);
  mask-image: radial-gradient(ellipse 82% 92% at 80% 42%, #000 0%, transparent 72%);
}
.ps.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 55% 65% at 80% 40%, rgba(0,181,230,.16) 0%, transparent 62%);
}
.ps.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.ps .ps-heropill {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.10); border: 1px solid rgba(0,181,230,.28);
  border-radius: 999px; padding: 6px 16px;
}
.ps .ps-heroh1 { max-width: 780px; }
.ps .ps-herosub { max-width: 620px; }

/* ---------- STAT BAND ---------- */
.ps.page-statistics { border-bottom: 1px solid #e2e6ee; }

/* ---------- SHARED GRID BEHAVIOUR ---------- */
/* Kadence derives row-gap from the gutter PRESET, so columnGutter:'custom' sets column-gap
   only and row-gap falls back to md (32px). Set it here. */
.ps .ps-featgrid > .kt-row-column-wrap,
.ps .ps-phasegrid > .kt-row-column-wrap,
.ps .ps-supgrid > .kt-row-column-wrap { row-gap: 20px; }
.ps .ps-featgrid > .kt-row-column-wrap > .wp-block-kadence-column,
.ps .ps-phasegrid > .kt-row-column-wrap > .wp-block-kadence-column,
.ps .ps-supgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.ps .ps-feat > .kt-inside-inner-col,
.ps .ps-phase > .kt-inside-inner-col,
.ps .ps-sup > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
  background: #ffffff; border: 1.5px solid #dde3ec; border-radius: 13px;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
  transition: border-color .18s ease-out, box-shadow .18s ease-out, transform .18s ease-out;
}
.ps .ps-feat > .kt-inside-inner-col:hover,
.ps .ps-phase > .kt-inside-inner-col:hover,
.ps .ps-sup > .kt-inside-inner-col:hover {
  border-color: #00b5e6; box-shadow: 0 12px 30px rgba(1,16,36,.12); transform: translateY(-2px);
}

/* ---------- WHAT'S INCLUDED: icon tile to the LEFT of the copy ---------- */
.ps .ps-feat > .kt-inside-inner-col { position: relative; padding: 26px 26px 26px 96px; }
.ps .ps-feath3::before {
  content: ""; position: absolute; left: 26px; top: 26px;
  width: 52px; height: 52px; border-radius: 13px;
  background-color: #011024;
  background-repeat: no-repeat; background-position: center; background-size: 28px 28px, cover;
  box-shadow: 0 10px 22px rgba(1,16,36,.22);
}
.ps .ps-ico-management::before    { background-image: url("/wp-content/uploads/tf-ps-icons/ps-management-white.svg"),    linear-gradient(145deg,#011024 0%,#04529a 130%); }
.ps .ps-ico-data::before          { background-image: url("/wp-content/uploads/tf-ps-icons/ps-data-white.svg"),          linear-gradient(145deg,#011024 0%,#04529a 130%); }
.ps .ps-ico-people-hr::before     { background-image: url("/wp-content/uploads/tf-ps-icons/ps-people-hr-white.svg"),     linear-gradient(145deg,#011024 0%,#04529a 130%); }
.ps .ps-ico-quality-check::before { background-image: url("/wp-content/uploads/tf-ps-icons/ps-quality-check-white.svg"), linear-gradient(145deg,#011024 0%,#04529a 130%); }

/* ---------- IMPLEMENTATION JOURNEY ---------- */
/* Node rail: numbered circles on a gradient line. Decorative - the "Phase 01" labels in the
   cards carry the same sequence, so the rail is hidden once the cards stop being 4-across. */
.ps .ps-rail { position: relative; margin-bottom: 18px; }
.ps .ps-rail::before {
  content: ""; position: absolute; top: 50%; left: 12.5%; right: 12.5%; height: 3px;
  transform: translateY(-50%); border-radius: 3px;
  background: linear-gradient(90deg, #00b5e6, #04529a);
}
.ps .ps-nodecol > .kt-inside-inner-col { align-items: center; }
.ps .ps-node {
  position: relative; z-index: 1;
  width: 38px; height: 38px; border-radius: 999px;
  display: flex; align-items: center; justify-content: center;
  background: #ffffff; border: 2px solid #00b5e6;
  margin-left: auto !important; margin-right: auto !important;
}
.ps .ps-phase > .kt-inside-inner-col { padding: 24px 20px; }
.ps .ps-phasewk { margin-top: auto !important; }
.ps .ps-phasewk .wk {
  display: inline-block; background: rgba(20,140,252,.07);
  border-radius: 999px; padding: 5px 14px;
}

/* ---------- SWITCHING IS HANDLED ---------- */
.ps .ps-h2navy, .ps .ps-migbody { max-width: 460px; }
.ps .ps-pilllist { display: flex; flex-wrap: wrap; gap: 10px; }
.ps .ps-pilllist .pill {
  display: inline-flex; align-items: center; gap: 9px;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.10);
  border-radius: 8px; padding: 9px 14px; color: rgba(255,255,255,.85);
}
.ps .ps-pilllist .pill::before {
  content: ""; width: 18px; height: 18px; flex: none;
  background-repeat: no-repeat; background-position: center; background-size: contain;
}
.ps .ps-pi-data::before             { background-image: url("/wp-content/uploads/tf-ps-icons/ps-data-white.svg"); }
.ps .ps-pi-layers::before           { background-image: url("/wp-content/uploads/tf-ps-icons/ps-layers-white.svg"); }
.ps .ps-pi-protection-check::before { background-image: url("/wp-content/uploads/tf-ps-icons/ps-protection-check-white.svg"); }

/* quote card: cyan top bar painted as a background layer, not a pseudo-element */
.ps .ps-quotecard > .kt-inside-inner-col {
  background-color: rgba(255,255,255,.04);
  background-image: linear-gradient(90deg, #00b5e6, #148cfc);
  background-size: 100% 3px; background-position: top left; background-repeat: no-repeat;
  border: 1px solid rgba(255,255,255,.12); border-radius: 14px; padding: 34px;
}
.ps .ps-qattr { padding-bottom: 24px; border-bottom: 1px solid rgba(255,255,255,.12); }
.ps .ps-qfigs { display: flex; flex-wrap: wrap; gap: 44px; margin-top: 24px !important; }
.ps .ps-qfigs .fig { display: block; }
.ps .ps-qfigs .v {
  display: block; font-size: 26px; font-weight: 700; letter-spacing: -.03em;
  color: #34c6ef; line-height: 1.1; margin-bottom: 4px;
}
.ps .ps-qfigs .l { display: block; }

/* ---------- GO-LIVE IS JUST THE BEGINNING ---------- */
.ps .ps-sup > .kt-inside-inner-col { padding: 26px; }
.ps .ps-suph3::before {
  content: ""; display: block; margin-bottom: 16px;
  width: 46px; height: 46px; border-radius: 11px;
  background-color: rgba(20,140,252,.08);
  background-repeat: no-repeat; background-position: center; background-size: 25px 25px;
}
.ps .ps-sico-quality-check::before   { background-image: url("/wp-content/uploads/tf-ps-icons/ps-quality-check-blue.svg"); }
.ps .ps-sico-desktop::before         { background-image: url("/wp-content/uploads/tf-ps-icons/ps-desktop-blue.svg"); }
.ps .ps-sico-chat-management::before { background-image: url("/wp-content/uploads/tf-ps-icons/ps-chat-management-blue.svg"); }
.ps .ps-suplink { margin-top: auto !important; }
.ps .ps-suplink a { color: #1471c9; text-decoration: none; }
.ps .ps-suplink a::after { content: " \2192"; }
.ps .ps-suplink a:hover { color: #00b5e6; text-decoration: underline; }

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  /* cards drop to 2-across, so the 4-node rail no longer lines up with them */
  .ps .ps-rail { display: none; }
  .ps .ps-feat > .kt-inside-inner-col { padding: 22px 22px 22px 88px; }
  .ps .ps-feath3::before { left: 22px; top: 22px; width: 48px; height: 48px; background-size: 26px 26px, cover; }
  .ps .ps-qfigs { gap: 32px; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  /* icon tile moves above the copy so the text keeps a usable measure */
  .ps .ps-feat > .kt-inside-inner-col { padding: 22px; }
  .ps .ps-feath3::before { position: static; display: block; margin-bottom: 14px; width: 46px; height: 46px; background-size: 25px 25px, cover; }
  .ps .ps-heroh1, .ps .ps-herosub, .ps .ps-h2navy, .ps .ps-migbody { max-width: none; }
  .ps .ps-quotecard > .kt-inside-inner-col { padding: 24px; }
  .ps .ps-qfigs { gap: 22px; }
  .ps .ps-qfigs .v { font-size: 22px; }
  .ps .ps-sup > .kt-inside-inner-col,
  .ps .ps-phase > .kt-inside-inner-col { padding: 22px; }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  .ps .ps-feat > .kt-inside-inner-col,
  .ps .ps-phase > .kt-inside-inner-col,
  .ps .ps-sup > .kt-inside-inner-col { transition: none; }
  .ps .ps-feat > .kt-inside-inner-col:hover,
  .ps .ps-phase > .kt-inside-inner-col:hover,
  .ps .ps-sup > .kt-inside-inner-col:hover { transform: none; }
}

/* ===== TF PROFESSIONAL SERVICES (.ps) - END ===== */

/* ===== TF TRUST & COMPLIANCE (.tr) - START ===== */
/* Page 1731, /company/trust/. Layout + card chrome only; type and colour sit on native
   Kadence block controls. Rows carry BOTH .tr and .page-*, so row rules are compound.

   The source painted a dotted globe behind the hero, the data-security band and the CTA.
   It is not imported and not recreated - the hero keeps the existing navy plus the design's
   own cyan radial wash on ::after, and the CTA the palette navy-to-blue gradient.

   Two Kadence behaviours drive rules below:
   1. display:flex is only set on .kt-inside-inner-col for valign middle/bottom rows.
   2. NEVER set background-image on a row - Kadence emits the row's own gradient there at
      (0,1,0) and a two-class rule REPLACES it, killing the hero's blue. Use a pseudo-element. */

/* ---------- HERO ---------- */
.tr.page-hero { position: relative; overflow: hidden; }
.tr.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 65% 70% at 28% 45%, rgba(0,181,230,.14) 0%, transparent 70%);
}
.tr.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.tr .tr-heropill {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.10); border: 1px solid rgba(0,181,230,.28);
  border-radius: 999px; padding: 6px 16px;
}
.tr .tr-heroh1 { max-width: 760px; }
.tr .tr-heroh1 .tr-hl { color: #34c6ef; }
.tr .tr-herosub { max-width: 640px; }

/* hero badge pills: brand shield-check glyph, cyan (used in Trust hero, post 1731) */
.tr-badges { display: flex; flex-wrap: wrap; gap: 10px; }
.tr-badges .badge {
  display: inline-flex; align-items: center; gap: 8px;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14);
  border-radius: 999px; padding: 8px 16px; color: rgba(255,255,255,.9);
  font-size: 13px; font-weight: 600; line-height: 1.3;
}
.tr-badges .badge::before {
  content: ""; width: 15px; height: 15px; flex: none;
  background: url("/wp-content/uploads/tf-tr-icons/tr-shield-check-cyan.svg") center/contain no-repeat;
}
@media (max-width: 767px) {
  .tr-badges { justify-content: center; }
}

/* ---------- CERTIFICATION CARDS ---------- */
/* 7 cards in a 3-track grid, so the last row holds one card. Kadence derives row-gap from
   the gutter PRESET, so columnGutter:'custom' sets column-gap only - set row-gap here. */
.tr .tr-certgrid > .kt-row-column-wrap { row-gap: 20px; }
.tr .tr-certgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.tr .tr-cert > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
  background: #ffffff; border: 1.5px solid #dde3ec; border-radius: 14px; padding: 26px;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
}
/* fixed logo band so the seven differently-shaped logos share a baseline and the card
   titles line up across a row */
.tr .tr-certlogo {
  margin: 0 0 18px 0; height: 96px; width: 100%;
  display: flex; align-items: center; justify-content: flex-start;
}
.tr .tr-certlogo img {
  max-height: 96px; max-width: 130px; width: auto; height: auto;
  object-fit: contain; display: block;
}
.tr .tr-certp { margin-top: auto !important; }

/* ---------- 01 DATA SECURITY / 02 APPLICATION SECURITY ---------- */
.tr .tr-dsbody, .tr .tr-asbody { max-width: 520px; }
.tr .tr-shot { margin: 0; }
.tr .tr-shot img {
  display: block; width: 100%; height: auto;
  border-radius: 16px; border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 24px 60px rgba(1,16,36,.5);
}
.tr .tr-shot-light img {
  border: 1.5px solid #dde3ec; background: #f5f7fa;
  box-shadow: 0 12px 34px rgba(1,16,36,.10);
}
/* the app-security screenshot sits left of its copy on desktop, but must come AFTER the
   heading once stacked, so a screen reader and a phone both read heading then image */
@media (max-width: 1024px) {
  .tr .tr-asgrid > .kt-row-column-wrap { display: flex; flex-direction: column; }
  .tr .tr-asgrid .tr-asleft { order: 2; }
  .tr .tr-asgrid .tr-asright { order: 1; }
}

/* ---------- 03 + 04 STANDARDS CARDS ---------- */
.tr .tr-stdgrid > .kt-row-column-wrap { row-gap: 24px; }
.tr .tr-stdgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.tr .tr-card > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
  position: relative;
  background: #ffffff; border: 1.5px solid #dde3ec; border-top: 3px solid #00b5e6;
  border-radius: 16px; padding: 36px 34px;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
}
/* the 52px navy icon tile sits above the 03/04 label; hung off the label's ::before so the
   pair costs one block instead of a nested row */
.tr .tr-cardlbl::before {
  content: ""; display: block; margin-bottom: 20px;
  width: 52px; height: 52px; border-radius: 13px;
  background-color: #011024;
  background-repeat: no-repeat; background-position: center; background-size: 28px 28px, cover;
  box-shadow: 0 10px 22px rgba(1,16,36,.22);
}
.tr .tr-ci-secure-dev::before     { background-image: url("/wp-content/uploads/tf-tr-icons/tr-secure-dev-white.svg"),     linear-gradient(145deg,#011024 0%,#04529a 130%); }
.tr .tr-ci-corp-standards::before { background-image: url("/wp-content/uploads/tf-tr-icons/tr-corp-standards-white.svg"), linear-gradient(145deg,#011024 0%,#04529a 130%); }

/* ---------- CHECKLISTS ---------- */
.tr .tr-ticks { margin-top: 0; }

/* ---------- CLOSING CTA ---------- */
/* !important is load-bearing - Kadence emits margin-left/right:0px per advancedheading at
   (0,3,0), which would pin this max-width box left and throw the centring off. */
.tr .tr-h2navyc, .tr .tr-ctabody {
  max-width: 820px;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  .tr .tr-cert > .kt-inside-inner-col { padding: 22px; }
  .tr .tr-certlogo { height: 80px; }
  .tr .tr-certlogo img { max-height: 80px; max-width: 112px; }
  .tr .tr-card > .kt-inside-inner-col { padding: 30px 26px; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .tr .tr-heroh1, .tr .tr-herosub, .tr .tr-dsbody, .tr .tr-asbody { max-width: none; }
  .tr .tr-certlogo { height: 72px; }
  .tr .tr-certlogo img { max-height: 72px; max-width: 104px; }
  .tr .tr-card > .kt-inside-inner-col { padding: 24px 22px; }
  .tr .tr-cardlbl::before { width: 46px; height: 46px; background-size: 25px 25px, cover; margin-bottom: 16px; }
  .tr .tr-shot img { border-radius: 13px; }
}

/* ===== TF TRUST & COMPLIANCE (.tr) - END ===== */

/* ===== TF WHO WE SERVE (.ws) - START ===== */
/* Page 2555, /who-we-serve/. Layout + card chrome only; type and colour sit on native Kadence
   block controls. Rows carry BOTH .ws and .page-*, so row rules are compound.

   The globe behind the hero and the CTA is not imported and not recreated - the hero keeps the
   existing navy plus the design's own cyan radial wash on ::after.

   Reminders that cost time on earlier pages in this set:
   1. NEVER set background-image on a row. Kadence emits the row's own gradient there at
      (0,1,0); a two-class rule REPLACES it and the hero loses its blue.
   2. display:flex is only set on .kt-inside-inner-col for valign middle/bottom rows, so
      declare the flex column or margin-top:auto is inert.
   3. Kadence derives row-gap from the gutter PRESET - columnGutter:'custom' sets column-gap
      only, so row-gap is set here.
   4. Grid rows built from pseudo-elements need EXPLICIT grid-column/grid-row on every child,
      or a surplus child auto-places into a narrow icon track. */

/* ---------- HERO ---------- */
.ws.page-hero { position: relative; overflow: hidden; }
.ws.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 70% 70% at 25% 40%, rgba(0,181,230,.12) 0%, transparent 70%);
}
.ws.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.ws .ws-heroh1 { max-width: 860px; }
.ws .ws-heroh1 .ws-hl { color: #34c6ef; }
.ws .ws-herosub { max-width: 640px; }

/* ---------- SHARED CARD BEHAVIOUR ---------- */
.ws .ws-audgrid > .kt-row-column-wrap { row-gap: 24px; }
.ws .ws-indgrid > .kt-row-column-wrap { row-gap: 18px; }
.ws .ws-proofgrid > .kt-row-column-wrap { row-gap: 18px; }
.ws .ws-audgrid > .kt-row-column-wrap > .wp-block-kadence-column,
.ws .ws-indgrid > .kt-row-column-wrap > .wp-block-kadence-column,
.ws .ws-proofgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.ws .ws-aud > .kt-inside-inner-col,
.ws .ws-ind > .kt-inside-inner-col,
.ws .ws-proof > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
}

/* ---------- BY ROLE: two audience cards ---------- */
.ws .ws-aud > .kt-inside-inner-col {
  background: #ffffff; border: 1px solid #dde3ec; border-radius: 16px;
  padding: 36px 34px 32px;
  box-shadow: 0 2px 6px rgba(1,16,36,.06);
  transition: box-shadow .22s ease-out, transform .22s ease-out;
}
.ws .ws-aud > .kt-inside-inner-col:hover {
  box-shadow: 0 20px 46px rgba(1,16,36,.14); transform: translateY(-4px);
}
/* the 4px top rule is the card's accent, cyan for security firms and blue for corporate */
.ws .ws-aud-cyan > .kt-inside-inner-col { border-top: 4px solid #00b5e6; }
.ws .ws-aud-blue > .kt-inside-inner-col { border-top: 4px solid #1471c9; }
/* 56px icon tile above the title */
.ws .ws-audh3::before {
  content: ""; display: block; margin-bottom: 22px;
  width: 56px; height: 56px; border-radius: 14px;
  background-repeat: no-repeat; background-position: center; background-size: 28px 28px, cover;
  box-shadow: 0 10px 24px rgba(1,16,36,.18);
}
.ws .ws-aud-cyan .ws-audh3::before { background-image: url("/wp-content/uploads/tf-ws-icons/ws-protection-worker-white.svg"), linear-gradient(145deg,#011024 0%,#04529a 130%); }
.ws .ws-aud-blue .ws-audh3::before { background-image: url("/wp-content/uploads/tf-ws-icons/ws-desktop-global-white.svg"),     linear-gradient(145deg,#04529a 0%,#148cfc 140%); }
.ws .ws-audh3 a { color: inherit; text-decoration: none; }
.ws .ws-audh3 a:hover { color: #1471c9; }
/* hairline between the body copy and the checklist, as in the design */
.ws .ws-audp { padding-bottom: 24px; border-bottom: 1px solid #dde3ec; }
.ws .ws-ticks { margin-top: 22px; }
.ws .ws-audbtn { margin-top: auto !important; }

/* ---------- BY INDUSTRY ---------- */
.ws.page-industries { border-top: 1px solid #dde3ec; }
.ws .ws-indhdr { margin-bottom: 32px; }
.ws .ws-indhdrr > .kt-inside-inner-col { align-items: flex-end; }
.ws .ws-overview a { color: #1471c9; text-decoration: none; white-space: nowrap; }
.ws .ws-overview a::after { content: " \2192"; }
.ws .ws-overview a:hover { color: #00b5e6; text-decoration: underline; }
/* horizontal card: icon left, title + tagline centre, chevron right */
.ws .ws-ind > .kt-inside-inner-col {
  position: relative;
  background: #ffffff; border: 1.5px solid #dde3ec; border-radius: 13px;
  padding: 20px 40px 20px 84px;
  justify-content: center;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
  transition: border-color .2s ease-out, box-shadow .2s ease-out, transform .2s ease-out;
}
.ws .ws-ind > .kt-inside-inner-col:hover {
  border-color: #00b5e6; box-shadow: 0 12px 30px rgba(1,16,36,.12); transform: translateY(-3px);
}
.ws .ws-indh3::before {
  content: ""; position: absolute; left: 22px; top: 50%; transform: translateY(-50%);
  width: 46px; height: 46px; border-radius: 11px;
  background-color: #04529a;
  background-repeat: no-repeat; background-position: center; background-size: 23px 23px, cover;
  box-shadow: 0 6px 16px rgba(1,16,36,.16);
}
.ws .ws-ind > .kt-inside-inner-col::after {
  content: "\203A"; position: absolute; right: 20px; top: 50%; transform: translateY(-50%);
  font-size: 15px; color: #c4ccd9; line-height: 1;
}
.ws .ws-indh3 a { color: inherit; text-decoration: none; }
.ws .ws-indh3 a:hover { color: #1471c9; }
/* stretched link: the H3 anchor's ::after covers the whole card (inner col is the nearest
   positioned ancestor), so one link per card stays a single tab stop with a full-card
   click target. Focus ring draws around the card via the same overlay. */
.ws .ws-indh3 a::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: 13px; }
.ws .ws-indh3 a:focus-visible { outline: none; }
.ws .ws-indh3 a:focus-visible::after { outline: 2px solid #1471c9; outline-offset: 2px; }
.ws .ws-ico-lock::before              { background-image: url("/wp-content/uploads/tf-ws-icons/ws-lock-white.svg"),              linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-protection-care::before   { background-image: url("/wp-content/uploads/tf-ws-icons/ws-protection-care-white.svg"),   linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-research-star::before     { background-image: url("/wp-content/uploads/tf-ws-icons/ws-research-star-white.svg"),     linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-people-care::before       { background-image: url("/wp-content/uploads/tf-ws-icons/ws-people-care-white.svg"),       linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-management::before        { background-image: url("/wp-content/uploads/tf-ws-icons/ws-management-white.svg"),        linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ind .ws-ico-protection-worker::before { background-image: url("/wp-content/uploads/tf-ws-icons/ws-protection-worker-white.svg"), linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-location-pin::before      { background-image: url("/wp-content/uploads/tf-ws-icons/ws-location-pin-white.svg"),      linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-shield::before            { background-image: url("/wp-content/uploads/tf-ws-icons/ws-shield-white.svg"),            linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.ws .ws-ico-growth::before            { background-image: url("/wp-content/uploads/tf-ws-icons/ws-growth-white.svg"),            linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }

/* ---------- FROM THE FIELD ---------- */
.ws.page-proof { border-top: 1px solid #dde3ec; }
.ws .ws-proof > .kt-inside-inner-col {
  background: #f5f7fa; border: 1px solid #dde3ec; border-radius: 16px; padding: 30px 28px;
}
/* stat and its label share a baseline */
.ws .ws-proofstat { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.ws .ws-proofstat .l {
  font-size: 14px; font-weight: 700; color: #475067; line-height: 1.25;
  letter-spacing: 0; align-self: baseline;
}
.ws .ws-proofq { flex: 1; }
/* attribution row: initials avatar + name, above a hairline */
.ws .ws-proofwho {
  display: flex; align-items: center; gap: 11px;
  margin-top: auto !important; padding-top: 18px; border-top: 1px solid #dde3ec;
}
.ws .ws-proofwho .av {
  flex: none; width: 34px; height: 34px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(145deg,#011024 0%,#04529a 130%);
  font-size: 12px; font-weight: 700; color: #ffffff; letter-spacing: 0;
}
.ws .ws-proofcta { margin-top: 32px !important; }
.ws .ws-proofcta a { color: #1471c9; text-decoration: none; }
.ws .ws-proofcta a::after { content: " \2192"; }
.ws .ws-proofcta a:hover { color: #00b5e6; text-decoration: underline; }

/* ---------- CLOSING CTA ---------- */
/* !important is load-bearing. Kadence emits margin-left/right:0px on each advancedheading via
   .kt-adv-heading<uid>[data-kb-block="..."] = (0,3,0), which outranks a two-class rule - so
   without it the max-width box pins LEFT and the centred text reads as off-centre.
   text-align is also forced, so a future Kadence change cannot quietly reset it. */
.ws .ws-h2navyc, .ws .ws-ctabody {
  max-width: 720px;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  .ws .ws-aud > .kt-inside-inner-col { padding: 30px 26px 28px; }
  .ws .ws-ind > .kt-inside-inner-col { padding: 18px 36px 18px 76px; }
  .ws .ws-indh3::before { left: 18px; width: 42px; height: 42px; background-size: 21px 21px, cover; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .ws .ws-heroh1, .ws .ws-herosub { max-width: none; }
  .ws .ws-aud > .kt-inside-inner-col { padding: 26px 22px 24px; }
  .ws .ws-audh3::before { width: 48px; height: 48px; background-size: 25px 25px, cover; margin-bottom: 18px; }
  .ws .ws-ind > .kt-inside-inner-col { padding: 16px 34px 16px 70px; }
  .ws .ws-indh3::before { left: 16px; width: 40px; height: 40px; background-size: 20px 20px, cover; }
  .ws .ws-proof > .kt-inside-inner-col { padding: 24px 22px; }
  /* the overview link sits under the heading rather than beside it once stacked */
  .ws .ws-indhdrr > .kt-inside-inner-col { align-items: flex-start; }
  .ws .ws-indhdr { margin-bottom: 24px; }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  .ws .ws-aud > .kt-inside-inner-col,
  .ws .ws-ind > .kt-inside-inner-col { transition: none; }
  .ws .ws-aud > .kt-inside-inner-col:hover,
  .ws .ws-ind > .kt-inside-inner-col:hover { transform: none; }
}

/* ===== TF WHO WE SERVE (.ws) - END ===== */

/* ===== TF INDUSTRIES HUB (.tfin) - START ===== */
/* Page 114, /who-we-serve/industries/. Layout + card chrome only; type and colour sit on
   native Kadence block controls. Rows carry BOTH .tfin and .page-*, so row rules are compound.
   Scope is .tfin rather than .in - a bare ".in" would be far too collision-prone here.

   This source has NO globe behind the hero, only a cyan radial wash (reproduced on ::after).
   The CTA globe is not imported and not recreated.

   Standing reminders for this stylesheet:
   1. NEVER set background-image on a row - Kadence emits the row's gradient there at (0,1,0)
      and a two-class rule replaces it, killing the hero.
   2. display:flex is only set on .kt-inside-inner-col for valign middle/bottom rows.
   3. Kadence derives row-gap from the gutter PRESET, so set row-gap explicitly.
   4. Centring a heading with auto margins needs !important - Kadence writes
      margin-left/right:0px per block at (0,3,0). */

/* ---------- HERO ---------- */
.tfin.page-hero { position: relative; overflow: hidden; }
.tfin.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 70% 70% at 25% 40%, rgba(0,181,230,.12) 0%, transparent 70%);
}
.tfin.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.tfin .tfin-heroh1 { max-width: 840px; }
.tfin .tfin-herosub { max-width: 620px; }
/* single reassurance line with the brand shield glyph */
.tfin .tfin-badge { display: flex; align-items: center; gap: 12px; }
.tfin .tfin-badge::before {
  content: ""; flex: none; width: 20px; height: 20px;
  background: url("/wp-content/uploads/tf-in-icons/in-badge-cyan.svg") center/contain no-repeat;
}

/* ---------- INDUSTRY GRID ---------- */
.tfin .tfin-grid > .kt-row-column-wrap { row-gap: 20px; }
.tfin .tfin-grid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.tfin .tfin-card > .kt-inside-inner-col {
  position: relative;
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
  background: #ffffff; border: 1.5px solid #dde3ec; border-top: 3px solid #dde3ec;
  border-radius: 16px; padding: 30px 28px 26px;
  box-shadow: 0 1px 2px rgba(1,16,36,.06);
  transition: border-color .22s ease-out, box-shadow .22s ease-out, transform .22s ease-out;
}
.tfin .tfin-card > .kt-inside-inner-col:hover {
  border-color: #00b5e6; border-top-color: #00b5e6;
  box-shadow: 0 18px 40px rgba(1,16,36,.12); transform: translateY(-4px);
}
/* 56px blue-to-cyan tile above the title */
.tfin .tfin-cardh3::before {
  content: ""; display: block; margin-bottom: 20px;
  width: 56px; height: 56px; border-radius: 14px;
  background-repeat: no-repeat; background-position: center; background-size: 28px 28px, cover;
  box-shadow: 0 8px 18px rgba(4,82,154,.28);
}
.tfin .tfin-ico-lock::before                  { background-image: url("/wp-content/uploads/tf-in-icons/in-lock-white.svg"),                  linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-protection-care::before       { background-image: url("/wp-content/uploads/tf-in-icons/in-protection-care-white.svg"),       linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-research-star::before         { background-image: url("/wp-content/uploads/tf-in-icons/in-research-star-white.svg"),         linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-people-care::before           { background-image: url("/wp-content/uploads/tf-in-icons/in-people-care-white.svg"),           linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-management::before             { background-image: url("/wp-content/uploads/tf-in-icons/in-management-white.svg"),             linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-protection-worker::before      { background-image: url("/wp-content/uploads/tf-in-icons/in-protection-worker-white.svg"),      linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-protection-management::before  { background-image: url("/wp-content/uploads/tf-in-icons/in-protection-management-white.svg"),  linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-shield::before                 { background-image: url("/wp-content/uploads/tf-in-icons/in-shield-white.svg"),                 linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }
.tfin .tfin-ico-growth-protection::before      { background-image: url("/wp-content/uploads/tf-in-icons/in-growth-protection-white.svg"),      linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }

/* Stretched link: the h3 anchor is expanded over the whole card, so the card is fully
   clickable while contributing ONE descriptive anchor. The "Explore ..." line below is a
   visual affordance, not a second competing link to the same page. */
.tfin .tfin-cardh3 a,
.tfin .tfin-audh3 a { color: inherit; text-decoration: none; }
.tfin .tfin-cardh3 a::after,
.tfin .tfin-audh3 a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.tfin .tfin-card > .kt-inside-inner-col:hover .tfin-cardh3 a,
.tfin .tfin-aud > .kt-inside-inner-col:hover .tfin-audh3 a { color: #1471c9; }
.tfin .tfin-cardp { flex: 1; }
.tfin .tfin-cardcta { margin-top: auto !important; }
.tfin .tfin-cardcta .x::after { content: " \2192"; }

/* ---------- AUDIENCE SPLIT ---------- */
.tfin .tfin-audgrid { margin-top: 20px; }
.tfin .tfin-audgrid > .kt-row-column-wrap { row-gap: 20px; }
.tfin .tfin-audgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.tfin .tfin-aud > .kt-inside-inner-col {
  position: relative;
  display: flex; flex-direction: column; justify-content: center; height: 100%;
  background: #f5f7fa; border: 1.5px solid #dde3ec; border-radius: 14px;
  padding: 28px 30px 28px 98px;
  transition: border-color .2s ease-out, background .2s ease-out, box-shadow .2s ease-out;
}
.tfin .tfin-aud > .kt-inside-inner-col:hover {
  border-color: #00b5e6; background: #ffffff; box-shadow: 0 12px 30px rgba(1,16,36,.10);
}
/* 48px light tile, vertically centred at the left edge */
.tfin .tfin-audh3::before {
  content: ""; position: absolute; left: 30px; top: 50%; transform: translateY(-50%);
  width: 48px; height: 48px; border-radius: 10px;
  background-color: #eef1f6;
  background-repeat: no-repeat; background-position: center; background-size: 24px 24px;
}
.tfin .tfin-aico-firms::before      { background-image: url("/wp-content/uploads/tf-in-icons/in-aud-firms-blue.svg"); }
.tfin .tfin-aico-enterprise::before { background-image: url("/wp-content/uploads/tf-in-icons/in-aud-enterprise-blue.svg"); }

/* ---------- CLOSING CTA ---------- */
/* !important is load-bearing: Kadence writes margin-left/right:0px per advancedheading at
   (0,3,0), which would pin these max-width boxes left and throw the centring off. */
.tfin .tfin-h2navyc, .tfin .tfin-ctabody {
  max-width: 720px;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  .tfin .tfin-card > .kt-inside-inner-col { padding: 26px 24px 24px; }
  .tfin .tfin-cardh3::before { width: 50px; height: 50px; background-size: 25px 25px, cover; margin-bottom: 18px; }
  .tfin .tfin-aud > .kt-inside-inner-col { padding: 24px 26px 24px 90px; }
  .tfin .tfin-audh3::before { left: 26px; width: 44px; height: 44px; background-size: 22px 22px; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .tfin .tfin-heroh1, .tfin .tfin-herosub { max-width: none; }
  .tfin .tfin-badge { align-items: flex-start; }
  .tfin .tfin-badge::before { margin-top: 2px; }
  .tfin .tfin-card > .kt-inside-inner-col { padding: 24px 22px 22px; }
  .tfin .tfin-cardh3::before { width: 46px; height: 46px; background-size: 24px 24px, cover; margin-bottom: 16px; }
  /* the audience tile moves above the copy so the text keeps a usable measure */
  .tfin .tfin-aud > .kt-inside-inner-col { padding: 22px; }
  .tfin .tfin-audh3::before { position: static; transform: none; display: block; margin-bottom: 14px; width: 44px; height: 44px; }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  .tfin .tfin-card > .kt-inside-inner-col,
  .tfin .tfin-aud > .kt-inside-inner-col { transition: none; }
  .tfin .tfin-card > .kt-inside-inner-col:hover { transform: none; }
}

/* ===== TF INDUSTRIES HUB (.tfin) - END ===== */

/* ===== TF GET A DEMO (.gd) - START ===== */
/* Page 142, /get-a-demo/. Layout + card chrome only; type and colour sit on native Kadence
   block controls. Rows carry BOTH .gd and .page-*, so row rules are compound.

   The globe behind the hero is not imported and not recreated - the row keeps the design's own
   four-stop navy-to-blue gradient plus a cyan radial wash on ::after.

   Standing reminders: never set background-image on a row (Kadence emits the row gradient there
   at (0,1,0) and a two-class rule replaces it); declare display:flex on .kt-inside-inner-col
   because Kadence only sets it for valign middle/bottom rows; set row-gap explicitly because
   Kadence derives it from the gutter PRESET; and centring a heading needs !important. */

/* ---------- HERO ---------- */
.gd.page-hero { position: relative; overflow: hidden; }
.gd.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 50% 60% at 78% 30%, rgba(0,181,230,.2) 0%, transparent 62%);
}
.gd.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.gd .gd-herogrid > .kt-row-column-wrap { row-gap: 44px; align-items: start; }
.gd .gd-heroh1 { max-width: 560px; }
.gd .gd-herosub { max-width: 480px; }
.gd .gd-promises { max-width: 520px; }

/* stats: three figures between two hairlines, sized to content */
.gd .gd-statgrid > .kt-row-column-wrap {
  width: fit-content; max-width: 100%;
  padding: 26px 0; margin-bottom: 32px;
  border-top: 1px solid rgba(255,255,255,.14);
  border-bottom: 1px solid rgba(255,255,255,.14);
}
.gd .gd-statn .p { color: #34c6ef; }

/* testimonial */
.gd .gd-quote { max-width: 480px; }
.gd .gd-quotewho { display: flex; align-items: center; gap: 11px; margin-bottom: 30px !important; }
.gd .gd-quotewho .av {
  flex: none; width: 38px; height: 38px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,181,230,.14); border: 1px solid rgba(0,181,230,.35);
  font-size: 13px; font-weight: 700; color: #34c6ef;
}
.gd .gd-quotewho .who { display: flex; flex-direction: column; }
.gd .gd-quotewho .r { font-size: 12px; font-weight: 500; color: rgba(255,255,255,.55); margin-top: 2px; }

/* ---------- CLIENT LOGO MARQUEE ---------- */
/* Modelled on the site's existing .tf-logo-marquee: the 8-logo set is duplicated once in the
   markup and the track translates -50%, so the loop is seamless. Hover pauses it, and
   prefers-reduced-motion drops the animation entirely and wraps the logos instead. */
.gd .gd-marquee { max-width: 520px; overflow: hidden; }
.gd .gd-marquee > .kt-row-column-wrap { overflow: hidden !important; }
.gd .gd-marquee { -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
                  mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%); }
.gd .gd-marquee-track > .kt-inside-inner-col {
  display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important;
  align-items: center; gap: 14px; width: max-content !important;
  will-change: transform; animation: gd-logo-scroll 34s linear infinite;
}
.gd .gd-marquee:hover .gd-marquee-track > .kt-inside-inner-col { animation-play-state: paused; }
@keyframes gd-logo-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
/* each logo sits on a white pill because the hero ground is navy */
.gd .gd-logo {
  margin: 0 !important; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  height: 40px; padding: 0 16px; background: #ffffff; border-radius: 8px;
  box-shadow: 0 2px 10px rgba(1,16,36,.25);
}
.gd .gd-logo img { height: 22px; width: auto; max-width: none; object-fit: contain; display: block; }

/* ---------- FORM CARD ---------- */
.gd .gd-formcard > .kt-inside-inner-col {
  background: #ffffff; border-radius: 18px; padding: 38px 38px 34px;
  box-shadow: 0 30px 70px rgba(1,16,36,.4), 0 6px 20px rgba(1,16,36,.2);
}
/* HubSpot injects its own markup, so nudge it onto the page's type and control shapes
   rather than restyling it wholesale. Scoped to this card only. */
.gd .gd-formcard .hs-form-field { margin-bottom: 14px; }
.gd .gd-formcard .hs-form-field > label {
  display: block; font-size: 12.5px; font-weight: 700; color: #011024; margin-bottom: 6px;
}
.gd .gd-formcard .hs-form-field .hs-field-desc { font-size: 12px; color: #67738a; }
.gd .gd-formcard input[type="text"],
.gd .gd-formcard input[type="email"],
.gd .gd-formcard input[type="tel"],
.gd .gd-formcard select,
.gd .gd-formcard textarea {
  width: 100% !important; padding: 11px 13px; border: 1.5px solid #dde3ec; border-radius: 9px;
  font-size: 14px; color: #011024; background: #ffffff; box-sizing: border-box;
  transition: border-color .15s ease-out, box-shadow .15s ease-out;
}
.gd .gd-formcard input:focus,
.gd .gd-formcard select:focus,
.gd .gd-formcard textarea:focus {
  border-color: #1471c9; box-shadow: 0 0 0 3px rgba(20,113,201,.14); outline: none;
}
.gd .gd-formcard textarea { resize: vertical; line-height: 1.5; min-height: 84px; }
.gd .gd-formcard .hs-error-msg,
.gd .gd-formcard .hs-error-msgs label { font-size: 12px; color: #e6000f; font-weight: 600; }
.gd .gd-formcard .legal-consent-container { font-size: 12px; color: #67738a; line-height: 1.5; }
.gd .gd-formcard .legal-consent-container a { color: #04529a; font-weight: 600; text-decoration: underline; }
.gd .gd-formcard .hs-button {
  width: 100%; padding: 15px; background: #04529a; border: none; border-radius: 999px;
  font-size: 15.5px; font-weight: 700; color: #ffffff; cursor: pointer;
  transition: background .18s ease-out, transform .18s ease-out, box-shadow .18s ease-out;
}
.gd .gd-formcard .hs-button:hover {
  background: #1471c9; transform: translateY(-1px); box-shadow: 0 10px 26px rgba(20,113,201,.35);
}
/* trust line under the form */
.gd .gd-formtrust { margin-top: 16px !important; }
.gd .gd-formtrust .t { display: inline-flex; align-items: center; gap: 7px; }
.gd .gd-formtrust .t::before {
  content: ""; flex: none; width: 13px; height: 13px;
  background: url("/wp-content/uploads/tf-gd-icons/gd-trust-shield-gray.svg") center/contain no-repeat;
}

/* ---------- WHAT TO EXPECT ---------- */
.gd .gd-h2 { max-width: 640px; margin-left: auto !important; margin-right: auto !important; text-align: center !important; }
.gd .gd-stepgrid { max-width: 760px; margin-left: auto; margin-right: auto; }
.gd .gd-stepgrid > .kt-row-column-wrap { row-gap: 26px; }
.gd .gd-stepgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; height: 100%; }
.gd .gd-step > .kt-inside-inner-col {
  display: flex; flex-direction: column; justify-content: flex-start; height: 100%;
  background: #f5f7fa; border: 1px solid #dde3ec; border-radius: 16px; padding: 30px 26px;
}
/* 46px navy tile between the STEP label and the title */
.gd .gd-steplbl::after {
  content: ""; display: block; margin-top: 16px;
  width: 46px; height: 46px; border-radius: 12px;
  background-color: #011024;
  background-repeat: no-repeat; background-position: center; background-size: 26px 26px, cover;
}
.gd .gd-si-chat::after    { background-image: url("/wp-content/uploads/tf-gd-icons/gd-step-chat-white.svg"),    linear-gradient(145deg,#011024 0%,#04529a 130%); }
.gd .gd-si-desktop::after { background-image: url("/wp-content/uploads/tf-gd-icons/gd-step-desktop-white.svg"), linear-gradient(145deg,#011024 0%,#04529a 130%); }

/* ---------- TABLET ---------- */
@media (max-width: 1024px) {
  /* the form card leads on narrow screens - it is the point of the page */
  .gd .gd-herogrid > .kt-row-column-wrap { display: flex; flex-direction: column; }
  .gd .gd-herogrid .gd-formcard { order: 1; }
  .gd .gd-herogrid .gd-left { order: 2; }
  .gd .gd-heroh1, .gd .gd-herosub, .gd .gd-promises, .gd .gd-quote { max-width: none; }
  .gd .gd-marquee { max-width: none; }
  .gd .gd-formcard > .kt-inside-inner-col { padding: 32px 30px 30px; }
}

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .gd .gd-formcard > .kt-inside-inner-col { padding: 26px 22px 24px; }
  .gd .gd-statgrid > .kt-row-column-wrap { width: 100%; gap: 20px; }
  .gd .gd-logo { height: 36px; padding: 0 13px; }
  .gd .gd-logo img { height: 19px; }
  .gd .gd-step > .kt-inside-inner-col { padding: 24px 22px; }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  .gd .gd-marquee-track > .kt-inside-inner-col {
    animation: none !important; flex-wrap: wrap !important;
    width: auto !important; justify-content: flex-start;
  }
  .gd .gd-marquee { -webkit-mask-image: none; mask-image: none; }
  .gd .gd-formcard .hs-button { transition: none; }
  .gd .gd-formcard .hs-button:hover { transform: none; }
}

/* ===== TF GET A DEMO (.gd) - END ===== */

/* ===== TF ENTERPRISE SECURITY (.es, page 2566) - START ===== */
/* Page 2566, /who-we-serve/organization-type/enterprise-security/.
   Layout + card chrome only; all type and colour sit on native Kadence block
   controls (see tfes_type() in tf-es.build.txt).

   The dotted globe from the source is NOT imported and NOT recreated: the hero
   keeps its inherited navy gradient plus the ONE cyan radial wash the design
   contract allows per page. The source's warm cream band is swapped for palette8 (a cool light grey).

   Reminders that cost time on earlier pages in this set:
   1. NEVER set background-image on a row - Kadence emits the row's own gradient
      there at (0,1,0) and a two-class rule would replace it.
   2. Kadence emits opacity:.3 on EVERY column's .kt-inside-inner-col:before, so
      icon tiles hang off advancedheading ::before, never off a column ::before.
   3. '> .kt-inside-inner-col' on a ROW never matches. Rows use
      '> .kt-row-column-wrap'; only COLUMNS have .kt-inside-inner-col.
   4. Kadence emits margin-left/right:0 on each advancedheading at (0,3,0), so a
      centred max-width box needs margin:auto !important, and any margin this
      file changes on a heading needs !important too.
   5. columnGutter 'none' emits column-gap:0, so gaps are re-declared here.
   6. .kt-inside-inner-col is NOT display:flex. Kadence only sets it via
      '.kt-row-valign-middle.kt-inner-column-height-full > ... > .kt-inside-inner-col',
      i.e. it also needs the row's columnsInnerHeight attribute. It DOES emit bare
      flex-direction/justify-content, which are inert on their own - so any
      align-items/justify-content here declares display:flex itself.
   7. box-sizing is border-box, so a height plus padding on the same element
      shrinks the content box: the bar track adds its label row to its height. */

/* ---------------------------------------------------------------- shared -- */
.es .es-narrow,
.es .es-narrow-wide,
.es .es-narrow-quote {
  margin-left: auto !important;
  margin-right: auto !important;
}
.es .es-narrow       { max-width: 700px; }
.es .es-narrow-wide  { max-width: 820px; }
.es .es-narrow-quote { max-width: 880px; }

/* cyan status pill, used on both navy grounds */
.es .es-pill {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.16);
  border: 1px solid rgba(0,181,230,.40);
  border-radius: 999px; padding: 6px 14px;
}

/* ------------------------------------------------------------------ hero -- */
.es.page-hero { position: relative; overflow: hidden; }
/* the single radial glow allowed on this page */
.es.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 70% 70% at 22% 42%, rgba(0,181,230,.13) 0%, transparent 70%);
}
.es.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.es .es-herosub { max-width: 480px; }

/* ---------- hero board card ---------- */
/* No drop shadow: the design contract forbids shadows on cards sitting on navy,
   so the card is separated by its hairline only. */
.es .es-card > .kt-inside-inner-col {
  background: #ffffff;
  border: 1px solid #e2e6ee;
  border-radius: 16px;
  overflow: hidden;
  padding: 0;
}
.es .es-cardhead > .kt-row-column-wrap {
  padding: 18px 20px; border-bottom: 1px solid #e2e6ee;
  align-items: flex-start; row-gap: 10px;
}
.es .es-cardheadr > .kt-inside-inner-col { display: flex; flex-direction: column; align-items: flex-end; }
.es .es-badge {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.12);
  border: 1px solid rgba(0,181,230,.35);
  border-radius: 999px; padding: 6px 12px; white-space: nowrap;
}
.es .es-kpis > .kt-row-column-wrap {
  padding: 22px 20px 20px; border-bottom: 1px solid #e2e6ee; row-gap: 18px;
}
.es .es-charthead {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; padding: 18px 20px 14px;
}
.es .es-charthead .es-cm {
  font-size: 11px; font-weight: 500; color: #67738a; white-space: nowrap;
  letter-spacing: 0;
}

/* ---------- 8-bar chart: eight empty Kadence columns ---------- */
/* Fill colour and top radius are native column attributes. Heights are % of the
   track so the chart rescales at each breakpoint from one height value.
   !important is load-bearing: Kadence emits
   .kb-row-layout-idUID > .kt-row-column-wrap{grid-template-columns:repeat(8,...)}. */
.es .es-bars > .kt-row-column-wrap {
  display: flex !important;
  grid-template-columns: none !important;
  align-items: flex-end;
  gap: 10px; height: 130px; padding: 0 20px 26px; /* 104px track + 26px label row (border-box) */
}
.es .es-bar { position: relative; flex: 1 1 0; min-width: 0; align-self: flex-end; }
.es .es-bar > .kt-inside-inner-col { width: 100%; height: 100%; min-height: 0; padding: 0; }
.es .es-bar-1 { height: 100%; }
.es .es-bar-2 { height: 88%; }
.es .es-bar-3 { height: 75%; }
.es .es-bar-4 { height: 65%; }
.es .es-bar-5 { height: 52%; }
.es .es-bar-6 { height: 44%; }
.es .es-bar-7 { height: 35%; }
.es .es-bar-8 { height: 27%; }
.es .es-bar::after {
  position: absolute; left: 0; right: 0; bottom: -20px;
  text-align: center; font-size: 10px; font-weight: 500; color: #67738a; line-height: 1;
}
.es .es-bar-1::after { content: "Q1"; }
.es .es-bar-2::after { content: "Q2"; }
.es .es-bar-3::after { content: "Q3"; }
.es .es-bar-4::after { content: "Q4"; }
.es .es-bar-5::after { content: "Q5"; }
.es .es-bar-6::after { content: "Q6"; }
.es .es-bar-7::after { content: "Q7"; }
.es .es-bar-8::after { content: "Q8"; color: #011024; font-weight: 700; }

/* --------------------------------------------------------------- problem -- */
.es .es-probgrid > .kt-row-column-wrap { row-gap: 40px; }
.es .es-costrow > .kt-row-column-wrap {
  padding: 22px 0; border-top: 1px solid #e2e6ee;
  align-items: baseline; row-gap: 8px;
}
.es .es-costsrc { margin-top: 6px !important; }
/* the principles block sits well below the two-column grid */
.es .es-prinlabel { margin-top: 64px !important; }
.es .es-prins > .kt-row-column-wrap { border-top: 1px solid #e2e6ee; row-gap: 0; }
.es .es-prin > .kt-inside-inner-col { padding: 28px 26px 28px 0; }

/* ------------------------------------------------------------- new model -- */
.es .es-compare > .kt-row-column-wrap {
  align-items: stretch; column-gap: 64px; row-gap: 48px;
}
.es .es-old > .kt-inside-inner-col,
.es .es-new > .kt-inside-inner-col { height: 100%; }
.es .es-old > .kt-inside-inner-col {
  position: relative;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 16px; padding: 32px 30px;
}
.es .es-new > .kt-inside-inner-col {
  background: linear-gradient(160deg, rgba(0,181,230,.14) 0%, rgba(4,82,154,.09) 100%);
  border: 1.5px solid rgba(0,181,230,.45);
  border-radius: 16px; padding: 36px 38px;
}
/* cyan arrow badge in the 64px gutter. ::after, never ::before (see note 2). */
.es .es-old > .kt-inside-inner-col::after {
  content: ""; position: absolute; right: -54px; top: 50%;
  transform: translateY(-50%);
  width: 44px; height: 44px; border-radius: 50%; z-index: 2;
  background-color: #00b5e6;
  background-image: url("/wp-content/uploads/tf-es-icons/es-arrow-navy.svg");
  background-repeat: no-repeat; background-position: center; background-size: 20px 20px;
  box-shadow: 0 0 0 8px rgba(0,181,230,.12), 0 12px 30px rgba(0,181,230,.30);
}
/* cyan disc behind the navy check glyph. .kt-svg-icon-list-single is the WRAPPING
   SPAN (it shares the element with .kb-svg-icon-wrap), not the svg, so the disc is
   sized here and the glyph is sized on the child svg. Declared explicitly rather
   than relying on the plugin's own display value. */
.es .es-checklist .kt-svg-icon-list-single {
  display: inline-flex; align-items: center; justify-content: center;
  flex: none; width: 22px; height: 22px; padding: 0;
  background: #00b5e6; border-radius: 50%;
}
.es .es-checklist .kt-svg-icon-list-single svg { width: 13px; height: 13px; }
.es .es-checklist .kt-svg-icon-list-text { padding-top: 2px; }

/* ------------------------------------------------------------ convergence - */
.es .es-converge > .kt-row-column-wrap { align-items: center; row-gap: 24px; }
.es .es-srcstack > .kt-row-column-wrap { row-gap: 20px; }
.es .es-src > .kt-inside-inner-col {
  background: #f6f7fa; border: 1px solid #e2e6ee;
  border-radius: 16px; padding: 22px 24px;
}
/* 40px gradient tile hangs off the advancedheading, which Kadence never touches */
.es .es-srctitle {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 10px !important;
}
.es .es-srctitle::before {
  content: ""; flex: none; width: 40px; height: 40px; border-radius: 10px;
  background-repeat: no-repeat; background-position: center;
  background-size: 21px 21px, cover;
  background-image: url("/wp-content/uploads/tf-es-icons/es-shield-check-white.svg"),
                    linear-gradient(145deg, #011024 0%, #04529a 130%);
  box-shadow: 0 6px 16px rgba(1,16,36,.16);
}
.es .es-ico-lock::before {
  background-image: url("/wp-content/uploads/tf-es-icons/es-lock-white.svg"),
                    linear-gradient(145deg, #011024 0%, #04529a 130%);
}
/* two beziers merging into a glowing node; hidden once the grid stacks */
.es .es-beams { position: relative; align-self: stretch; z-index: 3; }
.es .es-beams > .kt-inside-inner-col {
  min-height: 180px; height: 100%; padding: 0;
  background-image: url("/wp-content/uploads/tf-es-icons/es-beams.svg");
  background-repeat: no-repeat; background-position: center;
  background-size: 100% 62%;
}
.es .es-beams::after {
  content: ""; position: absolute; right: -11px; top: 50%;
  transform: translateY(-50%);
  width: 20px; height: 20px; border-radius: 50%; background: #00b5e6; z-index: 2;
  box-shadow: 0 0 0 5px rgba(0,181,230,.12);
}
.es .es-conv > .kt-inside-inner-col {
  background: linear-gradient(160deg, #011024 0%, #04529a 155%);
  border: 1.5px solid rgba(0,181,230,.50);
  border-radius: 16px; padding: 32px 34px;
  box-shadow: 0 30px 70px rgba(1,16,36,.18);
}
.es .es-band { margin-top: 44px !important; }
.es .es-band > .kt-row-column-wrap { align-items: center; row-gap: 20px; }
.es .es-bandbtn { justify-content: flex-end; }

/* ---------------------------------------------------------------- rollup -- */
.es .es-rollup > .kt-row-column-wrap { align-items: center; row-gap: 28px; }
.es .es-nodes > .kt-row-column-wrap { row-gap: 16px; }
.es .es-node > .kt-inside-inner-col {
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(0,181,230,.30);
  border-radius: 13px; padding: 11px 13px;
}
.es .es-nodehead > .kt-row-column-wrap { align-items: center; }
.es .es-nodeheadr > .kt-inside-inner-col { display: flex; flex-direction: column; align-items: flex-end; }
.es .es-nodevendor { margin-top: 7px !important; }
/* the SLA meter is one heading: track span, fill span, figure span */
.es .es-meter {
  display: flex; align-items: center; gap: 7px; margin-top: 9px !important;
}
.es .es-meter .es-track {
  display: block; flex: 1; height: 4px; border-radius: 3px;
  background: rgba(255,255,255,.12); overflow: hidden;
}
.es .es-meter .es-fill { display: block; height: 100%; background: #00b5e6; border-radius: 3px; }
.es .es-meter .es-slav {
  font-size: 10px; font-weight: 700; color: #ffffff;
  min-width: 30px; text-align: right; letter-spacing: 0;
}
.es .es-node-1 .es-fill { width: 99%; }
.es .es-node-2 .es-fill { width: 98%; }
.es .es-node-3 .es-fill { width: 97%; }
.es .es-node-4 .es-fill { width: 96%; }
/* hub: the 96px disc is the label's ::before so no extra block is needed */
.es .es-hub > .kt-inside-inner-col { display: flex; flex-direction: column; align-items: center; }
.es .es-hublabel::before {
  content: ""; display: block; box-sizing: border-box;
  width: 96px; height: 96px; margin: 0 auto 12px; border-radius: 50%;
  background-color: #021A56; border: 2px solid rgba(0,181,230,.90);
  background-image: url("/wp-content/uploads/tf-es-icons/es-shield-check-white.svg");
  background-repeat: no-repeat; background-position: center; background-size: 42px 42px;
  box-shadow: 0 0 0 12px rgba(0,181,230,.10), 0 0 40px rgba(0,181,230,.35);
}
.es .es-hubcount { margin-top: 8px !important; }
.es .es-hubnote  { margin-top: 4px !important; }
.es .es-board > .kt-inside-inner-col {
  background: rgba(6,20,40,.94);
  border: 1px solid rgba(0,181,230,.50);
  border-radius: 16px; padding: 20px 22px;
}
.es .es-boardhead > .kt-row-column-wrap { align-items: flex-start; }
.es .es-boardheadr > .kt-inside-inner-col { display: flex; flex-direction: column; align-items: flex-end; }
.es .es-boarddelta {
  display: inline-flex; align-items: center;
  background: rgba(0,181,230,.14);
  border: 1px solid rgba(0,181,230,.40);
  border-radius: 999px; padding: 5px 11px; white-space: nowrap;
}
.es .es-boardrow { display: flex; align-items: center; gap: 10px; }
.es .es-boardrow .es-bl { flex: 1; }
.es .es-boardrow .es-bv { font-weight: 700; color: #ffffff; text-align: right; }
/* one hairline under the head, then plain rows */
.es .es-board .es-boardrow:first-of-type {
  margin-top: 14px !important; padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.10);
}
.es .es-board .es-boardrow + .es-boardrow { margin-top: 9px !important; }

/* ----------------------------------------------------------- testimonial -- */
.es .es-quote { font-style: italic; }
.es .es-quote .es-qm { color: #1471c9; font-weight: 700; font-style: normal; }

/* ------------------------------------------------------------------- cta -- */
.es .es-ctalead { margin-bottom: 32px !important; }

/* ================================================================ tablet == */
@media (max-width: 1024px) {
  /* the hero card and the diagram cards read better centred once stacked */
  .es .es-card,
  .es .es-nodewrap,
  .es .es-board { max-width: 560px; margin-left: auto; margin-right: auto; }
  .es .es-herosub { max-width: none; }
  .es .es-new > .kt-inside-inner-col { padding: 30px 28px; }
  .es .es-old > .kt-inside-inner-col { padding: 28px 26px; }
  /* stacked comparison: the badge drops to the seam and turns downward */
  .es .es-old > .kt-inside-inner-col::after {
    right: auto; left: 50%; top: auto; bottom: -34px;
    transform: translateX(-50%) rotate(90deg);
  }
  .es .es-beams { display: none !important; }
  .es .es-prin > .kt-inside-inner-col { padding: 24px 24px 24px 0; }
  /* second row of the 2x2 principles grid needs its own divider */
  .es .es-prins > .kt-row-column-wrap > .wp-block-kadence-column:nth-child(n+3) > .kt-inside-inner-col {
    border-top: 1px solid #e2e6ee;
  }
  .es .es-probgrid > .kt-row-column-wrap { row-gap: 36px; }
}

/* ================================================================ mobile == */
@media (max-width: 767px) {
  .es .es-bars > .kt-row-column-wrap { height: 104px; gap: 6px; padding: 0 16px 24px; } /* 80px track + 24px labels */
  .es .es-cardhead > .kt-row-column-wrap { padding: 16px; }
  /* stacked head: the delta chip returns to the left edge */
  .es .es-cardheadr > .kt-inside-inner-col { align-items: flex-start; }
  .es .es-kpis > .kt-row-column-wrap { padding: 18px 16px; }
  .es .es-charthead { padding: 16px 16px 12px; }
  .es .es-conv > .kt-inside-inner-col,
  .es .es-new > .kt-inside-inner-col,
  .es .es-old > .kt-inside-inner-col { padding: 26px 22px; }
  .es .es-src > .kt-inside-inner-col { padding: 20px; }
  /* principles lose the shared rule and take one divider each */
  .es .es-prins > .kt-row-column-wrap { border-top: 0; }
  .es .es-prin > .kt-inside-inner-col { padding: 22px 0; border-top: 1px solid #e2e6ee; }
  .es .es-prinlabel { margin-top: 48px !important; }
  .es .es-costrow > .kt-row-column-wrap { padding: 18px 0; }
  .es .es-bandbtn { justify-content: flex-start; }
  .es .es-board > .kt-inside-inner-col { padding: 18px; }
  .es .es-hublabel::before { width: 84px; height: 84px; background-size: 36px 36px; }
  .es .es-narrow, .es .es-narrow-wide, .es .es-narrow-quote { max-width: none; }
}

/* ======================================================== reduced motion == */
/* Nothing on this page animates, but the cyan glows are toned down for anyone
   who has asked for less visual noise. */
@media (prefers-reduced-motion: reduce) {
  .es .es-beams::after,
  .es .es-hublabel::before { box-shadow: none; }
}

/* ===== TF ENTERPRISE SECURITY (.es, page 2566) - END ===== */

/* ===== TF ORGANIZATION TYPES (.ot, page 14554) - START ===== */
/* Page 14554, /who-we-serve/organization-type/.
   Layout + card chrome only; all type and colour sit on native Kadence block
   controls (see tfot_type() in tf-ot.build.txt).

   The dotted globe is NOT imported and NOT recreated: the hero keeps its
   inherited navy gradient plus the ONE cyan radial wash the design allows per
   page. No warm cream anywhere - the comparison band is palette8 #f6f7fa.

   Hard-won rules this file obeys (see the project + GOTCHA memories):
   1. NEVER set background-image on a ROW - Kadence emits the row's own gradient
      there and a two-class rule would replace it.
   2. .kt-inside-inner-col is NOT display:flex. Kadence only sets it via
      '.kt-row-valign-middle.kt-inner-column-height-full > ... > .kt-inside-inner-col',
      so it also needs the row's columnsInnerHeight attribute. Kadence DOES emit a
      bare flex-direction/justify-content on every column, which is inert on its
      own - so every align-items/justify-content here declares display:flex itself.
   3. '> .kt-inside-inner-col' on a ROW never matches. Rows use
      '> .kt-row-column-wrap'; only COLUMNS have .kt-inside-inner-col.
   4. Kadence emits margin-left/right:0 on each advancedheading at (0,3,0), so any
      margin this file changes on a heading needs !important.
   5. Kadence emits opacity:.3 on EVERY column's .kt-inside-inner-col:before, so
      icon tiles hang off advancedheading ::before, never a column ::before.
      Column ::after is untouched and is used for the tile chevrons.
   6. box-sizing is border-box: a height plus padding on one element shrinks the
      content box.
   7. columnGutter 'none' emits column-gap:0, so gaps are re-declared here. */

/* ---------------------------------------------------------------- shared -- */
.ot .ot-narrow {
  max-width: 700px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.ot .ot-narrow-l { max-width: 580px; }

/* ------------------------------------------------------------------ hero -- */
.ot.page-hero { position: relative; overflow: hidden; }
/* the single radial glow allowed on this page */
.ot.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 70% 70% at 25% 40%, rgba(0,181,230,.12) 0%, transparent 70%);
}
.ot.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }
.ot .rank-math-breadcrumb { margin-bottom: 18px; }
.ot .rank-math-breadcrumb p {
  margin: 0; font-size: 12.5px; font-weight: 500; letter-spacing: .01em;
  color: rgba(255,255,255,.55);
}
.ot .rank-math-breadcrumb a { color: rgba(255,255,255,.55); text-decoration: none; }
.ot .rank-math-breadcrumb a:hover { color: #34c6ef; }
.ot .rank-math-breadcrumb .separator { color: rgba(255,255,255,.3); }
.ot .ot-heroh1 { max-width: 900px; }
.ot .ot-heroh1 .ot-hl { color: #34c6ef; }
.ot .ot-herosub { max-width: 620px; }

/* ------------------------------------------------------- 2. type cards --- */
.ot .ot-h2c { margin-bottom: 44px !important; }
.ot .ot-types > .kt-row-column-wrap { row-gap: 24px; align-items: stretch; }
.ot .ot-types > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; }
/* equal-height cards: the button is pushed to the bottom with margin-top:auto,
   which needs the flex context declared here (see rule 2 above) */
.ot .ot-card > .kt-inside-inner-col {
  display: flex; flex-direction: column; height: 100%;
  background: #ffffff;
  border: 1px solid #e2e6ee;
  border-top: 4px solid #e2e6ee;
  border-radius: 16px;
  padding: 30px 30px 32px;
  box-shadow: 0 1px 3px rgba(1,16,36,.08);
  transition: box-shadow .22s ease-out, transform .22s ease-out;
}
.ot .ot-card > .kt-inside-inner-col:hover {
  box-shadow: 0 20px 46px rgba(1,16,36,.14);
  transform: translateY(-4px);
}
/* each card is keyed to its audience: cyan for firms, blue for enterprise */
.ot .ot-card-firms > .kt-inside-inner-col { border-top-color: #00b5e6; }
.ot .ot-card-ent   > .kt-inside-inner-col { border-top-color: #1471c9; }
/* head is ONE heading: ::before is the 44px icon tile, the span is the pill */
.ot .ot-cardhead {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.ot .ot-cardhead::before {
  content: ""; flex: none; width: 44px; height: 44px; border-radius: 12px;
  background-repeat: no-repeat; background-position: center;
  background-size: 23px 23px, cover;
  box-shadow: 0 6px 16px rgba(1,16,36,.16);
}
.ot .ot-card-firms .ot-cardhead::before {
  background-image: url("/wp-content/uploads/tf-ot-icons/ot-worker-white.svg"),
                    linear-gradient(145deg, #011024 0%, #04529a 130%);
}
.ot .ot-card-ent .ot-cardhead::before {
  background-image: url("/wp-content/uploads/tf-ot-icons/ot-desktop-white.svg"),
                    linear-gradient(145deg, #04529a 0%, #148cfc 140%);
}
.ot .ot-pill {
  display: inline-block; text-align: right;
  background: #f6f7fa; border: 1px solid #e2e6ee; border-radius: 999px;
  padding: 7px 14px; color: #475067; white-space: nowrap;
}
.ot .ot-cardh3 a { color: inherit; text-decoration: none; }
.ot .ot-cardh3 a:hover { color: #1471c9; }
/* the source's divider rule, carried by the label above the checklist */
.ot .ot-cardlabel {
  margin-top: 24px !important;
  padding-top: 22px;
  border-top: 1px solid #e2e6ee;
}
.ot .ot-checks .kt-svg-icon-list-single {
  display: inline-flex; align-items: center; justify-content: center;
  flex: none; width: 20px; height: 20px; padding: 0;
  background: rgba(20,113,201,.10); border-radius: 6px;
}
.ot .ot-checks .kt-svg-icon-list-single svg { width: 12px; height: 12px; }
.ot .ot-stats > .kt-row-column-wrap {
  margin-top: 26px; padding-top: 24px; border-top: 1px solid #e2e6ee;
}
.ot .ot-cardbtn { margin-top: auto !important; padding-top: 26px; }

/* --------------------------------------------------- 3. comparison ------- */
.ot .ot-leadc { margin-bottom: 0 !important; }
.ot .ot-table > .kt-inside-inner-col {
  margin-top: 44px;
  background: #ffffff;
  border: 1px solid #e2e6ee;
  border-radius: 16px;
  overflow: hidden;
}
.ot .ot-cell > .kt-inside-inner-col { padding: 16px 20px; }
/* the label column is a tinted spine down the left of the table */
.ot .ot-cell-dim > .kt-inside-inner-col { background: #f6f7fa; }
.ot .ot-trow > .kt-row-column-wrap { border-top: 1px solid #e2e6ee; }
/* vertical hairlines between the three columns */
.ot .ot-cell + .ot-cell > .kt-inside-inner-col { border-left: 1px solid #e2e6ee; }
.ot .ot-thead .ot-cell + .ot-cell > .kt-inside-inner-col { border-left-color: rgba(255,255,255,.12); }
.ot .ot-thead .ot-cell-dim > .kt-inside-inner-col { background: transparent; }
/* colour keys: cyan = security firms, blue = enterprise security */
.ot .ot-thcol { display: flex; align-items: center; }
.ot .ot-thcol::before {
  content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%;
  margin-right: 9px;
}
.ot .ot-dot-firms::before { background: #00b5e6; }
.ot .ot-dot-ent::before   { background: #1471c9; }
.ot .ot-cmpbtns { margin-top: 34px !important; }

/* --------------------------------------------- 4. shared foundation ----- */
.ot .ot-leadnavy { margin-bottom: 40px !important; }
.ot .ot-shared > .kt-row-column-wrap { row-gap: 18px; align-items: stretch; }
.ot .ot-shared > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; }
.ot .ot-scard > .kt-inside-inner-col {
  height: 100%;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 14px;
  padding: 24px 22px 26px;
}
/* 26px white brand icon above each title */
.ot .ot-sh3::before {
  content: ""; display: block; width: 26px; height: 26px; margin-bottom: 18px;
  background-repeat: no-repeat; background-position: left center;
  background-size: contain;
}
.ot .ot-ico-gps::before     { background-image: url("/wp-content/uploads/tf-ot-icons/ot-gps-white.svg"); }
.ot .ot-ico-doc::before     { background-image: url("/wp-content/uploads/tf-ot-icons/ot-doc-white.svg"); }
.ot .ot-ico-lock::before    { background-image: url("/wp-content/uploads/tf-ot-icons/ot-lock-white.svg"); }
.ot .ot-scard .ot-ico-desktop::before { background-image: url("/wp-content/uploads/tf-ot-icons/ot-desktop-white.svg"); }

/* ------------------------------------------- 5. narrow by sector -------- */
.ot .ot-indgrid > .kt-row-column-wrap { row-gap: 40px; align-items: center; }
.ot .ot-tiles > .kt-row-column-wrap { row-gap: 12px; }
.ot .ot-tile > .kt-inside-inner-col {
  position: relative;
  display: flex; flex-direction: column; justify-content: center;
  background: #f6f7fa;
  border: 1px solid #e2e6ee;
  border-radius: 12px;
  padding: 15px 40px 15px 52px;
  transition: border-color .2s ease-out, background .2s ease-out, box-shadow .2s ease-out, transform .2s ease-out;
}
.ot .ot-tile > .kt-inside-inner-col:hover {
  border-color: #00b5e6; background: #ffffff;
  box-shadow: 0 12px 30px rgba(1,16,36,.12);
  transform: translateY(-2px);
}
/* 22px blue brand icon, pinned left */
.ot .ot-tilename::before {
  content: ""; position: absolute; left: 18px; top: 50%;
  transform: translateY(-50%);
  width: 22px; height: 22px;
  background-repeat: no-repeat; background-position: center;
  background-size: contain;
}
.ot .ot-tile .ot-ico-lock::before   { background-image: url("/wp-content/uploads/tf-ot-icons/ot-lock-blue.svg"); }
.ot .ot-ico-care::before            { background-image: url("/wp-content/uploads/tf-ot-icons/ot-care-blue.svg"); }
.ot .ot-ico-star::before            { background-image: url("/wp-content/uploads/tf-ot-icons/ot-star-blue.svg"); }
.ot .ot-ico-mgmt::before            { background-image: url("/wp-content/uploads/tf-ot-icons/ot-mgmt-blue.svg"); }
.ot .ot-ico-pin::before             { background-image: url("/wp-content/uploads/tf-ot-icons/ot-pin-blue.svg"); }
.ot .ot-ico-growth::before          { background-image: url("/wp-content/uploads/tf-ot-icons/ot-growth-blue.svg"); }
/* chevron on the column's ::after, which Kadence never touches */
.ot .ot-tile > .kt-inside-inner-col::after {
  content: "\203A"; position: absolute; right: 18px; top: 50%;
  transform: translateY(-50%);
  font-size: 15px; line-height: 1; color: #c4ccd9;
}
.ot .ot-tilename a { color: inherit; text-decoration: none; }
/* one anchor, stretched over the whole tile, so the tile is clickable without
   nesting a second link inside it */
.ot .ot-tilename a::after { content: ""; position: absolute; inset: 0; }

/* ------------------------------------------------------------------ cta -- */
.ot .ot-ctalead { margin-bottom: 32px !important; }

/* ================================================================ tablet == */
@media (max-width: 1024px) {
  .ot .ot-card > .kt-inside-inner-col { padding: 26px 26px 28px; }
  .ot .ot-cell > .kt-inside-inner-col { padding: 14px 15px; }
  .ot .ot-narrow-l { max-width: none; }
  .ot .ot-heroh1, .ot .ot-herosub { max-width: none; }
  /* second row of the 2x2 shared grid */
  .ot .ot-indgrid > .kt-row-column-wrap { row-gap: 34px; }
}

/* ================================================================ mobile == */
@media (max-width: 767px) {
  .ot .ot-h2c { margin-bottom: 32px !important; }
  .ot .ot-card > .kt-inside-inner-col { padding: 24px 22px 26px; }
  .ot .ot-cardhead { flex-direction: column; align-items: flex-start; gap: 14px; }
  .ot .ot-pill { text-align: left; white-space: normal; }
  /* the table drops its header and restacks as labelled pairs */
  .ot .ot-thead { display: none !important; }
  .ot .ot-table > .kt-inside-inner-col { margin-top: 32px; }
  .ot .ot-cell + .ot-cell > .kt-inside-inner-col { border-left: 0; }
  .ot .ot-trow > .kt-row-column-wrap { border-top: 2px solid #e2e6ee; }
  .ot .ot-cell > .kt-inside-inner-col { padding: 14px 18px; }
  .ot .ot-cell-dim > .kt-inside-inner-col { padding-bottom: 4px; }
  .ot .ot-td::before {
    display: block; margin-bottom: 5px;
    font-size: 10.5px; font-weight: 700; letter-spacing: .12em;
    text-transform: uppercase; color: #67738a;
  }
  .ot .ot-td-firms::before { content: "Security firms"; }
  .ot .ot-td-ent::before   { content: "Enterprise security"; }
  .ot .ot-scard > .kt-inside-inner-col { padding: 22px 20px 24px; }
  .ot .ot-tile > .kt-inside-inner-col { padding: 14px 36px 14px 48px; }
  .ot .ot-tilename::before { left: 15px; width: 20px; height: 20px; }
  .ot .ot-narrow { max-width: none; }
}

/* ======================================================== reduced motion == */
@media (prefers-reduced-motion: reduce) {
  .ot .ot-card > .kt-inside-inner-col,
  .ot .ot-tile > .kt-inside-inner-col { transition: none; }
  .ot .ot-card > .kt-inside-inner-col:hover,
  .ot .ot-tile > .kt-inside-inner-col:hover { transform: none; }
}

/* ===== TF ORGANIZATION TYPES (.ot, page 14554) - END ===== */

/* ===== TF GUARDTEK (.gtk, page 14342) - START ===== */
/* Page 14342, /products/guardtek/.
   Layout + card chrome only; all type and colour sit on native Kadence block
   controls (tfgtk_type()). Icon tiles are native kadence/single-icon blocks, so
   this file styles NO icons - only their alignment.

   The dotted globe is NOT imported. The hero keeps its inherited navy gradient
   plus ONE cyan radial wash (::after) and a masked grid texture (::before).
   No warm cream anywhere; light bands are palette8 #f6f7fa.

   Hard-won rules obeyed here (project + GOTCHA memories):
   1. NEVER set background-image on a ROW ELEMENT - Kadence emits the row's own
      gradient there. Row ::before / ::after ARE free (the row overlay is a real
      div, .kt-row-layout-overlay), and that is where the textures live.
   2. .kt-inside-inner-col is NOT display:flex. Kadence only sets it via
      '.kt-row-valign-middle.kt-inner-column-height-full > ... ', so every
      align-items / justify-content below declares display:flex itself.
   3. '> .kt-inside-inner-col' on a ROW never matches. Rows use
      '> .kt-row-column-wrap'; only COLUMNS have .kt-inside-inner-col.
   4. Kadence emits margin-left/right:0 on each advancedheading at (0,3,0), so
      any heading margin changed here needs !important.
   5. Kadence emits opacity:.3 on EVERY column's .kt-inside-inner-col:before -
      so column ::before is never used for decoration; ::after is free and
      carries the timeline connectors.
   6. box-sizing is border-box: height + padding on one element shrinks the
      content box.
   7. columnGutter 'none' emits column-gap:0, so gaps are re-declared here. */

/* ---------------------------------------------------------------- shared -- */
.gtk .gtk-narrow-l { max-width: 620px; }
.gtk .gtk-narrow-c {
  max-width: 620px;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* ------------------------------------------------------------------ hero -- */
.gtk.page-hero { position: relative; overflow: hidden; }
/* masked 44px grid texture */
.gtk.page-hero::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 44px 44px;
  -webkit-mask-image: radial-gradient(80% 70% at 70% 0%, #011024, transparent);
  mask-image: radial-gradient(80% 70% at 70% 0%, #011024, transparent);
}
/* the single radial glow allowed on this page */
.gtk.page-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: radial-gradient(ellipse 60% 55% at 78% 8%, rgba(0,181,230,.20) 0%, transparent 62%);
}
.gtk.page-hero > .kt-row-column-wrap { position: relative; z-index: 1; }

/* eyebrow row: label + EMEA pill on one line */
.gtk .gtk-eyerow {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-bottom: 16px !important;
}
.gtk .gtk-eb { display: inline-flex; align-items: center; }
/* live dot */
.gtk .gtk-eb::before {
  content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%;
  background: #bde72a; margin-right: 9px;
  box-shadow: 0 0 0 4px rgba(189,231,42,.16);
}
.gtk .gtk-emea {
  display: inline-flex; align-items: center;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px; padding: 4px 11px;
  color: rgba(255,255,255,.8); letter-spacing: .08em;
}
/* EU field: a blue chip with a ring of stars, drawn with two gradients so no
   flag asset is needed */
.gtk .gtk-emea::before {
  content: ""; flex: none; width: 20px; height: 14px; border-radius: 2px;
  margin-right: 8px; background-color: #003399;
  background-image:
    radial-gradient(circle at 50% 22%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 50% 78%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 26% 50%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 74% 50%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 33% 28%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 67% 28%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 33% 72%, #fc0 0 1px, transparent 1.2px),
    radial-gradient(circle at 67% 72%, #fc0 0 1px, transparent 1.2px);
}
.gtk .gtk-heroh1 { max-width: 15ch; }
.gtk .gtk-heroh1 .gtk-hl { color: #34c6ef; }
.gtk .gtk-herosub { max-width: 46ch; }
.gtk .gtk-hstats > .kt-row-column-wrap { max-width: 340px; }

/* ---------- hero console card ---------- */
/* No drop shadow: the design contract forbids shadows on cards on navy. */
.gtk .gtk-console > .kt-inside-inner-col {
  background: rgba(255,255,255,.035);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 16px; overflow: hidden; padding: 0;
}
.gtk .gtk-conbar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 13px 15px; border-bottom: 1px solid rgba(255,255,255,.10);
}
.gtk .gtk-ct { display: inline-flex; align-items: center; }
.gtk .gtk-ct::before {
  content: ""; flex: none; width: 13px; height: 13px; margin-right: 8px;
  border-radius: 50%; border: 1.6px solid #34c6ef;
}
.gtk .gtk-cs {
  display: inline-flex; align-items: center; white-space: nowrap;
  text-transform: uppercase; letter-spacing: .12em; font-weight: 700; font-size: 10px;
}
.gtk .gtk-cs::before {
  content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%;
  background: #bde72a; margin-right: 7px;
  box-shadow: 0 0 0 3px rgba(189,231,42,.18);
}
/* map strip: five "pins" are five radial gradients, so no extra markup */
.gtk .gtk-mapstrip > .kt-inside-inner-col {
  height: 132px; padding: 0;
  background-color: #011024;
  background-image:
    radial-gradient(circle at 28% 58%, rgba(189,231,42,.85) 0 3px, rgba(189,231,42,.18) 4px, transparent 13px),
    radial-gradient(circle at 63% 38%, rgba(0,181,230,.9) 0 3px, rgba(0,181,230,.20) 4px, transparent 14px),
    radial-gradient(circle at 74% 66%, rgba(189,231,42,.85) 0 3px, rgba(189,231,42,.18) 4px, transparent 13px),
    radial-gradient(circle at 44% 78%, rgba(245,165,36,.9) 0 3px, rgba(245,165,36,.20) 4px, transparent 13px),
    radial-gradient(circle at 52% 26%, rgba(0,181,230,.9) 0 3px, rgba(0,181,230,.20) 4px, transparent 14px),
    linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size: auto, auto, auto, auto, auto, 26px 26px, 26px 26px;
  border-bottom: 1px solid rgba(255,255,255,.10);
}
/* activity rows: one heading each, spans flexed apart */
.gtk .gtk-feedrow {
  display: flex; align-items: flex-start; gap: 11px;
  padding: 11px 15px; border-bottom: 1px solid rgba(255,255,255,.07);
}
.gtk .gtk-feedrow:last-child { border-bottom: 0; }
.gtk .gtk-fi {
  flex: none; width: 20px; height: 20px; border-radius: 6px; margin-top: 1px;
  background: rgba(0,181,230,.18); border: 1px solid rgba(0,181,230,.35);
}
.gtk .gtk-fk-tour .gtk-fi { background: rgba(20,113,201,.20); border-color: rgba(20,113,201,.4); }
.gtk .gtk-fk-rep  .gtk-fi { background: rgba(189,231,42,.16); border-color: rgba(189,231,42,.36); }
.gtk .gtk-fb { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.gtk .gtk-fs {
  font-size: 10.5px; font-weight: 500; line-height: 1.35;
  color: rgba(234,242,251,.45); letter-spacing: 0; margin-top: 2px;
}
.gtk .gtk-fst {
  flex: none; font-size: 9.5px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: rgba(234,242,251,.4); white-space: nowrap;
  padding-top: 2px;
}
.gtk .gtk-fk-scan .gtk-fst { color: #bde72a; }

/* --------------------------------------------------------- 2. promise ---- */
.gtk .gtk-quote { max-width: 22ch; }
.gtk .gtk-quote .gtk-qi { color: #04529a; }
.gtk .gtk-pstats > .kt-row-column-wrap { justify-items: end; }

/* --------------------------------------------------------- 3. pillars --- */
.gtk .gtk-leadl { margin-bottom: 44px !important; }
.gtk .gtk-pillars > .kt-row-column-wrap { row-gap: 22px; align-items: stretch; }
.gtk .gtk-pillars > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; }
.gtk .gtk-pillar > .kt-inside-inner-col {
  display: flex; flex-direction: column; height: 100%;
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 16px;
  padding: 28px 26px 26px;
  box-shadow: 0 1px 3px rgba(1,16,36,.07);
  transition: box-shadow .22s ease-out, transform .22s ease-out, border-color .22s ease-out;
}
.gtk .gtk-pillar > .kt-inside-inner-col:hover {
  border-color: #00b5e6;
  box-shadow: 0 18px 44px rgba(1,16,36,.13);
  transform: translateY(-3px);
}
.gtk .gtk-pilicon { margin-bottom: 18px; }
.gtk .gtk-pilchecks { margin-top: auto !important; padding-top: 4px; }
.gtk .gtk-plink { margin-top: 18px !important; padding-top: 16px; border-top: 1px solid #e2e6ee; }
.gtk .gtk-plink a { color: inherit; text-decoration: none; }
.gtk .gtk-plink a::after { content: " \2192"; }
.gtk .gtk-plink a:hover { color: #00b5e6; }

/* ---------------------------------------------------- 4. safety panel --- */
/* the dark panel is a COLUMN inside a light row, so it owns the radius */
.gtk .gtk-panel > .kt-inside-inner-col {
  background: linear-gradient(150deg, #011024 0%, #04529a 190%);
  border: 1px solid rgba(0,181,230,.30);
  border-radius: 28px;
  padding: 68px 56px 56px;
}
.gtk .gtk-leadpanel { margin-bottom: 34px !important; }
.gtk .gtk-slink a { color: inherit; text-decoration: none; }
.gtk .gtk-slink a::after { content: " \2192"; }
.gtk .gtk-safefeat > .kt-row-column-wrap { row-gap: 16px; align-items: stretch; }
.gtk .gtk-safefeat > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; }
.gtk .gtk-sf > .kt-inside-inner-col {
  display: flex; flex-direction: column; height: 100%;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 14px; padding: 20px 18px 18px;
}
.gtk .gtk-sf-red > .kt-inside-inner-col {
  background: rgba(230,0,15,.07);
  border-color: rgba(230,0,15,.32);
}
.gtk .gtk-sficon { margin-bottom: 14px; }
.gtk .gtk-tagline { margin-top: auto !important; padding-top: 12px; }
/* alarm strip */
.gtk .gtk-alertwide {
  margin-top: 22px !important;
}
.gtk .gtk-alertwide > .kt-row-column-wrap {
  background: rgba(0,7,18,.42);
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 16px;
  padding: 20px 22px;
  row-gap: 20px;
  align-items: center;
}
.gtk .gtk-alerth { display: flex; align-items: center; gap: 11px; }
.gtk .gtk-bang {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 8px;
  background: #e6000f; color: #ffffff; font-weight: 700; font-size: 14px;
  box-shadow: 0 0 0 5px rgba(230,0,15,.14);
}
.gtk .gtk-timeline > .kt-row-column-wrap { row-gap: 18px; }
.gtk .gtk-step > .kt-inside-inner-col { position: relative; padding-right: 12px; }
/* connector between steps: column ::after, because ::before is Kadence's */
.gtk .gtk-timeline > .kt-row-column-wrap > .wp-block-kadence-column:not(:last-child) > .kt-inside-inner-col::after {
  content: ""; position: absolute; left: 30px; right: 4px; top: 11px; height: 1px;
  background: rgba(0,181,230,.30);
}
.gtk .gtk-stept { display: flex; align-items: center; gap: 9px; }
.gtk .gtk-n {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  background: rgba(0,181,230,.16); border: 1px solid rgba(0,181,230,.45);
  color: #34c6ef; font-size: 10.5px; font-weight: 700; letter-spacing: 0;
}

/* -------------------------------------------------- 5. command center --- */
.gtk .gtk-cclead { margin-bottom: 28px !important; }
.gtk .gtk-ccrow > .kt-row-column-wrap { row-gap: 0; align-items: start; }
.gtk .gtk-ccrow { margin-bottom: 18px !important; }
.gtk .gtk-cciconcol > .kt-inside-inner-col { padding-top: 2px; }
.gtk .gtk-ccvis > .kt-inside-inner-col {
  background: #011024;
  border: 1px solid rgba(0,181,230,.22);
  border-radius: 18px; overflow: hidden; padding: 0;
  box-shadow: 0 24px 60px rgba(1,16,36,.20);
}
.gtk .gtk-mapbar {
  display: flex; align-items: center;
  padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,.09);
}
.gtk .gtk-mdot {
  flex: none; width: 7px; height: 7px; border-radius: 50%;
  background: #bde72a; margin-right: 9px;
}
/* heat map: gradients only, with four real text labels on top */
.gtk .gtk-ccmap > .kt-inside-inner-col {
  position: relative; min-height: 290px; padding: 0;
  background-color: #011024;
  background-image:
    radial-gradient(circle at 34% 40%, rgba(230,0,15,.42) 0%, transparent 42%),
    radial-gradient(circle at 68% 58%, rgba(0,181,230,.36) 0%, transparent 40%),
    radial-gradient(circle at 52% 82%, rgba(189,231,42,.34) 0%, transparent 38%),
    radial-gradient(circle at 82% 30%, rgba(20,113,201,.34) 0%, transparent 34%),
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: auto, auto, auto, auto, 30px 30px, 30px 30px;
}
.gtk .gtk-mlbl {
  position: absolute; transform: translate(-50%, -50%);
  background: rgba(0,10,22,.72);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px; padding: 5px 11px; white-space: nowrap;
}
.gtk .gtk-mlbl-a { left: 32%; top: 36%; }
.gtk .gtk-mlbl-b { left: 66%; top: 56%; }
.gtk .gtk-mlbl-c { left: 50%; top: 80%; }
.gtk .gtk-mlbl-d { left: 80%; top: 28%; }
.gtk .gtk-cclegend {
  display: flex; flex-wrap: wrap; gap: 8px 16px;
  padding: 12px 16px; border-top: 1px solid rgba(255,255,255,.09);
}
.gtk .gtk-lg { display: inline-flex; align-items: center; }
.gtk .gtk-lg::before {
  content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%; margin-right: 7px;
}
.gtk .gtk-lg-g::before { background: #bde72a; }
.gtk .gtk-lg-y::before { background: #f5a524; }
.gtk .gtk-lg-r::before { background: #e6000f; }
.gtk .gtk-lg-c::before { background: #00b5e6; }

/* --------------------------------------------------------- 6. toolkit --- */
/* 12 columns in a 4-track grid auto-flow into three rows */
.gtk .gtk-toolgrid > .kt-row-column-wrap { row-gap: 16px; align-items: stretch; }
.gtk .gtk-toolgrid > .kt-row-column-wrap > .wp-block-kadence-column { align-self: stretch; }
.gtk .gtk-tool > .kt-inside-inner-col {
  height: 100%;
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 10px;
  padding: 18px 16px 18px;
  transition: border-color .2s ease-out, box-shadow .2s ease-out;
}
.gtk .gtk-ticon { margin-bottom: 14px; }

/* -------------------------------------------------------- 7. platform --- */
.gtk .gtk-pflead { margin-bottom: 18px !important; }
.gtk .gtk-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.gtk .gtk-tag {
  display: inline-block;
  background: #eef1f6; border: 1px solid #e2e6ee; border-radius: 100px;
  padding: 6px 12px;
}
.gtk .gtk-facts > .kt-row-column-wrap { row-gap: 14px; }
.gtk .gtk-fact > .kt-inside-inner-col {
  height: 100%;
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 10px; padding: 22px;
}
/* the third fact spans the full width of the 2-track grid */
.gtk .gtk-fact-tall { grid-column: 1 / -1; }

/* ------------------------------------------------------ 8. follow hub --- */
.gtk .gtk-newband > .kt-inside-inner-col {
  display: flex; flex-direction: column; align-items: flex-start;
  background: #ffffff; border: 1px solid #e2e6ee; border-radius: 20px;
  padding: 34px 36px 36px;
}
.gtk .gtk-badge {
  display: inline-block; background: #bde72a; border-radius: 100px;
  padding: 5px 11px; margin-bottom: 14px !important;
}
.gtk .gtk-fhp { max-width: 56ch; }
.gtk .gtk-fhbtn { margin-top: 22px !important; }

/* ----------------------------------------------------- 9. cross-sell --- */
.gtk .gtk-crossgrid > .kt-row-column-wrap { row-gap: 24px; align-items: center; }
/* .gtk-tt is the HEADING; .gtk-ttcol is its column */
.gtk .gtk-ttcol > .kt-inside-inner-col {
  display: flex; align-items: center; justify-content: flex-start;
}
.gtk .gtk-tt {
  display: inline-flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; border-radius: 13px;
  background: #e6000f;
  box-shadow: 0 0 0 6px rgba(230,0,15,.12);
}
.gtk .gtk-xp { max-width: 58ch; }
.gtk .gtk-xbtn { justify-content: flex-end; }

/* ---------------------------------------------------- 10. final CTA ---- */
.gtk.page-cta { position: relative; overflow: hidden; }
/* masked grid over the blue-to-cyan gradient the ROW itself paints */
.gtk.page-cta::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(255,255,255,.14) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.14) 1px, transparent 1px);
  background-size: 40px 40px;
  -webkit-mask-image: radial-gradient(70% 80% at 50% 0%, #011024, transparent);
  mask-image: radial-gradient(70% 80% at 50% 0%, #011024, transparent);
  opacity: .5;
}
.gtk.page-cta > .kt-row-column-wrap { position: relative; z-index: 1; }

/* ================================================================ tablet == */
@media (max-width: 1024px) {
  .gtk .gtk-panel > .kt-inside-inner-col { padding: 44px 30px 36px; border-radius: 22px; }
  .gtk .gtk-heroh1 { max-width: none; }
  .gtk .gtk-herosub { max-width: none; }
  .gtk .gtk-narrow-l { max-width: none; }
  .gtk .gtk-console, .gtk .gtk-ccvis { max-width: 560px; margin-left: auto; margin-right: auto; }
  .gtk .gtk-pstats > .kt-row-column-wrap { justify-items: start; }
  .gtk .gtk-xbtn { justify-content: flex-start; }
  /* the timeline becomes 2x2, so the horizontal connector is dropped */
  .gtk .gtk-timeline > .kt-row-column-wrap > .wp-block-kadence-column:not(:last-child) > .kt-inside-inner-col::after { display: none; }
}

/* ================================================================ mobile == */
@media (max-width: 767px) {
  .gtk .gtk-eyerow { gap: 9px; }
  .gtk .gtk-panel > .kt-inside-inner-col { padding: 34px 20px 28px; border-radius: 18px; }
  .gtk .gtk-alertwide > .kt-row-column-wrap { padding: 18px; }
  .gtk .gtk-pillar > .kt-inside-inner-col { padding: 24px 22px; }
  .gtk .gtk-tool > .kt-inside-inner-col { padding: 15px 13px; }
  .gtk .gtk-newband > .kt-inside-inner-col { padding: 26px 22px 28px; }
  .gtk .gtk-ccmap > .kt-inside-inner-col { min-height: 230px; }
  .gtk .gtk-mlbl { font-size: 9.5px !important; padding: 4px 9px; }
  .gtk .gtk-fhp, .gtk .gtk-xp, .gtk .gtk-quote { max-width: none; }
  .gtk .gtk-hstats > .kt-row-column-wrap { max-width: none; }
  .gtk .gtk-narrow-c { max-width: none; }
  /* the 12 toolkit cards stay two-up, so trim their type a little */
  .gtk .gtk-ticon { margin-bottom: 10px; }
}

/* ======================================================== reduced motion == */
@media (prefers-reduced-motion: reduce) {
  .gtk .gtk-pillar > .kt-inside-inner-col,
  .gtk .gtk-tool > .kt-inside-inner-col { transition: none; }
  .gtk .gtk-pillar > .kt-inside-inner-col:hover { transform: none; }
  .gtk .gtk-eb::before, .gtk .gtk-cs::before, .gtk .gtk-bang { box-shadow: none; }
}

/* ===== TF GUARDTEK (.gtk, page 14342) - END ===== */

/* ===== TF HOME (.tfh, page 2) - START ===== */
/* Scope: every top-level row carries .tfh. Column inner is .kt-inside-inner-col;
   note that on a ROW '> .kt-inside-inner-col' matches nothing, so all such
   selectors below target COLUMNS only. Column ::before is avoided because
   Kadence forces opacity:.3 on .kt-inside-inner-col:before. */

.tfh a{text-decoration:none;}
.tfh p{text-wrap:pretty;}

/* ---------------------------------------------------------------- 1. hero */
.tfh-hero{position:relative;overflow:hidden;background-color:#01152f!important;
  background-image:linear-gradient(157deg,rgba(0,10,24,.93) 0%,rgba(1,21,47,.88) 34%,rgba(4,45,94,.82) 68%,rgba(5,64,126,.80) 100%),url(/wp-content/uploads/2026/07/tf-home-hero-globe.webp)!important;
  background-position:center center,center right!important;
  background-size:cover,cover!important;
  background-repeat:no-repeat,no-repeat!important;}
.tfh-hero::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 52% 70% at 80% 40%,rgba(0,181,230,.22) 0%,transparent 60%);}
.tfh-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:150px;pointer-events:none;z-index:0;
  background:linear-gradient(to bottom,transparent 0%,#ffffff 100%);}
.tfh-hero > .kt-row-column-wrap{position:relative;z-index:1;}
.tfh-hero-copy{max-width:560px;}
.tfh-hero .tfh-hero-lede{max-width:480px;}
.tfh-hero-btns{margin-top:32px!important;}
.tfh-hero-btns .kb-button{box-shadow:0 1px 2px rgba(0,0,0,.18);transition:transform .2s ease,box-shadow .2s ease;}
.tfh-hero-btns .kb-button:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.25);}
/* Both hero CTAs share one native button row, so they sit on a single line and
   wrap together on narrow screens. The second is a quiet text link. */
.tfh .tfh-hero-btns{align-items:center!important;flex-wrap:wrap!important;row-gap:10px;}
.tfh .tfh-hero-btns .kb-button{white-space:nowrap;}
.tfh .tfh-hero-btns .tfh-btn-quiet,
.tfh .tfh-hero-btns .tfh-btn-quiet .kb-button{background:transparent!important;
  box-shadow:none!important;font-weight:600!important;}
.tfh .tfh-hero-btns .tfh-btn-quiet:hover,
.tfh .tfh-hero-btns .tfh-btn-quiet .kb-button:hover{transform:none!important;
  box-shadow:none!important;background:transparent!important;}

/* hero dispatch diagram (static rebuild of the source's JS animation) */
.tfh-dispatch{position:relative;}
.tfh-dispatch > .kt-inside-inner-col{position:relative;padding:6px 0;}
.tfh-strow{margin:0 0 14px!important;}
.tfh-strow:last-of-type{margin:14px 0 0!important;}
.tfh-st > .kt-inside-inner-col{position:relative;border-radius:13px;padding:13px 14px;
  background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.11);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  transition:border-color .25s ease,background .25s ease,transform .25s ease;}
.tfh-st > .kt-inside-inner-col:hover{transform:translateY(-2px);
  border-color:rgba(0,181,230,.5);background:rgba(255,255,255,.085);}
.tfh-st .tfh-st-k{display:flex;align-items:center;gap:7px;}
.tfh-st .tfh-st-k::before{content:"";width:6px;height:6px;border-radius:50%;flex:none;opacity:1;}
.tfh-st--alert .tfh-st-k::before{background:#e6000f;box-shadow:0 0 0 3px rgba(230,0,15,.18);}
.tfh-st--cyan  .tfh-st-k::before{background:#00b5e6;box-shadow:0 0 0 3px rgba(0,181,230,.18);}
.tfh-st--lime  .tfh-st-k::before{background:#bde72a;box-shadow:0 0 0 3px rgba(189,231,42,.18);}
.tfh-st--plain .tfh-st-k::before{background:#ffffff;box-shadow:0 0 0 3px rgba(255,255,255,.16);}
.tfh-st--alert > .kt-inside-inner-col{border-color:rgba(230,0,15,.34);}
.tfh-st--cyan  > .kt-inside-inner-col{border-color:rgba(0,181,230,.34);}
.tfh-st--lime  > .kt-inside-inner-col{border-color:rgba(189,231,42,.30);}

.tfh .tfh-hub > .kt-inside-inner-col{display:flex!important;flex-direction:column!important;align-items:center;justify-content:center;
  gap:2px;padding:14px 0;position:relative;}

.tfh-legend{margin-top:22px!important;padding-top:16px!important;
  border-top:1px solid rgba(255,255,255,.1);}
.tfh-legend .tfh-lg-t{display:flex;align-items:center;gap:6px;}
.tfh-legend .tfh-lg-t::before{content:"";width:5px;height:5px;border-radius:50%;flex:none;opacity:1;}
.tfh-lg-1 .tfh-lg-t::before{background:#e6000f;}
.tfh-lg-2 .tfh-lg-t::before{background:#00b5e6;}
.tfh-lg-3 .tfh-lg-t::before{background:#ffffff;}
.tfh-lg-4 .tfh-lg-t::before{background:#bde72a;}

/* -------------------------------------------------------- 2. social proof */
.tfh-proof{border-top:1px solid #dde3ec;}
.tfh-proof .tfh-proof-l{margin-bottom:30px!important;}
.tfh-marquee > .kt-inside-inner-col{overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);}
.tfh .tfh-track > .kt-inside-inner-col{display:flex!important;flex-direction:row!important;align-items:center;width:max-content;
  animation:tfhMarquee 34s linear infinite;}
@keyframes tfhMarquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.tfh-track .tfh-logo{margin:0 30px!important;flex:none;display:flex;align-items:center;}
/* full colour - greyscale filter removed */
.tfh-track .tfh-logo img{height:clamp(20px,1.9vw,25px);width:auto;opacity:1!important;
  filter:none!important;transition:transform .2s ease;}
.tfh-track .tfh-logo img:hover{transform:scale(1.06);}
.tfh-stats{margin-top:40px!important;padding-top:36px!important;border-top:1px solid #dde3ec;}
.tfh-stat > .kt-inside-inner-col{text-align:center;}

/* --------------------------------------------------- 3. platform screenshot */
.tfh-shot .tfh-eb-c,.tfh-shot .tfh-h2-c{margin-left:auto;margin-right:auto;}
.tfh-shot .tfh-lede-c{max-width:660px;margin:0 auto 40px!important;}
.tfh-browser > .kt-inside-inner-col{max-width:1040px;margin:0 auto;border-radius:14px;overflow:hidden;
  background:#fff;border:1px solid #dde3ec;box-shadow:0 40px 80px rgba(1,16,36,.22);}
.tfh-bar{position:relative;}
.tfh-bar > .kt-inside-inner-col{padding:9px 14px;background:#f6f7fa;border-bottom:1px solid #dde3ec;}
/* three window lights as one pseudo-element on the OUTER column div */
.tfh-bar::before{content:"";position:absolute;left:14px;top:50%;transform:translateY(-50%);
  width:44px;height:10px;z-index:2;opacity:1!important;
  background-image:radial-gradient(circle 5px at 5px 5px,#ff5f57 98%,transparent),
    radial-gradient(circle 5px at 22px 5px,#febc2e 98%,transparent),
    radial-gradient(circle 5px at 39px 5px,#28c840 98%,transparent);
  background-repeat:no-repeat;}
.tfh-shot-img{margin:0!important;}
.tfh-shot-img img{width:100%;height:auto;display:block;}

/* -------------------------------------------------------- 4. compliance */
.tfh .tfh-chip > .kt-inside-inner-col{display:flex!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center;gap:9px;
  padding:11px 12px;border-radius:7px;background:#fff;border:1px solid #dde3ec;height:100%;}
.tfh-chip-i{flex:none;margin:0!important;}
.tfh-chip-i .kt-svg-icon-wrap{padding:0!important;background:transparent!important;}
.tfh-chip-txt{flex:1 1 auto;}

/* ---------------------------------------------------- 5. impact stories */
.tfh-imp-head{margin-bottom:40px!important;}
.tfh-imp-copy .tfh-imp-l{max-width:520px;}
.tfh-imp-link > .kt-inside-inner-col{text-align:right;}
.tfh-arrow a{display:inline-flex;align-items:center;gap:7px;color:#04529a!important;transition:gap .2s ease;}
.tfh-arrow a:hover{gap:11px;}
.tfh-story > .kt-inside-inner-col{height:100%;border-radius:16px;overflow:hidden;background:#fff;
  border:1px solid #dde3ec;box-shadow:0 1px 3px rgba(1,16,36,.08);
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;}
.tfh-story > .kt-inside-inner-col:hover{transform:translateY(-4px);border-color:#00b5e6;
  box-shadow:0 20px 46px rgba(1,16,36,.14);}
/* Taller navy band. Deliberately NOT display:flex - the icon tile and the pill
   are inline-block siblings that must stay on one line, and flex-direction
   column would stack them. Block flow + min-height + a pushed-down stat
   gives the extra height without touching that pairing. */
.tfh .tfh-story-head > .kt-inside-inner-col{position:relative;
  padding:26px 22px 30px;min-height:206px;
  background:linear-gradient(160deg,#04529a 0%,#011024 100%);}
.tfh .tfh-story-n{margin-top:32px!important;}
.tfh-story-i{display:inline-block;margin:0 0 12px!important;}
.tfh-story-i .kt-svg-icon-wrap{border-radius:999px!important;}
.tfh-story-p{display:inline-block;margin:0 0 14px 7px!important;vertical-align:top;
  padding:4px 9px;border-radius:999px;background:#bde72a;}
.tfh-story-body > .kt-inside-inner-col{padding:20px;display:flex;flex-direction:column;height:100%;}
.tfh-story-f{margin-top:auto!important;}
.tfh-story-f a{display:inline-flex;align-items:center;gap:6px;color:#04529a!important;transition:gap .2s ease;}
.tfh-story-f a:hover{gap:10px;}

/* ------------------------------------------------- 6. connective layer */
/* MOTION LIVES IN THE MARKUP. The dashed beam (.tfh-diagram::before) and both
   keyframe sets are declared in the wp:html block inside this section, where
   Perfmatters RUCSS cannot strip them. Do not re-declare them here - two
   sources for one rule is how the doubled icon tiles on 18023 happened. */
.tfh-connect{position:relative;overflow:hidden;
  background:linear-gradient(160deg,#011024 0%,#06182f 60%,#020c1c 100%)!important;}
.tfh-connect::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 44% 60% at 50% 54%,rgba(0,181,230,.16) 0%,transparent 62%);}
.tfh-connect > .kt-row-column-wrap{position:relative;z-index:1;}
.tfh-connect .tfh-eb-c{text-align:center;}
.tfh-connect .tfh-lede-cn{max-width:560px;margin:0 auto 64px!important;}

/* diagram: 1fr / hub / 1fr capped at the source width, no gutter so the beam
   only shows in the 22px either side of the 124px disc */
/* the two translucent cards */
.tfh-node > .kt-inside-inner-col{border-radius:16px;padding:30px 28px;height:100%;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}

/* card head: fixed 46px badge track + 13px gap, vertically centred */
.tfh-node-head{margin-bottom:16px!important;}
.tfh-node-head > .kt-row-column-wrap{grid-template-columns:46px minmax(0,1fr)!important;
  column-gap:13px!important;align-items:center;}
.tfh-node-badge{max-width:46px;}
.tfh-node-badge > .kt-inside-inner-col{width:46px;height:46px;flex:none;padding:0;
  border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);color:#fff;}
/* right-hand card carries the solid cyan tile with navy glyph */
.tfh-node--cyan .tfh-node-badge > .kt-inside-inner-col{background:#00b5e6;
  border-color:#00b5e6;color:#011024;box-shadow:0 0 24px rgba(0,181,230,.4);}
/* brand glyph via the shared tfc-i mask utility, tinted by the tile currentColor */
.tfh-node-ico{display:block;width:25px;height:25px;flex:none;}

/* bullets */
.tfh-node-li{display:flex;align-items:center;gap:10px;text-align:left!important;
  font-size:13.5px!important;line-height:1.5!important;margin:0 0 8px!important;
  color:rgba(255,255,255,.72)!important;}
.tfh-node-li:last-child{margin-bottom:0!important;}
.tfh-node-li::before{content:"";width:5px;height:5px;border-radius:50%;flex:none;
  background:#33c7f0;opacity:1;}

/* hub column */
/* the Kadence row stacks the three tracks at 1024px */
@media (max-width:1024px){
  .tfh-node{width:100%;max-width:460px;}
  .tfh-node > .kt-inside-inner-col{padding:26px 24px;}
}

/* ---------------------------------------------------- 7. audience chooser */
.tfh-chooser .tfh-lede-c{max-width:680px;margin:0 auto 40px!important;}
.tfh-tabs .kt-tabs-title-list{display:flex!important;flex-wrap:wrap;justify-content:center;
  gap:14px;margin:0 0 40px!important;padding:0;list-style:none;border:0;}
.tfh-tabs .kt-tabs-title-list li{margin:0!important;flex:0 1 320px;}
.tfh-tabs .kt-tabs-title-list li .kt-tab-title{display:flex!important;flex-direction:column;
  align-items:flex-start;gap:2px;text-align:left;height:100%;
  box-shadow:0 1px 3px rgba(1,16,36,.08);transition:box-shadow .2s ease,transform .2s ease;}
.tfh-tabs .kt-tabs-title-list li.kt-tab-title-active .kt-tab-title{box-shadow:0 4px 16px rgba(1,16,36,.14);}
.tfh-tabs .kt-tabs-title-list li .kt-tab-title:hover{transform:translateY(-1px);}
.tfh-tabs .kt-title-text{font-weight:700;letter-spacing:-.01em;}
.tfh-tabs .kt-title-sub-text{display:block;font-size:12px;font-weight:500;line-height:1.4;}
.tfh-tabs .kt-tabs-content-wrap{border:0!important;background:transparent!important;padding:0!important;}
.tfh-vc > .kt-inside-inner-col{height:100%;border-radius:12px;padding:22px;background:#fff;
  border:1px solid #dde3ec;box-shadow:0 1px 3px rgba(1,16,36,.08);
  display:flex;flex-direction:column;transition:border-color .2s ease,box-shadow .2s ease;}
.tfh-vc > .kt-inside-inner-col:hover{border-color:#00b5e6;box-shadow:0 20px 46px rgba(1,16,36,.14);}
.tfh-vc-i{margin:0 0 16px!important;}
.tfh-vc-m{margin-top:auto!important;padding-top:14px;border-top:1px solid #eef1f6;}
.tfh-vc-cta{margin-top:36px!important;}

/* -------------------------------------------------------- 8. platforms */
.tfh-platforms .tfh-h2-n{max-width:760px;}
.tfh-awards{margin:28px 0 44px!important;padding:16px 0!important;
  border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12);}
.tfh-g2-badge{max-width:52px;}
.tfh .tfh-g2-badge > .kt-inside-inner-col{width:42px;height:42px;border-radius:9px;background:#bde72a;
  display:flex!important;flex-direction:row!important;align-items:center;justify-content:center!important;}
.tfh .tfh-rating > .kt-inside-inner-col{display:flex!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center;gap:10px;flex-wrap:wrap;}
.tfh-prod > .kt-inside-inner-col{height:100%;border-radius:14px;padding:26px;
  display:flex;flex-direction:column;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.12);}
.tfh-prod--feat > .kt-inside-inner-col{background:rgba(0,181,230,.075);border-color:rgba(0,181,230,.34);}
.tfh-prod-logo{margin:0 0 18px!important;}
.tfh-prod-logo img{height:23px;width:auto;}
.tfh-wm-row{margin-bottom:18px!important;}
.tfh-wm{font-family:inherit;}
.tfh-wm span{color:#00b5e6;}
.tfh-region{display:inline-block;padding:4px 9px;border-radius:999px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);}
.tfh .tfh-tags > .kt-inside-inner-col{display:flex!important;flex-direction:row!important;justify-content:flex-start!important;flex-wrap:wrap;gap:7px;margin-bottom:22px;}
.tfh-tag{margin:0!important;padding:5px 10px;border-radius:7px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);}
.tfh-prod-cta{margin-top:auto!important;}

/* ---------------------------------------------------------- 9. mission */
.tfh-mission-inner{max-width:720px;margin:0 auto;}
.tfh-m-link a{display:inline-flex;align-items:center;gap:7px;transition:gap .2s ease;}
.tfh-m-link a:hover{gap:11px;}

/* ------------------------------------------------------------- 10. cta */
.tfh-cta{position:relative;overflow:hidden;
  background:linear-gradient(120deg,#011024 0%,#021a56 58%,#04529a 100%)!important;}
.tfh-cta::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 46% 70% at 76% 42%,rgba(0,181,230,.2) 0%,transparent 62%);}
.tfh-cta > .kt-row-column-wrap{position:relative;z-index:1;}
.tfh .tfh-cta-actions > .kt-inside-inner-col{display:flex!important;flex-direction:row!important;justify-content:flex-end!important;}
.tfh-cta-btns{margin:0!important;}

/* ============================================ hero dispatch animation (v2)
   Reinstates the source's closed-loop story natively: alert raised -> guard
   dispatched -> on-site report -> closed in TrackTik. 9.2s loop, 4 x 2.3s
   phases driven purely by animation-delay, so no JS and the copy stays in the
   DOM. Keyframes beat the tone border-colours regardless of specificity. */
.tfh .tfh-st > .kt-inside-inner-col{animation:tfhStation 9.2s ease-in-out infinite;}
.tfh .tfh-st--alert > .kt-inside-inner-col{animation-delay:0s;}
.tfh .tfh-st--cyan  > .kt-inside-inner-col{animation-delay:2.3s;}
.tfh .tfh-st--plain > .kt-inside-inner-col{animation-delay:4.6s;}
.tfh .tfh-st--lime  > .kt-inside-inner-col{animation-delay:6.9s;}
@keyframes tfhStation{
  0%{background:rgba(0,181,230,.15);border-color:rgba(0,181,230,.8);
     transform:translateY(-3px) scale(1.035);box-shadow:0 12px 30px rgba(0,181,230,.2);}
  22%{background:rgba(0,181,230,.15);border-color:rgba(0,181,230,.8);
     transform:translateY(-3px) scale(1.035);box-shadow:0 12px 30px rgba(0,181,230,.2);}
  30%{background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.11);
     transform:none;box-shadow:none;}
  100%{background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.11);
     transform:none;box-shadow:none;}
}
/* the packet + its comet trail travel the four corners of the 2x2 grid */
.tfh .tfh-dispatch::before,.tfh .tfh-dispatch::after{content:"";position:absolute;
  border-radius:50%;pointer-events:none;z-index:3;opacity:1!important;}
.tfh .tfh-dispatch::before{width:11px;height:11px;margin:-5.5px 0 0 -5.5px;
  animation:tfhPacket 9.2s ease-in-out infinite,tfhPacketHue 9.2s step-end infinite;}
.tfh .tfh-dispatch::after{width:26px;height:26px;margin:-13px 0 0 -13px;filter:blur(7px);
  animation:tfhPacket 9.2s ease-in-out infinite,tfhPacketHue 9.2s step-end infinite;
  animation-delay:-.16s;opacity:.55!important;}
@keyframes tfhPacket{
  0%{top:20%;left:24%;} 25%{top:20%;left:76%;}
  50%{top:72%;left:76%;} 75%{top:72%;left:24%;} 100%{top:20%;left:24%;}
}
@keyframes tfhPacketHue{
  0%{background:#e6000f;box-shadow:0 0 12px rgba(230,0,15,.9);}
  25%{background:#00b5e6;box-shadow:0 0 12px rgba(0,181,230,.9);}
  50%{background:#ffffff;box-shadow:0 0 12px rgba(255,255,255,.9);}
  75%{background:#bde72a;box-shadow:0 0 12px rgba(189,231,42,.9);}
}
/* step legend tracks the same 4 phases */
.tfh .tfh-legend .tfh-lg-t{animation:tfhStep 9.2s ease-in-out infinite;}
.tfh .tfh-lg-1 .tfh-lg-t{animation-delay:0s;}
.tfh .tfh-lg-2 .tfh-lg-t{animation-delay:2.3s;}
.tfh .tfh-lg-3 .tfh-lg-t{animation-delay:4.6s;}
.tfh .tfh-lg-4 .tfh-lg-t{animation-delay:6.9s;}
@keyframes tfhStep{
  0%{color:#ffffff;} 22%{color:#ffffff;}
  30%{color:rgba(255,255,255,.55);} 100%{color:rgba(255,255,255,.55);}
}

/* ============================ animation behind the Trackforce hub (v3 FIX)
   v2 hung the rings off the OUTER column div and the conic sweep off the inner
   column. Both resolve against .kadence-column{UID} - the only position:relative
   ancestor Kadence sets - and that column is stretched to full row height by
   verticalAlignment:middle + columnsInnerHeight. So top:50% centred on the
   COLUMN, not on the lockup, and the rings drifted away from the mark.
   v3 hangs everything off the mark figure itself, which is where the design puts
   the glow, and uses an animated box-shadow so ONE element emits two concentric
   rings that cannot drift off centre. */
.tfh .tfh-hub-mark,.tfh .tfh-chub-mark{position:relative;border-radius:50%;
  background:radial-gradient(circle at 50% 50%,rgba(0,181,230,.30) 0%,rgba(0,181,230,.10) 58%,transparent 72%);
  box-shadow:inset 0 0 0 1px rgba(0,181,230,.42);}
.tfh .tfh-hub-mark{width:64px;height:64px;padding:15px;margin:0 auto 12px!important;}
.tfh .tfh-chub-mark{width:86px;height:86px;padding:21px;margin:0 auto 16px!important;}
.tfh .tfh-hub-mark img,.tfh .tfh-chub-mark img{width:100%;height:100%;object-fit:contain;
  position:relative;z-index:2;filter:drop-shadow(0 0 12px rgba(0,181,230,.65));}
/* two expanding rings from ONE element - always concentric with the mark */
.tfh .tfh-hub-mark::after,.tfh .tfh-chub-mark::after{content:"";position:absolute;
  left:0;top:0;right:0;bottom:0;border-radius:50%;pointer-events:none;z-index:1;
  opacity:1!important;animation:tfhPulse 3.2s ease-out infinite;}
@keyframes tfhPulse{
  0%{box-shadow:0 0 0 0 rgba(0,181,230,.55),0 0 0 0 rgba(0,181,230,.28);}
  70%{box-shadow:0 0 0 22px rgba(0,181,230,.05),0 0 0 40px rgba(0,181,230,.03);}
  100%{box-shadow:0 0 0 30px rgba(0,181,230,0),0 0 0 54px rgba(0,181,230,0);}
}
/* slow conic sweep behind the mark */
.tfh .tfh-hub-mark::before,.tfh .tfh-chub-mark::before{content:"";position:absolute;
  left:50%;top:50%;width:200%;height:200%;border-radius:50%;
  pointer-events:none;z-index:0;opacity:.6!important;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(0,181,230,.5) 66deg,transparent 150deg);
  filter:blur(11px);animation:tfhSweep 6.5s linear infinite;}
@keyframes tfhSweep{from{transform:translate(-50%,-50%) rotate(0deg);}
  to{transform:translate(-50%,-50%) rotate(360deg);}}
.tfh .tfh-hub-n,.tfh .tfh-hub-s,.tfh .tfh-chub-n,.tfh .tfh-chub-s{position:relative;z-index:2;}

/* ==================================== hero graphic scaled up (client: bigger)
   Column split moved to 46/54 in the builder; this scales the diagram itself so
   it reads at the size the reference screenshot shows (~470px tall). */
.tfh .tfh-dispatch > .kt-inside-inner-col{position:relative;padding:10px 0;min-height:470px;
  display:flex;flex-direction:column;justify-content:center;}
.tfh .tfh-strow{margin:0 0 18px!important;}
.tfh .tfh-strow:last-of-type{margin:18px 0 0!important;}
.tfh .tfh-st > .kt-inside-inner-col{border-radius:15px;padding:17px 18px;}
.tfh .tfh-st .tfh-st-k{font-size:10.5px!important;margin-bottom:9px!important;}
.tfh .tfh-st .tfh-st-t{font-size:15px!important;line-height:1.35!important;margin-bottom:5px!important;}
.tfh .tfh-st .tfh-st-s{font-size:12px!important;}
.tfh .tfh-hub > .kt-inside-inner-col{padding:20px 0;}
.tfh .tfh-hub .tfh-hub-n{font-size:14.5px!important;}
.tfh .tfh-hub .tfh-hub-s{font-size:10px!important;}
.tfh .tfh-legend{margin-top:28px!important;padding-top:20px!important;}
.tfh .tfh-legend .tfh-lg-t{font-size:11px!important;}
.tfh .tfh-hero-copy{max-width:520px;}

/* ============================================== audience tab badges (client)
   The reference tabs carry an icon badge; the v2 build shipped them without one.
   The badge is a dynamic-icon span authored straight into the tab markup
   and resolved by Kadence's render_block filter. */
.tfh .tfh-tabs .kt-tabs-title-list li .kt-tab-title{flex-direction:row!important;
  align-items:center!important;gap:13px!important;}
.tfh .tfh-tab-badge{flex:none;width:38px;height:38px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  background:#eef1f6;color:#04529a;transition:background .2s ease,color .2s ease;}
.tfh .tfh-tab-badge svg{width:19px;height:19px;display:block;}
.tfh .tfh-tabs .kt-tab-title-active .tfh-tab-badge{background:rgba(255,255,255,.16);color:#ffffff;}
.tfh .tfh-tab-copy{display:flex;flex-direction:column;gap:2px;min-width:0;}

/* ============================================ spacing / rhythm pass (client)
   Consistent vertical rhythm and breathing room between nested rows. */
.tfh .tfh-proof .tfh-proof-l{margin-bottom:34px!important;}
.tfh .tfh-marquee > .kt-inside-inner-col{padding:6px 0;}
.tfh .tfh-stats{margin-top:46px!important;padding-top:42px!important;}
.tfh .tfh-shot .tfh-lede-c{margin:0 auto 46px!important;}
.tfh .tfh-chips{margin-top:34px!important;}
.tfh .tfh-imp-head{margin-bottom:46px!important;}
.tfh .tfh-connect .tfh-lede-cn{margin:0 auto 56px!important;}
.tfh .tfh-chooser .tfh-lede-c{margin:0 auto 46px!important;}
.tfh .tfh-tabs .kt-tabs-title-list{margin:0 0 46px!important;}
.tfh .tfh-vc > .kt-inside-inner-col{padding:26px 24px;}
.tfh .tfh-vc-cta{margin-top:44px!important;}
.tfh .tfh-awards{margin:32px 0 52px!important;padding:20px 0!important;}
.tfh .tfh-prod > .kt-inside-inner-col{padding:30px 28px;}
.tfh .tfh-story-body > .kt-inside-inner-col{padding:24px 22px 26px;}
.tfh .tfh-mission-inner{max-width:920px;}
/* the h2 needs ~762px at 34px/800 to stay on one line; the lede keeps the
   source's 680px so widening the container does not stretch the paragraph. */
.tfh .tfh-mission-inner .tfh-m-p{max-width:680px;margin-left:auto;margin-right:auto;}
.tfh .tfh-cta-copy{max-width:560px;}

/* CTA buttons are blue now, so give them a matching lift */
.tfh .kb-button{transition:transform .2s ease,box-shadow .2s ease,background .2s ease;}
.tfh .tfh-vc-cta .kb-button:hover,.tfh .tfh-cta-btns .kb-button:hover{transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(4,82,154,.32);}

/* ------------------------------------------------------------ responsive */
@media (max-width:1200px){
  .tfh .tfh-dispatch > .kt-inside-inner-col{min-height:430px;}
}
@media (max-width:1024px){
  .tfh .tfh-dispatch > .kt-inside-inner-col{min-height:0;padding:4px 0 0;}
  .tfh .tfh-hero-copy{max-width:none;}
  .tfh .tfh-hero-btns.kb-buttons-wrap{gap:8px 18px;}
  .tfh .tfh-chub-mark{width:76px;height:76px;padding:18px;}
  .tfh-imp-link > .kt-inside-inner-col{text-align:left;}
  .tfh-imp-head{margin-bottom:32px!important;}
  .tfh .tfh-cta-actions > .kt-inside-inner-col{justify-content:flex-start!important;margin-top:26px;}
  .tfh-chub{margin:22px 0;}
}
@media (max-width:767px){
  .tfh-hero::after{height:90px;}
  .tfh .tfh-st > .kt-inside-inner-col{padding:13px 14px;border-radius:12px;}
  .tfh .tfh-st .tfh-st-t{font-size:13px!important;}
  .tfh .tfh-strow{margin:0 0 12px!important;}
  .tfh .tfh-strow:last-of-type{margin:12px 0 0!important;}
  .tfh .tfh-hub-mark{width:56px;height:56px;padding:13px;}
  .tfh .tfh-chub-mark{width:68px;height:68px;padding:16px;}
  .tfh .tfh-tab-badge{width:34px;height:34px;}
  .tfh-hero-copy{max-width:none;}
  .tfh-track .tfh-logo{margin:0 22px!important;}
  .tfh .tfh-track > .kt-inside-inner-col{animation-duration:26s;}
  .tfh-stats{margin-top:30px!important;padding-top:26px!important;}
  .tfh-browser > .kt-inside-inner-col{border-radius:11px;box-shadow:0 18px 38px rgba(1,16,36,.2);}
  .tfh-tabs .kt-tabs-title-list{gap:10px;}
  .tfh-tabs .kt-tabs-title-list li{flex:1 1 100%;}
  .tfh-prod > .kt-inside-inner-col{padding:20px;}
  .tfh-legend{margin-top:16px!important;}
  .tfh .tfh-cta-actions > .kt-inside-inner-col{flex-wrap:wrap;}
}
@media (prefers-reduced-motion:reduce){
  .tfh .tfh-track > .kt-inside-inner-col,
  .tfh .tfh-hub > .kt-inside-inner-col::after,
  .tfh .tfh-chub > .kt-inside-inner-col::after,
  .tfh .tfh-st > .kt-inside-inner-col,
  .tfh .tfh-dispatch::before,.tfh .tfh-dispatch::after,
  .tfh .tfh-legend .tfh-lg-t,
  .tfh .tfh-hub-mark::before,.tfh .tfh-hub-mark::after,
  .tfh .tfh-chub-mark::before,.tfh .tfh-chub-mark::after{animation:none!important;}
}
/* ================================================ v5 additions (client #3) */

/* ---- hero: the embedded animation owns its own height now ---- */
.tfh .tfh-dispatch > .kt-inside-inner-col{min-height:0!important;padding:0!important;
  display:block!important;}
.tfh .tfh-hero-anim{position:relative;width:100%;}

/* ---- connective hub: the embedded .hub owns its own layout ---- */
/* ---- platform screenshot: wider than the content column so it overhangs the
        compliance chips at both ends (client) ---- */
.tfh .tfh-browser > .kt-inside-inner-col{max-width:none!important;
  margin-left:-52px;margin-right:-52px;}
@media (max-width:1200px){
  .tfh .tfh-browser > .kt-inside-inner-col{margin-left:-24px;margin-right:-24px;}
}
@media (max-width:1024px){
  .tfh .tfh-browser > .kt-inside-inner-col{margin-left:0;margin-right:0;}
}

/* ================== audience chooser: icons, colours, spacing (client) =====
   Values taken from the reference stylesheet: .tabs / .tab / .tab__badge /
   .vcard / .vcard__badge / .vcard__metric / .chooser__cta. */

/* tab row: two equal tabs, 760px, 14px gap, 44px below */
.tfh .tfh-tabs .kt-tabs-title-list{display:grid!important;grid-template-columns:1fr 1fr;
  gap:14px!important;max-width:760px;margin:0 auto 44px!important;padding:0;list-style:none;border:0;}
.tfh .tfh-tabs .kt-tabs-title-list li{margin:0!important;flex:none!important;}
.tfh .tfh-tabs .kt-tabs-title-list li .kt-tab-title{display:flex!important;
  flex-direction:row!important;align-items:center!important;gap:14px!important;
  text-align:left;height:100%;padding:16px 22px!important;border-width:1.5px!important;
  border-radius:10px!important;box-shadow:none!important;}
.tfh .tfh-tabs .kt-tabs-title-list li.kt-tab-title-active .kt-tab-title{
  box-shadow:0 4px 16px rgba(1,16,36,.14)!important;}
.tfh .tfh-tabs .kt-title-text{display:block;font-size:15px!important;font-weight:700!important;}
.tfh .tfh-tabs .kt-title-sub-text{display:block;font-size:12.5px!important;
  font-weight:500!important;opacity:.7;margin-top:2px;line-height:1.35;}

/* tab badges: cyan for the security firm, blue for enterprise (as the source) */
.tfh .tfh-tab-badge{flex:none;width:42px;height:42px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;}
.tfh .tfh-tab-badge svg{width:24px;height:24px;display:block;}
.tfh .tfh-tabs .kt-title-item-1 .tfh-tab-badge{background:rgba(0,181,230,.14);color:#00b5e6;}
.tfh .tfh-tabs .kt-title-item-2 .tfh-tab-badge{background:rgba(20,140,252,.14);color:#148cfc;}
/* on the active (navy) tab the badge needs to lift off the dark ground */
.tfh .tfh-tabs .kt-tab-title-active .tfh-tab-badge{background:rgba(255,255,255,.14);color:#ffffff;}

/* the three cards */
.tfh .tfh-vcards{margin:0!important;}
.tfh .tfh-vc > .kt-inside-inner-col{padding:28px!important;border-width:1.5px!important;
  border-radius:12px!important;}
.tfh .tfh-vc-i{margin:0 0 16px!important;}
.tfh .tfh-vc-i .kt-svg-icon-wrap{border-radius:11px!important;}
.tfh .tfh-vc-h3{font-size:16px!important;margin-bottom:8px!important;}
.tfh .tfh-vc-p{font-size:13.5px!important;line-height:1.65!important;margin-bottom:0!important;}
/* metric pill, not a bordered strip */
.tfh .tfh-vc-m{display:inline-flex!important;align-self:flex-start;align-items:center;gap:4px;
  margin-top:16px!important;padding:5px 11px!important;border-top:0!important;
  background:rgba(0,181,230,.08);border-radius:6px;
  font-size:11.5px!important;font-weight:700!important;color:#04529a!important;}
.tfh .tfh-vc-cta{margin-top:36px!important;}

@media (max-width:767px){
  .tfh .tfh-tabs .kt-tabs-title-list{grid-template-columns:1fr;gap:10px!important;
    margin-bottom:34px!important;}
  .tfh .tfh-vc > .kt-inside-inner-col{padding:22px!important;}
  .tfh .tfh-tab-badge{width:38px;height:38px;}
  .tfh .tfh-tab-badge svg{width:21px;height:21px;}
}

/* ===== TF HOME (.tfh, page 2) - END ===== */

/* ===== TF GLOBAL HERO (page 18275) - START ===== */
/* Row backgrounds (navy #08203d crumbbar, 160deg gradient hero, #061a33 trust) are set NATIVELY in each Kadence Row > Style. This block only handles content layout, type, buttons and responsive. */
body.page-id-18275 .tf-gh-row *{box-sizing:border-box}

/* content gutters so all three rows align (rows are full-width + inherit-max-width) */
body.page-id-18275 .tf-gh-crumbbar .kt-inside-inner-col{padding:0 56px;min-height:44px;display:flex;align-items:center}
body.page-id-18275 .tf-gh-hero-inner .kt-inside-inner-col{padding:64px 56px 72px;position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:22px;max-width:760px}
body.page-id-18275 .tf-gh-trustrail .kt-inside-inner-col{padding:18px 56px}

/* ---------- Breadcrumb ---------- */
body.page-id-18275 .tf-gh-crumbs{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0;padding:0;font-size:13px;font-weight:500;line-height:1.4}
body.page-id-18275 .tf-gh-crumbs li{display:flex;align-items:center;gap:10px}
body.page-id-18275 .tf-gh-crumbs a{color:rgba(255,255,255,.55);text-decoration:none;transition:color .2s ease-out}
body.page-id-18275 .tf-gh-crumbs a:hover{color:var(--global-palette1,#00b5e6)}
body.page-id-18275 .tf-gh-crumbs .tf-gh-sep{color:rgba(255,255,255,.25)}
body.page-id-18275 .tf-gh-crumbs [aria-current]{color:#fff}

/* ---------- Hero ---------- */
body.page-id-18275 .tf-gh-hero{position:relative;overflow:hidden}
/* left navy scrim keeps copy readable once a background image is added natively */
body.page-id-18275 .tf-gh-hero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(1,16,36,.85) 30%,rgba(1,16,36,0) 72%)}
body.page-id-18275 .tf-gh-hero .kt-row-column-wrap{position:relative;z-index:2}

body.page-id-18275 .tf-gh-breadcrumb{font-size:13px;font-weight:500;line-height:1.5}body.page-id-18275 .tf-gh-breadcrumb .rank-math-breadcrumb p{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}body.page-id-18275 .tf-gh-breadcrumb a{color:var(--global-palette11,#e2e6ee);text-decoration:none;transition:color .2s ease-out}body.page-id-18275 .tf-gh-breadcrumb a:hover{color:var(--global-palette1,#00b5e6)}body.page-id-18275 .tf-gh-breadcrumb .separator{color:var(--global-palette11,#e2e6ee);opacity:.45}body.page-id-18275 .tf-gh-breadcrumb .last{color:var(--global-palette9,#ffffff)}
body.page-id-18275 h1.tf-gh-title{margin:0;font-size:48px;line-height:1.1;letter-spacing:-.015em;text-transform:uppercase;color:#fff;max-width:680px;text-wrap:pretty}
body.page-id-18275 .tf-gh-lede{margin:0;font-size:19px;font-weight:400;line-height:1.55;max-width:580px;text-wrap:pretty}

/* CTAs - targeted via Kadence's stable wrap hooks (survives editor round-trips) */
body.page-id-18275 .tf-gh-ctas{display:flex;flex-wrap:wrap;gap:22px;align-items:center;margin-top:10px}
body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta1,body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta2{display:inline-flex;align-items:center;justify-content:center;line-height:1;text-decoration:none;border:0;transition:background .2s ease-out,color .2s ease-out}
/* primary - lime pill */
body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta1{background:var(--global-palette10,#bde72a);color:var(--global-palette3,#011024);font-size:16px;font-weight:700;padding:14px 30px;border-radius:999px}
body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta1:hover,body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta1:focus,body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta1:focus-visible{background:#a6cf18;color:var(--global-palette3,#011024)}
/* secondary - text link */
body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta2{background:transparent;color:rgba(255,255,255,.85);font-size:16px;font-weight:600;padding:14px 4px;border-radius:0}
body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta2:hover,body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta2:focus,body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta2:focus-visible{background:transparent;color:var(--global-palette1,#00b5e6)}

/* Proof line */
body.page-id-18275 .tf-gh-proof{display:flex;flex-wrap:wrap;gap:28px;align-items:center;margin:8px 0 0;font-size:13px;font-weight:400;color:var(--global-palette11,#e2e6ee)}
body.page-id-18275 .tf-gh-proof .tf-gh-stat{display:inline-flex;align-items:center;gap:7px}
body.page-id-18275 .tf-gh-proof strong{color:var(--global-palette9,#ffffff);font-size:16px;font-weight:700}
body.page-id-18275 .tf-gh-proof .tf-gh-rule{width:1px;height:20px;background:rgba(255,255,255,.18)}

/* ---------- Trust rail ---------- */
body.page-id-18275 .tf-gh-trust{display:flex;align-items:center;gap:36px;flex-wrap:nowrap}
body.page-id-18275 .tf-gh-trust-label{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--global-palette11,#e2e6ee);white-space:nowrap}
body.page-id-18275 .tf-gh-marquee{flex:1;min-width:0;overflow:hidden;-webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
body.page-id-18275 .tf-gh-track{display:flex;align-items:center;width:max-content;margin:0;padding:0;list-style:none;animation:tf-gh-scroll 34s linear infinite}
body.page-id-18275 .tf-gh-marquee:hover .tf-gh-track,body.page-id-18275 .tf-gh-track:focus-within{animation-play-state:paused}
body.page-id-18275 .tf-gh-track li{flex:0 0 auto;margin-right:56px}
body.page-id-18275 .tf-gh-track img{height:26px;width:auto;max-width:140px;display:block;object-fit:contain;background:#fff;padding:9px 16px;border-radius:8px;box-sizing:content-box;opacity:1;transition:transform .2s ease-out,box-shadow .2s ease-out}
body.page-id-18275 .tf-gh-track img:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(1,16,36,.35)}
@keyframes tf-gh-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Focus ring */
body.page-id-18275 .tf-gh-hero a:focus-visible,body.page-id-18275 .tf-gh-crumbs a:focus-visible{outline:none;box-shadow:0 0 0 4px rgba(29,78,216,.7);border-radius:6px}

/* ---------- Responsive ---------- */
@media (max-width:1199px){
  body.page-id-18275 h1.tf-gh-title{font-size:40px}
  body.page-id-18275 .tf-gh-hero-inner .kt-inside-inner-col{padding:48px 40px 56px;max-width:640px}
  body.page-id-18275 .tf-gh-crumbbar .kt-inside-inner-col,body.page-id-18275 .tf-gh-trustrail .kt-inside-inner-col{padding-left:40px;padding-right:40px}
}
@media (max-width:767px){
  body.page-id-18275 h1.tf-gh-title{font-size:31px}
  body.page-id-18275 .tf-gh-lede{font-size:17px}
  body.page-id-18275 .tf-gh-hero-inner .kt-inside-inner-col{padding:40px 24px 48px;max-width:100%;gap:18px}
  body.page-id-18275 .tf-gh-hero::before{background:linear-gradient(180deg,rgba(1,16,36,.35),rgba(1,16,36,.6))}
  body.page-id-18275 .tf-gh-ctas{flex-direction:column;align-items:stretch;width:100%;gap:12px}
  body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta1{width:100%;min-height:48px}
  body.page-id-18275 .tf-gh-ctas a.kb-btn18275_cta2{width:100%;min-height:48px}
  body.page-id-18275 .tf-gh-proof{gap:8px 14px}
  body.page-id-18275 .tf-gh-crumbbar .kt-inside-inner-col,body.page-id-18275 .tf-gh-trustrail .kt-inside-inner-col{padding-left:24px;padding-right:24px}
  body.page-id-18275 .tf-gh-trust{gap:14px}
  body.page-id-18275 .tf-gh-trust{flex-wrap:wrap}
  body.page-id-18275 .tf-gh-track li{margin-right:36px}
  body.page-id-18275 .tf-gh-track img{height:22px}
}
@media (prefers-reduced-motion:reduce){body.page-id-18275 .tf-gh-hero *{transition:none!important}body.page-id-18275 .tf-gh-track{animation:none}body.page-id-18275 .tf-gh-trust{flex-wrap:wrap}}
/* ===== TF GLOBAL HERO (page 18275) - END ===== */

/* ===== TF ACA REPORTING (page 18028) - START ===== */
body.page-id-18028{--acaNavy:#011024;--acaNavy2:#001427;--acaCyan:#00b5e6;--acaBlue:#1471c9;--acaInk:#011024;--acaGray:#5a6b83;--acaGray7:#3d4c63;--acaLine:#dde3ec;--acaGray50:#f6f7fa;}
body.page-id-18028 .aca-sec{padding-top:clamp(48px,6vw,80px)!important;padding-bottom:clamp(48px,6vw,80px)!important;}
body.page-id-18028 .aca-eyebrow{font-weight:700;font-size:13px;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;}
body.page-id-18028 .aca-eyebrow.aca-lt{color:var(--acaBlue);}
body.page-id-18028 .aca-eyebrow.aca-dk{color:var(--acaCyan);}
body.page-id-18028 .aca-h2{font-weight:700;font-size:clamp(1.7rem,2.6vw,2.2rem);line-height:1.14;letter-spacing:-.01em;color:var(--acaInk);margin:0;}
body.page-id-18028 .aca-lead{font-size:16px;line-height:1.7;color:var(--acaGray);margin:16px 0 0;}
body.page-id-18028 .aca-center{text-align:center;}
body.page-id-18028 .aca-center .kt-inside-inner-col{max-width:760px;margin-left:auto;margin-right:auto;}
/* STATS BAND */
body.page-id-18028 .aca-statsrow{background:var(--acaNavy2)!important;}
body.page-id-18028 .aca-statsrow .aca-sec{padding-top:30px!important;padding-bottom:30px!important;}
body.page-id-18028 .aca-stat{display:flex;align-items:center;gap:16px;justify-content:center;flex-wrap:nowrap;}
body.page-id-18028 .aca-stat .n{flex:0 0 auto;font-weight:700;font-size:clamp(1.4rem,2.6vw,2.1rem);letter-spacing:-.04em;line-height:1;color:var(--acaCyan);white-space:nowrap;}
body.page-id-18028 .aca-stat .l{flex:1 1 auto;min-width:0;font-size:14px;font-weight:600;color:rgba(255,255,255,.62);max-width:200px;text-align:right;}
/* CAPABILITY */
body.page-id-18028 .aca-caprow{background:var(--acaGray50)!important;}
body.page-id-18028 .aca-caprow .kt-row-column-wrap{align-items:center;}
body.page-id-18028 .aca-cap-eyebrow{position:relative;min-height:44px;display:flex;align-items:center;padding-left:58px;font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--acaGray);margin:0 0 14px;}
body.page-id-18028 .aca-cap-eyebrow::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:11px;background:rgba(0,181,230,.12);}
body.page-id-18028 .aca-cap-eyebrow::after{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:var(--acaCyan);-webkit-mask:url(/wp-content/uploads/tf-aca-icons/aca-dashboards.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-aca-icons/aca-dashboards.svg) center/contain no-repeat;}
body.page-id-18028 .aca-caph3{font-weight:700;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.16;letter-spacing:-.01em;color:var(--acaInk);margin:0 0 14px;}
body.page-id-18028 .aca-capcopy{font-size:15px;line-height:1.7;color:var(--acaGray);margin:0 0 22px;}
body.page-id-18028 .aca-caplist{display:flex;flex-direction:column;gap:12px;}
body.page-id-18028 .aca-capitem{position:relative;display:block;padding-left:29px;font-size:14px;line-height:1.5;color:var(--acaGray7);}
body.page-id-18028 .aca-capitem::before{content:"";position:absolute;left:0;top:1px;width:18px;height:18px;background:var(--acaBlue);-webkit-mask:url(/wp-content/uploads/tf-aca-icons/aca-check.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-aca-icons/aca-check.svg) center/contain no-repeat;}
body.page-id-18028 .aca-capimg img{border-radius:10px;box-shadow:0 24px 55px rgba(1,16,36,.18);width:100%;height:auto;display:block;}
/* FEATURE GRID */
body.page-id-18028 .aca-fgrid .kt-row-column-wrap{gap:16px;}
body.page-id-18028 .aca-fcard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--acaLine);border-radius:14px;padding:26px 22px;height:100%;}
body.page-id-18028 .aca-ficon{width:48px;height:48px;border-radius:12px;background:var(--acaGray50);border:1px solid var(--acaLine);position:relative;margin:0 0 16px;}
body.page-id-18028 .aca-ficon::before{content:"";position:absolute;inset:11px;background:var(--acaBlue);-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
body.page-id-18028 .aca-fi-filing{--i:url(/wp-content/uploads/tf-aca-icons/aca-filing.svg);}
body.page-id-18028 .aca-fi-disc{--i:url(/wp-content/uploads/tf-aca-icons/aca-discrepancy.svg);}
body.page-id-18028 .aca-fi-dash{--i:url(/wp-content/uploads/tf-aca-icons/aca-dashboards.svg);}
body.page-id-18028 .aca-fi-admin{--i:url(/wp-content/uploads/tf-aca-icons/aca-admin-periods.svg);}
body.page-id-18028 .aca-fi-irs{--i:url(/wp-content/uploads/tf-aca-icons/aca-irs-status.svg);}
body.page-id-18028 .aca-fi-report{--i:url(/wp-content/uploads/tf-aca-icons/aca-compliance-report.svg);}
body.page-id-18028 .aca-ftitle{font-weight:700;font-size:15px;color:var(--acaInk);margin:0 0 8px;}
body.page-id-18028 .aca-fbody{font-size:13px;line-height:1.6;color:var(--acaGray);margin:0;}
/* REPORT PILLS */
body.page-id-18028 .aca-pillsrow{background:var(--acaGray50)!important;border-top:1px solid var(--acaLine);}
body.page-id-18028 .aca-pills{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:860px;margin:0 auto;}
body.page-id-18028 .aca-pill{font-size:13.5px;font-weight:600;color:var(--acaGray7);background:#fff;border:1px solid var(--acaLine);border-radius:999px;padding:9px 18px;}
/* RELATED */
body.page-id-18028 .aca-relrow{border-top:1px solid #eef1f6;}
body.page-id-18028 .aca-relgrid .kt-row-column-wrap{gap:16px;}
body.page-id-18028 .aca-rlink{display:flex;align-items:center;gap:16px;background:#fff;border:1.5px solid var(--acaLine);border-radius:12px;padding:22px;transition:all .2s ease-out;text-decoration:none;height:100%;}
body.page-id-18028 .aca-rlink:hover{border-color:var(--acaCyan);box-shadow:0 10px 24px rgba(1,16,36,.08);transform:translateY(-2px);}
body.page-id-18028 .aca-ricon{flex:none;width:46px;height:46px;border-radius:11px;background:linear-gradient(145deg,#011024 0%,#04529a 130%);position:relative;box-shadow:0 8px 18px rgba(1,16,36,.2);}
body.page-id-18028 .aca-ricon::before{content:"";position:absolute;inset:11px;background:#fff;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
body.page-id-18028 .aca-ri-bi{--i:url(/wp-content/uploads/tf-aca-icons/aca-dashboards.svg);}
body.page-id-18028 .aca-ri-pay{--i:url(/wp-content/uploads/tf-aca-icons/rel-payroll.svg);}
body.page-id-18028 .aca-ri-bill{--i:url(/wp-content/uploads/tf-aca-icons/rel-billing.svg);}
body.page-id-18028 .aca-rtxt{display:block;}
body.page-id-18028 .aca-rname{display:block;font-weight:700;font-size:15px;color:var(--acaInk);}
body.page-id-18028 .aca-rexp{display:block;font-size:12.5px;font-weight:700;color:#0f8fb8;margin-top:2px;}
/* TESTIMONIAL */
body.page-id-18028 .aca-quoterow{background:var(--acaNavy2)!important;}
body.page-id-18028 .aca-quoterow .kt-inside-inner-col{max-width:900px;margin:0 auto;text-align:center;}
body.page-id-18028 .aca-quote{font-weight:600;font-style:italic;font-size:clamp(1.3rem,2.2vw,1.7rem);line-height:1.5;letter-spacing:-.01em;color:#fff;margin:0 0 24px;}
body.page-id-18028 .aca-quote .qm{color:var(--acaCyan);font-weight:700;font-style:normal;}
body.page-id-18028 .aca-quoteattr{font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.5);margin:0;}
/* CTA */
body.page-id-18028 .aca-ctarow{background:linear-gradient(150deg,#011024 0%,#04529a 150%)!important;}
body.page-id-18028 .aca-ctarow .kt-inside-inner-col{max-width:760px;margin:0 auto;text-align:center;}
body.page-id-18028 .aca-ctah2{font-weight:700;font-size:clamp(2rem,3.4vw,2.8rem);line-height:1.1;letter-spacing:-.02em;color:#fff;margin:0 0 16px;}
body.page-id-18028 .aca-ctap{font-size:16px;line-height:1.6;color:rgba(255,255,255,.72);margin:0 0 32px;}
body.page-id-18028 .aca-ctarow .kb-buttons-wrap{justify-content:center;}
body.page-id-18028 .aca-innerhead{margin-bottom:26px!important;padding:0!important;}
body.page-id-18028 .aca-featwrap>.kt-inside-inner-col,body.page-id-18028 .aca-relrow>.kt-inside-inner-col{max-width:none;}
/* mobile */
@media (max-width:767px){
 body.page-id-18028 .aca-stat{justify-content:flex-start;}
 body.page-id-18028 .aca-stat .l{text-align:left;}
 body.page-id-18028 .aca-cap-eyebrow{margin-top:0;}
}
/* ===== TF ACA REPORTING (page 18028) - END ===== */

/* ===== TF COMPONENTS (shared) - START ===== */
/* Reusable Trackforce/TrackTik module-page component layer.
   Page-agnostic on purpose: new module pages should need ZERO new CSS,
   only these class names. Prefix tfc- is reserved for this layer. */
:root{
 --tfc-navy:#011024; --tfc-navy-q:#001427; --tfc-royal:#04529a;
 --tfc-cyan:#00b5e6; --tfc-cyan4:#33c7f0; --tfc-cyan6:#036c93;
 --tfc-blue:#148cfc;--tfc-blue-text:#0b6fd0; --tfc-g800:#1c2536; --tfc-g500:#566072;
 --tfc-g400:#8b94a5; --tfc-g200:#dde3ec; --tfc-g50:#f6f7fa;
 --tfc-ico:/wp-content/uploads/tf-icons;
}
/* --- section rhythm + bands --- */
/* Kadence emits its own padding-top/bottom (--global-kb-spacing-sm) on every
   row's .kt-row-column-wrap. That stacked on top of .tfc-sec and added ~48px
   of unintended vertical space per section, so zero it and let tfc-sec govern. */
.tfc-sec>.kt-row-column-wrap,.tfc-sec-tight>.kt-row-column-wrap{padding-top:0!important;padding-bottom:0!important;}
.tfc-sec{padding-top:clamp(48px,5.6vw,80px)!important;padding-bottom:clamp(48px,5.6vw,80px)!important;}
.tfc-sec-tight{padding-top:clamp(40px,4.4vw,58px)!important;padding-bottom:clamp(40px,4.4vw,58px)!important;}
/* use when a section sits directly under another of the same background,
   so the pair reads as one continuous area instead of two stacked bands */
.tfc-sec-tighttop{padding-top:clamp(8px,1.4vw,20px)!important;}
/* mirror of tfc-sec-tighttop for the FACING edge: use on the upper row of a
   head+continuation pair inside one band, so the two rows read as a single
   section instead of stacking 48-80px onto the next row's top padding.
   Kadence's native row padding cannot override .tfc-sec/.tfc-sec-tight because
   those declare !important, which is why this is a class and not a row setting.
   Additive: no existing page used this name before 2026-09-21. */
.tfc-sec-tightbot{padding-bottom:clamp(8px,1.4vw,20px)!important;}
.tfc-band-gray{background:var(--tfc-g50)!important;}
.tfc-band-white{background:#fff!important;}
.tfc-band-navy{background:var(--tfc-navy-q)!important;}
.tfc-band-cta{background:linear-gradient(150deg,#011024 0%,#04529a 150%)!important;}
.tfc-hair{border-top:1px solid var(--tfc-g200);}
/* --- type --- */
.tfc-eyebrow{font-weight:700;font-size:13px;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;}
.tfc-eyebrow.on-light{color:var(--tfc-blue-text);}
.tfc-eyebrow.on-dark{color:var(--tfc-cyan);}
.tfc-eyebrow.muted{color:var(--tfc-g400);}
.tfc-h2{font-weight:700;font-size:clamp(1.7rem,2.7vw,2.3rem);line-height:1.14;letter-spacing:-.015em;color:var(--tfc-navy);margin:0;}
.tfc-h3{font-weight:700;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.16;letter-spacing:-.01em;color:var(--tfc-navy);margin:0 0 14px;}
.tfc-lead{font-size:16px;line-height:1.7;color:var(--tfc-g500);margin:16px 0 0;}
.tfc-body{font-size:15px;line-height:1.7;color:var(--tfc-g500);margin:0 0 22px;}
.tfc-center{text-align:center;}
.tfc-center .kt-inside-inner-col{max-width:760px;margin-left:auto;margin-right:auto;}
.tfc-innerhead{margin-bottom:26px!important;padding:0!important;}
/* --- icon utility: one class per icon, tint via background-color --- */
.tfc-i{position:relative;}
.tfc-i::before{content:"";position:absolute;inset:0;background:currentColor;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-ico-protection-check{--tfc-i:url(/wp-content/uploads/tf-icons/protection-check.svg);}
.tfc-ico-shield{--tfc-i:url(/wp-content/uploads/tf-icons/shield.svg);}
.tfc-ico-mobile-person{--tfc-i:url(/wp-content/uploads/tf-icons/mobile-person.svg);}
.tfc-ico-chat{--tfc-i:url(/wp-content/uploads/tf-icons/chat.svg);}
/* These four had SVGs on disk but no utility rule, so they rendered as blank tiles:
   protection-quality + expert-guidance + step-desktop on 18023, payment on 14340. */
.tfc-ico-protection-quality{--tfc-i:url(/wp-content/uploads/tf-icons/protection-quality.svg);}
.tfc-ico-expert-guidance{--tfc-i:url(/wp-content/uploads/tf-icons/expert-guidance.svg);}
.tfc-ico-step-desktop{--tfc-i:url(/wp-content/uploads/tf-icons/step-desktop.svg);}
.tfc-ico-payment{--tfc-i:url(/wp-content/uploads/tf-icons/payment.svg);}
.tfc-ico-compliance-report{--tfc-i:url(/wp-content/uploads/tf-icons/compliance-report.svg);}
.tfc-ico-people-care{--tfc-i:url(/wp-content/uploads/tf-icons/people-care.svg);}
.tfc-ico-desktop{--tfc-i:url(/wp-content/uploads/tf-icons/desktop.svg);}
.tfc-ico-chat-management{--tfc-i:url(/wp-content/uploads/tf-icons/chat-management.svg);}
.tfc-ico-maintenance{--tfc-i:url(/wp-content/uploads/tf-icons/maintenance.svg);}
.tfc-ico-chat-check{--tfc-i:url(/wp-content/uploads/tf-icons/chat-check.svg);}
.tfc-ico-quality-check{--tfc-i:url(/wp-content/uploads/tf-icons/quality-check.svg);}
.tfc-ico-chat-protection{--tfc-i:url(/wp-content/uploads/tf-icons/chat-protection.svg);}
.tfc-ico-key-hole-circle{--tfc-i:url(/wp-content/uploads/tf-icons/key-hole-circle.svg);}
.tfc-ico-cycle-check{--tfc-i:url(/wp-content/uploads/tf-icons/cycle-check.svg);}
.tfc-ico-data-lab{--tfc-i:url(/wp-content/uploads/tf-icons/data-lab.svg);}
.tfc-ico-document-check{--tfc-i:url(/wp-content/uploads/tf-icons/document-check.svg);}
.tfc-ico-people-management{--tfc-i:url(/wp-content/uploads/tf-icons/people-management.svg);}
.tfc-ico-chip{--tfc-i:url(/wp-content/uploads/tf-icons/chip.svg);}
.tfc-ico-cloud-check{--tfc-i:url(/wp-content/uploads/tf-icons/cloud-check.svg);}
.tfc-ico-chat-response{--tfc-i:url(/wp-content/uploads/tf-icons/chat-response.svg);}
.tfc-ico-growth-management{--tfc-i:url(/wp-content/uploads/tf-icons/growth-management.svg);}
.tfc-ico-gps-map{--tfc-i:url(/wp-content/uploads/tf-icons/gps-map.svg);}
.tfc-ico-mobile-management{--tfc-i:url(/wp-content/uploads/tf-icons/mobile-management.svg);}
.tfc-ico-protection-management{--tfc-i:url(/wp-content/uploads/tf-icons/protection-management.svg);}
.tfc-ico-layers{--tfc-i:url(/wp-content/uploads/tf-icons/layers.svg);}
.tfc-ico-calendar{--tfc-i:url(/wp-content/uploads/tf-icons/calendar.svg);}
.tfc-ico-calendar-check{--tfc-i:url(/wp-content/uploads/tf-icons/calendar-check.svg);}
.tfc-ico-calendar-person{--tfc-i:url(/wp-content/uploads/tf-icons/calendar-person.svg);}
.tfc-ico-calendar-management{--tfc-i:url(/wp-content/uploads/tf-icons/calendar-management.svg);}
.tfc-ico-clock{--tfc-i:url(/wp-content/uploads/tf-icons/clock.svg);}
.tfc-ico-check{--tfc-i:url(/wp-content/uploads/tf-icons/check.svg);}
.tfc-ico-cash{--tfc-i:url(/wp-content/uploads/tf-icons/cash.svg);}
.tfc-ico-document-person{--tfc-i:url(/wp-content/uploads/tf-icons/document-person.svg);}
.tfc-ico-desktop-check{--tfc-i:url(/wp-content/uploads/tf-icons/desktop-check.svg);}
.tfc-ico-protection-worker{--tfc-i:url(/wp-content/uploads/tf-icons/protection-worker.svg);}
/* --- capability badge + eyebrow (icon left of label) --- */
.tfc-badge{position:relative;min-height:44px;display:flex;align-items:center;padding-left:58px;font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--tfc-g500);margin:0 0 14px;}
.tfc-badge::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:11px;background:rgba(20,140,252,.10);}
.tfc-badge::after{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:var(--tfc-blue);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
/* --- product screenshot --- */
/* cap-flip: DOM order is always text-then-image (heading first on mobile / for crawlers);
   on desktop this moves the image column back to the left where the design wants it. */
@media (min-width:1025px){
 .tfc-cap-flip>.kt-row-column-wrap>*:first-child{order:2;}
 .tfc-cap-flip>.kt-row-column-wrap>*:last-child{order:1;}
}
.tfc-shot img{width:100%;height:auto;display:block;filter:drop-shadow(0 24px 55px rgba(1,16,36,.18));}
/* --- feature cards --- */
.tfc-grid .kt-row-column-wrap{gap:16px;}
.tfc-card>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:26px 22px;height:100%;}
/* Tinted card variant: card fill goes to the soft gray and the icon tile is set
   to white via the existing .tfc-tile-white modifier, inverting the default. Use
   on a white band where a white card would have no separation from the band.
   Opt-in only - 40 posts use the base .tfc-card and are unaffected. 2026-09-21. */
.tfc-card.is-tinted>.kt-inside-inner-col{background:#f7f7fa;}
.tfc-tile{width:48px;height:48px;border-radius:12px;background:var(--tfc-g50);border:1px solid var(--tfc-g200);position:relative;margin:0 0 16px;}
.tfc-tile::before{content:"";position:absolute;inset:11px;background:var(--tfc-blue);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-cardtitle{font-weight:700;font-size:15px;color:var(--tfc-navy);margin:0 0 8px;}
.tfc-cardbody{font-size:13px;line-height:1.6;color:var(--tfc-g500);margin:0;}
/* --- pills --- */
.tfc-pills{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:820px;margin:0 auto;}
.tfc-pill{font-size:13.5px;font-weight:600;color:var(--tfc-g800);background:var(--tfc-g50);border:1px solid var(--tfc-g200);border-radius:999px;padding:9px 18px;}
/* --- related link tiles --- */
.tfc-tiles .kt-row-column-wrap{gap:16px;}
.tfc-linktile{display:flex;align-items:center;gap:16px;background:#fff;border:1.5px solid var(--tfc-g200);border-radius:12px;padding:22px;text-decoration:none;height:100%;box-shadow:0 1px 2px rgba(1,16,36,.06);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;}
.tfc-linktile:hover{border-color:var(--tfc-cyan);box-shadow:0 10px 24px rgba(1,16,36,.08);transform:translateY(-2px);}
.tfc-tilebadge{flex:none;width:46px;height:46px;border-radius:11px;background:linear-gradient(145deg,#011024 0%,#04529a 130%);position:relative;box-shadow:0 8px 18px rgba(1,16,36,.2);}
.tfc-tilebadge::before{content:"";position:absolute;inset:11px;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-tiletxt{display:block;}
.tfc-tilename{display:block;font-weight:700;font-size:15px;color:var(--tfc-navy);}
.tfc-tileexp{display:block;font-size:12.5px;font-weight:700;color:var(--tfc-cyan6);margin-top:2px;}
/* --- pull quote --- */
.tfc-quote{font-weight:600;font-style:italic;font-size:clamp(1.25rem,2.1vw,1.65rem);line-height:1.5;letter-spacing:-.01em;color:#fff;margin:0 0 24px;}
.tfc-quote .qm{color:var(--tfc-cyan4);font-weight:700;font-style:normal;}
.tfc-quoteattr{font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.5);margin:0;}
/* --- CTA --- */
.tfc-band-cta .kt-inside-inner-col{max-width:760px;margin:0 auto;}
.tfc-ctah2{font-weight:700;font-size:clamp(1.9rem,3.3vw,2.7rem);line-height:1.1;letter-spacing:-.02em;color:#fff;margin:0 0 16px;}
.tfc-ctap{font-size:16px;line-height:1.6;color:rgba(255,255,255,.72);margin:0 0 32px;}
.tfc-band-cta .kb-buttons-wrap{justify-content:center;}
/* --- dark-band typography --- */
.tfc-band-navy .tfc-h2,.tfc-band-cta .tfc-h2{color:#fff;}
.tfc-band-navy .tfc-lead,.tfc-band-cta .tfc-lead{color:rgba(255,255,255,.72);}
/* --- icon tile variants --- */
.tfc-tile-red{background:rgba(230,0,15,.08);border:0;}
.tfc-tile-red::before{background:#e6000f;}
.tfc-tile-white{background:#fff;border:1px solid var(--tfc-g200);}
/* --- cards on navy bands (benefits pattern, GM 18046+) --- */
.tfc-band-navy .tfc-card>.kt-inside-inner-col{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12);}
.tfc-band-navy .tfc-cardtitle{color:#fff;}
.tfc-band-navy .tfc-cardbody{color:rgba(255,255,255,.65);}
.tfc-band-navy .tfc-tile{background:rgba(0,181,230,.12);border-color:rgba(0,181,230,.28);}
.tfc-band-navy .tfc-tile::before{background:var(--tfc-cyan4);}
/* --- numbered workflow steps (dark) --- */
.tfc-steps .kt-row-column-wrap{gap:14px;}
.tfc-step>.kt-inside-inner-col{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:24px 18px;height:100%;}
.tfc-stephead{position:relative;display:flex;align-items:center;gap:10px;min-height:26px;margin:0 0 12px;}
.tfc-stepnum{flex:none;width:24px;height:24px;border-radius:50%;background:var(--tfc-cyan4);color:var(--tfc-navy);font-weight:700;font-size:12px;line-height:24px;text-align:center;}
.tfc-stepico{flex:none;width:22px;height:22px;position:relative;}
.tfc-stepico::before{content:"";position:absolute;inset:0;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-steptitle{font-weight:700;font-size:14.5px;color:#fff;margin:0 0 6px;}
.tfc-stepbody{font-size:12.5px;line-height:1.55;color:rgba(255,255,255,.6);margin:0;}
/* --- badge pills on dark --- */
.tfc-dpills{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;}
.tfc-dpill{position:relative;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.82);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:8px 16px 8px 34px;}
.tfc-dpill::before{content:"";position:absolute;left:14px;top:50%;transform:translateY(-50%);width:14px;height:14px;background:var(--tfc-cyan4);-webkit-mask:url(/wp-content/uploads/tf-icons/check.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-icons/check.svg) center/contain no-repeat;}
/* --- module cards --- */
.tfc-mods .kt-row-column-wrap{gap:20px;}
.tfc-modcard>.kt-inside-inner-col{background:var(--tfc-g50);border:1.5px solid var(--tfc-g200);border-radius:16px;padding:32px 30px;height:100%;}
/* White card variant. The base .tfc-modcard fill is --tfc-g50, which is the same
   colour as .tfc-band-gray, so a modcard placed on a gray band has no visible
   separation from it. Add .is-white to the column when the card sits on a gray
   band; the g200 border then defines the card edge. Follows the existing
   .tfc-statband.is-light modifier convention. Additive: unused before 2026-09-21,
   so page 18034 (the only other modcard user, on a white background) is untouched. */
.tfc-modcard.is-white>.kt-inside-inner-col{background:#fff;}
.tfc-modhead{position:relative;padding-left:68px;min-height:52px;margin:0 0 16px;}
.tfc-modhead::before{content:"";position:absolute;left:0;top:0;width:52px;height:52px;border-radius:13px;background:linear-gradient(145deg,#011024 0%,#04529a 130%);box-shadow:0 8px 18px rgba(1,16,36,.2);}
.tfc-modhead::after{content:"";position:absolute;left:12px;top:12px;width:28px;height:28px;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-modeyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--tfc-cyan6);margin:2px 0 4px;}
.tfc-modh3{display:block;font-size:18px;font-weight:700;line-height:1.25;color:var(--tfc-navy);}
/* --- stat cards --- */
.tfc-stats .kt-row-column-wrap{gap:16px;}
.tfc-statcard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:32px 26px;height:100%;text-align:center;}
.tfc-statnum{font-size:clamp(2.4rem,4vw,3.2rem);font-weight:700;line-height:1;letter-spacing:-.03em;color:#04529a;margin:0 0 10px;}
.tfc-statlabel{font-size:14px;font-weight:600;line-height:1.5;color:var(--tfc-g500);margin:0;}
/* --- testimonial cards --- */
.tfc-quotes .kt-row-column-wrap{gap:16px;}
.tfc-tcard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:30px 28px;height:100%;}
.tfc-tquote{font-size:16px;font-style:italic;line-height:1.6;color:var(--tfc-navy);margin:0 0 18px;}
.tfc-tquote .qm{color:var(--tfc-cyan);font-weight:700;font-style:normal;}
.tfc-tname{display:block;font-weight:700;font-size:13.5px;color:var(--tfc-navy);}
.tfc-trole{display:block;font-size:13px;color:var(--tfc-g500);margin-top:2px;}
/* --- resource cards --- */
.tfc-res .kt-row-column-wrap{gap:20px;}
.tfc-rescard>.kt-inside-inner-col{padding:0;height:100%;}
.tfc-reslink{display:block;background:#fff;border:1.5px solid var(--tfc-g200);border-radius:16px;overflow:hidden;text-decoration:none;height:100%;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;}
.tfc-reslink:hover{border-color:var(--tfc-cyan);box-shadow:0 12px 28px rgba(1,16,36,.1);transform:translateY(-3px);}
.tfc-reslink img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;}
.tfc-resbody{display:block;padding:26px 28px;}
.tfc-restag{display:block;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--tfc-cyan6);margin:0 0 8px;}
.tfc-resh3{display:block;font-size:19px;font-weight:700;line-height:1.25;color:var(--tfc-navy);margin:0 0 10px;}
.tfc-resp{display:block;font-size:14px;line-height:1.6;color:var(--tfc-g500);margin:0 0 14px;}
.tfc-rescta{display:block;font-size:14px;font-weight:700;color:var(--tfc-cyan6);}
/* --- FAQ --- */
.tfc-faq{display:flex;flex-direction:column;gap:12px;max-width:820px;margin:0 auto;text-align:left;}
.tfc-faqitem{display:block;background:var(--tfc-g50);border:1.5px solid var(--tfc-g200);border-radius:12px;padding:24px 26px;}
.tfc-faqq{display:block;font-size:16px;font-weight:700;line-height:1.35;color:var(--tfc-navy);margin:0 0 8px;}
.tfc-faqa{display:block;font-size:14.5px;line-height:1.65;color:var(--tfc-g500);}
.tfc-ico-document-management{--tfc-i:url(/wp-content/uploads/tf-icons/document-management.svg);}
.tfc-ico-people-hr{--tfc-i:url(/wp-content/uploads/tf-icons/people-hr.svg);}
.tfc-ico-management{--tfc-i:url(/wp-content/uploads/tf-icons/management.svg);}
.tfc-ico-performance{--tfc-i:url(/wp-content/uploads/tf-icons/performance.svg);}
.tfc-ico-desktop-management{--tfc-i:url(/wp-content/uploads/tf-icons/desktop-management.svg);}
/* --- outcome / stat band (dark) --- */
.tfc-statband .kt-row-column-wrap{gap:20px;}
.tfc-stat{display:flex;align-items:center;gap:16px;flex-wrap:nowrap;}
.tfc-stat .n{flex:0 1 auto;min-width:0;font-weight:700;font-size:clamp(1.4rem,2.4vw,2rem);letter-spacing:-.03em;line-height:1.05;color:var(--tfc-cyan);}
.tfc-stat .l{flex:1 1 auto;min-width:0;font-size:13.5px;font-weight:500;line-height:1.45;color:rgba(255,255,255,.68);max-width:210px;}
/* --- customer story (dark 2 col) --- */
.tfc-story .kt-row-column-wrap{align-items:center;}
.tfc-storyimg img{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 30px 70px rgba(1,16,36,.45);}
.tfc-storyq{font-weight:600;font-style:italic;font-size:clamp(1.1rem,1.9vw,1.45rem);line-height:1.5;color:#fff;margin:0 0 20px;}
.tfc-storyq .qm{color:var(--tfc-cyan4);font-weight:700;font-style:normal;}
.tfc-storyname{display:block;font-weight:700;font-size:14px;color:#fff;}
.tfc-storyrole{display:block;font-size:13.5px;color:rgba(255,255,255,.6);margin-top:2px;}
.tfc-storylink{display:inline-block;margin-top:18px;font-size:14px;font-weight:700;color:var(--tfc-cyan4);text-decoration:none;}
.tfc-storylink:hover{color:#fff;}
/* --- illustrated cards (image on top) --- */
.tfc-imgcards .kt-row-column-wrap{gap:16px;}
.tfc-imgcard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:24px 22px;height:100%;text-align:center;}
.tfc-imgcard img{width:92px;height:92px;object-fit:contain;display:block;margin:0 auto 14px;}
.tfc-imgtitle{display:block;font-weight:700;font-size:15px;color:var(--tfc-navy);margin:0 0 8px;}
.tfc-imgbody{display:block;font-size:13px;line-height:1.6;color:var(--tfc-g500);margin:0;}
/* --- integration pill row + inline link --- */
.tfc-intlink{display:inline-block;margin-top:22px;font-size:14px;font-weight:700;color:var(--tfc-cyan6);text-decoration:none;}
.tfc-intlink:hover{color:var(--tfc-navy);}
.tfc-ico-growth-budget{--tfc-i:url(/wp-content/uploads/tf-icons/growth-budget.svg);}
/* --- featured promo card (dark card inside a light section) --- */
.tfc-promocard{background:linear-gradient(150deg,#011024 0%,#04529a 165%)!important;border-radius:16px;overflow:hidden;}
.tfc-promocard>.kt-row-column-wrap{align-items:center;}
.tfc-promotext>.kt-inside-inner-col{padding:40px 36px;}
.tfc-promoimgcol>.kt-inside-inner-col{padding:28px 28px 28px 0;}
.tfc-promoeyebrow{display:block;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--tfc-cyan);margin:0 0 12px;}
.tfc-promoh3{font-size:clamp(1.35rem,2.2vw,1.8rem);font-weight:700;line-height:1.2;letter-spacing:-.01em;color:#fff;margin:0 0 14px;}
.tfc-promop{font-size:14.5px;line-height:1.65;color:rgba(255,255,255,.72);margin:0 0 18px;}
.tfc-promolink{display:inline-block;font-size:14px;font-weight:700;color:var(--tfc-cyan4);text-decoration:none;}
.tfc-promolink:hover{color:#fff;}
.tfc-promoimg img{width:100%;height:auto;display:block;border-radius:10px;box-shadow:0 20px 45px rgba(1,16,36,.4);}
@media (max-width:1024px){
 .tfc-promoimgcol>.kt-inside-inner-col{padding:0 28px 28px;}
}
.tfc-ico-budget{--tfc-i:url(/wp-content/uploads/tf-icons/budget.svg);}
.tfc-pills-left{justify-content:flex-start;margin-left:0;}
.tfc-ico-cloud-management{--tfc-i:url(/wp-content/uploads/tf-icons/cloud-management.svg);}
.tfc-ico-incident{--tfc-i:url(/wp-content/uploads/tf-icons/incident.svg);}
.tfc-ico-desktop-person{--tfc-i:url(/wp-content/uploads/tf-icons/desktop-person.svg);}
.tfc-ico-growth{--tfc-i:url(/wp-content/uploads/tf-icons/growth.svg);}
.tfc-ico-global{--tfc-i:url(/wp-content/uploads/tf-icons/global.svg);}
.tfc-ico-research-protection{--tfc-i:url(/wp-content/uploads/tf-icons/research-protection.svg);}
/* --- dark trust strip --- */
.tfc-iconband .kt-row-column-wrap{gap:20px;}
.tfc-iconitem{display:flex;align-items:center;gap:12px;flex-wrap:nowrap;}
.tfc-ibico{flex:none;width:34px;height:34px;border-radius:9px;background:rgba(0,181,230,.12);position:relative;}
.tfc-ibico::before{content:"";position:absolute;inset:8px;background:var(--tfc-cyan);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-ibtxt{flex:1 1 auto;min-width:0;font-size:13.5px;font-weight:600;line-height:1.4;color:rgba(255,255,255,.82);}
.tfc-ico-protection-incident{--tfc-i:url(/wp-content/uploads/tf-icons/protection-incident.svg);}
.tfc-ico-id-visitor{--tfc-i:url(/wp-content/uploads/tf-icons/id-visitor.svg);}
.tfc-ico-safety-help{--tfc-i:url(/wp-content/uploads/tf-icons/safety-help.svg?v=2);}
.tfc-ico-location-pin{--tfc-i:url(/wp-content/uploads/tf-icons/location-pin.svg);}
.tfc-ico-checkpoint{--tfc-i:url(/wp-content/uploads/tf-icons/checkpoint.svg);}
.tfc-ico-security-warning{--tfc-i:url(/wp-content/uploads/tf-icons/security-warning.svg?v=2);}
/* ================= GuardTek / GSOC components ================= */
/* left-aligned section head */
.tfc-headleft{text-align:left!important;}
.tfc-headleft .kt-inside-inner-col{max-width:620px;margin-left:0;margin-right:auto;}
/* promise band: statement left, mini stats right */
.tfc-band-soft{background:#eef2f8!important;}
/* hero stat pairs: content-width columns hugging left (native grid cannot express this) */
.tf-herostats > .kt-row-column-wrap{display:flex!important;flex-wrap:wrap;justify-content:flex-start;column-gap:34px;row-gap:14px;}
.tf-herostats .wp-block-kadence-column{flex:0 0 auto;width:auto;}
@media (max-width:640px){.tf-herostats > .kt-row-column-wrap{column-gap:22px;}}
.tfc-promiseband>.kt-row-column-wrap{align-items:center;}
.tfc-promiseband .tfc-ministats{justify-content:flex-end;}
@media (max-width:1024px){.tfc-promiseband .tfc-ministats{justify-content:flex-start;}}
.tfc-pbh2{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:700;line-height:1.18;letter-spacing:-.02em;color:var(--tfc-navy);margin:0;}
.tfc-pbh2 .hl{color:#1471c9;}
.tfc-ministats{display:flex;gap:40px;flex-wrap:wrap;}
@media (max-width:640px){.tfc-ministats{gap:24px;}}
.tfc-mini{display:block;}
.tfc-mini .n{display:block;font-size:clamp(20px,2.4vw,26px);font-weight:800;color:var(--tfc-navy);line-height:1.2;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.tfc-mini .l{display:block;font-size:13px;line-height:1.4;color:#67738a;margin-top:3px;}
/* dark device data panel */
.tfc-dpanel{display:block;background:linear-gradient(160deg,#04162c 0%,#011024 100%);border-radius:16px;overflow:hidden;box-shadow:0 24px 55px rgba(1,16,36,.28);}
.tfc-dphead{display:flex;align-items:center;gap:9px;padding:15px 18px;border-bottom:1px solid rgba(255,255,255,.1);font-size:13px;font-weight:700;color:#fff;}
.tfc-dphead::before{content:"";width:8px;height:8px;border-radius:50%;background:#4fd39a;flex:none;}
.tfc-dpgrid{display:grid;grid-template-columns:1fr 1fr;}
.tfc-dpcell{padding:15px 18px;border-top:1px solid rgba(255,255,255,.07);}
.tfc-dpcell:nth-child(odd){border-right:1px solid rgba(255,255,255,.07);}
.tfc-dplabel{display:block;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.45);margin:0 0 5px;}
.tfc-dpval{display:block;font-size:15px;font-weight:700;color:#fff;}
.tfc-dpval.ok{color:#4fd39a;}
.tfc-dpval.warn{color:#f5a623;}
/* dark sequence card with numbered steps inside */
.tfc-seqcard{background:linear-gradient(150deg,#011024 0%,#04529a 170%)!important;border-radius:18px;overflow:hidden;}
/* the card is NOT a tfc-band-* row, so it needs its own on-dark text colours */
.tfc-seqcard .tfc-h2{color:#fff;}
.tfc-seqcard .tfc-lead{color:rgba(255,255,255,.72);}
/* padding goes on the nested ROW wrapper. ".tfc-seqhead > .kt-inside-inner-col"
   never matches: a row's direct child is .kt-row-column-wrap, not the column inner. */
.tfc-seqhead{padding:44px 40px 0;}
.tfc-seqgrid{padding:26px 40px 44px;}
.tfc-seqhead>.kt-row-column-wrap,.tfc-seqgrid>.kt-row-column-wrap{padding-top:0!important;padding-bottom:0!important;}
.tfc-seqgrid .kt-row-column-wrap{gap:20px;}
.tfc-seqstep>.kt-inside-inner-col{border-top:1px solid rgba(255,255,255,.16);padding-top:16px;height:100%;}
.tfc-seqnum{display:block;width:24px;height:24px;border-radius:50%;background:rgba(52,198,239,.16);border:1px solid rgba(52,198,239,.5);color:#34c6ef;font-weight:700;font-size:11.5px;line-height:22px;text-align:center;margin:0 0 10px;}
.tfc-seqtitle{display:block;font-size:14.5px;font-weight:700;color:#fff;margin:0 0 6px;}
.tfc-seqbody{display:block;font-size:12.5px;line-height:1.55;color:rgba(255,255,255,.66);}
/* dark related tiles with body copy */
.tfc-dtile>.kt-inside-inner-col{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.13);border-radius:12px;padding:24px 22px;height:100%;transition:border-color .2s ease,transform .2s ease;}
.tfc-dtile>.kt-inside-inner-col:hover{border-color:rgba(52,198,239,.55);transform:translateY(-2px);}
.tfc-dtname{display:block;font-size:16px;font-weight:700;color:#fff;margin:0 0 8px;}
.tfc-dtbody{display:block;font-size:13px;line-height:1.6;color:rgba(255,255,255,.62);margin:0 0 14px;}
.tfc-dtlink{display:inline-block;font-size:13.5px;font-weight:700;color:#34c6ef;text-decoration:none;}
.tfc-dtlink:hover{color:#fff;}
/* blue-gradient CTA (GuardTek) with dark primary button */
.tfc-band-ctablue{background:linear-gradient(160deg,#1471c9 0%,#00b5e6 135%)!important;}
.tfc-band-ctablue .kt-inside-inner-col{max-width:760px;margin:0 auto;}
.tfc-band-ctablue .tfc-eyebrow{color:rgba(255,255,255,.8)!important;}
.tfc-band-ctablue .tfc-ctah2{color:#fff;}
.tfc-band-ctablue .tfc-ctap{color:rgba(255,255,255,.85);}
.tfc-band-ctablue .kb-buttons-wrap{justify-content:center;}
@media (max-width:1024px){
 .tfc-seqhead{padding:34px 26px 0;}
 .tfc-seqgrid{padding:20px 26px 34px;}
}
/* ===== GuardTek GSOC hero console (CSS/DOM mockup, no image) ===== */
.tfc-gsoc{background:linear-gradient(180deg,rgba(4,22,44,.94),rgba(1,16,36,.94));border:1px solid rgba(52,198,239,.22);border-radius:18px;overflow:hidden;box-shadow:0 30px 70px -34px rgba(1,16,36,.85),inset 0 1px 0 rgba(255,255,255,.05);}
.tfc-gsoc-bar{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid rgba(255,255,255,.07);font-size:12px;font-weight:700;color:#cfe0f2;}
.tfc-gsoc-live{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.1em;color:#bde72a;}
.tfc-gsoc-live i{width:7px;height:7px;border-radius:50%;background:#bde72a;animation:tfcGsocPulse 2s infinite;}
.tfc-gsoc-map{position:relative;height:268px;background:#061a33;}
.tfc-gsoc-heat{position:absolute;inset:0;background:radial-gradient(150px 120px at 32% 38%,rgba(230,0,15,.28),transparent 68%),radial-gradient(180px 140px at 66% 58%,rgba(0,181,230,.32),transparent 70%),radial-gradient(130px 105px at 50% 80%,rgba(30,158,106,.22),transparent 72%),radial-gradient(120px 100px at 80% 26%,rgba(20,113,201,.30),transparent 72%);}
.tfc-gsoc-mesh{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:30px 30px;}
.tfc-gsoc-pin{position:absolute;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.85);z-index:2;}
.tfc-gsoc-pin i{position:absolute;inset:-6px;border-radius:50%;border:1px solid currentColor;opacity:.45;animation:tfcGsocPing 2.6s infinite;}
.tfc-gsoc-pin.red{background:#e6000f;color:#e6000f;}
.tfc-gsoc-pin.cyan{background:#00b5e6;color:#00b5e6;}
.tfc-gsoc-pin.green{background:#1e9e6a;}
.tfc-gsoc-pin.amber{background:#f5a623;}
.tfc-gsoc-plabel{position:absolute;transform:translate(-50%,-50%);z-index:3;white-space:nowrap;font-size:10px;font-weight:700;color:#cfe0f2;background:rgba(1,16,36,.74);border:1px solid rgba(255,255,255,.14);padding:3px 8px;border-radius:6px;}
.tfc-gsoc-legend{display:flex;gap:14px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.07);font-size:11px;font-weight:600;color:#8fb4d6;}
.tfc-gsoc-legend span{display:flex;align-items:center;gap:6px;}
.tfc-gsoc-legend i{width:9px;height:9px;border-radius:50%;}
.tfc-gsoc-feed{display:flex;flex-direction:column;}
.tfc-gsoc-row{display:grid;grid-template-columns:26px 1fr auto;gap:11px;align-items:center;padding:11px 16px;border-bottom:1px solid rgba(255,255,255,.045);animation:tfcGsocIn .4s ease both;}
@keyframes tfcGsocIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.tfc-gsoc-row{animation:none}}
.tfc-gsoc-glyph{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-size:12px;font-weight:700;color:#02121f;}
.tfc-gsoc-label{font-size:13px;font-weight:500;color:#dbe7f4;line-height:1.35;}
.tfc-gsoc-label small{display:block;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.6);margin-top:1px;}
.tfc-gsoc-t{font-size:11px;font-weight:700;color:#6f88a6;white-space:nowrap;font-variant-numeric:tabular-nums;}
@keyframes tfcGsocPulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes tfcGsocPing{0%{transform:scale(.7);opacity:.6}70%{transform:scale(1.5);opacity:0}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){
 .tfc-gsoc-live i,.tfc-gsoc-pin i{animation:none!important;}
}
@media (max-width:767px){
 .tfc-gsoc-map{height:200px;}
 .tfc-gsoc-plabel{font-size:9px;padding:2px 6px;}
}
.tfc-ico-mobile-check{--tfc-i:url(/wp-content/uploads/tf-icons/mobile-check.svg);}
.tfc-ico-research-checkpoint{--tfc-i:url(/wp-content/uploads/tf-icons/research-checkpoint.svg);}
.tfc-ico-protection-checkpoint{--tfc-i:url(/wp-content/uploads/tf-icons/protection-checkpoint.svg);}
.tfc-ico-process-management{--tfc-i:url(/wp-content/uploads/tf-icons/process-management.svg);}
.tfc-ico-mobile{--tfc-i:url(/wp-content/uploads/tf-icons/mobile.svg);}
.tfc-ico-checkpoint{--tfc-i:url(/wp-content/uploads/tf-icons/checkpoint.svg);}
/* card variant with a small cyan eyebrow above the title */
.tfc-cardeyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--tfc-cyan6);margin:0 0 6px;}
/* dark client-portal panel: icon + label/sub rows with a right-aligned value */
.tfc-cpanel{display:block;background:linear-gradient(160deg,#04162c 0%,#011024 100%);border-radius:16px;overflow:hidden;box-shadow:0 24px 55px rgba(1,16,36,.28);}
.tfc-cphead{display:flex;align-items:center;gap:9px;padding:15px 18px;border-bottom:1px solid rgba(255,255,255,.1);font-size:13px;font-weight:700;color:#fff;}
.tfc-cplive{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#bde72a;}
.tfc-cplive::before{content:"";width:7px;height:7px;border-radius:50%;background:#bde72a;}
.tfc-cprow{display:grid;grid-template-columns:30px 1fr auto;gap:12px;align-items:center;padding:15px 18px;border-top:1px solid rgba(255,255,255,.07);}
.tfc-cpico{width:30px;height:30px;border-radius:8px;background:rgba(52,198,239,.14);position:relative;}
.tfc-cpico::before{content:"";position:absolute;inset:7px;background:#34c6ef;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-cplabel{font-size:13.5px;font-weight:700;color:#fff;line-height:1.3;}
.tfc-cplabel small{display:block;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.55);margin-top:2px;}
.tfc-cpval{font-size:13px;font-weight:700;white-space:nowrap;}
.tfc-cpval.ok{color:#4fd39a;}
.tfc-cpval.warn{color:#f5a623;}
.tfc-cpval.muted{color:rgba(255,255,255,.65);}
/* dark tile in its current-page state */
.tfc-dtile.is-current>.kt-inside-inner-col{background:rgba(255,255,255,.02);border-style:dashed;}
.tfc-dtile.is-current>.kt-inside-inner-col:hover{transform:none;border-color:rgba(255,255,255,.13);}
.tfc-dthere{display:inline-block;font-size:13.5px;font-weight:700;color:rgba(255,255,255,.45);}
/* GuardTek hero checkpoint console (CSS/DOM graphic in an html block) */
.tfc-ckpanel{display:block;background:linear-gradient(180deg,rgba(4,22,44,.94),rgba(1,16,36,.94));border:1px solid rgba(52,198,239,.22);border-radius:16px;overflow:hidden;box-shadow:0 30px 70px -34px rgba(1,16,36,.85);}
.tfc-ckhead{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.08);font-size:12.5px;font-weight:700;color:#cfe0f2;}
.tfc-ckcount{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#f5a623;}
.tfc-ckcount::before{content:"";width:7px;height:7px;border-radius:50%;background:#f5a623;flex:none;}
.tfc-ckrow{display:grid;grid-template-columns:34px 1fr 22px;gap:12px;align-items:center;padding:12px 16px;border-top:1px solid rgba(255,255,255,.055);}
.tfc-ckrow.is-flagged{background:rgba(230,0,15,.09);}
.tfc-ckbadge{width:34px;height:24px;border-radius:6px;display:grid;place-items:center;font-size:9.5px;font-weight:700;letter-spacing:.04em;color:#02121f;}
.tfc-ckbadge.nfc{background:#34c6ef;}
.tfc-ckbadge.qr{background:#bde72a;}
.tfc-ckbadge.gps{background:#7cc4f5;}
.tfc-ckbadge.pos{background:#9fb6cf;}
.tfc-cklabel{font-size:13.5px;font-weight:700;color:#e7eff8;line-height:1.3;}
.tfc-cklabel small{display:block;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.52);margin-top:2px;}
.tfc-ckstate{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;}
.tfc-ckstate.ok{background:rgba(79,211,154,.16);color:#4fd39a;}
.tfc-ckstate.flag{background:rgba(230,0,15,.2);color:#ff8a90;}
.tfc-ico-lw-alert-circle{--tfc-i:url(/wp-content/uploads/tf-icons/lw-alert-circle.svg);}
.tfc-ico-lw-map-pin{--tfc-i:url(/wp-content/uploads/tf-icons/lw-map-pin.svg);}
.tfc-ico-lw-video-camera{--tfc-i:url(/wp-content/uploads/tf-icons/lw-video-camera.svg);}
.tfc-ico-lw-microphone{--tfc-i:url(/wp-content/uploads/tf-icons/lw-microphone.svg);}
.tfc-ico-lw-navigation-send{--tfc-i:url(/wp-content/uploads/tf-icons/lw-navigation-send.svg);}
.tfc-ico-lw-message-square{--tfc-i:url(/wp-content/uploads/tf-icons/lw-message-square.svg);}
.tfc-ico-lw-smartphone{--tfc-i:url(/wp-content/uploads/tf-icons/lw-smartphone.svg);}
/* full-bleed dark step band (no card) + optional timestamps */
.tfc-seqgrid-flat .kt-row-column-wrap{gap:20px;}
.tfc-seqband .tfc-h2{color:#fff;}
.tfc-seqband .tfc-lead{color:rgba(255,255,255,.72);}
.tfc-seqtime{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;color:#bde72a;margin-top:10px;font-variant-numeric:tabular-nums;}
/* API split: pills left, small stat cards + one wide card right */
.tfc-apistats .kt-row-column-wrap{gap:14px;}
.tfc-apicard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:22px 20px;height:100%;}
.tfc-apinum{display:block;font-size:clamp(1.35rem,2.2vw,1.75rem);font-weight:700;letter-spacing:-.03em;line-height:1.05;color:var(--tfc-navy);margin:0 0 8px;}
.tfc-apilabel{display:block;font-size:13px;line-height:1.5;color:#67738a;margin:0;}
.tfc-apiwide>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:24px 22px;}
.tfc-apiwtitle{display:block;font-size:16px;font-weight:700;color:var(--tfc-navy);margin:0 0 8px;}
.tfc-apiwbody{display:block;font-size:13.5px;line-height:1.6;color:#67738a;margin:0;}
/* PTI alarm console (hero graphic, html block) */
.tfc-pti{display:block;background:linear-gradient(180deg,rgba(4,22,44,.94),rgba(1,16,36,.96));border:1px solid rgba(52,198,239,.22);border-radius:16px;overflow:hidden;box-shadow:0 30px 70px -34px rgba(1,16,36,.85);}
.tfc-ptihead{display:grid;grid-template-columns:34px 1fr auto;gap:11px;align-items:center;padding:14px 16px;background:rgba(230,0,15,.1);border-bottom:1px solid rgba(255,255,255,.08);}
.tfc-ptibang{width:34px;height:34px;border-radius:9px;background:rgba(230,0,15,.9);color:#fff;display:grid;place-items:center;font-weight:700;font-size:16px;}
.tfc-ptititle{font-size:13px;font-weight:700;color:#fff;line-height:1.3;}
.tfc-ptititle small{display:block;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.6);margin-top:2px;}
.tfc-pticlock{text-align:right;font-size:13px;font-weight:700;color:#34c6ef;font-variant-numeric:tabular-nums;}
.tfc-pticlock small{display:block;font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#bde72a;margin-top:2px;}
.tfc-pticam{position:relative;height:112px;background:radial-gradient(120px 90px at 50% 45%,rgba(0,181,230,.22),transparent 70%),#061a33;border-bottom:1px solid rgba(255,255,255,.08);}
.tfc-ptitag{position:absolute;top:10px;left:12px;display:flex;align-items:center;gap:6px;font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#ff8a90;}
.tfc-ptitag::before{content:"";width:6px;height:6px;border-radius:50%;background:#e6000f;}
.tfc-pticamico{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;background:rgba(52,198,239,.16);border:1px solid rgba(52,198,239,.45);}
.tfc-pticamico::before{content:"";position:absolute;inset:9px;background:#34c6ef;-webkit-mask:url(/wp-content/uploads/tf-icons/lw-video-camera.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-icons/lw-video-camera.svg) center/contain no-repeat;}
.tfc-pticap{position:absolute;left:12px;bottom:10px;font-size:10.5px;font-weight:600;color:rgba(255,255,255,.75);background:rgba(1,16,36,.7);border:1px solid rgba(255,255,255,.12);padding:3px 8px;border-radius:6px;}
.tfc-ptirow{display:grid;grid-template-columns:24px 1fr auto;gap:11px;align-items:center;padding:12px 16px;border-top:1px solid rgba(255,255,255,.055);}
.tfc-ptinum{width:24px;height:24px;border-radius:50%;background:rgba(52,198,239,.16);border:1px solid rgba(52,198,239,.45);color:#34c6ef;font-size:11px;font-weight:700;line-height:22px;text-align:center;}
.tfc-ptiname{font-size:13px;font-weight:700;color:#e7eff8;line-height:1.3;}
.tfc-ptiname small{display:block;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.52);margin-top:2px;}
.tfc-ptieta{font-size:11.5px;font-weight:700;color:#9fb6cf;white-space:nowrap;font-variant-numeric:tabular-nums;}
.tfc-ptieta.live{color:#bde72a;letter-spacing:.08em;text-transform:uppercase;font-size:10.5px;}
.tfc-ico-desktop-data{--tfc-i:url(/wp-content/uploads/tf-icons/desktop-data.svg);}
/* white image card inside a navy band (One connected loop) */
.tfc-loopcard>.kt-inside-inner-col{background:#fff;border-radius:16px;padding:26px;box-shadow:0 30px 70px -34px rgba(1,16,36,.7);}
.tfc-loopcard .tfc-shot-plain img{width:100%;height:auto;display:block;border-radius:8px;}
.tfc-loopshot .kt-row-column-wrap{max-width:720px;margin-left:auto;margin-right:auto;}
/* hero point pills (right column, html block) */
.tfc-hpoints{display:flex;flex-direction:column;gap:12px;}
.tfc-hpoint{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:15px 18px;}
.tfc-hpico{flex:none;width:20px;height:20px;position:relative;}
.tfc-hpico::before{content:"";position:absolute;inset:0;background:var(--tfc-cyan4);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-hptxt{font-size:14px;font-weight:600;line-height:1.4;color:rgba(255,255,255,.88);}
/* Setting only a border-radius on a core/image makes WP add .has-custom-border,
   and the Kadence theme then applies `border-style:solid` to that img - which
   draws an unwanted stroke around every rounded screenshot. Cancel it unless a
   border colour was deliberately set. */
.wp-block-image.has-custom-border:not(.has-border-color) img{border-style:none!important;border-width:0!important;}
.tfc-shot img,.tfc-shot-plain img{border:0!important;}
/* product-family platform cards (stacked, logo + badge + body + CTA).
   NB: tfc-pcard sits on a nested ROW, so the card chrome must be addressed via
   the full child chain - "> .kt-inside-inner-col" alone never matches a row. */
.tfc-pcard{margin-bottom:20px!important;}
.tfc-pcard:last-child{margin-bottom:0!important;}
.tfc-pcard>.kt-row-column-wrap>.wp-block-kadence-column>.kt-inside-inner-col{position:relative;background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:34px 36px;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;}
.tfc-pcard.is-featured>.kt-row-column-wrap>.wp-block-kadence-column>.kt-inside-inner-col{border-color:var(--tfc-cyan);box-shadow:0 2px 10px rgba(0,181,230,.10);}
/* whole card is clickable + lifts on hover */
.tfc-pcard>.kt-row-column-wrap>.wp-block-kadence-column>.kt-inside-inner-col:hover{border-color:var(--tfc-cyan);box-shadow:0 14px 34px -18px rgba(1,16,36,.28);transform:translateY(-2px);}
.tfc-pcardlink{position:absolute;inset:0;z-index:2;border-radius:14px;}
.tfc-pcardrow,.tfc-pcta,.tfc-pctawrap,.tfc-pcard .kb-buttons-wrap{position:relative;z-index:3;}
.tfc-pbtn{justify-content:flex-end;}
@media (max-width:1024px){
 .tfc-pbtn{justify-content:flex-start;}
}
.tfc-pcardrow>.kt-row-column-wrap{align-items:center;}
.tfc-plogorow>.kt-row-column-wrap>.wp-block-kadence-column>.kt-inside-inner-col{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.tfc-plogorow figure{margin:0!important;}
.tfc-plogo img{height:30px;width:auto;max-width:230px;display:block;}
.tfc-pbadge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--tfc-cyan6);background:rgba(0,181,230,.1);border-radius:999px;padding:6px 14px;white-space:nowrap;}
.tfc-pbody{font-size:15px;line-height:1.65;color:var(--tfc-g500);margin:18px 0 0;}
.tfc-pcta>.kt-inside-inner-col{align-items:flex-end;}
.tfc-pctawrap{text-align:right;}
.tfc-plink{display:inline-block;font-size:14.5px;font-weight:700;color:var(--tfc-navy);text-decoration:none;}
.tfc-pcard:hover .tfc-plink{color:var(--tfc-cyan6);}
@media (max-width:1024px){
 .tfc-pcard>.kt-row-column-wrap>.wp-block-kadence-column>.kt-inside-inner-col{padding:28px 24px;}
 .tfc-pctawrap{text-align:left;}
 .tfc-pcta>.kt-inside-inner-col{align-items:flex-start;}
}
/* ============ Professional Services components ============ */
/* opt-in modifier for a section head: lift the 760px cap and hold the H2 on one
   line at desktop widths. Below 1025px it wraps normally so it cannot overflow. */
@media (min-width:1025px){
 .tfc-headwide .kt-inside-inner-col{max-width:none!important;}
 .tfc-headwide .tfc-h2{white-space:nowrap;}
}
/* light stat band: stacks number over label, centred (the horizontal flex used
   on navy 3-up bands squeezes long values like "6 to 8 weeks" into a wrap) */
.tfc-statband.is-light .tfc-stat{flex-direction:column;align-items:center;text-align:center;gap:6px;}
.tfc-statband.is-light .tfc-stat .n{white-space:nowrap;}
.tfc-statband.is-light .tfc-stat .l{max-width:230px;text-align:center;}
.tfc-qstat .n{white-space:nowrap;}
.tfc-statband.is-light .tfc-stat .n{color:var(--tfc-navy);}
.tfc-statband.is-light .tfc-stat .l{color:#67738a;}
.tfc-dpills-left{justify-content:flex-start;margin-left:0;}
.tfc-dpill-ico{display:inline-flex;align-items:center;gap:8px;}
.tfc-dpill-ico::before{content:"";width:15px;height:15px;flex:none;background:var(--tfc-cyan4);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
/* light stat band */
.tfc-statband.is-light .tfc-statnum{color:var(--tfc-navy);}
.tfc-statband.is-light .tfc-statlabel{color:#67738a;}
/* 2-up cards, dark icon tile on the left */
.tfc-icard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:14px;padding:26px 26px;height:100%;display:grid;grid-template-columns:44px 1fr;gap:18px;align-items:start;}
.tfc-itile{width:44px;height:44px;border-radius:11px;background:linear-gradient(150deg,var(--tfc-navy),var(--tfc-royal));position:relative;}
.tfc-itile::before{content:"";position:absolute;inset:11px;background:var(--tfc-cyan4);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-ibodywrap{grid-column:2;}
.tfc-ititle{display:block;font-size:15.5px;font-weight:700;color:var(--tfc-navy);margin:0 0 7px;}
.tfc-itext{display:block;font-size:13.5px;line-height:1.6;color:#67738a;margin:0;}
/* implementation journey: rail + phase cards */
.tfc-rail{display:grid;grid-template-columns:repeat(4,1fr);align-items:center;margin:0 0 18px;}
.tfc-railstep{position:relative;display:flex;align-items:center;justify-content:center;}
.tfc-railstep::before{content:"";position:absolute;top:50%;left:0;right:0;height:2px;background:var(--tfc-cyan);transform:translateY(-50%);z-index:0;}
.tfc-railstep:first-child::before{left:50%;}
.tfc-railstep:last-child::before{right:50%;}

.tfc-railnum{position:relative;z-index:1;width:38px;height:38px;border-radius:50%;background:#fff;border:2px solid var(--tfc-cyan);color:var(--tfc-navy);font-size:12.5px;font-weight:700;display:grid;place-items:center;}

.tfc-phase>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--tfc-g200);border-radius:12px;padding:22px 20px;height:100%;text-align:center;}
.tfc-pheyebrow{display:block;font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--tfc-cyan6);margin:0 0 8px;}
.tfc-phtitle{display:block;font-size:16px;font-weight:700;color:var(--tfc-navy);margin:0 0 10px;}
.tfc-phbody{display:block;font-size:12.5px;line-height:1.55;color:#67738a;margin:0 0 16px;}
.tfc-phweeks{display:inline-block;font-size:11.5px;font-weight:700;color:var(--tfc-cyan6);background:rgba(0,181,230,.1);border-radius:999px;padding:5px 13px;}
/* dark split with quote card + stats */
.tfc-qcard>.kt-inside-inner-col{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.13);border-top:3px solid var(--tfc-cyan);border-radius:12px;padding:30px 30px;}
.tfc-qtext{display:block;font-size:clamp(1rem,1.5vw,1.15rem);font-style:italic;font-weight:600;line-height:1.55;color:var(--tfc-cyan4);margin:0 0 18px;}
.tfc-qattr{display:block;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.55);margin:0 0 22px;padding:0 0 22px;border-bottom:1px solid rgba(255,255,255,.12);}
.tfc-qstats{display:flex;gap:38px;flex-wrap:wrap;}
.tfc-qstat .n{display:block;font-size:clamp(1.25rem,2vw,1.6rem);font-weight:700;letter-spacing:-.02em;color:var(--tfc-cyan4);line-height:1.1;}
.tfc-qstat .l{display:block;font-size:12.5px;color:rgba(255,255,255,.65);margin-top:4px;}
@media (max-width:767px){
 .tfc-rail{grid-template-columns:repeat(2,1fr);row-gap:14px;}
 .tfc-railstep::before{display:none;}
 .tfc-icard>.kt-inside-inner-col{grid-template-columns:40px 1fr;gap:14px;padding:22px 20px;}
}
.tfc-ico-cloud-lock{--tfc-i:url(/wp-content/uploads/tf-icons/cloud-lock.svg);}
/* ============ ReportPro AI components ============ */
/* numbered feature cards (01/02/03 in the corner) */
.tfc-ncard>.kt-inside-inner-col{position:relative;background:var(--tfc-g50);border:1.5px solid var(--tfc-g200);border-radius:14px;padding:26px 24px;height:100%;}
.tfc-ncardnum{position:absolute;top:22px;right:24px;font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--tfc-g500);}
.tfc-ntile{width:44px;height:44px;border-radius:11px;background:linear-gradient(150deg,var(--tfc-navy),var(--tfc-royal));position:relative;margin:0 0 18px;}
.tfc-ntile::before{content:"";position:absolute;inset:11px;background:var(--tfc-cyan4);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
/* dark role cards: cyan eyebrow + title + body */
.tfc-rcard>.kt-inside-inner-col{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:26px 24px;height:100%;}
.tfc-rtile{width:40px;height:40px;border-radius:10px;background:rgba(52,198,239,.14);position:relative;margin:0 0 18px;}
.tfc-rtile::before{content:"";position:absolute;inset:10px;background:var(--tfc-cyan4);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-reyebrow{display:block;font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--tfc-cyan4);margin:0 0 8px;}
.tfc-rtitle{display:block;font-size:16px;font-weight:700;color:#fff;margin:0 0 10px;}
.tfc-rbody{display:block;font-size:13px;line-height:1.6;color:rgba(255,255,255,.66);margin:0;}
/* big centred pull-quote on a light band */
.tfc-bqicon{width:34px;height:34px;margin:0 auto 22px;position:relative;}
.tfc-bqicon::before{content:"";position:absolute;inset:0;background:var(--tfc-cyan);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-bqtext{display:block;font-size:clamp(1.2rem,2.3vw,1.75rem);font-weight:700;line-height:1.4;letter-spacing:-.015em;color:var(--tfc-navy);margin:0 0 26px;}
.tfc-bqname{display:block;font-size:14px;font-weight:700;color:var(--tfc-navy);margin:0;}
.tfc-bqrole{display:block;font-size:13px;color:#67738a;margin:4px 0 0;}
/* ============ dispatch console mockups (html blocks) ============ */
.tfc-dcon{display:block;background:linear-gradient(180deg,#0a1424,#050b16);border:1px solid rgba(52,198,239,.16);border-radius:12px;overflow:hidden;box-shadow:0 28px 60px -30px rgba(1,16,36,.75);font-variant-numeric:tabular-nums;}
.tfc-dcbar{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.07);font-size:11.5px;font-weight:700;color:#cfe0f2;}
.tfc-dcbar em{font-style:normal;color:rgba(255,255,255,.45);font-weight:600;}
.tfc-dcbadge{margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#34c6ef;background:rgba(52,198,239,.14);border-radius:5px;padding:3px 8px;}
.tfc-dcstats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid rgba(255,255,255,.07);}
.tfc-dcstat{padding:12px 14px;border-right:1px solid rgba(255,255,255,.05);}
.tfc-dcstat:last-child{border-right:0;}
.tfc-dcstat b{display:block;font-size:16px;font-weight:700;color:#fff;line-height:1.1;}
.tfc-dcstat span{display:block;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.42);margin-top:4px;}
.tfc-dcrow{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid rgba(255,255,255,.05);}
.tfc-dcname{font-size:12.5px;font-weight:700;color:#e7eff8;line-height:1.3;}
.tfc-dcname small{display:block;font-size:11px;font-weight:500;color:rgba(255,255,255,.45);margin-top:2px;}
.tfc-dctag{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:5px;padding:4px 8px;white-space:nowrap;}
.tfc-dctag.red{background:rgba(230,0,15,.18);color:#ff8a90;}
.tfc-dctag.amber{background:rgba(245,166,35,.16);color:#f5a623;}
.tfc-dctag.green{background:rgba(79,211,154,.16);color:#4fd39a;}
.tfc-dctag.cyan{background:rgba(52,198,239,.16);color:#34c6ef;}
.tfc-dcflow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:12px 14px;border-top:1px solid rgba(255,255,255,.05);}
.tfc-dcstep{font-size:10px;font-weight:700;color:#cfe0f2;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:5px;padding:4px 8px;}
.tfc-dcarrow{color:rgba(52,198,239,.7);font-size:11px;}
.tfc-dctimer{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(255,255,255,.05);}
.tfc-dctcell{padding:12px 14px;border-right:1px solid rgba(255,255,255,.05);}
.tfc-dctcell:last-child{border-right:0;}
.tfc-dctcell span{display:block;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.42);margin-bottom:5px;}
.tfc-dctcell b{display:block;font-size:14px;font-weight:700;color:#ff8a90;}
.tfc-dctcell b.ok{color:#4fd39a;}
.tfc-dctcell em{font-style:normal;font-size:10.5px;color:rgba(255,255,255,.4);margin-left:5px;font-weight:600;}
@media (max-width:767px){
 .tfc-dcstats{grid-template-columns:repeat(2,1fr);}
}
/* --- mobile --- */
@media (max-width:1024px){
 .tfc-cap .kt-row-column-wrap{gap:34px;}
}
@media (max-width:767px){
 .tfc-badge{margin-top:0;}
 .tfc-pills{justify-content:flex-start;}
 .tfc-modhead{padding-left:0;min-height:0;}
 .tfc-modhead::before{position:relative;display:block;margin-bottom:12px;}
 .tfc-modhead::after{left:12px;top:12px;}
 .tfc-faqitem{padding:20px 18px;}
 .tfc-shot img{filter:drop-shadow(0 14px 30px rgba(1,16,36,.16));}
}
/* centred variant of the dark icon card (used by tfb_s_navycards).
   New class name, so no existing page can be affected. */
.tfc-ccard>.kt-inside-inner-col{text-align:center;}
.tfc-ccard .tfc-rtile{margin-left:auto;margin-right:auto;}
/* light-band variant of the pull quote (tfb_s_quote band=gray|white).
   Class-token selectors, so tfc-quotes (the plural multi-card component) is untouched,
   and no existing page has tfc-quote outside a navy band. */
.tfc-band-gray .tfc-quote,.tfc-band-white .tfc-quote{color:var(--tfc-navy);}
.tfc-band-gray .tfc-quote .qm,.tfc-band-white .tfc-quote .qm{color:var(--tfc-cyan);}
.tfc-band-gray .tfc-quoteattr,.tfc-band-white .tfc-quoteattr{color:#67738a;}
/* ===== TF COMPONENTS (shared) - END ===== */

/* ===== TF SECURITY INCIDENT REPORTING (page 18064) - START ===== */
body.page-id-18064{--sirNavy:#011024;--sirNavy2:#001427;--sirCyan:#00b5e6;--sirCyan4:#34c6ef;--sirBlue:#1471c9;--sirInk:#011024;--sirGray:#5a6b83;--sirGray6:#67738a;--sirGray7:#3d4c63;--sirLine:#e2e6ee;--sirTint:#f6f7fa;}
body.page-id-18064 .sir-sec{padding-top:clamp(48px,6vw,80px)!important;padding-bottom:clamp(48px,6vw,80px)!important;}
body.page-id-18064 .sir-eyebrow{font-weight:700;font-size:13px;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;}
body.page-id-18064 .sir-eyebrow.sir-lt{color:var(--sirBlue);}
body.page-id-18064 .sir-eyebrow.sir-dk{color:var(--sirCyan4);}
body.page-id-18064 .sir-h2{font-weight:700;font-size:clamp(1.7rem,2.6vw,2.2rem);line-height:1.14;letter-spacing:-.01em;color:var(--sirInk);margin:0;}
body.page-id-18064 .sir-lead{font-size:16px;line-height:1.7;color:var(--sirGray);margin:16px 0 0;}
body.page-id-18064 .sir-center{text-align:center;}
body.page-id-18064 .sir-center>.kt-inside-inner-col{max-width:760px;margin-left:auto;margin-right:auto;}
body.page-id-18064 .sir-innerhead{margin-bottom:30px!important;padding:0!important;}
body.page-id-18064 .sir-wrapcol>.kt-inside-inner-col{max-width:none;}

/* ---- HERO ADDITIONS (bullet list under the subhead) ---- */
body.page-id-18064 .sir-heropoints{display:flex;flex-direction:column;gap:12px;margin:0 0 30px;}
body.page-id-18064 .sir-heropoint{position:relative;display:block;padding-left:28px;font-size:15px;line-height:1.45;color:rgba(255,255,255,.85);text-align:left;}
body.page-id-18064 .sir-heropoint::before{content:"";position:absolute;left:0;top:1px;width:18px;height:18px;background:var(--sirCyan4);-webkit-mask:url(/wp-content/uploads/tf-sir-icons/sir-protection-check.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-sir-icons/sir-protection-check.svg) center/contain no-repeat;}

/* ---- 2. OUTCOME / STAT BAND ---- */
body.page-id-18064 .sir-stat{display:flex;align-items:center;gap:16px;justify-content:center;}
body.page-id-18064 .sir-stat .n{flex:0 0 auto;font-weight:700;font-size:clamp(1.5rem,2.6vw,2.1rem);letter-spacing:-.03em;line-height:1;color:var(--sirCyan4);white-space:nowrap;}
body.page-id-18064 .sir-stat .l{flex:1 1 auto;min-width:0;font-size:14px;font-weight:600;line-height:1.45;color:rgba(255,255,255,.6);max-width:210px;}

/* ---- 4. CAPABILITY ROWS ---- */
body.page-id-18064 .sir-caprow>.kt-row-column-wrap{align-items:center;}
body.page-id-18064 .sir-cap-eyebrow{position:relative;min-height:44px;display:flex;align-items:center;padding-left:58px;font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--sirGray6);margin:0 0 16px;}
body.page-id-18064 .sir-cap-eyebrow::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:11px;background:rgba(0,181,230,.1);}
body.page-id-18064 .sir-cap-eyebrow::after{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:var(--sirCyan);-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
body.page-id-18064 .sir-ci-incident{--i:url(/wp-content/uploads/tf-sir-icons/sir-incident.svg);}
body.page-id-18064 .sir-ci-cal{--i:url(/wp-content/uploads/tf-sir-icons/sir-calendar-check.svg);}
body.page-id-18064 .sir-ci-growth{--i:url(/wp-content/uploads/tf-sir-icons/sir-growth-protection.svg);}
body.page-id-18064 .sir-ci-mobile{--i:url(/wp-content/uploads/tf-sir-icons/sir-mobile-check.svg);}
body.page-id-18064 .sir-caph3{font-weight:700;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.16;letter-spacing:-.01em;color:var(--sirInk);margin:0 0 14px;}
body.page-id-18064 .sir-capcopy{font-size:15px;line-height:1.7;color:var(--sirGray);margin:0 0 22px;}
body.page-id-18064 .sir-caplist{display:flex;flex-direction:column;gap:12px;}
body.page-id-18064 .sir-capitem{position:relative;display:block;padding-left:29px;font-size:14px;line-height:1.5;color:var(--sirGray7);}
body.page-id-18064 .sir-capitem::before{content:"";position:absolute;left:0;top:1px;width:18px;height:18px;background:var(--sirBlue);-webkit-mask:url(/wp-content/uploads/tf-sir-icons/sir-protection-check.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-sir-icons/sir-protection-check.svg) center/contain no-repeat;}
body.page-id-18064 .sir-capimg .kb-img,body.page-id-18064 .sir-capimg img{border-radius:10px;box-shadow:0 24px 55px rgba(1,16,36,.18);width:100%;height:auto;display:block;}
/* image LEFT on desktop while keeping the copy first in the DOM (mobile + a11y order).
   Targets the stable per-column uniqueID classes: Kadence interleaves <style> siblings
   inside .kt-row-column-wrap, so :first-child / :last-child never match the columns. */
@media (min-width:1025px){
 body.page-id-18064 .kadence-column18064_sirCcopyb,
 body.page-id-18064 .kadence-column18064_sirCcopyd{order:2;}
 body.page-id-18064 .kadence-column18064_sirCimgb,
 body.page-id-18064 .kadence-column18064_sirCimgd{order:1;}
}

/* ---- 5. EVIDENCE BAND ---- */
body.page-id-18064 .sir-evrow{background:linear-gradient(150deg,#011024 0%,#04326a 150%)!important;}
body.page-id-18064 .sir-evh2{font-weight:700;font-size:clamp(1.7rem,2.6vw,2.2rem);line-height:1.16;letter-spacing:-.01em;color:#fff;margin:0 0 16px;}
body.page-id-18064 .sir-evsub{font-size:16px;line-height:1.7;color:rgba(255,255,255,.72);margin:0 auto;max-width:640px;}
body.page-id-18064 .sir-evhead{max-width:1000px;margin-left:auto;margin-right:auto;}
body.page-id-18064 .sir-evgrid>.kt-row-column-wrap{gap:16px;}
body.page-id-18064 .sir-evcard>.kt-inside-inner-col{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:26px 14px;text-align:center;height:100%;}
body.page-id-18064 .sir-evicon{width:48px;height:48px;margin:0 auto 14px;position:relative;}
body.page-id-18064 .sir-evicon::before{content:"";position:absolute;inset:0;background:var(--sirCyan4);-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
body.page-id-18064 .sir-ev-photo{--i:url(/wp-content/uploads/tf-sir-icons/sir-camera.svg);}
body.page-id-18064 .sir-ev-video{--i:url(/wp-content/uploads/tf-sir-icons/sir-mobile.svg);}
body.page-id-18064 .sir-ev-audio{--i:url(/wp-content/uploads/tf-sir-icons/sir-chat-check.svg);}
body.page-id-18064 .sir-ev-gps{--i:url(/wp-content/uploads/tf-sir-icons/sir-gps-map.svg);}
body.page-id-18064 .sir-ev-text{--i:url(/wp-content/uploads/tf-sir-icons/sir-document-check.svg);}
body.page-id-18064 .sir-evlabel{font-size:15px;font-weight:700;line-height:1.3;color:#fff;margin:0;}

/* ---- 6. FEATURE GRID ---- */
body.page-id-18064 .sir-featrow{border-top:1px solid var(--sirLine);}
body.page-id-18064 .sir-fgrid>.kt-row-column-wrap{gap:16px;}
body.page-id-18064 .sir-fcard>.kt-inside-inner-col{background:#fff;border:1.5px solid var(--sirLine);border-radius:14px;padding:28px 22px;height:100%;}
body.page-id-18064 .sir-ficon{width:44px;height:44px;border-radius:11px;background:linear-gradient(145deg,#011024 0%,#04529a 130%);position:relative;margin:0 0 16px;}
body.page-id-18064 .sir-ficon::before{content:"";position:absolute;inset:10px;background:#fff;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
body.page-id-18064 .sir-fi-contract{--i:url(/wp-content/uploads/tf-sir-icons/sir-protection-check.svg);}
body.page-id-18064 .sir-fi-backup{--i:url(/wp-content/uploads/tf-sir-icons/sir-cloud-check.svg);}
body.page-id-18064 .sir-fi-litigation{--i:url(/wp-content/uploads/tf-sir-icons/sir-document-protected.svg);}
body.page-id-18064 .sir-fi-webmobile{--i:url(/wp-content/uploads/tf-sir-icons/sir-gps-map.svg);}
body.page-id-18064 .sir-ftitle{font-weight:700;font-size:15px;line-height:1.35;color:var(--sirInk);margin:0 0 8px;}
body.page-id-18064 .sir-fbody{font-size:13px;line-height:1.6;color:var(--sirGray);margin:0;}

/* ---- 7. RELATED MODULES ---- */
body.page-id-18064 .sir-relgrid>.kt-row-column-wrap{gap:16px;}
body.page-id-18064 .sir-rlink{display:flex;align-items:center;gap:16px;background:var(--sirTint);border:1.5px solid var(--sirLine);border-radius:12px;padding:22px;box-shadow:0 1px 2px rgba(1,16,36,.06);transition:all .2s ease-out;text-decoration:none;height:100%;}
body.page-id-18064 .sir-rlink:hover,body.page-id-18064 .sir-rlink:focus-visible{border-color:var(--sirCyan);box-shadow:0 10px 24px rgba(1,16,36,.08);transform:translateY(-2px);}
body.page-id-18064 .sir-ricon{flex:none;width:46px;height:46px;border-radius:11px;background:linear-gradient(145deg,#011024 0%,#04529a 130%);position:relative;box-shadow:0 8px 18px rgba(1,16,36,.2);}
body.page-id-18064 .sir-ricon::before{content:"";position:absolute;inset:11px;background:#fff;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;}
body.page-id-18064 .sir-ri-guard{--i:url(/wp-content/uploads/tf-sir-icons/sir-protection-worker.svg);}
body.page-id-18064 .sir-ri-patrol{--i:url(/wp-content/uploads/tf-sir-icons/sir-gps-map.svg);}
body.page-id-18064 .sir-ri-ops{--i:url(/wp-content/uploads/tf-sir-icons/sir-checkpoint.svg);}
body.page-id-18064 .sir-rtxt{display:block;}
body.page-id-18064 .sir-rname{display:block;font-weight:700;font-size:15px;line-height:1.3;color:var(--sirInk);}
body.page-id-18064 .sir-rexp{display:block;font-size:12.5px;font-weight:700;color:#036c93;margin-top:2px;}

/* ---- 8. CLOSING CTA ---- */
body.page-id-18064 .sir-ctarow{background:linear-gradient(150deg,#011024 0%,#04529a 150%)!important;}
body.page-id-18064 .sir-ctarow>.kt-row-column-wrap .kt-inside-inner-col{max-width:760px;margin-left:auto;margin-right:auto;text-align:center;}
body.page-id-18064 .sir-ctah2{font-weight:700;font-size:clamp(2rem,3.4vw,2.8rem);line-height:1.1;letter-spacing:-.02em;color:#fff;margin:0 0 16px;}
body.page-id-18064 .sir-ctap{font-size:16px;line-height:1.6;color:rgba(255,255,255,.72);margin:0 0 32px;}
body.page-id-18064 .sir-ctarow .kb-buttons-wrap{justify-content:center;}

/* ---- RESPONSIVE ---- */
@media (max-width:1024px){
 body.page-id-18064 .sir-stat{justify-content:flex-start;}
}
@media (max-width:767px){
 body.page-id-18064 .sir-heropoints{max-width:340px;margin-left:auto;margin-right:auto;}
 body.page-id-18064 .sir-evcard>.kt-inside-inner-col{padding:22px 10px;}
 body.page-id-18064 .sir-evicon{width:40px;height:40px;}
 body.page-id-18064 .sir-rlink{padding:18px;gap:14px;}
}
@media (prefers-reduced-motion:reduce){
 body.page-id-18064 .sir-rlink{transition:none;}
 body.page-id-18064 .sir-rlink:hover{transform:none;}
}
/* ===== TF SECURITY INCIDENT REPORTING (page 18064) - END ===== */

/* ===== TFC APP-WINDOW MOCKUP VOCABULARY (tfc-ap*) - START ===== */
/* Reusable dark TrackTik app-window chrome for HTML-block product mockups.
   Fluid (no JS scaling shim). Every size hangs off --s so one value rescales a window. */
.tfc-ap{--s:1;--apc:#00b5e6;--apc4:#34c6ef;--apred:#e6000f;--apamb:#f5a623;--apblu:#6fb8ff;
  position:relative;display:grid;grid-template-columns:calc(var(--s)*104px) 1fr;background:#050d1a;
  border:1px solid #dde3ec;border-radius:14px;box-shadow:0 24px 60px rgba(1,16,36,.14);aspect-ratio:1024/700;
  overflow:hidden;font-family:Inter,system-ui,sans-serif;}
.tfc-ap *{box-sizing:border-box;}
.tfc-ap-sm{--s:.84;aspect-ratio:1024/760;border-color:rgba(255,255,255,.14);box-shadow:0 0 0 calc(var(--s)*10px) rgba(255,255,255,.04),0 0 0 calc(var(--s)*11px) rgba(255,255,255,.14),0 40px 90px rgba(1,16,36,.50);}
.tfc-apmono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}

/* sidebar */
.tfc-apside{background:#020814;border-right:1px solid rgba(255,255,255,.07);padding:calc(var(--s)*13px) calc(var(--s)*9px);display:flex;flex-direction:column;gap:calc(var(--s)*2px);}
.tfc-aplogo{margin:0 0 calc(var(--s)*13px) calc(var(--s)*4px);}
.tfc-aplogo img{width:calc(var(--s)*64px);height:auto;display:block;opacity:.92;}
.tfc-apnav{display:flex;align-items:center;gap:calc(var(--s)*6px);padding:calc(var(--s)*5px) calc(var(--s)*6px);border-radius:5px;font-size:calc(var(--s)*8px);font-weight:500;line-height:1.2;color:rgba(255,255,255,.46);white-space:nowrap;overflow:hidden;}
.tfc-apnav .tfc-i{display:inline-block;flex:none;width:calc(var(--s)*10px);height:calc(var(--s)*10px);}
.tfc-apnav.on{background:rgba(0,181,230,.10);color:#fff;font-weight:700;}

/* main pane + shared furniture */
.tfc-apmain{padding:calc(var(--s)*13px) calc(var(--s)*14px);min-width:0;}
.tfc-apbar{display:flex;align-items:center;gap:calc(var(--s)*8px);margin-bottom:calc(var(--s)*12px);font-size:calc(var(--s)*8px);letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.42);}
.tfc-apbar .lead{color:var(--apc);}
.tfc-apbar .sep{opacity:.4;}
.tfc-apbtn{flex:none;padding:calc(var(--s)*5px) calc(var(--s)*9px);border:1px solid rgba(255,255,255,.16);border-radius:4px;font-size:calc(var(--s)*7.5px);letter-spacing:.04em;color:rgba(255,255,255,.72);white-space:nowrap;}
.tfc-apbtn.pri{background:var(--apc);border-color:var(--apc);color:#011024;font-weight:700;}
.tfc-apbtn.r{margin-left:auto;}
.tfc-aplabel{font-size:calc(var(--s)*7px);letter-spacing:.10em;text-transform:uppercase;color:rgba(255,255,255,.34);margin:0 0 calc(var(--s)*7px);}
.tfc-apchip{display:inline-block;padding:calc(var(--s)*3px) calc(var(--s)*6px);border-radius:3px;font-size:calc(var(--s)*7px);font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;}
.tfc-apchip.red{background:var(--apred);color:#fff;}
.tfc-apchip.amber{background:var(--apamb);color:#2a1a00;}
.tfc-apchip.cyan{background:var(--apc);color:#011024;}
.tfc-apchip.grey{background:rgba(255,255,255,.14);color:rgba(255,255,255,.75);}
.tfc-aptabs{display:flex;gap:calc(var(--s)*14px);border-bottom:1px solid rgba(255,255,255,.09);margin-bottom:calc(var(--s)*12px);}
.tfc-aptabs span{padding-bottom:calc(var(--s)*7px);font-size:calc(var(--s)*8px);letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.40);white-space:nowrap;}
.tfc-aptabs span.on{color:#fff;font-weight:700;box-shadow:inset 0 -2px 0 var(--apc);}

/* ---- MAP (hero) ---- */
.tfc-apmap{position:relative;border:1px solid rgba(255,255,255,.08);border-radius:8px;overflow:hidden;background:linear-gradient(160deg,#011024,#041c3a);aspect-ratio:16/11;min-height:calc(var(--s)*190px);}
.tfc-apmap iframe{position:absolute;inset:0;width:100%;height:100%;border:0;pointer-events:none;filter:invert(92%) hue-rotate(180deg) brightness(.85) contrast(1.05) saturate(1.4);}
.tfc-apmap .scrim{position:absolute;inset:0;background:linear-gradient(160deg,rgba(1,16,36,.55),rgba(4,28,58,.35));pointer-events:none;}
.tfc-ap-sm .tfc-apmain{display:flex;flex-direction:column;}
.tfc-ap-sm .tfc-apmap{flex:1;aspect-ratio:auto;min-height:calc(var(--s)*300px);}
.tfc-appin{position:absolute;transform:translate(-50%,-50%);min-width:calc(var(--s)*20px);height:calc(var(--s)*20px);padding:0 calc(var(--s)*4px);border-radius:999px;font-size:calc(var(--s)*8px);font-weight:700;line-height:calc(var(--s)*20px);text-align:center;color:#fff;border:2px solid rgba(255,255,255,.55);}
.tfc-appin.red{background:var(--apred);}
.tfc-appin.amber{background:var(--apamb);color:#2a1a00;}
.tfc-appin.cyan{background:var(--apc);color:#011024;}
.tfc-apscale{position:absolute;left:calc(var(--s)*9px);bottom:calc(var(--s)*8px);font-size:calc(var(--s)*7px);letter-spacing:.06em;color:rgba(255,255,255,.45);}
.tfc-aplayers{position:absolute;right:calc(var(--s)*8px);top:calc(var(--s)*8px);width:calc(var(--s)*88px);background:rgba(2,8,20,.86);border:1px solid rgba(255,255,255,.12);border-radius:5px;padding:calc(var(--s)*7px);}
.tfc-aplayers .row{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--s)*5px);font-size:calc(var(--s)*7px);color:rgba(255,255,255,.66);margin-bottom:calc(var(--s)*5px);white-space:nowrap;}
.tfc-apsw{flex:none;width:calc(var(--s)*14px);height:calc(var(--s)*8px);border-radius:999px;background:var(--apc);position:relative;}
.tfc-apsw::after{content:"";position:absolute;top:1px;right:1px;width:calc(var(--s)*6px);height:calc(var(--s)*6px);border-radius:50%;background:#fff;}
.tfc-aplayers .tfc-apbtn{display:block;width:100%;text-align:center;margin-top:calc(var(--s)*6px);}

/* ---- KPI TILES + 3-COLUMN CONSOLE (capability 1) ---- */
.tfc-apkpis{display:grid;grid-template-columns:repeat(4,1fr);gap:calc(var(--s)*8px);margin-bottom:calc(var(--s)*12px);}
.tfc-apkpi{border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:calc(var(--s)*8px);min-width:0;}
.tfc-apkpi b{display:block;font-size:calc(var(--s)*15px);font-weight:700;line-height:1.1;color:#fff;}
.tfc-apkpi b.hot{color:var(--apred);}
.tfc-apkpi span{display:block;margin-top:calc(var(--s)*2px);font-size:calc(var(--s)*6.5px);letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.38);}
.tfc-apcols{display:grid;grid-template-columns:0.8fr 1.1fr 1.1fr;gap:calc(var(--s)*10px);}
.tfc-apcol{border:1px solid rgba(255,255,255,.07);border-radius:6px;padding:calc(var(--s)*9px);min-width:0;}
.tfc-apnavsub{font-size:calc(var(--s)*7.5px);color:rgba(255,255,255,.50);line-height:1.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tfc-apnavsub.on{color:#fff;font-weight:700;}
.tfc-apticket{padding:calc(var(--s)*7px) 0;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:flex-start;justify-content:space-between;gap:calc(var(--s)*6px);}
.tfc-apticket:last-child{border-bottom:0;}
.tfc-apticket .t{min-width:0;}
.tfc-apticket .t b{display:block;font-size:calc(var(--s)*8px);font-weight:600;color:#fff;line-height:1.3;}
.tfc-apticket .t span{display:block;font-size:calc(var(--s)*7px);color:rgba(255,255,255,.42);margin-top:calc(var(--s)*2px);}
.tfc-apunit{padding:calc(var(--s)*8px) 0;border-bottom:1px solid rgba(255,255,255,.06);}
.tfc-apunit:last-child{border-bottom:0;}
.tfc-apunit b{display:block;font-size:calc(var(--s)*8px);font-weight:600;color:#fff;}
.tfc-apunit .p{display:block;font-size:calc(var(--s)*7px);color:rgba(255,255,255,.42);margin:calc(var(--s)*2px) 0 calc(var(--s)*5px);}
.tfc-apmetapill{display:inline-block;margin-right:calc(var(--s)*5px);padding:calc(var(--s)*2px) calc(var(--s)*5px);border-radius:3px;background:rgba(0,181,230,.14);font-size:calc(var(--s)*6.5px);color:var(--apc4);white-space:nowrap;}
.tfc-apassign{display:block;margin-top:calc(var(--s)*6px);padding:calc(var(--s)*4px);border:1px solid rgba(255,255,255,.14);border-radius:3px;text-align:center;font-size:calc(var(--s)*7px);color:rgba(255,255,255,.66);}

/* ---- STATUS-PATH CHAIN (capability 2) ---- */
.tfc-apchain{display:flex;align-items:center;flex-wrap:wrap;gap:calc(var(--s)*5px);margin-bottom:calc(var(--s)*14px);}
.tfc-apnode{padding:calc(var(--s)*5px) calc(var(--s)*8px);border:1px solid rgba(255,255,255,.14);border-radius:4px;font-size:calc(var(--s)*7.5px);color:rgba(255,255,255,.72);white-space:nowrap;}
.tfc-apnode.on{background:var(--apc);border-color:var(--apc);color:#011024;font-weight:700;}
.tfc-aparrow{font-size:calc(var(--s)*8px);color:rgba(255,255,255,.30);}

/* ---- TICKET DETAIL (capability 4) ---- */
.tfc-aptimers{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--s)*10px);margin-bottom:calc(var(--s)*14px);}
.tfc-aptimer{border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:calc(var(--s)*9px);}
.tfc-aptimer span{display:block;font-size:calc(var(--s)*7px);color:rgba(255,255,255,.42);margin-bottom:calc(var(--s)*4px);}
.tfc-aptimer b{font-size:calc(var(--s)*11px);font-weight:700;color:var(--apred);}
.tfc-aptimer em{font-style:normal;font-size:calc(var(--s)*7px);color:rgba(255,255,255,.34);margin-left:calc(var(--s)*4px);}
.tfc-apstages{display:flex;align-items:center;flex-wrap:wrap;gap:calc(var(--s)*4px);margin-bottom:calc(var(--s)*14px);}
.tfc-apstage{padding:calc(var(--s)*5px) calc(var(--s)*7px);border:1px solid rgba(255,255,255,.12);border-radius:3px;font-size:calc(var(--s)*7px);letter-spacing:.04em;text-transform:uppercase;color:rgba(255,255,255,.55);white-space:nowrap;}
.tfc-apstage.on{background:var(--apc);border-color:var(--apc);color:#011024;font-weight:700;}
.tfc-apmetarow{display:grid;grid-template-columns:calc(var(--s)*72px) 1fr;gap:calc(var(--s)*8px);padding:calc(var(--s)*6px) 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:calc(var(--s)*7.5px);}
.tfc-apmetarow:last-child{border-bottom:0;}
.tfc-apmetarow span{color:rgba(255,255,255,.38);}
.tfc-apmetarow b{font-weight:500;color:rgba(255,255,255,.80);}

/* ---- PANELS / DONUT / CHART / PIVOT (reporting) ---- */
.tfc-appanels{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--s)*12px);margin-bottom:calc(var(--s)*16px);}
.tfc-appanel{border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:calc(var(--s)*12px);min-width:0;}
.tfc-aptitle{font-size:calc(var(--s)*8.5px);letter-spacing:.08em;text-transform:uppercase;color:var(--apc);margin-bottom:calc(var(--s)*12px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tfc-apdrow{display:flex;align-items:center;gap:calc(var(--s)*12px);}
.tfc-apdonut{flex:none;width:calc(var(--s)*74px);height:calc(var(--s)*74px);border-radius:50%;position:relative;background:conic-gradient(#00b5e6 0 53.8%,#6fb8ff 53.8% 92.3%,#f5a623 92.3% 97.4%,rgba(255,255,255,.30) 97.4% 100%);}
.tfc-apdonut::after{content:"";position:absolute;inset:calc(var(--s)*21px);border-radius:50%;background:#050d1a;}
.tfc-aplegend{display:flex;flex-direction:column;gap:calc(var(--s)*5px);min-width:0;font-size:calc(var(--s)*8px);color:rgba(255,255,255,.62);line-height:1.25;}
.tfc-aplegend span{display:flex;align-items:center;gap:calc(var(--s)*6px);white-space:nowrap;}
.tfc-aplegend i{flex:none;width:calc(var(--s)*7px);height:calc(var(--s)*7px);border-radius:2px;}
.tfc-aplegend b{color:#fff;font-weight:700;}
.tfc-apchart{width:100%;height:calc(var(--s)*104px);display:block;}
.tfc-apaxis{display:flex;justify-content:space-between;font-size:calc(var(--s)*7.5px);color:rgba(255,255,255,.40);margin-top:calc(var(--s)*4px);}
.tfc-aptable{width:100%;border-collapse:collapse;font-size:calc(var(--s)*8px);}
.tfc-aptable th{text-align:left;padding:calc(var(--s)*7px) calc(var(--s)*5px);border-bottom:1px solid rgba(255,255,255,.10);font-size:calc(var(--s)*7px);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.40);white-space:nowrap;}
.tfc-aptable td{padding:calc(var(--s)*7px) calc(var(--s)*5px);border-bottom:1px solid rgba(255,255,255,.05);color:rgba(255,255,255,.60);}
.tfc-aptable tr:last-child td{border-bottom:0;}
.tfc-aptable .r{text-align:right;white-space:nowrap;}
.tfc-aptable .k{color:#fff;font-weight:600;}
.tfc-aptable .tot{color:var(--apc);font-weight:700;}
.tfc-aptable th.tot{color:var(--apc);}

/* ---- rescale + reflow ---- */
@media (max-width:1024px){
 .tfc-ap{--s:1.05;} .tfc-ap-sm{--s:.95;}
 .tfc-apcols{grid-template-columns:1fr 1fr;}
 .tfc-apcols .tfc-apcol:first-child{display:none;}
}
@media (max-width:767px){
 .tfc-ap,.tfc-ap-sm{--s:1.1;grid-template-columns:1fr;aspect-ratio:auto;}
 .tfc-apside{flex-direction:row;align-items:center;gap:calc(var(--s)*7px);overflow-x:auto;border-right:0;border-bottom:1px solid rgba(255,255,255,.07);padding:calc(var(--s)*9px) calc(var(--s)*11px);}
 .tfc-aplogo{margin:0 calc(var(--s)*6px) 0 0;}
 .tfc-appanels,.tfc-aptimers,.tfc-apcols{grid-template-columns:1fr;}
 .tfc-apcols .tfc-apcol:first-child{display:block;}
 .tfc-apkpis{grid-template-columns:1fr 1fr;}
 .tfc-aplayers{position:static;width:auto;margin:calc(var(--s)*8px);}
 .tfc-apmap{aspect-ratio:4/3;}
}
@media (max-width:479px){
 .tfc-ap,.tfc-ap-sm{--s:1.2;}
 .tfc-apnav span:not(.tfc-i){display:none;}
 .tfc-apnav{padding:calc(var(--s)*5px);}
 .tfc-aptabs{gap:calc(var(--s)*10px);}
}
/* ===== TFC APP-WINDOW MOCKUP VOCABULARY (tfc-ap*) - END ===== */

/* ===== TF GUARD TOUR APP (page 18060) - START ===== */
/* Page-specific additions only. Everything else reuses the shared tfc-* system. */

/* benefit band: icon tile + sentence-case white label on navy (3 up) */
body.page-id-18060 .tfc-bene{position:relative;min-height:44px;display:flex;align-items:center;padding-left:58px;font-size:15px;font-weight:600;line-height:1.4;color:rgba(255,255,255,.88);margin:0;}
body.page-id-18060 .tfc-bene::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:11px;background:rgba(0,181,230,.12);}
body.page-id-18060 .tfc-bene::after{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:#34c6ef;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}

/* lone-worker cards: translucent tile + cyan glyph (the light .tfc-tile would read wrong on navy) */
body.page-id-18060 .tfc-tile-dk{width:48px;height:48px;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);position:relative;margin:0 0 16px;}
body.page-id-18060 .tfc-tile-dk::before{content:"";position:absolute;inset:12px;background:#34c6ef;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}

/* product screenshots sit on a soft light panel, as in the reference */
body.page-id-18060 .tfc-shot>.kt-inside-inner-col{background:#f6f7fa;border-radius:16px;padding:clamp(18px,3vw,34px);}
body.page-id-18060 .tfc-shot img{width:100%;height:auto;display:block;border-radius:8px;}
body.page-id-18060 .tfc-shot figure{margin:0;}

/* image LEFT on desktop while the copy stays first in the DOM (mobile + crawler order).
   Targets the stable per-column uniqueID classes: Kadence emits a <style> sibling ahead of the
   columns, so :first-child / :last-child never match them (see the .tfc-cap-flip bug). */
@media (min-width:1025px){
 body.page-id-18060 .kadence-column18060_gtCap2T{order:2;}
 body.page-id-18060 .kadence-column18060_gtCap2I{order:1;}
}

/* pills wrap tidily under the copy */
body.page-id-18060 .tfc-pills-left{margin-top:22px;}

@media (max-width:767px){
 body.page-id-18060 .tfc-bene{font-size:14.5px;}
}
/* ===== TF GUARD TOUR APP (page 18060) - END ===== */

/* ===== TF SECURITY OPERATIONS (page 18066) - START ===== */
/* Page-specific only. Bands, headings, checks, pills, cards all reuse the shared tfc-* system. */

/* ---- hub cards: 2x2 grid of linked product cards (explore section) ---- */
body.page-id-18066 .tfc-hub>.kt-inside-inner-col{background:#fff;border:1px solid #e2e6ee;border-radius:16px;padding:clamp(22px,2.4vw,30px);height:100%;transition:border-color .2s ease-out,transform .2s ease-out,box-shadow .2s ease-out;}
body.page-id-18066 .tfc-hub>.kt-inside-inner-col:hover{border-color:#00b5e6;transform:translateY(-2px);box-shadow:0 18px 40px rgba(1,16,36,.10);}
body.page-id-18066 .tfc-hubhead{display:flex;align-items:center;gap:14px;margin:0 0 14px;}
body.page-id-18066 .tfc-hubtile{width:46px;height:46px;border-radius:12px;position:relative;flex:none;background:linear-gradient(145deg,#011024 0%,#04529a 130%);}
body.page-id-18066 .tfc-hubtile.cyan{background:linear-gradient(145deg,#00b5e6 0%,#04529a 130%);}
body.page-id-18066 .tfc-hubtile::before{content:"";position:absolute;inset:11px;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-18066 .tfc-hubname{font-size:clamp(17px,1.5vw,19px);font-weight:700;line-height:1.25;color:#011024;}
body.page-id-18066 .tfc-hublink{display:inline-block;margin-top:16px;font-size:13.5px;font-weight:700;letter-spacing:.01em;color:#036c93;text-decoration:none;}
body.page-id-18066 .tfc-hublink:hover{color:#00b5e6;text-decoration:underline;}

/* ---- product screenshots on a soft light panel ---- */
body.page-id-18066 .tfc-shot>.kt-inside-inner-col{background:#f6f7fa;border-radius:16px;padding:clamp(16px,2.2vw,26px);}
body.page-id-18066 .tfc-shot img{width:100%;height:auto;display:block;border-radius:10px;box-shadow:0 14px 34px rgba(1,16,36,.12);}
body.page-id-18066 .tfc-shot figure{margin:0;}

/* ---- hero photo: rounded, shadowed, glass surround ---- */
body.page-id-18066 .tfc-heroshot img{border-radius:14px;}

/* ---- pull quote ---- */
body.page-id-18066 .tfc-bigquote{font-size:clamp(19px,2.1vw,26px);line-height:1.5;font-style:italic;font-weight:600;color:#fff;margin:0 auto;max-width:900px;}
body.page-id-18066 .tfc-bigquote .qm{color:#34c6ef;font-style:normal;}
body.page-id-18066 .tfc-bigattr{margin:22px 0 0;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.62);}

/* ---- image LEFT on desktop while copy stays first in the DOM (mobile + crawler order).
        Targets stable per-column uniqueID classes: Kadence emits a <style> sibling ahead
        of the columns, so :first-child / :last-child never match them. ---- */
@media (min-width:1025px){
 body.page-id-18066 .kadence-column18066_soCap2T,
 body.page-id-18066 .kadence-column18066_soCap4T{order:2;}
 body.page-id-18066 .kadence-column18066_soCap2I,
 body.page-id-18066 .kadence-column18066_soCap4I{order:1;}
}

@media (max-width:767px){
 body.page-id-18066 .tfc-hubhead{gap:11px;}
 body.page-id-18066 .tfc-hubtile{width:40px;height:40px;}
 body.page-id-18066 .tfc-hubtile::before{inset:9px;}
}
/* ===== TF SECURITY OPERATIONS (page 18066) - END ===== */

/* ===== TF TRACKTIK PLATFORM (page 14340) - START ===== */
/* Dashboard is LIGHT: white panels, dark text; only the sidebar and the map panel stay navy. */

/* ---------- hero ---------- */
body.page-id-14340 .tfp-herowrap>.kt-inside-inner-col{max-width:920px;margin:0 auto;text-align:center;}
body.page-id-14340 .tfp-h1{font-size:clamp(34px,5vw,58px);line-height:1.06;font-weight:700;letter-spacing:-.02em;color:#011024;margin:12px 0 0;}
body.page-id-14340 .tfp-lede{font-size:clamp(15px,1.6vw,17px);line-height:1.65;color:#475067;max-width:640px;margin:20px auto 0;}

/* ---------- browser chrome ---------- */
body.page-id-14340 .tfp-frame{position:relative;margin:44px auto 0;max-width:1060px;}
body.page-id-14340 .tfp-frame::before{content:"";position:absolute;left:50%;top:6%;width:80%;height:72%;transform:translateX(-50%);background:radial-gradient(ellipse at center,rgba(0,181,230,.26),rgba(0,181,230,0) 68%);filter:blur(38px);z-index:0;}
body.page-id-14340 .tfp-chrome{position:relative;z-index:1;border:1px solid #e2e6ee;border-radius:14px;overflow:hidden;box-shadow:0 40px 90px rgba(1,16,36,.22);background:#fff;}
body.page-id-14340 .tfp-bar{display:flex;align-items:center;gap:7px;padding:11px 16px;background:#f6f7fa;border-bottom:1px solid #e2e6ee;}
body.page-id-14340 .tfp-dot{width:10px;height:10px;border-radius:50%;flex:none;}
body.page-id-14340 .tfp-url{flex:1;text-align:center;font-size:11px;color:#8b96a8;background:#fff;border:1px solid #e2e6ee;border-radius:7px;padding:5px 12px;max-width:330px;margin:0 auto;}

/* ---------- app window: light main, navy sidebar ---------- */
body.page-id-14340 .tfc-ap{--s:1;aspect-ratio:auto;min-height:0;border:0;border-radius:0;box-shadow:none;background:#f7f8fa;grid-template-columns:calc(var(--s)*178px) 1fr;}
body.page-id-14340 .tfc-apside{background:#0c1e37;border-right:0;padding:calc(var(--s)*18px) calc(var(--s)*14px);gap:calc(var(--s)*2px);}
body.page-id-14340 .tfc-aplogo{margin:0 0 calc(var(--s)*20px) calc(var(--s)*2px);}
body.page-id-14340 .tfc-aplogo img{width:calc(var(--s)*104px);height:auto;opacity:1;}
body.page-id-14340 .tfp-oplab{font-size:calc(var(--s)*9px);font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.34);margin:0 0 calc(var(--s)*8px) calc(var(--s)*4px);}
body.page-id-14340 .tfc-apnav{display:flex;align-items:center;gap:calc(var(--s)*10px);padding:calc(var(--s)*8px) calc(var(--s)*10px);border-radius:calc(var(--s)*7px);font-size:calc(var(--s)*11.5px);color:rgba(255,255,255,.62);background:transparent;}
body.page-id-14340 .tfc-apnav.on{background:#16375c;color:#fff;font-weight:600;}
body.page-id-14340 .tfc-apnav .tfc-i{width:calc(var(--s)*14px);height:calc(var(--s)*14px);background:currentColor;flex:none;}
body.page-id-14340 .tfp-badge{margin-left:auto;background:#e6000f;color:#fff;border-radius:999px;min-width:calc(var(--s)*16px);text-align:center;padding:0 calc(var(--s)*5px);font-size:calc(var(--s)*9.5px);font-weight:700;line-height:calc(var(--s)*16px);}
body.page-id-14340 .tfp-user{margin-top:auto;display:flex;align-items:center;gap:calc(var(--s)*9px);padding-top:calc(var(--s)*18px);}
body.page-id-14340 .tfp-avatar{width:calc(var(--s)*28px);height:calc(var(--s)*28px);border-radius:50%;background:#1f4b7a;color:#fff;display:flex;align-items:center;justify-content:center;font-size:calc(var(--s)*10px);font-weight:700;flex:none;}
body.page-id-14340 .tfp-uname{display:block;font-size:calc(var(--s)*11px);color:#fff;font-weight:600;line-height:1.3;}
body.page-id-14340 .tfp-urole{display:block;font-size:calc(var(--s)*9.5px);color:rgba(255,255,255,.42);line-height:1.3;}
body.page-id-14340 .tfc-apmain{background:#f7f8fa;padding:calc(var(--s)*18px);display:flex;flex-direction:column;gap:calc(var(--s)*14px);}

/* topbar */
body.page-id-14340 .tfp-top{display:flex;align-items:center;gap:calc(var(--s)*10px);flex-wrap:wrap;}
body.page-id-14340 .tfp-toptitle{font-size:calc(var(--s)*16px);font-weight:700;color:#0f2744;letter-spacing:-.01em;}
body.page-id-14340 .tfp-meta{display:flex;align-items:center;gap:calc(var(--s)*5px);font-size:calc(var(--s)*10.5px);color:#8b96a8;}
body.page-id-14340 .tfp-livedot{width:calc(var(--s)*6px);height:calc(var(--s)*6px);border-radius:50%;background:#22a06b;flex:none;animation:tfpPulse 1.6s infinite;}
body.page-id-14340 .tfp-pill{background:#fff;border:1px solid #e2e6ee;border-radius:calc(var(--s)*7px);padding:calc(var(--s)*6px) calc(var(--s)*11px);font-size:calc(var(--s)*10.5px);color:#8b96a8;white-space:nowrap;}
body.page-id-14340 .tfp-pill.dk{color:#0f2744;font-weight:600;}
@keyframes tfpPulse{0%,100%{opacity:1}50%{opacity:.4}}
@media (prefers-reduced-motion:reduce){body.page-id-14340 .tfp-livedot{animation:none;}}

/* KPI cards (white) */
body.page-id-14340 .tfp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:calc(var(--s)*12px);}
body.page-id-14340 .tfp-kpi{background:#fff;border:1px solid #e6e9f0;border-radius:calc(var(--s)*10px);padding:calc(var(--s)*13px) calc(var(--s)*14px);position:relative;}
body.page-id-14340 .tfp-kpi .k{font-size:calc(var(--s)*11px);color:#6b7688;padding-right:calc(var(--s)*26px);}
body.page-id-14340 .tfp-kpi .v{font-size:calc(var(--s)*27px);font-weight:700;color:#0f2744;line-height:1.05;letter-spacing:-.02em;margin:calc(var(--s)*8px) 0 calc(var(--s)*6px);}
body.page-id-14340 .tfp-kpi .d{font-size:calc(var(--s)*10px);color:#8b96a8;}
body.page-id-14340 .tfp-kpi .up{color:#22a06b;font-weight:700;}
body.page-id-14340 .tfp-kpi .bad{color:#e6000f;font-weight:700;}
body.page-id-14340 .tfp-kicon{position:absolute;top:calc(var(--s)*12px);right:calc(var(--s)*12px);width:calc(var(--s)*22px);height:calc(var(--s)*22px);border-radius:calc(var(--s)*6px);}
body.page-id-14340 .tfp-kicon::before{content:"";position:absolute;inset:calc(var(--s)*5px);background:currentColor;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-14340 .tfp-kicon.c{background:rgba(0,181,230,.12);color:#0f8fbc;}
body.page-id-14340 .tfp-kicon.b{background:rgba(20,113,201,.12);color:#1471c9;}
body.page-id-14340 .tfp-kicon.r{background:rgba(230,0,15,.10);color:#e6000f;}
body.page-id-14340 .tfp-kicon.g{background:rgba(34,160,107,.12);color:#22a06b;}

/* white panels */
body.page-id-14340 .tfp-card{background:#fff;border:1px solid #e6e9f0;border-radius:calc(var(--s)*10px);padding:calc(var(--s)*14px);}
body.page-id-14340 .tfp-ct{font-size:calc(var(--s)*12.5px);font-weight:700;color:#0f2744;margin:0;}
body.page-id-14340 .tfp-cs{font-size:calc(var(--s)*10px);color:#8b96a8;}
body.page-id-14340 .tfp-chead{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--s)*8px);margin-bottom:calc(var(--s)*12px);}
body.page-id-14340 .tfp-livetag{display:inline-flex;align-items:center;gap:calc(var(--s)*4px);font-size:calc(var(--s)*9.5px);font-weight:700;letter-spacing:.07em;color:#22a06b;}

/* map panel (navy) */
body.page-id-14340 .tfp-mapwrap{background:#0c1e37;border-radius:calc(var(--s)*10px);padding:calc(var(--s)*14px);position:relative;overflow:hidden;}
body.page-id-14340 .tfp-maphead{display:flex;align-items:flex-start;justify-content:space-between;gap:calc(var(--s)*10px);position:relative;z-index:2;}
body.page-id-14340 .tfp-mapt{font-size:calc(var(--s)*12.5px);font-weight:700;color:#fff;margin:0;}
body.page-id-14340 .tfp-maps{font-size:calc(var(--s)*10px);color:rgba(255,255,255,.46);}
body.page-id-14340 .tfp-globe{position:absolute;right:calc(var(--s)*-30px);top:50%;transform:translateY(-50%);width:calc(var(--s)*300px);height:calc(var(--s)*300px);background:var(--tfp-globe) center/contain no-repeat;opacity:.5;z-index:0;pointer-events:none;}
body.page-id-14340 .tfp-mapstage{position:relative;z-index:1;min-height:calc(var(--s)*196px);}
body.page-id-14340 .tfp-pin{position:absolute;width:calc(var(--s)*11px);height:calc(var(--s)*11px);border-radius:50%;transform:translate(-50%,-50%);}
body.page-id-14340 .tfp-pin.g{background:#22a06b;} body.page-id-14340 .tfp-pin.c{background:#34c6ef;}
body.page-id-14340 .tfp-pin.a{background:#f5a623;} body.page-id-14340 .tfp-pin.r{background:#e6000f;}
body.page-id-14340 .tfp-legend{display:flex;flex-wrap:wrap;gap:calc(var(--s)*11px);}
body.page-id-14340 .tfp-lg{display:flex;align-items:center;gap:calc(var(--s)*5px);font-size:calc(var(--s)*10px);color:rgba(255,255,255,.72);}
body.page-id-14340 .tfp-lgd{width:calc(var(--s)*7px);height:calc(var(--s)*7px);border-radius:50%;flex:none;}
body.page-id-14340 .tfp-mapcard{position:absolute;bottom:0;border-radius:calc(var(--s)*8px);padding:calc(var(--s)*10px) calc(var(--s)*13px);background:#0f2744;border:1px solid rgba(255,255,255,.10);z-index:2;}
body.page-id-14340 .tfp-mapcard .lbl{display:block;font-size:calc(var(--s)*9px);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#8fb4d8;margin-bottom:calc(var(--s)*4px);}
body.page-id-14340 .tfp-mapcard .s{display:block;font-size:calc(var(--s)*10.5px);color:rgba(255,255,255,.82);}
body.page-id-14340 .tfp-mapcard.crit{background:#2a1016;border-color:rgba(230,0,15,.5);}
body.page-id-14340 .tfp-mapcard.crit .lbl{color:#ff7b85;}
body.page-id-14340 .tfp-mapcard.crit .s{color:#ffd7da;}

/* live activity (white, divided rows) */
body.page-id-14340 .tfp-feed{display:flex;flex-direction:column;}
body.page-id-14340 .tfp-fr{display:grid;grid-template-columns:calc(var(--s)*8px) 1fr auto;gap:calc(var(--s)*9px);align-items:start;padding:calc(var(--s)*10px) 0;border-top:1px solid #eef1f5;}
body.page-id-14340 .tfp-fr:first-child{border-top:0;padding-top:0;}
body.page-id-14340 .tfp-fd{width:calc(var(--s)*7px);height:calc(var(--s)*7px);border-radius:50%;margin-top:calc(var(--s)*4px);flex:none;}
body.page-id-14340 .tfp-ft{display:block;font-size:calc(var(--s)*11.5px);font-weight:600;color:#0f2744;line-height:1.35;}
body.page-id-14340 .tfp-fs{display:block;font-size:calc(var(--s)*10px);color:#8b96a8;margin-top:calc(var(--s)*2px);}
body.page-id-14340 .tfp-fm{font-size:calc(var(--s)*10px);color:#a7b0bf;white-space:nowrap;}

/* coverage / bars / week chart */
body.page-id-14340 .tfp-cov{display:flex;flex-direction:column;gap:calc(var(--s)*13px);}
body.page-id-14340 .tfp-crh{display:flex;justify-content:space-between;font-size:calc(var(--s)*11px);margin-bottom:calc(var(--s)*6px);}
body.page-id-14340 .tfp-crh b{color:#0f2744;font-weight:600;}
body.page-id-14340 .tfp-crh span{color:#8b96a8;}
body.page-id-14340 .tfp-track{height:calc(var(--s)*5px);border-radius:999px;background:#eef1f5;overflow:hidden;}
body.page-id-14340 .tfp-fill{height:100%;border-radius:999px;display:block;}
body.page-id-14340 .tfp-fill.ok{background:#22a06b;}
body.page-id-14340 .tfp-fill.blu{background:#4a86d8;}
body.page-id-14340 .tfp-fill.warn{background:#f5a623;}
body.page-id-14340 .tfp-hb{display:flex;flex-direction:column;gap:calc(var(--s)*11px);}
body.page-id-14340 .tfp-hbr{display:grid;grid-template-columns:calc(var(--s)*82px) 1fr calc(var(--s)*14px);gap:calc(var(--s)*9px);align-items:center;font-size:calc(var(--s)*10.5px);color:#6b7688;}
body.page-id-14340 .tfp-hbt{height:calc(var(--s)*7px);border-radius:999px;background:#eef1f5;overflow:hidden;}
body.page-id-14340 .tfp-hbb{display:block;height:100%;border-radius:999px;}
body.page-id-14340 .tfp-hbn{text-align:right;color:#0f2744;font-weight:700;}
body.page-id-14340 .tfp-week{display:grid;grid-template-columns:repeat(7,1fr);gap:calc(var(--s)*8px);align-items:end;height:calc(var(--s)*96px);}
body.page-id-14340 .tfp-wc{display:flex;flex-direction:column;justify-content:flex-end;height:100%;}
body.page-id-14340 .tfp-wo{background:#f5a623;border-radius:calc(var(--s)*3px) calc(var(--s)*3px) 0 0;}
body.page-id-14340 .tfp-wr{background:#0f2744;}
body.page-id-14340 .tfp-wc .tfp-wr:last-child{border-radius:0 0 calc(var(--s)*3px) calc(var(--s)*3px);}
body.page-id-14340 .tfp-wl{text-align:center;font-size:calc(var(--s)*9.5px);color:#a7b0bf;margin-top:calc(var(--s)*7px);}
body.page-id-14340 .tfp-ot{font-size:calc(var(--s)*10.5px);font-weight:700;color:#f5a623;}
body.page-id-14340 .tfp-grid2{display:grid;grid-template-columns:1.42fr 1fr;gap:calc(var(--s)*14px);}
body.page-id-14340 .tfp-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:calc(var(--s)*14px);}

/* ---------- stats band ---------- */
body.page-id-14340 .tfp-statn{font-size:clamp(26px,3.4vw,38px);font-weight:700;letter-spacing:-.02em;color:#011024;margin:0;}
body.page-id-14340 .tfp-statl{font-size:12.5px;color:#97a2b4;margin:6px 0 0;}

/* ---------- workflow steps ---------- */
body.page-id-14340 .tfp-steps>.kt-row-column-wrap{position:relative;}
body.page-id-14340 .tfp-step{position:relative;text-align:center;}
body.page-id-14340 .tfp-step::before{content:"";position:absolute;top:24px;left:50%;width:100%;height:1.5px;background:#5eb3e4;z-index:0;}
body.page-id-14340 .tfp-step:last-of-type::before{display:none;}
body.page-id-14340 .tfp-scirc{width:48px;height:48px;border-radius:50%;border:1.5px solid #5eb3e4;background:#fff;margin:0 auto 14px;position:relative;z-index:2;}
body.page-id-14340 .tfp-scirc::before{content:"";position:absolute;inset:13px;background:#34c6ef;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-14340 .tfp-slab{font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#5eb3e4;margin:0 0 6px;}
body.page-id-14340 .tfp-stitle{font-size:15px;font-weight:700;color:#0f2744;margin:0 0 8px;}
body.page-id-14340 .tfp-sbody{font-size:12.5px;line-height:1.6;color:#6b7688;margin:0;}
@media (max-width:1024px){body.page-id-14340 .tfp-step::before{display:none;}}

/* ---------- module cards ---------- */
body.page-id-14340 .tfp-mod>.kt-inside-inner-col{height:100%;}
body.page-id-14340 .tfp-mod .wp-block-kadence-advancedheading{height:100%;}
body.page-id-14340 .tfp-modlink{display:block;text-decoration:none;background:#fff;border:1.5px solid var(--tfc-g200);border-radius:16px;padding:26px 24px;height:100%;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;}
body.page-id-14340 .tfp-modlink:hover{border-color:var(--tfc-cyan);box-shadow:0 12px 28px rgba(1,16,36,.1);transform:translateY(-3px);}
body.page-id-14340 .tfp-modlink:focus-visible{border-color:var(--tfc-cyan);box-shadow:0 12px 28px rgba(1,16,36,.1);outline:2px solid var(--tfc-cyan);outline-offset:3px;}
@media (prefers-reduced-motion: reduce){body.page-id-14340 .tfp-modlink{transition:none;}body.page-id-14340 .tfp-modlink:hover,body.page-id-14340 .tfp-modlink:focus-visible{transform:none;}}
body.page-id-14340 .tfp-modtile{display:block;width:48px;height:48px;border-radius:12px;position:relative;background:linear-gradient(145deg,#0f2744 0%,#123b6b 100%);margin:0 0 16px;}
body.page-id-14340 .tfp-modtile.cyan{background:linear-gradient(145deg,#5ec8ef 0%,#2f8ed4 100%);}
body.page-id-14340 .tfp-modtile::before{content:"";position:absolute;inset:13px;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-14340 .tfp-modname{display:block;font-size:15px;font-weight:700;color:#0f2744;margin:0 0 8px;}
body.page-id-14340 .tfp-modbody{display:block;font-size:13px;line-height:1.6;color:#6b7688;margin:0;}
/* "Learn more" affordance on the module cards that link out. The whole card is
   already the anchor, so this is a styled span, not a nested <a>, which would
   be invalid HTML. Flex column + margin-top:auto bottom-aligns it across the row. */
body.page-id-14340 .tfp-modlink{display:flex;flex-direction:column;}
body.page-id-14340 .tfp-modmore{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:16px;font-size:13.5px;font-weight:700;color:var(--tfc-cyan6);}
body.page-id-14340 .tfp-modlink:hover .tfp-modmore{color:var(--tfc-navy);}
body.page-id-14340 .tfp-modarrow{transition:transform .2s ease;}
body.page-id-14340 .tfp-modlink:hover .tfp-modarrow{transform:translateX(3px);}
@media (prefers-reduced-motion: reduce){body.page-id-14340 .tfp-modarrow{transition:none;}body.page-id-14340 .tfp-modlink:hover .tfp-modarrow{transform:none;}}

/* ---------- audience cards ---------- */
body.page-id-14340 .tfp-aud-dark>.kt-inside-inner-col{background:linear-gradient(155deg,#011024 0%,#08203d 100%);border-radius:14px;padding:clamp(24px,2.6vw,34px);height:100%;}
body.page-id-14340 .tfp-aud-light>.kt-inside-inner-col{background:#fff;border:1.5px solid #e2e6ee;border-radius:14px;padding:clamp(24px,2.6vw,34px);height:100%;box-shadow:0 10px 26px rgba(1,16,36,.06);}
/* Audience card banners: brand graphic bled full width across the card top.
   Negative margins equal the card padding so the art meets the card edges. */
body.page-id-14340 .tfp-audbanner{display:block;margin:calc(-1 * clamp(24px,2.6vw,34px)) calc(-1 * clamp(24px,2.6vw,34px)) clamp(20px,2vw,26px);}
body.page-id-14340 .tfp-audbanner img{display:block;width:100%;height:auto;border-radius:13px 13px 0 0;}
body.page-id-14340 .tfp-audh{font-size:clamp(19px,2.1vw,24px);font-weight:700;line-height:1.25;margin:10px 0 12px;}
body.page-id-14340 .tfp-aud-dark .tfp-audh{color:#fff;}
body.page-id-14340 .tfp-aud-light .tfp-audh{color:#011024;}
body.page-id-14340 .tfp-aud-dark .tfc-body{color:rgba(255,255,255,.72);}

/* ---------- professional services ---------- */
body.page-id-14340 .tfp-num{font-size:13px;font-weight:700;color:#34c6ef;letter-spacing:.04em;margin:0 0 6px;}
body.page-id-14340 .tfp-svt{font-size:14.5px;font-weight:700;color:#fff;margin:0 0 6px;}
body.page-id-14340 .tfp-svb{font-size:12.5px;line-height:1.55;color:rgba(255,255,255,.62);margin:0;}
body.page-id-14340 .tfp-qcard>.kt-inside-inner-col{position:relative;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:16px;padding:clamp(22px,2.4vw,30px);overflow:hidden;}
body.page-id-14340 .tfp-qcard>.kt-inside-inner-col::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#00b5e6,#04529a);}
body.page-id-14340 .tfp-quote{font-size:clamp(15px,1.7vw,18px);line-height:1.55;font-style:italic;font-weight:600;color:#fff;margin:0;}
body.page-id-14340 .tfp-qattr{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);margin:16px 0 0;}
body.page-id-14340 .tfp-qdiv{height:1px;background:rgba(255,255,255,.12);margin:20px 0;}
body.page-id-14340 .tfp-qstat{font-size:clamp(22px,2.6vw,30px);font-weight:700;color:#34c6ef;margin:0;line-height:1.1;}
body.page-id-14340 .tfp-qstatl{font-size:11.5px;color:rgba(255,255,255,.55);margin:4px 0 0;}

/* ---------- compliance ---------- */
body.page-id-14340 .tfp-cmpi{width:32px;height:32px;position:relative;margin:0 auto 12px;}
body.page-id-14340 .tfp-cmpi::before{content:"";position:absolute;inset:0;background:#1471c9;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-14340 .tfp-cmpt{font-size:14px;font-weight:700;color:#011024;margin:0 0 6px;text-align:center;}
body.page-id-14340 .tfp-cmpb{font-size:12.5px;line-height:1.55;color:#475067;margin:0;text-align:center;}

/* ---------- responsive: scale the dashboard down, then stack ---------- */
@media (max-width:1100px){body.page-id-14340 .tfc-ap{--s:.86;}}
@media (max-width:900px){
 body.page-id-14340 .tfc-ap{--s:.8;grid-template-columns:1fr;}
 body.page-id-14340 .tfc-apside{flex-direction:row;flex-wrap:wrap;align-items:center;padding:calc(var(--s)*12px);}
 body.page-id-14340 .tfc-aplogo{margin:0 calc(var(--s)*12px) 0 0;}
 body.page-id-14340 .tfp-oplab,body.page-id-14340 .tfp-user{display:none;}
 body.page-id-14340 .tfp-grid2,body.page-id-14340 .tfp-grid3{grid-template-columns:1fr;}
 body.page-id-14340 .tfp-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:767px){
 body.page-id-14340 .tfp-frame{margin-top:30px;}
 body.page-id-14340 .tfc-ap{--s:.74;}
 body.page-id-14340 .tfp-globe{display:none;}
 body.page-id-14340 .tfp-mapcard{position:static;margin-top:calc(var(--s)*8px);}
 body.page-id-14340 .tfp-hbr{grid-template-columns:calc(var(--s)*66px) 1fr calc(var(--s)*14px);}
}
/* ===== TF TRACKTIK PLATFORM (page 14340) - END ===== */

/* ===== TF BECOME A PARTNER (page 18023) - START ===== */
body.page-id-18023 .tf-pa-tile{display:block;width:44px;height:44px;border-radius:11px;position:relative;background:linear-gradient(145deg,#0f2744 0%,#123b6b 100%);margin:0 0 14px;}
body.page-id-18023 .tf-pa-tile::before{content:"";position:absolute;inset:11px;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-18023 .tf-pa-tile.is-light{background:#e8f4fb;}
body.page-id-18023 .tf-pa-tile.is-light::before{background:#1471c9;}
body.page-id-18023 .tf-pa-badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#34c6ef;background:rgba(0,181,230,.14);border:1px solid rgba(0,181,230,.32);border-radius:999px;padding:5px 12px;margin:0 0 18px;}
body.page-id-18023 .tf-pa-cy{color:#34c6ef;}
/* ===== TF BECOME A PARTNER (page 18023) - END ===== */

/* ===== TF INTEGRATIONS (page 18019) - START ===== */
body.page-id-18019 .tfi-pill{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#34c6ef;background:rgba(0,181,230,.10);border:1px solid rgba(0,181,230,.28);border-radius:999px;padding:6px 16px;margin:0 0 18px;}
body.page-id-18019 .tfi-cy{color:#34c6ef;}
body.page-id-18019 .tfi-hub,body.page-id-18021 .tfi-hub{position:relative;width:100%;max-width:520px;margin:0 auto;aspect-ratio:1/1;}
body.page-id-18019 .tfi-hub svg,body.page-id-18021 .tfi-hub svg{position:absolute;inset:0;width:100%;height:100%;}
body.page-id-18019 .tfi-hub svg line,body.page-id-18021 .tfi-hub svg line{stroke:rgba(120,170,220,.34);stroke-width:1.4;stroke-dasharray:3 5;}
body.page-id-18019 .tfi-core,body.page-id-18021 .tfi-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:29%;aspect-ratio:1/1;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 6px rgba(0,181,230,.16),0 0 46px rgba(0,181,230,.42);z-index:2;}
body.page-id-18019 .tfi-core img,body.page-id-18021 .tfi-core img{width:52%;height:auto;display:block;}
body.page-id-18019 .tfi-node,body.page-id-18021 .tfi-node{position:absolute;transform:translate(-50%,-50%);width:26%;background:#fff;border-radius:12px;padding:12px 8px;text-align:center;box-shadow:0 12px 30px rgba(1,16,36,.28);z-index:1;}
body.page-id-18019 .tfi-node img,body.page-id-18021 .tfi-node img{max-width:84%;max-height:38px;width:auto;height:auto;display:block;margin:0 auto 6px;object-fit:contain;}
body.page-id-18019 .tfi-node span,body.page-id-18021 .tfi-node span{display:block;font-size:10.5px;color:#8b94a5;line-height:1.3;}
body.page-id-18019 .tfi-cat{display:flex;align-items:flex-start;gap:14px;margin:0 0 18px;}
body.page-id-18019 .tfi-cattile{width:40px;height:40px;border-radius:10px;position:relative;flex:none;background:linear-gradient(145deg,#0f2744 0%,#123b6b 100%);}
body.page-id-18019 .tfi-cattile::before{content:"";position:absolute;inset:10px;background:#fff;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-18019 .tfi-catname{display:block;font-size:18px;font-weight:700;letter-spacing:-.01em;color:#011024;line-height:1.25;}
body.page-id-18019 .tfi-catsub{display:block;font-size:14px;color:#8b94a5;margin-top:3px;}
body.page-id-18019 .tfi-card>.kt-inside-inner-col{display:flex;align-items:center;background:#fff;border:1px solid #e2e6ee;border-radius:12px;padding:0;height:100%;transition:border-color .2s ease-out,transform .2s ease-out,box-shadow .2s ease-out;}
body.page-id-18019 .tfi-card>.kt-inside-inner-col:hover{border-color:#00b5e6;transform:translateY(-2px);box-shadow:0 14px 30px rgba(1,16,36,.08);}
body.page-id-18019 .tfi-clink{display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;width:100%;height:100%;padding:16px 18px;box-sizing:border-box;}
body.page-id-18019 .tfi-clink:focus-visible{outline:2px solid #00b5e6;outline-offset:3px;border-radius:12px;}
body.page-id-18019 .tfi-clink:hover .tfi-pname{color:#03417b;}
body.page-id-18019 .tfi-pmeta{display:block;min-width:0;}
body.page-id-18019 .tfi-logo{width:112px;height:40px;border-radius:8px;background:#f6f7fa;border:1px solid #eef1f5;display:flex;align-items:center;justify-content:center;flex:none;padding:6px;}
body.page-id-18019 .tfi-logo img{max-width:100%;max-height:100%;width:auto;height:auto;display:block;object-fit:contain;}
@media (max-width:767px){body.page-id-18019 .tfi-logo{width:88px;}}
body.page-id-18019 .tfi-pname{display:block;font-size:15px;font-weight:700;color:#011024;line-height:1.2;}
body.page-id-18019 .tfi-pcat{display:block;font-size:13px;color:#8b94a5;margin-top:3px;}
body.page-id-18019 .tfi-code{border-radius:12px;overflow:hidden;box-shadow:0 26px 60px rgba(1,16,36,.20);background:#011024;}
body.page-id-18019 .tfi-cbar{display:flex;align-items:center;gap:7px;padding:11px 14px;background:#0a1c33;border-bottom:1px solid rgba(255,255,255,.07);}
body.page-id-18019 .tfi-cdot{width:9px;height:9px;border-radius:50%;flex:none;}
body.page-id-18019 .tfi-cpath{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;color:rgba(255,255,255,.62);margin-left:8px;}
body.page-id-18019 .tfi-cbody{margin:0;padding:20px 22px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:2;color:#c7d3e3;white-space:pre;overflow-x:auto;}
body.page-id-18019 .tfi-k{color:#7fd1f0;} body.page-id-18019 .tfi-s{color:#bde72a;} body.page-id-18019 .tfi-p{color:#8b94a5;}
@media (max-width:900px){body.page-id-18019 .tfi-hub,body.page-id-18021 .tfi-hub{max-width:380px;} body.page-id-18019 .tfi-node,body.page-id-18021 .tfi-node{width:30%;padding:9px 6px;} body.page-id-18019 .tfi-node img,body.page-id-18021 .tfi-node img{max-height:30px;}}
@media (max-width:600px){body.page-id-18019 .tfi-hub,body.page-id-18021 .tfi-hub{max-width:320px;} body.page-id-18019 .tfi-node span,body.page-id-18021 .tfi-node span{font-size:9px;}}
/* ===== TF INTEGRATIONS (page 18019) - END ===== */

/* ===== TF GUARD TOUR SYSTEM (page 18062) - START ===== */
/* Everything else on this page is served by the shared tfc- component layer.
   Only two page-specific things live here. */

/* 1 - hero check bullets, between the subhead and the button pair.
      Uses the SHARED icon library + shared cyan token (no per-page duplicates). */
body.page-id-18062 .gts-heropoints{display:flex;flex-direction:column;gap:12px;margin:0 0 30px;}
body.page-id-18062 .gts-heropoint{position:relative;display:block;padding-left:28px;font-size:15px;line-height:1.45;color:rgba(255,255,255,.85);text-align:left;}
body.page-id-18062 .gts-heropoint::before{content:"";position:absolute;left:0;top:1px;width:18px;height:18px;background:var(--tfc-cyan4);-webkit-mask:url(/wp-content/uploads/tf-icons/protection-check.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-icons/protection-check.svg) center/contain no-repeat;}

/* 2 - image-LEFT on capability rows b and d at desktop widths.
      The shared .tfc-cap-flip rule uses *:first-child / *:last-child, which lands on the
      style element Kadence injects as the FIRST child of .kt-row-column-wrap, so it is
      inert (see memory 18784). Target the stable per-column uniqueID classes instead.
      DOM order stays copy-then-image, so mobile stacks the heading first and crawlers
      read the copy before the screenshot. */
@media (min-width:1025px){
 body.page-id-18062 .kadence-column18062_gtsCapbT,
 body.page-id-18062 .kadence-column18062_gtsCapdT{order:2;}
 body.page-id-18062 .kadence-column18062_gtsCapbI,
 body.page-id-18062 .kadence-column18062_gtsCapdI{order:1;}
}

@media (max-width:767px){
 body.page-id-18062 .gts-heropoints{max-width:340px;margin-left:auto;margin-right:auto;}
}
/* ===== TF GUARD TOUR SYSTEM (page 18062) - END ===== */

/* ===== TF MOBILE SERVICES (page 18052) - START ===== */
/* Everything else on this page is served by the shared tfc- component layer. */

/* 2 - image-LEFT on capability row b at desktop widths.
      The shared .tfc-cap-flip rule uses *:first-child / *:last-child, which lands on the
      style element Kadence injects as the FIRST child of .kt-row-column-wrap, so it is inert
      (memory 18784). Target the stable per-column uniqueID classes instead.
      DOM order stays copy-then-image, so mobile stacks the heading first and crawlers read
      the copy before the screenshot. */
@media (min-width:1025px){
 body.page-id-18052 .kadence-column18052_msCapbT{order:2;}
 body.page-id-18052 .kadence-column18052_msCapbI{order:1;}
}

@media (max-width:767px){
}
/* ===== TF MOBILE SERVICES (page 18052) - END ===== */

/* ===== TF PARTNERS (page 18021) - START ===== */
/* Standard bands, heads, cards3, statband, quote and CTA come from the shared tfc-
   component layer. Only the bespoke Partners components live here, prefixed tf-pt-. */

body.page-id-18021{--tfpt-lime:#bde72a;--tfpt-lime-deep:#a6cf18;--tfpt-blue500:#1471c9;}

/* ---------- hero: pill eyebrow, cyan H1 span, buttons ---------- */
body.page-id-18021 .tf-pt-pill{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tfc-cyan);background:rgba(0,181,230,.1);border:1px solid rgba(0,181,230,.45);border-radius:999px;padding:7px 16px;margin:0 0 18px;}
body.page-id-18021 .tf-pt-mark{color:var(--tfc-cyan);}
body.page-id-18021 .tf-pt-herobtns{margin-top:6px;}

/* ---------- hero: ecosystem orbit (custom HTML block, static) ---------- */
body.page-id-18021 .tf-pt-orbit{position:relative;width:100%;max-width:440px;aspect-ratio:1/1;margin:0 auto;}
body.page-id-18021 .tf-pt-orbit svg{position:absolute;inset:0;width:100%;height:100%;display:block;}
body.page-id-18021 .tf-pt-node{position:absolute;width:18.6%;aspect-ratio:1/1;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);box-shadow:0 6px 20px rgba(1,16,36,.38);}
body.page-id-18021 .tf-pt-node img{width:62%;height:62%;object-fit:contain;display:block;}
body.page-id-18021 .tf-pt-hub{position:absolute;left:50%;top:50%;width:23.6%;aspect-ratio:1/1;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);box-shadow:0 0 0 10px rgba(0,181,230,.12),0 0 46px rgba(0,181,230,.5);}
body.page-id-18021 .tf-pt-hub img{width:70%;height:auto;object-fit:contain;display:block;}
@media (max-width:900px){body.page-id-18021 .tf-pt-orbit{max-width:360px;margin-top:44px;}}
/* the orbit is decorative and duplicates the tile grid below, so drop it on phones */
@media (max-width:560px){body.page-id-18021 .tf-pt-orbit{display:none;}}

/* ---------- stat band: cyan plus sign on the navy numerals ---------- */
body.page-id-18021 .tf-pt-plus{color:var(--tfc-cyan);}

/* ---------- programs: 3 colour-keyed cards ---------- */
body.page-id-18021 .tf-pt-progs .kt-row-column-wrap{gap:20px;}
body.page-id-18021 .tf-pt-prog>.kt-inside-inner-col{background:#fff;border:1px solid var(--tfc-g200);border-radius:16px;padding:28px 26px 30px;height:100%;box-shadow:0 1px 3px rgba(1,16,36,.08);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;}

/* the 5px key bar is a border-top on the card itself: flush with the rounded corners,
   and it avoids a column ::before, which Kadence forces to opacity:.3 */
body.page-id-18021 .tf-pt-prog-1>.kt-inside-inner-col{border-top:5px solid var(--tfc-cyan);}
body.page-id-18021 .tf-pt-prog-2>.kt-inside-inner-col{border-top:5px solid var(--tfpt-blue500);}
body.page-id-18021 .tf-pt-prog-3>.kt-inside-inner-col{border-top:5px solid var(--tfpt-lime);}

body.page-id-18021 .tf-pt-proghead{display:flex;align-items:center;justify-content:space-between;margin:0 0 18px;}
body.page-id-18021 .tf-pt-progtile{width:46px;height:46px;border-radius:13px;position:relative;flex:none;}
body.page-id-18021 .tf-pt-progtile::before{content:"";position:absolute;inset:11px;-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-18021 .tf-pt-prog-1 .tf-pt-progtile{background:rgba(0,181,230,.1);}
body.page-id-18021 .tf-pt-prog-1 .tf-pt-progtile::before{background:var(--tfc-cyan);}
body.page-id-18021 .tf-pt-prog-2 .tf-pt-progtile{background:rgba(20,113,201,.1);}
body.page-id-18021 .tf-pt-prog-2 .tf-pt-progtile::before{background:var(--tfpt-blue500);}
/* program 03 is lime on a navy gradient tile - lime is never text on white */
body.page-id-18021 .tf-pt-prog-3 .tf-pt-progtile{background:linear-gradient(145deg,var(--tfc-navy),var(--tfc-royal));}
body.page-id-18021 .tf-pt-prog-3 .tf-pt-progtile::before{background:var(--tfpt-lime);}
body.page-id-18021 .tf-pt-prognum{font-size:26px;font-weight:700;letter-spacing:-.04em;color:var(--tfc-g200);line-height:1;}
body.page-id-18021 .tf-pt-progtitle{font-size:19px;font-weight:700;color:var(--tfc-navy);margin:0 0 10px;line-height:1.25;}
body.page-id-18021 .tf-pt-progbody{font-size:14.5px;line-height:1.65;color:var(--tfc-g500);margin:0 0 20px;}

/* ---------- technology partner tiles: 8 items on a 5-track grid ---------- */
body.page-id-18021 .tf-pt-ptiles .kt-row-column-wrap{gap:14px;align-items:start;}
body.page-id-18021 .tf-pt-ptile>.kt-inside-inner-col{background:var(--tfc-g50);border:1px solid var(--tfc-g200);border-radius:12px;padding:14px;height:100%;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease;}
body.page-id-18021 .tf-pt-ptile>.kt-inside-inner-col:hover{border-color:var(--tfc-cyan);background:#fff;box-shadow:0 8px 24px rgba(1,16,36,.10);}
body.page-id-18021 .tf-pt-ptilewrap{display:block;}
body.page-id-18021 .tf-pt-plink{display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none;color:inherit;}
body.page-id-18021 .tf-pt-plink:focus-visible{outline:2px solid var(--tfc-cyan);outline-offset:3px;border-radius:8px;}
body.page-id-18021 .tf-pt-plogo{width:100%;height:38px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px;overflow:hidden;}
body.page-id-18021 .tf-pt-plogo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;}
body.page-id-18021 .tf-pt-plink:hover .tf-pt-pname{color:#03417b;}
body.page-id-18021 .tf-pt-pmeta{display:block;min-width:0;text-align:center;}
body.page-id-18021 .tf-pt-pname{display:block;font-size:14px;font-weight:700;color:var(--tfc-navy);line-height:1.25;}
body.page-id-18021 .tf-pt-pkind{display:block;font-size:12.5px;color:var(--tfc-g400);line-height:1.35;margin-top:2px;}

/* ---------- centered outline link-button under the tiles ---------- */
body.page-id-18021 .tf-pt-outlinewrap{text-align:center;margin-top:34px;}
body.page-id-18021 .tf-pt-outlinebtn{display:inline-block;font-size:14.5px;font-weight:700;color:var(--tfc-navy);background:#fff;border:1.5px solid var(--tfc-g200);border-radius:999px;padding:13px 26px;text-decoration:none;transition:border-color .2s ease,color .2s ease,box-shadow .2s ease;}
body.page-id-18021 .tf-pt-outlinebtn:hover{border-color:var(--tfc-cyan);color:#03417b;box-shadow:0 8px 24px rgba(1,16,36,.10);}
/* ===== TF PARTNERS (page 18021) - END ===== */

/* ===== TF REFERRALS (page 18025) - START ===== */
/* Bands, heads, cards3 and the CTA come from the shared tfc- layer.
   Only the bespoke Referral components live here, prefixed tf-rf-. */

/* ---------- hero: cyan second sentence in the H1 ---------- */
body.page-id-18025 .tf-rf-mark{color:var(--tfc-cyan4);}

/* ---------- hero: check bullets in cyan circles ---------- */

/* ---------- hero: glass form card ---------- */
body.page-id-18025 .tf-rf-formcol>.kt-inside-inner-col{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:36px;box-shadow:0 30px 70px rgba(1,16,36,.5);}
body.page-id-18025 .tf-rf-formtitle{font-size:20px;font-weight:700;letter-spacing:-.01em;color:#fff;margin:0 0 6px;}
body.page-id-18025 .tf-rf-formsub{font-size:13.5px;line-height:1.55;color:rgba(255,255,255,.55);margin:0 0 22px;}
body.page-id-18025 .tf-rf-fineprint{font-size:11.5px;line-height:1.5;color:rgba(255,255,255,.4);text-align:center;margin:14px 0 0;}
/* select and textarea need the same dark treatment the form settings give inputs */
body.page-id-18025 .tf-rf-formcol select,
body.page-id-18025 .tf-rf-formcol textarea{color:#fff;}
body.page-id-18025 .tf-rf-formcol select option{color:#111;}
body.page-id-18025 .tf-rf-formcol textarea{resize:vertical;}
@media (max-width:1024px){body.page-id-18025 .tf-rf-formcol>.kt-inside-inner-col{padding:28px 22px;}}

/* ---------- reward tiers (navy band, middle card highlighted) ---------- */
body.page-id-18025 .tf-rf-tiers .kt-row-column-wrap{gap:18px;}
body.page-id-18025 .tf-rf-tier>.kt-inside-inner-col{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);border-radius:16px;padding:32px;height:100%;}
body.page-id-18025 
body.page-id-18025 .tf-rf-tiereyebrow{display:block;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--tfc-cyan4);margin:0 0 14px;}
body.page-id-18025 
body.page-id-18025 .tf-rf-tieramount{font-size:clamp(2rem,3.2vw,2.6rem);font-weight:700;letter-spacing:-.04em;line-height:1;color:#fff;margin:0 0 10px;}
body.page-id-18025 .tf-rf-tierrange{font-size:13.5px;font-weight:700;color:rgba(255,255,255,.8);margin:0 0 16px;}
body.page-id-18025 .tf-rf-tierbody{font-size:13.5px;line-height:1.6;color:rgba(255,255,255,.6);margin:0;}

/* ---------- how it works: numbered circles + dashed connector ---------- */
body.page-id-18025 .tf-rf-steps{position:relative;}
/* The connector must be measured from the COLUMN WRAP, not the row: Kadence puts its own
   vertical padding on .kt-row-column-wrap, so a row-relative top lands above the badges.
   Zero that padding and make the wrap the containing block, then top = half the badge. */
body.page-id-18025 .tf-rf-steps>.kt-row-column-wrap{position:relative;gap:0;padding-top:0!important;padding-bottom:0!important;}
body.page-id-18025 .tf-rf-steps>.kt-row-column-wrap::before{content:"";position:absolute;top:27px;left:16%;right:16%;height:2px;background:repeating-linear-gradient(to right,var(--tfc-g200) 0 6px,transparent 6px 12px);z-index:0;}
body.page-id-18025 .tf-rf-step>.kt-inside-inner-col{position:relative;z-index:1;text-align:center;padding:0 18px;}
body.page-id-18025 .tf-rf-stepnum{width:54px;height:54px;border-radius:50%;background:var(--tfc-navy);color:#fff;font-size:18px;font-weight:700;line-height:54px;text-align:center;margin:0 auto 20px;}
body.page-id-18025 .tf-rf-steptitle{font-size:16.5px;font-weight:700;color:var(--tfc-navy);margin:0 0 10px;}
body.page-id-18025 .tf-rf-stepbody{font-size:14px;line-height:1.6;color:var(--tfc-g500);margin:0;}
@media (max-width:1024px){
 body.page-id-18025 .tf-rf-steps>.kt-row-column-wrap::before{display:none;}
 body.page-id-18025 .tf-rf-step>.kt-inside-inner-col{padding:0 0 26px;}
}

/* ---------- FAQ accordion skin (native kadence/accordion) ---------- */
body.page-id-18025 .tf-rf-faq{max-width:820px;margin:0 auto;}
body.page-id-18025 .tf-rf-faq .kt-accordion-inner-wrap{display:flex;flex-direction:column;gap:12px;}
body.page-id-18025 .tf-rf-faq .kt-accordion-pane{border:1px solid var(--tfc-g200);border-radius:12px;overflow:hidden;background:#fff;}
body.page-id-18025 .tf-rf-faq .kt-blocks-accordion-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;background:none;border:0;padding:20px 24px;cursor:pointer;text-align:left;font-size:15.5px;font-weight:700;color:var(--tfc-navy);line-height:1.4;}
body.page-id-18025 .tf-rf-faq .kt-blocks-accordion-title-wrap{display:block;}
/* ICON: use Kadence's native "xclose" style, which rotates its own ::before to 45deg and
   ::after to -45deg when a pane opens (plus -> X). Only colour and bar geometry are
   overridden here - NEVER the transform. Overriding transform is what broke this before:
   the active class is kt-accordion-panel-active (not -pane-), so a wrong selector left
   Kadence's rotate(0deg) to cancel the centring translate and draw a corner. */
body.page-id-18025 .tf-rf-faq .kt-blocks-accordion-icon-trigger::before,
body.page-id-18025 .tf-rf-faq .kt-blocks-accordion-icon-trigger::after{background-color:var(--tfc-cyan6)!important;width:16px;height:2px;left:4px;top:11px;}
/* open state: tint the header and the panel. The panel only renders when open, so it can
   be tinted unconditionally; the header needs Kadence's real active class. */
body.page-id-18025 .tf-rf-faq .kt-blocks-accordion-header.kt-accordion-panel-active{background:#f9fafc;color:var(--tfc-navy);}
body.page-id-18025 .tf-rf-faq .kt-accordion-panel{background:#f9fafc;}
body.page-id-18025 .tf-rf-faq .kt-accordion-panel-inner{padding:0 24px 22px;border:0;}
body.page-id-18025 .tf-rf-faq .kt-accordion-panel-inner p{font-size:14.5px;line-height:1.65;color:var(--tfc-g500);margin:0;}
@media (max-width:767px){
 body.page-id-18025 .tf-rf-faq .kt-blocks-accordion-header{padding:18px;font-size:15px;}
 body.page-id-18025 .tf-rf-faq .kt-accordion-panel-inner{padding:0 18px 18px;}
}
/* ===== TF REFERRALS (page 18025) - END ===== */

/* ===== TF SILVERTRAC (page 14372) - START ===== */
/* Bands, heads, cards3 and check lists come from the shared tfc- layer.
   Silvertrac-specific pieces are prefixed tf-st-. Lime is the Silvertrac accent and is
   only ever used on dark or as a pill fill with a near-black label - never as text on white. */

body.page-id-14372{--tfst-lime:#bde72a;--tfst-eef:#eef2f8;--tfst-f7f:#f7f9fc;--tfst-red:#e6000f;}

/* ---------- hero ---------- */
body.page-id-14372 .tf-st-badge{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:700;letter-spacing:.04em;color:#cfe0f2;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);padding:5px 11px;border-radius:999px;margin:0 0 18px;}
body.page-id-14372 .tf-st-badge b{color:var(--tfc-cyan4);font-weight:700;}
body.page-id-14372 .tf-st-mark{color:var(--tfc-cyan4);}

/* three hero stats in a row. Same flex-column + gap:2px pattern as the promise band,
   and the same reason: display:block + margin-top lets the label inherit the theme's
   line-height and drift away from its number. Reference: b 22px, label 13px, gap 2px. */
body.page-id-14372 .tf-st-herostats{display:flex;flex-wrap:wrap;gap:30px;margin:36px 0 0;}
body.page-id-14372 .tf-st-hstat{display:flex;flex-direction:column;gap:2px;}
body.page-id-14372 .tf-st-hstat b{font-size:22px;font-weight:700;letter-spacing:-.02em;color:#eaf2fb;line-height:1.08;}
body.page-id-14372 .tf-st-hstat>span{font-size:13px;font-weight:500;color:#8fb4d6;line-height:1.35;margin:0;max-width:15ch;}

/* hero media: image plus an absolutely-placed rating card */
body.page-id-14372 .tf-st-heromedia>.kt-inside-inner-col{position:relative;}
body.page-id-14372 .tf-st-rating{position:absolute;z-index:2;left:-14px;bottom:18px;display:flex;align-items:center;gap:10px;background:rgba(2,20,40,.86);border:1px solid rgba(52,198,239,.3);border-radius:12px;padding:11px 15px;box-shadow:0 20px 40px -20px rgba(0,0,0,.6);}
body.page-id-14372 .tf-st-stars{color:var(--tfst-lime);font-size:14px;letter-spacing:2px;line-height:1;}
body.page-id-14372 .tf-st-ratingtxt{display:block;}
body.page-id-14372 .tf-st-ratingtxt b{display:block;font-size:13px;font-weight:700;color:#fff;line-height:1.25;}
body.page-id-14372 .tf-st-ratingtxt span{display:block;font-size:11px;color:#8fb4d6;line-height:1.3;}
@media (max-width:1024px){body.page-id-14372 .tf-st-rating{left:8px;bottom:8px;}}
@media (max-width:600px){body.page-id-14372 .tf-st-rating{position:static;margin:14px auto 0;display:inline-flex;}}

/* ---------- promise band (#eef2f8, hairline top and bottom) ----------
   Background and hairlines go on the ROW, matching the shared convention
   (.tfc-band-gray{background:...} is on the row too). They must NOT go on
   .kt-row-column-wrap: the shared layer zeroes that wrap's vertical padding and Kadence
   caps it at max-width:1290px, so a background there leaves the row's own 40-58px of
   tfc-sec-tight padding untinted - a white gap above and below - and stops the band
   reading as full-bleed. */
body.page-id-14372 .tf-st-promise{background:var(--tfst-eef)!important;border-top:1px solid var(--tfc-g200);border-bottom:1px solid var(--tfc-g200);}
/* type spec copied from the reference: clamp(21,2.8vw,30) / 1.14 / -.03em */
body.page-id-14372 .tf-st-promiseh{font-size:clamp(21px,2.8vw,30px);font-weight:700;letter-spacing:-.03em;line-height:1.14;color:var(--tfc-navy);margin:0;max-width:26ch;}
body.page-id-14372 .tf-st-promiseh .tf-st-royal{color:#04529a;font-style:normal;}
/* Stat stacks are a FLEX COLUMN with gap:2px - the reference's own pattern.
   Do NOT use display:block + margin-top on the label: the label then also inherits the
   theme's ~1.6 line-height and floats well below its number. Both line-heights are set
   explicitly so the stack never depends on inherited leading. */
body.page-id-14372 .tf-st-pstats{display:flex;flex-wrap:wrap;gap:38px;justify-content:flex-end;align-items:flex-start;}
body.page-id-14372 .tf-st-pstat{display:flex;flex-direction:column;gap:2px;}
body.page-id-14372 .tf-st-pstat b{font-size:30px;font-weight:700;letter-spacing:-.02em;color:var(--tfc-navy);line-height:1.08;}
body.page-id-14372 .tf-st-pstat>span{font-size:13px;font-weight:600;color:var(--tfc-g500);line-height:1.35;margin:0;}
@media (max-width:1024px){body.page-id-14372 .tf-st-pstats{justify-content:flex-start;gap:28px;}}

/* ---------- the formula: 3 numbered cards ---------- */
body.page-id-14372 .tf-st-steps .kt-row-column-wrap{gap:22px;}
body.page-id-14372 .tf-st-step>.kt-inside-inner-col{background:#fff;border:1px solid var(--tfc-g200);border-radius:14px;padding:26px 24px 28px;height:100%;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease;}
body.page-id-14372 .tf-st-step>.kt-inside-inner-col:hover{transform:translateY(-3px);border-color:var(--tfc-cyan);box-shadow:0 14px 30px -18px rgba(1,16,36,.45);}
body.page-id-14372 .tf-st-stepnum{width:34px;height:34px;border-radius:9px;background:linear-gradient(140deg,var(--tfc-cyan),#04529a);color:#fff;font-size:14px;font-weight:700;line-height:34px;text-align:center;margin:0 0 16px;}
body.page-id-14372 .tf-st-steptitle{font-size:20px;font-weight:700;letter-spacing:-.01em;color:var(--tfc-navy);margin:0 0 9px;line-height:1.25;}
body.page-id-14372 .tf-st-stepbody{font-size:15px;line-height:1.62;color:var(--tfc-g600,#475067);margin:0;}

/* ---------- feature rows: media card + lime tag pill ---------- */
body.page-id-14372 .tf-st-frow .kt-row-column-wrap{gap:56px;}
body.page-id-14372 .tf-st-fmedia>.kt-inside-inner-col{position:relative;background:#fff;border:1px solid var(--tfc-g200);border-radius:16px;padding:12px;box-shadow:0 26px 50px -30px rgba(1,16,36,.45);}
body.page-id-14372 .tf-st-fmedia img{display:block;width:100%;height:auto;border-radius:9px;}
body.page-id-14372 .tf-st-fcap{position:absolute;top:-13px;left:22px;z-index:2;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#02121f;background:var(--tfst-lime);padding:5px 11px;border-radius:999px;}
body.page-id-14372 .tf-st-ftitle{font-size:clamp(1.5rem,2.4vw,2rem);font-weight:700;letter-spacing:-.025em;line-height:1.14;color:var(--tfc-navy);margin:0 0 12px;}
body.page-id-14372 .tf-st-fbody{font-size:15px;line-height:1.65;color:var(--tfc-g500);margin:0 0 20px;}
/* check list with a bold lead-in */
@media (max-width:1024px){body.page-id-14372 .tf-st-frow .kt-row-column-wrap{gap:30px;}}
/* Desktop image-LEFT for feature row b. Targets the per-column uniqueID classes rather than
   :first-child/:last-child, because Kadence injects a style element as the first child of
   .kt-row-column-wrap and positional selectors land on it (mem 18784). */
@media (min-width:1025px){
 body.page-id-14372 .kadence-column14372_stFrowbT{order:2;}
 body.page-id-14372 .kadence-column14372_stFrowbM{order:1;}
}

/* ---------- service band (navy) ---------- */
body.page-id-14372 .tf-st-svccards .kt-row-column-wrap{gap:16px;}
body.page-id-14372 .tf-st-svccard>.kt-inside-inner-col{background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.10);border-radius:14px;padding:22px;height:100%;}
body.page-id-14372 .tf-st-svctile{width:42px;height:42px;border-radius:11px;background:rgba(0,181,230,.12);border:1px solid rgba(0,181,230,.28);position:relative;margin:0 0 14px;}
body.page-id-14372 .tf-st-svctile::before{content:"";position:absolute;inset:10px;background:var(--tfc-cyan4);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
body.page-id-14372 .tf-st-svctitle{font-size:16px;font-weight:700;color:#fff;margin:0 0 8px;}
body.page-id-14372 .tf-st-svcbody{font-size:13.5px;line-height:1.6;color:#b6c8dd;margin:0;}

/* ---------- upgrade / cross-sell panel ---------- */
body.page-id-14372 .tf-st-panel>.kt-inside-inner-col{background:linear-gradient(160deg,#fbfcfe,var(--tfst-eef));border:1px solid var(--tfc-g200);border-radius:22px;padding:40px;}
body.page-id-14372 .tf-st-ptag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#03417b;background:#fff;border:1px solid var(--tfc-g200);padding:5px 11px;border-radius:999px;margin:0 0 16px;}
body.page-id-14372 .tf-st-ptitle{font-size:clamp(1.35rem,2.1vw,1.75rem);font-weight:700;letter-spacing:-.02em;color:var(--tfc-navy);margin:0 0 12px;line-height:1.22;}
body.page-id-14372 .tf-st-pbody{font-size:15px;line-height:1.65;color:var(--tfc-g500);margin:0 0 18px;}
body.page-id-14372 .tf-st-lockup{display:inline-flex;align-items:center;gap:10px;font-size:13.5px;font-weight:600;color:var(--tfc-navy);}
body.page-id-14372 .tf-st-tt{flex:none;width:30px;height:30px;border-radius:8px;background:var(--tfst-red);color:#fff;font-size:12px;font-weight:700;line-height:30px;text-align:center;}
body.page-id-14372 .tf-st-outbtn{display:inline-block;font-size:14.5px;font-weight:700;color:var(--tfc-navy);background:#fff;border:1.5px solid var(--tfc-g200);border-radius:999px;padding:13px 26px;text-decoration:none;transition:border-color .18s ease,color .18s ease,box-shadow .18s ease;}
body.page-id-14372 .tf-st-outbtn:hover{border-color:var(--tfc-cyan);color:#03417b;box-shadow:0 10px 26px -14px rgba(1,16,36,.4);}
@media (max-width:1024px){body.page-id-14372 .tf-st-panel>.kt-inside-inner-col{padding:28px 22px;}}

/* ---------- final CTA ----------
   The reference asks for a royal-to-cyan CTA. It is built with the SHARED tfc-band-ctablue
   variant (tfb_s_cta style=blue), not a page override.
   Why the first attempt was wrong: the shared .tfc-band-cta gradient is painted on the ROW,
   while the override was painted on .kt-row-column-wrap - which Kadence caps at
   max-width:1290px and centres, so the navy gradient still showed in the full-bleed edges.
   The reference's dark type (#021b2e) on its royal end (#04529a) was also about 1.9:1,
   so tfc-band-ctablue's white type is used instead. No page CSS needed here at all. */
/* ===== TF SILVERTRAC (page 14372) - END ===== */

/* ===== TF TALENT MANAGEMENT (page 18068) - START ===== */
/* Every section on this page uses a shared tfc- renderer, so the only page-specific
   CSS is the hero check bullets and the desktop image-LEFT flip on capability row b. */

/* 1 - hero check bullets, between the subhead and the button pair.
      Shared icon library + shared cyan token, no per-page duplicates. */
body.page-id-18068 .tm-heropoints{display:flex;flex-wrap:wrap;gap:14px 26px;margin:0 0 30px;}
body.page-id-18068 .tm-heropoint{position:relative;display:block;padding-left:26px;max-width:210px;font-size:13.5px;line-height:1.45;color:rgba(255,255,255,.82);text-align:left;}
body.page-id-18068 .tm-heropoint::before{content:"";position:absolute;left:0;top:2px;width:17px;height:17px;background:var(--tfc-cyan4);-webkit-mask:url(/wp-content/uploads/tf-icons/protection-check.svg) center/contain no-repeat;mask:url(/wp-content/uploads/tf-icons/protection-check.svg) center/contain no-repeat;}

/* 2 - image-LEFT on capability row b at desktop widths.
      The shared .tfc-cap-flip rule uses *:first-child / *:last-child, which lands on the
      style element Kadence injects as the FIRST child of .kt-row-column-wrap, so it is inert
      (memory 18784). Target the stable per-column uniqueID classes instead.
      DOM order stays copy-then-image, so mobile stacks the heading first. */
@media (min-width:1025px){
 body.page-id-18068 .kadence-column18068_tmCapbT{order:2;}
 body.page-id-18068 .kadence-column18068_tmCapbI{order:1;}
}

@media (max-width:767px){
 body.page-id-18068 .tm-heropoints{max-width:340px;margin-left:auto;margin-right:auto;}
 body.page-id-18068 .tm-heropoint{max-width:none;}
}
/* ===== TF TALENT MANAGEMENT (page 18068) - END ===== */

/* ===== TF SITEMAP (page 1378) - START ===== */
/* Bands and the intro come from the shared tfc- layer. Only the index list needs styling. */

body.page-id-1378 .tf-sm-cols .kt-row-column-wrap{gap:32px;align-items:start;}
body.page-id-1378 .tf-sm-col>.kt-inside-inner-col{display:block;}

/* section heading: linked, navy, hairline under */
body.page-id-1378 .tf-sm-secheading{font-size:15px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--tfc-navy);margin:34px 0 12px;padding-bottom:10px;border-bottom:1px solid var(--tfc-g200);}
body.page-id-1378 .tf-sm-col>.kt-inside-inner-col>.tf-sm-secheading:first-child{margin-top:0;}
body.page-id-1378 .tf-sm-secheading a{color:inherit;text-decoration:none;}
body.page-id-1378 .tf-sm-secheading a:hover{color:#03417b;}

/* link lists, including the nested third level */
body.page-id-1378 .tf-sm-list{list-style:none;margin:0;padding:0;}
body.page-id-1378 .tf-sm-list li{margin:0;padding:0;}
body.page-id-1378 .tf-sm-list a{display:inline-block;font-size:14.5px;line-height:1.45;color:var(--tfc-g600,#475067);text-decoration:none;padding:5px 0;transition:color .15s ease;}
body.page-id-1378 .tf-sm-list a:hover{color:var(--tfc-cyan6);text-decoration:underline;}
/* nested level: indented with a hairline rail so hierarchy is readable */
body.page-id-1378 .tf-sm-list ul{list-style:none;margin:2px 0 8px;padding:0 0 0 14px;border-left:1px solid var(--tfc-g200);}
body.page-id-1378 .tf-sm-list ul a{font-size:13.5px;color:var(--tfc-g500);}

@media (max-width:1024px){
 body.page-id-1378 .tf-sm-cols .kt-row-column-wrap{gap:8px 32px;}
}
@media (max-width:767px){
 body.page-id-1378 .tf-sm-secheading{margin-top:26px;}
}
/* ===== TF SITEMAP (page 1378) - END ===== */

/* ===== TF HERO BREADCRUMB - page-hero variants (2555, 14554, 2566) - START ===== */
/* The canonical hero breadcrumb rule targets '.tf-ind .tf-ind-herocol'. The Who We Serve,
   Organization Types and Enterprise Security heroes use their own column classes
   (ws-herocol / ot-herocol / es-herocol), so their breadcrumb rendered unstyled.
   '.page-hero' is used by exactly these heroes plus Get a Demo, all on dark grounds. */
.page-hero .rank-math-breadcrumb { font-size: 12px; font-weight: 600; margin-bottom: 22px; }
.page-hero .rank-math-breadcrumb,
.page-hero .rank-math-breadcrumb a { color: rgba(255,255,255,.55); }
.page-hero .rank-math-breadcrumb a:hover { color: #34c6ef; }
.page-hero .rank-math-breadcrumb .last { color: #34c6ef; }
/* ===== TF HERO BREADCRUMB - page-hero variants (2555, 14554, 2566) - END ===== */

/* ===== 2026-08-04 client request: homepage audience-tab icons in brand cyan (Kadence tabs block has no native icon-color control; icons are currentColor SVGs) ===== */
body.page-id-2 .wp-block-kadence-tabs .kt-tabs-title-list .kb-svg-icon-wrap{color:#33C7F0;}

/* ===== TFC STORY band upgrade (page 18036 fix, 2026-08-06) - START ===== */
.tfc-sec.tfc-story{background-color:#010f22!important;background-image:linear-gradient(100deg,rgb(1,16,36) 42%,rgba(4,45,99,0.28) 100%),url(/wp-content/uploads/2026/08/Trackforce-Security-Software-bg-globe-1.webp)!important;background-position:center center,85% 55%!important;background-size:cover,contain!important;background-repeat:no-repeat,no-repeat!important;position:relative;overflow:hidden;}
.tfc-storyq{font-size:clamp(1.3rem,2.2vw,1.7rem);letter-spacing:-.01em;}
.tfc-storyimg img{max-width:560px;margin:0 auto;}
/* ===== TFC STORY band upgrade - END ===== */

/* ===== ES HERO BOARD CARD (page 2566 wp:html block, 2026-08-06) - START ===== */
.es-boardcard{background:#fff;border:1px solid #e2e6ee;border-radius:16px;overflow:hidden;font-family:inherit;}
.es-boardcard p{margin:0;}
.es-bc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid #e2e6ee;}
.es-bc-title{font-size:14px;font-weight:800;color:#011024;line-height:1.3;}
.es-bc-sub{font-size:12px;color:#566072;display:flex;align-items:center;gap:6px;margin-top:3px;}
.es-bc-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;flex:none;}
.es-bc-badge{display:inline-flex;align-items:center;background:#ecfdf3;border-radius:999px;padding:7px 13px;font-size:13px;font-weight:800;color:#15803d;flex:none;white-space:nowrap;}
.es-bc-body{padding:22px 20px;}
.es-bc-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding-bottom:20px;border-bottom:1px solid #eef1f6;}
.es-bc-kv{font-size:1.45rem;font-weight:900;letter-spacing:-.03em;color:#011024;line-height:1;}
.es-bc-kl{font-size:11px;color:#566072;font-weight:600;margin-top:7px;line-height:1.35;}
.es-bc-chart{margin-top:18px;}
.es-bc-charthead{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;}
.es-bc-charthead span:first-child{font-size:12px;font-weight:700;color:#566072;}
.es-bc-charthead span:last-child{font-size:11px;color:#67738a;white-space:nowrap;}
.es-bc-bars{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;height:122px;}
.es-bc-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;height:100%;}
.es-bc-bar i{display:block;width:100%;max-width:30px;background:#e2e6ee;border-radius:5px 5px 0 0;}
.es-bc-bar span{font-size:10px;color:#67738a;line-height:1;}
.es-bc-fill i{background:#0a2452;}
.es-bc-now i{background:#00b5e6;}
.es-bc-now span{color:#011024;font-weight:700;}
@media (max-width:1024px){.es-boardcard{max-width:560px;margin:0 auto;}}
@media (max-width:479px){.es-bc-head{flex-direction:column;}.es-bc-kpis{gap:10px;}.es-bc-kv{font-size:1.25rem;}.es-bc-bars{gap:6px;height:100px;}.es-bc-bar i{max-width:22px;}}
/* ===== ES HERO BOARD CARD - END ===== */

/* ===== SF HERO CONTRACT MARGIN CARD (page 335 wp:html block, 2026-08-06) - START ===== */
.sf-margincard{background:#fff;border:1px solid #e2e6ee;border-radius:16px;overflow:hidden;}
.sf-margincard p{margin:0;}
.sf-mc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid #e2e6ee;}
.sf-mc-title{font-size:14px;font-weight:800;color:#011024;letter-spacing:-.01em;line-height:1.3;}
.sf-mc-sub{font-size:12px;color:#67738a;display:flex;align-items:center;gap:6px;margin-top:3px;white-space:nowrap;}
.sf-mc-dot{width:7px;height:7px;border-radius:50%;background:#1e9e6a;flex:none;}
.sf-mc-tot{text-align:right;}
.sf-mc-total{font-size:1.6rem;font-weight:900;letter-spacing:-.03em;color:#011024;line-height:1;}
.sf-mc-delta{font-size:11px;font-weight:700;color:#1e9e6a;margin-top:4px;white-space:nowrap;}
.sf-mc-rows{padding:8px;}
.sf-mc-row{display:flex;align-items:center;gap:16px;padding:12px;border-radius:10px;}
.sf-mc-row:hover{background:#f5f7fa;}
.sf-mc-l{flex:1;min-width:0;}
.sf-mc-site{font-size:13.5px;font-weight:700;color:#011024;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sf-mc-meta{font-size:11.5px;color:#97a2b4;margin-top:2px;}
.sf-mc-r{width:118px;flex:none;}
.sf-mc-rt{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px;}
.sf-mc-pct{font-size:15px;font-weight:900;letter-spacing:-.02em;}
.sf-mc-ml{font-size:10px;color:#97a2b4;font-weight:600;}
.sf-mc-bar{height:6px;border-radius:99px;background:#eef1f6;overflow:hidden;}
.sf-mc-bar i{display:block;height:100%;border-radius:99px;}
.sf-mc-pct.is-ok{color:#1e9e6a;} .sf-mc-bar i.is-ok{background:#1e9e6a;}
.sf-mc-pct.is-warn{color:#f5a623;} .sf-mc-bar i.is-warn{background:#f5a623;}
.sf-mc-pct.is-bad{color:#e6000f;} .sf-mc-bar i.is-bad{background:#e6000f;}
@media (max-width:1024px){.sf-margincard{max-width:560px;margin:0 auto;}}
@media (max-width:479px){.sf-mc-head{padding:16px;}.sf-mc-rows{padding:6px;}.sf-mc-row{gap:12px;padding:10px;}.sf-mc-r{width:96px;}}
/* ===== SF HERO CONTRACT MARGIN CARD - END ===== */

/* ===== ESR ROLLUP DIAGRAM (page 2566 wp:html block, 2026-08-06) - START ===== */
.esr-diagram{position:relative;max-width:900px;margin:52px auto 0;display:grid;grid-template-columns:1fr 300px 1fr;gap:28px;align-items:center;}
.esr-diagram p{margin:0;}
.esr-node{background:rgba(255,255,255,.05);border:1px solid rgba(0,181,230,.3);border-radius:12px;padding:11px 13px;color:#fff;text-align:left;}
.esr-node + .esr-node{margin-top:18px;}
.esr-nodehead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;}
.esr-region{font-size:9.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:#00b5e6;}
.esr-sites{font-size:9.5px;font-weight:600;color:rgba(255,255,255,.5);}
.esr-vendor{font-size:12.5px;font-weight:700;line-height:1.15;color:#fff;}
.esr-meter{display:flex;align-items:center;gap:7px;margin-top:9px;}
.esr-track{flex:1;height:4px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden;}
.esr-fill{display:block;height:100%;background:#00b5e6;border-radius:3px;}
.esr-sla{font-size:10px;font-weight:700;color:#fff;min-width:30px;text-align:right;}
.esr-hub{display:flex;flex-direction:column;align-items:center;gap:10px;color:#fff;text-align:center;}
.esr-core{position:relative;width:96px;height:96px;border-radius:50%;background:#08203d;border:2px solid rgba(0,181,230,.9);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 0 0 12px rgba(0,181,230,.10),0 0 40px rgba(0,181,230,.35);}
.esr-mark{position:relative;z-index:2;width:42px;height:42px;flex:none;}
.esr-mark path{fill:currentColor;}
/* homepage connective-layer hub animation, applied to this circle only (reuses global tfhPulse/tfhSweep keyframes) */
@media (prefers-reduced-motion: no-preference){
.esr-core::after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;border-radius:50%;pointer-events:none;z-index:1;animation:tfhPulse 3.2s ease-out infinite;}
.esr-core::before{content:"";position:absolute;left:50%;top:50%;width:200%;height:200%;border-radius:50%;pointer-events:none;z-index:0;opacity:.6;background:conic-gradient(from 0deg,transparent 0deg,rgba(0,181,230,.5) 66deg,transparent 150deg);filter:blur(11px);animation:tfhSweep 6.5s linear infinite;}
}
.esr-hublabel{font-size:9px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.5);}
.esr-count{font-size:22px;font-weight:900;letter-spacing:-.02em;line-height:1;color:#fff;}
.esr-hubnote{font-size:9.5px;font-weight:600;color:#00b5e6;}
.esr-board{background:rgba(6,20,40,.94);border:1px solid rgba(0,181,230,.5);border-radius:16px;padding:20px 22px;color:#fff;text-align:left;box-shadow:0 24px 60px rgba(0,8,20,.6),0 0 50px rgba(0,181,230,.2);}
.esr-boardhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px;}
.esr-boardeyebrow{font-size:9.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:#00b5e6;}
.esr-boardtitle{font-size:15px;font-weight:800;line-height:1.1;margin-top:3px;color:#fff;}
.esr-delta{display:inline-flex;align-items:center;background:rgba(34,197,94,.16);border:1px solid rgba(34,197,94,.4);border-radius:999px;padding:5px 11px;font-size:12px;font-weight:800;color:#4ade80;flex:none;}
.esr-board ul{display:flex;flex-direction:column;gap:9px;border-top:1px solid rgba(255,255,255,.1);padding-top:12px;margin:0;list-style:none;}
.esr-board li{display:flex;align-items:center;gap:9px;font-size:12px;}
.esr-board li span:first-of-type{color:rgba(255,255,255,.72);flex:1;font-weight:400;}
.esr-board li span:last-of-type{font-weight:700;color:#fff;text-align:right;}
.esr-steps{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin:26px 0 0;padding:0;font-size:11px;font-weight:600;color:rgba(255,255,255,.42);list-style:none;}
.esr-steps li{display:flex;align-items:center;gap:6px;}
.esr-steps i{width:7px;height:7px;border-radius:50%;background:#22c55e;display:block;}
@media (max-width:1024px){.esr-diagram{grid-template-columns:1fr;max-width:420px;gap:24px;}.esr-node + .esr-node{margin-top:14px;}}
/* animation mount (reference TFEnterprise rAF loop lives in the wp:html block script; .esr-run is added by the script when it takes over from the static fallback) */
.esr-mount{position:relative;max-width:900px;margin:0 auto;}
#tf-enterprise.esr-run{height:480px;max-width:640px;margin:52px auto 8px;}
@media (max-width:768px){#tf-enterprise.esr-run{transform:scale(.78);transform-origin:top center;margin-bottom:-98px;}}
@media (max-width:480px){#tf-enterprise.esr-run{transform:scale(.56);margin-bottom:-203px;}}
/* ===== ESR ROLLUP DIAGRAM - END ===== */

/* ===== TF-IND ORG GAPS (page 335 Security Firms formatting fix, 2026-08-06) - START ===== */
/* the ORG page variant classes below exist only on page 335; the leak grid override is page-scoped because .tf-ind-leak is shared */
.tf-ind .tf-ind-benlead{max-width:620px;margin-left:auto;margin-right:auto;}
.tf-ind .tf-ind-ctalead{max-width:640px;margin-left:auto;margin-right:auto;}
.tf-ind .tf-ind-leak-stat{font-size:1.6rem;font-weight:900;letter-spacing:-.03em;line-height:1.1;}
.page-id-335 .tf-ind-leak > .kt-inside-inner-col{grid-template-columns:74px 1fr;}
@media (max-width:767px){.page-id-335 .tf-ind-leak > .kt-inside-inner-col{grid-template-columns:56px 1fr;} .tf-ind .tf-ind-leak-stat{font-size:1.25rem;}}
.tf-ind .tf-ind-stat-lbl{max-width:300px;margin-left:auto;margin-right:auto;}
.tf-ind .tf-ind-oquote{max-width:880px;margin-left:auto;margin-right:auto;}
/* ===== TF-IND ORG GAPS - END ===== */

/* ===== TFI HUB ANIMATIONS (page 18019 Integrations hero, 2026-08-06) - START ===== */
/* Marching dashes + staggered node float from the Integrations reference; core ring reuses the global homepage tfhPulse (brand single-source). */
/* The hub svg maps 100 viewBox units onto ~520px, so stroke values are compensated: .3 units = ~1.5px rendered. */
body.page-id-18019 .tfi-hub svg line,body.page-id-18021 .tfi-hub svg line{stroke-width:.3;stroke-dasharray:.6 1.2;}
@keyframes tfiFlow{to{stroke-dashoffset:-3.6;}}
@keyframes tfiNodeFloat{0%,100%{transform:translate(-50%,-50%);}50%{transform:translate(-50%,calc(-50% - 5px));}}
@media (prefers-reduced-motion: no-preference){
body.page-id-18019 .tfi-hub svg line,body.page-id-18021 .tfi-hub svg line{animation:tfiFlow 2.6s linear infinite;}
body.page-id-18019 .tfi-core,body.page-id-18021 .tfi-core{position:absolute;}
body.page-id-18019 .tfi-core::after,body.page-id-18021 .tfi-core::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;animation:tfhPulse 3.2s ease-out infinite;}
body.page-id-18019 .tfi-node,body.page-id-18021 .tfi-node{animation:tfiNodeFloat 6s ease-in-out infinite;}
body.page-id-18019 .tfi-node:nth-of-type(3),body.page-id-18021 .tfi-node:nth-of-type(3){animation-delay:.5s;}
body.page-id-18019 .tfi-node:nth-of-type(4),body.page-id-18021 .tfi-node:nth-of-type(4){animation-delay:1s;}
body.page-id-18019 .tfi-node:nth-of-type(5),body.page-id-18021 .tfi-node:nth-of-type(5){animation-delay:1.5s;}
body.page-id-18019 .tfi-node:nth-of-type(6),body.page-id-18021 .tfi-node:nth-of-type(6){animation-delay:2s;}
body.page-id-18019 .tfi-node:nth-of-type(7),body.page-id-18021 .tfi-node:nth-of-type(7){animation-delay:2.5s;}
}
/* ===== TFI HUB ANIMATIONS - END ===== */

/* ===== TF-IND REPCARD REVERSED (pages 119 Manufacturing + 117 Healthcare, 2026-08-07; 117 added 2026-09-11) - START ===== */
/* the shared .tf-ind-repcard is navy; page 18198 keeps that. Manufacturing reverses to light so it doesn't stack two navy cards with the new Proof-Wrap treatment. */
.page-id-119 .tf-ind-repcard > .kt-row-column-wrap,
.page-id-117 .tf-ind-repcard > .kt-row-column-wrap{background:#f6f7fa;border:1px solid #e2e6ee;}
.page-id-119 .tf-ind-rep-imgwrap > .kt-inside-inner-col,
.page-id-117 .tf-ind-rep-imgwrap > .kt-inside-inner-col{background:rgba(1,16,36,.04);border-right:1px solid #e2e6ee;}
.page-id-119 figure.tf-ind-rep-cover img,
.page-id-117 figure.tf-ind-rep-cover img{box-shadow:0 16px 40px rgba(1,16,36,.16);}
/* ===== TF-IND REPCARD REVERSED - END ===== */

/* ===== TF-IND REPCARD TWO-UP EQUAL HEIGHT (page 117 Healthcare, 2026-09-14) - START ===== */
/* Two report cards side by side in .tf-ind-repcol columns. The Kadence grid already
   stretches the columns, but the nested v2 row markup inside each one
   (.kt-inside-inner-col > .kb-row-layout-wrap > .kt-row-column-wrap) sizes to its own
   content, so the shorter card's panel stops early. Kadence's native 'Inner Column
   Height: Full' only targets v3 .innerblocks-wrap markup and cannot reach this.
   Scoped to .tf-ind-repcol so single-card industry pages are untouched.
   Remove this block to revert. */
.tf-ind-repcol > .kt-inside-inner-col{height:100%;}
.tf-ind-repcol > .kt-inside-inner-col > .tf-ind-repcard{height:100%;}
.tf-ind-repcol .tf-ind-repcard > .kt-row-column-wrap{height:100%;}
/* Kadence sizes this card's grid columns but never its rows, so the implicit row stays
   content-height and the image column's grey panel stops short of the stretched card.
   Desktop only: below 1024px Kadence collapses the card to one column, where image and
   copy become two stacked rows that must keep their natural heights. TWO-UP ROW FILL */
@media (min-width:1025px){
  .tf-ind-repcol .tf-ind-repcard > .kt-row-column-wrap{grid-auto-rows:minmax(0,1fr);}
}
/* ===== TF-IND REPCARD TWO-UP EQUAL HEIGHT - END ===== */

/* ===== PF HERO SHOT GAP (page 14340, 2026-08-07): the shot row's .tfc-sec forces clamp(48-80px)!important top padding; zero just this row so the mockup sits ~30px under the hero buttons (hero bottom 0 + .tfp-frame margin-top 30) ===== */
body.page-id-14340 .kb-row-layout-id14340_pfHeroShot.tfc-sec{padding-top:0!important;}

/* ===== TFG EMEA BADGE (GuardTek pages 14342/18672/18669/18671, 2026-08-07) - START ===== */
.tfg-emea{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:4px 11px 4px 5px;margin:0 0 18px;}
.tfg-emea-flag{display:inline-flex;width:22px;height:15px;border-radius:2px;overflow:hidden;flex:none;}
.tfg-emea-flag svg{display:block;}
.tfg-emea-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.8);line-height:1;}
/* ===== TFG EMEA BADGE - END ===== */

/* ===== GTKC HERO CONSOLE (page 14342 GuardTek hero live-feed card, 2026-08-07) - START ===== */
body.page-id-14342 .gtkc-console{background:linear-gradient(180deg,rgba(4,22,44,.92),rgba(1,16,36,.92));border:1px solid rgba(52,198,239,.22);border-radius:18px;box-shadow:0 30px 70px -30px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.05);overflow:hidden;backdrop-filter:blur(3px);max-width:520px;margin:0 auto;}
body.page-id-14342 .gtkc-top{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.07);}
body.page-id-14342 .gtkc-t{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#cfe0f2;}
body.page-id-14342 .gtkc-t svg{width:15px;height:15px;flex:none;}
body.page-id-14342 .gtkc-status{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#bde72a;}
body.page-id-14342 .gtkc-dot{width:8px;height:8px;border-radius:50%;background:#bde72a;box-shadow:0 0 0 0 rgba(189,231,42,.6);}
body.page-id-14342 .gtkc-map{position:relative;height:150px;background:radial-gradient(120px 90px at 30% 60%,rgba(0,181,230,.28),transparent 70%),radial-gradient(150px 110px at 72% 40%,rgba(20,113,201,.30),transparent 72%),radial-gradient(90px 70px at 55% 80%,rgba(189,231,42,.18),transparent 70%),#061a33;border-bottom:1px solid rgba(255,255,255,.06);overflow:hidden;}
body.page-id-14342 .gtkc-map::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:26px 26px;}
body.page-id-14342 .gtkc-pin{position:absolute;width:11px;height:11px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.85);z-index:1;}
body.page-id-14342 .gtkc-pin.g{background:#1e9e6a;color:#1e9e6a;}
body.page-id-14342 .gtkc-pin.c{background:#00b5e6;color:#00b5e6;}
body.page-id-14342 .gtkc-pin.y{background:#f5a623;color:#f5a623;}
body.page-id-14342 .gtkc-feed{padding:8px 0;max-height:236px;overflow:hidden;}
body.page-id-14342 .gtkc-row{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.045);}
body.page-id-14342 .gtkc-ico{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-size:12px;font-weight:800;color:#02121f;}
body.page-id-14342 .gtkc-ico.scan{background:#34c6ef;}
body.page-id-14342 .gtkc-ico.rep{background:#bde72a;}
body.page-id-14342 .gtkc-ico.tour{background:#7cc4f5;}
body.page-id-14342 .gtkc-ico.ok{background:#1e9e6a;color:#fff;}
body.page-id-14342 .gtkc-txt{font-size:13px;color:#dbe7f4;font-weight:500;line-height:1.35;}
body.page-id-14342 .gtkc-txt small{display:block;color:#7d97b4;font-weight:500;font-size:11.5px;margin-top:1px;}
body.page-id-14342 .gtkc-time{font-size:11px;color:#6f88a6;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums;}
body.page-id-14342 .gtkc-badge-ok{font-size:10px;font-weight:800;letter-spacing:.06em;color:#2fd08f;text-transform:uppercase;}
@keyframes gtkcPulse{0%{box-shadow:0 0 0 0 rgba(189,231,42,.55);}70%{box-shadow:0 0 0 9px rgba(189,231,42,0);}100%{box-shadow:0 0 0 0 rgba(189,231,42,0);}}
@keyframes gtkcPing{0%{transform:scale(.6);opacity:.6;}80%,100%{transform:scale(1.9);opacity:0;}}
@keyframes gtkcSlidein{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: no-preference){
body.page-id-14342 .gtkc-dot{animation:gtkcPulse 2.2s infinite;}
body.page-id-14342 .gtkc-pin::before{content:"";position:absolute;inset:-6px;border-radius:50%;border:1px solid currentColor;opacity:.4;animation:gtkcPing 2.6s infinite;}
body.page-id-14342 .gtkc-row{animation:gtkcSlidein .45s ease both;}
}
@media (max-width:1024px){body.page-id-14342 .gtkc-console{margin-top:34px;}}
/* ===== GTKC HERO CONSOLE - END ===== */

/* Silvertrac check-list bold lead-ins (native iconlist) */
body.page-id-14372 .kt-svg-icon-list-item-wrap b{color:var(--tfc-navy);font-weight:700;}

/* --- light-band variant of the related tiles (.tfc-dtile) --- */
/* Added 2026-08-12: guard-tours Explore-more band reversed navy to white. Scoped to
   .tfc-dtiles-light so lone-worker and command-center keep the navy version.
   Link uses royal and You're-here uses g500 for WCAG AA contrast on light. */
.tfc-dtiles-light .tfc-dtile>.kt-inside-inner-col{background:var(--tfc-g50);border-color:var(--tfc-g200);}
.tfc-dtiles-light .tfc-dtile>.kt-inside-inner-col:hover{border-color:var(--tfc-cyan6);}
.tfc-dtiles-light .tfc-dtile.is-current>.kt-inside-inner-col{background:var(--tfc-g50);border-color:var(--tfc-g200);}
.tfc-dtiles-light .tfc-dtile.is-current>.kt-inside-inner-col:hover{border-color:var(--tfc-g200);}
.tfc-dtiles-light .tfc-dtname{color:var(--tfc-navy);}
.tfc-dtiles-light .tfc-dtbody{color:var(--tfc-g500);}
.tfc-dtiles-light .tfc-dtlink{color:var(--tfc-royal);}
.tfc-dtiles-light .tfc-dtlink:hover{color:var(--tfc-navy);}
.tfc-dtiles-light .tfc-dthere{color:var(--tfc-g500);}

/* ===== SITEMAP (page 1378) intro-to-grid gap, 2026-08-12 =====
   The intro row and the grid row both carry .tfc-sec, which forces
   clamp(48px,5.6vw,80px) padding top AND bottom with !important. Their facing
   edges stacked to ~96-160px of empty space under the intro copy. These two rows
   are one logical section, so collapse the seam to a single modest gap.
   Kadence's native padding controls cannot beat .tfc-sec's !important, which is
   why this is CSS. Scoped to the two row IDs so no other section is affected. */
body.page-id-1378 .kb-row-layout-id1378_smIntro.tfc-sec{padding-bottom:0!important;}
body.page-id-1378 .kb-row-layout-id1378_smGridWrap.tfc-sec{padding-top:clamp(24px,2.6vw,36px)!important;}
/* ===== HOMEPAGE PRODUCT-IMAGE: TrackTik live dashboard mockup, 2026-08-17 =====
   Fills the previously empty wp:html block in the "TrackTik-Platform" section
   of page 2. Ported from the Kadence homepage reference bundle.

   The composition is authored at a fixed 1440x900 and scaled to the container
   by tf-custom-css/tfps-fit.js, which writes --tfps-s onto .tfps-inner. That
   keeps every proportion identical to the reference at any viewport instead of
   reflowing a 16-tile dashboard grid into unreadable columns.

   Treated as a single decorative product screenshot: the block carries
   role="img" with a descriptive label and the artwork is aria-hidden, so the
   ~30 fake controls never take focus and screen readers get one sentence
   rather than a pile of 3px microtext.

   Icons are the existing shared library at uploads/tf-icons/ (shield,
   checkpoint, people-management, gps-map, growth, document-management) and the
   logo is the theme's own Logo-Trackforce-Logo.svg. No new media was uploaded.
   Icon paths are relative to THIS file so they survive the staging-to-production
   domain change without a search-replace.

   The horizontal bar under the tab strip reproduces the scrollbar visible in
   the approved reference. It is drawn deliberately (.tfps-sbar) rather than
   left to overflow:auto, because a real scrollbar renders differently on macOS,
   Windows and Linux and would not match the reference on most machines.
   To remove it, delete the .tfps-sbar element from the block.
*/
.tfps{position:relative;max-width:1040px;margin:0 auto;
  --tfps-navy:#011024;--tfps-cyan:#00b5e6;--tfps-blue:#04529a;--tfps-red:#e6000f;
  --tfps-amber:#f5a623;--tfps-g50:#f5f7fa;--tfps-g200:#dde3ec;
  --tfps-mute:rgba(1,16,36,.45);--tfps-mute2:rgba(1,16,36,.5);
  --tfps-mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --tfps-sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}
.tfps-glow{position:absolute;left:50%;top:13%;transform:translateX(-50%);width:74%;height:66%;
  background:radial-gradient(ellipse 60% 60% at 50% 50%,rgba(0,181,230,.26) 0%,transparent 70%);
  filter:blur(54px);z-index:0;pointer-events:none;display:block;}
.tfps-card{position:relative;z-index:1;background:#fff;border:1px solid var(--tfps-g200);
  border-radius:16px;box-shadow:0 40px 80px rgba(1,16,36,.22);overflow:hidden;text-align:left;}
.tfps-fit{width:100%;aspect-ratio:1440/900;overflow:hidden;position:relative;background:#fff;}
.tfps-inner{position:absolute;top:0;left:0;width:1440px;height:900px;
  transform-origin:top left;transform:scale(var(--tfps-s,.72222));overflow:hidden;}
.tfps-app{display:grid;grid-template-columns:240px 1fr;width:1440px;height:900px;background:#fff;
  color:var(--tfps-navy);font-family:var(--tfps-sans);overflow:hidden;}
.tfps-app *{box-sizing:border-box;}

/* ---- sidebar ---- */
.tfps-side{background:var(--tfps-g50);border-right:1px solid var(--tfps-g200);
  display:flex;flex-direction:column;animation:tfps-fade .4s ease both;}
.tfps-brand{padding:24px 22px 20px;}
.tfps-brand img{height:20px;width:auto;display:block;}
.tfps-ws{padding:0 22px 12px;font-family:var(--tfps-mono);font-size:10.5px;
  letter-spacing:.14em;color:rgba(1,16,36,.4);}
.tfps-nav{display:flex;flex-direction:column;}
.tfps-nav>div{display:flex;align-items:center;gap:12px;padding:11px 22px;font-size:12.5px;
  font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tfps-navy);
  border-left:2px solid transparent;animation:tfps-up .4s ease both;}
.tfps-nav>div.is-on{border-left-color:var(--tfps-cyan);}
.tfps-nav>div:nth-child(1){animation-delay:0s}
.tfps-nav>div:nth-child(2){animation-delay:.04s}
.tfps-nav>div:nth-child(3){animation-delay:.08s}
.tfps-nav>div:nth-child(4){animation-delay:.12s}
.tfps-nav>div:nth-child(5){animation-delay:.16s}
.tfps-nav>div:nth-child(6){animation-delay:.2s}
.tfps-ico{width:15px;height:15px;flex:none;background-color:var(--tfps-mute);
  -webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;}
.tfps-nav>div.is-on .tfps-ico{background-color:var(--tfps-navy);}
.tfps-ico.i-dash{-webkit-mask-image:url(../tf-icons/shield.svg);mask-image:url(../tf-icons/shield.svg);}
.tfps-ico.i-sites{-webkit-mask-image:url(../tf-icons/checkpoint.svg);mask-image:url(../tf-icons/checkpoint.svg);}
.tfps-ico.i-emp{-webkit-mask-image:url(../tf-icons/people-management.svg);mask-image:url(../tf-icons/people-management.svg);}
.tfps-ico.i-maps{-webkit-mask-image:url(../tf-icons/gps-map.svg);mask-image:url(../tf-icons/gps-map.svg);}
.tfps-ico.i-sales{-webkit-mask-image:url(../tf-icons/growth.svg);mask-image:url(../tf-icons/growth.svg);}
.tfps-ico.i-set{-webkit-mask-image:url(../tf-icons/document-management.svg);mask-image:url(../tf-icons/document-management.svg);}
.tfps-user{margin-top:auto;padding:18px 22px;border-top:1px solid var(--tfps-g200);
  display:flex;align-items:center;gap:10px;}
.tfps-av{width:30px;height:30px;background:var(--tfps-cyan);color:#011024;display:flex;
  align-items:center;justify-content:center;font-weight:800;font-size:11px;
  font-family:var(--tfps-mono);flex-shrink:0;}
.tfps-user>span:last-child{min-width:0;display:block;}
.tfps-un{font-size:12.5px;font-weight:600;color:var(--tfps-navy);display:block;}
.tfps-ur{font-size:10.5px;font-family:var(--tfps-mono);color:var(--tfps-mute);
  letter-spacing:.04em;display:block;}

/* ---- top bar + tabs ---- */
.tfps-main{display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.tfps-top{height:64px;border-bottom:1px solid var(--tfps-g200);display:flex;align-items:center;
  gap:20px;padding:0 28px;flex-shrink:0;animation:tfps-fade .4s ease both;}
.tfps-search{font-family:var(--tfps-mono);font-size:11.5px;letter-spacing:.05em;
  color:var(--tfps-mute2);flex:1 1 0%;max-width:420px;}
.tfps-cta{margin-left:auto;padding:9px 18px;font-size:11.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:#011024;background:var(--tfps-cyan);}
.tfps-tabwrap{border-bottom:1px solid var(--tfps-g200);overflow:hidden;flex-shrink:0;}
.tfps-tabs{display:flex;gap:26px;padding:0 28px;white-space:nowrap;}
.tfps-tabs>span{padding:15px 0 13px;font-size:11.5px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--tfps-mute2);border-bottom:2px solid transparent;}
.tfps-tabs>span.is-on{color:var(--tfps-navy);border-bottom-color:var(--tfps-cyan);}
.tfps-sbar{height:15px;background:#fafafa;border-top:1px solid #e8e8e8;position:relative;}
.tfps-sbar i{position:absolute;left:0;top:3.5px;height:8px;width:83.1%;
  background:#c1c1c1;border-radius:4px;display:block;}

/* ---- content header ---- */
.tfps-body{flex:1 1 0%;overflow:hidden;padding:28px;}
.tfps-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px;
  animation:tfps-up .4s ease both;}
.tfps-eb{font-family:var(--tfps-mono);font-size:10.5px;letter-spacing:.16em;
  color:var(--tfps-cyan);margin-bottom:6px;}
.tfps-h1{font-size:26px;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;
  color:var(--tfps-navy);line-height:1.15;}
.tfps-clock{font-family:var(--tfps-mono);font-size:11px;color:var(--tfps-mute);
  letter-spacing:.05em;text-align:right;}

/* ---- KPI grid ---- */
.tfps-kpis{display:grid;grid-template-columns:repeat(8,1fr);gap:1px;
  background:var(--tfps-g200);margin-bottom:22px;}
.tfps-k{position:relative;padding:14px 16px;display:flex;flex-direction:column;gap:10px;
  background:#fff;animation:tfps-up .45s ease both,tfps-graceful 6s ease-in-out infinite;}
.tfps-k:nth-child(1){padding-top:15px;animation-delay:0s,3.6s}
.tfps-k:nth-child(2){animation-delay:.03s,.8s}
.tfps-k:nth-child(3){animation-delay:.06s,4.4s}
.tfps-k:nth-child(4){animation-delay:.09s,0s}
.tfps-k:nth-child(5){animation-delay:.12s,2.8s}
.tfps-k:nth-child(6){animation-delay:.15s,1.6s}
.tfps-k:nth-child(7){animation-delay:.18s,4.8s}
.tfps-k:nth-child(8){animation-delay:.21s,.4s}
.tfps-k:nth-child(9){animation-delay:.24s,3.2s}
.tfps-k:nth-child(10){animation-delay:.27s,2s}
.tfps-k:nth-child(11){animation-delay:.3s,4s}
.tfps-k:nth-child(12){animation-delay:.33s,1.2s}
.tfps-k:nth-child(13){animation-delay:.36s,2.4s}
.tfps-k:nth-child(14),.tfps-k:nth-child(15),.tfps-k:nth-child(16){animation:tfps-up .45s ease both;}
.tfps-k:nth-child(14){animation-delay:.39s}
.tfps-k:nth-child(15){animation-delay:.42s}
.tfps-k:nth-child(16){animation-delay:.45s}
.tfps-kseq{display:flex;flex-direction:column;gap:10px;}
.tfps-kseq.s1{animation:tfps-seq1 9s ease-in-out infinite;}
.tfps-kseq.s2{animation:tfps-seq2 9s ease-in-out infinite;}
.tfps-kseq.s3{animation:tfps-seq3 9s ease-in-out infinite;}
.tfps-kn{font-family:var(--tfps-mono);font-size:32px;font-weight:700;line-height:1;display:block;}
.tfps-kn.pulse{animation:tfps-pulse 2.2s ease-in-out infinite;}
.tfps-kl{font-size:10.5px;font-weight:600;letter-spacing:.06em;color:var(--tfps-mute2);
  text-transform:uppercase;display:block;}
.tfps .c-red{color:var(--tfps-red);}
.tfps .c-blue{color:var(--tfps-blue);}
.tfps .c-cyan{color:var(--tfps-cyan);}
.tfps .c-amber{color:var(--tfps-amber);}
.tfps .c-mute{color:var(--tfps-mute);}

/* ---- activity feed + tracking ---- */
.tfps-grid{display:grid;grid-template-columns:1fr 380px;gap:1px;background:var(--tfps-g200);
  align-items:stretch;}
.tfps-feed{background:#fff;animation:tfps-up .45s ease .1s both;}
.tfps-ftabs{display:flex;gap:22px;padding:16px 20px 0;border-bottom:1px solid var(--tfps-g200);}
.tfps-ftabs>span{padding:0 0 14px;font-size:11.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--tfps-mute2);border-bottom:2px solid transparent;}
.tfps-ftabs>span.is-on{color:var(--tfps-navy);border-bottom-color:var(--tfps-cyan);}
.tfps-tbl{width:100%;border-collapse:collapse;}
.tfps-tbl th{font-family:var(--tfps-mono);font-size:10px;letter-spacing:.08em;
  color:rgba(1,16,36,.4);padding:14px 20px 10px;font-weight:600;text-align:left;}
.tfps-tbl th:last-child{text-align:right;}
.tfps-tbl tbody tr{border-top:1px solid rgba(1,16,36,.08);
  animation:tfps-slidein 6s ease infinite;}
.tfps-tbl tbody tr:nth-child(1){animation-delay:0s}
.tfps-tbl tbody tr:nth-child(2){animation-delay:.12s}
.tfps-tbl tbody tr:nth-child(3){animation-delay:.24s}
.tfps-tbl tbody tr:nth-child(4){animation-delay:.36s}
.tfps-tbl tbody tr:nth-child(5){animation-delay:.48s}
.tfps-tbl td{padding:12px 20px;vertical-align:top;}
.tfps-tbl td:last-child{text-align:right;}
.tfps-ev{font-size:13px;color:var(--tfps-navy);}
.tfps-meta{font-family:var(--tfps-mono);font-size:11px;color:var(--tfps-mute);
  margin-top:4px;letter-spacing:.02em;}
.tfps-st{font-family:var(--tfps-mono);font-size:11px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;}
.tfps-track{background:#fff;display:flex;flex-direction:column;
  animation:tfps-up .45s ease .15s both;}
.tfps-acts{display:flex;border-bottom:1px solid var(--tfps-g200);}
.tfps-acts>span{flex:1 1 0%;text-align:center;padding:13px 0;border-right:1px solid var(--tfps-g200);
  font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:rgba(1,16,36,.75);}
.tfps-acts>span:last-child{border-right:0;}
.tfps-thd{padding:16px 20px;border-bottom:1px solid var(--tfps-g200);font-family:var(--tfps-mono);
  font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--tfps-navy);}
.tfps-tr{display:flex;align-items:center;gap:12px;padding:14px 20px;
  border-bottom:1px solid rgba(1,16,36,.08);}
.tfps-tr>div{min-width:0;flex:1 1 0%;}
.tfps-tn{font-size:12.5px;font-weight:600;color:var(--tfps-navy);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;}
.tfps-tm{font-family:var(--tfps-mono);font-size:10.5px;color:var(--tfps-mute);margin-top:2px;}
.tfps-tb{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--tfps-navy);border:1px solid rgba(1,16,36,.35);padding:5px 10px;flex-shrink:0;}

/* ---- keyframes ---- */
@keyframes tfps-fade{from{opacity:0}to{opacity:1}}
@keyframes tfps-up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes tfps-graceful{0%,100%{opacity:1}50%{opacity:.55}}
@keyframes tfps-pulse{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes tfps-seq1{0%{opacity:0;transform:translateX(24px)}8%,92%{opacity:1;transform:none}100%{opacity:0;transform:translateX(24px)}}
@keyframes tfps-seq2{0%{opacity:0;transform:translateX(24px)}20%,80%{opacity:1;transform:none}100%{opacity:0;transform:translateX(24px)}}
@keyframes tfps-seq3{0%{opacity:0;transform:translateX(24px)}32%,68%{opacity:1;transform:none}100%{opacity:0;transform:translateX(24px)}}
@keyframes tfps-slidein{0%,6%{opacity:0;transform:translateY(-12px)}20%,88%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-12px)}}

/* Reduced motion: hold every element at its resting state. */
@media (prefers-reduced-motion:reduce){
  .tfps-side,.tfps-top,.tfps-head,.tfps-nav>div,.tfps-k,.tfps-kn,.tfps-kseq,
  .tfps-feed,.tfps-track,.tfps-tbl tbody tr{animation:none!important;opacity:1!important;transform:none!important;}
}

/* ==========================================================================
   CAREERS PAGE (page 110) - career opportunities module + culture image grid
   Scoped to .tf-careers-jobs / .tf-culture-grid.
   ========================================================================== */
.tf-culture-grid .wp-block-kadence-image{margin:0;}
.tf-culture-grid img{width:100%;height:300px;object-fit:cover;border-radius:16px;display:block;}
@media (max-width:767px){.tf-culture-grid img{height:220px;}}

.tf-careers-jobs{max-width:1000px;margin:0 auto;}
.tf-careers-jobs .tf-filters{margin:0 0 34px;border:0;padding:0;}
.tf-careers-jobs .tf-chiprow{display:flex;flex-wrap:wrap;justify-content:center;padding:0;margin:0 0 16px;border:0;}
.tf-careers-jobs .tf-chiprow:last-child{margin-bottom:0;}
.tf-careers-jobs .tf-chiprow legend{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#67738a;text-align:center;width:100%;margin:0 0 12px;padding:0;float:left;}
.tf-careers-jobs .tf-chip{display:inline-flex;align-items:center;gap:7px;margin:0 9px 9px 0;padding:9px 18px;min-height:40px;border:1.5px solid #dde3ec;border-radius:999px;background:#fff;color:#475067;font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;transition:background-color .15s ease-out,border-color .15s ease-out,color .15s ease-out;}
.tf-careers-jobs .tf-chip span{opacity:.55;font-weight:600;}
.tf-careers-jobs .tf-chip:hover{border-color:#97a2b4;}
.tf-careers-jobs .tf-chip[aria-pressed="true"]{border-color:#011024;background:#011024;color:#fff;}
.tf-careers-jobs .tf-chip-sm{display:inline-flex;align-items:center;margin:0 8px 8px 0;padding:8px 14px;min-height:36px;border:1px solid #dde3ec;border-radius:999px;background:#fff;color:#67738a;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;transition:background-color .15s ease-out,border-color .15s ease-out,color .15s ease-out;}
.tf-careers-jobs .tf-chip-sm:hover{border-color:#97a2b4;}
.tf-careers-jobs .tf-chip-sm[aria-pressed="true"]{border-color:#04529a;background:rgba(4,82,154,.08);color:#04529a;}
.tf-careers-jobs .tf-chip:focus-visible,.tf-careers-jobs .tf-chip-sm:focus-visible,.tf-careers-jobs .tf-job:focus-visible{outline:3px solid #04529a;outline-offset:2px;}
.tf-careers-jobs .tf-joblist{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin:0;padding:0;list-style:none;}
.tf-careers-jobs .tf-joblist>li{margin:0;}
.tf-careers-jobs .tf-job{display:flex;align-items:center;gap:22px;background:#fff;border:1.5px solid #dde3ec;border-radius:14px;padding:22px 26px;text-decoration:none;color:inherit;transition:border-color .18s ease-out,box-shadow .18s ease-out,transform .18s ease-out;}
.tf-careers-jobs .tf-job:hover{border-color:#00b5e6;box-shadow:0 10px 26px rgba(1,16,36,.09);transform:translateY(-2px);color:inherit;}
.tf-careers-jobs .tf-job-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:11px;}
.tf-careers-jobs .tf-job-title{font-size:16.5px;font-weight:800;color:#011024;letter-spacing:-.012em;line-height:1.32;}
.tf-careers-jobs .tf-job-tags{display:flex;flex-wrap:wrap;gap:7px;}
.tf-careers-jobs .tf-job-tag{font-size:11.5px;font-weight:700;color:#475067;background:#eef1f6;border:1px solid #dde3ec;border-radius:999px;padding:5px 11px;}
.tf-careers-jobs .tf-job-cta{flex:none;display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#04529a;}
.tf-careers-jobs .tf-job-empty{border:1.5px dashed #c4ccd9;border-radius:14px;padding:44px 24px;text-align:center;}
.tf-careers-jobs .tf-job-empty b{display:block;font-size:15.5px;font-weight:700;color:#011024;margin-bottom:8px;}
.tf-careers-jobs .tf-job-empty span{font-size:14px;color:#67738a;}
.tf-careers-jobs .tf-job-foot{text-align:center;margin-top:40px;}
.tf-careers-jobs .tf-job-foot a{font-size:14.5px;font-weight:700;color:#04529a;}
.tf-careers-jobs .tf-job-foot p{font-size:12.5px;color:#97a2b4;margin:10px 0 0;}
@media (max-width:599px){.tf-careers-jobs .tf-job{flex-direction:column;align-items:flex-start;gap:14px;padding:20px;}.tf-careers-jobs .tf-job-cta{align-self:flex-start;}}
@media (prefers-reduced-motion:reduce){.tf-careers-jobs .tf-job,.tf-careers-jobs .tf-chip,.tf-careers-jobs .tf-chip-sm{transition:none;}.tf-careers-jobs .tf-job:hover{transform:none;}}
.tf-careers-jobs [hidden]{display:none!important;}

.tf-careers-jobs{width:100%;}
.tf-culture-grid .kt-inside-inner-col{height:100%;}

/* Careers benefits grid: let info-box cards fill the stretched column so
   both cards in a row share one height. Kadence has no native stretch
   control on the info-box itself. */
.tf-benefits-equal .wp-block-kadence-column,
.tf-benefits-equal .kt-inside-inner-col,
.tf-benefits-equal .wp-block-kadence-infobox,
.tf-benefits-equal .kt-blocks-info-box-link-wrap,
.tf-benefits-equal .kt-info-box-wrap{height:100%;}


/* ============================================================
   Mobile header announcement bar
   Source of truth: Appearance > Customize > Header > Mobile > HTML
   (the 'mobile_html_content' element in the mobile Top row).
   The desktop bar lives in the Header Area widget (header1) as native
   Kadence blocks; the Kadence header builder cannot place a widget
   area in the mobile header, so the mobile bar is a small HTML element
   and needs this styling. Values mirror the desktop blocks.
   ============================================================ */
#mobile-header .site-header-top-section-center,
#mobile-header [data-section="kadence_customizer_mobile_html"]{flex:1 1 auto;min-width:0;}
.tf-announce{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 12px;width:100%;text-align:center;line-height:1.35;}
.tf-announce__badge{display:inline-block;padding:1px 15px;border-radius:500px;background:var(--global-palette10,#bde72a);color:var(--global-palette3,#011024);font-size:14px;font-weight:400;}
.tf-announce__text{color:var(--global-palette9,#ffffff);font-size:15px;font-weight:600;letter-spacing:.5px;}
.tf-announce__link{display:inline-block;padding:4px 0;min-height:24px;color:var(--global-palette1,#00b5e6);font-size:14px;font-weight:500;text-decoration:none;}
.tf-announce__link:hover,.tf-announce__link:focus{color:var(--global-palette9,#ffffff);}
.tf-announce__link:focus-visible{outline:2px solid var(--global-palette9,#ffffff);outline-offset:3px;border-radius:3px;}
@media (min-width:782px){.tf-announce{gap:6px 16px;}.tf-announce__badge{font-size:15px;}.tf-announce__text{font-size:16px;}.tf-announce__link{font-size:15px;}}
@media (max-width:479px){.tf-announce{gap:6px 10px;}.tf-announce__badge{font-size:13px;padding:1px 12px;}.tf-announce__text{font-size:14px;letter-spacing:.3px;}.tf-announce__link{font-size:13.5px;}}


/* ---------- tf-floating-widget-stack ----------
   Weglot ships .country-selector.weglot-default{position:fixed;bottom:0;right:40px}
   and the HubSpot chat launcher anchors to the same bottom-right corner, so the two
   floating controls sit on top of each other. Confirmed on iPad portrait (834px).
   Neither plugin exposes a native offset that accounts for the other, so the language
   switcher is lifted clear of the launcher. The selector is aside.country-selector
   (0,2,1) purely to outrank Weglot's own (0,2,0) without !important.
   Scoped to <=1024px, where the collision was reported. Desktop untouched.
   Installed 2026-08-19. Delete this block to revert.                              */
@media (max-width:1024px){
  aside.country-selector.weglot-default{bottom:92px;}
}


/* === LP MOBILE OPTIMISATION (added 2026-08-25) ===
   Scoped to /lp/ landing-page classes only. Remove this whole block to revert.
   1. Product-tour embeds were inset into a laptop mockup at left:15%/width:70%,
      leaving ~240px of usable tour on a 375px phone. Below 767px the mockup is
      hidden and the tour goes full width.
   2. Security Ops 2 heading was position:absolute at a fixed top:50px over a
      fluid image, so it collided with the tour on small screens.
   3. Sticky LP top bars were consuming excessive mobile viewport. === */

@media (max-width:767px){
  /* --- 1. Tour embeds go full width --- */
  .tf-tour-frame > .kt-inside-inner-col > figure.wp-block-kadence-image,
  .tf-so-tourframe > .kt-inside-inner-col > figure.wp-block-kadence-image{ display:none !important; }

  .tf-tour-frame .tf-tour-embed,
  .tf-so-tourframe .tf-so-tourembed{
    position:relative !important; top:auto !important; left:auto !important;
    width:100% !important; height:auto !important;
    aspect-ratio:16/10; min-height:300px;
    border-radius:12px; overflow:hidden;
  }
  .tf-tour-frame .tf-tour-embed iframe,
  .tf-so-tourframe .tf-so-tourembed iframe{
    position:absolute; inset:0; width:100%; height:100%; border:0;
  }

  /* --- 2. Security Ops 2 heading returns to normal flow --- */
  .tf-so-tourframe > .kt-inside-inner-col > .wp-block-kadence-advancedheading:first-child{
    position:static !important; top:auto !important;
    margin:0 0 1rem 0 !important;
  }

  /* --- 3. Compact sticky LP top bars --- */
  .tf-topbar > .kt-row-column-wrap{ padding:.55rem .85rem !important; }
  .tf-topbar figure img{ height:1.5rem !important; }
  .tf-topbar-actions > .kt-inside-inner-col{ justify-content:center; gap:.5rem; }
  .tf-topbar-actions .kb-button,
  .tf-wpill-actions .kb-button{
    padding:.6rem 1.05rem !important; font-size:13.5px !important;
    min-height:44px; display:inline-flex; align-items:center; justify-content:center;
  }
  .tf-wpill-actions > .kt-inside-inner-col{ justify-content:center; gap:.5rem; }
}
/* === end LP MOBILE OPTIMISATION === */


/* --- Legal center: GuardTek regional sub-headings (H3 under the GuardTek H2).
   Appended 2026-09-03 so it wins over the mobile .tf-lc-grouptitle size rule above. --- */
body:is(.page-id-134,.page-id-23931) .tf-lc-subtitle{font-size:1.05rem;color:#2b3547;margin:0 0 16px;}
body:is(.page-id-134,.page-id-23931) .tf-lc-subtitle::after{background:#edf0f5;}
@media all and (max-width:767px){body:is(.page-id-134,.page-id-23931) .tf-lc-subtitle{font-size:1rem;}}

/* TF FAQ accordion (post 18630) - added 2026-09-08, revised for white chevron.
   Cyan hover/open chip + motion + keyboard focus ring. Kadence has no transition
   control, hence the transition rules. The glyph stays Kadence's default #fff.
   Scoped to one block - delete this whole comment block and its rules to revert. */
.kt-accordion-id18630_812770-5a .kt-blocks-accordion-header,
.kt-accordion-id18630_812770-5a .kt-blocks-accordion-icon-trigger,
.kt-accordion-id18630_812770-5a .kt-blocks-accordion-icon-trigger:before,
.kt-accordion-id18630_812770-5a .kt-blocks-accordion-icon-trigger:after{transition:background-color .2s ease,border-color .2s ease,color .2s ease;}
body .kt-accordion-id18630_812770-5a .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger,
body .kt-accordion-id18630_812770-5a .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger,
body .kt-accordion-id18630_812770-5a .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger{background:var(--global-palette1,#00b5e6)!important;}
body:not(.hide-focus-outline) .kt-accordion-id18630_812770-5a .kt-blocks-accordion-header:focus-visible{outline:3px solid var(--global-palette3,#011024);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){.kt-accordion-id18630_812770-5a .kt-blocks-accordion-header,.kt-accordion-id18630_812770-5a .kt-blocks-accordion-icon-trigger,.kt-accordion-id18630_812770-5a .kt-blocks-accordion-icon-trigger:before,.kt-accordion-id18630_812770-5a .kt-blocks-accordion-icon-trigger:after{transition:none;}}


/* TF Key takeaways component - added 2026-09-08. Used by the Key-Takeaways-Blog pattern. */
.tf-key-takeaways{background:var(--global-palette8,#f6f7fa);border:1px solid var(--global-palette11,#e2e6ee);border-radius:13px;padding:24px 28px;margin:32px 0;}
.tf-key-takeaways h2{font-size:20px;line-height:1.35;margin:0 0 12px;}
.tf-key-takeaways ul{margin:0;padding-left:20px;}
.tf-key-takeaways li{margin:0 0 10px;line-height:1.6;}
.tf-key-takeaways li:last-child{margin-bottom:0;}
@media (max-width:767px){.tf-key-takeaways{padding:20px;margin:24px 0;}}


/* TF live status dot - added 2026-09-10. Add the class "tfc-livedot" to any
   eyebrow or inline label to prefix it with a slowly pulsing green dot.
   Reuses the existing tfcGsocPulse keyframe. Delete this block to remove it. */
.tfc-livedot::before{content:"";display:inline-block;width:8px;height:8px;margin-right:9px;border-radius:50%;background:var(--global-palette10,#bde72a);box-shadow:0 0 0 3px rgba(189,231,42,.18);vertical-align:middle;position:relative;top:-1px;animation:tfcGsocPulse 2s ease-in-out infinite;}
@media (prefers-reduced-motion:reduce){.tfc-livedot::before{animation:none;}}


/* TF numbered question card - added 2026-09-10. Add "tfc-numcard" to a Kadence
   column holding: number, title, tag. The number sits left and spans both rows. */
.wp-block-kadence-column.tfc-numcard > .kt-inside-inner-col{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:18px;row-gap:8px;align-content:start;background:#fff;border:1px solid var(--tfc-g200);border-radius:12px;padding:26px 28px;height:100%;}
.tfc-numcard > .kt-inside-inner-col > :first-child{grid-row:1 / span 2;}
.tfc-cardeyebrow.muted{color:var(--tfc-g500);}
@media (max-width:767px){.wp-block-kadence-column.tfc-numcard > .kt-inside-inner-col{padding:22px 20px;column-gap:14px;}}


/* TF pill row, dark-hero variant - added 2026-09-10. Add "on-dark" alongside
   tfc-pills when the row sits on a navy hero or band. */
.tfc-pills.on-dark{gap:12px;}
.tfc-pills.on-dark .tfc-pill{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#a3b0c2;font-size:12.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:10px 20px;}
@media (max-width:767px){.tfc-pills.on-dark{gap:9px;}.tfc-pills.on-dark .tfc-pill{font-size:11.5px;padding:9px 16px;letter-spacing:.06em;}}


/* larger card tag - added 2026-09-10. Opt-in modifier, leaves the 11px default alone. */
.tfc-cardeyebrow.lg{font-size:12.5px;letter-spacing:.1em;line-height:1.2;margin-bottom:0;}

/* --- Posts 2250, 2343, 2040, 2023, 1882 & 8901: fixed-width comparison tables, small-screen sizing (added 2026-09-12) --- */
/* Kadence table column widths are desktop-only, so the 400px sticky first column overflows a phone. */
/* Scoped to this one table id; delete this block to revert. */
@media all and (max-width:767px){
.kb-table-container .kb-table2250_cce607-30 tr > *:nth-child(1),
.kb-table-container .kb-table2343_9222a2-6f tr > *:nth-child(1),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(1),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(1),
.kb-table-container .kb-table1882_d68cd5-26 tr > *:nth-child(1),
.kb-table-container .kb-table8901_167277-44 tr > *:nth-child(1){width:200px;}
.kb-table-container .kb-table2250_cce607-30 tr > *:nth-child(2),
.kb-table-container .kb-table2250_cce607-30 tr > *:nth-child(3),
.kb-table-container .kb-table2250_cce607-30 tr > *:nth-child(4),
.kb-table-container .kb-table2250_cce607-30 tr > *:nth-child(5),
.kb-table-container .kb-table2250_cce607-30 tr > *:nth-child(6),
.kb-table-container .kb-table2343_9222a2-6f tr > *:nth-child(2),
.kb-table-container .kb-table2343_9222a2-6f tr > *:nth-child(3),
.kb-table-container .kb-table2343_9222a2-6f tr > *:nth-child(4),
.kb-table-container .kb-table2343_9222a2-6f tr > *:nth-child(5),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(2),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(3),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(4),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(5),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(6),
.kb-table-container .kb-table2040_9c34b8-22 tr > *:nth-child(7),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(2),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(3),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(4),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(5),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(6),
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:nth-child(7),
.kb-table-container .kb-table1882_d68cd5-26 tr > *:nth-child(2),
.kb-table-container .kb-table1882_d68cd5-26 tr > *:nth-child(3),
.kb-table-container .kb-table1882_d68cd5-26 tr > *:nth-child(4),
.kb-table-container .kb-table1882_d68cd5-26 tr > *:nth-child(5),
.kb-table-container .kb-table8901_167277-44 tr > *:nth-child(2),
.kb-table-container .kb-table8901_167277-44 tr > *:nth-child(3),
.kb-table-container .kb-table8901_167277-44 tr > *:nth-child(4),
.kb-table-container .kb-table8901_167277-44 tr > *:nth-child(5),
.kb-table-container .kb-table8901_167277-44 tr > *:nth-child(6){width:124px;}
.kb-table-container .kb-table2250_cce607-30 th,
.kb-table-container .kb-table2250_cce607-30 td,
.kb-table-container .kb-table2343_9222a2-6f th,
.kb-table-container .kb-table2343_9222a2-6f td,
.kb-table-container .kb-table2040_9c34b8-22 th,
.kb-table-container .kb-table2040_9c34b8-22 td,
.kb-table-container .kb-table2023_6d9d3c-e2 th,
.kb-table-container .kb-table2023_6d9d3c-e2 td,
.kb-table-container .kb-table1882_d68cd5-26 th,
.kb-table-container .kb-table1882_d68cd5-26 td,
.kb-table-container .kb-table8901_167277-44 th,
.kb-table-container .kb-table8901_167277-44 td{padding-left:12px;padding-right:12px;}
/* stack the feature label above the TrackTik value inside the sticky first cell */
.kb-table-container .kb-table2250_cce607-30 tr > *:first-child .kt-row-column-wrap,
.kb-table-container .kb-table2343_9222a2-6f tr > *:first-child .kt-row-column-wrap,
.kb-table-container .kb-table2040_9c34b8-22 tr > *:first-child .kt-row-column-wrap,
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:first-child .kt-row-column-wrap,
.kb-table-container .kb-table1882_d68cd5-26 tr > *:first-child .kt-row-column-wrap,
.kb-table-container .kb-table8901_167277-44 tr > *:first-child .kt-row-column-wrap{grid-template-columns:minmax(0,1fr);}
.kb-table-container .kb-table2250_cce607-30 tr > *:first-child .kt-inside-inner-col,
.kb-table-container .kb-table2343_9222a2-6f tr > *:first-child .kt-inside-inner-col,
.kb-table-container .kb-table2040_9c34b8-22 tr > *:first-child .kt-inside-inner-col,
.kb-table-container .kb-table2023_6d9d3c-e2 tr > *:first-child .kt-inside-inner-col,
.kb-table-container .kb-table1882_d68cd5-26 tr > *:first-child .kt-inside-inner-col,
.kb-table-container .kb-table8901_167277-44 tr > *:first-child .kt-inside-inner-col{border-right-width:0;}
}


/* Page 2566 Enterprise Security - Solutions grid reuses the .ws card icon system.
   Adds the one icon class the set was missing; the SVG already shipped in tf-ws-icons.
   Remove this single rule to revert. */
.ws .ws-ico-desktop-global::before { background-image: url("/wp-content/uploads/tf-ws-icons/ws-desktop-global-white.svg"), linear-gradient(150deg,#04529a 0%,#00b5e6 140%); }


/* Page 2566 Enterprise Security - testimonial accent bar.
   Overrides the Kadence global blockquote border (palette4 navy) with the brand
   signal cyan, scoped to this page's quote only. Remove this rule to revert. */
.es .es-quote { border-left-color: #00b5e6; }


/* ============================================================================
   18048 Mobile Patrol - 'How a patrol runs' step rail.
   Numbers move out of the cards onto a connector rail above the grid, and each
   card becomes icon-left / text-right. No markup change: the .tfc-stepnum and
   .tfc-stepico spans already exist in the block.
   SCOPED TO THIS PAGE ONLY. .tfc-step* is shared with 18034, 18054, 18058,
   18060 and 22547, which are intentionally left on the stacked layout.
   Delete this whole block to revert. ======================================= */
body.page-id-18048 .tfc-steps{--tfc-railgap:40px;}
body.page-id-18048 .tfc-steps .kt-row-column-wrap{position:relative;gap:18px;}
/* Kadence sets position:relative on .kt-inside-inner-col, so .tfc-stepnum anchors to the
   CARD, not the column. Draw the rail per column and pull the number up out of the card by
   exactly --tfc-railgap, so the line and the numbers share one origin and cannot drift. */
body.page-id-18048 .tfc-step{position:relative;padding-top:var(--tfc-railgap);}
body.page-id-18048 .tfc-step::before{content:"";position:absolute;top:14px;left:-10px;right:-10px;height:2px;background:rgba(255,255,255,.18);}
body.page-id-18048 .tfc-step:first-child::before{left:0;}
body.page-id-18048 .tfc-step:last-child::before{right:0;}
body.page-id-18048 .tfc-stepnum{position:absolute;top:calc(var(--tfc-railgap) * -1);left:50%;transform:translateX(-50%);width:30px;height:30px;line-height:30px;font-size:13px;z-index:1;}
body.page-id-18048 .tfc-step>.kt-inside-inner-col{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:start;padding:20px 18px;}
body.page-id-18048 .tfc-stephead{position:static;grid-row:1 / span 2;margin:0;min-height:0;}
body.page-id-18048 .tfc-steptitle,body.page-id-18048 .tfc-stepbody{grid-column:2;}
body.page-id-18048 .tfc-stepico{width:26px;height:26px;}
/* below the 4-across breakpoint the rail is meaningless: revert to the shared stacked card */
@media (max-width:1024px){
  body.page-id-18048 .tfc-step::before{display:none;}
  body.page-id-18048 .tfc-step{padding-top:0;}
  body.page-id-18048 .tfc-stepnum{position:static;top:auto;left:auto;transform:none;width:24px;height:24px;line-height:24px;font-size:12px;}
  body.page-id-18048 .tfc-step>.kt-inside-inner-col{display:block;padding:24px 18px;}
  body.page-id-18048 .tfc-stephead{position:relative;display:flex;align-items:center;gap:10px;min-height:26px;margin:0 0 12px;}
  body.page-id-18048 .tfc-stepico{width:22px;height:22px;}
}

/* ============================================================================
   Proof strip (.tfc-proof) - light tinted band, centred eyebrow, three items of
   icon-left + title + sub, separated by vertical hairlines.
   Reusable: .tfc-band-tint on the outer row, .tfc-proof on the 3-col grid row,
   .tfc-proofcol on each column, .tfc-ico-* on the icon div for the glyph.
   Dividers collapse to top borders below 1025px where the columns stack.
   ========================================================================= */
.tfc-band-tint{background:#f1f6fd!important;}
.tfc-proof .kt-row-column-wrap{gap:0!important;}
.tfc-proofcol>.kt-inside-inner-col{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:start;padding:2px 30px;}
.tfc-proofcol+.tfc-proofcol>.kt-inside-inner-col{border-left:1px solid var(--tfc-g200);}
.tfc-proofico{grid-row:1 / span 2;width:30px;height:30px;position:relative;}
.tfc-proofico::before{content:"";position:absolute;inset:0;background:var(--tfc-blue);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-prooftitle{grid-column:2;font-weight:700;font-size:15px;line-height:1.3;color:var(--tfc-navy);margin:0 0 4px;}
.tfc-proofbody{grid-column:2;font-size:13.5px;line-height:1.55;color:var(--tfc-g500);margin:0;}
@media (max-width:1024px){
 .tfc-proofcol>.kt-inside-inner-col{padding:16px 0;}
 .tfc-proofcol+.tfc-proofcol>.kt-inside-inner-col{border-left:0;border-top:1px solid var(--tfc-g200);}
}

/* ---- arrow link: inline text CTA used under capability copy ---------------- */
.tfc-arrowlinkwrap{margin:20px 0 0;}
.tfc-arrowlink{display:inline-block;font-size:15px;font-weight:700;color:var(--tfc-blue-text);text-decoration:none;}
.tfc-arrowlink::after{content:" \2192";}
.tfc-arrowlink:hover,.tfc-arrowlink:focus{color:var(--tfc-cyan6);text-decoration:underline;}

/* ============================================================================
   18048 Transparency row - image LEFT on desktop.
   The shared .tfc-cap-flip rule uses *:first-child / *:last-child, which lands on
   the <style> element Kadence injects as the FIRST child of .kt-row-column-wrap,
   so it is inert. Target the stable per-column uniqueID classes instead.
   DOM order stays copy-then-image, so mobile stacks the heading first and crawlers
   read the copy before the screenshot.
   ========================================================================= */
@media (min-width:1025px){
 body.page-id-18048 .kadence-column18048_mpSplitT,
 body.page-id-18048 .kadence-column18048_mpCap2T{order:2;}
 body.page-id-18048 .kadence-column18048_mpSplitI,
 body.page-id-18048 .kadence-column18048_mpCap2I{order:1;}
}

/* =========================================================================
   FAQ even-height accordion (.tfc-faq-even) - added 2026-09-16.
   Kadence Accordion has no height control, so in a two-column FAQ grid a
   one-line question renders a shorter box than a two-line one. This sets a
   two-line floor on the closed question so every FAQ box matches. Only
   applies where the grid is side by side (1025px and up); min-height never
   clips, so a longer question simply grows.
   Reusable: add the tfc-faq-even class to any Kadence Accordion block.
   Revert: delete this comment and the rule below, and remove the class.
   ========================================================================= */
@media (min-width:1025px){
 .tfc-faq-even .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{min-height:5.3em;}
}

/* =========================================================================
   Security Operations final CTA - split layout (row 18066_soCta split), 2026-09-16.
   The row keeps the shared .tfc-band-cta gradient so the brand CTA colour stays
   in one place. That class also caps every inner column at 760px and centres
   the button, which is right for the centred CTA pattern and wrong for this
   two-column layout, so both are released for this row only.
   Revert: delete this comment and the two rules below.
   ========================================================================= */
.kb-row-layout-id18066_soCta .kt-inside-inner-col{max-width:none;margin-left:0;margin-right:0;}
.kb-row-layout-id18066_soCta .kb-buttons-wrap{justify-content:flex-start;}

/* =========================================================================
   How-it-works flow (.tfc-flow) - added 2026-09-16.
   Three numbered steps, each with a round icon tile, joined by a dotted
   connector on desktop. Kadence has no round-tile, step-number or connector
   control, so these rules add them. Reusable: tfc-flow on the 3-column row,
   tfc-flowstep on each column, tfc-flowtile plus a tfc-ico-* class on the
   icon element. Number badge uses cyan6 on white for a 5.4:1 contrast ratio.
   Revert: delete this comment, the rules below, and the classes in the page.
   ========================================================================= */
.tfc-flow .kt-row-column-wrap{gap:20px;}
.tfc-flowstep>.kt-inside-inner-col{position:relative;}
.tfc-flowtile{width:62px;height:62px;border-radius:50%;background:#fff;border:1.5px solid var(--tfc-g200);box-shadow:0 10px 22px rgba(1,16,36,.07);position:relative;margin:0 0 18px;}
.tfc-flowtile::before{content:"";position:absolute;inset:17px;background:var(--tfc-blue);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-flowhead{display:flex;align-items:center;gap:10px;margin:0 0 8px;}
.tfc-flownum{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 24px;border-radius:50%;background:var(--tfc-cyan6);color:#fff;font-size:12px;font-weight:700;line-height:1;}
.tfc-flowname{font-size:17px;font-weight:700;line-height:1.2;color:var(--tfc-navy);}
.tfc-flowp{font-size:14px;line-height:1.6;color:var(--tfc-g500);margin:0;}
@media (min-width:1025px){
 .tfc-flowstep:not(:last-child)>.kt-inside-inner-col::after{content:"";position:absolute;top:31px;left:74px;right:-20px;border-top:2px dotted var(--tfc-g200);}
}

/* =========================================================================
   Value strip (.tfc-vhead) - added 2026-09-16.
   Icon-left value props used as a shallow strip under a hero. Kadence has no
   round icon tile, so these rules add it; the column dividers and spacing are
   native Kadence column border settings, not CSS. Reusable: tfc-vhead on the
   wrapper, tfc-vico plus a tfc-ico-* class on the icon span, tfc-vt and tfc-vs
   on the two text spans.
   Revert: delete this comment, the rules below, and the classes in the page.
   ========================================================================= */
.tfc-vhead{display:flex;align-items:center;gap:14px;}
.tfc-vico{width:52px;height:52px;flex:none;border-radius:50%;background:#fff;border:1px solid var(--tfc-g200);box-shadow:0 6px 16px rgba(1,16,36,.05);position:relative;}
.tfc-vico::before{content:"";position:absolute;inset:14px;background:var(--tfc-blue);-webkit-mask:var(--tfc-i) center/contain no-repeat;mask:var(--tfc-i) center/contain no-repeat;}
.tfc-vt{display:block;font-size:15px;font-weight:700;line-height:1.25;color:var(--tfc-navy);}
.tfc-vs{display:block;font-size:13.5px;line-height:1.45;color:var(--tfc-g500);margin-top:3px;}

/* Desktop-only line break (br.tfc-brd) - added 2026-09-16.
   Kadence has no line-break control, so a <br class="tfc-brd"> sets the wrap
   point on wide screens and collapses below 1025px so narrow screens wrap
   naturally with no short orphan lines. Reusable on any heading.
   Revert: delete this comment, the rule below, and the br in the page. */
@media (max-width:1024px){br.tfc-brd{display:none;}}

/* CTA proof stack link (.tfc-ctaproof) - added 2026-09-16.
   Keeps the Trust-page link white on the dark CTA band instead of the theme
   link blue, which would fail contrast there. Revert: delete these two rules. */
.tfc-ctaproof a{color:#fff;text-decoration:none;}
.tfc-ctaproof a:hover,.tfc-ctaproof a:focus-visible{color:var(--tfc-cyan4);text-decoration:underline;text-underline-offset:3px;}
.tfc-ctaproof .kt-svg-icon-list-text{letter-spacing:.12em;}


/* === HubSpot form TEST: first/last name pairing (.tf-form-namepair) - guide 25086 ONLY ===
   Look-and-feel test on /resources/guides/ahs-form-test/ (HubSpot form 3acd8933).
   The form column on 25086 carries 'tf-base-form tf-form-namepair'. tf-base-form pulls in
   the existing shared light-card styles (unchanged). This block only changes the grid:
   First and Last name share a row, every other field is full width. Mobile (<=767px)
   still stacks via the shared tf-base-form rule. Scoped by class, not by Kadence
   uniqueID, because 25086 was cloned from guide 1912 and shares its uniqueIDs.
   Installed 2026-09-25. Revert: remove both classes from the 25086 form column and
   delete this block. */
.tf-base-form.tf-form-namepair form .hs-form-field{ grid-column:1 / -1; }
.tf-base-form.tf-form-namepair form .hs_firstname{ grid-column:1; }
.tf-base-form.tf-form-namepair form .hs_lastname{ grid-column:2; }
/* === end HubSpot form TEST (.tf-form-namepair) === */
