@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Thin.woff2") format("woff2");font-style:normal;font-weight:100;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-ExtraLight.woff2") format("woff2");font-style:normal;font-weight:200;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Light.woff2") format("woff2");font-style:normal;font-weight:300;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Text.woff2") format("woff2");font-style:normal;font-weight:450;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Medium.woff2") format("woff2");font-style:normal;font-weight:500;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-SemiBold.woff2") format("woff2");font-style:normal;font-weight:600;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Bold.woff2") format("woff2");font-style:normal;font-weight:700;font-display:swap}

:root{
  --brand:#2563EB;
  --brand-2:#1D4ED8;
  --brand-accent:#60A5FA;
  --brand-pale:#E9F1FF;
  --brand-wash:#F5F9FF;
  --brand-navy:#000000;
  --brand-gold:#EAB308;
  --brand-gray:#F1F5F9;
  --green:#16A34A;
  --yellow:#EAB308;
  --red:#DC2626;
  --repair:#EAB308;
  --muted:#64748B;
  --border:#E5E7EB;
  --border-strong:#CFD8E3;
  --ink:#07152A;
  --paper:#F6F9FC;
  --white:#FFFFFF;
  --trivsel-font-ui:"IBM Plex Sans",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --trivsel-font-heading:var(--trivsel-font-ui);
  --shell:min(1460px,calc(100vw - 40px));
  --radius-sm:8px;
  --radius:10px;
  --radius-lg:14px;
  --shadow:0 5px 22px rgba(23,32,51,.06);
  --shadow-hover:0 4px 12px rgba(23,137,245,.09);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--ink);font-family:var(--trivsel-font-ui);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button{cursor:pointer}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.tv-shell{width:var(--shell);margin-inline:auto}
.tv-skip{position:fixed;top:10px;left:10px;z-index:1000;background:#000;color:#fff;padding:10px 14px;border-radius:8px;transform:translateY(-180%)}
.tv-skip:focus{transform:none}

.tv-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
.tv-header__row{height:76px;display:flex;align-items:center;gap:30px}
.tv-brand{display:inline-flex;align-items:center;position:relative;overflow:hidden}
.tv-brand__full-logo{height:46px;width:auto;max-width:180px;object-fit:contain}
.tv-brand--official::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.95) 50%,transparent 70%);background-size:250% 100%;background-position:-150% 0;-webkit-mask-image:url("/static/img/brand/trivsel-full-logo.png");-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:left center;mask-image:url("/static/img/brand/trivsel-full-logo.png");mask-size:contain;mask-repeat:no-repeat;mask-position:left center;animation:trivsel-logo-sheen 8s ease-in-out infinite;pointer-events:none}
@keyframes trivsel-logo-sheen{0%,85%{background-position:-150% 0}95%,100%{background-position:150% 0}}

