/* V110 — visual audit points 1–10. Homepage is the reference.
   Scope: primary service landings, three expert landings and the site navigation. */
:root{--ui-section-gap:88px;--ui-section-gap-mobile:64px;--ui-card-radius:14px;--ui-title-color:var(--ink,#1c2423)}

/* 1: service and expertise hero geometry exactly matches the homepage. */
@media(min-width:861px){
 body.service-landing .hero{padding-top:64px}
 body.service-landing .hero .hero-copy{padding-top:19px}
 .fx-page .hero.hero-expertise{padding-top:64px}
 .fx-page .hero.hero-expertise .hero-copy{padding-top:19px;padding-bottom:38px}
 .fx-page .hero.hero-expertise .hero-layout{gap:56px;align-items:start}
 .fx-page .hero.hero-expertise .hero-side{align-self:start}
 body.service-landing .hero .hero-image-frame,
 .fx-page .hero.hero-expertise .hero-image-frame{height:643px;min-height:0;flex:none}
}
@media(min-width:681px) and (max-width:860px){
 .fx-page .hero.hero-expertise{padding-top:45px}
 .fx-page .hero.hero-expertise .hero-layout{gap:23px}
 body.service-landing .hero .hero-image-frame,
 .fx-page .hero.hero-expertise .hero-image-frame{height:550px;min-height:0;flex:none}
}
@media(max-width:680px){
 .fx-page .hero.hero-expertise{padding-top:31px}
 .fx-page .hero.hero-expertise .hero-layout{gap:0}
 body.service-landing .hero .hero-image-frame,
 .fx-page .hero.hero-expertise .hero-image-frame{height:335px;min-height:335px;flex:none}
}

/* 2: title hierarchy, homepage retains its signature larger heading. */
@media(min-width:861px){
 body.service-landing .hero h1,.fx-page .hero.hero-expertise h1{
   font-size:clamp(39px,4.15vw,60px);line-height:1.09;letter-spacing:-.056em;font-weight:800;margin-bottom:22px}
 body.service-landing .hero .hero-lead,.fx-page .hero.hero-expertise .hero-lead{
   font-size:15.5px;line-height:1.64;margin-bottom:23px}
 .fx-page .hero.hero-expertise .hero-benefits{margin-bottom:24px}
 .fx-page .hero.hero-expertise .hero-actions{gap:22px}
}

/* 3: compress spacing only on narrow screens, no removal of SEO content. */
@media(max-width:680px){
 body.service-landing .hero h1,.fx-page .hero.hero-expertise h1{
   font-size:clamp(33px,8.6vw,43px);line-height:1.1;letter-spacing:-.05em;margin-bottom:15px}
 body.service-landing .hero .hero-copy,.fx-page .hero.hero-expertise .hero-copy{padding-bottom:23px}
 body.service-landing .hero .hero-lead,.fx-page .hero.hero-expertise .hero-lead{
   font-size:13.5px;line-height:1.57;margin-bottom:16px}
 body.service-landing .hero .eyebrow,.fx-page .hero.hero-expertise .eyebrow{margin-bottom:13px}
 body.service-landing .hero .hero-benefits,.fx-page .hero.hero-expertise .hero-benefits{
   gap:7px;margin-bottom:17px;font-size:11.5px}
 body.service-landing .hero .hero-actions,.fx-page .hero.hero-expertise .hero-actions{gap:10px}
 body.service-landing .hero .hero-micro,.fx-page .hero.hero-expertise .hero-micro{
   margin-top:17px;font-size:10px;line-height:1.5}
 .fx-page .hero.hero-expertise .expertise-breadcrumbs{margin-bottom:13px;font-size:11px}
 .fx-page .hero.hero-expertise .hero-proof{padding:17px 21px}
}
@media(max-width:360px){
 body.service-landing .hero h1,.fx-page .hero.hero-expertise h1{font-size:32px}
}

/* 5: photographic focus points, object-fit cover at fixed photo-frame size. */
body.house-service-page .hero-image-frame picture img{object-position:50% 45%!important}
.fx-page .hero-expertise-house .hero-image-frame>img.expertise-main-photo{object-position:50% 58%!important}
.fx-page .hero-expertise-freeze .hero-image-frame>img.expertise-main-photo{object-position:50% 60%!important}
.fx-page .hero-expertise-apartment .hero-image-frame>img.expertise-main-photo{object-position:50% 58%!important}
.price-landing .cost-photo img{object-position:50% 58%}
@media(max-width:680px){
 body.house-service-page .hero-image-frame picture img{object-position:50% 48%!important}
 .fx-page .hero-expertise-house .hero-image-frame>img.expertise-main-photo{object-position:50% 60%!important}
 .fx-page .hero-expertise-freeze .hero-image-frame>img.expertise-main-photo{object-position:50% 55%!important}
 .fx-page .hero-expertise-apartment .hero-image-frame>img.expertise-main-photo{object-position:50% 63%!important}
}

/* 6: single metric-band design under all primary service images. */
body.service-landing .hero .hero-proof,.fx-page .hero.hero-expertise .hero-proof{
 display:flex;align-items:center;min-height:118px;padding:22px 28px;gap:14px}
body.service-landing .hero .hero-proof>div,.fx-page .hero.hero-expertise .hero-proof>div{min-width:0;flex:1}
body.service-landing .hero .hero-proof strong,.fx-page .hero.hero-expertise .hero-proof strong{
 font-size:clamp(22px,2.2vw,30px);line-height:1.15;letter-spacing:-.052em}
body.service-landing .hero .hero-proof span,.fx-page .hero.hero-expertise .hero-proof span{
 font-size:10px;line-height:1.45;margin-top:5px}
body.service-landing .hero .hero-proof i,.fx-page .hero.hero-expertise .hero-proof i{
 flex:0 0 1px;align-self:stretch;max-height:52px;margin:auto 0}
@media(max-width:680px){
 body.service-landing .hero .hero-proof,.fx-page .hero.hero-expertise .hero-proof{min-height:86px;padding:15px 20px;gap:12px}
 body.service-landing .hero .hero-proof strong,.fx-page .hero.hero-expertise .hero-proof strong{font-size:clamp(21px,6vw,26px)}
}

/* 7: deliberate section rhythm across broad commercial pages only. */
body.service-landing .section,.fx-page .fx-section{padding-top:var(--ui-section-gap);padding-bottom:var(--ui-section-gap)}
body.service-landing .section-heading,.fx-page .fx-section-heading{margin-bottom:37px}
body.service-landing .price-section:not(.pricing-v31),.fx-page .expertise-price-section{padding-top:var(--ui-section-gap);padding-bottom:var(--ui-section-gap)}
@media(max-width:680px){
 body.service-landing .section,.fx-page .fx-section,
 body.service-landing .price-section:not(.pricing-v31),.fx-page .expertise-price-section{
   padding-top:var(--ui-section-gap-mobile);padding-bottom:var(--ui-section-gap-mobile)}
 body.service-landing .section-heading,.fx-page .fx-section-heading{margin-bottom:27px}
}

/* 8: consistent internal heading scale. Preserve compact H3 in cards. */
body.service-landing .section-heading h2,.fx-page .fx-section>div>h2,
.fx-page .fx-section .fx-section-head h2,.fx-page .fx-section h2.fx-title{
 color:var(--ui-title-color);font-size:clamp(34px,3.9vw,55px);letter-spacing:-.055em;line-height:1.11}
body.service-landing .section h3,.fx-page .fx-section h3{letter-spacing:-.035em;line-height:1.24}
@media(max-width:680px){
 body.service-landing .section-heading h2,.fx-page .fx-section>div>h2,
 .fx-page .fx-section .fx-section-head h2,.fx-page .fx-section h2.fx-title{
   font-size:clamp(32px,8.4vw,42px)}
}

/* 9: one restrained card treatment; no changes to editorial article layout. */
.expertise-showcase-card,.fx-page .fx-card,.fx-page .apt-case,
.fx-page .house-benefit-grid article,.fx-page .house-scope-grid article,
body.service-landing .house-type-card{
 border-radius:var(--ui-card-radius);box-shadow:0 12px 28px rgba(27,49,38,.045)}
.fx-page .house-benefit-grid article,.fx-page .house-scope-grid article,
.fx-page .fx-card{border-color:#dfe6de}

/* 10: clear grouped dropdown, comfortable but more compact on phones. */
.header .site-navigation .submenu-services .submenu-section-label{
 font-size:10px;letter-spacing:.09em;padding-top:8px;padding-bottom:5px}
@media(max-width:1180px){
 .header .site-navigation{max-height:min(calc(100dvh - 83px),760px);overscroll-behavior:contain}
 .header .site-navigation .submenu-services{gap:2px}
 .header .site-navigation .submenu-services>a{min-height:37px;padding:7px 9px;font-size:12px;line-height:1.3}
 .header .site-navigation .submenu-services .submenu-section-label{margin:1px 7px 2px;padding:8px 5px 5px}
 .header .site-navigation .submenu-services .submenu-section-expertise{margin-top:4px;padding-top:12px}
}
@media(max-width:680px){
 .header .site-navigation .submenu-services{grid-template-columns:minmax(0,1fr);padding:5px 6px 7px}
 .header .site-navigation .submenu-services>a{min-height:35px;padding:6px 8px;font-size:12px}
 .header .site-navigation .submenu-services .sub-symbol{font-size:10px;min-width:19px}
 .header .site-navigation .submenu-services .submenu-section-label{margin:0 4px 1px;padding:7px 6px 4px;font-size:9px}
 .header .site-navigation .submenu-services .submenu-section-expertise{margin-top:3px;padding-top:10px}
}


/* V111 — consolidated reusable visual tokens and components (audit 11–21, 25–28).
   Broad services follow the homepage; contacts/prices/articles retain their narrower layouts. */
:root {
  --site-orange: var(--hot,#ed5734);
  --site-forest: var(--forest,#16382f);
  --site-ink: var(--ink,#1d2824);
  --site-border: #dde5dd;
  --site-surface: #f7f8f4;
  --site-radius: 14px;
  --site-card-shadow: 0 12px 28px rgba(23,49,38,.05);
  --site-btn-height: 52px;
}
/* 11 — shared main/experts engineer layout, keeping contacts as the compact variant. */
.engineer-spotlight .engineer-editorial{grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr)}
.engineer-spotlight .engineer-name{font-weight:800;letter-spacing:-.02em}
.engineer-spotlight .engineer-name span{font-size:12px;line-height:1.45}
.engineer-spotlight .engineer-profile-intro{line-height:1.68}
.engineer-spotlight .engineer-stage-tag{max-width:min(92%,330px)}
.engineer-spotlight .engineer-stage-tag strong{font-size:13px}
.engineer-spotlight .engineer-stage-tag span{font-size:11.5px;line-height:1.45}
.expertise-denis-quote{font-size:13.5px;line-height:1.63;margin:14px 0 20px}
@media(max-width:680px){
 .engineer-spotlight .engineer-editorial{display:flex;flex-direction:column}
 .engineer-spotlight .engineer-profile{padding:29px 24px 18px}
 .engineer-spotlight .engineer-stage{min-height:340px}
 .engineer-spotlight .engineer-stage-tag span{font-size:11px}
 .expertise-denis-quote{font-size:12.5px;margin:13px 0 16px}
}
/* 12 — reusable action geometry; keep original CTA color and semantics. */
.btn,.btn-orange,.btn-wide,.head-btn,.engineer-contact,.mobile-contact>button,
.cost-cta .btn,.contacts-hero-actions .btn{
 border-radius:6px;min-height:var(--site-btn-height);display:inline-flex;align-items:center;
 justify-content:center;gap:13px;line-height:1.28;font-weight:800;transition:background .18s ease,transform .18s ease,box-shadow .18s ease;
}
.btn:focus-visible,.head-btn:focus-visible,.article-filter:focus-visible,
.article-entry a:focus-visible,.engineer-contact:focus-visible{
 outline:3px solid var(--site-orange);outline-offset:3px;
}
.hero-actions .inline-link,.contacts-mini-link,.expertise-showcase-bottom span{
 font-weight:800;text-underline-offset:5px;
}
/* 13 & 14 — palette and minimum readable size on secondary copy. */
.engineer-stage-tag span,.hero-proof span,.cost-hero-stat span,.pricing-line small,
.form-status,.phone-error,.footer-cols>div>p{line-height:1.55}
.hero-proof span{font-size:12px!important}
.photo-sign>span,.fx-page .photo-sign>span{font-size:11.5px;letter-spacing:.12em}
.footer-cols>div>p{font-size:12px}
.footer-cols>div>a:not(.logo):not(.footer-phone){font-size:12.5px;line-height:1.5}
.footer-cols>div>h4{font-size:13px;letter-spacing:.02em}
/* 15 — one accessible form rhythm across all main, compact, and modal forms. */
.lead-form input:not([type="checkbox"]):not([type="hidden"]):not(.trap),
.lead-form textarea,.lead-form select {
 box-sizing:border-box;width:100%;min-width:0;min-height:50px;
 border:1px solid #d1dcd2;border-radius:6px;font-size:16px;line-height:1.45;
 background:#fcfdfa;color:var(--site-ink);padding:12px 14px;
}
.lead-form textarea{min-height:94px;resize:vertical}
.lead-form input:focus-visible,.lead-form textarea:focus-visible{
 border-color:var(--site-orange);outline:3px solid rgba(237,87,52,.18);outline-offset:0;
}
.lead-form label:not(.data-consent){font-size:12px;font-weight:750;line-height:1.45}
.lead-form .phone-error{font-size:12px;color:#a83328;line-height:1.45}
.lead-form .form-status{font-size:12px;line-height:1.5}
.lead-form .data-consent,.pricing-v31 .pricing-quick-form label.data-consent{
 font-size:11.5px!important;line-height:1.55!important;
}
.lead-form .data-consent a{color:#286046!important}
.lead-form [type="submit"]{width:100%;min-height:52px}
/* 16 — homepage expert cards: compact in mobile, desktop grid unchanged. */
@media(max-width:520px){
 .expertise-showcase{padding:57px 0 61px}
 .expertise-showcase-head{margin-bottom:20px}
 .expertise-showcase-grid{gap:12px}
 .expertise-showcase-card{border-radius:var(--site-radius)}
 .expertise-showcase-photo{height:150px;min-height:150px}
 .expertise-showcase-info{padding:16px 17px 15px}
 .expertise-showcase-info h3{font-size:20px;line-height:1.24;margin-bottom:7px}
 .expertise-showcase-info p{font-size:12.5px;line-height:1.48;margin-bottom:12px}
 .expertise-showcase-bottom{padding-top:10px}
 .expertise-showcase-bottom strong{font-size:18px}
 .expertise-showcase-note{font-size:11.5px;line-height:1.55;margin-top:17px}
}
/* 17 — consistent chrome for photo/lightbox viewers. Their internal grouping stays isolated. */
.fx-photo-viewer,.docs-lightbox,.report-lightbox,.ui-photo-viewer{background:rgba(8,20,18,.96)}
.fx-photo-viewer-close,.fx-photo-viewer-prev,.fx-photo-viewer-next,
.ui-photo-viewer-close,.ui-photo-viewer-prev,.ui-photo-viewer-next{
 border-radius:50%;border:1px solid rgba(255,255,255,.19);background:rgba(255,255,255,.12);color:#fff;
}
.ui-photo-viewer[hidden]{display:none!important}
.ui-photo-viewer{position:fixed;z-index:110000;inset:0;display:flex;flex-direction:column;padding:15px clamp(14px,3vw,44px) 20px;color:#fff;overscroll-behavior:contain}
.ui-photo-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1600px;width:100%;margin:0 auto 10px}
.ui-photo-viewer-meta{display:flex;flex-direction:column;min-width:0;gap:6px}
.ui-photo-viewer-caption{font-size:clamp(13px,1.4vw,17px);font-weight:650;line-height:1.45;color:#e9f0eb}
.ui-photo-viewer-counter{color:#bad1c6;font-weight:800;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ui-photo-viewer-close{font-size:30px;line-height:1;width:46px;height:46px;flex:0 0 46px;cursor:pointer}
.ui-photo-viewer-stage{min-height:0;flex:1;display:flex;align-items:center;justify-content:center;gap:14px;max-width:1700px;width:100%;margin:auto}
.ui-photo-viewer-image{max-width:calc(100vw - 195px);max-height:calc(100dvh - 150px);width:auto;height:auto;object-fit:contain;border-radius:6px;cursor:pointer;min-width:0}
.ui-photo-viewer-prev,.ui-photo-viewer-next{width:52px;height:52px;flex:0 0 52px;font-size:38px;line-height:1;cursor:pointer}
.ui-photo-viewer-hint{text-align:center;color:#9fb9aa;padding-top:10px;font-size:11.5px}
.ui-photo-viewer button:focus-visible{outline:3px solid #f5a084;outline-offset:3px}
body.ui-photo-open{overflow:hidden!important}
@media(max-width:680px){
 .ui-photo-viewer{padding:12px 9px max(18px,env(safe-area-inset-bottom))}
 .ui-photo-viewer-image{max-width:calc(100vw - 102px);max-height:calc(100dvh - 145px)}
 .ui-photo-viewer-prev,.ui-photo-viewer-next{width:38px;height:46px;flex-basis:38px;font-size:29px}
 .ui-photo-viewer-close{width:42px;height:42px;flex-basis:42px}
 .ui-photo-viewer-stage{gap:4px}
 .ui-photo-viewer-caption{font-size:12px}
}
/* 18 — one accordion design while retaining markup and answers. */
:is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) details{
 border-bottom:1px solid var(--site-border);background:transparent;border-radius:0;box-shadow:none;
}
:is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) summary{
 cursor:pointer;font-weight:800;line-height:1.48;padding:19px 38px 19px 0;position:relative;
}
:is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) summary:focus-visible{
 outline:2px solid var(--site-orange);outline-offset:3px;
}
:is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) details[open]>summary{color:var(--site-forest)}
:is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) details>p{
 font-size:14px;line-height:1.72;padding-bottom:18px;
}
@media(max-width:680px){
 :is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) summary{font-size:13.5px;padding:16px 34px 16px 0}
 :is(.faqs,.fx-faq-list,.apt-faq-list,.cost-questions) details>p{font-size:13px;line-height:1.65}
}
/* 19 — clear scan pattern for the growing footer. */
.footer-group-title{display:block;margin:14px 0 5px;color:#b8cfc2;font-weight:800;font-size:10.8px;line-height:1.4;letter-spacing:.08em;text-transform:uppercase}
.footer-group-expert{padding-top:13px;margin-top:13px;border-top:1px solid rgba(255,255,255,.14)}
.footer-cols>div>a:not(.logo){display:block;margin-top:8px}
.footer-cols .footer-heading-link{display:inline;color:inherit}
@media(max-width:680px){
 .footer-cols{row-gap:27px}
 .footer-cols>div>a:not(.logo){margin-top:8px;font-size:12px}
 .footer-group-title{font-size:10.5px;margin:10px 0 5px}
 .footer-group-expert{margin-top:10px;padding-top:10px}
 .footer-cols>div>p{font-size:11.5px}
}
/* 20 — price page: deliberately narrower than service landing, tighter tables. */
.price-landing .cost-section>.wrap,.price-landing .cost-hero>.wrap,.price-landing .cost-cta>.wrap{max-width:1130px}
.price-landing .cost-section{padding-top:67px;padding-bottom:67px}
.price-landing .cost-section h2{line-height:1.15;letter-spacing:-.05em}
.price-landing .cost-expertise{padding-top:58px;padding-bottom:58px}
.price-landing .cost-expertise .cost-expertise-card,
.price-landing .cost-expertise a{border-radius:var(--site-radius)}
@media(max-width:680px){
 .price-landing .cost-section{padding-top:49px;padding-bottom:51px}
 .price-landing .cost-section h2{font-size:clamp(29px,8vw,39px)}
}
/* 21 — compact contacts grid and tighter navigation to the enquiry. */
.contacts-hero .wrap,.contacts-details .wrap,.contacts-services .wrap{max-width:1150px}
.contacts-hero-copy{padding-top:20px;padding-bottom:28px}
.contacts-crumb{margin-bottom:25px}
.contacts-person{min-height:485px}
.contacts-person picture img{height:610px;bottom:-80px}
.contacts-details{padding-top:62px;padding-bottom:69px}
.contacts-details-grid{gap:clamp(25px,4.5vw,60px)}
.contacts-where-intro{margin-bottom:21px}
.contacts-geography{margin-top:24px;padding-top:18px}
.contacts-form-box{padding:27px 29px}
.contacts-services{padding:54px 0 65px}
.contacts-service-links a{min-height:145px}
@media(max-width:900px){
 .contacts-person{min-height:390px}
 .contacts-person picture img{height:515px;bottom:-95px}
 .contacts-details{padding:49px 0}
 .contacts-details-grid{gap:25px}
}
@media(max-width:520px){
 .contacts-hero-copy{padding-bottom:24px}
 .contacts-person{min-height:325px}
 .contacts-person picture img{height:425px;bottom:-89px}
 .contacts-details{padding:43px 0 48px}
 .contacts-where h2{font-size:clamp(32px,8vw,38px)}
 .contacts-form-box{padding:22px 19px}
 .contacts-services{padding:45px 0 53px}
 .contacts-service-links a{min-height:130px;padding:17px}
}
/* 25 — preserve the existing articles hero, improve small-screen catalogue only. */
@media(max-width:780px){
 .article-page .article-filters{gap:7px;margin-bottom:35px}
 .article-page .article-filter{min-height:40px;line-height:1.3}
 .article-page .article-groups{gap:43px}
 .article-page .article-section-header{margin-bottom:13px;padding-bottom:18px}
 .article-page .article-intro{margin-bottom:22px}
 .article-page .article-catalog{padding-top:58px}
}
@media(max-width:560px){
 .article-page .article-filters{display:flex;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;
   scroll-snap-type:x proximity;padding-bottom:9px;margin-right:-19px;padding-right:19px;scrollbar-width:thin}
 .article-page .article-filter{flex:0 0 auto;max-width:230px;scroll-snap-align:start;padding:9px 12px;font-size:11.5px}
 .article-page .article-search-label{min-height:51px}
 .article-page .article-section-header h2{font-size:clamp(25px,7vw,30px)}
 .article-page .article-entry a{min-height:55px;padding:9px 4px 9px 0}
 .article-page .article-entry-title{font-size:13px;line-height:1.43}
 .article-page .article-groups{gap:39px}
 .article-page .article-controls{gap:8px}
}
/* 27 — sticky bar and narrow-width anti-overlap. */
@media(max-width:680px){
 body{padding-bottom:calc(71px + env(safe-area-inset-bottom))}
 .mobile-contact{min-height:65px;box-sizing:border-box}
 .modal,.ui-photo-viewer,.fx-photo-viewer,.docs-lightbox,.report-lightbox{z-index:100000!important}
}
@media(max-width:360px){
 .wrap{max-width:calc(100% - 30px)}
 .hero,.hero-layout,.hero-copy,.hero-side{min-width:0}
 .footer-cols{column-gap:12px}
 .mobile-contact{gap:7px;padding-left:9px;padding-right:9px}
 .mobile-contact a,.mobile-contact button{min-width:0;font-size:11.5px;white-space:normal}
 .article-page .article-filter{max-width:205px}
}
@media(prefers-reduced-motion:reduce){.btn,.head-btn,.expertise-showcase-card{transition:none}}
/* V111 narrow-screen correction: the equipment grid's intrinsic track formerly
   protruded ~1px past the viewport at 320px. */
@media(max-width:360px){
  .tech-layout{grid-template-columns:minmax(0,1fr)!important;width:100%;max-width:100%}
  .tech-main,.tech-right,.equipment-list{min-width:0;max-width:100%}
  .equipment-list>div{grid-template-columns:minmax(0,95px) minmax(0,1fr)}
  .equipment-list>div>span{min-width:0;overflow-wrap:anywhere}
}
