/* ===== Страница 3D и BIM-моделей ===== */
/* отступ до подвала — иначе пагинация упирается в футер */
.zkbim { padding-bottom: 60px; }

.zkbim__intro { max-width: 900px; margin: 0 0 30px; font-size: 15px; line-height: 1.5; color: #333; }
.zkbim__layout { display: flex; align-items: flex-start; gap: 30px; }
.zkbim__aside { flex: 0 0 260px; max-width: 260px; }
.zkbim__main  { flex: 1 1 auto; min-width: 0; }

.zkf { border-bottom: 1px solid #e6e6e6; padding: 0 0 12px; margin: 0 0 12px; }
.zkf__head { display: flex; align-items: center; justify-content: space-between;
    cursor: pointer; padding: 10px 0; font-size: 15px; font-weight: 700; color: #1a1a1a; }
.zkf__arrow { flex: 0 0 12px; transition: transform .2s; color: #999; }
.zkf.is-closed .zkf__arrow { transform: rotate(-90deg); }
.zkf.is-closed .zkf__body { display: none; }
.zkf__body--scroll { max-height: 260px; overflow-y: auto; padding-right: 6px; }
.zkf__body--scroll::-webkit-scrollbar { width: 4px; }
.zkf__body--scroll::-webkit-scrollbar-thumb { background: #ccc; border-radius: 2px; }

.zkf__row { display: flex; align-items: center; gap: 8px; padding: 5px 0;
    cursor: pointer; font-size: 14px; line-height: 1.3; }
.zkf__row.is-off { opacity: .4; cursor: default; }
.zkf__row input { flex: 0 0 16px; width: 16px; height: 16px; margin: 0; accent-color: #17417b; cursor: pointer; }
.zkf__row.is-off input { cursor: default; }
.zkf__name { flex: 1 1 auto; color: #1a1a1a; }
.zkf__cnt  { flex: 0 0 auto; color: #999; font-size: 12px; }
.zkf__row.is-hidden { display: none; }
.zkf__search { width: 100%; box-sizing: border-box; padding: 7px 10px; margin: 0 0 8px;
    border: 1px solid #dcdcdc; border-radius: 4px; font-size: 13px; }

.zkbim-ask { margin-top: 24px; padding: 20px; background: #f5f6f8; border-radius: 6px; }
.zkbim-ask__title { font-size: 16px; font-weight: 700; margin: 0 0 8px; }
.zkbim-ask__text { font-size: 13px; line-height: 1.45; color: #555; margin: 0 0 14px; }
.zkbim-ask__btn { display: block; width: 100%; padding: 12px; border: 0; cursor: pointer;
    background: #17417b; color: #fff; font-size: 13px; font-weight: 700;
    text-transform: uppercase; border-radius: 4px; transition: background .2s; }
.zkbim-ask__btn:hover { background: #0f2f5c; }

.zkbim-search { position: relative; margin: 0 0 16px; display: flex; gap: 10px; }
.zkbim-search__input { flex: 1 1 auto; padding: 14px 18px; font-size: 15px;
    border: 1px solid #dcdcdc; border-radius: 6px; box-sizing: border-box; }
.zkbim-search__input:focus { outline: none; border-color: #17417b; }
.zkbim-search__btn { flex: 0 0 auto; padding: 0 28px; border: 0; cursor: pointer;
    background: #17417b; color: #fff; font-size: 13px; font-weight: 700;
    text-transform: uppercase; border-radius: 6px; }
.zkbim-search__btn:hover { background: #0f2f5c; }

.zkbim-hints { position: absolute; top: 100%; left: 0; right: 0; z-index: 50;
    background: #fff; border: 1px solid #e0e0e0; border-radius: 0 0 6px 6px;
    box-shadow: 0 6px 20px rgba(0,0,0,.1); max-height: 320px; overflow-y: auto; display: none; }
.zkbim-hints.is-open { display: block; }
.zkbim-hint { display: block; width: 100%; text-align: left; padding: 10px 16px;
    border: 0; background: none; cursor: pointer; font-size: 14px; line-height: 1.35; }
.zkbim-hint:hover { background: #f5f6f8; }
.zkbim-hint__art { color: #999; font-size: 12px; display: block; }

.zkbim-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 14px; }
.zkbim-tags:empty { margin: 0; }
.zktag { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px;
    background: #f0f1f3; border-radius: 20px; font-size: 12px; color: #333; }
.zktag__x { border: 0; background: #c9ccd1; color: #fff; cursor: pointer;
    width: 15px; height: 15px; border-radius: 50%; line-height: 1; font-size: 13px; padding: 0; }
.zktag__x:hover { background: #17417b; }
.zktag__reset { border: 0; background: none; cursor: pointer; color: #777;
    font-size: 12px; border-bottom: 1px dashed #aaa; padding: 0; }
.zktag__reset:hover { color: #17417b; }

.zkbim-topline { display: flex; justify-content: flex-end; margin: 0 0 16px; }
.zkbim-count { color: #999; font-size: 13px; }

.zkbim-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.zkcard { display: flex; flex-direction: column; border: 1px solid #e8e8e8;
    border-radius: 6px; padding: 16px; background: #fff; transition: box-shadow .2s; }
.zkcard:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.zkcard__pic { height: 170px; display: flex; align-items: center; justify-content: center;
    margin: 0 0 14px; }
.zkcard__pic img { max-width: 100%; max-height: 100%; object-fit: contain; }
.zkcard__noimg { display: block; width: 64px; height: 76px; border-radius: 4px;
    background: #f1f2f4; position: relative; }
.zkcard__noimg::after { content: ''; position: absolute; top: 0; right: 0;
    border: 14px solid transparent; border-top-color: #fff; border-right-color: #fff; }
.zkcard__art { font-size: 12px; color: #999; margin: 0 0 6px; }
.zkcard__name { font-size: 14px; line-height: 1.35; color: #1a1a1a; margin: 0 0 14px;
    /* имена файлов проектов идут без пробелов и распирают карточку */
    overflow-wrap: anywhere; word-break: break-word;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
    overflow: hidden; min-height: calc(1.35em * 3); }
.zkcard__dl { position: relative; margin-top: auto; }
.zkcard__dlbtn { display: inline-flex; align-items: center; gap: 6px; border: 0;
    background: none; cursor: pointer; color: #17417b; font-size: 14px; padding: 0; }
.zkcard__dlbtn:hover { color: #0f2f5c; }

.zkdl { position: absolute; bottom: 100%; left: -8px; z-index: 40; min-width: 210px;
    background: #fff; border: 1px solid #e0e0e0; border-radius: 6px; padding: 8px;
    box-shadow: 0 6px 24px rgba(0,0,0,.14); display: none; margin-bottom: 8px; }
.zkdl.is-open { display: block; }
.zkdl__close { position: absolute; top: 4px; right: 6px; border: 0; background: none;
    cursor: pointer; font-size: 17px; color: #bbb; line-height: 1; padding: 2px; }
.zkdl__close:hover { color: #333; }
.zkdl__row { display: flex; align-items: center; gap: 10px; padding: 9px 10px;
    text-decoration: none; color: #1a1a1a; border-radius: 4px; font-size: 13px; }
.zkdl__row:hover { background: #f5f6f8; text-decoration: none; }
.zkdl__ext { font-weight: 700; flex: 0 0 38px; }
.zkdl__size { flex: 1 1 auto; color: #999; font-size: 12px; }

.zkbim-empty { grid-column: 1 / -1; padding: 50px 0; text-align: center; color: #777; }

.zkmore { display: block; width: 100%; padding: 15px; margin: 28px 0 0; cursor: pointer;
    border: 1px solid #17417b; background: #fff; color: #17417b;
    font-size: 13px; font-weight: 700; text-transform: uppercase; border-radius: 6px; }
.zkmore:hover { background: #17417b; color: #fff; }
.zkpages { display: flex; justify-content: center; align-items: center; gap: 6px; margin: 24px 0 0; }
.zkpages__i, .zkpages__next { width: 36px; height: 36px; border: 1px solid #e0e0e0;
    background: #fff; border-radius: 50%; cursor: pointer; font-size: 13px; color: #333; }
.zkpages__i:hover, .zkpages__next:hover { border-color: #17417b; color: #17417b; }
.zkpages__i.is-cur { background: #17417b; border-color: #17417b; color: #fff; cursor: default; }
.zkpages__dots { color: #aaa; padding: 0 2px; }

.zkbim.is-loading .zkbim-grid { opacity: .45; pointer-events: none; }

@media screen and (max-width: 1280px) { .zkbim-grid { grid-template-columns: repeat(3, 1fr); } }
@media screen and (max-width: 1024px) {
    .zkbim__layout { flex-direction: column; }
    .zkbim__aside { flex: 1 1 auto; max-width: 100%; width: 100%; order: 0; /* фильтр над карточками на мобильных */ }
    .zkbim__main { order: 1; width: 100%; }
    .zkbim-grid { grid-template-columns: repeat(2, 1fr); }
}
@media screen and (max-width: 600px) {
    .zkbim-grid { grid-template-columns: 1fr; gap: 14px; }
    .zkbim-search { flex-wrap: wrap; }
    .zkbim-search__btn { width: 100%; padding: 13px; }
}

/* ===== попап заявки ===== */
.zkmodal { position: fixed; inset: 0; z-index: 9999; display: none; }
.zkmodal.is-open { display: block; }
.zkmodal__back { position: absolute; inset: 0; background: rgba(20,22,26,.45); }
.zkmodal__win { position: relative; margin: 50px auto; max-width: 560px; width: calc(100% - 32px);
    background: #fff; border-radius: 12px; padding: 32px 36px 28px;
    max-height: calc(100vh - 100px); overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.zkmodal__x { position: absolute; top: 16px; right: 18px; border: 0; background: none;
    cursor: pointer; font-size: 26px; line-height: 1; color: #b9bcc2; padding: 4px; }
.zkmodal__x:hover { color: #333; }
.zkmodal__title { font-size: 22px; font-weight: 700; margin: 0 0 10px; color: #1a1a1a; }
.zkmodal__sub { font-size: 14px; color: #17417b; margin: 0 0 26px; line-height: 1.4; }

.zkform__group { font-size: 14px; font-weight: 600; color: #1a1a1a; margin: 0 0 12px; }
.zkform__row { position: relative; margin: 0 0 14px; }
.zkform__cols { display: flex; gap: 14px; }
.zkform__cols .zkform__row { flex: 1 1 0; min-width: 0; }
.zkform__inp { width: 100%; box-sizing: border-box; padding: 15px 18px; font-size: 14px;
    border: 1px solid #e2e4e8; border-radius: 8px; background: #fff; color: #1a1a1a;
    font-family: inherit; }
.zkform__inp::placeholder { color: #a9adb5; }
.zkform__inp:focus { outline: none; border-color: #17417b; }
.zkform__inp--search { padding-left: 44px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17'%3E%3Ccircle cx='7' cy='7' r='5.6' fill='none' stroke='%23d04802' stroke-width='1.6'/%3E%3Cpath d='M11.4 11.4L16 16' stroke='%23d04802' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 17px center; }
.zkform__area { min-height: 110px; resize: vertical; }
.zkform__hint { display: block; font-size: 12px; color: #a9adb5; margin: 6px 0 0; }
.zkform__err { display: none; font-size: 12px; color: #e03030; margin: 5px 0 0; }
.zkform__row.is-bad .zkform__inp { border-color: #e03030; }
.zkform__row.is-bad .zkform__err { display: block; }

.zkform__submit { width: 100%; padding: 16px; margin: 14px 0 16px; border: 0; cursor: pointer;
    background: #17417b; color: #fff; font-size: 14px; font-weight: 600;
    border-radius: 8px; transition: background .2s; }
.zkform__submit:hover { background: #0f2f5c; }
.zkform__submit:disabled { background: #f1f2f4; color: #b9bcc2; cursor: default; }

.zkform__agree { display: flex; align-items: flex-start; gap: 9px; font-size: 12px;
    line-height: 1.45; color: #8a8e96; cursor: pointer; }
.zkform__agree input { flex: 0 0 15px; width: 15px; height: 15px; margin: 1px 0 0;
    accent-color: #17417b; cursor: pointer; }
.zkform__agree a { color: #8a8e96; text-decoration: underline; }
.js-zkform-agree-err.is-on { display: block; }

.zkform__done { display: none; padding: 16px; border-radius: 8px; background: #eef7ef;
    color: #2b7a35; font-size: 14px; text-align: center; margin: 14px 0 0; }
.zkform.is-sent .zkform__done { display: block; }
.zkform.is-sent .zkform__group,
.zkform.is-sent .zkform__row,
.zkform.is-sent .zkform__cols,
.zkform.is-sent .zkform__submit,
.zkform.is-sent .zkform__agree { display: none; }

@media screen and (max-width: 600px) {
    .zkmodal__win { margin: 16px auto; padding: 26px 20px 22px; }
    .zkmodal__title { font-size: 19px; }
    .zkform__cols { flex-direction: column; gap: 0; }
}

/* баннер бонусной программы — на всю ширину, только если задан */
.zkbim-banner { margin: 0 0 30px; }
.zkbim-banner img { display: block; width: 100%; height: auto; border-radius: 8px; }
.zkbim-banner a { display: block; }

/* ===== Мобильные: фильтры свёрнуты в кнопку «Фильтры», «Не нашли…» — под карточками ===== */
.zkbim-ftoggle { display: none; }
@media screen and (max-width: 1024px) {
    .zkbim-ftoggle { display: flex; align-items: center; justify-content: space-between; width: 100%;
        box-sizing: border-box; margin: 0 0 14px; padding: 13px 16px; border: 1px solid #17417b; border-radius: 6px;
        background: #fff; color: #17417b; font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; }
    .zkbim-ftoggle__arrow { font-size: 12px; transition: transform .2s; }
    .zkbim__aside:not(.is-open) .js-zkbim-filters { display: none; }
    .zkbim__aside.is-open .zkbim-ftoggle__arrow { transform: rotate(180deg); }
    .zkbim__layout > .zkbim-ask { order: 3; width: 100%; box-sizing: border-box; }
}
/* nzeta: синяя гамма — сгенерировано из bim-models.css */
