:root{
  --navy:#0b2b4d;--navy2:#0a2746;--deep:#0a2e4f;--blue:#3b79b7;--text:#183656;--muted:#687f98;
  --line:#bdcddd;--soft:#f1f5f8;--warm:#f4f0e8;--white:#fff;--shell:1240px;
}
*{box-sizing:border-box;}html{scroll-behavior:smooth;}body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--text);background:#fff;line-height:1.45;}a{color:inherit;text-decoration:none;}img{display:block;max-width:100%;}button,input,select{font:inherit;}.shell{width:min(var(--shell),calc(100% - 80px));margin:auto;}.section-grid{position:relative;background-image:linear-gradient(rgba(38,87,135,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(38,87,135,.035) 1px,transparent 1px);background-size:44px 44px;}.warm{background-color:#f4f0e8;}.blue-soft{background-color:#f0f4f7;}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.22em;color:#4a89be;margin-bottom:18px;}.header{height:90px;border-bottom:1px solid #cbd7e2;background:#fff;position:sticky;top:0;z-index:30;}.header__inner{height:100%;display:grid;grid-template-columns:1fr auto 210px;align-items:center;gap:32px;}.logo{font-weight:800;letter-spacing:.18em;font-size:20px;}.nav{display:flex;gap:58px;font-size:15px;}.header__cta{border:1px solid var(--navy);padding:15px 24px;text-align:center;font-weight:700;}.menu-btn{display:none;background:transparent;border:0;width:40px;height:40px;}.menu-btn span{display:block;height:2px;background:var(--navy);margin:7px 0;}
.hero{background-color:#fbfaf7;}.hero__grid{min-height:752px;display:grid;grid-template-columns:1fr 1.08fr;gap:74px;align-items:center;}.hero__copy{padding-left:0;}.hero h1{font-size:68px;line-height:.98;font-weight:400;letter-spacing:-.045em;margin:0 0 42px;}.hero__lead{font-size:22px;color:var(--muted);max-width:620px;margin:0 0 36px;}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 25px;font-weight:700;border:1px solid var(--navy);font-size:14px;}.btn-outline{background:#fff;}.btn-solid{background:var(--navy);color:#fff;width:100%;}.hero__media{margin:0;background:var(--navy);padding:18px 18px 0;}.hero__media img{width:100%;aspect-ratio:16/9;object-fit:cover;}.hero__media figcaption{height:48px;display:flex;align-items:center;color:#fff;font-size:11px;font-weight:700;letter-spacing:.17em;}
.industries{padding:110px 0 125px;background-color:#fff;}.section-head{margin-bottom:90px;}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start;}.section-head h2{font-size:50px;line-height:1.02;font-weight:400;margin:0;}.section-head p{font-size:21px;color:var(--muted);margin:8px 0 0;max-width:560px;}.industry-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}.industry-card{border:1px solid #9fb2c5;background:#fff;min-height:680px;display:flex;flex-direction:column;}.industry-card>img{width:100%;height:255px;object-fit:cover;}.card-body{padding:28px 28px 25px;display:flex;flex-direction:column;flex:1;}.num{font-size:11px;color:#4c8bbd;font-weight:800;letter-spacing:.1em;margin-bottom:18px;}.industry-card h3,.service-card h3,.principle-card-img h3{font-size:24px;line-height:1.06;font-weight:400;margin:0 0 24px;}.industry-card p,.service-card p,.principle-card-img p{font-size:14px;color:var(--muted);margin:0 0 22px;}.industry-card ul,.service-card ul{list-style:none;padding:0;margin:auto 0 25px;border-top:1px solid #d5dfe8;}.industry-card li,.service-card li{padding:10px 0;border-bottom:1px solid #d5dfe8;font-size:12px;}.industry-card a,.service-card a{font-size:12px;font-weight:800;margin-top:auto;}.industry-card a::after,.service-card a::after{content:"";}.industry-card:hover,.service-card:hover{transform:translateY(-3px);transition:.2s;}.industry-card:hover img,.service-card:hover img{transform:scale(1.02);transition:.3s;}
.services{padding:110px 0 130px;}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}.service-card{background:#fff;border:1px solid #b7c4d2;min-height:850px;display:flex;flex-direction:column;}.service-card>img{width:100%;height:265px;object-fit:cover;}.service-card h4{font-size:10px;letter-spacing:.15em;color:#4c8bbd;margin:4px 0 14px;}.service-card .card-body{padding:30px;}.service-card p{font-size:14px;}.service-card li{font-size:12px;}
.participation{padding:105px 0 120px;}.participation__photo{width:100%;height:530px;object-fit:cover;margin-bottom:60px;}.principle-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:38px;}.text-card{background:#fff;padding:42px;min-height:320px;}.text-card span{font-size:12px;font-weight:800;color:#8b765d;}.text-card h3{font-family:Georgia,serif;font-size:31px;font-weight:400;line-height:1.13;margin:32px 0 24px;}.text-card p{font-size:18px;margin:0;color:#33485f;}.participation__formats{margin-top:86px;border-top:1px solid #bdb1a1;padding-top:45px;}.participation__formats h2{font-family:Georgia,serif;font-size:50px;font-weight:400;margin:0 0 45px;}.format-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}.format-grid article{background:#ebe5dc;min-height:300px;padding:38px;}.format-grid h4{font-size:15px;border-bottom:1px solid #b9ad9f;padding-bottom:20px;margin:0 0 28px;}.format-grid p{font-size:17px;margin:0;color:#33485f;}
.management{padding:92px 0 98px;}.management>.shell>.eyebrow{margin-bottom:10px;}.management__title{font-size:58px;font-weight:400;margin:0 0 44px;}.management__intro{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-bottom:50px;}.management__intro p{background:#fff;border-top:5px solid var(--navy);padding:42px;font-size:18px;color:#4f657d;min-height:285px;margin:0;}.management-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:30px;}.management-card{background:#fff;border-top:5px solid var(--navy);padding:34px;grid-column:span 2;min-height:330px;}.management-card.wide{grid-column:span 3;}.management-card span,.competence-grid span{display:inline-flex;background:#eff5f9;color:#5f94bd;padding:4px 10px;border-radius:30px;font-size:11px;font-weight:800;}.management-card h3{font-size:28px;font-weight:400;line-height:1.12;margin:24px 0;}.management-card p{font-size:17px;color:#536b82;margin:0;}
.competence-dark{background-color:var(--navy);background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:44px 44px;background-position:center top;padding:78px 0;}.competence-panel{background:#fff;border-radius:46px;padding:72px 90px 76px;}.competence-panel>.eyebrow{margin-bottom:10px;}.competence-panel h2{font-size:56px;font-weight:400;text-align:center;margin:0 0 44px;}.competence-intro{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-bottom:35px;}.competence-intro p,.competence-grid article{border-top:5px solid var(--navy);border-left:1px solid #adc0d1;border-right:1px solid #adc0d1;border-bottom:1px solid #adc0d1;padding:34px;color:#5f7489;font-size:17px;margin:0;min-height:220px;}.competence-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;}.competence-grid article{min-height:230px;}.competence-grid h3{font-size:27px;font-weight:400;color:var(--text);margin:24px 0 18px;}.competence-grid p{margin:0;}
.principles{padding:94px 0 104px;}.principles>.shell>.eyebrow{margin-bottom:8px;}.principles__title{font-size:58px;text-align:center;font-weight:400;margin:8px 0 48px;}.principle-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;}.principle-card-img{background:#fff;border:1px solid #b8c6d3;}.principle-card-img img{width:100%;height:390px;object-fit:cover;}.principle-card-img .card-body{padding:34px;}.principle-card-img h3{font-size:27px;}.principle-card-img p{font-size:16px;line-height:1.55;}.text-link{display:inline-block;margin-top:45px;font-size:13px;font-weight:800;border-bottom:1px solid var(--navy);padding-bottom:4px;}
.diagnostics{padding:110px 0 95px;background:#fff;}.diagnostic-box{display:grid;grid-template-columns:1fr 1.15fr;border:1px solid #b6c7d8;}.diagnostic-photo{width:100%;height:100%;min-height:700px;object-fit:cover;}.diagnostic-form{padding:50px 70px;}.diagnostic-form h2{font-size:40px;font-weight:400;line-height:1.05;margin:0 0 20px;}.diagnostic-form>p{font-size:14px;color:#687f98;margin:0 0 24px;}.diagnostic-form label{display:block;font-size:11px;font-weight:800;letter-spacing:.08em;margin:0 0 17px;}.diagnostic-form input,.diagnostic-form select{width:100%;height:55px;border:1px solid #b8c8d7;background:#fff;padding:0 16px;color:#526982;margin-top:8px;}.consent{font-size:10px!important;}.form-note{font-size:10px!important;margin-top:18px!important;}.form-status{min-height:20px;margin-top:10px;color:#1f6b4c;font-size:12px;}.footer{background:#0c3456;color:#fff;padding:80px 0 25px;}.footer__grid{display:grid;grid-template-columns:1.4fr .7fr 1fr;gap:100px;min-height:370px;}.footer-logo{font-size:13px;font-weight:800;letter-spacing:.18em;margin-bottom:32px;}.footer p{font-size:13px;color:#d4dfE9;max-width:380px;}.footer h4{font-size:11px;letter-spacing:.18em;margin:0 0 30px;}.footer a{display:block;font-size:12px;color:#e8eff5;margin:0 0 16px;}.footer__bottom{border-top:1px solid rgba(255,255,255,.22);padding-top:22px;font-size:10px;color:#bacbd9;}
.reveal{opacity:0;transform:translateY(16px);transition:.36s ease;}.reveal.in{opacity:1;transform:none;}
.hero .reveal{opacity:1;transform:none;}
@media(max-width:1020px){.shell{width:min(94%,var(--shell));}.header__inner{grid-template-columns:1fr auto;}.nav,.header__cta{display:none;}.menu-btn{display:block;}.hero__grid{grid-template-columns:1fr;min-height:auto;padding:70px 0;}.hero h1{font-size:58px;}.hero__media{margin-top:15px;}.two-col{grid-template-columns:1fr;gap:20px;}.industry-grid,.service-grid{grid-template-columns:1fr 1fr;}.principle-mini-grid,.principle-grid,.competence-intro,.competence-grid,.diagnostic-box{grid-template-columns:1fr;}.format-grid{grid-template-columns:1fr;}.management-grid{grid-template-columns:1fr 1fr;}.management-card,.management-card.wide{grid-column:span 1;}.management__intro{grid-template-columns:1fr;}.competence-panel{padding:60px 45px;}.diagnostic-photo{min-height:520px;}.footer__grid{grid-template-columns:1fr 1fr;gap:50px;}}
@media(max-width:640px){.shell{width:calc(100% - 36px);}.header{height:72px;}.logo{font-size:16px;}.hero__grid{padding:50px 0;}.hero h1{font-size:44px;}.hero__lead{font-size:18px;}.hero__media{padding:10px 10px 0;}.hero__media figcaption{font-size:9px;}.industries,.services,.participation,.management,.principles,.diagnostics{padding:70px 0;}.section-head{margin-bottom:50px;}.section-head h2,.management__title,.principles__title,.competence-panel h2{font-size:40px;}.section-head p{font-size:17px;}.industry-grid,.service-grid,.management-grid{grid-template-columns:1fr;}.industry-card,.service-card{min-height:auto;}.industry-card>img,.service-card>img{height:230px;}.participation__photo{height:300px;}.principle-mini-grid{grid-template-columns:1fr;}.text-card{padding:28px;}.participation__formats h2{font-size:38px;}.competence-dark{padding:32px 0;}.competence-panel{padding:42px 20px;border-radius:22px;}.principle-card-img img{height:260px;}.diagnostic-form{padding:35px 22px;}.diagnostic-form h2{font-size:34px;}.footer__grid{grid-template-columns:1fr;gap:35px;min-height:auto;}.footer{padding-top:55px;}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;}.reveal{opacity:1;transform:none;transition:none;}.industry-card:hover,.service-card:hover{transform:none;}.industry-card:hover img,.service-card:hover img{transform:none;}}


@media (min-width:1021px){
  .services{padding-bottom:70px;}
  
  
  
  
  
  
  
  
  
  
  
  
  
  @keyframes serviceCue{0%{transform:translateX(0);}70%,100%{transform:translateX(124px);}}
}

/* Tablet/mobile: keep the complete six-card list, no sticky scroll trap. */





@media (min-width:1021px){
  :root{--scene-edge-gap:24px;--site-header-h:90px;}

  /* Equal section rhythm above and below the card scenes. */
  .industries,.services{padding-top:96px!important;padding-bottom:96px!important;}
  .industries .section-head,.services .section-head{margin-bottom:58px!important;}

  /* Hero: larger visual and larger navy frame. */
  .hero__grid{
    grid-template-columns:minmax(0,.84fr) minmax(0,1.26fr)!important;
    gap:54px!important;
    min-height:790px!important;
  }
  .hero__media{
    margin-left:0!important;
    padding:28px 28px 0!important;
  }
  .hero__media img{
    aspect-ratio:16/9!important;
    min-height:440px;
    object-fit:cover;
  }
  .hero__media figcaption{height:58px!important;}

  /* Service scene no longer depends on continuous wheel progress. */
  
  
  
  
  
  
  
  
  
  
  
}

/* Public tablet/mobile keeps the ordinary complete grid. */



/* CMS editor: always show all editable cards in a plain grid. */










/* =========================================================
   V4 — grouped vertical card stacking, slower scroll travel
   ========================================================= */


/* =========================================================
   V5 — hero image with perspective data overlays
   ========================================================= */
.hero-media-stage{
  position:relative;
  width:100%;
  aspect-ratio:4 / 3;
  overflow:hidden;
  isolation:isolate;
  background:#07172a;
}
.hero-media-stage>img{
  position:absolute;
  inset:0;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  object-fit:cover!important;
  object-position:center center;
  z-index:0;
}

































/* Keep the CMS editor usable: overlay is visual only. */

@media(max-width:1020px){
  .hero-media-stage{aspect-ratio:4/3;}
  
}

@media (min-width:1021px){
  .hero__media .hero-media-stage{min-height:0!important;}
  .hero__media .hero-media-stage>img{min-height:0!important;}
}

/* =========================================================
   V6 — each table surface gets its own perspective and faces the people
   ========================================================= */



/* First sheet — large sheet under the man. */


/* Second sheet — separate paper under the woman. */


/* Tablet — its own perspective plane, not sharing the paper transform. */


/* Keep information farther from paper/tablet edges. */











/* At smaller desktop widths keep the planes coherent rather than enlarging text. */


/* =========================================================
   V7 — real video behind the office windows
   ========================================================= */
.hero-media-stage{
  background:#07172a;
}
.hero-window-video,
.hero-window-video-tint{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
}
.hero-window-video{
  z-index:0;
  object-fit:cover;
  object-position:center 4%;
  transform:translateY(-14%) scale(1.46);
  filter:brightness(.5) saturate(.8) contrast(1.14) hue-rotate(2deg);
}
.hero-window-video-tint{
  z-index:1;
  background:linear-gradient(180deg,rgba(4,18,38,.16),rgba(3,17,38,.34));
  mix-blend-mode:multiply;
}
.hero-media-stage>img{
  z-index:2!important;
}

/* subtle glass reflection so the movie still feels behind real glazing */
.hero-media-stage::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  background:
    linear-gradient(105deg,rgba(255,255,255,.025) 0 18%,transparent 30% 70%,rgba(188,218,255,.035) 84%,transparent 100%);
  opacity:.8;
}
/* In editor keep video non-interactive and below CMS image controls. */
.cms-editor-active .hero-window-video,
.cms-editor-active .hero-window-video-tint{pointer-events:none!important;}
@media (prefers-reduced-motion:reduce){
  .hero-window-video{display:none;}
}

/* =========================================================
   V11 — strong final hero alignment overrides
   Video: closer/higher. Data planes: lower and counter-clockwise.
   ========================================================= */
.hero-window-video{
  object-position:center top!important;
  transform:translateY(-24%) scale(1.72)!important;
  filter:brightness(.50) saturate(.82) contrast(1.15) hue-rotate(2deg)!important;
}

/* Left paper: follow the long lower-left sheet, text faces the people. */



/* Right paper: independent plane under the woman. */



/* Tablet: align to its own black frame, lower and slightly CCW. */



/* Keep graphic content compact after the stronger perspective. */










/* =========================================================
   V12 — hero paper/tablet final fit
   Bigger surfaces, cleaner angles, closer skyline.
   ========================================================= */
.hero-window-video{
  object-position:center top!important;
  transform:translateY(-38%) scale(2.15)!important;
}

/* Global size increase for hero data surfaces */












/* Left sheet */



/* Right sheet */



/* Tablet */




/* =========================================================
   V13 — straighten hero graphics overlays
   ========================================================= */

















/* =========================================================
   V14 — exact 4-corner projective mapping for Hero surfaces
   JS computes a homography for each real paper/tablet plane.
   ========================================================= */




/* First paper: larger editorial dashboard filling the whole sheet. */












/* Second paper: priorities use the sheet instead of floating in its center. */






/* Tablet dashboard fills the white display area. */












/* =========================================================
   V15 — stable projected planes. JS transforms wrapper; content
   remains an ordinary local dashboard and is rotated toward people.
   ========================================================= */







/* Larger, calmer graphics that fill each real surface. */





















/* =========================================================
   V16 — projective surface fix
   Wrapper geometry is owned by JS; old percentage transforms must not leak.
   ========================================================= */


/* Keep dashboards comfortably inside the physical edges. */




/* =========================================================
   V18 — final hero surface alignment
   Left sheet: a bit more counter-clockwise.
   Right sheet: slightly clockwise and visually more even.
   Tablet: keep straight, only move lower.
   ========================================================= */





/* V18 VIDEO30 — exact requested Hero video placement */
.hero-window-video {
  object-position: center top !important;
  transform: translateY(-48%) scale(2.55) !important;
}



/* =========================================================
   V24 — poster-first Hero video + richer section entrances
   ========================================================= */
.hero-window-poster{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center top;
  transform:translateY(-48%) scale(2.55);
  transform-origin:50% 0;
  z-index:0;
  pointer-events:none;
  opacity:1;
  transition:opacity .85s cubic-bezier(.22,.61,.36,1);
}
.hero-window-video{
  z-index:1!important;
  opacity:0;
  transition:opacity .85s cubic-bezier(.22,.61,.36,1);
}
.hero-window-video-tint{z-index:2!important;}
.hero-media-stage>img{z-index:3!important;}
.hero-media-stage::after{z-index:4!important;}

.hero-media-stage.hero-video-ready .hero-window-video{opacity:1;}
.hero-media-stage.hero-video-ready .hero-window-poster{opacity:0;}

/* Motion primitives. No shadows: depth comes from clipping, scale and typography. */
.motion-item{
  --motion-delay:0ms;
  transition-property:opacity,transform,clip-path,border-color;
  transition-duration:.82s;
  transition-delay:var(--motion-delay);
  transition-timing-function:cubic-bezier(.16,1,.3,1);
  will-change:opacity,transform,clip-path;
}
.motion-item.motion-left{opacity:0;transform:translate3d(-48px,0,0);}
.motion-item.motion-right{opacity:0;transform:translate3d(48px,0,0);}
.motion-item.motion-up{opacity:0;transform:translate3d(0,32px,0);}
.motion-item.motion-title{opacity:0;transform:translate3d(0,28px,0);clip-path:inset(0 0 100% 0);}
.motion-item.motion-card{opacity:0;transform:translate3d(0,42px,0) scale(.982);}
.motion-item.motion-clip{opacity:.25;transform:scale(1.025);clip-path:inset(0 100% 0 0);}
.motion-item.motion-in{opacity:1;transform:none;clip-path:inset(0 0 0 0);}

/* Images unfold after the card shell appears. */
.motion-content-sequence>img{
  clip-path:inset(0 0 18% 0);
  transform:scale(1.045);
  transition:clip-path .95s cubic-bezier(.16,1,.3,1),transform 1.1s cubic-bezier(.16,1,.3,1);
}
.motion-content-sequence.motion-in>img{clip-path:inset(0);transform:scale(1);}
.motion-content-sequence .num,
.motion-content-sequence h3,
.motion-content-sequence h4,
.motion-content-sequence p,
.motion-content-sequence li,
.motion-content-sequence a{
  opacity:0;
  transform:translateY(13px);
  transition:opacity .58s ease,transform .72s cubic-bezier(.16,1,.3,1);
}
.motion-content-sequence.motion-in .num{transition-delay:calc(var(--motion-delay) + 110ms);}
.motion-content-sequence.motion-in h3{transition-delay:calc(var(--motion-delay) + 170ms);}
.motion-content-sequence.motion-in h4,
.motion-content-sequence.motion-in p{transition-delay:calc(var(--motion-delay) + 240ms);}
.motion-content-sequence.motion-in li,
.motion-content-sequence.motion-in a{transition-delay:calc(var(--motion-delay) + 315ms);}
.motion-content-sequence.motion-in .num,
.motion-content-sequence.motion-in h3,
.motion-content-sequence.motion-in h4,
.motion-content-sequence.motion-in p,
.motion-content-sequence.motion-in li,
.motion-content-sequence.motion-in a{opacity:1;transform:none;}

/* The final card triplet remains pinned after the last transition. */


@media (prefers-reduced-motion:reduce){
  .hero-window-poster{display:none;}
  .hero-window-video{opacity:1!important;}
  .motion-item,.motion-content-sequence>img,.motion-content-sequence *{
    opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important;
  }
}


/* =========================================================
   V25 — hero poster fix: immediate visible hero and real poster behind transparent windows
   ========================================================= */
.hero-media-stage{background:#07172a;}
.hero-window-poster,.hero-window-video,.hero-window-video-tint,.hero-window-glass{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.hero-window-poster{z-index:0;object-fit:cover;object-position:center top;transform:translateY(-48%) scale(2.55);opacity:1;transition:opacity .85s cubic-bezier(.22,.61,.36,1);}
.hero-window-video{z-index:1!important;object-fit:cover;object-position:center top!important;transform:translateY(-48%) scale(2.55)!important;opacity:0;transition:opacity .85s cubic-bezier(.22,.61,.36,1);}
.hero-window-video-tint{z-index:2!important;}
.hero-window-glass{z-index:3!important;object-fit:cover!important;object-position:center center!important;}
.hero-media-stage::after{z-index:4!important;}

.hero-media-stage.hero-video-ready .hero-window-video{opacity:1!important;}
.hero-media-stage.hero-video-ready .hero-window-poster{opacity:0!important;}


/* =========================================================
   V26 — restore missing participation media + city visible in hero poster
   ========================================================= */
.hero-window-poster{
  object-position:center top!important;
  transform:translateY(-110%) scale(2.55)!important;
}
.hero-window-video{
  object-position:center top!important;
  transform:translateY(-110%) scale(2.55)!important;
}
/* The photo above the 01–04 principle cards must never be left clipped away. */
.participation__photo{
  opacity:1!important;
  transform:none!important;
  clip-path:none!important;
  visibility:visible!important;
}

/* =========================================================
   V27 — restore only the moving video position.
   Keep V26 poster placement intact.
   ========================================================= */
.hero-window-video{
  object-position:center top!important;
  transform:translateY(-48%) scale(2.55)!important;
}


/* =========================================================
   V29 — clickable industry cards on homepage
   ========================================================= */
.industry-card--linked{cursor:pointer;position:relative;}
.industry-card--linked:focus-visible{outline:2px solid #2d6fc3;outline-offset:4px;}
.industry-card--linked > img{transition:transform .55s cubic-bezier(.2,.7,.2,1),filter .45s ease;}
.industry-card--linked:hover > img{transform:scale(1.025);}
.industry-card--linked .card-body h3{transition:color .25s ease;}
.industry-card--linked:hover .card-body h3{color:#2d6fc3;}
.industry-card--linked .card-body > a{position:relative;z-index:2;}


/* =========================================================
   V42 — stable desktop geometry without CSS zoom.
   The content canvas keeps the same logical width on Full HD,
   2K and wider displays. This prevents the second reflow that
   CSS zoom caused after the editor/CMS finished loading.
   Full HD is now slightly larger than V41 because the page is
   no longer scaled down from a 2048px virtual body.
   ========================================================= */
:root{
  --page-desktop-left:274px;
  --page-desktop-right:274px;
  --page-reference-width:2048px;
  --page-content-max:calc(var(--page-reference-width) - var(--page-desktop-left) - var(--page-desktop-right));
}
@media (min-width:1021px){
  html{overflow-x:hidden;}
  body[data-page-key]{
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    
  }
  .shell,
  .industry-shell,
  .service-shell{
    width:var(--page-content-max)!important;
    max-width:calc(100vw - 48px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .industry-page .ip-header .shell,
  .industry-page .ip-footer .shell,
  .service-page .sp-header .service-shell,
  .service-page .sp-footer .service-shell{
    width:var(--page-content-max)!important;
    max-width:calc(100vw - 48px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
}


/* V34 — persistent CMS image crop viewport */
.cms-crop-host{overflow:hidden!important;}


/* =========================================================
   V36 — Canonical 960×720 hero analytics canvas.
   The three projected surfaces are scaled with the photo stage,
   so they cannot drift when page gutters / 2K scaling change.
   ========================================================= */






































/* first-load drawing / writing sequence */

















/* =========================================================
   V37 — geometry repair after V36.
   ========================================================= */
.hero__media{display:block!important;overflow:hidden!important;}
.hero-media-stage{width:100%!important;aspect-ratio:4/3!important;}

.hero__media figcaption{
  position:relative!important;
  z-index:8!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0!important;
}




/* =========================================================
   V43 — Full HD mirrors the 2K composition.
   Keep real side gutters on 1920-class screens instead of
   letting the editor preview stretch almost edge-to-edge.
   2K (>= 2000px CSS viewport) keeps the existing geometry.
   ========================================================= */
@media (min-width:1021px) and (max-width:1999px){
  body[data-page-key] .shell,
  body[data-page-key] .industry-shell,
  body[data-page-key] .service-shell,
  .cms-editor-page.cms-device-desktop .cms-preview .shell,
  .cms-editor-page.cms-device-desktop .cms-preview .industry-shell,
  .cms-editor-page.cms-device-desktop .cms-preview .service-shell{
    width:calc(100vw - 300px)!important;
    max-width:1500px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }

  .industry-page .ip-header .shell,
  .industry-page .ip-footer .shell,
  .service-page .sp-header .shell,
  .service-page .sp-footer .shell{
    width:calc(100vw - 300px)!important;
    max-width:1500px!important;
  }
}


/* V47 — Full HD keeps the exact same internal desktop geometry as 2K. */
@media (min-width:1600px) and (max-width:1999px){
  body[data-page-key] .shell,body[data-page-key] .industry-shell,body[data-page-key] .service-shell,
  .cms-editor-page.cms-device-desktop .cms-preview .shell,.cms-editor-page.cms-device-desktop .cms-preview .industry-shell,.cms-editor-page.cms-device-desktop .cms-preview .service-shell{
    width:var(--page-content-max)!important;max-width:calc(100vw - 48px)!important;margin-left:auto!important;margin-right:auto!important;
  }
}


/* V50 — cleaner hero analytics: straighter layouts, more charts, stronger motion. */



















































/* =========================================================
   V53 — physical-perspective correction for hero documents.
   The right sheet is no longer "fixed" with an extra X squeeze.
   Instead its source canvas is wider and the homography performs
   the compression naturally, which keeps typography proportional.
   ========================================================= */








/* The donut is printed on the same inclined plane as the sheet.
   A flatter ellipse reads much more like a circle viewed under perspective. */









/* =========================================================
   V67 — centered Full HD 85% visual scale.
   The whole public page is reduced proportionally: typography,
   images, blocks, gaps and shared chrome. 2K+ remains unchanged.
   ========================================================= */


/* v2-5-7 — custom industry context */
.ts-context-custom[hidden]{display:none!important}.ts-context-custom{margin-top:8px!important}


/* =========================================================
   V259 — stable WebM hero / exact WebP poster fallback
   ========================================================= */
.hero-window-poster,
.hero-window-video--forward,
.hero-window-video--reverse{
  object-fit:cover!important;
  object-position:center top!important;
  transform:translateY(-48%) scale(2.55)!important;
  transform-origin:50% 0!important;
}
.hero-window-video--forward,
.hero-window-video--reverse{
  opacity:0!important;
  transition:opacity .24s linear!important;
}
.hero-media-stage.hero-video-ready .hero-window-video{
  opacity:0!important;
}
.hero-media-stage.hero-video-ready .hero-window-video.is-active{
  opacity:1!important;
}
.hero-media-stage:not(.hero-video-ready) .hero-window-poster{
  opacity:1!important;
}
.hero-media-stage.hero-video-ready .hero-window-poster{
  opacity:0!important;
}


/* =========================================================
   V263 — HOME HERO VIDEO FRAMING
   Controlled only by the special video editor on the HOME page.
   Other images/videos on the site are not affected.
   ========================================================= */
.hero-window-poster,
.hero-window-video--forward,
.hero-window-video--reverse{
  transform:
    translate(
      var(--hero-video-x, 0%),
      var(--hero-video-y, -48%)
    )
    scale(var(--hero-video-zoom, 2.55)) !important;
  transform-origin:50% 0!important;
}
\n\n/* =========================================================\n   V265 — adjustable home-video darkness\n   ========================================================= */\n.hero-window-poster,\n.hero-window-video--forward,\n.hero-window-video--reverse{\n  filter:brightness(var(--hero-video-bg-brightness,.4975)) saturate(.82) contrast(1.15) hue-rotate(2deg)!important;\n}\n