/* ==========================================================================
   Компоненты по макету landing.pptx: шапка и блоки посадочной страницы.
   Палитра макета отличается от прежней: синий 007BD4, мятный 99EDE7,
   бирюзовый 00D4C3, тёмный 383A3D.
   ========================================================================== */

:root {
    --cm-blue: #007BD4;
    --cm-blue-dark: #0067b0;
    --cm-mint: #99EDE7;
    --cm-teal: #00D4C3;
    --cm-dark: #383A3D;
    --cm-grey: #EAEBEC;
    --cm-grey-2: #D6D7D8;
    --cm-red: #D40011;
    --cm-muted: #84888E;
    --cm-radius: 12px;
    --cm-container: 1240px;
}

/* ------------------------------- Шапка ---------------------------------- */
.cm-header {
    position: sticky;
    top: 0;
    z-index: 1200;
    background: #fff;
    border-bottom: 1px solid #ededed;
}
body.admin-bar .cm-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .cm-header { top: 46px; } }

.cm-header__inner {
    /* шапка во всю ширину экрана: содержимое не ограничено контейнером,
       по краям остаются только поля, чтобы логотип и кнопка не липли к border */
    max-width: none;
    width: 100%;
    margin: 0;
    padding: 18px 40px;       /* высота шапки 72 px, как в макете */
    display: flex;
    align-items: center;
    gap: 18px;
}
.cm-header__logo img { height: 36px; width: auto; display: block; }
.cm-header__logo { flex-shrink: 0; }

.cm-nav { margin-right: auto; }
.cm-nav__list {
    display: flex;
    align-items: center;
    gap: 20px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.cm-nav__list > li { position: relative; }
.cm-nav__list > li > a {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--cm-dark);
    font-size: 15px;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
}
/* точка-маркер перед пунктом — как в макете */
.cm-nav__list > li > a::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;   /* в макете точки того же цвета, что текст */
    flex-shrink: 0;
}
.cm-nav__list > li > a:hover { color: var(--cm-blue); }

.cm-header__actions { display: flex; align-items: center; gap: 16px; }

/* ---------------------- Телефон с раскрывающейся панелью ----------------- */
.cm-phone { position: relative; }
.cm-phone__toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    background: none;
    border: 0;
    padding: 6px 2px;
    cursor: pointer;
    color: var(--cm-dark);
    font-size: 15px;
    font-weight: 600;
    font-family: inherit;
}
.cm-phone__toggle:hover { color: var(--cm-blue); }
.cm-phone__toggle .cm-ico--chevron { transition: transform .2s; }
.cm-phone[data-open] .cm-ico--chevron { transform: rotate(180deg); }

.cm-phone__drop {
    position: absolute;
    top: calc(100% + 12px);
    right: 0;
    width: 282px;
    background: #fff;
    border-radius: var(--cm-radius);
    box-shadow: 0 12px 34px rgba(0, 0, 0, .16);
    padding: 18px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.cm-phone__drop[hidden] { display: none; }
.cm-phone__item {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--cm-dark) !important;
    text-decoration: none !important;
}
.cm-phone__item b { display: block; font-size: 15px; font-weight: 600; }
.cm-phone__item small { display: block; color: var(--cm-muted); font-size: 12px; }
.cm-phone__item:hover b { color: var(--cm-blue); }

.cm-phone__messengers { display: flex; gap: 22px; }
.cm-phone__messengers a {
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--cm-dark) !important;
    font-size: 14px;
    text-decoration: none !important;
}
.cm-phone__messengers a:hover { color: var(--cm-blue) !important; }

