diff --git a/admin/admin.css b/admin/admin.css index df0ed43..7991d90 100644 --- a/admin/admin.css +++ b/admin/admin.css @@ -1214,12 +1214,19 @@ body[data-file-picker-active="true"] .editor { } .collection-drag-handle { - letter-spacing: -0.12em; cursor: grab; touch-action: none; user-select: none; } +.collection-drag-handle svg { + display: block; + width: 0.75rem; + height: 1.125rem; + fill: currentColor; + opacity: 0.78; +} + .collection-drag-handle:active { cursor: grabbing; } diff --git a/admin/admin.js b/admin/admin.js index 046a9ff..5af419f 100644 --- a/admin/admin.js +++ b/admin/admin.js @@ -93,7 +93,7 @@ const STATIC_FALLBACK = { { enabled: true, title: "NODE.DC", - href: "#hero", + href: "javascript:void(0)", linkTarget: "", targetId: "app-data", iconSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", @@ -105,7 +105,7 @@ const STATIC_FALLBACK = { { enabled: true, title: "Корзина", - href: "", + href: "javascript:void(0)", linkTarget: "", targetId: "", iconSrc: "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif", @@ -166,7 +166,7 @@ const STATIC_FALLBACK = { { enabled: true, title: "Новое приложение", - href: "#hero", + href: "javascript:void(0)", linkTarget: "", targetId: "", iconSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", @@ -207,7 +207,7 @@ const GROUP_COPY = { "Верхний информационный блок": "Верхняя пара: длинный текст и крупный заголовок над медиаслайдером.", "Нижний информационный блок": "Нижняя зеркальная пара: крупный заголовок и длинный текст под медиаслайдером.", "Тезисы первого экрана": "Четыре смысловых тезиса вокруг формы раннего доступа.", - "Карточка доступа": "Логотипы, тексты и видимость центрального окна приложения.", + "Карточка доступа": "Единый компонент окна заявки: редактируется здесь и повторяется в нижнем блоке запроса DEMO.", Форма: "Плейсхолдеры, кнопки, success/failure состояния формы.", "Юридический блок": "Политики, права и нижний текст формы.", "Видео-окно": "Окно демо-видео и подключенный медиа-файл.", @@ -220,11 +220,16 @@ const GROUP_COPY = { Отправитель: "Профиль отправителя в FAQ: аватар, имя и подписи письма.", FAQ: "Вопросы и ответы mail-интерфейса. Каждый пункт можно добавить, удалить и переставить.", CTA: "Финальный призыв к действию: заголовок, пояснение, кнопка и ссылка.", - Тарифы: "Верхняя часть тарифной таблицы: заголовки, планы, цены, кнопки и примечания.", + "Центральный текст": "Отдельный центрированный текстовый блок: надзаголовок, крупная строка и три подписи.", + Тарифы: "Окно тарифной таблицы: планы, цены, кнопки и примечания.", "Строки тарифов": "Повторяемые строки тарифной таблицы и значения по каждому плану.", "Медиа-галерея": "Окна с изображениями, подписи файлов и связанные иконки.", + "Карточки скриншотов": "Скриншоты в виде окон и файлов: каждый элемент можно скрыть, переставить, дублировать или удалить.", "TXT-файлы": "Список файлов листа ожидания: название окна, подпись и текст внутри файла.", - Футер: "Нижняя навигация, контактные ссылки, политики и брендовый блок.", + Футер: "Брендовый блок, копирайт и базовые ассеты футера.", + "Навигация футера": "Ссылки навигационной колонки футера. Каждый пункт можно скрыть, переставить, дублировать или удалить.", + "Контактные ссылки": "Ссылки контактной колонки футера. Каждый пункт можно скрыть, переставить, дублировать или удалить.", + Политики: "Нижняя строка политик и условия отображения.", Контент: "Остальные typed-поля выбранного блока.", }; @@ -335,7 +340,7 @@ function inferFieldGroup(path) { if (path.startsWith("content.cards.")) return "Тезисы первого экрана"; if (path.startsWith("content.app.") || path.startsWith("content.accessCard.")) return "Карточка доступа"; if (path.startsWith("content.form.")) return "Форма"; - if (path === "content.legalHtml") return "Юридический блок"; + if (path === "content.legalHtml" || path.startsWith("content.legal.")) return "Юридический блок"; if (path === "content.windowTitle" || path === "content.videoSrc") return "Видео-окно"; if (path.startsWith("content.features.")) return "Пункты"; if (path.startsWith("content.scroll.")) return "Скролл"; @@ -347,8 +352,11 @@ function inferFieldGroup(path) { if (path.startsWith("content.cta.")) return "CTA"; if (path.startsWith("content.plans.") || path.startsWith("content.pricing.")) return "Тарифы"; if (path.startsWith("content.pricingCells.")) return "Строки тарифов"; - if (path.startsWith("content.galleryItems.")) return "Медиа-галерея"; - if (path.startsWith("content.files.")) return "TXT-файлы"; + if (path === "content.galleryItems" || path.startsWith("content.galleryItems.")) return "Карточки скриншотов"; + if (path === "content.filesEnabled" || path.startsWith("content.files.")) return "TXT-файлы"; + if (path === "content.footer.policyEnabled" || path === "content.footer.policyHtml") return "Политики"; + if (path.startsWith("content.footer.navLinks.")) return "Навигация футера"; + if (path.startsWith("content.footer.contactLinks.")) return "Контактные ссылки"; if (path.startsWith("content.footer.")) return "Футер"; if (path.startsWith("content.heading.") || path === "content.introHtml") return "Заголовок"; return "Контент"; @@ -359,7 +367,7 @@ function createDefaultDockItems(dock = {}, assets = {}) { { enabled: true, title: "NODE.DC", - href: "#hero", + href: "javascript:void(0)", linkTarget: "", targetId: dock.appTarget || "app-data", iconSrc: assets.appIconSrc || STATIC_FALLBACK.content.assets.appIconSrc, @@ -371,7 +379,7 @@ function createDefaultDockItems(dock = {}, assets = {}) { { enabled: true, title: "Корзина", - href: "", + href: "javascript:void(0)", linkTarget: "", targetId: "", iconSrc: "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif", @@ -575,6 +583,7 @@ function blockIcon(block) { const type = block.type || ""; if (id === "static-elements") return "SE"; + if (id.includes("gallery") || id.includes("screenshot")) return "SC"; if (id.includes("hero")) return "H"; if (id.includes("feature") || id.includes("video")) return "V"; if (id.includes("component")) return "C"; @@ -1797,13 +1806,13 @@ function renderCollectionField({ block, editableField, grid }) { dragHandle.type = "button"; dragHandle.title = "Перетащить элемент"; dragHandle.setAttribute("aria-label", "Перетащить элемент"); - dragHandle.textContent = "⋮⋮"; + dragHandle.innerHTML = + ''; dragHandle.addEventListener("click", (event) => { event.preventDefault(); event.stopPropagation(); }); dragHandle.addEventListener("pointerdown", (event) => startCollectionPointerDrag(event, details, items, index, rerender)); - controls.append(dragHandle); if (hasVisibilityToggle) { if (!Object.prototype.hasOwnProperty.call(item, "enabled")) item.enabled = true; @@ -1865,6 +1874,7 @@ function renderCollectionField({ block, editableField, grid }) { }); controls.append(button); }); + controls.append(dragHandle); summary.append(summaryTitle, controls); body.className = "collection-item-body"; diff --git a/assets/custom/css/app.css b/assets/custom/css/app.css index 4835daf..4a992e6 100644 --- a/assets/custom/css/app.css +++ b/assets/custom/css/app.css @@ -1,3 +1,5 @@ *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}img{pointer-events:none}.text-scrollable{scrollbar-width:none;-ms-overflow-style:none}.text-scrollable::-webkit-scrollbar{display:none}.circle .x-icon{opacity:0}.circle:hover .x-icon{opacity:1}[data-css=fade-tb]{mask-image:linear-gradient(#0000 0%,#000 15% 85%,#0000 100%);-webkit-mask-image:linear-gradient(#0000 0%,#000 15% 85%,#0000 100%);mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}.current .mail-item{background-color:#3d3d3dc9}[data-module=""]{outline:10px solid red}[data-module=btn]>div>div>div>div{text-shadow:0 1.3em #fff;transition:transform .3s ease-in-out}[data-module=btn]:hover>div>div>div>div{transform:translateY(-1.3em)}[data-module=link]{transition:opacity .1s ease-in-out}[data-module=link] div>div{text-shadow:0 1.3em #fff;transition:transform .3s ease-in-out}[data-module=link]:hover{opacity:.6!important}[data-module=link]:hover div>div{transform:translateY(-.65em)}[data-module=apple-icon]:focus [data-txt]{position:relative}[data-module=apple-icon]:focus [data-txt]:before{content:"";position:absolute;z-index:-1;background-color:#0059d0;border-radius:.3em;width:120%;height:120%;top:-10%;left:-10%}[data-module=notification-w]{--notification-height:98%}[data-module=notification-w]>div:nth-child(2){transform:translateY(calc(-1*var(--notification-height)));z-index:2}[data-module=notification-w]>div:nth-child(3){transform:translateY(calc(-2*var(--notification-height)));z-index:3}[data-module=notification-w]:hover{--notification-height:98%}[data-module=notification-w]:hover>div:nth-child(2){z-index:2;transform:translateY(0)}[data-module=notification-w]:hover>div:nth-child(3){z-index:3;transform:translateY(0)}[data-module=notification]{transition:transform .3s cubic-bezier(.22,1,.36,1)} .app-item.video[data-adaptive-video-window]{--nodedc-video-source-aspect:1.777778;--nodedc-video-height:620px;--nodedc-video-max-height:72svh;--nodedc-video-max-width:70vw;--nodedc-video-render-height:min(var(--nodedc-video-height),var(--nodedc-video-max-height));aspect-ratio:auto;width:min(var(--nodedc-video-max-width),calc(var(--nodedc-video-render-height)*var(--nodedc-video-source-aspect)));height:auto}.app-item.video[data-adaptive-video-window] .video-size[data-adaptive-video]{aspect-ratio:var(--nodedc-video-source-aspect);display:block;width:100%;height:auto;max-height:var(--nodedc-video-render-height)}.app-item.video[data-adaptive-video-window] .video-size[data-adaptive-video]>video.video{display:block;width:100%;height:100%;object-fit:cover}.video-screen [data-media-handle]{display:block;width:100%;height:100%}.video-screen [data-media-handle]>img,.video-screen [data-media-handle]>video{display:block;width:100%;height:100%;object-fit:cover}@media screen and (max-width:767px){.app-item.video[data-adaptive-video-window]{--nodedc-video-max-height:58svh;--nodedc-video-max-width:95vw}} .project-video-detail .project-video-detail-copy{position:relative;z-index:2}.project-video-detail .project-video-detail-copy-bottom{margin-top:2.5rem}.project-video-detail .project-video-detail-copy-bottom .main-h{margin-bottom:0}@media screen and (max-width:767px){.project-video-detail .project-video-detail-hgroup{flex-flow:row;gap:1.25rem}.project-video-detail .project-video-detail-hgroup.flip{flex-flow:row-reverse}.project-video-detail .project-video-detail-hgroup .main-h.h1{font-size:2.35rem}.project-video-detail .project-video-detail-hgroup .h-txt{max-width:22ch}.project-video-detail .project-video-detail-copy-bottom{margin-top:2rem}}@media screen and (max-width:479px){.project-video-detail .project-video-detail-copy{width:86%}.project-video-detail .project-video-detail-hgroup{gap:1rem}.project-video-detail .project-video-detail-hgroup .main-h.h1{font-size:2rem}.project-video-detail .project-video-detail-hgroup .h-txt{max-width:17ch;font-size:.86rem;line-height:1.28em}} +.project-composition .project-composition-copy{position:relative;z-index:2}.project-composition .project-composition-copy-bottom{margin-top:2.5rem}.project-composition .project-composition-copy-bottom .main-h{margin-bottom:0}@media screen and (max-width:767px){.project-composition .project-composition-hgroup{flex-flow:row;gap:1.25rem}.project-composition .project-composition-hgroup.flip{flex-flow:row-reverse}.project-composition .project-composition-hgroup .main-h.h2{font-size:2.35rem}.project-composition .project-composition-hgroup .h-txt{max-width:22ch}.project-composition .project-composition-copy-bottom{margin-top:2rem}}@media screen and (max-width:479px){.project-composition .project-composition-copy{width:86%}.project-composition .project-composition-hgroup{gap:1rem}.project-composition .project-composition-hgroup .main-h.h2{font-size:2rem}.project-composition .project-composition-hgroup .h-txt{max-width:17ch;font-size:.86rem;line-height:1.28em}} +.pricing-table-section .pricing-table-shell{padding-top:12svh;padding-bottom:12svh}@media screen and (max-width:767px){.pricing-table-section .pricing-table-shell{padding-top:8svh;padding-bottom:8svh}} diff --git a/assets/custom/css/out.css b/assets/custom/css/out.css index ed7fe5d..9639c85 100644 --- a/assets/custom/css/out.css +++ b/assets/custom/css/out.css @@ -1,3 +1,5 @@ *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}img{pointer-events:none}.text-scrollable{scrollbar-width:none;-ms-overflow-style:none}.text-scrollable::-webkit-scrollbar{display:none}.circle .x-icon{opacity:0}.circle:hover .x-icon{opacity:1}[data-css=fade-tb]{mask-image:linear-gradient(#0000 0%,#000 15% 85%,#0000 100%);-webkit-mask-image:linear-gradient(#0000 0%,#000 15% 85%,#0000 100%);mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}.current .mail-item{background-color:#3d3d3dc9}[data-module=""]{outline:10px solid red}[data-module=btn]>div>div>div>div{text-shadow:0 1.3em #fff;transition:transform .3s ease-in-out}[data-module=btn]:hover>div>div>div>div{transform:translateY(-1.3em)}[data-module=link]{transition:opacity .1s ease-in-out}[data-module=link] div>div{text-shadow:0 1.3em #fff;transition:transform .3s ease-in-out}[data-module=link]:hover{opacity:.6!important}[data-module=link]:hover div>div{transform:translateY(-.65em)}[data-module=apple-icon]:focus [data-txt]{position:relative}[data-module=apple-icon]:focus [data-txt]:before{content:"";position:absolute;z-index:-1;background-color:#0059d0;border-radius:.3em;width:120%;height:120%;top:-10%;left:-10%}[data-module=notification-w]{--notification-height:98%}[data-module=notification-w]>div:nth-child(2){transform:translateY(calc(-1*var(--notification-height)));z-index:2}[data-module=notification-w]>div:nth-child(3){transform:translateY(calc(-2*var(--notification-height)));z-index:3}[data-module=notification-w]:hover{--notification-height:98%}[data-module=notification-w]:hover>div:nth-child(2){z-index:2;transform:translateY(0)}[data-module=notification-w]:hover>div:nth-child(3){z-index:3;transform:translateY(0)}[data-module=notification]{transition:transform .3s cubic-bezier(.22,1,.36,1)}[data-start=closed]{pointer-events:none;visibility:hidden}[data-module=app]:not([data-start=closed]){transform:scale(0)translateY(200%)}[data-module=folder-wrap]>*{transform:scale(0)}[data-module=list] a{opacity:0}[data-success],[data-failure]{display:none}[data-module=alpha]{opacity:0} .app-item.video[data-adaptive-video-window]{--nodedc-video-source-aspect:1.777778;--nodedc-video-height:620px;--nodedc-video-max-height:72svh;--nodedc-video-max-width:70vw;--nodedc-video-render-height:min(var(--nodedc-video-height),var(--nodedc-video-max-height));aspect-ratio:auto;width:min(var(--nodedc-video-max-width),calc(var(--nodedc-video-render-height)*var(--nodedc-video-source-aspect)));height:auto}.app-item.video[data-adaptive-video-window] .video-size[data-adaptive-video]{aspect-ratio:var(--nodedc-video-source-aspect);display:block;width:100%;height:auto;max-height:var(--nodedc-video-render-height)}.app-item.video[data-adaptive-video-window] .video-size[data-adaptive-video]>video.video{display:block;width:100%;height:100%;object-fit:cover}.video-screen [data-media-handle]{display:block;width:100%;height:100%}.video-screen [data-media-handle]>img,.video-screen [data-media-handle]>video{display:block;width:100%;height:100%;object-fit:cover}@media screen and (max-width:767px){.app-item.video[data-adaptive-video-window]{--nodedc-video-max-height:58svh;--nodedc-video-max-width:95vw}} .project-video-detail .project-video-detail-copy{position:relative;z-index:2}.project-video-detail .project-video-detail-copy-bottom{margin-top:2.5rem}.project-video-detail .project-video-detail-copy-bottom .main-h{margin-bottom:0}@media screen and (max-width:767px){.project-video-detail .project-video-detail-hgroup{flex-flow:row;gap:1.25rem}.project-video-detail .project-video-detail-hgroup.flip{flex-flow:row-reverse}.project-video-detail .project-video-detail-hgroup .main-h.h1{font-size:2.35rem}.project-video-detail .project-video-detail-hgroup .h-txt{max-width:22ch}.project-video-detail .project-video-detail-copy-bottom{margin-top:2rem}}@media screen and (max-width:479px){.project-video-detail .project-video-detail-copy{width:86%}.project-video-detail .project-video-detail-hgroup{gap:1rem}.project-video-detail .project-video-detail-hgroup .main-h.h1{font-size:2rem}.project-video-detail .project-video-detail-hgroup .h-txt{max-width:17ch;font-size:.86rem;line-height:1.28em}} +.project-composition .project-composition-copy{position:relative;z-index:2}.project-composition .project-composition-copy-bottom{margin-top:2.5rem}.project-composition .project-composition-copy-bottom .main-h{margin-bottom:0}@media screen and (max-width:767px){.project-composition .project-composition-hgroup{flex-flow:row;gap:1.25rem}.project-composition .project-composition-hgroup.flip{flex-flow:row-reverse}.project-composition .project-composition-hgroup .main-h.h2{font-size:2.35rem}.project-composition .project-composition-hgroup .h-txt{max-width:22ch}.project-composition .project-composition-copy-bottom{margin-top:2rem}}@media screen and (max-width:479px){.project-composition .project-composition-copy{width:86%}.project-composition .project-composition-hgroup{gap:1rem}.project-composition .project-composition-hgroup .main-h.h2{font-size:2rem}.project-composition .project-composition-hgroup .h-txt{max-width:17ch;font-size:.86rem;line-height:1.28em}} +.pricing-table-section .pricing-table-shell{padding-top:12svh;padding-bottom:12svh}@media screen and (max-width:767px){.pricing-table-section .pricing-table-shell{padding-top:8svh;padding-bottom:8svh}} diff --git a/assets/custom/js/app.js b/assets/custom/js/app.js index 018571b..57f89b0 100644 --- a/assets/custom/js/app.js +++ b/assets/custom/js/app.js @@ -627,8 +627,8 @@ vec4 applyEffect(vec4 color, vec2 uv, vec2 resolution, vec4 uni[4]) { ); // Quantize trail mask at ASCII cell resolution (not per-pixel). - // Trail texture has y=1 at top (same as sourceUv/sampleUv after scene flip). - vec2 trailSampleUv = vec2(sampleUv.x, 1.0 - sampleUv.y); + // Trail texture and screen sample UVs now share the same vertical orientation. + vec2 trailSampleUv = vec2(sampleUv.x, sampleUv.y); float trail = texture(uTrail, trailSampleUv).r; float trailForGlyph = clamp(pow(trail, 0.9), 0.0, 1.0); float level = floor(trailForGlyph * 8.0 + 0.5); @@ -679,6 +679,6 @@ fn fsMain(in: VertexOut) -> @location(0) vec4f { // Alpha=0 marks background pixels so the post wipe can distinguish them from the model. return vec4f(darkCol, 0.0); } -`}},onInitError:(j)=>{console.warn("Failed to initialize mini WebGL runtime:",j)}}),Z=C9({easing:p.scene.mouseEasing}),q=iJ({element:Q,eventElement:window}),K=Z4(q,s8),G=S$.add(()=>{let j=s8();K.setEffectUni("background-flip-wipe",{value1:j}),K.setEffectUni("ascii-trail-mix",{value1:j})}),U=0,W=S0.add((j)=>{if(typeof j?.velocity==="number"){U=j.velocity;return}U=0}),X=nJ(H,{placement:p.scene.icon.placement,mouse:Z,getScale:rJ,getBackgroundFlipProgress:s8,getScrollVelocity:()=>U,scrollVelocityToYOffset:p.scene.icon.scrollVelocityToYOffset,scrollVelocityToXRotation:p.scene.icon.scrollVelocityToXRotation,scrollVelocityToYRotation:p.scene.icon.scrollVelocityToYRotation,scrollFlipVelocityThreshold:p.scene.icon.scrollFlipVelocityThreshold,scrollFlipDuration:p.scene.icon.scrollFlipDuration,scrollYOffsetDamping:p.scene.icon.scrollYOffsetDamping,scrollYOffsetRecenter:p.scene.icon.scrollBounceBack,scrollYOffsetEase:p.scene.icon.scrollYOffsetEase,idleFloatYOffsetAmplitude:p.scene.icon.idleFloatYOffsetAmplitude,idleFloatYOffsetSpeed:p.scene.icon.idleFloatYOffsetSpeed,idleFloatRotationAmplitude:p.scene.icon.idleFloatRotationAmplitude,idleFloatRotationSpeed:p.scene.icon.idleFloatRotationSpeed,log:p.scene.icon.log});return()=>{X(),G(),W(),K.destroy(),q.destroy(),Z.destroy(),H.destroy()}}var AH={};r(AH,{default:()=>dK});var vK="h1, h2, h3, h4",uK={opacity:0,xPercent:20,yPercent:20},q4="blur(6px)",mK={opacity:0,yPercent:12},E9={stagger:0.2,delay:0.1,paragraphDelay:0.05,paragraphWordStagger:0.04,groupStagger:0.18};function $Q(Q){return Q.filter(($)=>!!$&&$.isConnected)}function O9(Q,$){let J=$Q(Q);if(!J.length)return;n.set(J,$)}function K4(Q,$){let J=$Q(Q);if(!J.length)return;n.to(J,$)}function G4(Q){let $=$Q(Q);if(!$.length)return;n.killTweensOf($)}function U4(Q){let $=Q.parentElement,J=document.createElement("div");J.style.position="relative",J.style.display=Q.style.display||"block",$.insertBefore(J,Q),J.appendChild(Q),Q.style.opacity="0";let H=Q.cloneNode(!0);return H.setAttribute("aria-hidden","true"),H.style.opacity="1",H.style.position="absolute",H.style.top="0",H.style.left="0",H.style.width="100%",H.style.height="100%",H.style.pointerEvents="none",H.style.overflow="visible",H.style.zIndex="1",J.appendChild(H),new L$(H,{type:"words"}).words}function dK(Q,$){let J=$.group,H=J?Array.from(document.querySelectorAll(`[data-module="hg"][data-group="${CSS.escape(J)}"]`)).indexOf(Q):0,Z=Q.querySelector(`:scope > ${vK}`),q=Array.from(Q.querySelectorAll(`:scope > p, :scope > div:not(:has(${vK})):not(:has(a, button, [data-module="btn"]))`)).filter((X)=>!X.closest("a, button, [data-module='btn']")),K=Z?Array.from(Z.querySelectorAll("span")):[],G=K.length>0?K:Z?[Z]:[],U=[];if(q.length)U=q.flatMap(U4),O9(U,mK);if(!(G.length>0||U.length>0))return;O9(G,uK),O9([Q],{opacity:1}),l1(Q,{autoStart:!0,once:!1,callback:({isIn:X,direction:j})=>{if(X){if(Zq){O9([Q],{opacity:1}),O9(q,{opacity:1});return}let L=j===-1,B=J==="hero"&&!Q._hgAnimated,M=H*(B?E9.groupStagger*3:E9.groupStagger),I=E9.delay+M,z=E9.delay+E9.paragraphDelay+M;if(G.length){let R=$Q(G);if(R.length)n.fromTo(R,{filter:q4},{opacity:1,filter:"blur(0px)",xPercent:0,yPercent:0,stagger:{each:E9.stagger,from:L?"end":"start"},delay:I,onComplete:()=>{n.set(R,{clearProps:"filter"})}})}if(U.length)K4(U,{opacity:1,yPercent:0,stagger:{each:E9.paragraphWordStagger,from:L?"end":"start"},delay:z,ease:"expo.out"});if(B)Q._hgAnimated=!0}else G4([...G,...U]),O9(G,{...uK,clearProps:"filter"}),O9(U,mK)}})}var PH={};r(PH,{default:()=>oK});var gK="[data-ho-sticky]",W4="[data-ho-track]",X4=".ho-c",cK=0;function pK(Q,$){if(Q==null||Q==="")return $;let J=parseFloat(Q);if(!Number.isFinite(J))return $;return M$(0,0.45,J)}function j4(Q){let $=cK,J=cK,H=Q.hoBuffer?.split(",").map((Z)=>parseFloat(Z.trim()));if(H&&H.length>=2&&Number.isFinite(H[0])&&Number.isFinite(H[1]))$=M$(0,0.45,H[0]),J=M$(0,0.45,H[1]);if($=pK(Q.hoBufferStart,$),J=pK(Q.hoBufferEnd,J),$+J>=1){let Z=0.98/($+J);return{start:$*Z,end:J*Z}}return{start:$,end:J}}function B4(Q){if(Q.matches(gK))return Q;return Q.querySelector(gK)??Q.firstElementChild}function oK(Q,$){let J=j4($),H=B4(Q),Z=H?.querySelector(W4)??H?.firstElementChild;if(!H){console.warn("[ho-scroll] No sticky wrapper: put [data-ho-sticky] on the module root or add a first element child as the sticky container.");return}if(!Z){console.warn("[ho-scroll] No track: add [data-ho-track] inside the sticky wrapper, or make the wide row its first element child.");return}let q=0,K=1,G=[],U=null,W=parseFloat($.hoCThreshold??""),X=Number.isFinite(W)?M$(0.01,1,W):0.15,j=()=>{U?.disconnect(),U=null;for(let z of G)z.style.opacity="";if(G=Array.from(Z.querySelectorAll(X4)),G.length===0)return;for(let z of G)z.style.opacity="0";U=new IntersectionObserver((z)=>{for(let R of z){let F=R.target;F.style.opacity=R.isIntersecting?"1":"0"}},{root:H,threshold:X});for(let z of G)U.observe(z)},L=()=>{let z=Q.getBoundingClientRect().top+S0.scroll,R=S0.scroll-z,F=0;if(q>0){let V=J.start*K,Y=J.end*K,N=Math.max(0.000001,K-V-Y);F=M$(0,1,(R-V)/N)}if(q<=0){Z.style.transform="";return}Z.style.transform=`translate3d(${-F*q}px, 0, 0)`},B=()=>{q=Math.max(0,Z.scrollWidth-window.innerWidth);let z=H.offsetHeight;if(Q.style.minHeight=`${z+q}px`,K=Math.max(0.000001,Q.offsetHeight-H.offsetHeight),q>0&&K{M(),I(),U?.disconnect(),Q.style.minHeight="",Z.style.transform="";for(let z of G)z.style.opacity=""}}var kH={};r(kH,{default:()=>sK});function sK(Q,$){let J=Q.children[0].children[0],H=new L$(J,{type:"chars"}).chars,Z=0.018;H.forEach((q,K)=>{let G=q;G.style.transitionDelay=`${K*0.018}s`})}var xH={};r(xH,{default:()=>lK});var L4=0.12,I4=0.21;function lK(Q,$){let J=Q.querySelectorAll("a"),H=$.group,Z=H?Array.from(document.querySelectorAll(`[data-module="list"][data-group="${CSS.escape(H)}"]`)).indexOf(Q)*I4:0;n.set(J,{opacity:0,yPercent:100}),l1(Q,{autoStart:!0,callback:({isIn:q})=>{if(q)n.to(J,{opacity:1,yPercent:0,stagger:L4,delay:Z});else n.killTweensOf(J),n.set(J,{opacity:0,yPercent:100})}})}var wH={};r(wH,{default:()=>aK});var M4=Object.create,{getPrototypeOf:z4,defineProperty:iK,getOwnPropertyNames:Y4}=Object,N4=Object.prototype.hasOwnProperty,D4=(Q,$,J)=>{J=Q!=null?M4(z4(Q)):{};let H=$||!Q||!Q.__esModule?iK(J,"default",{value:Q,enumerable:!0}):J;for(let Z of Y4(Q))if(!N4.call(H,Z))iK(H,Z,{get:()=>Q[Z],enumerable:!0});return H},F4=(Q,$)=>()=>($||Q(($={exports:{}}).exports,$),$.exports),V4=F4((Q,$)=>{(function(J,H){typeof Q=="object"&&typeof $!="undefined"?$.exports=H():typeof define=="function"&&define.amd?define(H):(J||self).virtualScroll=H()})(Q,function(){var J=0;function H(I){return"__private_"+J+++"_"+I}function Z(I,z){if(!Object.prototype.hasOwnProperty.call(I,z))throw new TypeError("attempted to use private field on non-instance");return I}function q(){}q.prototype={on:function(I,z,R){var F=this.e||(this.e={});return(F[I]||(F[I]=[])).push({fn:z,ctx:R}),this},once:function(I,z,R){var F=this;function V(){F.off(I,V),z.apply(R,arguments)}return V._=z,this.on(I,V,R)},emit:function(I){for(var z=[].slice.call(arguments,1),R=((this.e||(this.e={}))[I]||[]).slice(),F=0,V=R.length;F1,hasPointer:!!window.navigator.msPointerEnabled,hasKeyDown:"onkeydown"in document,isFirefox:navigator.userAgent.indexOf("Firefox")>-1}),Z(this,W)[W]=Object.assign({mouseMultiplier:1,touchMultiplier:2,firefoxMultiplier:15,keyStep:120,preventTouch:!1,unpreventTouchClass:"vs-touchmove-allowed",useKeyboard:!0,useTouch:!0},R),Z(this,j)[j]=new K,Z(this,L)[L]={y:0,x:0,deltaX:0,deltaY:0},Z(this,B)[B]={x:null,y:null},Z(this,M)[M]=null,Z(this,W)[W].passive!==void 0&&(this.listenerOptions={passive:Z(this,W)[W].passive})}var z=I.prototype;return z._notify=function(R){var F=Z(this,L)[L];F.x+=F.deltaX,F.y+=F.deltaY,Z(this,j)[j].emit(U,{x:F.x,y:F.y,deltaX:F.deltaX,deltaY:F.deltaY,originalEvent:R})},z._bind=function(){G.hasWheelEvent&&Z(this,X)[X].addEventListener("wheel",this._onWheel,this.listenerOptions),G.hasMouseWheelEvent&&Z(this,X)[X].addEventListener("mousewheel",this._onMouseWheel,this.listenerOptions),G.hasTouch&&Z(this,W)[W].useTouch&&(Z(this,X)[X].addEventListener("touchstart",this._onTouchStart,this.listenerOptions),Z(this,X)[X].addEventListener("touchmove",this._onTouchMove,this.listenerOptions)),G.hasPointer&&G.hasTouchWin&&(Z(this,M)[M]=document.body.style.msTouchAction,document.body.style.msTouchAction="none",Z(this,X)[X].addEventListener("MSPointerDown",this._onTouchStart,!0),Z(this,X)[X].addEventListener("MSPointerMove",this._onTouchMove,!0)),G.hasKeyDown&&Z(this,W)[W].useKeyboard&&document.addEventListener("keydown",this._onKeyDown)},z._unbind=function(){G.hasWheelEvent&&Z(this,X)[X].removeEventListener("wheel",this._onWheel),G.hasMouseWheelEvent&&Z(this,X)[X].removeEventListener("mousewheel",this._onMouseWheel),G.hasTouch&&(Z(this,X)[X].removeEventListener("touchstart",this._onTouchStart),Z(this,X)[X].removeEventListener("touchmove",this._onTouchMove)),G.hasPointer&&G.hasTouchWin&&(document.body.style.msTouchAction=Z(this,M)[M],Z(this,X)[X].removeEventListener("MSPointerDown",this._onTouchStart,!0),Z(this,X)[X].removeEventListener("MSPointerMove",this._onTouchMove,!0)),G.hasKeyDown&&Z(this,W)[W].useKeyboard&&document.removeEventListener("keydown",this._onKeyDown)},z.on=function(R,F){Z(this,j)[j].on(U,R,F);var V=Z(this,j)[j].e;V&&V[U]&&V[U].length===1&&this._bind()},z.off=function(R,F){Z(this,j)[j].off(U,R,F);var V=Z(this,j)[j].e;(!V[U]||V[U].length<=0)&&this._unbind()},z.destroy=function(){Z(this,j)[j].off(),this._unbind()},I}()})}),R4=D4(V4(),1);function nK(Q,$,J,H){let Z=1-Math.exp(-J*H);return Q+($-Q)*Z}function QQ(Q,$){let J=Q%$;if(Math.abs(J)>$/2)J=J>0?J-$:J+$;return J}var C4={infinite:!0,snap:!0,variableWidth:!1,vertical:!1,dragSensitivity:0.005,lerpFactor:0.3,scrollSensitivity:1,snapStrength:0.1,speedDecay:0.85,bounceLimit:1,virtualScroll:{mouseMultiplier:0.5,touchMultiplier:2,firefoxMultiplier:30,useKeyboard:!1,passive:!0},setOffset:({itemWidth:Q,wrapperWidth:$,itemHeight:J,wrapperHeight:H,vertical:Z})=>Z?J:Q,scrollInput:!1};class rK{speed=0;#$=0;#H=0;#Q=0;deltaTime=0;#J=!0;#Z=!1;#q=0;#j=0;config;wrapper;items;viewport;itemWidths=[];itemOffsets=[];itemHeights=[];itemHeightOffsets=[];isDragging=!1;isTouching=!1;dragStart=0;dragStartTarget=0;isVisible=!1;current=0;target=0;maxScroll=0;resizeTimeout;virtualScroll;observer;touchStartY;touchStartX;touchPreviousX;touchPreviousY;scrollDirection;parallaxValues;webglValue=0;onSlideChange;onResize;onUpdate;constructor(Q,$={}){if(this.config={...C4,...$},$.onSlideChange)this.onSlideChange=$.onSlideChange;if($.onResize)this.onResize=$.onResize;if($.onUpdate)this.onUpdate=$.onUpdate;if(delete this.config.onSlideChange,delete this.config.onResize,delete this.config.onUpdate,this.wrapper=Q,this.items=[...Q.children],this.current=0,this.target=0,this.isDragging=!1,this.isTouching=!1,this.dragStart=0,this.dragStartTarget=0,this.isVisible=!1,this.#q=0,this.#j=0,this.#B(),this.#D(),this.#F(),this.wrapper.style.cursor="grab",this.#B(),this.#V(),this.config.variableWidth&&!this.config.infinite&&this.items.length>0){let J=this.#K(0);this.target=J,this.current=J,this.#N()}}#D(){let Q={root:null,rootMargin:"50px",threshold:0};this.observer=new IntersectionObserver(($)=>{$.forEach((J)=>{this.isVisible=J.isIntersecting})},Q),this.observer.observe(this.wrapper)}#B(){let Q=this.items.map((U)=>U.getBoundingClientRect().width),$=this.items.map((U)=>U.getBoundingClientRect().height),J=this.wrapper.clientWidth,H=this.wrapper.clientHeight,Z=Q.reduce((U,W)=>U+W,0),q=$.reduce((U,W)=>U+W,0),K=0;this.itemOffsets=Q.map((U)=>{let W=K;return K+=U,W}),this.itemWidths=Q;let G=0;if(this.itemHeightOffsets=$.map((U)=>{let W=G;return G+=U,W}),this.itemHeights=$,this.viewport={itemWidth:Q[0]??0,wrapperWidth:J,totalWidth:Z,itemHeight:$[0]??0,wrapperHeight:H,totalHeight:q,vertical:this.config.vertical},this.#H=this.config.setOffset(this.viewport),this.config.variableWidth)if(this.config.vertical)this.maxScroll=-(this.viewport.totalHeight-this.#H);else this.maxScroll=-(this.viewport.totalWidth-this.#H);else{let U=this.config.vertical?this.viewport.itemHeight||1:this.viewport.itemWidth||1,W=this.config.vertical?this.viewport.totalHeight:this.viewport.totalWidth;this.maxScroll=-(W-this.#H)/U}queueMicrotask(()=>{this.onResize?.(this)})}#F(){let Q=(G)=>this.#G(G),$=(G)=>this.#U(G),J=()=>this.#W();this.wrapper.addEventListener("mousedown",Q),window.addEventListener("mousemove",$),window.addEventListener("mouseup",J);let H=5,Z=(G)=>{let U=G.touches[0];this.touchStartY=U.clientY,this.touchStartX=U.clientX,this.touchPreviousX=U.clientX,this.touchPreviousY=U.clientY,this.scrollDirection=void 0,this.isTouching=!0,this.#G(U)},q=(G)=>{if(!this.isTouching||this.#Z)return;let U=G.touches[0],W=Math.abs(U.clientY-this.touchStartY),X=Math.abs(U.clientX-this.touchStartX);if(!this.scrollDirection&&(X>H||W>H))this.scrollDirection=X>W?"horizontal":"vertical";if(this.config.vertical?this.scrollDirection==="vertical":this.scrollDirection==="horizontal")if(G.preventDefault(),this.#U(U),this.config.vertical)this.touchPreviousY=U.clientY;else this.touchPreviousX=U.clientX},K=()=>{this.isTouching=!1,this.scrollDirection=void 0,this.touchPreviousX=void 0,this.touchPreviousY=void 0,this.#W()};this.wrapper.addEventListener("touchstart",Z),window.addEventListener("touchmove",q,{passive:!1}),window.addEventListener("touchend",K),new ResizeObserver(()=>{if(this.resizeTimeout)clearTimeout(this.resizeTimeout);this.resizeTimeout=setTimeout(()=>this.resize(),10)}).observe(this.wrapper)}#M(Q){if(!this.config.infinite){let $=this.config.vertical?this.viewport.itemHeight:this.viewport.itemWidth,J=this.config.variableWidth&&$?this.config.bounceLimit*$:this.config.bounceLimit;if(Q>J)return J;else if(Q{if(!this.isDragging&&!this.#Z){if($.touchDevice){let K=Math.abs($.deltaY),G=Math.abs($.deltaX);if(KK)return}else if(K>G)return}let J=this.config.vertical?!this.config.scrollInput?$.deltaY:Math.abs($.deltaY)>Math.abs($.deltaX)?$.deltaY:$.deltaX:!this.config.scrollInput?$.deltaX:Math.abs($.deltaX)>Math.abs($.deltaY)?$.deltaX:$.deltaY,H=this.config.variableWidth?this.config.scrollSensitivity:this.config.scrollSensitivity*0.001,Z=J*H,q=this.target+Z;if(!this.config.infinite){if(q>0)q=0;else if(q0)this.target=0;else if(this.target0)this.target=0;else if(this.target{let J=this.config.vertical?this.current*this.viewport.itemHeight:this.current*this.viewport.itemWidth,H=this.config.vertical?`translateY(${J}px)`:`translateX(${J}px)`;return Q.style.transform=H,J})}#C(){this.parallaxValues=this.items.map((Q,$)=>{let J=this.current+$,H=QQ(J,this.items.length)-$,Z=this.config.vertical?this.viewport.itemHeight:this.viewport.itemWidth,q=H*Z,K=this.config.vertical?`translateY(${q}px)`:`translateX(${q}px)`;return Q.style.transform=K,QQ(J,this.items.length)})}#z(Q){if(this.config.vertical){let $=this.itemHeights[Q]??this.viewport.itemHeight??0;return(this.itemHeightOffsets[Q]??0)+$/2}else{let $=this.itemWidths[Q]??this.viewport.itemWidth??0;return(this.itemOffsets[Q]??0)+$/2}}#K(Q){let $=this.config.vertical?this.viewport.totalHeight||1:this.viewport.totalWidth||1,J=this.config.vertical?this.viewport.wrapperHeight/2:this.viewport.wrapperWidth/2,H=-(this.#z(Q)-J);if(this.config.infinite){let Z=Math.round((this.target-H)/$);H+=Z*$}else H=Math.min(0,Math.max(this.maxScroll,H));return H}#L(Q){let $=this.config.vertical?this.viewport.totalHeight||1:this.viewport.totalWidth||1;return(Q%$+$)%$}#I(Q){let $=this.config.vertical?this.itemHeightOffsets:this.itemOffsets;if(!$.length)return 0;let J=this.config.vertical?this.viewport.totalHeight||1:this.viewport.totalWidth||1,H=this.config.infinite?this.#L(Q):Math.max(0,Math.min(Q,J)),Z=0,q=Number.POSITIVE_INFINITY;return $.forEach((K,G)=>{let U=this.#z(G),W=Math.abs(H-U);if(W{let J=this.current,H=this.config.vertical?this.itemHeightOffsets:this.itemOffsets,Z=this.config.vertical?`translateY(${J}px)`:`translateX(${J}px)`;return Q.style.transform=Z,J+H[$]})}#E(){let Q=this.config.vertical?this.viewport.totalHeight||1:this.viewport.totalWidth||1;this.parallaxValues=this.items.map(($,J)=>{let H=(this.config.vertical?this.itemHeightOffsets:this.itemOffsets)[J]??0,Z=QQ(this.current+H,Q)-H,q=this.config.vertical?`translateY(${Z}px)`:`translateX(${Z}px)`;return $.style.transform=q,QQ(this.current+H,Q)})}#O(){this.#$=nK(this.#$,this.speed,1/this.config.lerpFactor,this.deltaTime),this.speed*=this.config.speedDecay}goToNext(){if(this.config.variableWidth){let Q=this.config.infinite?(this.currentSlide+1)%this.items.length:Math.min(this.currentSlide+1,this.items.length-1);this.target=this.#K(Q)}else if(!this.config.infinite)this.target=Math.max(this.maxScroll,Math.round(this.target-1));else this.target=Math.round(this.target-1)}goToPrev(){if(this.config.variableWidth){let Q=this.config.infinite?(this.currentSlide-1+this.items.length)%this.items.length:Math.max(this.currentSlide-1,0);this.target=this.#K(Q)}else if(!this.config.infinite)this.target=Math.min(0,Math.round(this.target+1));else this.target=Math.round(this.target+1)}goToIndex(Q){if(this.config.variableWidth){let $=this.config.infinite?(Q%this.items.length+this.items.length)%this.items.length:Math.min(Math.max(Q,0),this.items.length-1);this.target=this.#K($)}else this.target=-Q}set snap(Q){this.config.snap=Q}getProgress(){if(this.config.variableWidth){let $=this.config.vertical?this.viewport.totalHeight||1:this.viewport.totalWidth||1;return(-this.current%$+$)%$/$}let Q=this.items.length;return Math.abs(this.current)%Q/Q}destroy(){if(this.kill(),window.removeEventListener("mousemove",(Q)=>this.#U(Q)),window.removeEventListener("mouseup",()=>this.#W()),window.removeEventListener("touchmove",(Q)=>{let $=Q.touches[0];this.#U($)}),window.removeEventListener("touchend",()=>this.#W()),this.wrapper.removeEventListener("mousedown",(Q)=>this.#G(Q)),this.wrapper.removeEventListener("touchstart",(Q)=>{let $=Q.touches[0];this.#G($)}),this.resizeTimeout)clearTimeout(this.resizeTimeout);if(this.virtualScroll&&this.config.scrollInput)this.virtualScroll.destroy();if(this.observer)this.observer.disconnect()}get currentSlide(){return this.#q}#X(Q){if(this.#q!==Q)this.#j=this.#q,this.#q=Q,this.onSlideChange?.(this.#q,this.#j)}kill(){this.#J=!1,this.items.forEach((Q)=>{Q.style.transform=""}),this.current=0,this.target=0,this.speed=0,this.#$=0,this.touchPreviousX=void 0,this.touchPreviousY=void 0,this.isTouching=!1}init(){this.#J=!0,this.#Q=performance.now()}set paused(Q){this.#Z=Q}get paused(){return this.#Z}get progress(){if(this.config.variableWidth){let Q=this.config.vertical?this.viewport.totalHeight||1:this.viewport.totalWidth||1,$=-this.target;if(this.config.infinite)return($%Q+Q)%Q/Q;else return Math.max(0,Math.min($,Q))/Q}else if(this.config.infinite){let Q=-this.target,$=this.items.length;return(Q%$+$)%$/($-1)}else{let Q=Math.abs(this.current),$=Math.abs(this.maxScroll);return Math.max(0,Math.min(1,Q/$))}}resize(){if(this.#B(),this.config.variableWidth&&!this.config.infinite&&this.items.length>0){let J=this.currentSlide,H=this.#K(J);if(this.target=H,Math.abs(this.current-this.target)<1)this.current=H}let Q=this.#J,$=this.isVisible;this.#J=!0,this.isVisible=!0,this.update(),this.#J=Q,this.isVisible=$}}var JQ=rK;function aK(Q,$){let H=!1,Z=null,q=Q.closest("[data-module='app']"),K=()=>{if(H)return;H=!0;let G=Array.from(Q.children),U="current",W=80,X=(V)=>{setTimeout(()=>{G[V]?.querySelectorAll("[data-unread]").forEach((Y)=>Y.remove())},W)},j=new JQ(Q,{vertical:!0,infinite:!1,snap:!0,dragSensitivity:0.01,onSlideChange:(V,Y)=>{G[Y]?.classList.remove(U),G[V]?.classList.add(U),X(V),y$.CURRENT_MAIL=V}});G[j.currentSlide]?.classList.add(U),X(j.currentSlide),S$.add(()=>{j.update()});let L=8,B=G.length,M=(V,Y)=>-Y+B*Math.round((V+Y)/B),I=[],z=null,R=null,F=()=>{if(z)document.removeEventListener("pointermove",z),z=null;if(R)document.removeEventListener("pointerup",R),R=null};G.forEach((V,Y)=>{let N=0,C=0,D=!1,O=(w)=>{let x=w.clientX-N,S=w.clientY-C;if(Math.abs(x)>L||Math.abs(S)>L)D=!0},A=()=>{if(F(),!D)j.target=M(j.current,Y)},P=(w)=>{N=w.clientX,C=w.clientY,D=!1,z=O,R=A,document.addEventListener("pointermove",O),document.addEventListener("pointerup",A)};V.addEventListener("pointerdown",P),I.push(()=>V.removeEventListener("pointerdown",P))}),Z=()=>{F(),I.forEach((V)=>V()),j.destroy()}};if(!q)K();else if(q.dataset.appOpened==="true")K();else q.addEventListener("app:opened",K,{once:!0});return()=>{q?.removeEventListener("app:opened",K),Z?.()}}var SH={};r(SH,{default:()=>tK});function tK(Q,$){let H=Array.from(Q.children),Z=Q.closest("[data-module='app']"),q=0,K=!1,G=(W)=>{H[q]?.style.setProperty("opacity","0"),q=W,H[W]?.style.setProperty("opacity","1")},U=()=>{if(K)return;K=!0,y$.on("CURRENT_MAIL",G)};if(!Z||Z.dataset.appOpened==="true")U();else Z.addEventListener("app:opened",U,{once:!0});return()=>{if(Z?.removeEventListener("app:opened",U),K)y$.off("CURRENT_MAIL",G)}}var bH={};r(bH,{default:()=>eK});var E4=0.12,O4=-10,A4=10,P4=100;function eK(Q){let $=C9({easing:E4,element:window}),J=Q.style.transform,H=Q.style.willChange,Z=Q.style.backfaceVisibility,q=Q.style.transformStyle;Q.style.willChange="transform",Q.style.backfaceVisibility="hidden",Q.style.transformStyle="preserve-3d";let K=S$.add(()=>{let G=$.update(),U=G.x+G.dragX,X=(G.y+G.dragY)*O4,j=U*A4,L=`perspective(${P4}px) rotateX(${X.toFixed(3)}deg) rotateY(${j.toFixed(3)}deg)`;Q.style.transform=J?`${J} ${L}`:L});return()=>{K(),$.destroy(),Q.style.transform=J,Q.style.willChange=H,Q.style.backfaceVisibility=Z,Q.style.transformStyle=q}}var TH={};r(TH,{default:()=>$6});function $6(Q,$){y$.on("PAGE",(J)=>{console.log("page changed")})}var yH={};r(yH,{default:()=>Q6});function Q6(Q,$){let J=Array.from(Q.children);n.set(Q,{xPercent:150}),n.set(J,{visibility:"visible"}),setTimeout(()=>{n.to(Q,{xPercent:0,duration:0.6,ease:"expo.out"})},3200);let H=(Z)=>{n.killTweensOf(Z),n.to(Z,{xPercent:120,autoAlpha:0,duration:0.1,ease:"expo.out",onComplete:()=>{Z.remove()}})};Q.addEventListener("click",(Z)=>{let q=Z.target;if(!q)return;let K=q.closest("[data-close]");if(!K||!Q.contains(K))return;let G=K.closest('[data-module="notification"]');if(!(G instanceof HTMLElement))return;H(G)})}var fH={};r(fH,{default:()=>J6});var hH="current";function J6(Q,$){let J=Array.from(Q.children),H=new JQ(Q,{infinite:!0,scrollInput:!0,onSlideChange:(Z,q)=>{J[q]?.classList.remove(hH),J[Z]?.classList.add(hH)}});return Q.__nodedcSlider=H,J[H.currentSlide]?.classList.add(hH),S$.add(()=>{H.update()}),()=>{delete Q.__nodedcSlider,H.destroy()}}var _H={};r(_H,{default:()=>H6});function k4(Q){Q.setAttribute("aria-hidden","true"),Q.style.position="absolute",Q.style.left="-9999px",Q.style.top="-9999px",Q.style.width="1px"}var x4=(Q)=>{let $=Q.textContent;Q.textContent="";let J=document.createElement("span");J.textContent=$,Q.appendChild(J),k4(J);let H=document.createElement("span");return H.setAttribute("data-css","overflow-clip"),H.textContent=$,H.setAttribute("aria-hidden","true"),Q.appendChild(H),new L$(H,{type:"chars"})};function H6(Q){let $=x4(Q);l1(Q,{autoStart:!0,callback:({isIn:J})=>{if(J)n.to($.chars,{yPercent:0,stagger:0.02});else n.killTweensOf($.chars),n.set($.chars,{yPercent:100})}})}var vH={};r(vH,{default:()=>Z6});function Z6(Q,$){}var uH={};r(uH,{default:()=>q6});function w4(Q){return Array.from(Q)}function HQ(Q,$,J){return Math.min(J,Math.max($,Q))}function S4(Q,$,J,H){if($<=1)return H;let Z=Q/($-1),q=Math.abs(Z*2-1),K=q*q;return J+(H-J)*K}function b4(Q,$){let J=(Math.random()*2-1)*$;return Math.max(8,Q+J)}function T4(Q){let $=Math.max(1,Q),J=HQ(10/$,0.75,1.8),H=18*J,Z=56*J,q=HQ(420*J,280,700),G=(H+Z)/2*$,U=HQ(1400+G*1.2,1400,4200),W=HQ(120+$*3,80,260);return{fastStepMs:H,slowStepMs:Z,returnMs:q,loopGapMs:U,loopJitterMs:W}}function q6(Q){let $=Q.innerHTML,J=Q.textContent??"",H=w4(J),Z=H.filter((M)=>M.trim().length>0),q=T4(Z.length||H.length);if(!J.trim())return;let K=document.createElement("span");K.setAttribute("data-text-wave-original","true"),K.classList.add("opacity-0"),K.style.opacity="0",K.style.whiteSpace="pre-wrap",K.textContent=J;let G=document.createElement("span");if(G.setAttribute("data-text-wave-overlay","true"),G.setAttribute("aria-hidden","true"),G.style.position="absolute",G.style.inset="0",G.style.pointerEvents="none",G.style.whiteSpace="pre-wrap",H.forEach((M)=>{let I=document.createElement("span");I.setAttribute("data-text-wave-char","true"),I.style.display="inline-block",I.style.opacity="1",I.style.filter="blur(0px)",I.style.scale="1",I.style.transition=`opacity ${q.returnMs}ms ease-in-out, filter ${q.returnMs}ms ease-in-out, scale ${q.returnMs}ms ease-in-out`,I.textContent=M===" "?" ":M,G.appendChild(I)}),getComputedStyle(Q).position==="static")Q.style.position="relative";Q.innerHTML="",Q.appendChild(K),Q.appendChild(G);let U=Array.from(G.querySelectorAll("[data-text-wave-char]")),W,X=[],j=0,L=()=>{if(W!==void 0)window.clearTimeout(W),W=void 0;X.forEach((M)=>window.clearTimeout(M)),X.length=0},B=()=>{if(!U.length)return;let M=j,I=U[M];I.style.opacity="0.62",I.style.filter="blur(1.3px)",I.style.scale="0.985";let z=window.setTimeout(()=>{I.style.opacity="1",I.style.filter="blur(0px)",I.style.scale="1"},q.returnMs);X.push(z);let R=M>=U.length-1;j=R?0:M+1;let F=R?b4(q.loopGapMs,q.loopJitterMs):S4(M,U.length,q.fastStepMs,q.slowStepMs);W=window.setTimeout(B,F)};return B(),()=>{L(),Q.innerHTML=$}}var mH={};r(mH,{default:()=>G6});var y4=new Intl.DateTimeFormat("ru-RU",{hour:"2-digit",minute:"2-digit",hour12:!1});function K6(Q){Q.textContent=y4.format(new Date)}function G6(Q,$){K6(Q);let J=setInterval(()=>K6(Q),60000);return()=>clearInterval(J)}var dH={};r(dH,{default:()=>U6});function U6(Q,$){let J=$.locale||"ru-RU",H=new Intl.DateTimeFormat(J,{weekday:"short",day:"numeric",month:"short"});Q.textContent=H.format(new Date)}var cH={};r(cH,{default:()=>W6});var h4=500,f4=300,ZQ=new Set,a$=null,gH=!1;function _4(Q){if(Q instanceof HTMLVideoElement)return Q;return Q.querySelector("video")}function v4(Q){if(a$!==null)return;let $=()=>{let H=Array.from(ZQ).filter((Z)=>!Z.preloaded).sort((Z,q)=>Z.video.getBoundingClientRect().top+window.scrollY-(q.video.getBoundingClientRect().top+window.scrollY))[0];if(!H){if(a$!==null)window.clearInterval(a$),a$=null;return}H.preload()};a$=window.setInterval($,Q),$()}function u4(Q){if(gH)return;gH=!0;let $=()=>window.setTimeout(()=>v4(Q),f4);if(document.readyState==="complete")$();else window.addEventListener("load",$,{once:!0})}function W6(Q,$){let J=_4(Q);if(!J){console.warn('"video-handle" found no