.tv-nav{margin-left:auto;display:flex;align-items:center;gap:6px}
.tv-nav>a:not(.tv-button),.tv-nav__search{min-height:40px;padding:0 11px;display:inline-flex;align-items:center;border:1px solid transparent;border-radius:9px;background:#fff;color:#25334A;font-size:13px;font-weight:700;transition:all .15s ease}
.tv-nav>a:not(.tv-button):hover,.tv-nav>a:not(.tv-button):focus-visible,.tv-nav__search:hover,.tv-nav__search:focus-visible{color:#fff;background:var(--brand);border-color:var(--brand);outline:none;box-shadow:0 5px 12px rgba(37,99,235,.14);transform:translateY(-1px)}
.tv-nav__search{width:40px;justify-content:center;font-size:20px;border-color:var(--border)}
.tv-nav__cta{margin-left:4px}
.tv-menu-toggle{display:none;margin-left:auto;width:42px;height:42px;border:1px solid var(--border-strong);border-radius:9px;background:#fff;padding:10px}
.tv-menu-toggle span:not(.sr-only){display:block;height:2px;background:#0B172C;margin:4px 0}

.tv-search-panel{position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--border);box-shadow:0 8px 24px rgba(15,23,42,.12)}
.tv-search-panel__inner{padding:22px 0 26px}
.tv-search-panel label{display:block;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--brand);margin-bottom:8px}
.tv-search-panel__control{display:flex;gap:8px}
.tv-search-panel input{flex:1;height:48px;border:1px solid var(--border-strong);border-radius:9px;padding:0 14px;outline:none}
.tv-search-panel input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.tv-search-panel__close{border:1px solid var(--border-strong);border-radius:9px;background:#fff;padding:0 16px;font-weight:700}
.tv-search-panel__results{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.tv-search-result{border:1px solid var(--border);border-radius:9px;padding:12px;background:#fff;font-size:13px}
.tv-search-result:hover{border-color:#9ECFEE;background:#FBFDFF;box-shadow:var(--shadow-hover)}

.tv-button{min-height:42px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #C9DBE5;border-radius:9px;background:#fff;color:#07152A;font-size:13px;font-weight:700;box-shadow:none;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .15s ease}
.tv-button:hover,.tv-button:focus-visible{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 5px 12px rgba(37,99,235,.14);transform:translateY(-1px);outline:2px solid var(--brand);outline-offset:2px}
.tv-button--blue{background:var(--brand);border-color:var(--brand);color:#fff}
.tv-button--blue:hover,.tv-button--blue:focus-visible{background:var(--brand-2);border-color:var(--brand-2)}
.tv-button--white{background:#fff;color:#08162A;border-color:#fff}
.tv-button--white:hover{background:#E9F1FF;color:#0B172C;border-color:#fff}
.tv-button--ghost-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}
.tv-button--ghost-light:hover{background:#fff;color:#0B172C}
.tv-actions{display:flex;gap:10px;flex-wrap:wrap}

.tv-eyebrow,.tv-card-kicker{margin:0 0 12px;color:var(--brand);font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.tv-eyebrow--light{color:#DBEAFE}
h1,h2,h3{font-family:var(--trivsel-font-heading);margin-top:0;color:var(--ink)}
h1{font-size:clamp(46px,5.5vw,86px);line-height:.97;letter-spacing:-.045em}
h2{font-size:clamp(34px,3.6vw,58px);line-height:1.02;letter-spacing:-.035em}
h3{font-size:18px;line-height:1.18;letter-spacing:-.02em}
p{line-height:1.58}
.tv-hero__lead,.tv-page-hero__lead{font-size:18px;color:#536178;max-width:720px}

.tv-hero{padding:34px 0 42px;background:linear-gradient(180deg,#fff 0%,#F8FBFF 100%)}
.tv-hero__grid,.tv-page-hero__grid{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);gap:26px;align-items:stretch}
.tv-hero__copy{padding:56px 24px 48px 8px;align-self:center}
.tv-hero h1 span{color:var(--brand)}
.tv-hero__lead{margin:22px 0 28px}
.tv-media-card{margin:0;border:1px solid #DCE6F0;border-radius:14px;overflow:hidden;background:#fff;box-shadow:var(--shadow)}
.tv-media-card img{width:100%;height:100%;object-fit:cover}
.tv-hero__media{min-height:560px}

.tv-capability-strip{border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:#fff}
.tv-capability-strip__grid{display:grid;grid-template-columns:repeat(4,1fr)}
.tv-capability-strip a{padding:20px 22px;border-right:1px solid var(--border);display:grid;grid-template-columns:auto 1fr;column-gap:12px;row-gap:2px;transition:background .15s ease}
.tv-capability-strip a:last-child{border-right:0}
.tv-capability-strip a:hover{background:#F5F9FF}
.tv-capability-strip span{grid-row:1/3;color:var(--brand);font-size:11px;font-weight:800}
.tv-capability-strip strong{font-family:var(--trivsel-font-heading);font-size:15px}
.tv-capability-strip small{color:var(--muted);font-size:12px}

.tv-section{padding:88px 0;background:#fff}
.tv-section--soft{background:#F6F9FC;border-block:1px solid var(--border)}
.tv-section-head{max-width:920px;margin-bottom:34px}
.tv-section-head h2{margin-bottom:14px}
.tv-section-head>p:last-child{color:#65728A;font-size:16px}
.tv-section-head--row{max-width:none;display:grid;grid-template-columns:1fr .8fr;gap:60px;align-items:end}
.tv-section-head--row>p{margin:0}

.tv-feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tv-feature-grid--4{grid-template-columns:repeat(4,1fr)}
.tv-feature-card,.tv-module-grid article,.tv-role-grid article{border:1px solid var(--border);border-radius:10px;background:#fff;padding:22px;min-height:220px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.tv-feature-card:hover,.tv-module-grid article:hover,.tv-role-grid article:hover{border-color:#9ECFEE;background:#FBFDFF;box-shadow:0 4px 12px rgba(23,137,245,.09);transform:translateY(-1px)}
.tv-feature-card p,.tv-module-grid p,.tv-role-grid p{font-size:13px;color:#67758B}
.tv-feature-card a{display:inline-block;margin-top:12px;color:var(--brand);font-size:12px;font-weight:800}
.tv-icon-tile{width:38px;height:38px;display:grid;place-items:center;border-radius:8px;background:var(--brand-pale);color:var(--brand);font-size:18px;font-weight:800;margin-bottom:28px}

.tv-story-split{display:grid;grid-template-columns:1.08fr .92fr;gap:48px;align-items:center}
.tv-story-split__media{min-height:520px}
.tv-story-split__copy h2{margin-bottom:16px}
.tv-story-split__copy>p:not(.tv-eyebrow){font-size:17px;color:#5C6A80}
.tv-proof-list{margin:30px 0;display:grid;gap:0;border-top:1px solid var(--border)}
.tv-proof-list>div{display:grid;grid-template-columns:38px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid var(--border)}
.tv-proof-list span{color:var(--brand);font-size:11px;font-weight:800}
.tv-proof-list p{margin:0;font-size:13px;color:#66758A}
.tv-proof-list strong{color:#122039}
.tv-text-link{color:var(--brand);font-weight:800;font-size:13px}

.tv-band{padding:66px 0}
.tv-band--blue{background:var(--brand);color:#fff}
.tv-band--dark{background:#061224;color:#fff}
.tv-band h2{color:#fff;margin:0}
.tv-band p{color:#DDE9FA}
.tv-band__grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.tv-band__grid>div:last-child{max-width:620px}
.tv-band .tv-button{margin-top:12px}

.tv-path-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--border);border-left:1px solid var(--border)}
.tv-path-grid>a,.tv-path-grid>article{padding:24px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:220px;background:#fff;transition:all .15s ease}
.tv-path-grid>a:hover{background:#FBFDFF;box-shadow:var(--shadow-hover);transform:translateY(-1px)}
.tv-path-grid span{display:block;color:var(--brand);font-size:11px;font-weight:800;margin-bottom:42px}
.tv-path-grid p{font-size:13px;color:#67758B}

.tv-cta{padding:60px 0;background:var(--brand);color:#fff}
.tv-cta h2{color:#fff;margin:0;max-width:800px}
.tv-cta__inner{display:flex;align-items:center;justify-content:space-between;gap:40px}

.tv-page-hero{padding:42px 0 50px;background:linear-gradient(180deg,#fff,#F8FBFF)}
.tv-page-hero__copy{align-self:center;padding:48px 16px 48px 0}
.tv-page-hero__copy h1{font-size:clamp(46px,4.8vw,76px)}
.tv-page-hero__media{min-height:520px}
.tv-page-hero--image{padding-bottom:48px}
.tv-page-hero__image-wrap{position:relative;border-radius:14px;overflow:hidden;min-height:620px;background:#061224}
.tv-page-hero__image-wrap>img{width:100%;height:620px;object-fit:cover;opacity:.82}
.tv-page-hero__image-wrap::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,12,27,.83) 0%,rgba(3,12,27,.47) 44%,rgba(3,12,27,.05) 78%)}
.tv-page-hero__image-wrap--people>img{object-position:center}
.tv-page-hero__overlay{position:absolute;z-index:2;left:56px;bottom:58px;max-width:760px;color:#fff}
.tv-page-hero__overlay h1{color:#fff;font-size:clamp(44px,5vw,78px)}
.tv-page-hero__overlay p:last-child{max-width:660px;color:#E4EDF8;font-size:17px}

.tv-module-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tv-module-grid article{min-height:235px}
.tv-flow{display:grid;grid-template-columns:repeat(9,auto);align-items:center;justify-content:space-between;gap:10px}
.tv-flow>div{width:180px;min-height:126px;border:1px solid var(--border);border-radius:10px;padding:18px;background:#fff}
.tv-flow span{display:block;color:var(--brand);font-size:11px;font-weight:800;margin-bottom:26px}
.tv-flow strong{display:block;font-family:var(--trivsel-font-heading)}
.tv-flow small{display:block;color:#718096;margin-top:4px}
.tv-flow i{font-style:normal;color:#8AA0B9}

.tv-industry-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.tv-industry-card{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff;display:grid;grid-template-columns:44% 56%;min-height:310px;transition:all .15s ease}
.tv-industry-card:hover{border-color:#9ECFEE;box-shadow:var(--shadow-hover);transform:translateY(-1px)}
.tv-industry-card>img{width:100%;height:100%;object-fit:cover;min-height:310px}
.tv-industry-card>div{padding:26px}
.tv-industry-card h3{font-size:22px;margin-bottom:10px}
.tv-industry-card p:not(.tv-card-kicker){font-size:13px;color:#64748B}
.tv-industry-card a{color:var(--brand);font-size:12px;font-weight:800}

.tv-company-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px}
.tv-company-grid h2{font-size:clamp(40px,4vw,64px)}
.tv-principles{border-top:1px solid var(--border)}
.tv-principles article{display:grid;grid-template-columns:46px 1fr;gap:16px;padding:22px 0;border-bottom:1px solid var(--border)}
.tv-principles article>span{color:var(--brand);font-size:11px;font-weight:800}
.tv-principles h3{margin-bottom:5px}
.tv-principles p{grid-column:2;margin:0;color:#66758A;font-size:13px}
.tv-role-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}

.tv-contact-hero{display:grid;grid-template-columns:1fr .9fr;gap:40px;align-items:center}
.tv-contact-hero>div{padding:40px 0}
.tv-contact-hero__media{min-height:480px}
.tv-contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tv-contact-grid article{background:#fff;border:1px solid var(--border);border-radius:12px;padding:28px;min-height:310px}
.tv-contact-grid h2{font-size:26px}
.tv-contact-grid p:not(.tv-card-kicker){color:#64748B;font-size:14px}
.tv-contact-grid .tv-button{margin-top:10px}
.tv-footer{background:#020A16;color:#fff;padding-top:62px}
.tv-footer__top{display:grid;grid-template-columns:.8fr 1.2fr;gap:80px}
.tv-footer__brand-block p{color:#AFC0D4;max-width:360px}
.tv-footer__logo{width:150px;filter:brightness(0) invert(1);margin-bottom:18px}
.tv-footer__links{display:grid;grid-template-columns:repeat(4,1fr);gap:32px}
.tv-footer__links h2{color:#fff;font-family:var(--trivsel-font-ui);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.tv-footer__links a{display:block;color:#B8C7DA;font-size:12px;margin:10px 0}
.tv-footer__links a:hover{color:#fff}
.tv-footer__bottom{margin-top:48px;padding:20px 0 26px;border-top:1px solid rgba(255,255,255,.12);display:flex;justify-content:space-between;color:#8498AF;font-size:11px}

@media (max-width:1100px){
  :root{--shell:min(100% - 28px,1000px)}
  .tv-menu-toggle{display:block}
  .tv-nav{display:none;position:absolute;left:14px;right:14px;top:68px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px rgba(15,23,42,.12);padding:12px;flex-direction:column;align-items:stretch}
  .tv-nav.is-open{display:flex}
  .tv-nav>a:not(.tv-button),.tv-nav__search{width:100%;justify-content:flex-start}
  .tv-hero__grid,.tv-page-hero__grid,.tv-story-split,.tv-company-grid,.tv-contact-hero,.tv-footer__top{grid-template-columns:1fr}
  .tv-hero__media,.tv-page-hero__media,.tv-story-split__media{min-height:460px}
  .tv-feature-grid,.tv-module-grid,.tv-role-grid{grid-template-columns:repeat(2,1fr)}
  .tv-path-grid{grid-template-columns:repeat(2,1fr)}
  .tv-industry-card{grid-template-columns:1fr}
  .tv-industry-card>img{height:280px;min-height:0}
  .tv-flow{grid-template-columns:1fr;gap:8px}
  .tv-flow>div{width:100%}
  .tv-flow i{transform:rotate(90deg);justify-self:center}
  .tv-footer__links{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:720px){
  :root{--shell:calc(100vw - 24px)}
  .tv-header__row{height:66px}
  .tv-brand__full-logo{height:38px;max-width:150px}
  .tv-hero{padding-top:14px}
  .tv-hero__copy,.tv-page-hero__copy{padding:36px 0 18px}
  .tv-hero__media,.tv-page-hero__media,.tv-story-split__media,.tv-contact-hero__media{min-height:320px}
  h1{font-size:clamp(42px,13vw,62px)}
  h2{font-size:clamp(32px,10vw,48px)}
  .tv-hero__lead,.tv-page-hero__lead{font-size:16px}
  .tv-capability-strip__grid,.tv-feature-grid,.tv-module-grid,.tv-path-grid,.tv-role-grid,.tv-contact-grid{grid-template-columns:1fr}
  .tv-capability-strip a{border-right:0;border-bottom:1px solid var(--border)}
  .tv-section{padding:64px 0}
  .tv-section-head--row,.tv-band__grid{grid-template-columns:1fr;gap:20px}
  .tv-industry-grid{grid-template-columns:1fr}
  .tv-page-hero__image-wrap,.tv-page-hero__image-wrap>img{min-height:560px;height:560px}
  .tv-page-hero__overlay{left:24px;right:24px;bottom:28px}
  .tv-page-hero__overlay h1{font-size:44px}
  .tv-cta__inner{align-items:flex-start;flex-direction:column}
  .tv-footer__links{grid-template-columns:1fr 1fr}
  .tv-footer__bottom{flex-direction:column;gap:8px}
  .tv-search-panel__results{grid-template-columns:1fr}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .tv-brand--official::after{display:none;animation:none}
  *,*::before,*::after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}
}

/* ==========================================================================
   STABLE MARKETING CONTRACT + PRODUCT VISUAL TOKENS
   ========================================================================== */

:root {
  --brand: #2563EB;
  --brand-accent: #60A5FA;
  --brand-pale: #E9F1FF;
  --brand-navy: #000000;
  --brand-gold: #EAB308;
  --border: #E5E7EB;
  --tv-blue: #2563EB;
}

.tv-button:hover,
.tv-button:focus-visible {
  background: var(--brand);
  border-color: var(--brand);
  outline: 2px solid var(--brand);
  outline-offset: 2px;
  transform: translateY(-1px);
}

.tv-button,
.tv-search-panel input {
  border-radius: 9px;
}

.tv-feature-card,
.tv-module-grid article,
.tv-resource-grid a {
  border-radius: 10px;
}

.tv-feature-card:hover,
.tv-module-grid article:hover,
.tv-resource-grid a:hover {
  box-shadow: 0 4px 12px rgba(23, 137, 245, 0.09);
  transform: translateY(-1px);
}

.tv-brand--official::after {
  animation: trivsel-logo-sheen 8s ease-in-out infinite;
}

.tv-utility {
  background: #F1F5F9;
  border-bottom: 1px solid #E5E7EB;
}

.tv-utility__row {
  min-height: 30px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.tv-utility__row nav {
  display: flex;
  align-items: center;
  gap: 4px;
}

.tv-utility__row a {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 7px;
  color: #56657A;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
  transition: background .15s ease, color .15s ease;
}

.tv-utility__row a:hover,
.tv-utility__row a:focus-visible {
  background: #E9F1FF;
  color: #2563EB;
  outline: none;
}

.tv-utility__home {
  color: #07152A !important;
  font-weight: 800 !important;
}

.tv-discovery {
  padding: 62px 0;
  background: #2563EB;
  color: #FFFFFF;
}

.tv-discovery__grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 70px;
  align-items: start;
}

.tv-discovery h2 {
  margin-bottom: 14px;
  color: #FFFFFF;
  font-size: clamp(36px, 4vw, 60px);
}

.tv-discovery__intro > p:last-child {
  max-width: 500px;
  color: #DBEAFE;
}

.tv-discovery__links {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  border-top: 1px solid rgba(255,255,255,.22);
  border-left: 1px solid rgba(255,255,255,.22);
}

.tv-discovery__links a {
  min-height: 66px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-right: 1px solid rgba(255,255,255,.22);
  border-bottom: 1px solid rgba(255,255,255,.22);
  color: #FFFFFF;
  font-size: 12px;
  font-weight: 700;
  transition: background .15s ease, transform .15s ease;
}

.tv-discovery__links a:hover,
.tv-discovery__links a:focus-visible {
  background: rgba(255,255,255,.12);
  transform: translateY(-1px);
  outline: 2px solid #FFFFFF;
  outline-offset: -2px;
}

.tv-discovery__links span {
  color: #BFDBFE;
  font-size: 10px;
  font-weight: 800;
}

.tv-resource-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid #E5E7EB;
  border-left: 1px solid #E5E7EB;
}

.tv-resource-grid a {
  min-height: 180px;
  display: flex;
  flex-direction: column;
  padding: 22px;
  border-right: 1px solid #E5E7EB;
  border-bottom: 1px solid #E5E7EB;
  background: #FFFFFF;
  transition:
    background .15s ease,
    border-color .15s ease,
    box-shadow .15s ease,
    transform .15s ease;
}

.tv-resource-grid span {
  margin-bottom: 44px;
  color: #2563EB;
  font-size: 10px;
  font-weight: 800;
}

.tv-resource-grid strong {
  font-family: var(--trivsel-font-heading);
  font-size: 15px;
}

.tv-resource-grid small {
  margin-top: 6px;
  color: #64748B;
  line-height: 1.5;
}

@media (max-width: 760px) {
  .tv-utility__row {
    overflow-x: auto;
  }

  .tv-utility__row nav {
    flex: 0 0 auto;
  }

  .tv-discovery__grid,
  .tv-discovery__links,
  .tv-resource-grid {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tv-brand--official::after {
    display: none;
    animation: none;
  }
}

.tv-reveal {
  opacity: 0;
  transform: translateY(8px);
}

.tv-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
  transition: opacity .35s ease, transform .35s ease;
}

@media (prefers-reduced-motion: reduce) {
  .tv-reveal,
  .tv-reveal.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
  }
}


/* ==========================================================================
   APPROVED TRIVSEL GLOBAL HEADER
   ========================================================================== */

.tv-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255,255,255,.98);
  border-bottom: 1px solid #E5E7EB;
  backdrop-filter: blur(14px);
}

.tv-header__row {
  min-height: 86px;
  display: flex;
  align-items: center;
  gap: 32px;
}

.tv-brand {
  flex: 0 0 auto;
  position: relative;
}

.tv-brand__full-logo {
  display: block;
  width: auto;
  height: 48px;
  max-width: 190px;
}

.tv-nav {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 7px;
}

.tv-nav__home,
.tv-nav-trigger {
  position: relative;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 0 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #173878;
  font-family: var(--trivsel-font-ui);
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  transition:
    color .15s ease,
    background .15s ease;
}

.tv-nav__home:hover,
.tv-nav__home:focus-visible,
.tv-nav-trigger:hover,
.tv-nav-trigger:focus-visible {
  color: #2563EB;
  background: #F5F9FF;
  outline: none;
}

.tv-nav__home::after {
  content: "";
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 0;
  height: 3px;
  border-radius: 999px;
  background: #2563EB;
  opacity: 0;
}

body[data-marketing-route="home"] .tv-nav__home::after,
.tv-nav__home[aria-current="page"]::after {
  opacity: 1;
}

.tv-nav-group {
  position: relative;
}

.tv-chevron {
  width: 7px;
  height: 7px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  transform-origin: center;
  transition: transform .15s ease;
}

.tv-nav-group.is-open .tv-chevron {
  transform: rotate(225deg) translate(-1px,-1px);
}

.tv-dropdown {
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  width: 330px;
  display: none;
  padding: 8px;
  background: #FFFFFF;
  border: 1px solid #E2E8F0;
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(15,23,42,.12);
}

.tv-dropdown--right {
  left: auto;
  right: 0;
}

.tv-nav-group.is-open > .tv-dropdown {
  display: block;
}



.tv-dropdown > a {
  display: block;
  padding: 12px 13px;
  border: 1px solid transparent;
  border-radius: 8px;
  transition:
    background .15s ease,
    border-color .15s ease,
    transform .15s ease,
    box-shadow .15s ease;
}

.tv-dropdown > a:hover,
.tv-dropdown > a:focus-visible {
  background: #FBFDFF;
  border-color: #9ECFEE;
  box-shadow: 0 4px 12px rgba(23,137,245,.09);
  transform: translateY(-1px);
  outline: none;
}

.tv-dropdown strong {
  display: block;
  color: #07152A;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.3;
}

.tv-dropdown span {
  display: block;
  margin-top: 4px;
  color: #64748B;
  font-size: 11px;
  font-weight: 400;
  line-height: 1.45;
}

.tv-nav-search {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  padding: 0;
  margin-left: 4px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: #173878;
}

.tv-nav-search:hover,
.tv-nav-search:focus-visible {
  background: #E9F1FF;
  color: #2563EB;
  outline: 2px solid #2563EB;
  outline-offset: 2px;
}

.tv-button--open {
  min-height: 44px;
  padding: 0 18px;
  border: 1px solid #2563EB;
  border-radius: 9px;
  color: #2563EB;
  background: #FFFFFF;
}

.tv-button--open:hover,
.tv-button--open:focus-visible {
  color: #FFFFFF;
  background: #2563EB;
}

.tv-nav__cta {
  min-height: 44px;
  padding-inline: 20px;
}

.tv-menu-toggle {
  display: none;
}

@media (max-width: 1180px) {

  .tv-menu-toggle {
    display: block;
    margin-left: auto;
  }

  .tv-nav {
    display: none;
    position: absolute;
    top: calc(100% + 1px);
    left: 14px;
    right: 14px;
    padding: 12px;
    background: #FFFFFF;
    border: 1px solid #E2E8F0;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(15,23,42,.12);
    flex-direction: column;
    align-items: stretch;
  }

  .tv-nav.is-open {
    display: flex;
  }

  .tv-nav__home,
  .tv-nav-trigger {
    width: 100%;
    justify-content: space-between;
    padding-inline: 12px;
  }

  .tv-nav__home {
    justify-content: flex-start;
  }

  .tv-dropdown,
  .tv-dropdown--right {
    position: static;
    width: 100%;
    margin: 4px 0 8px;
    box-shadow: none;
  }

  .tv-nav-search {
    width: 100%;
  }

  .tv-button--open,
  .tv-nav__cta {
    width: 100%;
  }
}

@media (max-width: 720px) {

  .tv-header__row {
    min-height: 70px;
  }

  .tv-brand__full-logo {
    height: 40px;
  }
}

@media (prefers-reduced-motion: reduce) {

  .tv-chevron,
  .tv-dropdown > a,
  .tv-nav__home,
  .tv-nav-trigger {
    transition: none;
  }
}

/* BEGIN TRIVSEL APP HOVER PARITY
   ------------------------------------------------------------
   Source of truth:
   Trivsel application interaction behavior.

   CONTROL:
   white/dark -> #2563EB / white

   CARD:
   #FBFDFF + #9ECFEE + restrained lift/shadow
   ------------------------------------------------------------ */

:root {
  --tv-app-hover-blue: #2563EB;
  --tv-app-hover-blue-deep: #1D4ED8;

  --tv-app-hover-card-border: #9ECFEE;
  --tv-app-hover-card-bg: #FBFDFF;

  --tv-app-hover-shadow:
    0 5px 12px rgba(37, 99, 235, 0.14);

  --tv-app-card-hover-shadow:
    0 4px 12px rgba(23, 137, 245, 0.09);
}


/* ============================================================
   APP-STYLE CONTROL SURFACES
   ============================================================ */

.tv-nav a,
.tv-nav button,
.tv-button,
.tv-primary__cta,
[data-search-open],
.tv-search-open,
.tv-search button {
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease,
    color 0.15s ease,
    box-shadow 0.15s ease,
    transform 0.15s ease;
}


/*
Same interaction as the Classification control in the app:
white -> brand blue, dark text -> white text.
*/
@media (hover: hover) and (pointer: fine) {

  .tv-nav a:hover,
  .tv-nav button:hover,
  .tv-button:hover,
  .tv-primary__cta:hover,
  [data-search-open]:hover,
  .tv-search-open:hover,
  .tv-search button:hover {

    background: var(--tv-app-hover-blue) !important;
    border-color: var(--tv-app-hover-blue) !important;
    color: #FFFFFF !important;

    box-shadow: var(--tv-app-hover-shadow);

    transform: translateY(-1px);

    text-decoration: none;
  }
}


/* Keyboard users receive the same interaction feedback. */

.tv-nav a:focus-visible,
.tv-nav button:focus-visible,
.tv-button:focus-visible,
.tv-primary__cta:focus-visible,
[data-search-open]:focus-visible,
.tv-search-open:focus-visible,
.tv-search button:focus-visible {

  background: var(--tv-app-hover-blue) !important;
  border-color: var(--tv-app-hover-blue) !important;
  color: #FFFFFF !important;

  box-shadow: var(--tv-app-hover-shadow);

  outline: 2px solid var(--tv-app-hover-blue);
  outline-offset: 2px;

  transform: translateY(-1px);

  text-decoration: none;
}


/* Dropdown trigger remains blue while its menu is open. */

.tv-nav button[aria-expanded="true"],
.tv-nav [data-dropdown-trigger][aria-expanded="true"] {

  background: var(--tv-app-hover-blue) !important;
  border-color: var(--tv-app-hover-blue) !important;
  color: #FFFFFF !important;

  box-shadow: var(--tv-app-hover-shadow);
}


/* SVG arrows/search/icons inherit the white foreground. */

.tv-nav a:hover svg,
.tv-nav button:hover svg,
.tv-nav a:focus-visible svg,
.tv-nav button:focus-visible svg,
.tv-button:hover svg,
.tv-button:focus-visible svg,
[data-search-open]:hover svg,
[data-search-open]:focus-visible svg {

  color: currentColor;
  stroke: currentColor;
}


/*
Already-blue primary controls should deepen slightly rather
than appearing unchanged.
*/

@media (hover: hover) and (pointer: fine) {

  .tv-button--blue:hover,
  .tv-primary__cta.tv-button--blue:hover {

    background: var(--tv-app-hover-blue-deep) !important;
    border-color: var(--tv-app-hover-blue-deep) !important;
    color: #FFFFFF !important;
  }
}


/* ============================================================
   APP-STYLE CARD SURFACES
   ============================================================ */

.tv-path-card,
.tv-story,
.tv-contact,
.tv-pillar,
.tv-worlds a,
.tv-link-list > a,
.tv-search__grid a,
.tv-industry-card,
.tv-capability-card,
.tv-resource-card,
.tv-module-card,
a.tv-card,
button.tv-card,
.tv-card-link {

  transition:
    background-color 0.15s ease,
    border-color 0.15s ease,
    color 0.15s ease,
    box-shadow 0.15s ease,
    transform 0.15s ease;
}


@media (hover: hover) and (pointer: fine) {

  .tv-path-card:hover,
  .tv-story:hover,
  .tv-contact:hover,
  .tv-pillar:hover,
  .tv-worlds a:hover,
  .tv-link-list > a:hover,
  .tv-search__grid a:hover,
  .tv-industry-card:hover,
  .tv-capability-card:hover,
  .tv-resource-card:hover,
  .tv-module-card:hover,
  a.tv-card:hover,
  button.tv-card:hover,
  .tv-card-link:hover {

    background-color:
      var(--tv-app-hover-card-bg) !important;

    border-color:
      var(--tv-app-hover-card-border) !important;

    box-shadow:
      var(--tv-app-card-hover-shadow);

    transform:
      translateY(-1px);
  }
}


/* Same treatment for keyboard focus on clickable cards. */

.tv-worlds a:focus-visible,
.tv-link-list > a:focus-visible,
.tv-search__grid a:focus-visible,
a.tv-card:focus-visible,
button.tv-card:focus-visible,
.tv-card-link:focus-visible,
.tv-path-card:focus-within,
.tv-story:focus-within,
.tv-contact:focus-within,
.tv-pillar:focus-within,
.tv-industry-card:focus-within,
.tv-capability-card:focus-within,
.tv-resource-card:focus-within,
.tv-module-card:focus-within {

  background-color:
    var(--tv-app-hover-card-bg) !important;

  border-color:
    var(--tv-app-hover-card-border) !important;

  box-shadow:
    var(--tv-app-card-hover-shadow);

  transform:
    translateY(-1px);
}


/* ============================================================
   NORMAL TEXT LINKS
   ============================================================ */

/*
Do not turn paragraph/footer text links into big blue boxes.
They keep restrained blue text feedback.
*/

.tv-footer a {
  transition:
    color 0.15s ease,
    text-decoration-color 0.15s ease;
}


@media (hover: hover) and (pointer: fine) {

  .tv-footer a:hover {
    color: var(--tv-app-hover-blue);
    text-decoration-color: currentColor;
  }
}


/* ============================================================
   REDUCED MOTION
   ============================================================ */

@media (prefers-reduced-motion: reduce) {

  .tv-nav a,
  .tv-nav button,
  .tv-button,
  .tv-primary__cta,
  [data-search-open],
  .tv-search-open,
  .tv-search button,

  .tv-path-card,
  .tv-story,
  .tv-contact,
  .tv-pillar,
  .tv-worlds a,
  .tv-link-list > a,
  .tv-search__grid a,
  .tv-industry-card,
  .tv-capability-card,
  .tv-resource-card,
  .tv-module-card,
  a.tv-card,
  button.tv-card,
  .tv-card-link {

    transition: none !important;
    transform: none !important;
  }
}

/* END TRIVSEL APP HOVER PARITY */

/* ============================================================
   TRIVSEL FOOTER - WHITE / BRAND BLUE
   ============================================================ */

.tv-footer {
  background: #FFFFFF !important;
  color: #2563EB !important;
  border-top: 1px solid #E5E7EB;
}

/* Main footer copy */
.tv-footer p,
.tv-footer span,
.tv-footer small,
.tv-footer address {
  color: #2563EB !important;
}

/* Column headings */
.tv-footer h1,
.tv-footer h2,
.tv-footer h3,
.tv-footer h4,
.tv-footer h5,
.tv-footer h6,
.tv-footer__title,
.tv-footer__heading {
  color: #2563EB !important;
}

/* Footer links */
.tv-footer a {
  color: #2563EB !important;
  text-decoration: none;
  transition:
    color 0.15s ease,
    background-color 0.15s ease,
    border-color 0.15s ease;
}

@media (hover: hover) and (pointer: fine) {
  .tv-footer a:hover {
    color: #1D4ED8 !important;
    text-decoration: underline;
    text-underline-offset: 3px;
  }
}

.tv-footer a:focus-visible {
  color: #1D4ED8 !important;
  outline: 2px solid #2563EB;
  outline-offset: 3px;
  border-radius: 4px;
}

/* Footer brand */
.tv-footer__brand,
.tv-footer__brand span,
.tv-footer__brand strong {
  color: #2563EB !important;
}

/*
Restore the normal blue Trivsel logo in the footer.
This removes any white/invert filter that was being used
for the previous dark footer.
*/
.tv-footer__brand img,
.tv-footer img {
  filter: none !important;
  opacity: 1 !important;
}

/* Footer separators */
.tv-footer hr,
.tv-footer__bottom,
.tv-footer__legal,
.tv-footer__divider {
  border-color: #DCE6F5 !important;
}

/* Copyright / bottom-line text */
.tv-footer__bottom,
.tv-footer__bottom p,
.tv-footer__bottom span,
.tv-footer__legal,
.tv-footer__legal a {
  color: #2563EB !important;
}

/*
Keep the main CTA visually strong:
blue background + white foreground.
*/
.tv-footer .tv-button,
.tv-footer .tv-button--blue {
  background: #2563EB !important;
  border-color: #2563EB !important;
  color: #FFFFFF !important;
}

@media (hover: hover) and (pointer: fine) {
  .tv-footer .tv-button:hover,
  .tv-footer .tv-button--blue:hover {
    background: #1D4ED8 !important;
    border-color: #1D4ED8 !important;
    color: #FFFFFF !important;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .tv-footer a,
  .tv-footer .tv-button {
    transition: none !important;
  }
}

/* BEGIN TRIVSEL CLICK-ONLY DROPDOWNS
   Dropdown contents open only after explicit click/tap.
   Hover by itself must never reveal the menu.
   ========================================================================== */

.tv-nav [data-dropdown-menu] {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

@media (hover: hover) and (pointer: fine) {
  .tv-nav [data-dropdown]:hover [data-dropdown-menu],
  .tv-nav [data-dropdown-trigger]:hover + [data-dropdown-menu] {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
}

.tv-nav [data-dropdown-trigger][aria-expanded="true"] + [data-dropdown-menu],
.tv-nav [data-dropdown]:has(> [data-dropdown-trigger][aria-expanded="true"]) [data-dropdown-menu],
.tv-nav [data-dropdown].is-open [data-dropdown-menu],
.tv-nav [data-dropdown][data-open="true"] [data-dropdown-menu] {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
}

.tv-nav [data-dropdown-trigger]:focus-visible {
  outline: 2px solid #2563EB;
  outline-offset: 2px;
}

/* END TRIVSEL CLICK-ONLY DROPDOWNS */

/* BEGIN TRIVSEL CLICK-ONLY DROPDOWNS V3
   Dropdown contents are controlled only by the existing click/tap JavaScript.
   Pointer hover changes visual styling only; it must never reveal menu contents.
   ========================================================================== */

.tv-dropdown {
  display: none;
}

.tv-nav-group.is-open > .tv-dropdown {
  display: block;
}

/* END TRIVSEL CLICK-ONLY DROPDOWNS V3 */

/* BEGIN TRIVSEL PURE BLACK HEADER TEXT V3
   All public-site navigation writing is pure #000000 at rest.
   Existing app-style hover/open states remain unchanged.
   ========================================================================== */

/* Primary navigation labels. */
.tv-header .tv-nav__home:not(:hover):not(:focus-visible),
.tv-header .tv-nav-trigger:not(:hover):not(:focus-visible):not([aria-expanded="true"]) {
  color: #000000 !important;
}

/* Dropdown copy at rest. */
.tv-header .tv-dropdown > a:not(:hover):not(:focus-visible) strong,
.tv-header .tv-dropdown > a:not(:hover):not(:focus-visible) span {
  color: #000000 !important;
}

/* Search icon and outlined Open Trivsel control at rest. */
.tv-header .tv-nav-search:not(:hover):not(:focus-visible),
.tv-header .tv-button--open:not(:hover):not(:focus-visible) {
  color: #000000 !important;
}

/* Chevrons/search strokes follow the same pure-black rest state. */
.tv-header .tv-nav-trigger:not(:hover):not(:focus-visible):not([aria-expanded="true"]) .tv-chevron,
.tv-header .tv-nav-search:not(:hover):not(:focus-visible) svg,
.tv-header .tv-nav-search:not(:hover):not(:focus-visible) svg * {
  color: #000000 !important;
  stroke: #000000 !important;
}

/* Filled primary CTA stays readable. */
.tv-header .tv-button--blue,
.tv-header .tv-button--blue *,
.tv-header .tv-nav__cta,
.tv-header .tv-nav__cta * {
  color: #FFFFFF !important;
}

/* END TRIVSEL PURE BLACK HEADER TEXT V3 */

/* BEGIN TRIVSEL CANONICAL CONTROL HOVER
   Canonical Trivsel control interaction:
   white + #000000 at rest -> #2563EB + #FFFFFF on hover/focus.
   Apply this to compact actionable controls, not large informational cards.
   ========================================================================== */

:root {
  --tv-canonical-control-blue: #2563EB;
  --tv-canonical-control-blue-deep: #1D4ED8;
  --tv-canonical-control-shadow: 0 5px 12px rgba(37, 99, 235, .14);
}

/* --------------------------------------------------------------------------
   REST STATE
   -------------------------------------------------------------------------- */

.tv-header .tv-dropdown > a,
.tv-search-result,
.tv-search-panel__close,
.tv-utility__row a {
  background: #FFFFFF;
  color: #000000;
  transition:
    background-color .15s ease,
    border-color .15s ease,
    color .15s ease,
    box-shadow .15s ease,
    transform .15s ease;
}

/* Dropdown child copy must inherit the control color. */
.tv-header .tv-dropdown > a strong,
.tv-header .tv-dropdown > a span,
.tv-header .tv-dropdown > a small {
  color: inherit !important;
  transition: color .15s ease;
}

/* --------------------------------------------------------------------------
   CANONICAL POINTER HOVER
   -------------------------------------------------------------------------- */

@media (hover: hover) and (pointer: fine) {
  .tv-header .tv-dropdown > a:hover,
  .tv-search-result:hover,
  .tv-search-panel__close:hover,
  .tv-utility__row a:hover {
    background: var(--tv-canonical-control-blue) !important;
    border-color: var(--tv-canonical-control-blue) !important;
    color: #FFFFFF !important;
    box-shadow: var(--tv-canonical-control-shadow);
    transform: translateY(-1px);
    text-decoration: none;
  }

  .tv-header .tv-dropdown > a:hover strong,
  .tv-header .tv-dropdown > a:hover span,
  .tv-header .tv-dropdown > a:hover small {
    color: #FFFFFF !important;
  }
}

/* --------------------------------------------------------------------------
   KEYBOARD FOCUS MATCHES HOVER
   -------------------------------------------------------------------------- */

.tv-header .tv-dropdown > a:focus-visible,
.tv-search-result:focus-visible,
.tv-search-panel__close:focus-visible,
.tv-utility__row a:focus-visible {
  background: var(--tv-canonical-control-blue) !important;
  border-color: var(--tv-canonical-control-blue) !important;
  color: #FFFFFF !important;
  box-shadow: var(--tv-canonical-control-shadow);
  outline: 2px solid var(--tv-canonical-control-blue);
  outline-offset: 2px;
  transform: translateY(-1px);
  text-decoration: none;
}

.tv-header .tv-dropdown > a:focus-visible strong,
.tv-header .tv-dropdown > a:focus-visible span,
.tv-header .tv-dropdown > a:focus-visible small {
  color: #FFFFFF !important;
}

/* --------------------------------------------------------------------------
   EXISTING HEADER CONTROLS
   Make the canonical foreground explicit so black rest-state rules can never
   leak through while a header control is hovered/focused/open.
   -------------------------------------------------------------------------- */

@media (hover: hover) and (pointer: fine) {
  .tv-header .tv-nav__home:hover,
  .tv-header .tv-nav-trigger:hover,
  .tv-header .tv-nav-search:hover,
  .tv-header .tv-button--open:hover {
    background: var(--tv-canonical-control-blue) !important;
    border-color: var(--tv-canonical-control-blue) !important;
    color: #FFFFFF !important;
  }
}

.tv-header .tv-nav__home:focus-visible,
.tv-header .tv-nav-trigger:focus-visible,
.tv-header .tv-nav-search:focus-visible,
.tv-header .tv-button--open:focus-visible,
.tv-header .tv-nav-trigger[aria-expanded="true"] {
  background: var(--tv-canonical-control-blue) !important;
  border-color: var(--tv-canonical-control-blue) !important;
  color: #FFFFFF !important;
}

/* Chevron and search icon follow white foreground during interaction. */
.tv-header .tv-nav-trigger:hover .tv-chevron,
.tv-header .tv-nav-trigger:focus-visible .tv-chevron,
.tv-header .tv-nav-trigger[aria-expanded="true"] .tv-chevron,
.tv-header .tv-nav-search:hover svg,
.tv-header .tv-nav-search:hover svg *,
.tv-header .tv-nav-search:focus-visible svg,
.tv-header .tv-nav-search:focus-visible svg * {
  color: #FFFFFF !important;
  stroke: #FFFFFF !important;
}

/* Filled primary CTA is already blue, so deepen it on hover. */
@media (hover: hover) and (pointer: fine) {
  .tv-header .tv-nav__cta:hover,
  .tv-header .tv-button--blue:hover {
    background: var(--tv-canonical-control-blue-deep) !important;
    border-color: var(--tv-canonical-control-blue-deep) !important;
    color: #FFFFFF !important;
  }
}

/* --------------------------------------------------------------------------
   LARGE CONTENT CARDS
   Deliberately retain the established subtle card treatment instead of
   turning large content areas into solid blue controls.
   -------------------------------------------------------------------------- */

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .tv-header .tv-dropdown > a,
  .tv-search-result,
  .tv-search-panel__close,
  .tv-utility__row a {
    transition: none !important;
    transform: none !important;
  }
}

/* END TRIVSEL CANONICAL CONTROL HOVER */

/* BEGIN TRIVSEL BRANDED DIRECT CONTACT
   Branded contact strip:
   white surface, Trivsel-blue accents, black supporting text.
   ========================================================================== */

.tv-contact-direct {
  margin-top: 24px;
  min-height: 104px;
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 20px 24px;
  background: #FFFFFF;
  color: #000000;
  border: 1px solid #BFDBFE;
  border-radius: 18px;
  box-shadow: 0 4px 14px rgba(37, 99, 235, .06);
}

.tv-contact-direct__label {
  flex: 0 0 auto;
  color: #000000 !important;
  font-family: var(--trivsel-font-ui);
  font-size: 12px !important;
  font-weight: 700;
  letter-spacing: .14em;
  line-height: 1.2;
  text-transform: uppercase;
}

.tv-contact-direct__divider {
  flex: 0 0 1px;
  width: 1px;
  height: 42px;
  background: #BFDBFE;
}

.tv-contact-direct__item {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: #000000;
  font-family: var(--trivsel-font-ui);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
}

.tv-contact-direct__email {
  padding: 8px 10px;
  margin: -8px -10px;
  border: 1px solid transparent;
  border-radius: 12px;
  color: #2563EB !important;
  font-weight: 800;
  text-decoration: none;
  transition:
    background-color .15s ease,
    border-color .15s ease,
    color .15s ease,
    box-shadow .15s ease,
    transform .15s ease;
}

.tv-contact-direct__icon {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: #EFF6FF;
  color: #2563EB;
  transition:
    background-color .15s ease,
    color .15s ease;
}

.tv-contact-direct__icon svg {
  width: 22px;
  height: 22px;
  display: block;
}

.tv-contact-direct__value {
  min-width: 0;
  overflow-wrap: anywhere;
}

.tv-contact-direct__location {
  color: #000000;
}

@media (hover: hover) and (pointer: fine) {
  .tv-contact-direct__email:hover {
    background: #2563EB !important;
    border-color: #2563EB !important;
    color: #FFFFFF !important;
    box-shadow: 0 5px 12px rgba(37, 99, 235, .14);
    transform: translateY(-1px);
  }

  .tv-contact-direct__email:hover .tv-contact-direct__icon {
    background: rgba(255, 255, 255, .16);
    color: #FFFFFF;
  }
}

.tv-contact-direct__email:focus-visible {
  background: #2563EB !important;
  border-color: #2563EB !important;
  color: #FFFFFF !important;
  box-shadow: 0 5px 12px rgba(37, 99, 235, .14);
  outline: 2px solid #2563EB;
  outline-offset: 2px;
  transform: translateY(-1px);
}

.tv-contact-direct__email:focus-visible .tv-contact-direct__icon {
  background: rgba(255, 255, 255, .16);
  color: #FFFFFF;
}

@media (max-width: 760px) {
  .tv-contact-direct {
    min-height: 0;
    align-items: stretch;
    flex-direction: column;
    gap: 14px;
    padding: 20px;
  }

  .tv-contact-direct__divider {
    width: 100%;
    height: 1px;
  }

  .tv-contact-direct__item {
    width: 100%;
  }

  .tv-contact-direct__email {
    margin: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tv-contact-direct__email,
  .tv-contact-direct__icon {
    transition: none !important;
    transform: none !important;
  }
}

/* END TRIVSEL BRANDED DIRECT CONTACT */

/* BEGIN TRIVSEL BRANDED LIGHT CONTENT SECTIONS
   Canonical full-width explanatory treatment:
   white / very pale blue, black headings, dark-slate copy, Trivsel-blue accents.
   Legacy standalone dark navy slabs are intentionally retired.
   ========================================================================== */

.tv-band--light,
.tv-section--light {
  position: relative;
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FBFF 100%) !important;
  color: #000000 !important;
  border-top: 1px solid #BFDBFE;
  border-bottom: 1px solid #BFDBFE;
}

.tv-band--light::before,
.tv-section--light::before {
  content: "";
  position: absolute;
  left: 0;
  top: -1px;
  width: min(240px, 28vw);
  height: 3px;
  background: #2563EB;
}

.tv-band--light h1,
.tv-band--light h2,
.tv-band--light h3,
.tv-band--light h4,
.tv-section--light h1,
.tv-section--light h2,
.tv-section--light h3,
.tv-section--light h4 {
  color: #000000 !important;
}

.tv-band--light p,
.tv-band--light li,
.tv-section--light p,
.tv-section--light li {
  color: #475569 !important;
}

.tv-band--light .tv-eyebrow,
.tv-band--light .tv-card-kicker,
.tv-section--light .tv-eyebrow,
.tv-section--light .tv-card-kicker {
  color: #2563EB !important;
}

.tv-section--light.tv-graph-section,
.tv-section--light.tv-research {
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FBFF 100%) !important;
  color: #000000 !important;
}

.tv-band--light .tv-button,
.tv-section--light .tv-button {
  background: #FFFFFF !important;
  border-color: #93C5FD !important;
  color: #000000 !important;
}

@media (hover: hover) and (pointer: fine) {
  .tv-band--light .tv-button:hover,
  .tv-section--light .tv-button:hover {
    background: #2563EB !important;
    border-color: #2563EB !important;
    color: #FFFFFF !important;
    box-shadow: 0 5px 12px rgba(37, 99, 235, .14);
    transform: translateY(-1px);
  }
}

.tv-band--light .tv-button:focus-visible,
.tv-section--light .tv-button:focus-visible {
  background: #2563EB !important;
  border-color: #2563EB !important;
  color: #FFFFFF !important;
  outline: 2px solid #2563EB;
  outline-offset: 2px;
  box-shadow: 0 5px 12px rgba(37, 99, 235, .14);
  transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
  .tv-band--light .tv-button,
  .tv-section--light .tv-button {
    transition: none !important;
    transform: none !important;
  }
}

/* END TRIVSEL BRANDED LIGHT CONTENT SECTIONS */

/* BEGIN TRIVSEL DEDICATED DETAIL PAGES */

.tv-detail-hero__grid {
  display: grid;
  grid-template-columns: 1fr .82fr;
  gap: 48px;
  align-items: center;
}

.tv-detail-hero__visual {
  min-height: 390px;
  overflow: hidden;
}

.tv-detail-hero__visual img {
  width: 100%;
  height: 100%;
  min-height: 390px;
  object-fit: cover;
}

.tv-detail-section-head {
  max-width: 760px;
  margin-bottom: 28px;
}

.tv-detail-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}

.tv-detail-card {
  min-height: 220px;
  padding: 24px;
  background: #FFFFFF;
  border: 1px solid #E5E7EB;
  border-radius: 14px;
  transition: background .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.tv-detail-card:hover {
  background: #FBFDFF;
  border-color: #9ECFEE;
  box-shadow: 0 4px 12px rgba(23, 137, 245, .09);
  transform: translateY(-1px);
}

.tv-detail-card__icon {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  margin-bottom: 20px;
  border-radius: 12px;
  background: #EFF6FF;
  color: #2563EB;
}

.tv-detail-card__icon svg {
  width: 23px;
  height: 23px;
}

.tv-detail-system-map {
  margin-top: 24px;
  display: grid;
  grid-template-columns: repeat(9, auto);
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 22px;
  border: 1px solid #BFDBFE;
  border-radius: 14px;
  background: #FFFFFF;
}

.tv-detail-system-map span {
  padding: 9px 12px;
  border-radius: 999px;
  background: #EFF6FF;
  color: #000000;
  font-weight: 700;
}

.tv-detail-system-map b {
  color: #2563EB;
}

.tv-detail-explainer {
  display: grid;
  grid-template-columns: .9fr 1.1fr;
  gap: 44px;
  align-items: start;
}

.tv-detail-flow {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tv-detail-flow li {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 16px;
  background: #FFFFFF;
  border: 1px solid #E5E7EB;
  border-radius: 12px;
}

.tv-detail-flow__number {
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: #2563EB;
  color: #FFFFFF;
  font-weight: 800;
}

.tv-detail-bars {
  display: grid;
  gap: 14px;
}

.tv-detail-bars > div {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 16px;
  align-items: center;
}

.tv-detail-bars span {
  color: #000000;
  font-weight: 700;
}

.tv-detail-bars i {
  display: block;
  height: 12px;
  overflow: hidden;
  border-radius: 999px;
  background: #E9F1FF;
}

.tv-detail-bars i b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: #2563EB;
}

.tv-detail-bars__note {
  margin-top: 12px;
  color: #64748B;
  font-size: 12px;
}

@media (max-width: 900px) {
  .tv-detail-hero__grid,
  .tv-detail-explainer {
    grid-template-columns: 1fr;
  }

  .tv-detail-card-grid {
    grid-template-columns: 1fr;
  }

  .tv-detail-system-map {
    grid-template-columns: 1fr;
  }

  .tv-detail-system-map b {
    transform: rotate(90deg);
    justify-self: center;
  }
}

@media (max-width: 620px) {
  .tv-detail-bars > div {
    grid-template-columns: 1fr;
    gap: 6px;
  }
}

/* END TRIVSEL DEDICATED DETAIL PAGES */

/* BEGIN TRIVSEL ASSET IDENTITY DEEP DIVE */

.tv-asset-id-hero {
  background: linear-gradient(180deg, var(--white) 0%, var(--brand-wash) 100%);
}

.tv-asset-id-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
  gap: 36px;
  align-items: center;
}

.tv-asset-id-hero__copy {
  padding: 34px 0;
}

.tv-asset-id-hero__copy h1 {
  max-width: 780px;
}

.tv-asset-id-hero__copy .tv-actions {
  margin-top: 28px;
}

.tv-asset-id-hero__visual {
  position: relative;
  min-height: 520px;
}

.tv-asset-id-hero__visual img {
  width: 100%;
  height: 520px;
  object-fit: cover;
}

.tv-asset-id-hero__caption {
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 18px;
  display: grid;
  gap: 4px;
  padding: 16px 18px;
  background: rgba(255, 255, 255, .96);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.tv-asset-id-hero__caption span {
  color: var(--brand);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .13em;
}

.tv-asset-id-hero__caption strong {
  color: var(--ink);
  font-family: var(--trivsel-font-heading);
}

.tv-asset-id-intro {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
  gap: 56px;
  align-items: end;
  margin-bottom: 34px;
}

.tv-asset-id-intro h2 {
  margin-bottom: 0;
}

.tv-asset-id-intro > p {
  margin: 0;
  color: var(--muted);
  font-size: 17px;
}

.tv-asset-id-value-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

.tv-asset-id-value-grid article,
.tv-asset-id-stakeholders article {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 22px;
  transition:
    background .15s ease,
    border-color .15s ease,
    box-shadow .15s ease,
    transform .15s ease;
}

.tv-asset-id-value-grid article:hover,
.tv-asset-id-stakeholders article:hover {
  background: #FBFDFF;
  border-color: #9ECFEE;
  box-shadow: var(--shadow-hover);
  transform: translateY(-1px);
}

.tv-asset-id-value-grid article p,
.tv-asset-id-stakeholders article p {
  margin-bottom: 0;
  color: var(--muted);
  font-size: 13px;
}

.tv-asset-id-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  margin-bottom: 28px;
  border-radius: var(--radius-sm);
  background: var(--brand-pale);
  color: var(--brand);
}

.tv-asset-id-icon svg {
  width: 22px;
  height: 22px;
}

.tv-asset-id-compare {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--white);
}

.tv-asset-id-compare__head,
.tv-asset-id-compare__row {
  display: grid;
  grid-template-columns: .9fr 1fr 1fr;
}

.tv-asset-id-compare__head {
  background: var(--brand-pale);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.tv-asset-id-compare__head span,
.tv-asset-id-compare__row > * {
  padding: 16px 18px;
}

.tv-asset-id-compare__row {
  border-top: 1px solid var(--border);
}

.tv-asset-id-compare__row strong {
  color: var(--ink);
}

.tv-asset-id-compare__row span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}

.tv-asset-id-compare__head > * + *,
.tv-asset-id-compare__row > * + * {
  border-left: 1px solid var(--border);
}

.tv-asset-id-anatomy {
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: 54px;
  align-items: start;
}

.tv-asset-id-anatomy__copy > p:last-child {
  color: var(--muted);
  font-size: 16px;
}

.tv-asset-id-stack {
  display: grid;
  gap: 10px;
}

.tv-asset-id-stack article {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 16px;
  align-items: start;
  padding: 18px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.tv-asset-id-stack article > span {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: var(--radius-sm);
  background: var(--brand);
  color: var(--white);
  font-size: 11px;
  font-weight: 800;
}

.tv-asset-id-stack h3 {
  margin-bottom: 6px;
}

.tv-asset-id-stack p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.tv-asset-id-stakeholders {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.tv-asset-id-stakeholders article > span {
  display: inline-block;
  margin-bottom: 22px;
  color: var(--brand);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .12em;
}

.tv-asset-id-flow {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--border);
  border-left: 1px solid var(--border);
}

.tv-asset-id-flow li {
  min-height: 230px;
  padding: 22px;
  background: var(--white);
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.tv-asset-id-flow li > span {
  display: block;
  margin-bottom: 46px;
  color: var(--brand);
  font-size: 11px;
  font-weight: 800;
}

.tv-asset-id-flow strong {
  display: block;
  margin-bottom: 8px;
  color: var(--ink);
  font-family: var(--trivsel-font-heading);
}

.tv-asset-id-flow p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.tv-asset-id-foundation {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  gap: 56px;
  align-items: center;
}

.tv-asset-id-foundation > div:first-child > p:last-child {
  color: var(--muted);
  font-size: 16px;
}

.tv-asset-id-system-map {
  display: grid;
  grid-template-columns: repeat(9, auto);
  gap: 10px;
  align-items: center;
  justify-content: center;
}

.tv-asset-id-system-map span {
  padding: 10px 13px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--white);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.tv-asset-id-system-map span.is-current {
  border-color: var(--brand);
  background: var(--brand);
  color: var(--white);
}

.tv-asset-id-system-map b {
  color: var(--brand);
}

@media (max-width: 1040px) {
  .tv-asset-id-value-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .tv-asset-id-stakeholders {
    grid-template-columns: repeat(2, 1fr);
  }

  .tv-asset-id-flow {
    grid-template-columns: repeat(2, 1fr);
  }

  .tv-asset-id-flow li:last-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 820px) {
  .tv-asset-id-hero__grid,
  .tv-asset-id-intro,
  .tv-asset-id-anatomy,
  .tv-asset-id-foundation {
    grid-template-columns: 1fr;
  }

  .tv-asset-id-hero__visual,
  .tv-asset-id-hero__visual img {
    min-height: 380px;
    height: 380px;
  }

  .tv-asset-id-compare {
    overflow-x: auto;
  }

  .tv-asset-id-compare__head,
  .tv-asset-id-compare__row {
    min-width: 720px;
  }

  .tv-asset-id-system-map {
    grid-template-columns: 1fr;
  }

  .tv-asset-id-system-map b {
    justify-self: center;
    transform: rotate(90deg);
  }
}

@media (max-width: 620px) {
  .tv-asset-id-value-grid,
  .tv-asset-id-stakeholders,
  .tv-asset-id-flow {
    grid-template-columns: 1fr;
  }

  .tv-asset-id-flow li:last-child {
    grid-column: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tv-asset-id-value-grid article,
  .tv-asset-id-stakeholders article {
    transition: none !important;
    transform: none !important;
  }
}

/* END TRIVSEL ASSET IDENTITY DEEP DIVE */

/* BEGIN TRIVSEL MAINTENANCE DEEP DIVE */
.tv-maint-hero{background:linear-gradient(180deg,var(--white) 0%,var(--brand-wash) 100%)}
.tv-maint-hero__grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:36px;align-items:center}
.tv-maint-hero__copy{padding:34px 0}
.tv-maint-hero__copy .tv-actions{margin-top:28px}
.tv-maint-hero__visual{position:relative;min-height:520px}
.tv-maint-hero__visual img{width:100%;height:520px;object-fit:cover}
.tv-maint-hero__caption{position:absolute;left:18px;right:18px;bottom:18px;display:grid;gap:4px;padding:16px 18px;background:rgba(255,255,255,.96);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.tv-maint-hero__caption span{color:var(--brand);font-size:11px;font-weight:800;letter-spacing:.13em}
.tv-maint-hero__caption strong{color:var(--ink);font-family:var(--trivsel-font-heading)}
.tv-maint-intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:56px;align-items:end;margin-bottom:34px}
.tv-maint-intro h2{margin-bottom:0}
.tv-maint-intro>p{margin:0;color:var(--muted);font-size:17px}
.tv-maint-value-grid,.tv-maint-stakeholders{display:grid;gap:12px}
.tv-maint-value-grid{grid-template-columns:repeat(4,1fr)}
.tv-maint-stakeholders{grid-template-columns:repeat(3,1fr)}
.tv-maint-value-grid article,.tv-maint-stakeholders article{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:22px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.tv-maint-value-grid article:hover,.tv-maint-stakeholders article:hover{background:#FBFDFF;border-color:#9ECFEE;box-shadow:var(--shadow-hover);transform:translateY(-1px)}
.tv-maint-value-grid p,.tv-maint-stakeholders p{margin-bottom:0;color:var(--muted);font-size:13px}
.tv-maint-icon{width:42px;height:42px;display:grid;place-items:center;margin-bottom:28px;border-radius:var(--radius-sm);background:var(--brand-pale);color:var(--brand)}
.tv-maint-icon svg{width:22px;height:22px}
.tv-maint-paths{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.tv-maint-paths article{padding:24px;background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg)}
.tv-maint-paths article>span,.tv-maint-stakeholders article>span{display:inline-block;margin-bottom:22px;color:var(--brand);font-size:10px;font-weight:800;letter-spacing:.12em}
.tv-maint-paths p{color:var(--muted)}
.tv-maint-paths__flow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:24px}
.tv-maint-paths__flow b{padding:9px 11px;border:1px solid var(--border);border-radius:999px;background:var(--brand-wash);color:var(--ink);font-size:11px}
.tv-maint-paths__flow i{color:var(--brand);font-style:normal}
.tv-maint-record{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:54px;align-items:start}
.tv-maint-record__copy>p:last-child{color:var(--muted);font-size:16px}
.tv-maint-record__stack{display:grid;gap:10px}
.tv-maint-record__stack article{display:grid;grid-template-columns:48px 1fr;gap:16px;padding:18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--white)}
.tv-maint-record__stack article>span{width:40px;height:40px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--brand);color:var(--white);font-size:11px;font-weight:800}
.tv-maint-record__stack h3{margin-bottom:6px}
.tv-maint-record__stack p{margin:0;color:var(--muted);font-size:13px}
.tv-maint-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin:0;padding:0;list-style:none;border-top:1px solid var(--border);border-left:1px solid var(--border)}
.tv-maint-flow li{min-height:230px;padding:22px;background:var(--white);border-right:1px solid var(--border);border-bottom:1px solid var(--border)}
.tv-maint-flow li>span{display:block;margin-bottom:46px;color:var(--brand);font-size:11px;font-weight:800}
.tv-maint-flow strong{display:block;margin-bottom:8px;color:var(--ink);font-family:var(--trivsel-font-heading)}
.tv-maint-flow p{margin:0;color:var(--muted);font-size:13px}
.tv-maint-foundation{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:56px;align-items:center}
.tv-maint-foundation>div:first-child>p:last-child{color:var(--muted);font-size:16px}
.tv-maint-system-map{display:grid;grid-template-columns:repeat(9,auto);gap:10px;align-items:center;justify-content:center}
.tv-maint-system-map span{padding:10px 13px;border:1px solid var(--border);border-radius:999px;background:var(--white);color:var(--ink);font-size:12px;font-weight:800}
.tv-maint-system-map span.is-current{border-color:var(--brand);background:var(--brand);color:var(--white)}
.tv-maint-system-map b{color:var(--brand)}
@media (max-width:1040px){.tv-maint-value-grid{grid-template-columns:repeat(2,1fr)}.tv-maint-stakeholders{grid-template-columns:repeat(2,1fr)}.tv-maint-flow{grid-template-columns:repeat(2,1fr)}.tv-maint-flow li:last-child{grid-column:1/-1}}
@media (max-width:820px){.tv-maint-hero__grid,.tv-maint-intro,.tv-maint-record,.tv-maint-foundation,.tv-maint-paths{grid-template-columns:1fr}.tv-maint-hero__visual,.tv-maint-hero__visual img{min-height:380px;height:380px}.tv-maint-system-map{grid-template-columns:1fr}.tv-maint-system-map b{justify-self:center;transform:rotate(90deg)}}
@media (max-width:620px){.tv-maint-value-grid,.tv-maint-stakeholders,.tv-maint-flow{grid-template-columns:1fr}.tv-maint-flow li:last-child{grid-column:auto}}
@media (prefers-reduced-motion:reduce){.tv-maint-value-grid article,.tv-maint-stakeholders article{transition:none!important;transform:none!important}}
/* END TRIVSEL MAINTENANCE DEEP DIVE */

/* BEGIN TRIVSEL CALIBRATION DEEP DIVE */
.tv-cal-hero{background:linear-gradient(180deg,var(--white) 0%,var(--brand-wash) 100%)}
.tv-cal-hero__grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:36px;align-items:center}
.tv-cal-hero__copy{padding:34px 0}
.tv-cal-hero__copy .tv-actions{margin-top:28px}
.tv-cal-hero__visual{position:relative;min-height:520px}
.tv-cal-hero__visual img{width:100%;height:520px;object-fit:cover}
.tv-cal-hero__caption{position:absolute;left:18px;right:18px;bottom:18px;display:grid;gap:4px;padding:16px 18px;background:rgba(255,255,255,.96);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.tv-cal-hero__caption span{color:var(--brand);font-size:11px;font-weight:800;letter-spacing:.13em}
.tv-cal-hero__caption strong{color:var(--ink);font-family:var(--trivsel-font-heading)}
.tv-cal-intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:56px;align-items:end;margin-bottom:34px}
.tv-cal-intro h2{margin-bottom:0}
.tv-cal-intro>p{margin:0;color:var(--muted);font-size:17px}
.tv-cal-value-grid,.tv-cal-stakeholders{display:grid;gap:12px}
.tv-cal-value-grid{grid-template-columns:repeat(4,1fr)}
.tv-cal-stakeholders{grid-template-columns:repeat(3,1fr)}
.tv-cal-value-grid article,.tv-cal-stakeholders article{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:22px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.tv-cal-value-grid article:hover,.tv-cal-stakeholders article:hover{background:#FBFDFF;border-color:#9ECFEE;box-shadow:var(--shadow-hover);transform:translateY(-1px)}
.tv-cal-value-grid p,.tv-cal-stakeholders p{margin-bottom:0;color:var(--muted);font-size:13px}
.tv-cal-icon{width:42px;height:42px;display:grid;place-items:center;margin-bottom:28px;border-radius:var(--radius-sm);background:var(--brand-pale);color:var(--brand)}
.tv-cal-icon svg{width:22px;height:22px}
.tv-cal-compare{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.tv-cal-compare article{padding:24px;background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg)}
.tv-cal-compare article>span,.tv-cal-stakeholders article>span{display:inline-block;margin-bottom:22px;color:var(--brand);font-size:10px;font-weight:800;letter-spacing:.12em}
.tv-cal-compare p{color:var(--muted)}
.tv-cal-record{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:54px;align-items:start}
.tv-cal-record__copy>p:last-child{color:var(--muted);font-size:16px}
.tv-cal-record__stack{display:grid;gap:10px}
.tv-cal-record__stack article{display:grid;grid-template-columns:48px 1fr;gap:16px;padding:18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--white)}
.tv-cal-record__stack article>span{width:40px;height:40px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--brand);color:var(--white);font-size:11px;font-weight:800}
.tv-cal-record__stack h3{margin-bottom:6px}
.tv-cal-record__stack p{margin:0;color:var(--muted);font-size:13px}
.tv-cal-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin:0;padding:0;list-style:none;border-top:1px solid var(--border);border-left:1px solid var(--border)}
.tv-cal-flow li{min-height:230px;padding:22px;background:var(--white);border-right:1px solid var(--border);border-bottom:1px solid var(--border)}
.tv-cal-flow li>span{display:block;margin-bottom:46px;color:var(--brand);font-size:11px;font-weight:800}
.tv-cal-flow strong{display:block;margin-bottom:8px;color:var(--ink);font-family:var(--trivsel-font-heading)}
.tv-cal-flow p{margin:0;color:var(--muted);font-size:13px}
.tv-cal-foundation{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:56px;align-items:center}
.tv-cal-foundation>div:first-child>p:last-child{color:var(--muted);font-size:16px}
.tv-cal-system-map{display:grid;grid-template-columns:repeat(9,auto);gap:10px;align-items:center;justify-content:center}
.tv-cal-system-map span{padding:10px 13px;border:1px solid var(--border);border-radius:999px;background:var(--white);color:var(--ink);font-size:12px;font-weight:800}
.tv-cal-system-map span.is-current{border-color:var(--brand);background:var(--brand);color:var(--white)}
.tv-cal-system-map b{color:var(--brand)}
@media (max-width:1040px){.tv-cal-value-grid{grid-template-columns:repeat(2,1fr)}.tv-cal-stakeholders{grid-template-columns:repeat(2,1fr)}.tv-cal-flow{grid-template-columns:repeat(2,1fr)}.tv-cal-flow li:last-child{grid-column:1/-1}}
@media (max-width:820px){.tv-cal-hero__grid,.tv-cal-intro,.tv-cal-record,.tv-cal-foundation,.tv-cal-compare{grid-template-columns:1fr}.tv-cal-hero__visual,.tv-cal-hero__visual img{min-height:380px;height:380px}.tv-cal-system-map{grid-template-columns:1fr}.tv-cal-system-map b{justify-self:center;transform:rotate(90deg)}}
@media (max-width:620px){.tv-cal-value-grid,.tv-cal-stakeholders,.tv-cal-flow{grid-template-columns:1fr}.tv-cal-flow li:last-child{grid-column:auto}}
@media (prefers-reduced-motion:reduce){.tv-cal-value-grid article,.tv-cal-stakeholders article{transition:none!important;transform:none!important}}
/* END TRIVSEL CALIBRATION DEEP DIVE */

/* BEGIN TRIVSEL REPOSITORY ICON SYSTEM */
.tv-repo-icon {
  display:inline-block;
  width:22px;
  height:22px;
  flex:0 0 22px;
  background:currentColor;
  -webkit-mask-image:var(--tv-repo-icon);
  mask-image:var(--tv-repo-icon);
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-position:center;
  mask-position:center;
  -webkit-mask-size:contain;
  mask-size:contain;
  vertical-align:middle;
}
.tv-repo-icon--arrow {width:16px;height:16px;flex-basis:16px;color:var(--brand)}
.tv-repo-icon--menu {width:22px;height:22px}
.tv-menu-toggle > span:not(.sr-only):not(.tv-repo-icon) {display:none!important}
.tv-chevron {
  width:14px!important;
  height:14px!important;
  border:0!important;
  transform:none!important;
  background:currentColor;
  -webkit-mask-image:url('/static/img/icons/chevron-down.svg');
  mask-image:url('/static/img/icons/chevron-down.svg');
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-position:center;
  mask-position:center;
  -webkit-mask-size:contain;
  mask-size:contain;
}
.tv-spinner,.tv-loading-spinner,[data-loading-indicator] {
  width:22px;
  height:22px;
  display:inline-block;
  border:0!important;
  border-radius:0!important;
  background:currentColor;
  -webkit-mask-image:url('/static/img/icons/loader.svg');
  mask-image:url('/static/img/icons/loader.svg');
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-position:center;
  mask-position:center;
  -webkit-mask-size:contain;
  mask-size:contain;
  animation:tv-repo-icon-spin .8s linear infinite;
}
@keyframes tv-repo-icon-spin {to {transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce) {
  .tv-spinner,.tv-loading-spinner,[data-loading-indicator] {animation:none!important}
}
/* END TRIVSEL REPOSITORY ICON SYSTEM */


/* BEGIN TRIVSEL FAULTS INTERVENTIONS DEEP DIVE */

.tv-faults-hero {
  padding: clamp(4rem, 8vw, 7.5rem) 0 clamp(3.5rem, 7vw, 6rem);
  background:
    radial-gradient(circle at 92% 10%, rgba(37, 99, 235, 0.08), transparent 34%),
    linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
}

.tv-faults-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(22rem, 0.95fr);
  gap: clamp(3rem, 7vw, 7rem);
  align-items: center;
}

.tv-faults-hero__copy h1 { max-width: 12ch; }

.tv-faults-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin-top: 1.8rem;
}

.tv-faults-hero__system { display: grid; gap: 0; }

.tv-faults-node {
  display: grid;
  grid-template-columns: 2.75rem 1fr;
  gap: 1rem;
  align-items: start;
  padding: 1.15rem 1.2rem;
  border: 1px solid #dbe3ef;
  background: #ffffff;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.05);
}

.tv-faults-node--primary {
  border-color: rgba(37, 99, 235, 0.3);
  box-shadow: 0 18px 46px rgba(37, 99, 235, 0.1);
}

.tv-faults-node .tv-repo-icon {
  width: 2rem;
  height: 2rem;
  color: #2563EB;
}

.tv-faults-node div > span {
  display: block;
  margin-bottom: 0.15rem;
  color: #64748b;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.12em;
}

.tv-faults-node strong {
  display: block;
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 1rem;
}

.tv-faults-node p {
  margin: 0.35rem 0 0;
  color: #475569;
  font-size: 0.9rem;
  line-height: 1.55;
}

.tv-faults-connector {
  width: 1px;
  height: 1.25rem;
  margin-left: 2.55rem;
  background: #cbd5e1;
}

.tv-faults-intro {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(2rem, 7vw, 7rem);
  align-items: end;
  margin-bottom: 2.75rem;
}

.tv-faults-intro > p {
  margin: 0;
  color: #475569;
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  line-height: 1.8;
}

.tv-faults-principles {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid #dbe3ef;
  border-bottom: 1px solid #dbe3ef;
}

.tv-faults-principles article {
  padding: 2rem 1.5rem;
  border-right: 1px solid #dbe3ef;
}

.tv-faults-principles article:last-child { border-right: 0; }

.tv-faults-principles .tv-repo-icon {
  width: 1.8rem;
  height: 1.8rem;
  margin-bottom: 1.25rem;
  color: #2563EB;
}

.tv-faults-principles h3 {
  margin: 0 0 0.65rem;
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 1rem;
}

.tv-faults-principles p {
  margin: 0;
  color: #64748b;
  line-height: 1.7;
}

.tv-faults-evidence {
  display: grid;
  grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
  gap: clamp(2.5rem, 7vw, 7rem);
  align-items: start;
}

.tv-faults-evidence__copy {
  position: sticky;
  top: 7rem;
}

.tv-faults-evidence__grid { border-top: 1px solid #cbd5e1; }

.tv-faults-evidence__grid article {
  display: grid;
  grid-template-columns: 3.5rem minmax(10rem, 0.55fr) minmax(0, 1fr);
  gap: 1.25rem;
  padding: 1.5rem 0;
  border-bottom: 1px solid #cbd5e1;
  align-items: baseline;
}

.tv-faults-evidence__grid article > span {
  color: #2563EB;
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}

.tv-faults-evidence__grid h3,
.tv-faults-evidence__grid p { margin: 0; }

.tv-faults-evidence__grid h3 {
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 1rem;
}

.tv-faults-evidence__grid p {
  color: #64748b;
  line-height: 1.65;
}

.tv-faults-roles {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.tv-faults-roles article {
  min-height: 14rem;
  padding: 1.6rem;
  border: 1px solid #dbe3ef;
  background: #ffffff;
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

.tv-faults-roles article:hover {
  transform: translateY(-3px);
  border-color: rgba(37, 99, 235, 0.3);
  box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
}

.tv-faults-role__top {
  display: flex;
  gap: 0.8rem;
  align-items: center;
  margin-bottom: 1.2rem;
}

.tv-faults-role__top .tv-repo-icon {
  width: 1.55rem;
  height: 1.55rem;
  color: #2563EB;
  flex: 0 0 auto;
}

.tv-faults-role__top h3 {
  margin: 0;
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 1rem;
}

.tv-faults-roles p {
  margin: 0;
  color: #64748b;
  line-height: 1.7;
}

.tv-faults-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid #dbe3ef;
  background: #ffffff;
}

.tv-faults-links a {
  display: grid;
  grid-template-columns: 2rem 1fr;
  gap: 1rem;
  padding: 1.45rem 1.5rem;
  color: inherit;
  text-decoration: none;
  border-right: 1px solid #dbe3ef;
  border-bottom: 1px solid #dbe3ef;
  transition: background 160ms ease, color 160ms ease;
}

.tv-faults-links a:nth-child(2n) { border-right: 0; }
.tv-faults-links a:nth-last-child(-n + 2) { border-bottom: 0; }

.tv-faults-links a:hover,
.tv-faults-links a:focus-visible {
  background: #2563EB;
  color: #ffffff;
}

.tv-faults-links .tv-repo-icon {
  width: 1.55rem;
  height: 1.55rem;
  color: #2563EB;
}

.tv-faults-links a:hover .tv-repo-icon,
.tv-faults-links a:focus-visible .tv-repo-icon { color: #ffffff; }

.tv-faults-links strong,
.tv-faults-links span { display: block; }

.tv-faults-links strong {
  margin-bottom: 0.25rem;
  font-family: "IBM Plex Sans", sans-serif;
}

.tv-faults-links span {
  color: #64748b;
  line-height: 1.55;
}

.tv-faults-links a:hover span,
.tv-faults-links a:focus-visible span { color: rgba(255, 255, 255, 0.85); }

.tv-faults-closing {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(2.5rem, 7vw, 7rem);
  align-items: center;
}

.tv-faults-closing__path {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.7rem;
  padding: 1.3rem 1.4rem;
  border-top: 1px solid #cbd5e1;
  border-bottom: 1px solid #cbd5e1;
}

.tv-faults-closing__path > span:not(.tv-repo-icon) {
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 0.88rem;
  font-weight: 700;
}

.tv-faults-closing__path .tv-repo-icon {
  width: 1rem;
  height: 1rem;
  color: #2563EB;
}

@media (max-width: 900px) {
  .tv-faults-hero__grid,
  .tv-faults-intro,
  .tv-faults-evidence,
  .tv-faults-closing {
    grid-template-columns: 1fr;
  }

  .tv-faults-evidence__copy { position: static; }

  .tv-faults-principles {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .tv-faults-principles article:nth-child(2) { border-right: 0; }
  .tv-faults-principles article:nth-child(-n + 2) { border-bottom: 1px solid #dbe3ef; }
  .tv-faults-roles { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .tv-faults-hero { padding-top: 3rem; }
  .tv-faults-hero__copy h1 { max-width: none; }

  .tv-faults-principles,
  .tv-faults-links { grid-template-columns: 1fr; }

  .tv-faults-principles article,
  .tv-faults-links a {
    border-right: 0;
    border-bottom: 1px solid #dbe3ef;
  }

  .tv-faults-principles article:last-child,
  .tv-faults-links a:last-child { border-bottom: 0; }

  .tv-faults-evidence__grid article { grid-template-columns: 2.5rem 1fr; }
  .tv-faults-evidence__grid article p { grid-column: 2; }
  .tv-faults-closing__path { gap: 0.55rem; }
}

/* END TRIVSEL FAULTS INTERVENTIONS DEEP DIVE */
