/* CONTRASTELAB V156 — polish without introducing new animations or artificial assets.
   Small scoped overrides; preserve brand artwork, copy, and section layout. */
:root{scroll-padding-top:100px}
:where(section[id],article[id],h2[id],h3[id]){scroll-margin-top:104px}
html{scroll-behavior:auto}
:where(a,button,input,textarea,select,summary):focus-visible{outline:3px solid #d59bff!important;outline-offset:3px!important}
html[data-theme="light"] :where(a,button,input,textarea,select,summary):focus-visible{outline-color:#633bd4!important}
/* Readers get the same focus visibility without hover or motion. */
.cl-header .cl-logo:focus-visible,.cl-footer-v103__logo:focus-visible{border-radius:12px}
/* The fixed Mini Bot should never hide important actions or project images. */
html.cl-stable-ui .cl-minibot-launcher-wrap{right:max(14px,env(safe-area-inset-right))!important;bottom:max(14px,env(safe-area-inset-bottom))!important;z-index:1100!important}
html.cl-stable-ui .cl-minibot-launcher,
html.cl-stable-ui .cl-minibot-launcher.is-compact{width:62px!important;min-width:62px!important;max-width:62px!important;height:62px!important;min-height:62px!important;padding:0!important;border-radius:50%!important;box-shadow:0 8px 28px rgba(23,16,38,.22)!important;gap:0!important}
html.cl-stable-ui .cl-minibot-launcher__copy,
html.cl-stable-ui .cl-minibot-launcher.is-compact .cl-minibot-launcher__copy{display:none!important;min-width:0!important;width:0!important;max-width:0!important;visibility:hidden!important}
html.cl-stable-ui .cl-minibot-launcher__orb{width:60px!important;min-width:60px!important;height:60px!important;flex:0 0 60px!important}
html.cl-stable-ui .cl-minibot-launcher__orb img{width:60px!important;height:60px!important;transform:none!important}
html.cl-stable-ui .cl-minibot-launcher__bubble{display:none!important}
html.cl-stable-ui .cl-minibot-launcher__dismiss{top:-5px!important;right:-5px!important;width:21px!important;height:21px!important;font-size:12px!important}
html.cl-stable-ui .cl-minibot-launcher-wrap.is-dismissed{display:none!important}
/* Shared editorial rhythm between home, service pages, article pages. */
.cl154-section-heading>p,.clh150-lead,.clg151-deck{font-weight:400}
.cl154-service,.cl154-portfolio-stage{outline-offset:3px}
.cl154-service-top{line-height:1.45}
.cl154-service>small{font-size:14px!important;line-height:1.52!important}
.cl154-service-link{font-size:13px!important;line-height:1.25}
/* Compact mobile: less empty hero space and a readable single column. */
@media(max-width:767.98px){
  .clh150-hero{padding-top:114px!important;padding-bottom:48px!important}
  .clh150-lead{max-width:35ch;line-height:1.62!important}
  .cl154-service{min-height:0!important}
  .cl154-service>small{min-height:0!important}
  .cl154-section-heading>p{line-height:1.65!important}
  html.cl-stable-ui .cl-minibot-launcher,
  html.cl-stable-ui .cl-minibot-launcher.is-compact{width:56px!important;min-width:56px!important;max-width:56px!important;height:56px!important;min-height:56px!important}
  html.cl-stable-ui .cl-minibot-launcher__orb{width:54px!important;min-width:54px!important;height:54px!important;flex:0 0 54px!important}
  html.cl-stable-ui .cl-minibot-launcher__orb img{width:54px!important;height:54px!important}
}
/* Prevent hidden dialogs from being reachable or visually flashing before JS activates. */
.cl57-modal[aria-hidden="true"]{visibility:hidden!important;pointer-events:none!important}
/* Stable transitions only on small interactive affordances, never section reveal or scroll. */
@media(prefers-reduced-motion:reduce){
  html,html *{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
/* Legacy home rules use high-specificity !important declarations on the orb.
   Address the real control by ID so its clickable area matches the visible mascot. */
html.cl-stable-ui body #clMinibotLauncherWrap{width:66px!important;max-width:66px!important;height:66px!important;right:max(12px,env(safe-area-inset-right))!important;bottom:max(12px,env(safe-area-inset-bottom))!important}
html.cl-stable-ui body #clMinibotLauncher{position:relative!important;right:auto!important;bottom:auto!important;width:66px!important;min-width:66px!important;max-width:66px!important;height:66px!important;min-height:66px!important;display:grid!important;place-items:center!important;box-sizing:border-box!important}
html.cl-stable-ui body #clMinibotLauncher .cl-minibot-launcher__orb{width:62px!important;min-width:62px!important;height:62px!important;min-height:62px!important;flex:0 0 62px!important;border:1px solid rgba(181,142,255,.30)!important;box-shadow:0 7px 20px rgba(17,9,33,.24)!important}
html.cl-stable-ui body #clMinibotLauncher .cl-minibot-launcher__orb img{width:60px!important;height:60px!important;filter:none!important;animation:none!important;transform:none!important}
html.cl-stable-ui body #clMinibotLauncher .cl-minibot-launcher__orb:before,
html.cl-stable-ui body #clMinibotLauncher .cl-minibot-launcher__orb:after{display:none!important}
@media(max-width:767.98px){
 html.cl-stable-ui body #clMinibotLauncherWrap{width:58px!important;height:58px!important}
 html.cl-stable-ui body #clMinibotLauncher{width:58px!important;min-width:58px!important;max-width:58px!important;height:58px!important;min-height:58px!important}
 html.cl-stable-ui body #clMinibotLauncher .cl-minibot-launcher__orb{width:56px!important;min-width:56px!important;height:56px!important;min-height:56px!important;flex:0 0 56px!important}
 html.cl-stable-ui body #clMinibotLauncher .cl-minibot-launcher__orb img{width:54px!important;height:54px!important}
}
/* Avoid stacking two floating controls over the same content. */
@media(min-width:768px){
 html.cl-stable-ui .back-to-top.cl153-back-visible{right:20px!important;bottom:94px!important;width:40px!important;height:40px!important}
}
@media(max-width:767.98px){
 html.cl-stable-ui .back-to-top.cl153-back-visible{display:none!important}
}
