@-webkit-keyframes spinner-plncf9{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-plncf9{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.h1{font-weight:600;font-size:48px;line-height:130%;text-transform:uppercase}.price-date{display:block;margin:4px 0 0;font-size:12px;line-height:1.3;color:#8a8f98}.price-date--approx{cursor:help;border-bottom:1px dotted currentColor;display:inline-block}@media screen and (max-width:992px){.h1{font-size:36px}}@media screen and (max-width:640px){.h1{font-size:28px}}.h2,.modal__title{font-weight:600;font-size:32px;line-height:130%;text-transform:uppercase}@media screen and (max-width:992px){.h2,.modal__title{font-size:28px}}@media screen and (max-width:640px){.h2,.modal__title{font-size:24px}}.modal__title--success{font-weight:600;font-size:22px;line-height:130%}@media screen and (max-width:992px){.modal__title--success{font-size:20px}}@media screen and (max-width:640px){.modal__title--success{font-size:18px}}.footer__mail,.mobmenu__contact{font-weight:600;font-size:20px;line-height:130%}@media screen and (max-width:992px){.footer__mail,.mobmenu__contact{font-size:16px}}.heading__description,.mobmenu__item{font-weight:400;font-size:16px;line-height:140%}@media screen and (max-width:992px){.heading__description,.mobmenu__item{font-size:14px}}.breadcrumbs__item,.button,.checkbox__label,.footer__link,.footer__slogan,.footer__text,.footer__title,.header__control,.header__text,.heading__link,.heading__text,.input,.menu__item,.modal__subtitle,.topnav,.topsearch__input{font-weight:400;font-size:14px;line-height:140%}@media screen and (max-width:992px){.breadcrumbs__item,.button,.checkbox__label,.footer__link,.footer__slogan,.footer__text,.footer__title,.header__control,.header__text,.heading__link,.heading__text,.input,.menu__item,.modal__subtitle,.topnav,.topsearch__input{font-size:13px}}.cookies__text,.mobmenu__subcontact{font-weight:400;font-size:13px;line-height:140%}@media screen and (max-width:640px){.cookies__text,.mobmenu__subcontact{font-size:12px}}.cookies__link,.footer__smalltext,.header__item-text{font-weight:400;font-size:12px;line-height:140%}.cookies__link{font-size:14px}@media screen and (max-width:992px){.cookies__link{font-size:13px}}/* ТЗ-84: запасной шрифт с подогнанными метриками. Manrope подключён с font-display:swap, то есть сначала рисуется системный шрифт, потом подменяется. Замерено в браузере: строка крошек в Manrope 339,3px, в sans-serif 326,8px — Manrope шире на 3,82%. На медленном канале подмена происходила на 3,8 секунде, крошки перескакивали на лишнюю строку, контейнер рос с 46 до 70px и тянул вниз всю страницу: CLS 0,274 при пороге 0,1 (Lighthouse на боевом адресе). size-adjust растягивает запасной шрифт до ширины Manrope, и подмена перестаёт менять раскладку. *//* ТЗ-136 (29.09): запасной шрифт на время загрузки Manrope — ширина и высота строки как у Manrope, по начертаниям. Прежде
   одна грань local(Arial) 103,8 % на все веса: 600/700 рисовались Arial Regular (грань объявляла 100–900, жирность не
   синтезировалась), строки короче — с критическим CSS первый кадр раньше шрифтов, и при подмене текст переносился
   иначе: CLS 0,08 на посадочной (плашки, баннеры акций). size-adjust — отношение ширин Manrope и запасного на текстах
   первого экрана (главная, «Трубы», посадочная, карточка, каталог; 360/1440); ascent/descent — метрики Manrope
   (1,06/0,31 em), делённые на size-adjust. Замер — _scripts/tz136-shrift-metriki.mjs. Второе семейство — Android: Arial там
   нет, системный Roboto (600 — от Medium). */
@font-face{font-family:'Manrope Fallback';src:local('Arial'),local('ArialMT'),local('Helvetica'),local('Liberation Sans'),local('LiberationSans');font-weight:100 450;font-style:normal;size-adjust:106.71%;ascent-override:99.33%;descent-override:29.05%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback';src:local('Arial'),local('ArialMT'),local('Helvetica'),local('Liberation Sans'),local('LiberationSans');font-weight:451 550;font-style:normal;size-adjust:108.26%;ascent-override:97.91%;descent-override:28.63%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Helvetica Bold'),local('Helvetica-Bold'),local('Liberation Sans Bold'),local('LiberationSans-Bold');font-weight:551 650;font-style:normal;size-adjust:103.49%;ascent-override:102.43%;descent-override:29.95%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Helvetica Bold'),local('Helvetica-Bold'),local('Liberation Sans Bold'),local('LiberationSans-Bold');font-weight:651 900;font-style:normal;size-adjust:106.10%;ascent-override:99.91%;descent-override:29.22%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback R';src:local('Roboto'),local('Roboto-Regular'),local('Roboto Regular');font-weight:100 450;font-style:normal;size-adjust:105.61%;ascent-override:100.37%;descent-override:29.35%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback R';src:local('Roboto Medium'),local('Roboto-Medium');font-weight:451 550;font-style:normal;size-adjust:105.92%;ascent-override:100.08%;descent-override:29.27%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback R';src:local('Roboto Medium'),local('Roboto-Medium');font-weight:551 650;font-style:normal;size-adjust:108.24%;ascent-override:97.93%;descent-override:28.64%;line-gap-override:0%}
@font-face{font-family:'Manrope Fallback R';src:local('Roboto Bold'),local('Roboto-Bold');font-weight:651 900;font-style:normal;size-adjust:110.34%;ascent-override:96.07%;descent-override:28.09%;line-gap-override:0%}/* ТЗ-127 ч. 5 п. 1: у Manrope «ъ» была неотличима от «ь» (флажок прилипал к предыдущей букве) — буква поправлена в файлах (_scripts/tz127-shrift-tverdyj-znak.py); ?v=127 — чтобы браузеры не держали старые файлы из кэша; local() снят — установленный у посетителя Manrope перебил бы правку */@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-Bold.eot);src:url(/assets/templates/fonts/Manrope-Bold.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-Bold.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-Bold.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-Bold.ttf?v=127) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-Semibold.eot);src:url(/assets/templates/fonts/Manrope-Semibold.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-Semibold.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-Semibold.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-Semibold.ttf?v=127) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-Regular.eot);src:url(/assets/templates/fonts/Manrope-Regular.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-Regular.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-Regular.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-Regular.ttf?v=127) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-Light.eot);src:url(/assets/templates/fonts/Manrope-Light.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-Light.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-Light.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-Light.ttf?v=127) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-Thin.eot);src:url(/assets/templates/fonts/Manrope-Thin.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-Thin.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-Thin.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-Thin.ttf?v=127) format("truetype");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-Medium.eot);src:url(/assets/templates/fonts/Manrope-Medium.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-Medium.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-Medium.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-Medium.ttf?v=127) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Manrope';src:url(/assets/templates/fonts/Manrope-ExtraBold.eot);src:url(/assets/templates/fonts/Manrope-ExtraBold.eot?#iefix) format("embedded-opentype"),url(/assets/templates/fonts/Manrope-ExtraBold.woff2?v=127) format("woff2"),url(/assets/templates/fonts/Manrope-ExtraBold.woff?v=127) format("woff"),url(/assets/templates/fonts/Manrope-ExtraBold.ttf?v=127) format("truetype");font-weight:800;font-style:normal;font-display:swap}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh;font-family:"Manrope","Manrope Fallback","Manrope Fallback R",sans-serif;font-weight:400;font-size:16px}body.lock{overflow:hidden}main{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}*{-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#e1e5f0 #f5f5f6;scroll-behavior:smooth;-webkit-tap-highlight-color:transparent}*,h1{margin:0}menu,ol,ul{list-style:none}a{text-decoration:none;color:inherit}iframe{border:0}button,dialog,fieldset,input,textarea{background:0 0;border:0;outline:0}button{cursor:pointer}*,fieldset{padding:0}address{font-style:normal}details summary::-webkit-details-marker{display:none}details>summary{list-style:none;outline:0}mark{background:0 0}img{display:block;width:100%}use{pointer-events:none}p{margin-bottom:10px}p:last-child{margin-bottom:0}.section{padding:60px 0}@media screen and (max-width:1600px){.section{padding:50px 0}}@media screen and (max-width:992px){.section{padding:40px 0}}@media screen and (max-width:640px){.section{padding:30px 0}}.section--top{padding-top:0}.section--bot{padding-bottom:100px}@media screen and (max-width:992px){.section--bot{padding-bottom:60px}}.container{position:relative;margin:0 auto;padding:0 20px;max-width:1500px;-webkit-box-sizing:unset;box-sizing:unset;overflow:hidden}@media screen and (max-width:1600px){.container{max-width:1320px}}@media screen and (max-width:640px){.container{padding:0 10px}}.container--overflow{overflow:visible}.h1{margin-bottom:32px;color:#333}@media screen and (max-width:992px){.h1{margin-bottom:20px}}@media screen and (max-width:640px){.h1{margin-bottom:16px}}.h2{margin-bottom:32px;color:#333}@media screen and (max-width:992px){.h2{margin-bottom:20px}}@media screen and (max-width:640px){.h2{margin-bottom:16px}}.link{color:#001960;text-decoration:underline;cursor:pointer}.copy{position:fixed;padding:4px;background-color:#fff;border:1px solid #001960;border-radius:6px;font-size:13px;z-index:10}.table-responsive{overflow-x:auto}.form--consulter input{background-color:#fff}.form--consulter .checkbox__label,.form--consulter .checkbox__label>a:hover{color:#fff}.form--consulter .checkbox__input:checked+.checkbox__box{background-color:#fff;border-color:#fff}.form--consulter .checkbox__input:checked+.checkbox__box>.checkbox__svg{stroke:#001960}.form--consulter .checkbox:hover .checkbox__box{border-color:#fff}.delivery-block__h2{font-weight:600!important;font-size:32px!important;line-height:130%!important;text-transform:uppercase!important;margin-bottom:32px!important}#distance-calc{width:100%}#distance-calc .calc-inputs{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}#distance-calc,#distance-calc .calc-inputs .address-block,#distance-calc .calc-inputs .car-block,#distance-calc .result-block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#distance-calc .calc-inputs .address-block,#distance-calc .calc-inputs .car-block{margin-right:24px;width:calc(100%/2 - 203px);-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#distance-calc .calc-inputs span{margin-bottom:10px;color:#333;font-size:15px;font-weight:500}#distance-calc .calc-inputs .address-block input,#distance-calc .calc-inputs .car-block #dropdown_button{padding:8px 16px;width:100%;height:52px;color:#a9adb4;font-size:14px;font-weight:400;line-height:52px;border-radius:4px;border:1px solid #bdbdbd;background-color:#fafafa;-webkit-box-sizing:border-box;box-sizing:border-box}#distance-calc .calc-inputs>button{width:155px;height:52px;text-align:center;color:#fff;font-weight:600;font-size:13px;line-height:120%;text-transform:uppercase;background-color:#333;border-radius:5px;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;border:0}#distance-calc .result-block{margin-top:10px;gap:10px}#distance-calc .result-block>div{color:#4f4f4f;font-size:14px;font-weight:400;line-height:110%}#distance-calc .result-block>div>span{color:#262626;font-size:15px;font-weight:500}@media screen and (max-width:992px){#distance-calc .calc-inputs{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:24px}#distance-calc .calc-inputs .address-block,#distance-calc .calc-inputs .car-block{margin-right:0;width:100%}}.container.container--visible{overflow:visible}.yandex-maps{margin:20px 0}@media screen and (max-width:600px){.yandex-maps{width:100%!important}}.float{position:fixed;bottom:90px;right:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;z-index:10}.float__msgr{width:50px;height:50px;border-radius:50%;overflow:hidden}.float__msgr img{width:100%}@media (max-width:768px){.float__msgr{width:40px;height:40px}.float__msgr.float__msgr--desktop{display:none}}.header{background-color:#fff}.header--top{border-bottom:1px solid #e1e5f0}@media screen and (max-width:1094px){.header--top{display:none}}.header--sticky{position:sticky;top:0;left:0;z-index:4}@media screen and (max-width:424px){.header--sticky{height:61px}}.header__inner{padding:12px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__inner--top{gap:28px}@media screen and (max-width:1280px){.header__inner--top{gap:12px}}.header__inner--bot{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:40px}.header__city{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.header__city-geo{-ms-flex-negative:0;flex-shrink:0;width:20px;height:20px;fill:none;stroke:#333;stroke-width:1.5;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.header__city:hover .header__city-geo{stroke:#001960}.header__text{color:#333}.header__menu{margin-left:12px;margin-right:auto;display:-webkit-box;display:-ms-flexbox;display:flex}@media screen and (max-width:1600px){.header__menu{margin-left:0}}@media screen and (max-width:1094px){.header__menu{display:none}}.header__item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.header__item-svg{-ms-flex-negative:0;flex-shrink:0;width:24px;height:24px;fill:none;stroke:#333;stroke-width:1.5}.header__item-svg--phone{width:20px;height:20px;stroke-linecap:round;stroke-linejoin:round}.header__item-inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.header__item-text{-ms-flex-item-align:start;align-self:flex-start;color:#001960}.footer__logo img,.header__logo img{max-width:197px;max-height:37px;-o-object-fit:contain;object-fit:contain}.header__block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;gap:8px}.header__block--menu{position:relative;z-index:2}.header__button--catalog.active .header__button-svg--open,.header__button-svg--close{display:none}.header__button--catalog.active .header__button-svg--close,.header__button-svg--open{display:block}.header__topsearch{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (max-width:480px){.header__topsearch{display:none!important}}.header__panel{display:-webkit-box;display:-ms-flexbox;display:flex}@media screen and (max-width:1094px){.header__panel{display:none}}.header__control{position:relative;padding:5px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;width:90px;color:#333;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.header__control:hover{color:#001960}.header__control-total{position:absolute;top:4px;right:26px;width:14px;height:14px;border-radius:100px;background:#db4423;font-weight:700;font-size:12px;line-height:14px;text-align:center;color:#fff}.header__control-total--wishlist{display:none}.header__control-total--wishlist.active{display:block}.header__control-svg{width:20px;height:20px;fill:none;stroke:#333;stroke-width:1.5;stroke-linecap:round;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.header__control-svg--compare{stroke-linejoin:round}.header__control-svg--favorite{fill-rule:evenodd;clip-rule:evenodd}.header__control:hover .header__control-svg{stroke:#001960}.header__button--social{margin-left:-20px}@media screen and (max-width:1094px){.header__button--catalog,.header__button--desktop{display:none!important}}.header__mobile{display:none;gap:16px}@media screen and (max-width:1094px){.header__mobile{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__icon,.header__icon--burger.active{display:-webkit-box;display:-ms-flexbox;display:flex}@media screen and (max-width:1094px){.header__icon--fav{display:none}}.header__icon--burger{display:none}.header__icon>svg{width:20px;height:20px;fill:none;stroke:#001960;stroke-width:1.5}.header__overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000;opacity:0;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms;transition-behavior:allow-discrete;z-index:1}.header__inner--bot.active .header__overlay{display:block;opacity:.6}@starting-style{.header__inner--bot.active .header__overlay{opacity:0}}.header__socials{display:-webkit-box;display:-ms-flexbox;display:flex;gap:5px}.header__phones-toggler,.header__price,.phones__inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__price{gap:6px}.phones__inner{position:relative}.phones__inner:hover{z-index:1000}.phones__inner:hover .phones__dropdown{display:block}.phones__dropdown{position:absolute;top:-19px;left:-19px;display:none}.phones__dropdown-item{margin-top:14px}.phones__dropdown .dropdown{z-index:2;padding:25px;background:#fff;background-color:#fff;min-width:278px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;left:-6px}.phones__dropdown .dropdown__item--last{padding-bottom:0}.phones__dropdown .dropdown__item--first{padding-top:0;margin-top:-6px}.phones__dropdown .dropdown__item{padding:6.5px 0}.dropdown{-webkit-box-shadow:0 5px 20px rgba(0,0,0,.15);box-shadow:0 5px 20px rgba(0,0,0,.15);background:#fff;background-color:#fff;border-radius:4px;position:absolute;top:100%;left:0}.dropdown--relative{position:relative}.button{padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;background-color:#f5f5f6;border-radius:6px;text-align:center;color:#001960;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.button:disabled{opacity:.4;cursor:default}.button--main{background-color:#001960;color:#fff}.button--gray{color:#333}.button--white{background-color:#fff}.button__svg{-ms-flex-negative:0;flex-shrink:0;width:20px;height:20px;fill:#001960;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.button__svg--stroke{fill:none;stroke:#001960;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.button--main .button__svg{fill:#fff}.button--main .button__svg--stroke{fill:none;stroke:#fff}.topsearch{padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;background-color:#f5f5f6;border-radius:6px}.topsearch__input{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:50px;color:#333}.topsearch__input::-webkit-input-placeholder{color:#a9adb4}.topsearch__input::-moz-placeholder{color:#a9adb4}.topsearch__input:-ms-input-placeholder,.topsearch__input::-ms-input-placeholder{color:#a9adb4}.topsearch__input::placeholder{color:#a9adb4}.topsearch__submit{display:-webkit-box;display:-ms-flexbox;display:flex}.topsearch__svg{width:20px;height:20px;fill:none;stroke:#a9adb4;stroke-width:1.5;stroke-linecap:round}.topnav{position:relative;padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;white-space:nowrap}.topnav__chevron{width:20px;height:20px;fill:none;stroke:#333;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;-webkit-transition-duration:100ms;-o-transition-duration:100ms;transition-duration:100ms}.topnav:hover .topnav__chevron{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.topnav__wrapper{display:none;position:absolute;top:100%;left:0;z-index:5}.topnav:hover .topnav__wrapper{display:block}.topnav__list{padding:12px 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px;background:#fff;border-radius:6px;-webkit-box-shadow:0 0 8px 0 rgba(0,0,0,.12);box-shadow:0 0 8px 0 rgba(0,0,0,.12)}.topnav__item{white-space:nowrap}.topnav__item.active,.topnav__item:hover{color:#001960}.topnav__item>a{-webkit-transition-duration:300ms;-o-transition-duration:300ms;transition-duration:300ms}.menu{display:none;position:absolute;top:60px;padding:20px 0;max-height:calc(100vh - 230px);background-color:#fff;border-radius:12px;overflow-y:auto}.menu__nav{padding:0 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:284px}.menu__nav--sub{display:none;border-left:1px solid #f5f5f6}.menu__item,.menu__nav--sub.active{display:-webkit-box;display:-ms-flexbox;display:flex}.menu__item{padding:10px 8px 8px 12px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px;border-radius:6px;color:#333;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.menu__item:has(.menu__chevron.active){background-color:#f5f5f6;color:#001960}.menu__chevron{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.menu__svg{width:20px;height:20px;fill:none;stroke:#a9adb4;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.menu__chevron.active .menu__svg{stroke:#001960}.mobmenu{position:fixed;z-index:10;bottom:0;left:0;width:100vw;height:calc(100dvh - 61px);background-color:rgba(0,0,0,.5);opacity:1;-webkit-transition-duration:300ms;-o-transition-duration:300ms;transition-duration:300ms;transition-behavior:allow-discrete}@starting-style{.mobmenu{opacity:0}}.mobmenu.hidden{display:none;opacity:0}.mobmenu__inner{position:absolute;top:0;right:0;padding:20px 10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:40px;width:320px;height:100%;background-color:#fff;border-top:1px solid #e1e5f0;overflow-y:auto;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition-duration:300ms;-o-transition-duration:300ms;transition-duration:300ms;transition-behavior:allow-discrete}@starting-style{.mobmenu__inner{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}}@media screen and (max-width:440px){.mobmenu__inner{width:100%}}.mobmenu.hidden .mobmenu__inner{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.mobmenu__menu,.mobmenu__nav{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.mobmenu__nav{overflow:hidden}.mobmenu__menu{top:0;left:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;background-color:#fff;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:200ms;-o-transition-duration:200ms;transition-duration:200ms;transition-behavior:allow-discrete}@starting-style{.mobmenu__menu{left:100%}}.mobmenu__menu.hidden{display:none;position:absolute;left:-100%}.mobmenu__item{padding:8px 8px 8px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px;border-radius:6px;color:#333}.mobmenu__item.here{color:#001960}.mobmenu__item--backlink{background-color:#f5f5f6;color:#001960}.mobmenu__chevron{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.mobmenu__svg{width:20px;height:20px;fill:none;stroke:#a9adb4;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.mobmenu__item--backlink .mobmenu__svg{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);stroke:#001960}.mobmenu__contacts{padding:0 10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:20px}.mobmenu__contact{color:#333}.mobmenu__subcontact{margin-top:-18px;color:#001960}.mobmenu__button{-ms-flex-item-align:center;align-self:center;width:280px}.footer{padding-bottom:60px}@media screen and (max-width:640px){.footer{padding-bottom:10px}}.footer__inner{padding:40px 0 60px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:20px;border-top:1px solid #e1e5f0}@media screen and (max-width:992px){.footer__inner{padding:28px 0;display:grid;grid-template-columns:repeat(4,1fr);row-gap:28px}}@media screen and (max-width:640px){.footer__inner{grid-template-columns:repeat(2,1fr)}}.footer__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:24px;max-width:235px}@media screen and (max-width:992px){.footer__main{grid-column:1/5;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:12px;max-width:unset}}@media screen and (max-width:640px){.footer__main{grid-column:1/3}}.footer__logo{-ms-flex-negative:0;flex-shrink:0}.footer__slogan{margin-top:-12px;max-width:187px;color:#333}@media screen and (max-width:992px){.footer__slogan{margin-top:0}}.footer__socials{width:100%}.footer__button{-ms-flex-item-align:start;align-self:flex-start}@media screen and (max-width:992px){.footer__button{display:none}}.footer__button--mobile{display:none}@media screen and (max-width:992px){.footer__button--mobile{display:-webkit-box;display:-ms-flexbox;display:flex;grid-column:1/5}}@media screen and (max-width:640px){.footer__button--mobile{grid-column:1/3}}.footer__menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px;max-width:150px}.footer__title{color:#a9adb4}.footer__text{color:#333}.footer__text--link{-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.footer__text--link.active,.footer__text--link:hover{color:#001960}.footer__contacts{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px}.footer__mail{display:none;color:#333}@media screen and (max-width:480px){.footer__mail{display:block}}.footer__contact{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;max-width:190px}.footer__contact-svg{-ms-flex-negative:0;flex-shrink:0;width:24px;height:24px;fill:none;stroke:#333;stroke-width:1.5}@media screen and (max-width:480px){.footer__contact-svg{display:none}}.footer__contact-svg--phone{width:20px;height:20px;stroke-linecap:round;stroke-linejoin:round}.footer__contact-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.footer__smalltext{color:#001960}.footer__info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;gap:20px}@media screen and (max-width:992px){.footer__info{grid-column:1/5;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px}}@media screen and (max-width:640px){.footer__info{grid-column:1/3;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.footer__payments{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}@media screen and (max-width:640px){.footer__payments{gap:4px}}.footer__payments>img{width:auto}.footer__requisites{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;gap:8px}@media screen and (max-width:992px){.footer__requisites{display:none}}.footer__requisites--mobile{display:none}@media screen and (max-width:992px){.footer__requisites--mobile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}.footer__bottom,.footer__bottom-inner{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__bottom{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.footer__bottom-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media screen and (max-width:992px){.footer__bottom-inner{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px}}@media screen and (max-width:440px){.footer__bottom-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center}}.footer__links{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px}@media screen and (max-width:640px){.footer__links{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px}}.footer__link{text-align:left;text-decoration:underline;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;color:#333;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.footer__link:hover{text-decoration:none;color:#001960}.socials{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.socials__img{width:28px;height:28px;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.socials__img:hover{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03)}.city{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.city__input{width:100%}.city__wrapper{margin-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px}.city__wrapper>*{-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms;cursor:pointer}.city__wrapper>:hover{color:#001960}.city__spinner{display:none;-ms-flex-item-align:center;align-self:center;width:72px;height:72px;-webkit-animation:spinner-plncf9 3.2s infinite;animation:spinner-plncf9 3.2s infinite}.city__spinner::after,.city__spinner::before{content:"";grid-area:1/1;border:11.5px solid;border-radius:50%;border-color:#001960 #001960 #0000 #0000;mix-blend-mode:darken;-webkit-animation:spinner-plncf9 1.3s infinite linear;animation:spinner-plncf9 1.3s infinite linear}.city__spinner::after{border-color:#0000 #0000 #c3c5c8 #c3c5c8;animation-direction:reverse}.modal{display:none;position:fixed;top:0;left:0;padding:120px 0;width:100vw;max-width:unset;height:100vh;max-height:unset;opacity:0;overflow-y:auto;-webkit-transition-duration:700ms;-o-transition-duration:700ms;transition-duration:700ms;transition-behavior:allow-discrete}@media screen and (max-width:992px){.modal{padding:60px 0}}@media screen and (max-width:640px){.modal{padding:40px 0}}@media screen and (max-width:500px){.modal{padding:0}}.modal::-webkit-backdrop{background-color:#000;opacity:0;-webkit-transition-duration:700ms;transition-duration:700ms}.modal::backdrop{background-color:#000;opacity:0;-webkit-transition-duration:700ms;-o-transition-duration:700ms;transition-duration:700ms}.modal.active{display:grid;opacity:1}@starting-style{.modal.active{opacity:0}}.modal.active::-webkit-backdrop{opacity:.6}.modal.active::backdrop{opacity:.6}@starting-style{.modal.active::-webkit-backdrop{opacity:0}.modal.active::backdrop{opacity:0}}.modal__inner{position:relative;margin:auto;padding:52px 40px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:30px;width:500px;background-color:#fff;border-radius:12px}@media screen and (max-width:500px){.modal__inner{padding:80px 20px;width:100%;height:100%;border-radius:0;overflow-y:auto}}.modal__inner--success{padding:40px;gap:32px;width:348px}@media screen and (max-width:500px){.modal__inner--success{padding:32px;border-radius:0}}.modal__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px;text-align:center}.modal__title{color:#333}.modal__subtitle{color:#a9adb4}.modal__close{position:absolute;top:20px;right:20px;display:-webkit-box;display:-ms-flexbox;display:flex}.modal__svg{width:20px;height:20px;fill:none;stroke:#333;stroke-width:1.5;stroke-linecap:round;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.modal__close:hover .modal__svg{stroke:#001960}.modal__success{-ms-flex-item-align:center;align-self:center;width:60px;height:60px}.form,.form--helper{-webkit-box-direction:normal}.form{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.form--helper{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.form--consulter{gap:5px}.form__input{width:100%}.form__file{position:relative;-ms-flex-item-align:start;align-self:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;max-width:100%;cursor:pointer}.form__file>span{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.form__checkbox{margin:12px 0;width:100%}.form--helper .form__label--input{width:calc((100% - 40px)/3)}@media screen and (max-width:992px){.form--helper .form__label--input{width:100%}}@media screen and (max-width:640px){.form--helper .form__label--input{width:calc((100% - 40px)/3)}}@media screen and (max-width:480px){.form--helper .form__label--input{width:100%}}.form--helper .form__label--area,.heading__link:hover::before{width:100%}.form--consulter .form__button,.form--helper .form__button{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:300px}.input{padding:10px 12px;border:1px solid #e1e5f0;border-radius:6px;color:#333;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.input::-webkit-input-placeholder{color:#a9adb4}.input::-moz-placeholder{color:#a9adb4}.input:-ms-input-placeholder,.input::-ms-input-placeholder{color:#a9adb4}.input::placeholder{color:#a9adb4}.input:focus,.input:hover{border-color:#001960}.input--area{height:120px;resize:none}.input--blank{display:none}.input--file{position:absolute;top:21px;left:21px;padding:0;width:1px;height:1px;opacity:0}.checkbox{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;cursor:pointer}.checkbox__input{position:absolute;top:9px;left:9px;width:1px;height:1px;opacity:0}.checkbox__box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;width:20px;height:20px;background-color:transparent;border:1px solid #e1e5f0;border-radius:3px;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.checkbox:hover .checkbox__box{border-color:#001960}.checkbox__input:checked+.checkbox__box{background-color:#001960;border-color:#001960}.checkbox__svg{width:15px;height:12px;fill:none;stroke:transparent;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.checkbox__input:checked+.checkbox__box>.checkbox__svg{stroke:#fff}.checkbox__label{color:#333;word-break:break-word}.checkbox__label>a:hover{color:#001960;text-decoration:underline}.breadcrumbs{padding:20px 0 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}@media screen and (max-width:992px){.breadcrumbs{gap:6px}.breadcrumbs__item:not(:last-child)::after{margin-left:6px}}@media screen and (max-width:640px){.breadcrumbs{padding:16px 0 12px}}.breadcrumbs__item{color:#5f6570;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.breadcrumbs__item:hover{color:#001960}.breadcrumbs__item--active,.breadcrumbs__item--active:hover{color:#333}.breadcrumbs__item:not(:last-child)::after{content:"/";margin-left:8px;color:#5f6570}.heading{margin-bottom:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:20px}@media screen and (max-width:992px){.heading{margin-bottom:20px;-ms-flex-wrap:wrap;flex-wrap:wrap}}.heading--column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:40px}@media screen and (max-width:992px){.heading--column{margin-bottom:24px;gap:20px}}.heading__h1,.heading__h2{margin-bottom:0}.heading__base{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:24px}.heading__text{-ms-flex-negative:0;flex-shrink:0;color:#a9adb4}.heading__link{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;color:#001960}.heading__link::before{content:'';position:absolute;left:0;bottom:0;width:0;height:1px;background-color:#001960;-webkit-transition-duration:400ms;-o-transition-duration:400ms;transition-duration:400ms}.heading__arrow{width:16px;height:16px;fill:none;stroke:#001960;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.heading__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}@media screen and (max-width:640px){.heading__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}}.heading__button{-ms-flex-negative:0;flex-shrink:0}.heading__description{max-width:740px;color:#333}.cookies{position:fixed;right:15px;bottom:60px;-webkit-transform:translateX(calc(100% + 30px));transform:translateX(calc(100% + 30px));padding:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px;width:calc(100vw - 30px);max-width:400px;background-color:rgba(0,0,0,.75);-webkit-transition-duration:750ms;-o-transition-duration:750ms;transition-duration:750ms;z-index:9999}.cookies.active{-webkit-transform:translateX(0);transform:translateX(0)}.cookies__text{color:#fff}.cookies__button{-ms-flex-item-align:start;align-self:flex-start}.cookies__link{text-decoration:underline;color:#fff}
/* ТЗ-06, Шаг 5: min-height на блок фильтров против CLS при асинхронном
   изменении высоты (тот же баг, что ловили на metalos — скролл при
   возврате восстанавливается не туда, т.к. фильтры догружаются позже
   и высота блока меняется). Значение консервативное — уточнить живым
   замером после деплоя. */
