/* Final release: authoritative layout rules */
:root{--header-height:72px}
body{padding-top:var(--header-height)!important}
.site-header{
  position:fixed!important;
  top:0!important;
  right:0!important;
  bottom:auto!important;
  left:0!important;
  width:100%!important;
  height:var(--header-height)!important;
  z-index:10000!important;
  transform:none!important;
  -webkit-transform:none!important;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  background:rgba(255,255,255,.98)!important;
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  backdrop-filter:saturate(140%) blur(10px);
}
.header-row{height:var(--header-height)!important}
.section[id]{scroll-margin-top:calc(var(--header-height) + 18px)!important}

/* Use one consistent amount of space at every coloured section transition. */
.home-page main>.section{padding-top:64px!important;padding-bottom:64px!important}

/* Profile hierarchy: every heading has one rule and the page has one closing rule. */
.profile-page .page-section>.h3{
  padding-bottom:10px;
  margin-bottom:0;
  border-bottom:1px solid var(--hair);
}
.profile-page .page-section>.h3+.entry-list>.entry:first-child{border-top:0!important}
.profile-page .page-section>.entry-list,
.profile-page .service-entry-list{border-bottom:0!important}
.profile-page .page-section>.service-group:first-of-type{margin-top:28px!important}
.profile-page .service-group{margin-top:30px}
.profile-page .service-group-heading{
  margin-bottom:0;
  padding-bottom:8px;
  border-bottom:1px solid var(--hair);
  color:var(--navy);
}
.profile-page .service-entry-list>.entry:first-child{border-top:0!important}
.profile-page .page-return{
  margin-top:54px;
  padding-top:28px;
  border-top:1px solid var(--hair);
}
.profile-page .page-return .back-link{margin-bottom:0}
.profile-page .site-footer{border-top:0!important}

/* Make the requested logo-size difference unmistakable. */
.logo-cell-schindler{padding:12px 18px!important}
.logo-cell-schindler img{
  width:auto!important;
  height:102px!important;
  max-width:98%!important;
  max-height:102px!important;
  object-fit:contain!important;
}
.logo-cell-sfs img{
  width:36%!important;
  height:auto!important;
  max-width:36%!important;
  max-height:36px!important;
  object-fit:contain!important;
}

/* Local and self-contained previews use normal document scrolling. */

@media(max-width:850px){
  :root{--header-height:64px}
  body{padding-top:var(--header-height)!important}
  .site-header,.header-row{height:var(--header-height)!important}
  .home-page main>.section{padding-top:48px!important;padding-bottom:48px!important}
  .profile-page .page-section>.h3{padding-bottom:8px}
  .profile-page .service-group-heading{padding-bottom:7px}
  .logo-cell-schindler{padding:8px 12px!important}
  .logo-cell-schindler img{height:86px!important;max-height:86px!important;max-width:98%!important}
  .logo-cell-sfs img{width:38%!important;max-width:38%!important;max-height:30px!important}
}


/* Release 20: fine logo balance and stable iOS text rendering */
html,body{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}

/* Maintain proportions while balancing visible whitespace in each logo cell. */
.logo-cell-schindler{padding:12px 18px!important}
.logo-cell-schindler img{
  height:96px!important;
  max-height:96px!important;
  max-width:96%!important;
}
.logo-cell-jnj{padding-left:10px!important;padding-right:10px!important}
.logo-cell-jnj img{
  width:96%!important;
  max-width:96%!important;
  max-height:68px!important;
}
.logo-cell-lindt{padding-left:12px!important;padding-right:12px!important}
.logo-cell-lindt img{
  width:94%!important;
  max-width:94%!important;
  max-height:68px!important;
}
.logo-cell-sfs img{
  width:auto!important;
  height:58px!important;
  max-width:72%!important;
  max-height:58px!important;
}

/* Avoid experimental line balancing in compact feature copy. */
.feature-copy .body{ text-wrap:wrap!important; }


@media(max-width:850px){
  .logo-cell-schindler{padding:10px 14px!important}
  .logo-cell-schindler img{height:80px!important;max-height:80px!important;max-width:96%!important}
  .logo-cell-jnj{padding-left:7px!important;padding-right:7px!important}
  .logo-cell-jnj img{width:96%!important;max-width:96%!important;max-height:60px!important}
  .logo-cell-lindt{padding-left:9px!important;padding-right:9px!important}
  .logo-cell-lindt img{width:94%!important;max-width:94%!important;max-height:62px!important}
  .logo-cell-sfs img{height:50px!important;max-height:50px!important;max-width:70%!important}
}


