/* Shared editorial pages: the reviewed service template, using the new portfolio. */
.service-copy .article-body { min-width:0; }
.service-sidebar { max-height:calc(100svh - 145px); overflow:auto; scrollbar-width:thin; padding-right:8px; }
.service-copy img { max-width:100%; height:auto; margin-block:24px; }
.service-copy svg { max-width:100%; height:auto; }
.service-copy h4 { font:600 18px/1.5 var(--type); margin:26px 0 12px; }
.service-copy pre,.service-copy .code-block,.service-copy .voice-commands { white-space:pre-wrap; overflow-wrap:anywhere; overflow-x:auto; padding:22px; background:var(--surface); font:14px/1.7 ui-monospace,monospace; }
.service-copy :is(.highlight-box,.info-box,.problem-box,.checklist-box,.case-box,.level-box,.scenario-box,.wiring-box,.service-notice) { margin:30px 0; padding:24px 28px; background:var(--surface); }
.service-copy :is(.model-card,.sensor-card,.scenario-card,.decision-card,.protocol-card,.controller-card,.gateway-card,.code-type-card,.id-card,.defect-card,.hub-article-card) { border-top:1px solid var(--line); padding:24px 0; }
.service-copy :is(.model-price,.sensor-price,.controller-price,.gateway-price,.decision-budget,.scenario-trigger,.code-usecase) { margin:10px 0; font-weight:600; }
.service-copy :is(.hub-grid,.hub-articles-grid,.decision-grid,.protocol-grid,.controller-grid,.id-grid,.code-types-grid,.pros-cons) { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.service-copy .article-author-box { border-top:1px solid var(--line); padding-top:24px; margin-top:48px; font-size:14px; color:var(--muted); }
.service-copy .article-author-box img { width:64px; height:64px; object-fit:cover; }
.service-copy .seo-hidden { display:block; }
.service-copy .faq-question { display:block; font:500 20px/1.45 var(--type); margin:0 0 14px; }
.service-copy details .faq-question { cursor:pointer; }
.service-copy .faq-answer { padding-top:16px; }
.service-copy .zhk-hidden { display:list-item; }
.work-examples { margin:36px 0 56px; }
.work-examples-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 20px; }
.work-examples figure { margin:0; min-width:0; }
.work-examples a { display:block; text-decoration:none!important; }
.work-examples img { width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; margin:0; transition:clip-path .3s var(--ease); clip-path:inset(0); }
.work-examples a:hover img { clip-path:inset(8px); }
.work-examples figcaption { font:400 19px/1.4 var(--caption-type); padding-top:16px; }
.work-examples a:hover figcaption { text-decoration:underline; }
.service-related .services-links { align-items:start; }
.service-related .service-link-card { min-width:0; }
.service-related img { width:100%; height:auto; aspect-ratio:16/10; object-fit:cover; }
.service-copy .service-action { color:var(--paper); }
.service-copy th small { display:block; font-weight:400; padding-top:8px; }
.general-content,.blog-index { max-width:1440px; margin:auto; padding:76px var(--gutter) 96px; font-size:17px; line-height:1.8; }
.general-content h2 { font-size:clamp(28px,3vw,44px); line-height:1.2; margin:0 0 32px; }
.general-content h3 { font-size:21px; font-weight:500; line-height:1.45; margin:0 0 18px; }
.general-content a:hover { text-decoration:underline; }
.general-content p { margin:0 0 24px; }
.general-content section+section { margin-top:80px; }
.catalog-category { padding:44px 0 58px; border-top:1px solid var(--line); }
.catalog-category:first-child { padding-top:0; border-top:0; }
.catalog-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:38px 54px; }
.catalog-group { min-width:0; }
.catalog-group ul { list-style:none; padding:0; margin:0; }
.catalog-group li { margin:0; }
.catalog-group li a { display:block; padding:7px 0; font-size:16px; }
.catalog-note { font-size:14px; color:var(--muted); }
.zhk-links { display:flex; flex-wrap:wrap; gap:12px 30px; padding:0; list-style:none; }
.contacts-main-grid { display:grid; grid-template-columns:1fr 1fr; gap:10%; }
.contacts-info { display:grid; grid-template-columns:1fr 1fr; gap:40px; }
.contacts-info-block { min-width:0; }
.contacts-label { display:block; font-size:13px; color:var(--muted); margin-bottom:10px; }
.contacts-value { font-size:20px; line-height:1.6; overflow-wrap:anywhere; }
.contacts-premium-phone { display:block; font-size:28px; margin-top:35px; }
.contacts-premium-label { font-size:13px; color:var(--muted); }
.blog-index > p { max-width:760px; line-height:1.7; }
.blog-controls { display:flex; justify-content:space-between; align-items:flex-end; gap:36px; margin:0 0 24px; }
.blog-filters { display:flex; flex-wrap:wrap; gap:8px 24px; }
.blog-filters button { padding:10px 0; background:none; border-bottom:1px solid transparent; font-size:15px; }
.blog-filters button[aria-pressed=true] { border-color:var(--ink); }
.blog-search { display:grid; gap:8px; font-size:12px; width:min(100%,270px); flex-shrink:0; }
.blog-search input { width:100%; background:transparent; border:0; border-bottom:1px solid var(--line); border-radius:0; padding:12px 0; font:16px var(--type); color:var(--ink); }
.blog-search input:focus { outline:2px solid var(--accent); outline-offset:5px; }
.blog-count { font-size:13px; color:var(--muted); }
.blog-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:58px 32px; margin-top:35px; }
.blog-card { min-width:0; }
.blog-card>a { display:block; }
.blog-card img { width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; }
.blog-card h2 { font:500 23px/1.4 var(--type); letter-spacing:-.025em; text-wrap:initial; margin:14px 0 12px; }
.blog-card a:hover h2 { text-decoration:underline; text-decoration-thickness:1px; }
.blog-card p { font-size:14px; line-height:1.8; color:var(--muted); margin:0; }
.blog-card-meta { display:flex; gap:12px; justify-content:space-between; margin-top:18px; font-size:12px; color:var(--muted); }
/* Residential developments: generous sections and full-width project photographs. */
.zhk-content { max-width:1440px; margin:auto; padding:80px var(--gutter); font-size:17px; line-height:1.8; }
.zhk-content>section { padding:70px 0; border-top:1px solid var(--line); }
.zhk-content>section:first-child { padding-top:0; border:0; }
.zhk-content h2 { font:400 clamp(30px,3.4vw,48px)/1.2 var(--type); margin:0 0 32px; letter-spacing:-.035em; }
.zhk-content h3,.zhk-content h4 { font:500 23px/1.35 var(--type); margin:0 0 16px; letter-spacing:-.025em; }
.zhk-content p { margin:0 0 24px; }
.zhk-content .about-zhk-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:9%; align-items:start; }
.zhk-content .zhk-specs { display:grid; grid-template-columns:1fr 1fr; gap:24px 28px; }
.zhk-content .zhk-spec { border-top:1px solid var(--line); padding-top:16px; }
.zhk-spec-label { font-size:12px; color:var(--muted); margin-bottom:7px; }
.zhk-spec-value { font-size:19px; line-height:1.5; }
.zhk-content .advantages-grid,.zhk-content .tips-grid,.benefits-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 44px; }
.zhk-content .advantage-card,.zhk-content .tip-card,.benefit-card { border-top:1px solid var(--line); padding-top:24px; }
.zhk-content .advantage-card p,.zhk-content .tip-card p,.benefit-card p { font-size:15px; line-height:1.75; }
.zhk-content .visit-content { display:grid; grid-template-columns:1fr 1fr; gap:8%; align-items:center; }
.zhk-content .visit-image img { width:100%; aspect-ratio:4/5; height:auto; object-fit:cover; }
.zhk-content :is(.hero-btn,.service-btn) { display:inline-flex; align-items:center; padding:14px 22px; min-height:50px; font-size:14px; background:var(--ink); color:var(--paper); }
.zhk-content .work-examples { margin:0; }
.zhk-content .work-examples-grid { gap:42px 28px; }
.zhk-content .work-examples img { aspect-ratio:16/10; }
.benefits-header { margin-bottom:32px; }
.benefits-header h2 { margin-bottom:16px; }
.benefits-subtitle,.land-section-subtitle { max-width:720px; color:var(--muted); }
.benefit-card-link { display:block; }
.benefit-card-link:hover h3 { text-decoration:underline; }
.zhk-content table { width:100%; border-collapse:collapse; font-size:14px; line-height:1.6; }
.zhk-content th,.zhk-content td { text-align:left; vertical-align:top; min-width:125px; padding:18px 14px; border-bottom:1px solid var(--line); }
.zhk-content th { background:var(--surface); font-weight:600; }
.zhk-content th:first-child,.zhk-content td:first-child { min-width:180px; }
.zhk-content th small { display:block; margin-top:8px; font-weight:400; font-size:12px; }
.zhk-content .highlight { background:var(--surface); }
.zhk-content .pricing-examples { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px; margin:40px 0 64px; }
.pricing-example { padding-top:22px; border-top:1px solid var(--line); }
.pricing-example-type { font-size:15px; }
.pricing-example-area { font-size:13px; color:var(--muted); margin:8px 0; }
.pricing-example-price { font:400 clamp(23px,2.6vw,35px)/1.4 var(--type); letter-spacing:-.03em; }
.zhk-content .services-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:40px; }
.zhk-content .service-card { display:flex; flex-direction:column; min-width:0; border-top:1px solid var(--line); padding-top:26px; }
.zhk-content .service-price { font-size:28px; margin:8px 0 20px; }
.zhk-content .service-price span { font-size:14px; }
.zhk-content .service-desc { font-size:15px; }
.zhk-content .service-features { padding-left:18px; font-size:14px; line-height:1.8; margin:0 0 24px; }
.zhk-content .service-features li { margin:12px 0; }
.zhk-content .service-card .service-btn { margin-top:auto; align-self:flex-start; }
.zhk-content .faq-list { max-width:950px; margin-left:auto; }
.zhk-content .faq-item { padding:24px 0; border-top:1px solid var(--line); }
.zhk-content summary { display:list-item; cursor:pointer; font-size:21px; line-height:1.5; padding-right:24px; }
.zhk-content summary::marker { font-size:14px; }
.zhk-content .faq-answer { padding-top:24px; }
.zhk-content .faq-answer p { margin-bottom:0; }
.zhk-content .quote-text { font:400 clamp(25px,2.7vw,39px)/1.5 var(--type); max-width:1000px; margin:0 auto; letter-spacing:-.025em; }
.services-content .land-benefits { padding-top:50px; border-top:1px solid var(--line); }
.services-content .land-benefits h2 { margin:0 0 24px; }
.services-content .benefit-card h3 { margin-top:0; }
.service-copy .promo-section { margin:50px 0; }
.service-copy :is(.reason-item,.stat-item,.price-item,.apartment-card,.tariff-card,.factor-item) { margin:24px 0; padding-top:20px; border-top:1px solid var(--line); }
.service-copy .about-image img { max-height:600px; object-fit:cover; }
.service-page :is(a,summary,input):focus-visible { outline:2px solid var(--accent); outline-offset:5px; }
@media(max-width:1100px) {
 .catalog-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .blog-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .zhk-content .advantages-grid,.zhk-content .tips-grid,.benefits-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .contacts-info { grid-template-columns:1fr; }
 .zhk-content .pricing-examples { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:1000px) { .service-sidebar { max-height:none; overflow:visible; padding-right:0; } }
@media(max-width:760px) {
 .general-content,.blog-index { padding-block:44px 64px; }
 .catalog-grid { grid-template-columns:1fr; gap:32px; }
 .catalog-category { padding-block:32px 40px; }
 .general-content section+section { margin-top:52px; }
 .contacts-main-grid { grid-template-columns:1fr; gap:50px; }
 .contacts-info { grid-template-columns:1fr 1fr; gap:30px 20px; }
 .contacts-value { font-size:17px; }
 .blog-controls { display:block; margin-top:28px; }
 .blog-search { margin-top:28px; width:100%; }
 .blog-filters { gap:6px 20px; }
 .blog-cards { grid-template-columns:1fr; gap:44px; }
 .blog-card h2 { font-size:23px; }
 .work-examples-grid { gap:28px 14px; }
 .work-examples figcaption { font-size:16px; padding-top:12px; }
 .service-copy :is(.hub-grid,.hub-articles-grid,.decision-grid,.protocol-grid,.controller-grid,.id-grid,.code-types-grid,.pros-cons) { grid-template-columns:1fr; }
 .zhk-content { padding-block:48px 30px; font-size:16px; }
 .zhk-content>section { padding-block:44px; }
 .zhk-content .about-zhk-grid { grid-template-columns:1fr; gap:24px; }
 .zhk-content .zhk-specs { gap:22px; }
 .zhk-spec-value { font-size:17px; }
 .zhk-content .advantages-grid,.zhk-content .tips-grid,.benefits-grid { grid-template-columns:1fr; gap:22px; }
 .zhk-content .visit-content { grid-template-columns:1fr; gap:32px; }
 .zhk-content .visit-image img { aspect-ratio:4/3; }
 .zhk-content .work-examples-grid { grid-template-columns:1fr; gap:30px; }
 .zhk-content .work-examples figcaption { font-size:20px; }
 .zhk-content .services-grid { grid-template-columns:1fr; gap:40px; }
 .zhk-content summary { font-size:19px; }
 .zhk-content .pricing-examples { gap:28px 20px; margin-bottom:44px; }
 .zhk-content .service-features { font-size:15px; }
 .zhk-content .quote-text { font-size:26px; }
}
@media(max-width:360px) { .contacts-info { grid-template-columns:1fr; }.work-examples-grid { grid-template-columns:1fr; } }
