/* Shared layout rules are loaded last on every page. */
.e.complete .simple-service-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}
.e.complete .simple-service-grid>a{min-width:0}
.e.complete .simple-service-grid img{display:block;width:100%;height:230px;object-fit:cover}
.e.complete .simple-service-grid h3{font-size:25px;overflow-wrap:anywhere}

/* One footer palette and layout, independent of the page body classes. */
.e.complete .footer{background:#eef2f7;color:#16305c;padding:48px 0 24px;border-top:1px solid #c9d6e5}
.e.complete .footer .two{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:48px;align-items:start}
.e.complete .footer h2{font-size:37px;line-height:1.15;max-width:700px;color:#16305c;margin:0 0 24px}
.e.complete .footer h2:after{display:none}
.e.complete .footer b{color:#16305c}
.e.complete .footer p,.e.complete .footer .eyebrow,.e.complete .footer .opening-hours,
.e.complete .footer .opening-hours p,.e.complete .footer .opening-hours small,
.e.complete .footer .bottom,.e.complete .footer .footer-links{color:#44536b}
.e.complete .footer .eyebrow{display:block;margin:0 0 16px}
.e.complete .footer a:not(.button){color:#16305c}
.e.complete .footer a:not(.button):hover{color:#2a6ebb}
.e.complete .footer .button{background:#2a6ebb;color:#fff}
.e.complete .footer .button:hover{background:#16305c}
.e.complete .footer .opening-hours{margin-top:22px;font-size:14px}
.e.complete .footer .opening-hours b{font-size:13px;font-weight:600}
.e.complete .footer .opening-hours p{font-size:13px;margin:8px 0 12px}
.e.complete .footer .opening-hours small{font-size:11px}
.e.complete .footer .footer-links{display:flex;flex-wrap:wrap;gap:14px 25px;margin:28px 0 0;padding:22px 0 0;border-top:1px solid #c9d6e5;font-size:12px}
.e.complete .footer .bottom{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;gap:14px 24px;margin:22px 0 0;padding:0;border:0;font-size:12px}
@media(max-width:1000px){
  .e.complete .simple-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .e.complete .simple-service-grid{gap:26px 18px}
  .e.complete .simple-service-grid img{height:180px}
  .e.complete .simple-service-grid h3{font-size:22px}
  .e.complete .footer{padding:38px 0 24px}
  .e.complete .footer .two{grid-template-columns:minmax(0,1fr);gap:30px}
  .e.complete .footer h2{font-size:34px}
  .e.complete .footer .footer-links{gap:14px 22px;margin-top:26px;padding-top:20px}
  .e.complete .footer .bottom{flex-direction:column;gap:12px}
}
@media(max-width:390px){
  .e.complete .simple-service-grid{grid-template-columns:minmax(0,1fr)}
  .e.complete .simple-service-grid img{height:220px}
}

/* Page canvas: white throughout, with the same muted surface for inset
   information and the footer. Photographic heroes keep their own contrast. */
body.e.complete{--page-canvas:#fff;--panel-surface:#eef2f7;background:var(--page-canvas);min-height:100vh;min-height:100svh;display:flex;flex-direction:column}
.e.complete>main{background:var(--page-canvas);flex:1;width:100%}
.e.complete>.site-header,.e.complete>.footer{flex-shrink:0}
.e.complete .project-article,.e.complete .project-gallery,
.e.complete .selected-projects,.e.complete .older-projects,
.e.complete .vendor-strip,.e.complete .simple-company,
.e.complete .detail-intro,.e.complete .simple-intro,
.e.complete .directory-section,.e.complete .news-index,
.e.complete .detail-related{background:var(--page-canvas)}
.e.complete .detail-aside,.e.complete .project-facts,
.e.complete .technical-toc,.e.complete .project-draft{background:var(--panel-surface)}
.e.complete .contact-form-panel{background:var(--panel-surface)}
.e.complete .service-index-card{background:var(--page-canvas);border:1px solid #d9e2ee}
.e.complete .detail-related{border-top:1px solid #e2e8ef}
.e.complete :is(.detail-heading,.product-heading,.project-title,.news-article,.simple-intro) h1{font-size:clamp(42px,4.8vw,65px);line-height:1.08;color:#16305c;text-wrap:balance}
@media(max-width:760px){
  .e.complete :is(.detail-heading,.product-heading,.project-title,.news-article,.simple-intro) h1{font-size:clamp(34px,8.5vw,45px)}
}
@media print{
  body.e.complete{display:block;min-height:0}
  .e.complete>main,.e.complete .contact-form-panel,.e.complete .detail-aside{background:white}
}
.e.complete .error-page{padding-bottom:65px}
.e.complete .error-page .related-links{margin:38px 0 26px}
.e.complete .error-page>p{color:#44536b;line-height:1.75}
.e.complete .error-page>p a{text-decoration:underline;text-underline-offset:3px}

/* The direct body wrapper contains the shared header. Keep it in flow while
   pinning it above page content and the mobile dropdown. */
body.e.complete>.wrap{position:sticky;top:0;z-index:100;width:100%;max-width:none;margin:0;padding:0;flex-shrink:0;background:#fff;border-bottom:1px solid #e2e8ef}
.e.complete>.wrap>.site-header{max-width:1280px;margin:0 auto;padding:0 48px}
.e.complete .technical-toc{top:120px}
@media(max-width:1000px){
  .e.complete>.wrap>.site-header{padding:0 28px}
  .e.complete .technical-toc{top:107px}
}
@media(max-width:760px){
  .e.complete>.wrap>.site-header{padding:0 22px}
}
@media print{body.e.complete>.wrap{display:none}}

/* Wide partner artwork shares the existing news layout. */
.loxone-visual.wide-brand-visual img{width:100%;max-width:300px;height:90px;object-fit:contain}
.vendor-grid a[data-brand="sentinum"] img{filter:brightness(0)}

/* Names-only staff section below the existing contact groups. */
.e.complete .staff-name-section{border-top:1px solid #e2e8ef;padding-top:34px;margin-top:40px;margin-bottom:48px}
.e.complete .staff-name-section h2{font-size:30px;line-height:1.2;letter-spacing:-.025em;margin:0 0 27px}
.e.complete .staff-name-section h2:after{display:none}
.e.complete .staff-name-list{list-style:none;columns:3;column-gap:38px;padding:0;margin:0}
.e.complete .staff-name-list li{break-inside:avoid;padding:12px 0;border-bottom:1px solid #e2e8ef;font-size:15px;line-height:1.6;color:#16305c;overflow-wrap:anywhere}
@media(max-width:760px){.e.complete .staff-name-list{columns:2;column-gap:30px}}
@media(max-width:460px){.e.complete .staff-name-list{columns:1}.e.complete .staff-name-section h2{font-size:28px}}
/* Compact staff and product cards across desktop, tablet and phone widths. */
.e.complete .people-group .people-contacts.people-portraits{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.e.complete .people-group .people-contacts.people-portraits article{padding:0;border:0;border-radius:0;background:transparent}
.e.complete .people-group .person-info{padding:18px 0 0}
.e.complete .people-group .person-portrait,.e.complete .people-group .person-photo-space{width:min(100%,176px);height:auto;aspect-ratio:4/5;align-self:flex-start;object-fit:cover;flex-shrink:0}
.e.complete .people-group .person-portrait{object-position:50% 30%}
.e.complete .product-grid,.e.complete #sentinum>.product-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.e.complete .product-card-image{height:190px;padding:22px}
.e.complete .product-visual>img{height:300px;padding:24px}
@media(max-width:1400px){
 .e.complete .people-group .person-portrait,.e.complete .people-group .person-photo-space{width:min(100%,160px)}
 .e.complete .product-card-image{height:170px;padding:18px}
 .e.complete .product-visual>img{height:240px;padding:20px}
 .e.complete .product-card-copy{padding:20px}
}
@media(max-width:1199px){.e.complete .people-group .people-contacts.people-portraits{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:999px){.e.complete .product-grid,.e.complete #sentinum>.product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:899px){.e.complete .people-group .people-contacts.people-portraits{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}
@media(max-width:599px){
 .e.complete .product-grid,.e.complete #sentinum>.product-grid{grid-template-columns:1fr;gap:18px}
 .e.complete .product-card-image{height:160px;padding:18px}
 .e.complete .product-visual>img{height:210px;padding:16px}
}
@media(max-width:519px){
 .e.complete .people-group .people-contacts.people-portraits{grid-template-columns:1fr;max-width:340px;margin-inline:auto}
 .e.complete .people-group .person-portrait,.e.complete .people-group .person-photo-space{width:min(100%,152px)}
}

/* Creditinfo: unchanged artwork, its own row and generous clear space on every side. */
.footer .footer-award{display:block;box-sizing:border-box;width:240px;max-width:100%;margin-top:24px;padding:16px 0}
.footer .footer-award img{display:block;width:240px;max-width:100%;height:auto}