/* Release 25: compact legal lists and transparent form notice. */
.legal ul{margin:7px 0 18px!important;padding-left:24px!important}
.legal li{margin:2px 0!important;line-height:1.48!important;text-wrap:wrap!important;white-space:normal!important;word-spacing:normal!important}
.legal p{line-height:1.58;text-wrap:wrap;white-space:normal;word-spacing:normal}

/* Release 27: unobtrusive contact-form privacy link and Turnstile container. */
.form-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.form-privacy-link{font-size:12px;line-height:1.3;color:var(--grey);text-decoration:underline;text-underline-offset:2px}
.form-privacy-link:hover{color:var(--navy)}
.turnstile-slot{width:100%;min-height:0}
.turnstile-slot iframe{max-width:100%}

/* Release 32: compact title and separate first and last name fields. */
.frow-name{grid-template-columns:.68fr 1fr 1fr}
@media(max-width:760px){.frow-name{grid-template-columns:1fr}}


/* Release 33: exact section anchors, refined mobile reading width, and utility links. */
html{
  scroll-padding-top:var(--header-height)!important;
}
.section[id]{
  scroll-margin-top:0!important;
}
.inline-link{
  color:inherit;
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:2px;
}
.inline-link:hover{color:var(--navy)}
.top-link{
  display:block;
  width:max-content;
  margin-top:18px;
  color:var(--mist);
  font-size:12px;
  font-weight:800;
  text-decoration:none;
}
.top-link::before{
  content:"↑";
  display:inline-block;
  margin-right:7px;
}
.top-link:hover{color:var(--navy)}
.legal .page-return{
  margin-top:48px;
  padding-top:24px;
  border-top:1px solid var(--hair);
}
.legal .page-return .back-link{margin-bottom:0}

@media(max-width:850px){
  .home-page .about-grid .body,
  .home-page .perspective-intro .body,
  .home-page .network-copy .body,
  .home-page .intro-copy,
  .home-page .contact-copy .body{
    width:100%!important;
    max-width:none!important;
    text-wrap:wrap!important;
    line-height:1.58!important;
  }
  .home-page .body,
  .home-page .lead,
  .home-page .pov-text,
  .home-page .questions-intro{
    text-wrap:wrap!important;
  }
}

/* Release 38: independent network tiles aligned with the site-wide content width. */
#network .network-copy{
  width:100%!important;
  max-width:960px!important;
}
#network .industries-title,
#network .industry-line,
#network .logo-grid-main,
#network .logo-grid-tail,
#network .network-bottom{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}
#network .logo-grid-main,
#network .logo-grid-tail{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:10px!important;
  border:0!important;
  border-radius:0!important;
  overflow:visible!important;
  background:transparent!important;
  box-shadow:none!important;
}
#network .logo-grid-main{margin-top:28px!important;margin-bottom:0!important}
#network .logo-grid-tail{margin-top:10px!important}
#network .logo-grid-main .logo-cell,
#network .logo-grid-tail .logo-cell{
  min-height:112px!important;
  padding:15px 18px!important;
  border:1px solid var(--hair)!important;
  border-radius:8px!important;
  background:#fff!important;
}
#network .logo-grid-main .logo-cell img,
#network .logo-grid-tail .logo-cell img{
  width:auto!important;
  height:auto!important;
  max-width:88%!important;
  max-height:58px!important;
  object-fit:contain!important;
}
#network .logo-grid-main .logo-cell.logo-cell-schindler{padding:10px 16px!important}
#network .logo-grid-main .logo-cell.logo-cell-schindler img{
  width:auto!important;
  height:82px!important;
  max-width:92%!important;
  max-height:82px!important;
}
#network .logo-grid-main .logo-cell.logo-cell-jnj{padding-left:12px!important;padding-right:12px!important}
#network .logo-grid-main .logo-cell.logo-cell-jnj img{
  width:88%!important;
  height:auto!important;
  max-width:88%!important;
  max-height:52px!important;
}
#network .logo-grid-main .logo-cell.logo-cell-lindt img{max-width:90%!important;max-height:50px!important}
#network .logo-grid-tail .logo-cell.logo-cell-sfs img{
  width:auto!important;
  height:50px!important;
  max-width:62%!important;
  max-height:50px!important;
}
#network .roche-diagnostics-lockup img{max-height:47px!important}
#network .roche-diagnostics-lockup .division-label{margin-top:2px;font-size:10px}
#network .more-cell{
  color:var(--mist)!important;
  background:var(--panel2)!important;
  font-weight:800!important;
}
#network .network-bottom{margin-top:34px!important}
#network .network-bottom>.body{max-width:900px!important}
#network .network-bottom>.disclaimer{max-width:none!important}