.category__mobfilter{min-height:400px}.menu__link{padding:10px 8px 8px 12px;display:block;border-radius:6px;color:#333;transition-duration:400ms}.menu__link:hover{background-color:#f5f5f6;color:#001960}.menu__details{width:100%}.menu__summary{padding:0 8px 0 0;display:flex;align-items:center;justify-content:space-between;gap:8px;border-radius:6px;cursor:pointer;list-style:none}.menu__summary::-webkit-details-marker{display:none}.menu__summary:has(.menu__link:hover){background-color:#f5f5f6}.menu__summary .menu__link{flex:1;min-width:0}.menu__summary .menu__link:hover{background-color:transparent}.menu__chevron-svg{flex-shrink:0;width:20px;height:20px;fill:none;stroke:#A9ADB4;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-90deg);transition-duration:400ms}.menu__details[open]>.menu__summary .menu__chevron-svg{transform:rotate(0deg);stroke:#001960}.menu__nav--sub{margin:2px 0 4px 12px;padding-left:10px;border-left:1px solid #f5f5f6}details[open]>.menu__nav--sub{display:flex}.mobmenu__link{padding:8px 8px 8px 12px;display:block;border-radius:6px;color:#333}.mobmenu__link.here{color:#001960}.mobmenu__details{width:100%}.mobmenu__summary{padding:0 8px 0 0;display:flex;align-items:center;justify-content:space-between;gap:8px;border-radius:6px;cursor:pointer;list-style:none}.mobmenu__summary::-webkit-details-marker{display:none}.mobmenu__summary .mobmenu__link{flex:1;min-width:0}.mobmenu__menu--sub{margin:2px 0 4px 12px;padding-left:10px;border-left:1px solid #f5f5f6}details[open]>.mobmenu__menu--sub{display:flex}.mobmenu__details[open]>.mobmenu__summary .mobmenu__svg{transform:rotate(0deg);stroke:#001960}.ratebar{padding:7px 0;background-color:#001960}.ratebar__text{font-weight:400;font-size:12px;line-height:140%;color:#fff;text-align:center}.ratebar__link{color:#fff;text-decoration:underline;white-space:nowrap}@media screen and (max-width:640px){.ratebar{padding:6px 0}}.totop{position:fixed;right:clamp(24px,5vw,96px);bottom:28px;z-index:5;display:flex;align-items:center;justify-content:center;width:56px;height:56px;padding:0;border:none;border-radius:50%;background-color:rgba(0,25,96,.85);color:#fff;cursor:pointer;opacity:0;visibility:hidden;-webkit-transform:translateY(8px);transform:translateY(8px);transition-duration:200ms;transition-property:opacity,visibility,transform,background-color}/* ТЗ-128 ч. 2.4: подъём над cookie-полосой и панелью покупки — через --tdp-cookies-h и --tdp-panel-h (правило .totop ниже) */.totop.active{opacity:1;visibility:visible;-webkit-transform:none;transform:none}.totop:hover{background-color:#2152BD}.totop__svg{display:block;pointer-events:none}.reviews-list{display:flex;flex-direction:column;gap:16px;margin-top:20px;padding:0;list-style:none}.review{padding:16px;border:1px solid #E1E5F0;border-radius:12px;background-color:#fff}.review__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;margin-bottom:8px}.review__author{font-weight:600;font-size:16px;line-height:130%}@media screen and (max-width:640px){.review__author{font-size:14px}}.review__date{font-weight:400;font-size:12px;line-height:140%;color:#A9ADB4}.review__rating{color:#f5a623;letter-spacing:1px}.review__text{font-weight:400;font-size:14px;line-height:140%;color:#333;margin:0}@media screen and (max-width:992px){.review__text{font-size:13px}}/*ТЗ-59*/.header__price{padding:0;background:none;border:0;font:inherit;color:inherit;text-align:left}.modal__link{color:#001960;text-decoration:underline}/*ТЗ-59-menu*/@media screen and (min-width:1200px){.menu{width:1000px;max-width:calc(100vw - 40px);min-height:460px;padding:12px;overflow:hidden}.menu__nav{width:300px;flex-shrink:0;padding:0;max-height:calc(100vh - 260px);overflow-y:auto;border-right:1px solid #f5f5f6}.menu__item{position:static}.menu__details[open]>.menu__nav--sub{position:absolute;left:310px;top:12px;right:12px;bottom:12px;display:none;width:auto;margin:0;padding:0 4px 0 34px;border-left:none;overflow-y:auto;columns:2;column-gap:28px}.menu__nav>.menu__item:hover>.menu__details[open]>.menu__nav--sub,.menu__nav>.menu__item:focus-within>.menu__details[open]>.menu__nav--sub{display:block}.menu:not(:hover):not(:focus-within)>.menu__nav>.menu__item:first-child>.menu__details[open]>.menu__nav--sub{display:block}.menu__nav--sub>.menu__item{break-inside:avoid}.menu__nav>.menu__item>.menu__details[open]>.menu__summary .menu__chevron-svg{transform:rotate(-90deg)}.menu__nav>.menu__item:hover>.menu__details>.menu__summary,.menu__nav>.menu__item:focus-within>.menu__details>.menu__summary{background-color:#f5f5f6}}
/* ТЗ-76 п.1 — мобильное меню: своя кнопка закрытия и стрелка как отдельная
   зона тапа. Базовые правила идут ДО медиаблоков (ТЗ-59 п.3: правило,
   дописанное в конец файла после @media, гасит медиазапрос). */
.mobmenu__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 4px 0 12px;margin-bottom:-24px}
.mobmenu__head-title{font-weight:600;font-size:16px;line-height:130%;color:#001960}
.mobmenu__close{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;background:#f5f5f6;border:0;border-radius:8px;cursor:pointer}
.mobmenu__close-svg{width:20px;height:20px;fill:none;stroke:#001960;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.mobmenu__summary .mobmenu__chevron{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:6px}
.mobmenu__summary .mobmenu__link{padding-right:0}
/* Закрытый <details> не скрывает подменю сам: правило .mobmenu__menu
   {display:flex} перебивает браузерное display:none для содержимого
   закрытого details. Пока в шаблоне стоял `open`, это не всплывало. */
.mobmenu__details:not([open])>.mobmenu__menu--sub{display:none}

/* ТЗ-76 п.2 — таблица весов в сгенерированном тексте.
   Общее правило .content table задаёт table-layout:fixed и width:10% на
   каждую ячейку: на 390 px семь колонок сжимаются до ~50 px, текст
   переносится по слогам и строка вырастает в пол-экрана. Здесь ширина
   колонок отдаётся содержимому, а лишнее уезжает в горизонтальную
   прокрутку самой таблицы. Заголовок (caption) — обычный подзаголовок
   блока слева, того же размера, что .content h3, а не мелкая подпись
   по центру. Селектор из двух классов бьёт `.content table` из
   постраничных css по специфичности, порядок подключения роли не играет. */
.content .weight-table{display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:0;border-radius:0;border-spacing:0;border-collapse:collapse;table-layout:auto}
.content .weight-table caption{display:block;position:sticky;left:0;margin:0 0 12px;padding:0;font-weight:600;font-size:22px;line-height:130%;text-align:left;color:#333}
.content .weight-table th,.content .weight-table td{width:auto;padding:8px 12px;white-space:nowrap;text-align:left;background-color:transparent;border-radius:0;border-bottom:1px solid #e1e5f0}
.content .weight-table thead th{font-weight:600;background-color:#f5f5f6;color:#333}
.content .weight-table tbody tr:last-child td{border-bottom:0}
@media screen and (max-width:992px){.content .weight-table caption{font-size:20px}}
@media screen and (max-width:640px){.content .weight-table caption{font-size:18px}.content .weight-table th,.content .weight-table td{padding:6px 10px}}
/* ТЗ-79 — баннер cookie перекрывал пункты мобильного меню: у него
   z-index 9999, у панели меню 10. Поднимать панель выше нельзя — баннер
   останется под полупрозрачной подложкой и будет просвечивать. Пока меню
   открыто, баннер прячем: он требует осознанного клика и не должен
   соперничать с меню за те же пиксели. Закрыли меню — баннер вернулся.
   :has() в этом файле уже используется (body:has(.cookies.active) .totop). */
body:has(.mobmenu:not(.hidden)) .cookies{display:none}
/* ТЗ-80 — оформление аккордеона вопросов, ОДНО место на все страницы.
   Второй раз подряд список наследовал чужое: на категориях он брал стили
   контентного списка (.content ul — отступ и синий маркер, чинилось в
   ТЗ-69 п.6), а на карточке остался вовсе без стилей — .faq__* лежат в
   faq.css, который грузят только /faq/ и категория. Итог на карточке:
   вопросы в строку колонками, четвёртый за краем, браузерный маркер у
   каждого summary. Поэтому компонент живёт здесь, в general.css, который
   грузится везде, и не зависит ни от контейнера, ни от faq.css. */
.faq-wrap{width:100%}
.faq-list{display:flex;flex-direction:column;width:100%;margin:20px 0 0;padding:0;list-style:none}
.faq-list>li{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid #e1e5f0;list-style:none;position:static}
/* маркер контентного списка и отступ — гасим явно: .content ul задаёт их
   у каждого li, и без этого пункт читается как перечисление */
.faq-list>li::before{content:none;display:none}
.faq-list>li:last-child{border-bottom:0}
.faq-list details{flex:1;min-width:0;display:block}
.faq-list summary{list-style:none;cursor:pointer;font-weight:600;font-size:18px;line-height:130%;color:#333}
/* браузерный треугольник у summary: ::marker для Firefox, ::-webkit-details-marker для Safari */
.faq-list summary::marker{content:''}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary:hover{color:#001960}
.faq-list .faq__answer{margin:10px 0 0;font-weight:400;font-size:16px;line-height:140%;color:#333}
.faq-list .faq__answer p{margin:0}
/* ответ скрыт до клика. Закрытый <details> сам по себе содержимое не
   прячет, если у потомка задан display — на этом уже спотыкалось
   мобильное меню (ТЗ-76), поэтому гасим явно */
.faq-list details:not([open]) .faq__answer{display:none}
.faq-list .faq__arrow{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:0;border-radius:6px;cursor:pointer}
.faq-list .faq__arrow>svg{width:20px;height:20px;fill:none;stroke:#333;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transform:rotate(90deg);transition-duration:400ms}
.faq-list>li:has(details[open]) .faq__arrow>svg{transform:rotate(-90deg)}
.faq-list>li:has(details[open]) .faq__arrow{background-color:#f5f5f6}
@media screen and (max-width:992px){.faq-list summary{font-size:16px}.faq-list .faq__answer{font-size:14px}}
@media screen and (max-width:640px){.faq-list>li{padding:12px 0}.faq-list .faq__arrow{width:32px;height:32px}}

/* ТЗ-84 п.2 — из assets/components/ajaxform/css/default.css: сам файл больше не подключается (тянул вторую копию jGrowl через @import), а эти три правила нужны. Медиазапросов на .af-message нет, поэтому место в конце файла безопасно (ТЗ-59 п.3). */
.af-message-success{background-color:green!important}
.af-message-error{background-color:brown!important}
.af-message-info{background-color:black!important}

/* ТЗ-85 — страховка на случай, когда lib.css со Splide не применился
   (не доехал, отвалился на медленной сети, вырезан блокировщиком).
   Без неё слайдер разваливается в столбец на всю ширину, а стрелки
   остаются на месте — ровно так выглядит дефект. general.css грузится
   везде и ДО lib.css, поэтому полные правила библиотеки его перекроют;
   это только нижняя граница, чтобы блок не рассыпался. */
.splide__track{overflow:hidden}
.splide__list{display:-webkit-box;display:-ms-flexbox;display:flex}
.splide__slide{-ms-flex-negative:0;flex-shrink:0}/*ТЗ-117: header перенесён в конец разметки, порядок возвращён флексом*/body{display:flex;flex-direction:column;min-height:100vh}.ratebar{order:-2}.header{order:-1}main{order:0;flex:1 0 auto}

/* ТЗ-126 В14: подсказка и ошибка у поля формы. AjaxForm ставит полю класс
   `error` и кладёт текст в `.error_<поле>`, но стилей для этого в теме не было
   вовсе (свой css AjaxForm отключён — ТЗ-84 п.2), поэтому отказ был не виден:
   ни рамки, ни подписи. Красный — #db4423, как в теме. */
.form__hint{font-size:13px;line-height:140%;color:#a9adb4}
.form__error{display:none}
.form__error.error{display:block;font-size:13px;line-height:140%;color:#db4423}
.input.error{border-color:#db4423}
.form__file .input--file.error ~ .js-file-text{color:#db4423}

/* ТЗ-126 В16 (ТЗ 1.5): две строки шапки.
   Первая — навигация (Производство, Услуги, Доставка, Компания ▾, Справочник,
   Прайс-лист, Контакты) и контакты справа; вторая — каталожная: логотип,
   «Каталог», ★ Акции, шесть разделов в порядке спроса, поиск, «Заявка»,
   сравнение/закладки/корзина.
   Выпадашка «Компания» держится на прежних классах .topnav* — они уже
   стилизованы, свои дубли не заводим.
   Разделы прячутся справа налево по ширине: строка обязана остаться в ОДНУ
   линию, иначе липкая шапка скачет по высоте при переходах (CLS). Ниже 1094px
   вся первая строка и разделы скрыты — там работает мобильное меню. */
.header__nav{display:flex;align-items:center;flex-wrap:nowrap;gap:2px;margin-right:auto;font-weight:400;font-size:14px;line-height:140%}
.header__nav-item{white-space:nowrap}
.header__nav-item>a{display:block;padding:10px 12px;color:#333;transition-duration:300ms}
.header__nav-item>a:hover,.header__nav-item.active>a{color:#001960}
/* у пункта с выпадашкой отбивку даёт сам .topnav — ссылке внутри её убираем,
   иначе padding складывается дважды и пункт становится 60 px против 40 px у
   остальных: визуально строка одна, но высота шапки скачет (замер в браузере) */
.header__nav .topnav{padding:10px 12px}
.header__nav .topnav>a{padding:0}
.header__razdely{display:flex;align-items:center;flex-wrap:nowrap;gap:0;margin-left:4px;margin-right:auto;font-weight:400;font-size:13px;line-height:140%}
.header__razdel{white-space:nowrap}
.header__razdel>a{display:block;padding:8px 7px;color:#333;border-radius:6px;transition-duration:300ms;white-space:nowrap}
.header__razdel>a:hover{color:#001960;background-color:#f5f5f6}
.header__razdel--akczii>a{color:#001960;font-weight:600}
.header__zvezda{margin-right:4px;color:#db4423}
/* ТЗ-127 ч. 1 (26.09): шапка после просмотра владельцем. Пороги @media В16
   прятали разделы по ширине, но сама строка разделов оставалась сжимаемой и
   отнимала место у соседей: на 1440 и шире логотип (flex 0 1 auto) уходил в
   0 px, поле поиска — в 72 px. Теперь приоритеты заданы явно:
   1) логотип, «Каталог», «Заявка», панель — не сжимаются никогда;
   2) поиск не уже 320 px (на 1095–1279 — 280: уже подсказка в поле
      обрезается) и забирает свободное место;
   3) разделы получают остаток: список переносит лишние пункты на вторую
      линию, которую срезает высота одной строки, — без JS видны только целые
      пункты; shapka.js уводит перенесённые в «Ещё», а если не влез ни один —
      прячет строку. Строка шапки поэтому всегда в одну линию (CLS). */
.header__inner--bot{gap:20px}
.header__control{width:80px}
.header__logo{display:block;flex:0 0 197px;width:197px}
.header__block--menu,.header__button--desktop,.header__panel,.header__mobile{flex-shrink:0}
.header__razdely-ryad{display:flex;align-items:center;flex:0 1 auto;min-width:0}
.header__razdely-ryad.header__razdely-ryad--pusto{display:none}
.header__razdely{flex:0 1 auto;min-width:0;flex-wrap:wrap;height:34px;overflow:hidden;margin:0}
.header__razdel>a{line-height:18px}
.header__razdel[hidden]{display:none}
.header__esche{position:relative;flex:0 0 auto}
.header__esche[hidden]{display:none}
.header__esche-knopka{display:flex;align-items:center;gap:2px;padding:8px 7px;font:inherit;font-size:13px;line-height:18px;color:#333;background:none;border:0;border-radius:6px;cursor:pointer;white-space:nowrap}
.header__esche-knopka .topnav__chevron{width:16px;height:16px;transition-duration:100ms}
.header__esche:hover .header__esche-knopka,.header__esche.open .header__esche-knopka{color:#001960;background-color:#f5f5f6}
.header__esche:hover .topnav__wrapper,.header__esche.open .topnav__wrapper{display:block}
.header__esche:hover .topnav__chevron,.header__esche.open .topnav__chevron{transform:rotate(180deg)}
.header__esche .topnav__list{min-width:200px;font-size:14px;line-height:140%}
.header__esche .topnav__item>a{display:block;padding:4px 0;color:#333}
.header__esche .topnav__item>a:hover{color:#001960}
/* основа = минимум: поле не сжимается вовсе, сжимается только строка разделов;
   при основе больше минимума браузер ужимал бы их пропорционально, и строка
   разделов после раскладки обрезала бы последний пункт (поймано на 1100) */
.header__inner--bot .header__topsearch{flex:1 1 320px;min-width:320px}
.topsearch__input{min-width:0;-webkit-appearance:none;appearance:none;background:none;border:0}
.topsearch__input::-webkit-search-decoration{display:none}
.header__icon--poisk{display:none}
.header__poisk-zakryt,.header--poisk .header__poisk-otkryt{display:none}
.header--poisk .header__poisk-zakryt{display:block}
/* первая строка: город и телефон переносились в две строки на 1095–1279 */
.header__city,.phones__inner{flex-shrink:0}
.header__city .header__text,.header__phones-toggler{white-space:nowrap}
@media screen and (max-width:1279px){.header__inner--bot{gap:16px}.header__inner--bot .header__topsearch{flex-basis:280px;min-width:280px}.header__control{width:72px}.header__nav-item>a,.header__nav .topnav{padding:10px 7px}}
@media screen and (max-width:1094px){.header__nav,.header__razdely-ryad{display:none}.header__inner--bot{position:relative;gap:20px}.header__inner--bot .header__topsearch{flex:1 1 auto;min-width:0}}
/* до 767 поле не помещается рядом с логотипом и значками — открывается лупой
   на всю ширину под шапкой; 16 px — иначе iOS увеличивает страницу при фокусе.
   !important — против старого .header__topsearch{display:none!important} ≤480 */
@media screen and (max-width:767px){.header__inner--bot .header__topsearch{display:none}.header__icon--poisk{display:flex}.header--poisk .header__inner--bot .header__topsearch{display:flex!important;position:absolute;left:0;right:0;top:100%;z-index:5;box-shadow:0 0 0 8px #fff,0 14px 20px rgba(0,0,0,.14)}.header--poisk .topsearch__input{font-size:16px}}
@media screen and (max-width:480px){.header__logo{flex-basis:150px;width:150px}.header__mobile{gap:14px}}
@media screen and (max-width:374px){.header__logo{flex-basis:124px;width:124px}.header__mobile{gap:10px}.header__inner--bot{gap:12px}}

/* ТЗ-127 ч. 5 п. 6 (26.09): текстовый блок .content — одинаково на всех страницах. Эти правила жили копиями в
   category.css, service.css, news.css и text.css; страницы без этих файлов («Производство» и направления, хабы
   «Справочника», «О компании», отгрузки, проекты) получали браузерные умолчания: межстрочный 1,15, абзацы
   слеплены, у нумерованных шагов «Как заказать производство» ни цифр, ни отступов. Здесь — те же значения, что в
   текстах разделов (category.css), поэтому на разделах, услугах и в статьях вид не меняется. */
.content h2{font-weight:600;font-size:32px;line-height:130%;text-transform:uppercase}
.content h3{font-weight:600;font-size:22px;line-height:130%}
.content h4{font-weight:600;font-size:20px;line-height:130%}
.content h5,.content li,.content p,.content ul li{font-weight:400;font-size:16px;line-height:140%}
.content h6,.content table{font-weight:400;font-size:14px;line-height:140%}
.content>:not(:last-child){margin-bottom:20px}
.content *{color:#333}
.content ul{padding-left:20px;list-style:none;display:flex;flex-direction:column;gap:8px}
.content ul li{color:#333;position:relative}
.content ul li::before{content:"";width:8px;height:8px;border-radius:50%;background-color:#001960;position:absolute;left:-20px;top:7px}
.content ol{padding-left:24px;list-style:auto;display:flex;flex-direction:column;gap:8px}
.content ol li::marker{font-weight:600;color:#001960}
@media screen and (max-width:992px){.content h2{font-size:28px}.content h3{font-size:20px}.content h4{font-size:16px}.content h5,.content li,.content p,.content ul li{font-size:14px}.content h6,.content table{font-size:13px}.content>:not(:last-child){margin-bottom:12px}}
@media screen and (max-width:640px){.content h2{font-size:24px}.content h3{font-size:18px}}
/* ТЗ-127 ч. 5 п. 6: заголовки текста не прилипают к предыдущему абзацу (отступ сверху больше, чем между абзацами —
   поля схлопываются с margin-bottom абзаца), межстрочный у абзацев и пунктов ~1,5 */
/* html впереди: шаблонные css (service, news, text…) несут ту же скомпилированную .content p с 140% и грузятся позже */
html .content h5,html .content li,html .content p,html .content ul li{line-height:150%}
.content>h2:not(:first-child){margin-top:40px}
.content>h3:not(:first-child){margin-top:32px}
.content>h4:not(:first-child),.content>h5:not(:first-child),.content>h6:not(:first-child){margin-top:24px}
@media screen and (max-width:992px){.content>h2:not(:first-child){margin-top:28px}.content>h3:not(:first-child){margin-top:24px}.content>h4:not(:first-child),.content>h5:not(:first-child),.content>h6:not(:first-child){margin-top:18px}}
/* ТЗ-127 ч. 5 п. 4: заглушка карточки статьи/новости без картинки — рисунок целиком на фоне плиток каталога */
.news__img .news__zaglushka{display:block;width:100%;height:100%;object-fit:contain;background-color:#f5f5f6;padding:12px;box-sizing:border-box}

/* ТЗ-127 ч. 10 (просмотр 26.09): ссылки внутри текста — фирменный синий и подчёркивание, при наведении без
   подчёркивания и темнее. Как в SEO-тексте главной (.seotext a, main.css). Только ссылки без класса внутри текстовых
   элементов: кнопки, плитки и карточки внутри .content (у них класс есть) не задеваются. */
html .content :is(p,li,td,th,dd,dt,blockquote,figcaption,h2,h3,h4,h5,h6) a:is(:not([class]),[class=""]){color:#001960;text-decoration:underline;text-decoration-skip-ink:none;text-underline-offset:2px;transition:color .2s}
html .content :is(p,li,td,th,dd,dt,blockquote,figcaption,h2,h3,h4,h5,h6) a:is(:not([class]),[class=""]):hover{color:#000c30;text-decoration:none}

/* ТЗ-127 ч. 10: подсказки поиска в шапке (poisk-podskazki.js) */
.topsearch--podskazki{position:relative}
.poisk-podskazki{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:1200;max-height:min(70vh,560px);overflow-y:auto;background:#fff;border:1px solid #e1e5f0;border-radius:8px;box-shadow:0 12px 32px rgba(0,25,96,.14);padding:6px 0;text-align:left}
.poisk-podskazki[hidden]{display:none}
.poisk-podskazki__zag{padding:8px 14px 4px;font-size:12px;line-height:1.3;color:#a9adb4;text-transform:uppercase;letter-spacing:.04em}
.poisk-podskazki__punkt{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 14px;color:#333;font-size:14px;line-height:1.35;text-decoration:none}
.poisk-podskazki__punkt:hover,.poisk-podskazki__punkt--aktiv{background:#f5f5f6}
.poisk-podskazki__imya b{font-weight:600;color:#001960}
.poisk-podskazki__cena{flex:none;white-space:nowrap;font-weight:600;color:#001960;font-size:13px}
.poisk-podskazki__chislo{flex:none;white-space:nowrap;color:#a9adb4;font-size:13px}
.poisk-podskazki__metka{display:inline-block;padding:1px 6px;border-radius:4px;background:#e1e5f0;color:#001960;font-size:11px;font-weight:600;vertical-align:1px}
.poisk-podskazki__vse{display:block;margin-top:4px;padding:10px 14px;border-top:1px solid #e1e5f0;color:#001960;font-size:14px;font-weight:600;text-decoration:none}
.poisk-podskazki__vse:hover,.poisk-podskazki__vse.poisk-podskazki__punkt--aktiv{background:#f5f5f6}
.poisk-podskazki__pusto{padding:12px 14px;color:#5f6570;font-size:14px}
@media screen and (max-width:640px){.poisk-podskazki{max-height:60vh}.poisk-podskazki__punkt{font-size:13px}}

/* ТЗ-127 ч. 12 (решение владельца 26.09): превью статей, новостей и услуг — текстовые карточки без фото
   (chunks/tpls/anons/tpl_anons.tpl). 4 в ряд на широком экране, 3 — до 1200, 2 — до 992, 1 — на телефоне;
   высота в ряду одна (grid растягивает), «Подробнее» прижат вниз. Вся карточка — ссылка: ::after заголовка. */
.anonsy{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.anonsy:has(> .anons:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
@media screen and (max-width:1200px){.anonsy{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media screen and (max-width:992px){.anonsy,.anonsy:has(> .anons:nth-child(3):last-child){grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
@media screen and (max-width:640px){.anonsy,.anonsy:has(> .anons:nth-child(3):last-child){grid-template-columns:minmax(0,1fr)}}
.anons{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0;padding:20px;border-radius:12px;background-color:#f5f5f6;transition:background-color .2s,box-shadow .2s}
.anons:hover{background-color:#eef0f5;box-shadow:0 6px 20px rgba(0,25,96,.08)}
.anons:focus-within{outline:2px solid #001960;outline-offset:2px}
.anons__tip{font-size:12px;line-height:1.3;font-weight:600;color:#5f6570;text-transform:uppercase;letter-spacing:.04em}
.anons__zagolovok{margin:0;font-weight:600;font-size:18px;line-height:1.3;text-transform:none}
.anons__ssylka{color:inherit;text-decoration:none;transition:color .2s}
.anons__ssylka::after{content:"";position:absolute;inset:0;border-radius:12px}
.anons__ssylka:focus-visible{outline:none}
.anons:hover .anons__ssylka{color:#001960}
.anons__data{font-size:13px;line-height:1.3;color:#a9adb4}
.anons__tekst{margin:0;font-size:15px;line-height:1.45;color:#3c4048;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
.anons__dalee{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:4px;font-size:14px;line-height:1.4;font-weight:600;color:#001960}
.anons__strelka{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.anons:hover .anons__strelka{transform:translateX(3px)}
@media screen and (max-width:992px){.anons{padding:16px}.anons__zagolovok{font-size:16px}.anons__tekst{font-size:14px}}

/* ТЗ-128 ч. 1.1: состояния кнопок. Было: наведение без условия — на тач-экране «залипало» после касания, а карточка
   (product.css) красила «Купить» при наведении в белый фон: белый текст на белом, кнопка пропадала. Теперь наведение —
   только там, где оно есть (мышь); нажатие — фон темнее основного, текст белый; фокус с клавиатуры — обводка. */
@media (hover:hover){.button:hover{background-color:#e8e8e8}.button--main:hover{background-color:#000c30;color:#fff;-webkit-box-shadow:1px 2px 8px 2px rgba(0,25,96,.4);box-shadow:1px 2px 8px 2px rgba(0,25,96,.4)}}
.button:active{background-color:#e8e8e8}
.button--main:active,.button--main:focus{background-color:#000c30;color:#fff}
.button:focus-visible{outline:2px solid #001960;outline-offset:2px}
.button--main:focus-visible{outline-color:#000c30}

/* ТЗ-128 ч. 1.4: уведомления («Товар добавлен в корзину») — внизу экрана, не поверх шапки; в уведомлении корзины —
   ссылка «Перейти в корзину». Прежние правила .notifications вшиты в постраничные css (cart, category, product…) —
   здесь перекрыты специфичностью html body. Над липкой панелью покупки на карточке (ч. 2.3) — выше на её высоту. */
html body .notifications{top:auto;bottom:20px;right:20px;left:auto}
html body .notifications__notification{top:auto;bottom:-160px}
html body .notifications__notification.active{top:auto;bottom:0}
html body .notifications__stolbec{display:flex;flex-direction:column;gap:6px;min-width:0}
html body .notifications__v-korzinu{font-size:15px;font-weight:600;color:#001960;text-decoration:underline;text-underline-offset:2px}
html body .notifications{bottom:calc(20px + var(--tdp-panel-h,0px) + var(--tdp-cookies-h,0px))}
@media screen and (max-width:640px){html body .notifications{bottom:calc(12px + var(--tdp-panel-h,0px) + var(--tdp-cookies-h,0px));right:12px;left:12px;width:auto}}

/* ТЗ-128 ч. 2.3–2.5 (27.09): низ экрана на телефоне.
   Высоты того, что прижато к низу, — переменными: --tdp-panel-h (липкая панель покупки на карточке, ставит класс body
   tdp-panel-pokupki) и --tdp-cookies-h (cookie-полоса, пока видна; меряет скрипт в _layout/scripts.tpl). Уведомление,
   «Наверх» и cookie-полоса считают свой отступ от них и не перекрывают друг друга. */

/* 2.3: хлебные крошки на телефоне — одна строка «← Родительский раздел» (было 3–4 строки). Полная цепочка остаётся в
   разметке и в BreadcrumbList; на странице видна только ссылка на родителя — предпоследний пункт. */
@media screen and (max-width:640px){
	.breadcrumbs{flex-wrap:nowrap;padding:10px 0 8px}
	.breadcrumbs__item{display:none}
	.breadcrumbs__item:nth-last-child(2){display:block;min-width:0}
	.breadcrumbs__item:nth-last-child(2)::after{content:none}
	.breadcrumbs__item:nth-last-child(2)>a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#001960}
	.breadcrumbs__item:nth-last-child(2)>a::before{content:"← "}
}

/* 2.3: липкая панель покупки (product.tpl) — только телефон и узкий планшет */
.panel-pokupki{display:none}
@media screen and (max-width:767px){
	body.tdp-panel-pokupki{--tdp-panel-h:64px;padding-bottom:64px}
	.panel-pokupki{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;align-items:center;gap:10px;box-sizing:border-box;height:calc(64px + env(safe-area-inset-bottom,0px));padding:8px 16px calc(8px + env(safe-area-inset-bottom,0px));background-color:#fff;box-shadow:0 -2px 12px rgba(0,25,96,.15);transform:translateY(110%);transition:transform .25s}
	.panel-pokupki.active{transform:none}
	.panel-pokupki[hidden]{display:none}
	.panel-pokupki__cena{display:flex;flex-direction:column;min-width:0;margin-right:auto}
	.panel-pokupki__summa{font-weight:600;font-size:17px;line-height:125%;color:#001960;white-space:nowrap}
	.panel-pokupki__ed{font-size:12px;line-height:130%;color:#5f6570;white-space:nowrap}
	.panel-pokupki__telefon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border:1px solid #e1e5f0;border-radius:8px}
	.panel-pokupki__svg{width:20px;height:20px;fill:none;stroke:#001960;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
	.panel-pokupki__kupit{flex-shrink:0;height:44px;padding:0 24px}
}

/* 2.4 (27.09): «Наверх» появляется после двух экранов прокрутки (скрипт в _layout/scripts.tpl, было 600 px).
   ТЗ-133 п. 15 (задача владельца 28.09): прежние 40 px полупрозрачной кнопки, вжатой в угол, — бледно и мелко. Теперь
   столбик из двух круглых кнопок фирменного цвета (#001960, как .button--main): внизу «Позвонить» (видна всегда), над ней
   «Наверх». 56 px и 24 px от края на компьютере, 52 и 20 на телефоне (≤ 767 — там же, где панель покупки и полоса cookie);
   env(safe-area-*) — ноль, пока в viewport нет viewport-fit=cover (Safari сам не заводит страницу под «чёлку»), и отступ,
   если его когда-нибудь добавят. Над липкой панелью покупки и cookie-полосой — на их высоту (--tdp-panel-h,
   --tdp-cookies-h). Уведомления — левее столбика (ниже, «уведомления»), не поверх кнопок. z-index 5 (ТЗ-40): выше липкой
   шапки (4), ниже меню (10), фильтра телефона (30), cookie-полосы (9999) и <dialog>. */
:root{--tdp-plav-kraj:24px;--tdp-plav-r:56px;--tdp-plav-zazor:12px}
@media screen and (max-width:767px){:root{--tdp-plav-kraj:20px;--tdp-plav-r:52px}}
.totop,.zvonok{position:fixed;right:calc(var(--tdp-plav-kraj) + env(safe-area-inset-right,0px));z-index:5;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--tdp-plav-r);height:var(--tdp-plav-r);padding:0;border:none;border-radius:50%;background-color:#001960;color:#fff;box-shadow:0 6px 16px rgba(0,25,96,.35),0 2px 4px rgba(0,0,0,.2);cursor:pointer;-webkit-tap-highlight-color:transparent}
.zvonok{bottom:calc(var(--tdp-plav-kraj) + env(safe-area-inset-bottom,0px) + var(--tdp-panel-h,0px) + var(--tdp-cookies-h,0px));transition:background-color .2s}
.totop{bottom:calc(var(--tdp-plav-kraj) + env(safe-area-inset-bottom,0px) + var(--tdp-panel-h,0px) + var(--tdp-cookies-h,0px) + var(--tdp-plav-r) + var(--tdp-plav-zazor))}
.zvonok__svg{display:block;width:26px;height:26px;fill:#fff;stroke:none;pointer-events:none}
.totop .totop__svg{width:26px;height:26px}
.totop:hover,.zvonok:hover{background-color:#001960;color:#fff}
@media (hover:hover){.totop:hover,.zvonok:hover{background-color:#000c30}}
.totop:active,.zvonok:active{background-color:#000c30}
.totop:focus-visible,.zvonok:focus-visible{outline:2px solid #001960;outline-offset:3px}
/* ТЗ-133 п. 15, решение владельца 28.09 (вечер): на карточке товара «Позвонить» — только после прокрутки, пока блок покупки
   («Купить», «Купить в 1 клик», form.offer.product__offer) хоть краем на экране — скрыта (класс body tdp-zvonok-mozhno ставит
   products.js, IntersectionObserver). Без :has() (старые браузеры) — видна всегда, как на прочих страницах. При видимой
   липкой панели покупки (телефон) кнопка стоит над панелью (--tdp-panel-h), а не прячется: панель она не перекрывает.
   Пока «Позвонить» скрыта — «Наверх» на её месте. */
.zvonok{transition:background-color .2s,opacity .2s,visibility .2s,transform .2s}
body:has(form.offer.product__offer):not(.tdp-zvonok-mozhno) .zvonok{opacity:0;visibility:hidden;-webkit-transform:translateY(8px);transform:translateY(8px)}
body:has(form.offer.product__offer):not(.tdp-zvonok-mozhno) .totop{bottom:calc(var(--tdp-plav-kraj) + env(safe-area-inset-bottom,0px) + var(--tdp-panel-h,0px) + var(--tdp-cookies-h,0px))}
/* уведомления («Товар добавлен в корзину», избранное, сравнение) — левее столбика кнопок, у нижнего края как прежде */
html body .notifications{right:calc(var(--tdp-plav-kraj) + var(--tdp-plav-r) + 16px + env(safe-area-inset-right,0px))}
@media screen and (max-width:640px){html body .notifications{right:calc(var(--tdp-plav-kraj) + var(--tdp-plav-r) + 12px + env(safe-area-inset-right,0px))}}
@media print{.totop,.zvonok{display:none}}

/* 2.5: cookie-баннер — компактная полоса внизу: текст со ссылкой «Подробнее» и «Понятно» справа (было — блок в пятую часть
   экрана поверх контента). На телефоне — во всю ширину, над панелью покупки; на десктопе — слева внизу, до 640 px. */
html body .cookies{left:16px;right:auto;bottom:16px;display:flex;flex-direction:row;align-items:center;gap:12px;box-sizing:border-box;width:auto;max-width:640px;padding:10px 12px 10px 16px;border-radius:8px;background-color:rgba(20,24,38,.92);transform:translateY(calc(100% + 40px));transition-duration:400ms}
html body .cookies.active{transform:none}
/* скрытая полоса уезжает вниз на свою высоту плюс высоту панели покупки (она поднимает полосу) и прячется совсем: иначе
   при видимой панели её верх выглядывал из-под края экрана */
html body .cookies:not(.active){transform:translateY(calc(100% + 40px + var(--tdp-panel-h,0px)));visibility:hidden;transition:transform 400ms,visibility 0s linear 400ms}
html body .cookies__text{flex:1 1 auto;min-width:0;font-size:13px;line-height:140%}
html body .cookies__link{font-size:inherit;white-space:nowrap}
html body .cookies__button{flex-shrink:0;align-self:center;height:36px;padding:0 16px}
@media screen and (max-width:767px){
	html body .cookies{left:0;right:0;bottom:var(--tdp-panel-h,0px);max-width:none;gap:6px;border-radius:0;padding:8px 8px 8px 10px}
	html body .cookies__text{font-size:12px;line-height:135%}
	html body .cookies__button{height:34px;padding:0 8px;font-size:13px}
}

/* ТЗ-128 ч. 3.3 (27.09): «Не нашли нужный размер? Пришлите список — подберём» — в конце списка товаров и на поиске
   (chunks/blocks/ne_nashli.tpl). Форма общая (.form); на десктопе текст слева, форма справа: телефон в строку с
   файлом, список — во всю ширину; на телефоне — одной колонкой. */
.ne-nashli{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:24px 40px;align-items:start;margin:32px 0 8px;padding:28px 32px;border-radius:12px;background-color:#f5f5f6}
.ne-nashli__zag{margin:0 0 10px;font-weight:600;font-size:24px;line-height:125%;color:#333}
.ne-nashli__pod{margin:0;font-size:15px;line-height:150%;color:#5f6570}
.ne-nashli .form--ne-nashli{gap:12px}
.ne-nashli .form--ne-nashli .form__label--area .input--area{min-height:96px}
.ne-nashli .form--ne-nashli .form__checkbox{margin:4px 0}
.ne-nashli .form--ne-nashli .form__file{background-color:#fff}
.ne-nashli .form--ne-nashli .form__button{align-self:flex-start;min-width:220px}
@media screen and (max-width:992px){.ne-nashli{grid-template-columns:minmax(0,1fr);padding:20px}}
@media screen and (max-width:640px){.ne-nashli{margin-top:20px;padding:16px;gap:12px}.ne-nashli__zag{font-size:19px}.ne-nashli__pod{font-size:14px}.ne-nashli .form--ne-nashli .form__button{width:100%}}

/* ТЗ-129 ч. 6 (27.09): место под шапку, пока её нет в документе. По ТЗ-117 полоса о ценах и обе шапки стоят в КОНЦЕ
   разметки и поднимаются наверх через order:-1: на медленной сети содержимое рисуется раньше, чем приходит хвост
   документа, и потом съезжает на 175 px (замер «быстрый 4G» ×4: CLS 0,12 на всех страницах десктопа, у главной 0,69).
   Пока элемента нет — у main резерв его высоты; пришёл — резерв ноль, итоговая раскладка та же. Высоты — фактические
   (Chromium, 27.09): полоса 30,8 / 47,6 (641–694) / 45,6 (365–640) / 62,4 (уже 365), верхняя шапка 65 (от 1095), нижняя
   79,6 / 64 (768–1094) / 61 (до 767). Без :has() (старые браузеры) правило не применяется вовсе — как было. */
@supports selector(:has(a)){
	body>main{--tdp-rez-rb:0px;--tdp-rez-verh:0px;--tdp-rez-niz:0px;margin-top:calc(var(--tdp-rez-rb) + var(--tdp-rez-verh) + var(--tdp-rez-niz))}
	body:not(:has(>.ratebar))>main{--tdp-rez-rb:30.8px}
	body:not(:has(>.header--top))>main{--tdp-rez-verh:65px}
	body:not(:has(>.header--sticky))>main{--tdp-rez-niz:79.6px}
	@media screen and (max-width:1094px){
		body:not(:has(>.header--top))>main{--tdp-rez-verh:0px}
		body:not(:has(>.header--sticky))>main{--tdp-rez-niz:64px}
	}
	@media screen and (max-width:767px){body:not(:has(>.header--sticky))>main{--tdp-rez-niz:61px}}
	@media screen and (max-width:694px){body:not(:has(>.ratebar))>main{--tdp-rez-rb:47.6px}}
	@media screen and (max-width:640px){body:not(:has(>.ratebar))>main{--tdp-rez-rb:45.6px}}
	@media screen and (max-width:364px){body:not(:has(>.ratebar))>main{--tdp-rez-rb:62.4px}}
}
/* …и своя высота у самих шапок, пока их содержимое не дочитано: элемент уже в документе (резерв выше снят), а строк внутри
   ещё нет — шапка на 15–20 px ниже итоговой, main съезжал вверх и обратно (замер после резерва: 0,58 на двух страницах).
   Высоты — те же фактические; итоговая раскладка не меняется: содержимое их и так заполняет. */
@media screen and (min-width:1095px){.header--top{min-height:65px}.header--sticky{min-height:79.6px}}
@media screen and (min-width:768px) and (max-width:1094px){.header--sticky{min-height:64px}}
@media screen and (max-width:767px){.header--sticky{min-height:61px}}
/* ТЗ-132 ч. 3 (28.09, задача владельца): отступы между блоками — единый шаг по всему сайту. Шаг между секциями — сумма
   padding соседних .section: 100 px на десктопе (50 + 50; до 1600 px), 80 (≤ 992), 60 на телефоне (30 + 30); замер —
   _scripts/tz132-3-otstupy.mjs («чернила» блока — что видно глазом, от низа одного до верха следующего).
   1) Снят телефонный margin-bottom:-30px и padding-bottom:0 у .section--news (осталось от ленты статей с фото): «Статьи» и
      «Новости» на главной слипались (4 px), а на семи типах страниц «Статьи» наезжали на форму заявки (0 px).
   2) Последняя секция страницы перед подвалом — тот же отступ снизу, что у формы заявки (.section--bot): на хабах
      справочника, рубриках статей, ГОСТах, в корзине, оформлении и на главной (SEO-текст) было 50 / 30 px против 100 / 60. */
main>.section:last-child{padding-bottom:100px}
@media screen and (max-width:992px){main>.section:last-child{padding-bottom:60px}}
/* 3) Шапка блока «заголовок + ссылка» («Статьи — Смотреть все статьи», «Новости — Все новости», «Акции — Все акции»…) на
      телефоне: ссылка — строкой под заголовком. В ряд она держалась впритык (у «Статей» — 10 px до края при 375 px) и на
      телефоне владельца обрезалась справа; под заголовком ей хватает всей ширины при любом размере шрифта. */
@media screen and (max-width:640px){
	.heading:has(>.heading__link){flex-direction:column;align-items:flex-start;gap:6px}
}
/* 4) «Частые вопросы» и «Вопросы о товаре»: у последнего вопроса нет черты снизу (:last-child — border 0), а padding 16 px
      оставался — пустая полоса, и шаг до следующего блока был 116 / 72 px вместо 100 / 60. */
.faq-list>li:last-child{padding-bottom:0}
/* 5) «Не нашли нужный размер?» последним блоком (поиск, конец списка товаров) — без margin-bottom 8 px: шаг до формы заявки
      был 108 / 68 px */
.ne-nashli:last-child{margin-bottom:0}
/* ТЗ-138 (решение владельца 30.09): почта в строке меню и строка контактов при прокрутке.
   Строка контактов (.kontakty-polosa) стоит внутри закреплённого ряда над ним (absolute, bottom:100%), ряд закрепляется с
   отступом в её высоту. Полоса о ценах и верхний ряд — поверх закреплённого ряда (z-index 5 > 4): вверху страницы они
   закрывают строку собой (полоса ≥ 30,8 px, верхний ряд 65 px — строка 28/30 px), при прокрутке уезжают, и строка видна.
   Ничего не появляется «в потоке» — высота и положение блоков не меняются, сдвига вёрстки нет; без скриптов, шрифтов и
   запросов (иконки — из того же спрайта). Липкие колонки и отступ якорей учитывают строку через --tdp-polosa-h. */
:root{--tdp-polosa-h:28px;--tdp-shapka-h:79.6px}
@media screen and (max-width:1094px){:root{--tdp-shapka-h:64px}}
@media screen and (max-width:767px){:root{--tdp-shapka-h:61px}}
@media screen and (max-width:694px){:root{--tdp-polosa-h:30px}}
html{scroll-padding-top:calc(var(--tdp-shapka-h) + var(--tdp-polosa-h) + 12px)}
.header--sticky{top:var(--tdp-polosa-h)}
.ratebar,.header--top{position:relative;z-index:5}
.kontakty-polosa{position:absolute;left:0;right:0;bottom:100%;height:var(--tdp-polosa-h);background-color:#001960;color:#fff}
.kontakty-polosa__ryad{display:flex;align-items:center;justify-content:flex-end;gap:28px;height:100%}
.kontakty-polosa__ssylka{display:inline-flex;align-items:center;gap:6px;font-weight:400;font-size:13px;line-height:1;color:#fff;white-space:nowrap}
.kontakty-polosa__ssylka:hover,.kontakty-polosa__ssylka:focus-visible{color:#fff;text-decoration:underline;text-underline-offset:3px}
.kontakty-polosa__svg{flex-shrink:0;width:14px;height:14px;fill:none;stroke:#fff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.kontakty-polosa__pochta{display:inline-flex;align-items:center;gap:6px;min-width:0}
.kontakty-polosa__kopir{width:14px;height:14px;color:#fff}
/* правка владельца 01.10: на телефоне почта прижата к левому краю, телефон — к правому (в разметке телефон первым); на 320–374
   шрифт ужимается по ширине экрана (не обрезается, не переносится): самая длинная строка — yoshkar-ola@ + телефон 800 */
@media screen and (max-width:767px){.kontakty-polosa__ryad{flex-direction:row-reverse;justify-content:space-between;gap:12px}.kontakty-polosa__ssylka{font-size:12px}}
@media screen and (max-width:374px){.kontakty-polosa__tel .kontakty-polosa__svg{display:none}.kontakty-polosa__ryad{gap:8px}.kontakty-polosa__pochta{gap:5px}.kontakty-polosa__ssylka{font-size:clamp(11px,3.6vw,12px)}}
/* открыт «Каталог»: затемнение живёт внутри закреплённого ряда и должно лечь и на полосу с верхним рядом, как до ТЗ-138 —
   они возвращаются на общий уровень, а строка контактов на это время прячется (иначе встала бы поверх верхнего ряда) */
body:has(.header__inner--bot.active) :is(.ratebar,.header--top){z-index:auto}
body:has(.header__inner--bot.active) .kontakty-polosa{visibility:hidden}
/* мобильное меню открывается под закреплённым рядом — ниже на высоту строки контактов */
.mobmenu{height:calc(100dvh - 61px - var(--tdp-polosa-h))}
/* старая мобильная панель фильтров (Закладки) — поверх полосы о ценах, как была поверх всей шапки */
@media screen and (max-width:640px){html .mobfilter{z-index:6}}
/* почта в строке меню — слева от телефона; значок слева от адреса — кнопка «скопировать» (правка владельца 01.10) */
.header__pochta-blok{display:flex;align-items:center;gap:6px;flex-shrink:0}
.header__pochta{display:flex;align-items:center}
.header__pochta .header__text{white-space:nowrap;transition:color .3s}
.header__pochta:hover .header__text{color:#001960}
.header__kopir{width:20px;height:20px;color:#333}
/* верхний ряд с почтой: город 152 + меню 777 + почта 173 + телефон 169 = 1 272 px при колонке 1 320 (1 500 от 1601 px) —
   промежутки и отступы пунктов меню ужаты ступенями, с запасом под самую длинную почту города (yoshkar-ola@, +32 px),
   чтобы ряд не вылезал за колонку (замер — _scripts/tz138-shapka.mjs):
   ≥ 1601 (колонка 1 500) — как до ТЗ-138 (промежуток 28, пункт 12); 1366–1600 — 16 и 8; 1280–1365 — 12 и 5, почта без значка;
   1095–1279 — 8 и 5, почта значком (адрес — в подсказке и в выпадающем окне телефона). */
@media screen and (max-width:1600px){
	.header__inner--top{gap:16px}
	.header__nav-item>a,.header__nav .topnav{padding-left:8px;padding-right:8px}
}
@media screen and (max-width:1365px){
	.header__inner--top{gap:12px}
	.header__nav-item>a,.header__nav .topnav{padding-left:5px;padding-right:5px}
}
@media screen and (max-width:1279px){
	.header__inner--top{gap:8px}
	.header__pochta .header__text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
}
/* правка владельца 01.10: кнопка «скопировать адрес» рядом с почтой (шапка, строка контактов, подвал, «Контакты»). Значок —
   inline SVG, цвет — currentColor. «Скопировано» — псевдоэлемент поверх (absolute), появляется только на время подсказки:
   ни сдвига вёрстки, ни прокрутки вбок от невидимой подсказки у края */
.kopir{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:0;background:none;cursor:pointer;transition:color .3s}
.kopir__svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.kopir:hover{color:#001960}
.kopir:focus-visible{outline:2px solid #001960;outline-offset:2px;border-radius:3px}
.kopir--ok::after{content:'Скопировано';position:absolute;top:calc(100% + 6px);left:0;z-index:10;padding:5px 9px;border-radius:6px;background-color:#001960;color:#fff;font-weight:400;font-size:12px;line-height:1.3;white-space:nowrap;pointer-events:none;animation:kopir-podskazka .18s ease-out}
@keyframes kopir-podskazka{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.kontakty-polosa__kopir:hover,.kontakty-polosa__kopir:focus-visible{color:#fff;opacity:.8}
.kontakty-polosa__kopir:focus-visible{outline-color:#fff}
.kontakty-polosa__kopir.kopir--ok::after{background-color:#fff;color:#001960;box-shadow:0 2px 8px rgba(0,25,96,.25)}
.footer__pochta{display:flex;align-items:center;gap:10px;align-self:flex-start}
.footer__pochta--mob{display:none}
@media screen and (max-width:992px){.footer__pochta--knopka{display:none}}
@media screen and (max-width:480px){.footer__pochta--mob{display:flex}}
.footer__kopir,.contacts__kopir{width:22px;height:22px;color:#333}
.contacts__pochta{display:inline-flex;align-items:center;gap:10px;max-width:100%}
/* ТЗ-139: окно выбора города (правка владельца 01.10) — поиск сверху, города сеткой карточек (под названием — область), текущий
   выделен; компьютер — 3 колонки, телефон (≤ 640) — шторка снизу во всю ширину, 2 колонки. Открытие/закрытие — общий
   механизм окон (.modal); здесь — ширина, анимация и содержимое. Шрифты — те, что уже на странице (400 и 600) */
.modal--gorod .gorod{gap:20px;width:min(760px,calc(100vw - 40px));padding:40px 40px 36px;animation:gorod-okno .26s cubic-bezier(.2,.8,.2,1)}
@keyframes gorod-okno{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.gorod__verh{display:flex;flex-direction:column;gap:6px;padding-right:32px}
.gorod__zag{text-align:left}
.gorod__pod{font-size:14px;line-height:140%;color:#a9adb4}
.gorod__poisk{position:relative}
.gorod__lupa{position:absolute;top:50%;left:14px;width:20px;height:20px;margin-top:-10px;fill:none;stroke:#a9adb4;stroke-width:1.6;stroke-linecap:round;pointer-events:none}
.gorod__vvod{width:100%;height:48px;padding-left:44px;border-radius:10px;font-size:16px;line-height:1.3;-webkit-appearance:none;appearance:none}
.gorod__vvod:focus{outline:none;border-color:#001960;box-shadow:0 0 0 3px rgba(0,25,96,.12)}
.gorod__vvod::-webkit-search-decoration{-webkit-appearance:none}
.gorod__setka{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.gorod__punkt[hidden]{display:none}
.gorod__kartochka{position:relative;display:flex;flex-direction:column;gap:3px;height:100%;padding:13px 16px;border:1px solid #e1e5f0;border-radius:10px;background-color:#fff;color:#333;transition:border-color .2s,background-color .2s,box-shadow .2s}
.gorod__kartochka:hover{border-color:#001960;background-color:#f7f8fc}
.gorod__kartochka:focus-visible{outline:none;border-color:#001960;box-shadow:0 0 0 3px rgba(0,25,96,.18)}
.gorod__imya{font-weight:600;font-size:16px;line-height:130%}
.gorod__obl{font-size:13px;line-height:130%;color:#a9adb4}
.gorod__kartochka--tekushchij{padding-right:36px;border-color:#001960;background-color:#edf0f7}
.gorod__kartochka--tekushchij .gorod__imya{color:#001960}
.gorod__kartochka--tekushchij .gorod__obl{color:#5c6b92}
.gorod__galka{position:absolute;top:12px;right:12px;width:18px;height:18px;fill:none;stroke:#001960;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gorod__pusto{margin:0;padding:14px 16px;border-radius:10px;background-color:#f5f5f6;font-size:14px;line-height:140%;color:#333}
@media screen and (max-width:992px){.modal--gorod .gorod{padding:32px 28px 28px}}
@media screen and (max-width:640px){
	.modal--gorod{padding:0;align-items:end}
	.modal--gorod .gorod{gap:16px;width:100%;height:auto;max-height:88dvh;margin:auto 0 0;padding:24px 16px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;overflow-y:auto;animation-name:gorod-shtorka;animation-duration:.3s}
	.modal--gorod .modal__close{top:18px;right:14px}
	.gorod__zag{font-size:20px}
	.gorod__pod{font-size:13px}
	.gorod__setka{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
	.gorod__kartochka{padding:11px 10px 11px 12px}
	.gorod__kartochka--tekushchij{padding-right:10px}
	.gorod__imya{font-size:15px}
	.gorod__obl{font-size:12px}
	.gorod__galka{display:none}   /* текущий на телефоне — рамкой и фоном: место под галочку ломало «Нижний Новгород» в две строки */
}
@keyframes gorod-shtorka{from{transform:translateY(100%)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.modal--gorod .gorod{animation:none}}
/* вход в выбор города на телефоне — в шапке мобильного меню, рядом с «Меню» */
.mobmenu__gorod{display:inline-flex;align-items:center;gap:6px;min-width:0;margin-left:auto;padding:6px 10px;border:1px solid #e1e5f0;border-radius:8px;background-color:#fff;font-size:14px;line-height:1.2;color:#333;white-space:nowrap;transition:border-color .2s}
.mobmenu__gorod:hover,.mobmenu__gorod:focus-visible{border-color:#001960}
.mobmenu__gorod-svg{flex-shrink:0;width:16px;height:16px;fill:none;stroke:#001960;stroke-width:1.5}