.cm-phone__mail { display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.cm-phone__mail span { color: var(--cm-muted); font-size: 12px; }
.cm-phone__mail a { color: var(--cm-blue) !important; text-decoration: none !important; }

/* ------------------------------- Кнопки --------------------------------- */
.cm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 11px 22px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.2;
    text-align: center;
    text-decoration: none !important;
    border: 1.5px solid transparent;
    cursor: pointer;
    transition: background-color .2s, color .2s, border-color .2s, box-shadow .2s;
}
.cm-header__cta { padding: 6px 14px; font-size: 15px; width: 146px; white-space: nowrap; }
.cm-phone__toggle { white-space: nowrap; }
.cm-header__actions { gap: 12px; flex-shrink: 0; }
.cm-btn--outline { border-color: var(--cm-blue); color: var(--cm-blue) !important; background: #fff; }
.cm-btn--outline:hover { background: var(--cm-blue); color: #fff !important; }
.cm-btn--blue { background: var(--cm-blue); color: #fff !important; }
.cm-btn--blue:hover { background: var(--cm-blue-dark); }
.cm-btn--mint { background: var(--cm-teal); color: #0b3b37 !important; }
.cm-btn--mint:hover { box-shadow: 0 6px 16px rgba(0, 212, 195, .35); }

/* ------------------------------- Иконки --------------------------------- */
.cm-ico {
    display: inline-block;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
    -webkit-mask-position: center;  mask-position: center;
    -webkit-mask-size: contain;     mask-size: contain;
}
.cm-ico--phone {
    -webkit-mask-image: var(--ico-phone); mask-image: var(--ico-phone);
}
.cm-ico--chevron {
    width: 12px; height: 12px;
    -webkit-mask-image: var(--ico-chevron); mask-image: var(--ico-chevron);
}
.cm-ico--tg { -webkit-mask-image: var(--ico-tg); mask-image: var(--ico-tg); color: #29A9EB; }
.cm-ico--max { -webkit-mask-image: var(--ico-max); mask-image: var(--ico-max); color: #7B5CFF; }
.cm-ico--check { -webkit-mask-image: var(--ico-check); mask-image: var(--ico-check); }
.cm-ico--search { -webkit-mask-image: var(--ico-search); mask-image: var(--ico-search); }
:root {
    --ico-chevron: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");
    --ico-check: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6L9 17l-5-5'/></svg>");
}

/* иконки поиска и мессенджеров в шапке — серые, как в макете */
.cm-search {
    border: 0; background: none; cursor: pointer; padding: 4px;
    color: var(--cm-muted); line-height: 0;
}
.cm-search:hover { color: var(--cm-blue); }
.cm-search .cm-ico { width: 21px; height: 21px; }
.cm-header__messengers { display: flex; align-items: center; gap: 10px; }
.cm-header__messengers a { color: var(--cm-muted); line-height: 0; }
.cm-header__messengers a:hover { color: var(--cm-blue); }
.cm-header__messengers .cm-ico--tg { width: 28px; height: 28px; }
.cm-header__messengers .cm-ico--max { width: 23px; height: 23px; }
.cm-phone__toggle .cm-ico--phone { width: 22px; height: 22px; color: var(--cm-muted); }


/* Иконки из макета landing.pptx — те же контуры, что в презентации */
:root {
    --ico-tg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path d='M26.0703 3.99609C25.7344 4.01172 25.418 4.10938 25.1367 4.21875L25.1328 4.21875C24.8477 4.33203 23.4922 4.90234 21.4336 5.76562 19.375 6.63281 16.7031 7.75781 14.0508 8.875 8.75391 11.1055 3.54688 13.3008 3.54688 13.3008L3.60938 13.2773C3.60938 13.2773 3.25 13.3945 2.875 13.6523 2.68359 13.7773 2.47266 13.9492 2.28906 14.2188 2.10547 14.4883 1.95703 14.9023 2.01172 15.3281 2.10156 16.0508 2.57031 16.4844 2.90625 16.7227 3.24609 16.9648 3.57031 17.0781 3.57031 17.0781L3.57812 17.0781 8.46094 18.7227C8.67969 19.4258 9.94922 23.5977 10.2539 24.5586 10.4336 25.1328 10.6094 25.4922 10.8281 25.7656 10.9336 25.9062 11.0586 26.0234 11.207 26.1172 11.2656 26.1523 11.3281 26.1797 11.3906 26.2031 11.4102 26.2148 11.4297 26.2188 11.4531 26.2227L11.4023 26.2109C11.418 26.2148 11.4297 26.2266 11.4414 26.2305 11.4805 26.2422 11.5078 26.2461 11.5586 26.2539 12.332 26.4883 12.9531 26.0078 12.9531 26.0078L12.9883 25.9805 15.8711 23.3555 20.7031 27.0625 20.8125 27.1094C21.8203 27.5508 22.8398 27.3047 23.3789 26.8711 23.9219 26.4336 24.1328 25.875 24.1328 25.875L24.168 25.7852 27.9023 6.65625C28.0078 6.18359 28.0352 5.74219 27.918 5.3125 27.8008 4.88281 27.5 4.48047 27.1367 4.26562 26.7695 4.04688 26.4062 3.98047 26.0703 3.99609ZM25.9688 6.04688C25.9648 6.10938 25.9766 6.10156 25.9492 6.22266L25.9492 6.23438 22.25 25.1641C22.2344 25.1914 22.207 25.25 22.1328 25.3086 22.0547 25.3711 21.9922 25.4102 21.668 25.2812L15.7578 20.75 12.1875 24.0039 12.9375 19.2148C12.9375 19.2148 22.1953 10.5859 22.5938 10.2148 22.9922 9.84375 22.8594 9.76562 22.8594 9.76562 22.8867 9.3125 22.2578 9.63281 22.2578 9.63281L10.082 17.1758 10.0781 17.1562 4.24219 15.1914 4.24219 15.1875C4.23828 15.1875 4.23047 15.1836 4.22656 15.1836 4.23047 15.1836 4.25781 15.1719 4.25781 15.1719L4.28906 15.1562 4.32031 15.1445C4.32031 15.1445 9.53125 12.9492 14.8281 10.7188 17.4805 9.60156 20.1523 8.47656 22.207 7.60938 24.2617 6.74609 25.7812 6.11328 25.8672 6.07812 25.9492 6.04688 25.9102 6.04688 25.9688 6.04688Z' class='MsftOfcThm_Text1_lumMod_60_lumOff_40_Fill_v2' fill='black'/></svg>");
    --ico-max: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 720 720'><path d='M350.4 9.6C141.8 20.5 4.1 184.1 12.8 390.4 16.6 480.7 52.9 558.4 61.5 644.1 63.7 666.3 57.3 693.7 82.9 703.4 114.4 715.3 162.7 695.3 189.1 677 198.1 670.9 206.7 663.8 213.3 655 240.6 673.1 266.5 690.6 299 698.4 442.1 732.7 598.9 654.2 668.6 528.1 799.6 291.2 622.5-4.6 350.4 9.6L350.4 9.6ZM269.4 504C258.1 512.8 247.2 524.8 234.7 531.7 216.6 541.4 211 531.3 204.2 515.3 182.8 464.4 180.2 377.7 192.7 324.4 209.5 251.9 265.6 188.1 342.7 181.3 420.7 174.4 493.1 214 525.8 285.5 598.2 444.6 412.9 601.7 269.4 504.1L269.4 504.1Z' class='MsftOfcThm_Text1_lumMod_60_lumOff_40_Fill_v2' fill='black'/></svg>");
    --ico-phone: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M14.3308 15.9402 15.6608 14.6101C15.8655 14.403 16.1092 14.2384 16.3778 14.1262 16.6465 14.014 16.9347 13.9563 17.2258 13.9563 17.517 13.9563 17.8052 14.014 18.0739 14.1262 18.3425 14.2384 18.5862 14.403 18.7908 14.6101L20.3508 16.1702C20.5579 16.3748 20.7224 16.6183 20.8346 16.887 20.9468 17.1556 21.0046 17.444 21.0046 17.7351 21.0046 18.0263 20.9468 18.3146 20.8346 18.5833 20.7224 18.8519 20.5579 19.0954 20.3508 19.3L19.6408 20.02C19.1516 20.514 18.5189 20.841 17.8329 20.9541 17.1469 21.0672 16.4427 20.9609 15.8208 20.6501 10.4691 17.8952 6.11008 13.5396 3.35083 8.19019 3.03976 7.56761 2.93414 6.86242 3.04914 6.17603 3.16414 5.48963 3.49384 4.85731 3.99085 4.37012L4.70081 3.65015C5.11674 3.23673 5.67937 3.00464 6.26581 3.00464 6.85225 3.00464 7.41488 3.23673 7.83081 3.65015L9.40082 5.22021C9.81424 5.63615 10.0463 6.19871 10.0463 6.78516 10.0463 7.3716 9.81424 7.93416 9.40082 8.3501L8.0708 9.68018C8.95021 10.8697 9.91617 11.9926 10.9608 13.04 11.9994 14.0804 13.116 15.04 14.3008 15.9102L14.3308 15.9402Z' class='MsftOfcThm_Text1_lumMod_60_lumOff_40_Stroke_v2' stroke='black' stroke-width='1.50003' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    --ico-search: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M10 0.5C4.75329 0.5 0.5 4.75329 0.5 10 0.5 15.2467 4.75329 19.5 10 19.5 12.082 19.5 14.0076 18.8302 15.5731 17.6944L20.2929 22.4142C20.6834 22.8047 21.3166 22.8047 21.7071 22.4142L22.4142 21.7071C22.8047 21.3166 22.8047 20.6834 22.4142 20.2929L17.6944 15.5731C18.8302 14.0076 19.5 12.082 19.5 10 19.5 4.75329 15.2467 0.5 10 0.5ZM3.5 10C3.5 6.41015 6.41015 3.5 10 3.5 13.5899 3.5 16.5 6.41015 16.5 10 16.5 13.5899 13.5899 16.5 10 16.5 6.41015 16.5 3.5 13.5899 3.5 10Z' class='MsftOfcThm_Text1_lumMod_60_lumOff_40_Fill_v2' fill='black' fill-rule='evenodd' clip-rule='evenodd'/></svg>");
}

/* ------------------------------ Бургер ---------------------------------- */
.cm-burger {
    display: none;
    width: 40px; height: 40px;
    border: 0; background: none; cursor: pointer;
    position: relative;
}
.cm-burger span,
.cm-burger span::before,
.cm-burger span::after {
    content: ""; position: absolute; left: 9px; width: 22px; height: 2px;
    background: var(--cm-dark); border-radius: 2px;
}
.cm-burger span { top: 19px; }
.cm-burger span::before { top: -7px; left: 0; }
.cm-burger span::after  { top: 7px;  left: 0; }

@media (max-width: 1100px) {
    .cm-burger { display: block; order: 3; }
    .cm-header__inner { flex-wrap: wrap; gap: 14px; }
    .cm-nav {
        order: 5; width: 100%; margin-right: 0;
        display: none; border-top: 1px solid #ededed; padding-top: 12px;
    }
    .cm-header[data-menu-open] .cm-nav { display: block; }
    .cm-nav__list { flex-direction: column; align-items: flex-start; gap: 14px; }
    .cm-header__actions { margin-left: auto; }
    .cm-header__cta { display: none; }
}
@media (max-width: 560px) {
    .cm-phone__toggle span { display: none; }
    .cm-phone__drop { right: -60px; }
}

/* ==========================================================================
   Блоки страницы «Установка теплосчетчиков» (макет landing.pptx)
   ========================================================================== */

.cm-hero, .cm-section { padding: 0 !important; }
.cm-section { padding-top: 46px !important; padding-bottom: 10px !important; }
.cm-hero { padding-top: 28px !important; }

.cm-h1 .elementor-heading-title {
    font-size: 38px; line-height: 48px; font-weight: 600;
    color: var(--cm-dark); letter-spacing: -0.01em; margin-bottom: 18px;
}
.cm-h2 .elementor-heading-title {
    font-size: 30px; line-height: 40px; font-weight: 600;
    color: var(--cm-dark); margin-bottom: 18px;
}
.cm-h3 .elementor-heading-title {
    font-size: 21px; line-height: 30px; font-weight: 600;
    color: var(--cm-dark); margin-bottom: 12px;
}
.cm-text { color: var(--cm-dark); }
.cm-lead { color: var(--cm-dark); }

.cm-text p:last-child, .cm-lead p:last-child { margin-bottom: 0; }
@media (max-width: 767px) {
}

/* хлебные крошки */
.cm-crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: 14px; margin-bottom: 16px; }
.cm-crumbs a { color: var(--cm-muted) !important; text-decoration: none !important; }
.cm-crumbs a:hover { color: var(--cm-blue) !important; }
.cm-crumbs a::after { content: "•"; margin-left: 8px; color: var(--cm-muted); }
.cm-crumbs span { color: var(--cm-dark); }

.cm-hero__photo img { max-width: 100%; height: auto; }

/* карточка с формой заявки */
.cm-formcard.elementor-inner-section > .elementor-container > .elementor-column > .elementor-widget-wrap,
.cm-formcard > .elementor-widget-wrap {
    background: var(--cm-blue);
    border-radius: var(--cm-radius);
    padding: 24px 26px 26px !important;
}
.cm-formcard__title .elementor-heading-title {
    color: #fff; font-size: 20px; line-height: 28px; font-weight: 600; margin-bottom: 16px;
}
.cm-formcard .cm-form__row { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 14px; }
.cm-formcard .cm-form__row > p { margin: 0; display: contents; }
.cm-formcard .cm-input,
.cm-formcard input[type="tel"],
.cm-formcard input[type="text"] {
    flex: 1 1 200px; min-width: 0;
    padding: 11px 16px; border: 0; border-radius: 8px;
    font-size: 15px; font-family: inherit; background: #fff; color: var(--cm-dark);
}
.cm-formcard .cm-form__row--submit { align-items: center; }
.cm-formcard input[type="submit"], .cm-formcard .cm-form__btn {
    flex: 0 0 auto; padding: 11px 26px; border: 0; border-radius: 8px; cursor: pointer;
    background: var(--cm-teal); color: #0b3b37; font-size: 15px; font-weight: 600;
    font-family: inherit;
}
.cm-formcard input[type="submit"]:hover { box-shadow: 0 6px 16px rgba(0, 212, 195, .35); }
.cm-formcard .cm-form__consent,
.cm-formcard .wpcf7-acceptance { color: rgba(255,255,255,.9); font-size: 13px; line-height: 18px; }
.cm-formcard .wpcf7-not-valid-tip { color: #ffe27a; font-size: 12px; }
.cm-formcard .wpcf7-response-output {
    color: #fff; border-color: rgba(255,255,255,.5) !important; font-size: 14px; margin: 10px 0 0;
}
.cm-formcard__messengers {
    display: flex; flex-wrap: wrap; align-items: center; gap: 18px;
    margin-top: 16px; color: rgba(255,255,255,.85); font-size: 14px;
}
.cm-formcard__messengers a {
    display: inline-flex; align-items: center; gap: 7px;
    color: #fff !important; text-decoration: none !important;
}
.cm-formcard__messengers .cm-ico { color: #fff; }

.cm-econom { margin-top: 18px; }
.cm-econom p { font-size: 17px; line-height: 27px; }

/* списки */
.cm-list .elementor-icon-list-item { align-items: flex-start; }
.cm-list .elementor-icon-list-icon { margin-top: 3px; }
.cm-list .elementor-icon-list-text { color: var(--cm-dark); font-size: 16px; line-height: 24px; }
.cm-list .elementor-icon-list-icon svg { width: 15px; height: 15px; }
.cm-list--plus .elementor-icon-list-icon svg { fill: #0aa87a; }
.cm-list--minus .elementor-icon-list-icon svg { fill: #d4483f; }
.cm-list--step .elementor-icon-list-icon svg,
.cm-list--plan .elementor-icon-list-icon svg { fill: var(--cm-blue); }

/* четыре преимущества */
.cm-cards .cm-card > .elementor-widget-wrap { padding: 0 !important; height: 100%; }
.cm-card__head .elementor-heading-title {
    background: var(--cm-blue); color: #fff;
    border-radius: var(--cm-radius) var(--cm-radius) 0 0;
    padding: 18px 20px; font-size: 18px; line-height: 25px; font-weight: 600; margin: 0;
}
.cm-card__body {
    background: var(--cm-grey); border-radius: 0 0 var(--cm-radius) var(--cm-radius);
    padding: 18px 20px 22px; height: 100%;
}
.cm-card__body p { margin: 0; font-size: 15px; line-height: 23px; }

/* мятная секция */
.cm-mint { background: var(--cm-mint); padding-bottom: 46px !important; margin-top: 46px; }
.cm-device__photo img { max-width: 100%; height: auto; }

/* шаги */
.cm-steps .cm-step > .elementor-widget-wrap {
    background: #fff; border: 1px solid var(--cm-grey);
    border-radius: var(--cm-radius); padding: 22px !important; height: 100%;
}
.cm-step__num {
    width: 40px; height: 40px; border-radius: 50%;
    background: var(--cm-blue); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 18px; font-weight: 700; margin-bottom: 14px;
}
.cm-step__title .elementor-heading-title {
    font-size: 17px; line-height: 24px; font-weight: 600; color: var(--cm-dark); margin-bottom: 10px;
}

/* призыв к действию */
.cm-cta { background: var(--cm-grey-2); padding: 46px 0 !important; margin-top: 46px; }
.cm-cta__contacts { font-size: 16px; line-height: 26px; margin-top: 16px; }
.cm-cta__contacts a { color: var(--cm-blue) !important; font-weight: 600; }
.cm-cta__contacts span { color: var(--cm-muted); }

/* тарифы */
.cm-plans .cm-plan > .elementor-widget-wrap {
    background: var(--cm-grey); border-radius: var(--cm-radius);
    padding: 0 0 20px !important; height: 100%;
}
.cm-plan__head {
    background: var(--cm-blue); color: #fff;
    border-radius: var(--cm-radius) var(--cm-radius) 0 0;
    padding: 16px 20px; margin-bottom: 16px;
}
.cm-plan__head span { display: block; font-size: 17px; font-weight: 600; }
.cm-plan__head b { display: block; font-size: 22px; font-weight: 700; margin-top: 2px; }
.cm-plans .cm-list { padding: 0 20px; }
.cm-btnwrap--plan { padding: 0 20px; margin-top: auto; }
.cm-btnwrap .elementor-button,
.cm-btnwrap a.elementor-button {
    background-color: var(--cm-blue) !important;
    color: #fff !important;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 600;
    padding: 11px 22px;
}
.cm-btnwrap .elementor-button:hover { background-color: var(--cm-blue-dark) !important; }

/* кнопка тарифа прижата к низу карточки */
.cm-plans .cm-plan > .elementor-widget-wrap { display: flex; flex-direction: column; }
.cm-plans .cm-plan .elementor-widget-icon-list { flex-grow: 1; }

/* акция */
.cm-promo { border: 1.5px solid var(--cm-red); border-radius: var(--cm-radius); padding: 20px 24px; }
.cm-promo b { display: block; color: var(--cm-red); font-size: 18px; margin-bottom: 8px; }
.cm-promo p { margin: 0; font-size: 15px; line-height: 24px; color: var(--cm-dark); }

/* вопросы и ответы */
.cm-faq .elementor-accordion-item {
    border: 0; border-radius: var(--cm-radius); background: #fff; margin-bottom: 10px; overflow: hidden;
}
.cm-faq .elementor-tab-title { padding: 16px 20px; font-size: 17px; font-weight: 600; }
.cm-faq .elementor-tab-title a { color: var(--cm-dark); }
.cm-faq .elementor-tab-content { padding: 0 20px 18px; font-size: 15px; line-height: 24px; border: 0; }

/* документы */
.cm-docs { padding-bottom: 46px !important; }

/* Первый экран: интро с формой слева, фото справа */
.cm-hero > .elementor-container { flex-wrap: wrap; align-items: flex-start; }
.cm-hero__intro { padding-right: 30px !important; }
.cm-hero__media { text-align: right; }
.cm-hero__photo img { max-width: 380px; }
.cm-formcard { max-width: 620px; margin-top: 8px; }
.cm-formcard.elementor-inner-section { width: 100%; }
.cm-hero__econom { padding-top: 6px !important; }
@media (max-width: 991px) {
    .cm-hero__intro { padding-right: 0 !important; }
    .cm-hero__media { display: none !important; }
    .cm-formcard { max-width: 100%; }
}

/* Contact Form 7 оборачивает каждое поле в <p> и добавляет <br> — гасим это,
   чтобы поля встали в ряд, как в макете. */
.cm-formcard .cm-form__row > p { display: contents; }
.cm-formcard .cm-form__row br { display: none; }
.cm-formcard .wpcf7-form-control-wrap { flex: 1 1 190px; min-width: 0; }
.cm-formcard .cm-input { width: 100%; }
.cm-formcard .wpcf7-form > p:empty,
.cm-formcard .wpcf7-form .hidden-fields-container { display: none; }
.cm-formcard .cm-form__row--submit { gap: 16px; }
.cm-formcard .cm-form__row--submit .wpcf7-form-control-wrap { flex: 1 1 220px; }
.cm-formcard .wpcf7-list-item { margin: 0; }
.cm-formcard .wpcf7-list-item-label { font-size: 13px; }
.cm-formcard input[type="checkbox"] { margin-right: 6px; }

/* ==========================================================================
   Работа над ошибками: размеры приведены к макету.
   В PowerPoint 1 pt = 1.5 px при ширине слайда 1440 px, поэтому
   13 pt → 19.5 px, 16 pt → 24 px, 21 pt → 31.5 px, 26 pt → 39 px.
   ========================================================================== */

/* основной текст: в макете 19.5 px, было 16 */
.cm-text, .cm-econom, .cm-list .elementor-icon-list-text,
.cm-card__body p, .cm-step__text {
    font-size: 18px;
    line-height: 28px;
}
/* кегль задаёт типографическая шкала (typography.css) */
.cm-crumbs { font-size: 15px; }

/* заголовки */
/* кегль задаёт типографическая шкала (typography.css) */
/* кегль задаёт типографическая шкала (typography.css) */
/* кегль задаёт типографическая шкала (typography.css) */

/* первый экран: ширины и положение как в макете */
.cm-hero__intro { max-width: 760px; }
.cm-h1 .elementor-heading-title { max-width: 734px; }
.cm-lead { max-width: 623px; }
.cm-econom { max-width: 623px; }
.cm-hero__photo img { max-width: 434px; }
.cm-hero__media { padding-top: 96px !important; }

/* карточка формы: 602 px ширины, поля 39 px, кнопка 230 px */
.cm-formcard { max-width: 602px; }
/* кегль — из пресета H3 */
.cm-formcard .cm-input { padding: 8px 16px; font-size: 18px; }
.cm-formcard input[type="submit"] { min-width: 230px; padding: 8px 22px; font-size: 18px; }
.cm-formcard .wpcf7-list-item-label,
.cm-formcard .cm-form__consent { font-size: 15px; line-height: 20px; }
.cm-formcard__messengers { font-size: 15px; }

/* карточки преимуществ и тарифов — размеры из макета */
/* кегль — из пресета Deck */
.cm-card__body p { font-size: 18px; line-height: 27px; }
/* кегль — из пресета Deck */
.cm-plan__head span { font-size: 24px; }
.cm-plan__head b { font-size: 26px; }
.cm-promo b { font-size: 24px; }
.cm-faq .elementor-tab-title { font-size: 24px; }
.cm-faq .elementor-tab-content { font-size: 18px; line-height: 28px; }
.cm-cta__contacts { font-size: 18px; line-height: 28px; }

@media (max-width: 767px) {
    .cm-text, .cm-econom, .cm-list .elementor-icon-list-text,
    .cm-card__body p { font-size: 15px; line-height: 23px; }
    .cm-faq .elementor-tab-title { font-size: 18px; }
}

/* Первый экран: колонка текста шире, чтобы заголовок вставал в две строки,
   как в макете (734 px), а фото прибора было ровно 434 px и прижато вправо. */
.cm-hero__intro { width: 62% !important; max-width: none; padding-right: 24px !important; }
.cm-hero__media { width: 38% !important; padding-top: 128px !important; }
.cm-hero__photo { text-align: right; }
.cm-hero__photo img { max-width: 434px !important; width: 434px; margin-left: auto; }
.cm-h1 .elementor-heading-title { max-width: 734px; margin-bottom: 16px; }
.cm-lead { margin-bottom: 14px; }
.cm-hero__intro .elementor-widget:not(:last-child) { margin-bottom: 0; }
.cm-formcard { margin-top: 0; }
.cm-econom { margin-top: 14px; }

/* поля формы: 230 и 292 px, как в макете */
.cm-formcard .cm-form__row .wpcf7-form-control-wrap:first-child { flex: 0 0 230px; }
.cm-formcard .cm-form__row .wpcf7-form-control-wrap:nth-child(2) { flex: 0 0 292px; }
@media (max-width: 991px) {
    .cm-hero__intro { width: 100% !important; padding-right: 0 !important; }
    .cm-formcard .cm-form__row .wpcf7-form-control-wrap { flex: 1 1 200px !important; }
}

/* Вертикальный ритм первого экрана — по отступам макета:
   заголовок → лид 9 px, лид → форма 37 px, форма → текст об экономии 38 px. */
.cm-hero__intro .cm-lead { margin-top: 9px; margin-bottom: 0; }
.cm-hero__intro .cm-formcard { margin-top: 37px; }
.cm-hero__intro .cm-econom { margin-top: 38px; }
.cm-hero__media { padding-top: 175px !important; }

/* карточка формы: внутренние отступы, чтобы высота была 242 px как в макете */
.cm-formcard.elementor-inner-section > .elementor-container > .elementor-column > .elementor-widget-wrap,
.cm-formcard > .elementor-widget-wrap { padding: 21px 26px 22px !important; }
.cm-formcard__title .elementor-heading-title { margin-bottom: 20px; }
.cm-formcard .cm-form__row { margin-bottom: 15px; }
.cm-formcard__messengers { margin-top: 14px; }

/* Зазор между карточками 24 px и высота синей шапки 89 px — как в макете.
   Отступ даём колонке, поэтому сама карточка становится 289 px шириной. */
.cm-cards .cm-card,
.cm-plans .cm-plan,
.cm-steps .cm-step { padding: 0 12px !important; }

.cm-card__head .elementor-heading-title {
    min-height: 89px;
    display: flex;
    align-items: center;
    padding: 14px 20px;
}
.cm-card__body { min-height: 191px; }
.cm-plan__head { min-height: 89px; display: flex; flex-direction: column; justify-content: center; }

/* карточки шагов — тот же зазор */
.cm-steps .cm-step > .elementor-widget-wrap { border-radius: var(--cm-radius); }

/* В макете текст внутри карточек мельче основного: блок 263×131 вмещает
   ~4 строки, что даёт примерно 16 px. */
.cm-card__body p { font-size: 16px; line-height: 24px; }
.cm-steps .cm-list .elementor-icon-list-text,
.cm-plans .cm-list .elementor-icon-list-text { font-size: 16px; line-height: 23px; }
/* кегль — из пресета Deck */

/* Elementor ставит отступ под каждым виджетом — между синей шапкой карточки
   и её телом он лишний: в макете это единый блок 289×280. */
.cm-cards .cm-card .elementor-widget { margin-bottom: 0 !important; }
.cm-plans .cm-plan .elementor-widget-html { margin-bottom: 0 !important; }

/* ---------------------------- Поиск в шапке ----------------------------- */
.cm-search { position: relative; display: flex; align-items: center; }
.cm-search__toggle {
    border: 0; background: none; cursor: pointer; padding: 4px;
    color: var(--cm-muted); line-height: 0;
}
.cm-search__toggle:hover,
.cm-search[data-open] .cm-search__toggle { color: var(--cm-blue); }
.cm-search__toggle .cm-ico { width: 21px; height: 21px; }
.cm-search__form {
    position: absolute;
    top: calc(100% + 12px);
    right: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    gap: 8px;
    width: 320px;
    padding: 10px;
    background: #fff;
    border-radius: var(--cm-radius);
    box-shadow: 0 12px 34px rgba(0, 0, 0, .16);
}
.cm-search__form[hidden] { display: none; }
.cm-search__input {
    flex: 1 1 auto; min-width: 0;
    padding: 9px 14px;
    border: 1px solid var(--cm-grey);
    border-radius: 8px;
    font-size: 15px;
    font-family: inherit;
    color: var(--cm-dark);
}
.cm-search__input:focus { outline: none; border-color: var(--cm-blue); }
.cm-search__submit {
    flex: 0 0 auto;
    border: 0; border-radius: 8px; cursor: pointer;
    background: var(--cm-blue); color: #fff;
    padding: 9px 12px; line-height: 0;
}
.cm-search__submit:hover { background: var(--cm-blue-dark); }

/* страница результатов поиска */
.cm-searchpage__form { display: flex; gap: 10px; max-width: 560px; margin-bottom: 24px; }
.cm-searchpage__form input {
    flex: 1 1 auto; padding: 11px 16px; border: 1px solid var(--cm-grey);
    border-radius: 8px; font-size: 16px; font-family: inherit;
}
.cm-searchpage__form button {
    border: 0; border-radius: 8px; background: var(--cm-blue); color: #fff;
    padding: 11px 24px; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit;
}
.cm-searchpage__count { color: var(--cm-muted); margin-bottom: 18px; }
.cm-searchpage__list { list-style: none; padding: 0; margin: 0; }
.cm-searchpage__list li { padding: 16px 0; border-bottom: 1px solid var(--cm-grey); }
.cm-searchpage__list a { font-size: 19px; font-weight: 600; color: var(--cm-blue) !important; }
.cm-searchpage__list p { margin: 6px 0 0; color: var(--cm-dark); font-size: 16px; }

/* логотип: чуть меньше и вплотную к левому краю контента, как в макете */
.cm-header__logo img { height: 32px; }
.cm-header { --cm-header-pad: 40px; }

/* текст в списках — тёмный, как в макете (глобальная палитра красит ссылки) */
.cm-list .elementor-icon-list-text,
.cm-list .elementor-icon-list-item > span { color: var(--cm-dark) !important; }

/* ---------------- Выравнивание отступов по макету ----------------------- */
/* В макете расстояние от конца блока до следующего заголовка ≈ 40 px,
   а Elementor добавляет свой отступ под каждым виджетом — сокращаем. */
.cm-section { padding-top: 40px !important; padding-bottom: 0 !important; }
.cm-h2 .elementor-heading-title { margin-bottom: 14px; }
.cm-h3 .elementor-heading-title { margin-bottom: 10px; }
.cm-text { margin-bottom: 0; }

/* секции с фоном: внутренние поля 40 px, как в макете */
.cm-mint { padding: 40px 0 !important; margin-top: 40px; }
.cm-cta { padding: 40px 0 !important; margin-top: 40px; }
.cm-docs { padding-bottom: 40px !important; }

/* ряды карточек: отступ сверху 24 px от заголовка блока */
.cm-cards, .cm-plans, .cm-steps, .cm-compare { padding-top: 24px !important; }

/* списки и кнопки внутри секций не должны добавлять лишнюю высоту */
.cm-section .elementor-widget:last-child { margin-bottom: 0 !important; }
.cm-list { margin-bottom: 0; }
.cm-btnwrap { margin-top: 18px; }

/* ------- Выравнивание блоков «Как мы работаем» и «Тарифы» по макету -------
   Макет: заголовок «Как мы работаем» на 2238, сам блок шагов на 2439 (высота 525);
   секция с призывом на 3003; заголовок «Честная стоимость» на 3448; тарифы на 3605. */
.cm-steps { padding-top: 97px !important; }
.cm-steps .cm-step > .elementor-widget-wrap { min-height: 525px; }
.cm-price-head { padding-top: 54px !important; }

/* Акция в макете стоит слева под тарифами, шириной 603 px */
.cm-promo-sec { padding-top: 24px !important; }
.cm-promo { max-width: 603px; }

/* В макете карточки тарифов имеют разную высоту (264 / 293 / 442 / 293),
   а не выровнены по самой высокой — иначе блок акции уезжает вниз. */
.cm-plans > .elementor-container { align-items: flex-start; }
.cm-plans .cm-plan > .elementor-widget-wrap { height: auto; }
.cm-plans .cm-plan .elementor-widget-icon-list { flex-grow: 0; }
.cm-promo-sec { padding-top: 0 !important; margin-top: -128px; }
@media (max-width: 991px) {
    .cm-promo-sec { margin-top: 24px; }
}

/* ==========================================================================
   Внутренние страницы: услуги, контакты, сертификаты, поддержка, о нас
   ========================================================================== */
.cm-hero--inner { padding-top: 28px !important; padding-bottom: 8px !important; }
/* кегль внутренних страниц — тот же H1 из шкалы */
.cm-section--last { padding-bottom: 48px !important; }

/* ---- Услуги: сетка карточек ---- */
.cm-svc-grid .cm-svc { padding: 0 12px !important; margin-bottom: 24px; }
.cm-svc > .elementor-widget-wrap {
    background: #fff; border: 1px solid var(--cm-grey); border-radius: var(--cm-radius);
    padding: 24px !important; height: 100%;
    transition: box-shadow .2s, border-color .2s;
}
.cm-svc > .elementor-widget-wrap:hover {
    box-shadow: 0 8px 24px rgba(0, 0, 0, .07); border-color: #cfe0ee;
}
.cm-svc .elementor-icon-box-icon {
    width: 64px; height: 64px; margin: 0 0 16px !important;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #e6f2fb, #d8ecfa); border-radius: 14px;
}
.cm-svc .elementor-icon svg { width: 30px; height: 30px; fill: var(--cm-blue); }
.cm-svc .elementor-icon-box-wrapper { text-align: left; }
.cm-svc .elementor-icon-box-title { font-size: 19px !important; line-height: 26px; margin-bottom: 10px; }
.cm-svc .elementor-icon-box-title, .cm-svc .elementor-icon-box-title a { color: var(--cm-dark); }
.cm-svc .elementor-icon-box-description { font-size: 16px !important; line-height: 24px; color: var(--cm-dark); }

/* полоса с призывом внизу страницы */
.cm-cta-strip {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
    gap: 18px 30px; padding: 26px 30px;
    background: linear-gradient(135deg, #e6f2fb, #d8ecfa); border-radius: var(--cm-radius);
}
.cm-cta-strip b { display: block; font-size: 21px; color: var(--cm-dark); margin-bottom: 4px; }
.cm-cta-strip span { color: #5b6b78; font-size: 16px; }

/* ---- Контакты: отделы ---- */
.cm-deps .cm-dep { padding: 0 12px !important; margin-bottom: 24px; }
.cm-dep > .elementor-widget-wrap {
    background: #fff; border: 1px solid var(--cm-grey); border-radius: var(--cm-radius);
    padding: 24px 26px !important; height: 100%;
}
.cm-dep__title .elementor-heading-title { margin-bottom: 12px; }
.cm-list--dep .elementor-icon-list-text { font-size: 16px; line-height: 23px; }
.cm-dep__rows { margin-top: 16px; border-top: 1px solid var(--cm-grey); padding-top: 14px; }
.cm-dep__row { display: flex; gap: 12px; padding: 5px 0; font-size: 16px; }
.cm-dep__row span { flex: 0 0 130px; color: var(--cm-muted); }
.cm-dep__row b { font-weight: 600; color: var(--cm-dark); }
.cm-dep__row a { color: var(--cm-blue) !important; text-decoration: none !important; }

.cm-map {
    width: 100%; height: 460px; border: 1px solid var(--cm-grey);
    border-radius: var(--cm-radius); overflow: hidden;
}
.cm-map iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 767px) { .cm-map { height: 320px; } }

/* ---- Сертификаты ---- */
.cm-certs .cm-cert-col { padding: 0 12px !important; margin-bottom: 24px; }
.cm-cert {
    display: flex; flex-direction: column; height: 100%;
    background: #fff; border: 1px solid var(--cm-grey); border-radius: var(--cm-radius);
    padding: 16px; text-decoration: none !important;
    transition: box-shadow .2s, border-color .2s;
}
.cm-cert:hover { box-shadow: 0 8px 24px rgba(0, 0, 0, .08); border-color: #cfe0ee; }
.cm-cert__img {
    display: block; background: #f7fafd; border-radius: 8px; overflow: hidden;
    margin-bottom: 14px; aspect-ratio: 3 / 4;
}
.cm-cert__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cm-cert__title {
    display: block; color: var(--cm-dark); font-size: 16px; line-height: 23px;
    font-weight: 600; margin-bottom: 10px; flex-grow: 1;
}
.cm-cert__link { display: inline-flex; align-items: center; gap: 7px; color: var(--cm-blue); font-size: 15px; font-weight: 600; }
.cm-cert__link::after {
    content: ""; width: 14px; height: 14px; background-color: currentColor;
    -webkit-mask: var(--ico-chevron) center / contain no-repeat;
    mask: var(--ico-chevron) center / contain no-repeat;
    transform: rotate(-90deg);
}

/* ---- Поддержка ---- */
.cm-support {
    background: linear-gradient(135deg, #e6f2fb, #d8ecfa);
    border-radius: var(--cm-radius); padding: 26px 28px;
    display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
}
.cm-support__title { font-size: 17px; color: #5b6b78; }
.cm-support__phone { font-size: 28px; font-weight: 700; color: var(--cm-dark) !important; text-decoration: none !important; }
.cm-support__note { font-size: 14px; color: var(--cm-muted); }
.cm-support__mail { color: var(--cm-blue) !important; font-size: 16px; margin-bottom: 14px; text-decoration: none !important; }
.cm-links { display: flex; flex-wrap: wrap; gap: 14px; }
.cm-links a {
    display: inline-flex; align-items: center; padding: 11px 20px;
    border: 1.5px solid var(--cm-blue); border-radius: 8px;
    color: var(--cm-blue) !important; font-weight: 600; text-decoration: none !important;
}
.cm-links a:hover { background: var(--cm-blue); color: #fff !important; }

/* ---- О нас ---- */
.cm-facts { display: flex; flex-direction: column; gap: 14px; }
.cm-facts > div {
    background: #fff; border: 1px solid var(--cm-grey); border-radius: var(--cm-radius);
    padding: 18px 20px;
}
.cm-facts b { display: block; font-size: 18px; color: var(--cm-dark); margin-bottom: 4px; }
.cm-facts span { color: #5b6b78; font-size: 16px; }
.cm-req { display: flex; flex-direction: column; gap: 2px; }
.cm-req > div { display: flex; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--cm-grey); font-size: 16px; }
.cm-req span { flex: 0 0 220px; color: var(--cm-muted); }
.cm-req b { font-weight: 600; }
.cm-req a { color: var(--cm-blue) !important; text-decoration: none !important; }

@media (max-width: 767px) {
    .cm-svc-grid .cm-svc, .cm-deps .cm-dep, .cm-certs .cm-cert-col { padding: 0 !important; }
    .cm-dep__row { flex-direction: column; gap: 2px; }
    .cm-dep__row span, .cm-req span { flex: none; }
    .cm-req > div { flex-direction: column; gap: 2px; }
}

/* Ряды из нескольких строк: Elementor по умолчанию ставит все колонки
   в одну строку — включаем перенос. */
.cm-svc-grid > .elementor-container,
.cm-certs > .elementor-container,
.cm-deps > .elementor-container { flex-wrap: wrap; align-items: stretch; }
.cm-svc-grid .cm-svc { width: 33.33% !important; }
.cm-certs .cm-cert-col { width: 33.33% !important; }
.cm-deps .cm-dep { width: 50% !important; }
@media (max-width: 991px) {
    .cm-svc-grid .cm-svc, .cm-certs .cm-cert-col { width: 50% !important; }
}
@media (max-width: 767px) {
    .cm-svc-grid .cm-svc, .cm-certs .cm-cert-col, .cm-deps .cm-dep { width: 100% !important; }
}

/* карточка услуги: содержимое по левому краю */
.cm-svc .elementor-icon-box-wrapper,
.cm-svc .elementor-icon-box-content { text-align: left !important; }
.cm-svc .elementor-icon-box-icon { justify-content: center; }

/* Шапка во всю ширину: на узких экранах поля меньше */
@media (max-width: 1100px) { .cm-header__inner { padding: 14px 24px; } }
@media (max-width: 560px)  { .cm-header__inner { padding: 12px 16px; } }

/* На узких экранах шапка должна оставаться в одну строку:
   логотип поменьше, мессенджеры прячем — они есть в панели телефона. */
@media (max-width: 700px) {
    .cm-header__inner { flex-wrap: nowrap; gap: 10px; }
    .cm-header__logo img { height: 26px; }
    .cm-header__messengers { display: none; }
    .cm-header__actions { gap: 8px; }
    .cm-nav { order: 5; }
}
@media (max-width: 420px) {
    .cm-header__logo img { height: 22px; }
    .cm-search { display: none; }
}

/* ==========================================================================
   Единая сетка: шапка и секции страниц считают боковые поля по одной формуле,
   поэтому логотип начинается ровно там же, где заголовок в первом экране.
   Контент ограничен 1240 px, на узких экранах остаётся отступ 20 px.
   ========================================================================== */
:root { --cm-gutter: 20px; }

.cm-header__inner,
.elementor-section.elementor-section-boxed > .elementor-container {
    /* ширину задаём полями, поэтому собственное ограничение Elementor снимаем —
       иначе на широких экранах контент сжимается вдвое */
    max-width: none !important;
    width: 100%;
    margin: 0;
    padding-left: max(var(--cm-gutter), calc((100% - 1240px) / 2));
    padding-right: max(var(--cm-gutter), calc((100% - 1240px) / 2));
}
/* вертикальные отступы шапки задаём отдельно, чтобы формула полей их не сбила */
.cm-header__inner { padding-top: 18px; padding-bottom: 18px; }

@media (max-width: 700px) {
    :root { --cm-gutter: 16px; }
    .cm-header__inner { padding-top: 12px; padding-bottom: 12px; }
}

/* --------------------------- Модальное окно ----------------------------- */
.cm-modal { position: fixed; inset: 0; z-index: 3000; display: flex;
            align-items: center; justify-content: center; padding: 20px; }
.cm-modal[hidden] { display: none; }
.cm-modal__overlay { position: absolute; inset: 0; background: rgba(17, 24, 32, .55); }
.cm-modal__box {
    position: relative; z-index: 1; width: 100%; max-width: 560px;
    max-height: 92vh; overflow-y: auto;
    background: #fff; border-radius: 16px; padding: 30px 32px 26px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
}
.cm-modal__close {
    position: absolute; top: 14px; right: 14px; width: 34px; height: 34px;
    border: 0; border-radius: 50%; background: var(--cm-grey); cursor: pointer;
}
.cm-modal__close::before, .cm-modal__close::after {
    content: ""; position: absolute; left: 10px; top: 16px; width: 14px; height: 2px;
    background: var(--cm-dark); border-radius: 2px;
}
.cm-modal__close::before { transform: rotate(45deg); }
.cm-modal__close::after  { transform: rotate(-45deg); }
.cm-modal__close:hover { background: #dfe1e3; }
.cm-modal__title { font-size: 24px; font-weight: 600; color: var(--cm-dark); margin-bottom: 8px; }
.cm-modal__sub { color: #5b6b78; font-size: 16px; line-height: 24px; margin: 0 0 18px; }
.cm-formcard--modal { max-width: none; }
.cm-formcard--modal > .elementor-widget-wrap,
.cm-modal .cm-formcard { background: var(--cm-blue); border-radius: var(--cm-radius); padding: 20px 22px; }
.cm-modal .cm-form__row { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; }
.cm-modal .cm-form__row > p { display: contents; }
.cm-modal .cm-form__row br { display: none; }
.cm-modal .wpcf7-form-control-wrap { flex: 1 1 180px !important; min-width: 0; }
.cm-modal .cm-input { width: 100%; padding: 10px 16px; border: 0; border-radius: 8px;
                      font-size: 16px; font-family: inherit; }
.cm-modal input[type="submit"] {
    border: 0; border-radius: 8px; background: var(--cm-teal); color: #0b3b37;
    padding: 10px 24px; font-size: 16px; font-weight: 600; cursor: pointer; font-family: inherit;
}
.cm-modal .wpcf7-list-item-label { color: rgba(255,255,255,.9); font-size: 13px; }
.cm-modal .wpcf7-response-output { color: #fff; border-color: rgba(255,255,255,.5) !important; }
.cm-modal__contacts { display: flex; align-items: baseline; gap: 12px; margin-top: 16px; }
.cm-modal__contacts a { font-size: 20px; font-weight: 700; color: var(--cm-dark) !important;
                        text-decoration: none !important; }
.cm-modal__contacts span { color: var(--cm-muted); font-size: 14px; }

/* ------------- Иконки в карточках услуг — по центру --------------------- */
.cm-svc .elementor-icon-box-wrapper,
.cm-svc .elementor-icon-box-content { text-align: center !important; }
.cm-svc .elementor-icon-box-icon { margin: 0 auto 16px !important; }

/* карточки услуг на главной: иконка по центру (класс из прежней вёрстки) */
.solution-tile__icon { margin-left: auto; margin-right: auto; }

/* поиск теперь стоит сразу после меню */
.cm-nav { margin-right: 10px; }
.cm-search { margin-right: auto; }

/* Кнопка «Подробнее» в карточке услуги: пилюля с обводкой и стрелкой,
   при наведении заливается фирменным синим. */
.cm-svc__more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    margin-top: auto;
    padding: 11px 24px;
    border: 1.5px solid var(--cm-blue);
    border-radius: 100px;
    background: #fff;
    color: var(--cm-blue) !important;
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    text-decoration: none !important;
    transition: background-color .2s, color .2s, box-shadow .2s;
}
.cm-svc__more::after {
    content: ""; width: 15px; height: 15px; flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--ico-arrow) center / contain no-repeat;
    mask: var(--ico-arrow) center / contain no-repeat;
    transition: transform .2s;
}
.cm-svc__more:hover,
.cm-svc__more:focus-visible {
    background: var(--cm-blue);
    color: #fff !important;
    box-shadow: 0 6px 16px rgba(0, 123, 212, .3);
}
.cm-svc__more:hover::after { transform: translateX(3px); }
.cm-svc__more:focus-visible { outline: 2px solid var(--cm-blue); outline-offset: 3px; }
:root {
    --ico-arrow: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 10h13M11 5l5 5-5 5'/></svg>");
}
.cm-svc > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; }
.cm-svc .elementor-widget-icon-box { width: 100%; }
.cm-svc .elementor-widget-html { margin-bottom: 0 !important; }

/* страница услуги: боковой блок */
.cm-svc-detail .cm-aside {
    background: linear-gradient(135deg, #e6f2fb, #d8ecfa);
    border-radius: var(--cm-radius); padding: 24px 26px;
}
.cm-aside__title { font-size: 19px; font-weight: 600; color: var(--cm-dark); margin-bottom: 12px; }
.cm-aside ul { list-style: none; padding: 0; margin: 0 0 18px; }
.cm-aside li { position: relative; padding-left: 20px; margin-bottom: 8px; font-size: 16px; line-height: 23px; }
.cm-aside li::before {
    content: ""; position: absolute; left: 0; top: 9px; width: 7px; height: 7px;
    border-radius: 50%; background: var(--cm-blue);
}

/* страница ПО: карточки с номерами */
.cm-soft-grid > .elementor-container { flex-wrap: wrap; align-items: stretch; }
.cm-soft-grid .cm-soft { width: 33.33% !important; padding: 0 12px !important; margin-bottom: 24px; }
.cm-soft > .elementor-widget-wrap {
    position: relative; display: flex; flex-direction: column;
    background: #fff; border: 1px solid var(--cm-grey); border-radius: var(--cm-radius);
    padding: 24px !important; height: 100%;
    transition: box-shadow .2s, border-color .2s;
}
.cm-soft > .elementor-widget-wrap:hover { box-shadow: 0 8px 24px rgba(0,0,0,.07); border-color: #cfe0ee; }
.cm-soft__num {
    position: absolute; top: 18px; right: 22px;
    font-size: 30px; font-weight: 700; color: #e3ecf4; line-height: 1;
}
.cm-soft .elementor-icon-box-icon {
    width: 64px; height: 64px; margin: 0 0 16px !important;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #e6f2fb, #d8ecfa); border-radius: 14px;
}
.cm-soft .elementor-icon svg { width: 30px; height: 30px; fill: var(--cm-blue); }
.cm-soft .elementor-icon-box-wrapper, .cm-soft .elementor-icon-box-content { text-align: left !important; }
.cm-soft .elementor-icon-box-title { font-size: 18px !important; line-height: 25px; margin-bottom: 10px; }
.cm-soft .elementor-icon-box-description { font-size: 16px !important; line-height: 24px; }
.cm-soft .elementor-widget-icon-box { flex-grow: 1; margin-bottom: 12px !important; }
.cm-soft__price { color: var(--cm-blue); font-weight: 600; font-size: 16px; }
.cm-soft .elementor-widget-html:first-child { margin-bottom: 0 !important; }
@media (max-width: 991px) { .cm-soft-grid .cm-soft { width: 50% !important; } }
@media (max-width: 767px) { .cm-soft-grid .cm-soft { width: 100% !important; padding: 0 !important; } }

/* Иконка внутри плитки: стили виджета Elementor подключаются позже наших,
   поэтому центрирование задаём принудительно — иначе значок прижимается
   к левому верхнему углу подложки. */
.cm-soft .elementor-icon-box-icon,
.cm-svc .elementor-icon-box-icon {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}
.cm-soft .elementor-icon,
.cm-svc .elementor-icon {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: auto;
    height: auto;
    padding: 0 !important;
    line-height: 0;
}
.cm-soft .elementor-icon svg,
.cm-svc .elementor-icon svg { display: block; }

/* ==========================================================================
   Текст на цветной подложке — белый.
   Глобальная палитра Elementor красит все заголовки в тёмный, поэтому
   для блоков с синим фоном цвет задаём явно.
   ========================================================================== */
.cm-formcard .cm-formcard__title .elementor-heading-title,
.cm-formcard__title .elementor-heading-title,
.cm-card__head .elementor-heading-title,
.cm-plan__head,
.cm-plan__head span,
.cm-plan__head b,
.cm-modal .cm-formcard__title .elementor-heading-title {
    color: #fff !important;
}

/* подписи и мелкий текст внутри синей карточки заявки */
.cm-formcard .wpcf7-list-item-label,
.cm-formcard .cm-form__consent,
.cm-formcard__messengers,
.cm-formcard__messengers a,
.cm-formcard .wpcf7-response-output { color: rgba(255, 255, 255, .92) !important; }

/* на светлых подложках (мятная секция, серый призыв, градиентные блоки)
   заголовки остаются тёмными — это цвет из палитры, ничего не переопределяем */

/* ==========================================================================
   Страница «Установка теплосчетчиков» (page-id-49)
   ========================================================================== */

/* заголовки чуть плотнее по начертанию */
.page-id-49 .cm-formcard__title .elementor-heading-title,
.page-id-49 .cm-card__head .elementor-heading-title,
.page-id-49 .cm-step__title .elementor-heading-title,
.page-id-49 .cm-plan__head span,
.page-id-49 .cm-plan__head b,
.page-id-49 .cm-promo b { font-weight: 700; }

/* Блок акции больше не поднимаем под тарифы: при разной высоте карточек
   он налезал на соседние элементы — ставим его обычным потоком, ниже. */
.cm-promo-sec { margin-top: 0 !important; padding-top: 32px !important; }
.cm-promo { max-width: 100%; }

/* ---------------- Подсказка под фотографией (приглашение в чат) ----------
   Блок закреплён поверх нижней части фотографии и не закрывается. */
.cm-hero__media { position: relative; }
.cm-hint {
    position: absolute;
    right: 0;
    bottom: -18px;
    z-index: 3;
    width: 300px;
    padding: 18px 20px 46px;
    background: #ED2939;
    border-radius: 14px;
    box-shadow: 0 10px 26px rgba(237, 41, 57, .28);
    text-align: left;
}
.cm-hint__text {
    margin: 0;
    color: #fff;
    font-size: 16px;
    line-height: 23px;
}
.cm-hint__btn {
    position: absolute;
    right: 16px; bottom: -26px;
    width: 62px; height: 62px;
    display: flex; align-items: center; justify-content: center;
    border: 4px solid #fff;
    border-radius: 50%;
    background: #ED2939;
    color: #fff;
    cursor: pointer;
    box-shadow: 0 8px 20px rgba(237, 41, 57, .35);
    transition: transform .2s, box-shadow .2s;
}
.cm-hint__btn:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(237, 41, 57, .45); }
.cm-hint__btn .cm-ico { width: 28px; height: 28px; }
.cm-ico--chat { -webkit-mask-image: var(--ico-chat); mask-image: var(--ico-chat); }
:root {
    --ico-chat: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='black' d='M12 3C6.99 3 3 6.36 3 10.5c0 2.3 1.23 4.35 3.16 5.72-.13 1.2-.6 2.3-1.36 3.2-.2.24-.03.6.28.57 1.9-.18 3.5-.9 4.6-1.72.73.15 1.5.23 2.32.23 5.01 0 9-3.36 9-7.5S17.01 3 12 3zm-3.6 8.7a1.2 1.2 0 1 1 0-2.4 1.2 1.2 0 0 1 0 2.4zm3.6 0a1.2 1.2 0 1 1 0-2.4 1.2 1.2 0 0 1 0 2.4zm3.6 0a1.2 1.2 0 1 1 0-2.4 1.2 1.2 0 0 1 0 2.4z'/></svg>");
}
/* на планшете и мобильном фотографии нет — блок встаёт в обычный поток */
@media (max-width: 991px) {
    .cm-hero__media { display: block !important; }
    .cm-hero__media .cm-hero__photo { display: none; }
    .cm-hint { position: static; width: 100%; max-width: 340px; margin: 0 0 40px; }
}
}

/* на планшете и мобильном фото скрыто — убираем отступ, который оно занимало */
@media (max-width: 991px) {
    .cm-hero__media { padding-top: 0 !important; }
    .cm-hint { margin-top: 0; }
}

/* ==========================================================================
   Единая левая линия: содержимое всех блоков начинается от одной вертикали.
   У колонок с карточками есть внутренние отступы, поэтому полю ряда даём
   на столько же меньше — крайняя карточка встаёт ровно под заголовком,
   а ширина ряда не выходит за экран.
   ========================================================================== */
.about-section > .elementor-container,
.cm-cards > .elementor-container,
.cm-plans > .elementor-container,
.cm-steps > .elementor-container,
.cm-compare > .elementor-container,
.cm-svc-grid > .elementor-container,
.cm-certs > .elementor-container,
.cm-deps > .elementor-container,
.cm-soft-grid > .elementor-container {
    padding-left: calc(max(var(--cm-gutter), (100% - 1240px) / 2) - 12px) !important;
    padding-right: calc(max(var(--cm-gutter), (100% - 1240px) / 2) - 12px) !important;
}
.services-section--cards > .elementor-container,
.object-section--cards > .elementor-container {
    padding-left: calc(max(var(--cm-gutter), (100% - 1240px) / 2) - 15px) !important;
    padding-right: calc(max(var(--cm-gutter), (100% - 1240px) / 2) - 15px) !important;
}

/* кнопки первого экрана — от той же линии */
.hero-btn-box { margin-left: 0; }
.hero-section .hero-btn-box > div:first-child { margin-left: 0; padding-left: 0; }

/* ------------------------------- Подвал --------------------------------- */
/* был на своей сетке (поля 28 px и своя максимальная ширина) —
   переводим на общие поля, чтобы логотип встал под логотипом шапки */
.site-footer__main,
.site-footer__bottom {
    max-width: none;
    margin: 0;
    padding-left: max(var(--cm-gutter), calc((100% - 1240px) / 2));
    padding-right: max(var(--cm-gutter), calc((100% - 1240px) / 2));
}
.site-footer__main { padding-top: 64px; padding-bottom: 52px; }
.site-footer__bottom { padding-top: 20px; padding-bottom: 20px; }
@media (max-width: 991px) {
    .site-footer__main { padding-top: 48px; padding-bottom: 40px; }
}

/* три карточки в ряду должны занимать ровно всю ширину (33% давало щель справа) */
.services-section--cards .elementor-column,
.object-section--cards .elementor-column,
.cm-cards .cm-card,
.cm-plans .cm-plan,
.cm-steps .cm-step { width: 33.3333% !important; }
.cm-cards .cm-card, .cm-plans .cm-plan { width: 25% !important; }
.cm-steps .cm-step { width: 25% !important; }
@media (max-width: 991px) {
    .services-section--cards .elementor-column,
    .object-section--cards .elementor-column,
    .cm-cards .cm-card, .cm-plans .cm-plan, .cm-steps .cm-step { width: 50% !important; }
}
@media (max-width: 767px) {
    .services-section--cards .elementor-column,
    .object-section--cards .elementor-column,
    .cm-cards .cm-card, .cm-plans .cm-plan, .cm-steps .cm-step { width: 100% !important; }
}

/* на планшете и мобильном колонка с фото занимает всю ширину,
   иначе подсказка сжимается до ширины колонки */
@media (max-width: 991px) {
    .cm-hero__media { width: 100% !important; }
    .cm-hint { max-width: 340px; }
}

/* Цветные секции отделяем от предыдущего блока заметной белой полосой —
   иначе серые карточки упираются прямо в мятный фон. */
.cm-mint { margin-top: 80px !important; }
.cm-cta { margin-top: 80px !important; }
@media (max-width: 767px) {
    .cm-mint, .cm-cta { margin-top: 48px !important; }
}

/* Серое тело карточки растягивалось по height:100% и вылезало за пределы
   колонки, наезжая на следующую секцию. Тянем его флексом внутри карточки. */
.cm-cards .cm-card > .elementor-widget-wrap { display: flex; flex-direction: column; }
.cm-cards .cm-card__body {
    height: auto;
    flex: 1 1 auto;
}
.cm-cards .cm-card .elementor-widget-text-editor { display: flex; flex-direction: column; flex: 1 1 auto; }

/* ==========================================================================
   «Как мы работаем»: лента из стрелок и подробное описание шагов под ней
   ========================================================================== */
.cm-flow {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}
.cm-flow__item {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background: var(--cm-blue);
    color: #fff;
    font-size: 19px;
    font-weight: 700;
    line-height: 26px;
    padding: 20px 34px 20px 46px;
    /* стрелка: острие справа, вырез слева */
    clip-path: polygon(0 0, calc(100% - 26px) 0, 100% 50%, calc(100% - 26px) 100%,
                       0 100%, 26px 50%);
}
/* у первой стрелки левый край прямой */
.cm-flow__item:first-child {
    padding-left: 30px;
    clip-path: polygon(0 0, calc(100% - 26px) 0, 100% 50%, calc(100% - 26px) 100%, 0 100%);
}
.cm-flow__item span { display: block; }

@media (max-width: 991px) {
    .cm-flow { flex-wrap: wrap; }
    .cm-flow__item {
        flex: 1 1 calc(50% - 8px);
        font-size: 17px;
        line-height: 23px;
        padding: 16px 28px 16px 40px;
    }
}
@media (max-width: 575px) {
    .cm-flow__item { flex: 1 1 100%; }
}

/* текстовое раскрытие шагов */
.cm-steps-text { padding-top: 28px !important; }
.cm-step-block { margin-bottom: 22px; }
.cm-step-block:last-child { margin-bottom: 0; }
.cm-step__head .elementor-heading-title { margin-bottom: 10px; }
.cm-list--square .elementor-icon-list-icon svg {
    width: 7px !important; height: 7px !important; fill: var(--cm-muted);
}
.cm-list--square .elementor-icon-list-icon { width: 7px; margin-top: 9px; }
.cm-list--square .elementor-icon-list-item { align-items: flex-start; }
.cm-list--square .elementor-icon-list-text { font-size: 18px; line-height: 27px; }

/* компактнее шаг: заголовок ближе к своему списку */
.cm-steps-text .cm-step-block { margin-bottom: 18px; }
.cm-steps-text .cm-step__head { margin-bottom: 0 !important; }
.cm-steps-text .cm-list { margin-top: 4px; }

/* описания шагов идут друг под другом, а не в ряд */
.cm-steps-text > .elementor-container { flex-direction: column; }
.cm-steps-text .cm-step-block { width: 100% !important; }

/* ==========================================================================
   Мобильная версия: аккуратное выпадающее меню и возврат фотографии
   ========================================================================== */

/* Шапка держит одну строку, но при открытом меню разрешаем перенос,
   иначе меню втискивается в строку узкой колонкой справа. */
@media (max-width: 1100px) {
    .cm-header__inner { flex-wrap: nowrap; }
    .cm-header[data-menu-open] .cm-header__inner { flex-wrap: wrap; }

    .cm-nav {
        display: none;
        order: 10;
        width: 100%;
        margin: 0;
        padding: 6px 0 4px;
        border-top: 1px solid var(--cm-grey);
    }
    .cm-header[data-menu-open] .cm-nav { display: block; }
    .cm-nav__list {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }
    .cm-nav__list > li > a {
        padding: 12px 2px;
        font-size: 16px;
        border-bottom: 1px solid #f2f3f4;
    }
    .cm-nav__list > li:last-child > a { border-bottom: 0; }

    /* бургер превращается в крестик, когда меню открыто */
    .cm-header[data-menu-open] .cm-burger span { background: transparent; }
    .cm-header[data-menu-open] .cm-burger span::before { top: 0; transform: rotate(45deg); }
    .cm-header[data-menu-open] .cm-burger span::after  { top: 0; transform: rotate(-45deg); }
    .cm-burger span, .cm-burger span::before, .cm-burger span::after { transition: transform .2s, top .2s, background .2s; }
}

/* Фотография инженера нужна и на мобильном — просто меньше по размеру,
   подсказка встаёт под ней обычным блоком. */
@media (max-width: 991px) {
    .cm-hero__media { display: block !important; width: 100% !important; padding-top: 8px !important; }
    .cm-hero__media .cm-hero__photo { display: block !important; text-align: center; }
    .cm-hero__photo img { width: 300px !important; max-width: 80% !important; margin: 0 auto; }
    .cm-hint { position: static; width: 100%; max-width: 100%; margin: 14px 0 40px; }
    .cm-hint__btn { right: 14px; bottom: -22px; width: 54px; height: 54px; }
}

/* карточка услуги: кнопка прижата к низу, поэтому в ряду кнопки на одной линии */
.cm-svc > .elementor-widget-wrap { height: 100%; }
.cm-svc .elementor-widget-icon-box { flex-grow: 1; }

/* ---------------- Текстовые страницы (гарантии, оплата, политика) ------- */
.cm-article .cm-h2 .elementor-heading-title { margin: 22px 0 12px; }
.cm-article .elementor-widget:first-child .elementor-heading-title { margin-top: 0; }
.cm-article .cm-text { margin-bottom: 12px; }
.cm-article .cm-list { margin-bottom: 16px; }

/* ---------------- Реализованные объекты --------------------------------- */
.cm-objects > .elementor-container { flex-wrap: wrap; align-items: stretch; }
.cm-objects .cm-obj { width: 33.3333% !important; padding: 0 12px !important; margin-bottom: 24px; }
.cm-obj > .elementor-widget-wrap {
    background: #fff; border: 1px solid var(--cm-grey); border-radius: var(--cm-radius);
    overflow: hidden; height: 100%; padding: 0 !important;
}
.cm-obj .elementor-widget { margin-bottom: 0 !important; }
.cm-obj__img img { width: 100%; height: 210px; object-fit: cover; display: block; }
/* кегль и начертание — из пресета Deck */
.cm-obj__title .elementor-heading-title {
    color: var(--cm-dark);
    padding: 18px 20px 8px;
}
.cm-obj .cm-list--obj { padding: 0 20px 20px; }
.cm-obj .cm-list--obj .elementor-icon-list-text { font-size: 15px; line-height: 22px; }
@media (max-width: 991px) { .cm-objects .cm-obj { width: 50% !important; } }
@media (max-width: 767px) { .cm-objects .cm-obj { width: 100% !important; padding: 0 !important; } }

/* кнопка «Подробнее» — по центру карточки услуги */
.cm-svc .elementor-widget-html { text-align: center; }
.cm-svc__more { margin-left: auto; margin-right: auto; }

/* ---------------- Главная: блок преимуществ и заголовки секций ----------- */
/* Текст в карточке начинался с отступа сверху — прижимаем его к иконке. */
.about-section .about-col .elementor-widget-image { margin-bottom: 4px !important; }
.about-section .about-col .elementor-widget-text-editor { margin-top: 0 !important; }
.about-section .about-col p,
.about-section .about-col span { margin: 0; text-indent: 0; }

/* Заголовки секций главной — по центру */
.services-section--head .title .elementor-heading-title,
.object-section--head .title .elementor-heading-title,
.software-new--home .title .elementor-heading-title {
    text-align: center;
}
.software-new--home .software-new__intro-wrap { text-align: center; }

/* Карточки преимуществ: содержимое по центру карточки и одинаковый воздух
   вокруг него — иначе при разном числе строк текст то упирается в низ,
   то оставляет пустоту. */
.about-section .about-col > .elementor-widget-wrap {
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 158px;
    /* боковые поля узкие: «Приборы отечественного» — 180 px, и при поле 18 px
       фраза занимала 94 % строки. Стоило шрифту отрисоваться чуть шире
       (другой браузер, зум, ещё не загруженный Roboto) — и она рвалась на три
       строки, где одинокое центрированное «Приборы» читается как отступ
       первой строки. С полем 8 px под текст остаётся 213 px — запас есть. */
    padding: 22px 8px !important;
}
.about-section .about-col .elementor-widget-image { margin-bottom: 12px !important; }
/* текст блочный и во всю колонку: у инлайнового span ширина равна самой
   длинной строке, из-за чего центрирование считалось не от края карточки */
.about-section .about-col .elementor-widget-text-editor { width: 100%; }
.about-section .about-col .elementor-widget-text-editor p,
.about-section .about-col .elementor-widget-text-editor span {
    display: block;
    width: 100%;
    text-align: center;
}
.about-section .about-col img { width: 36px; height: 36px; }
@media (max-width: 767px) {
    .about-section .about-col > .elementor-widget-wrap { min-height: 0; padding: 20px 10px !important; }
}

/* ---------------- Форма заявки: быстрые контакты и ошибки --------------- */
/* Под формой — прямой выход на связь: не все готовы ждать звонка. */
.cm-form__contacts {
    display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
    margin-top: 18px; padding-top: 16px;
    border-top: 1px solid rgba(255, 255, 255, .18);
}
.cm-form__contacts-title {
    color: rgba(255, 255, 255, .75); font-size: 13px; line-height: 18px;
    margin-right: 4px;
}
.cm-form__contacts-list { display: flex; flex-wrap: wrap; gap: 10px; }
.cm-form__contact {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 14px; border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, .35);
    background: rgba(255, 255, 255, .08);
    color: #fff !important; text-decoration: none !important;
    font-size: 14px; line-height: 18px; font-weight: 500;
    transition: background .18s ease, border-color .18s ease, transform .18s ease;
}
.cm-form__contact:hover {
    background: rgba(255, 255, 255, .18);
    border-color: rgba(255, 255, 255, .6);
    transform: translateY(-1px);
}
.cm-form__contact .cm-ico { width: 17px; height: 17px; color: #fff; flex: 0 0 auto; }

@media (max-width: 600px) {
    .cm-form__contacts { gap: 8px; }
    .cm-form__contacts-list { width: 100%; }
    .cm-form__contact { flex: 1 1 auto; justify-content: center; }
}

/* Ошибки. Стандартный вид Contact Form 7 — серая рамка и мелкий красный
   текст — на синей карточке почти не читается, поэтому оформляем сами.
   Подпись «Заполните это поле» под полем убрана: она ломала ряд и ничего
   не добавляла к подсвеченной рамке. Для скринридеров текст сохраняем. */
.cm-formcard .wpcf7-not-valid-tip,
.cm-modal .wpcf7-not-valid-tip {
    position: absolute; width: 1px; height: 1px; overflow: hidden;
    clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.cm-formcard .wpcf7-not-valid,
.cm-modal .wpcf7-not-valid {
    box-shadow: 0 0 0 2px #ffd166;
    /* поле без подписи об ошибке — рамка должна быть заметной сама по себе */
}
.cm-formcard .wpcf7-acceptance.wpcf7-not-valid,
.cm-modal .wpcf7-acceptance.wpcf7-not-valid { box-shadow: none; }

/* Итоговое сообщение — плашка с иконкой вместо тонкой рамки */
.cm-formcard .wpcf7-response-output,
.cm-modal .wpcf7-response-output {
    display: flex; align-items: flex-start; gap: 10px;
    margin: 14px 0 0 !important; padding: 12px 14px !important;
    border: 0 !important; border-radius: 10px;
    font-size: 14px !important; line-height: 20px;
    background: #fff;
    color: var(--cm-dark) !important;
    font-weight: 500;
    animation: cm-form-msg .22s ease-out;
}
.cm-formcard .wpcf7-response-output::before,
.cm-modal .wpcf7-response-output::before {
    content: ""; flex: 0 0 auto; width: 20px; height: 20px; margin-top: 1px;
    background: currentColor;
    -webkit-mask: var(--cm-msg-ico) center / contain no-repeat;
    mask: var(--cm-msg-ico) center / contain no-repeat;
    /* по умолчанию — восклицательный знак в круге */
    --cm-msg-ico: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 5h2v7h-2V7zm0 9h2v2h-2v-2z'/%3E%3C/svg%3E");
}
/* успех — зелёная плашка с галочкой */
.cm-formcard form.sent .wpcf7-response-output,
.cm-modal form.sent .wpcf7-response-output {
    background: #d6fbf6;
    color: #0b3b37 !important;
    box-shadow: inset 0 0 0 1px rgba(0, 212, 195, .8);
}
.cm-formcard form.sent .wpcf7-response-output::before,
.cm-modal form.sent .wpcf7-response-output::before {
    color: #00a596;
    --cm-msg-ico: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1.2 14.2-4-4 1.4-1.4 2.6 2.6 5.6-5.6L17.8 9l-7 7z'/%3E%3C/svg%3E");
}
/* ошибка ввода и отказ отправки — жёлтая и красная плашки */
.cm-formcard form.invalid .wpcf7-response-output,
.cm-formcard form.unaccepted .wpcf7-response-output,
.cm-modal form.invalid .wpcf7-response-output,
.cm-modal form.unaccepted .wpcf7-response-output {
    background: #fff4d6;
    color: #6b4e00 !important;
    box-shadow: inset 0 0 0 1px rgba(214, 158, 0, .55);
}
.cm-formcard form.invalid .wpcf7-response-output::before,
.cm-formcard form.unaccepted .wpcf7-response-output::before,
.cm-modal form.invalid .wpcf7-response-output::before,
.cm-modal form.unaccepted .wpcf7-response-output::before { color: #d69e00; }
.cm-formcard form.failed .wpcf7-response-output,
.cm-formcard form.aborted .wpcf7-response-output,
.cm-formcard form.spam .wpcf7-response-output,
.cm-modal form.failed .wpcf7-response-output,
.cm-modal form.aborted .wpcf7-response-output,
.cm-modal form.spam .wpcf7-response-output {
    background: #ffe3e3;
    color: #7a1f1f !important;
    box-shadow: inset 0 0 0 1px rgba(214, 60, 60, .5);
}
.cm-formcard form.failed .wpcf7-response-output::before,
.cm-formcard form.aborted .wpcf7-response-output::before,
.cm-formcard form.spam .wpcf7-response-output::before,
.cm-modal form.failed .wpcf7-response-output::before,
.cm-modal form.aborted .wpcf7-response-output::before,
.cm-modal form.spam .wpcf7-response-output::before { color: #d63c3c; }

@keyframes cm-form-msg {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: none; }
}

/* индикатор отправки — «дышащая» кнопка вместо неподвижной */
.cm-formcard form.submitting input[type="submit"],
.cm-modal form.submitting input[type="submit"] { opacity: .7; cursor: progress; }
.wpcf7-spinner { background-color: rgba(255, 255, 255, .6); }

/* Быстрые контакты переехали внутрь формы — прежний ряд мессенджеров
   под ней стал дублем. Скрываем без :has(), иначе в браузерах без его
   поддержки (Safari до 15.4, Firefox до 121) дубль возвращается. */
.cm-formcard__messengers { display: none !important; }

/* Порядок внутри формы: поля → кнопка → итоговое сообщение → быстрые
   контакты. Contact Form 7 всегда дописывает сообщение в конец формы, из-за
   чего оно оказывалось ниже контактов и терялось. */
.cm-formcard .wpcf7-form,
.cm-modal .wpcf7-form { display: flex; flex-direction: column; }
.cm-formcard .wpcf7-form > *,
.cm-modal .wpcf7-form > * { order: 1; }
.cm-formcard .wpcf7-form > .wpcf7-response-output,
.cm-modal .wpcf7-form > .wpcf7-response-output { order: 2; }
.cm-formcard .wpcf7-form > .cm-form__contacts,
.cm-modal .wpcf7-form > .cm-form__contacts { order: 3; }

/* В модалке остался только график работы — выравниваем его по центру. */
.cm-modal__contacts { justify-content: center; margin-top: 14px; }
.cm-modal__contacts span { color: var(--cm-muted); font-size: 14px; }