@media(max-width:920px){
  #network .logo-grid-main,
  #network .logo-grid-tail{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #network .logo-grid-main .logo-cell,
  #network .logo-grid-tail .logo-cell{min-height:106px!important;padding:14px!important}
  #network .logo-grid-main .logo-cell img,
  #network .logo-grid-tail .logo-cell img{max-height:57px!important}
  #network .logo-grid-main .logo-cell.logo-cell-schindler img{height:74px!important;max-height:74px!important}
  #network .logo-grid-main .logo-cell.logo-cell-jnj img{width:90%!important;max-width:90%!important}
  #network .logo-grid-tail .logo-cell.logo-cell-sfs img{height:44px!important;max-height:44px!important;max-width:64%!important}
}

/* Release 43: equal desktop submenu widths with centred labels. */
@media(min-width:851px){
  .nav-group .submenu{
    left:50%!important;
    right:auto!important;
    width:110px!important;
    min-width:110px!important;
    margin-left:0!important;
    padding:0!important;
    box-sizing:border-box!important;
    transform:translate(-50%,-5px)!important;
    transition:none!important;
    border-radius:0 0 9px 9px!important;
  }
  .nav-group .submenu a{
    display:block!important;
    width:100%!important;
    box-sizing:border-box!important;
    padding:14px 10px 15px!important;
    border-radius:0!important;
    font-size:13.2px!important;
    line-height:21px!important;
    text-align:center!important;
  }
  .nav-group:hover .submenu,
  .nav-group:focus-within .submenu,
  .nav-group.is-open .submenu{
    transform:translate(-50%,0)!important;
  }
}

/* Featured links underline only the text rather than stretching across a flex column. */
.feature-copy>.text-link,
.feature-copy>.entry-link{
  align-self:flex-start!important;
  width:auto!important;
  max-width:100%!important;
}

/* The message field stays full-width and may be enlarged vertically within sensible bounds. */
.cform>label:not(.hp-field){display:block;width:100%}
.cform textarea{
  display:block!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  min-height:180px!important;
  max-height:420px!important;
  box-sizing:border-box!important;
  resize:vertical!important;
  overflow:auto!important;
}

/* Affiliations use five independent cards on desktop and two balanced columns on mobile. */
.affiliations{padding:32px 0 46px!important}
.affiliations-label{margin-bottom:18px!important}
.aff-grid{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:16px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  overflow:visible!important;
  background:transparent!important;
}
.aff-grid .aff{
  width:auto!important;
  height:168px!important;
  min-width:0!important;
  padding:24px 16px 19px!important;
  gap:0!important;
  border:1px solid var(--hair)!important;
  border-radius:11px!important;
  background:#fff!important;
  box-shadow:0 5px 16px rgba(19,41,75,.07)!important;
  grid-column:auto!important;
  justify-self:stretch!important;
}
.aff-grid .aff-logo{
  width:100%!important;
  height:88px!important;
  min-height:88px!important;
  margin:0 0 14px!important;
}
.aff-grid .aff-logo img{max-width:92%!important;max-height:68px!important}
.aff-grid .aff-role{
  margin-top:auto!important;
  font-size:14px!important;
  line-height:1.25!important;
  color:var(--grey)!important;
  text-align:center!important;
  white-space:normal!important;
}
.aff-grid .alliance-aff .aff-logo img{max-height:62px!important;max-width:96%!important}
.aff-grid .ai-aff .aff-logo img{max-height:72px!important}
.aff-grid .cambridge-aff .aff-logo img{max-height:58px!important;max-width:98%!important}
.aff-grid .auckland-aff .aff-logo img{max-height:76px!important;max-width:86%!important}
.aff-filler{display:none!important}

/* Requested company-logo refinements. */
#network .logo-grid-main .logo-cell.logo-cell-shl img{
  max-width:96%!important;
  max-height:70px!important;
}
#network .logo-grid-main .logo-cell.logo-cell-nestle img{
  max-width:94%!important;
  max-height:72px!important;
}

