Assistant Expert в экосистеме Консалтинг+
Помогаем подобрать личного ассистента, бизнес-ассистента или офис-менеджера под задачи руководителя. Для начала важно определить обязанности, формат работы и требования к кандидату. Состав подбора и условия сотрудничества обсуждаем индивидуально.
<!--Библиотека VORON--><!--Боковой скролл зеро https://voron-dev.ru/horizontal-scroll--> <script>
document.addEventListener('DOMContentLoaded', function () {
let arrowBlocks = ['#rec'];
let scrollableBlocks = ['#rec980532951', '#rec980558546', '#rec980567411', '#rec988663656', '#rec988777821', '#rec989296896', '#rec988787521'];
const isElementCenteredInViewport = (el) => {
const rect = el.getBoundingClientRect();
const viewportCenter = window.innerHeight / 2;
const elementCenter = (rect.top + rect.bottom) / 2;
const threshold = window.innerHeight / 5;
return Math.abs(elementCenter - viewportCenter) < threshold;
};
scrollableBlocks.forEach((scrollSelector, index) => {
const elem = document.querySelector(scrollSelector + ' .t396__artboard');
if (!elem) return;
const img = elem.querySelector('img');
if (img) {
img.ondragstart = () => false;
}
if (!(isSafari && window.innerWidth < 960)) elem.style.overflowX = 'auto';
elem.style.overflowY = 'hidden';
elem.style.webkitOverflowScrolling = 'touch';
const carrier = elem.querySelector('.t396__carrier');
if (carrier) {
carrier.style.position = 'sticky';
}
elem.style.cursor = 'grab';
let pos = { left: 0, x: 0 };
let targetScrollLeft = elem.scrollLeft;
let animationFrameId = null;
const mouseDownHandler = (e) => {
elem.style.cursor = 'grabbing';
elem.style.userSelect = 'none';
pos = {
left: elem.scrollLeft,
x: e.clientX
};
document.addEventListener('mousemove', mouseMoveHandler);
document.addEventListener('mouseup', mouseUpHandler);
};
const mouseMoveHandler = (e) => {
const dx = e.clientX - pos.x;
const newScrollLeft = pos.left - dx;
if (newScrollLeft >= 0 && newScrollLeft <= (elem.scrollWidth - elem.clientWidth)) {
elem.scrollLeft = newScrollLeft;
}
};
const mouseUpHandler = () => {
elem.style.cursor = 'grab';
elem.style.removeProperty('user-select');
document.removeEventListener('mousemove', mouseMoveHandler);
document.removeEventListener('mouseup', mouseUpHandler);
};
elem.addEventListener('mousedown', mouseDownHandler);
elem.addEventListener('touchstart', (e) => {
pos = {
left: elem.scrollLeft,
x: e.touches[0].clientX
};
}, { passive: true });
elem.addEventListener('touchmove', (e) => {
const dx = e.touches[0].clientX - pos.x;
const newScrollLeft = pos.left - dx;
if (newScrollLeft >= 0 && newScrollLeft <= (elem.scrollWidth - elem.clientWidth)) {
elem.scrollLeft = newScrollLeft;
}
}, { passive: true });
const smoothScrollStep = () => {
const currentScrollLeft = elem.scrollLeft;
const distance = targetScrollLeft - currentScrollLeft;
if (Math.abs(distance) < 1) {
elem.scrollLeft = targetScrollLeft;
animationFrameId = null;
return;
}
const newScrollLeft = currentScrollLeft + distance * 0.1;
if (newScrollLeft >= 0 && newScrollLeft <= (elem.scrollWidth - elem.clientWidth)) {
elem.scrollLeft = newScrollLeft;
}
animationFrameId = requestAnimationFrame(smoothScrollStep);
};
const handleWheelScroll = (event) => {
if (!isElementCenteredInViewport(elem)) {
return;
}
const visibleWidth = elem.offsetWidth;
const maxScrollLeft = elem.scrollWidth - visibleWidth;
if (maxScrollLeft <= 0) {
return;
}
const delta = event.deltaY > 0 ? 1 : -1;
const nextPosition = elem.scrollLeft + delta * Math.max(20, Math.round(visibleWidth / 10));
const atLeftBoundary = elem.scrollLeft <= 0.5 && delta < 0;
const atRightBoundary = elem.scrollLeft + 20 >= (maxScrollLeft - 0.5) && delta > 0;
event.preventDefault();
targetScrollLeft = Math.min(Math.max(0, nextPosition), maxScrollLeft);
if (!animationFrameId) {
animationFrameId = requestAnimationFrame(smoothScrollStep);
}
};
});
});
</script>
<!--TICODE--><!-- Библиотека модификаций для Тильда https://ticode.dev -->
<!--TCD070--><a href="#tc-success" class="TCDEndPopup841"></a><script>$(document).ready(function(){var TCDGlobalStyle=$('<style id="cost">#tildaformsuccesspopup{position:absolute!important;left:-5000px;}</style>');$("#rec982776841").delegate("form .t-submit","click",function(){var form=$(this).closest("form");$("head").append(TCDGlobalStyle);var timer=setInterval(function(){if(form.hasClass("js-send-form-success")){clearInterval(timer);$(".t-form-success-popup")[0].click();$(".TCDEndPopup841")[0].click();setTimeout(function(){TCDGlobalStyle.remove()},1e3)}},1e3)});$(document).on("click",function(event){if(!$(event.target).closest("#rec982776841 form").length&&!$(event.target).hasClass("t-form-success-popup")&&!$(event.target).hasClass("TCDEndPopup841")){TCDGlobalStyle.remove()}})});</script> <script> (function updateRecordType() { const scriptElement = document.currentScript; if (scriptElement) { const recordElement = scriptElement.closest('.r[data-record-type]'); if (recordElement) { recordElement.setAttribute('data-record-type', Math.random().toString(36).substring(2, 12)); }}})(); </script>