@media(max-width:850px){
  .affiliations{padding:27px 0 38px!important}
  .aff-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
  .aff-grid .aff{
    height:160px!important;
    padding:19px 12px 16px!important;
    border:1px solid var(--hair)!important;
  }
  .aff-grid .aff-logo{height:86px!important;min-height:86px!important;margin-bottom:12px!important}
  .aff-grid .aff-role{font-size:12.5px!important;line-height:1.25!important}
  .aff-grid .aff.auckland-aff{
    width:auto!important;
    grid-column:auto!important;
    justify-self:stretch!important;
    border:1px solid var(--hair)!important;
  }
  .cform textarea{
    min-height:170px!important;
    max-height:340px!important;
  }
  #network .logo-grid-main .logo-cell.logo-cell-shl img{max-height:67px!important}
  #network .logo-grid-main .logo-cell.logo-cell-nestle img{max-height:69px!important}
}

@media(max-width:560px){
  .aff-grid .aff{height:152px!important;padding:17px 11px 14px!important}
  .aff-grid .aff-logo{height:80px!important;min-height:80px!important;margin-bottom:10px!important}
  .aff-grid .aff-logo img{max-height:63px!important}
  .aff-grid .alliance-aff .aff-logo img{max-height:57px!important}
  .aff-grid .ai-aff .aff-logo img{max-height:66px!important}
  .aff-grid .cambridge-aff .aff-logo img{max-height:52px!important}
  .aff-grid .auckland-aff .aff-logo img{max-height:69px!important}
}

/* Release 53: compact section navigation with a single mobile column. */
.section-nav{
  margin-top:32px;
  padding:18px 0 20px;
  border-top:1px solid var(--hair);
  border-bottom:1px solid var(--hair);
}
.section-nav-title{
  margin-bottom:12px;
  color:var(--mist);
  font-size:11px;
  font-weight:800;
  letter-spacing:.15em;
  line-height:1.2;
  text-transform:uppercase;
}
.section-nav-links{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px 24px;
}
.section-nav-links a{
  position:relative;
  display:inline-flex;
  align-items:flex-start;
  width:max-content;
  max-width:100%;
  padding:3px 18px 3px 0;
  color:var(--navy);
  font-size:14px;
  font-weight:750;
  line-height:1.35;
  text-decoration:none;
}
.section-nav-links a::after{
  content:"↓";
  position:absolute;
  top:2px;
  right:0;
  color:var(--mist);
  font-size:13px;
  font-weight:800;
}
.section-nav-links a:hover{color:var(--mist)}
.section-nav-links a:focus-visible,
.page-return a:focus-visible{
  outline:2px solid var(--navy);
  outline-offset:4px;
  border-radius:2px;
}
.page-section[id]{scroll-margin-top:calc(var(--header-height) + 18px)!important}
.profile-page .page-return,
.speaking-page .page-return,
.publications-page .page-return{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}
.profile-page .page-return .top-link,
.speaking-page .page-return .top-link,
.publications-page .page-return .top-link{
  margin-top:0;
  margin-bottom:15px;
  font-size:13px;
}
.profile-page .page-return .back-link,
.speaking-page .page-return .back-link,
.publications-page .page-return .back-link{margin-bottom:0}

@media(max-width:850px){
  .section-nav{margin-top:28px;padding:16px 0 18px}
  .section-nav-links{grid-template-columns:1fr;gap:4px}
  .section-nav-links a{
    display:flex;
    width:100%;
    max-width:none;
    align-items:center;
    justify-content:space-between;
    padding:6px 0;
    font-size:13.5px;
    line-height:1.3;
  }
  .section-nav-links a::after{
    position:static;
    flex:0 0 auto;
    margin-left:16px;
  }
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
}


/* Release 54: one closing separator and consistent return-link spacing. */
.profile-page .page-return,
.speaking-page .page-return,
.publications-page .page-return{
  margin-top:36px;
  padding-top:0;
  border-top:0;
  gap:20px;
}
.profile-page .page-return .top-link,
.speaking-page .page-return .top-link,
.publications-page .page-return .top-link{
  margin:0;
}
.profile-page .page-return .back-link,
.speaking-page .page-return .back-link,
.publications-page .page-return .back-link{
  margin:0;
}
.profile-page .page-section:last-of-type > .entry-list{
  border-bottom:1px solid var(--hair)!important;
}
.speaking-page .page-section:last-of-type > .conference-list{
  border-bottom:1px solid var(--hair)!important;
}
