diff --git a/assets/css/main.css b/assets/css/main.css
new file mode 100644
index 0000000..5c4db71
--- /dev/null
+++ b/assets/css/main.css
@@ -0,0 +1,2729 @@
+/* Nunito Sans is connected in index.html via Google Fonts. */
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+ display: block;
+}
+
+body {
+ line-height: 1;
+}
+
+ol,
+ul {
+ list-style: none;
+}
+
+blockquote,
+q {
+ quotes: none;
+}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+ content: "";
+ content: none;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
+body {
+ min-width: 320px;
+ margin: 0;
+ font-family: "Nunito Sans", "Segoe UI", Arial, sans-serif;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.4;
+ color: #111111;
+ background: #ffffff;
+ text-rendering: geometricPrecision;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+button,
+a {
+ -webkit-tap-highlight-color: transparent;
+}
+
+img,
+svg {
+ display: block;
+ max-width: 100%;
+}
+
+.container {
+ width: min(1200px, 100% - 32px);
+ margin-inline: auto;
+}
+
+.btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 46px;
+ padding: 0 26px;
+ border: 1px solid transparent;
+ border-radius: 999px;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 1;
+ white-space: nowrap;
+ transition: transform 0.2s ease, border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease;
+}
+@media (hover: hover) and (pointer: fine) {
+ .btn:hover {
+ transform: translateY(-2px);
+ }
+}
+.btn--dark {
+ min-width: 172px;
+ gap: 12px;
+ color: #ffffff;
+ background: #111111;
+ box-shadow: 0 18px 38px rgba(17, 17, 17, 0.12);
+}
+.btn--light {
+ min-width: 150px;
+ color: #202023;
+ background: rgba(255, 255, 255, 0.78);
+ border-color: rgba(17, 17, 17, 0.14);
+}
+
+.site-header {
+ position: fixed;
+ top: 14px;
+ left: 50%;
+ z-index: 20;
+ width: min(505px, 100% - 32px);
+ transform: translateX(-50%);
+}
+.site-header__inner {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ min-height: 50px;
+ padding: 0 20px;
+ border: 1px solid rgba(17, 17, 17, 0.06);
+ border-radius: 999px;
+ background: rgba(248, 248, 248, 0.86);
+ backdrop-filter: blur(16px);
+}
+.site-header__logo {
+ flex: 0 0 auto;
+}
+.site-header__logo img {
+ width: 100px;
+ height: auto;
+}
+.site-header__nav {
+ display: flex;
+ align-items: center;
+ gap: 22px;
+ color: #6f6f73;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1;
+}
+.site-header__nav a {
+ transition: color 0.2s ease;
+}
+@media (hover: hover) and (pointer: fine) {
+ .site-header__nav a:hover {
+ color: #111111;
+ }
+}
+
+@media (max-width: 520px) {
+ .site-header {
+ top: 10px;
+ width: calc(100% - 20px);
+ }
+ .site-header__inner {
+ min-height: 46px;
+ padding: 0 16px;
+ }
+ .site-header__logo img {
+ width: 92px;
+ }
+ .site-header__nav {
+ gap: 12px;
+ font-size: 11px;
+ }
+}
+.page--landing {
+ min-height: 100vh;
+ overflow: hidden;
+ background: #fff;
+}
+
+.hero {
+ position: relative;
+ height: 100vh;
+ max-height: 900px;
+ overflow: hidden;
+ border-bottom: 1px solid rgba(17, 17, 17, 0.05);
+}
+.hero::after {
+ content: "";
+ position: absolute;
+ right: -155px;
+ bottom: 36px;
+ width: 560px;
+ height: 260px;
+ border-radius: 50%;
+ background: rgba(17, 17, 17, 0.05);
+ filter: blur(56px);
+ pointer-events: none;
+}
+.hero::before {
+ content: "";
+ position: absolute;
+ left: -155px;
+ top: -156px;
+ width: 560px;
+ height: 260px;
+ border-radius: 50%;
+ background: rgba(199, 255, 79, 0.1);
+ filter: blur(56px);
+ pointer-events: none;
+}
+.hero__container {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.hero__content {
+ position: relative;
+ z-index: 2;
+ width: min(850px, 100%);
+ margin-inline: auto;
+ text-align: center;
+}
+.hero__badge {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ min-height: 34px;
+ padding: 0 20px;
+ border: 1px solid rgba(17, 17, 17, 0.13);
+ border-radius: 999px;
+ color: #111111;
+ background: rgba(255, 255, 255, 0.82);
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1;
+}
+.hero__badge span {
+ position: relative;
+ width: 10px;
+ height: 10px;
+ flex: 0 0 auto;
+ color: #333333;
+}
+.hero__title {
+ margin-top: 36px;
+ color: #333333;
+ font-size: 82px;
+ font-weight: 700;
+ line-height: 0.95;
+ letter-spacing: -0.058em;
+}
+.hero__title span {
+ color: #c9c9cc;
+}
+.hero__text {
+ margin: 36px auto 0;
+ color: #888888;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.24;
+ letter-spacing: 0.002em;
+}
+.hero__actions {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 16px;
+ margin-top: 36px;
+}
+.hero__actions .btn {
+ font-size: 16px;
+}
+.hero__tags {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ gap: 15px 34px;
+ margin-top: 36px;
+ color: #888888;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.hero__tags li {
+ position: relative;
+ padding-left: 15px;
+}
+.hero__tags li::before {
+ content: "";
+ position: absolute;
+ top: 50%;
+ left: 0;
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: #C7FF4F;
+ transform: translateY(-50%);
+}
+
+.hero-card {
+ position: absolute;
+ z-index: 3;
+ border: 1px solid rgba(15, 15, 16, 0.12);
+ border-radius: 11px;
+ backdrop-filter: blur(12px);
+}
+.hero-card--conversion {
+ bottom: calc(50% - 190px);
+ left: calc(50% - 462px);
+ display: flex;
+ align-items: center;
+ gap: 14px;
+ width: 146px;
+ min-height: 84px;
+ padding: 17px 18px;
+ background: rgba(255, 255, 255, 0.84);
+ box-shadow: 0 17px 26px rgba(17, 17, 17, 0.18);
+}
+.hero-card--conversion .hero-card__icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 38px;
+ height: 38px;
+ flex: 0 0 38px;
+ border-radius: 50%;
+ background: #C7FF4F;
+}
+.hero-card--conversion .hero-card__icon img {
+ width: 20px;
+ height: 20px;
+}
+.hero-card--conversion span {
+ display: block;
+ margin-bottom: 1px;
+ color: #888888;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.2;
+}
+.hero-card--conversion strong {
+ display: block;
+ color: #141416;
+ font-size: 24px;
+ font-weight: 700;
+ line-height: 1;
+ letter-spacing: -0.04em;
+}
+.hero-card--launch {
+ left: calc(50% + 380px);
+ width: fit-content;
+ min-height: 70px;
+ padding: 14px 20px;
+ color: #ffffff;
+ background: #0b0b0c;
+ border-color: rgba(255, 255, 255, 0.04);
+ box-shadow: 0 20px 35px rgba(17, 17, 17, 0.25);
+}
+.hero-card--launch span,
+.hero-card--launch strong {
+ display: block;
+}
+.hero-card--launch span {
+ font-size: 18px;
+ font-weight: 600;
+ line-height: 1.05;
+}
+.hero-card--launch strong {
+ margin-top: 5px;
+ color: #C7FF4F;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1;
+}
+
+@media (max-width: 1120px) {
+ .hero {
+ max-height: 860px;
+ }
+ .hero__title {
+ font-size: clamp(62px, 7.2vw, 78px);
+ }
+ .hero__text {
+ max-width: 620px;
+ }
+ .hero-card--conversion {
+ left: max(24px, 50% - 410px);
+ bottom: calc(50% - 176px);
+ }
+ .hero-card--launch {
+ left: auto;
+ right: max(24px, 50% - 500px);
+ }
+}
+@media (max-width: 760px) {
+ .hero {
+ height: auto;
+ min-height: 100svh;
+ max-height: none;
+ padding: 104px 0 56px;
+ }
+ .hero::before {
+ left: -250px;
+ top: -110px;
+ width: 440px;
+ height: 250px;
+ filter: blur(48px);
+ }
+ .hero::after {
+ right: -250px;
+ bottom: -24px;
+ width: 460px;
+ height: 260px;
+ filter: blur(50px);
+ }
+ .hero__container {
+ height: auto;
+ min-height: calc(100svh - 160px);
+ flex-direction: column;
+ justify-content: center;
+ }
+ .hero__content {
+ width: min(620px, 100%);
+ }
+ .hero__badge {
+ min-height: 32px;
+ padding: 0 16px;
+ font-size: 13px;
+ }
+ .hero__title {
+ margin-top: 26px;
+ font-size: clamp(46px, 10.2vw, 64px);
+ line-height: 0.98;
+ letter-spacing: -0.055em;
+ text-wrap: balance;
+ }
+ .hero__text {
+ max-width: 520px;
+ margin-top: 24px;
+ font-size: 15px;
+ line-height: 1.36;
+ }
+ .hero__actions {
+ flex-wrap: wrap;
+ gap: 12px;
+ margin-top: 28px;
+ }
+ .hero__actions .btn {
+ min-width: 160px;
+ min-height: 46px;
+ font-size: 15px;
+ }
+ .hero__tags {
+ gap: 11px 22px;
+ margin-top: 28px;
+ font-size: 13px;
+ }
+ .hero-card {
+ position: relative;
+ inset: auto;
+ }
+ .hero-card--conversion {
+ left: auto;
+ bottom: auto;
+ width: 146px;
+ min-height: 76px;
+ margin-top: 34px;
+ padding: 14px 16px;
+ transform: translateX(-72px);
+ box-shadow: 0 14px 24px rgba(17, 17, 17, 0.14);
+ }
+ .hero-card--conversion .hero-card__icon {
+ width: 34px;
+ height: 34px;
+ flex-basis: 34px;
+ }
+ .hero-card--conversion .hero-card__icon img {
+ width: 18px;
+ height: 18px;
+ }
+ .hero-card--conversion span {
+ font-size: 13px;
+ }
+ .hero-card--conversion strong {
+ font-size: 22px;
+ }
+ .hero-card--launch {
+ left: auto;
+ right: auto;
+ min-height: 64px;
+ margin-top: -18px;
+ padding: 12px 18px;
+ transform: translateX(76px);
+ box-shadow: 0 16px 28px rgba(17, 17, 17, 0.2);
+ }
+ .hero-card--launch span {
+ font-size: 16px;
+ }
+ .hero-card--launch strong {
+ font-size: 15px;
+ }
+}
+@media (max-width: 520px) {
+ .hero {
+ min-height: 100svh;
+ padding: 92px 0 44px;
+ }
+ .hero__container {
+ width: calc(100% - 24px);
+ min-height: calc(100svh - 136px);
+ }
+ .hero__badge {
+ min-height: 30px;
+ padding: 0 14px;
+ font-size: 12px;
+ }
+ .hero__title {
+ margin-top: 22px;
+ font-size: clamp(37px, 11.5vw, 50px);
+ line-height: 1;
+ letter-spacing: -0.05em;
+ }
+ .hero__text {
+ margin-top: 20px;
+ font-size: 14px;
+ line-height: 1.42;
+ }
+ .hero__actions {
+ width: min(100%, 330px);
+ margin: 26px auto 0;
+ flex-direction: column;
+ gap: 10px;
+ }
+ .hero__actions .btn {
+ width: 100%;
+ min-width: 0;
+ min-height: 48px;
+ }
+ .hero__tags {
+ width: min(100%, 330px);
+ margin: 24px auto 0;
+ justify-content: flex-start;
+ gap: 10px 18px;
+ font-size: 12px;
+ }
+ .hero__tags li {
+ padding-left: 13px;
+ }
+ .hero-card--conversion {
+ margin-top: 28px;
+ transform: translateX(-48px);
+ }
+ .hero-card--launch {
+ transform: translateX(48px);
+ }
+}
+@media (max-width: 420px) {
+ .hero {
+ padding: 86px 0 38px;
+ }
+ .hero__container {
+ width: calc(100% - 22px);
+ min-height: calc(100svh - 124px);
+ }
+ .hero__title {
+ font-size: clamp(34px, 9.6vw, 38px);
+ letter-spacing: -0.044em;
+ }
+ .hero__tags {
+ justify-content: center;
+ }
+ .hero-card--conversion, .hero-card--launch {
+ transform: none;
+ }
+ .hero-card--conversion {
+ margin-top: 24px;
+ }
+ .hero-card--launch {
+ margin-top: 10px;
+ }
+}
+.results {
+ position: relative;
+ min-height: 100vh;
+ overflow: hidden;
+}
+.results__container {
+ position: relative;
+ height: 100vh;
+ min-height: 680px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.results__content {
+ position: relative;
+ z-index: 2;
+ width: min(1120px, 100%);
+ text-align: center;
+}
+.results__label {
+ margin-bottom: 14px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 700;
+ line-height: 1.1;
+}
+.results__slider {
+ width: min(1120px, 100%);
+ margin-inline: auto;
+ position: relative;
+ height: 190px;
+ overflow: visible;
+}
+.results__track {
+ position: relative;
+ height: 100%;
+}
+.results__slide {
+ position: absolute;
+ inset: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 100%;
+ visibility: hidden;
+ pointer-events: none;
+ transition: opacity 0.35s ease;
+}
+.results__slide.is-active {
+ opacity: 1;
+ visibility: visible;
+ pointer-events: auto;
+}
+.results__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(40px, 4.6vw, 72px);
+ font-weight: 700;
+ line-height: 1.03;
+ letter-spacing: -0.02em;
+ transform: translateY(26px);
+ transition: opacity 0.45s ease, transform 0.55s ease;
+}
+.results__slide.is-active .results__title {
+ opacity: 1;
+ transform: translateY(0);
+}
+.results__dots {
+ margin-top: 28px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 10px;
+}
+.results__dots span {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: rgba(17, 17, 17, 0.22);
+ transition: width 0.3s ease, background-color 0.3s ease;
+}
+.results__dots span.is-active {
+ width: 24px;
+ border-radius: 999px;
+ background: #333333;
+}
+.results__icons {
+ position: absolute;
+ inset: 0;
+ pointer-events: none;
+ height: 200%;
+ transform: translateY(-23%);
+}
+.results__icon {
+ position: absolute;
+ width: 45px;
+ height: 45px;
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--icon-bg, #ffffff);
+ box-shadow: 0 10px 20px rgba(17, 17, 17, 0.07);
+ opacity: 1;
+ transform: scale(1) translateY(16px);
+ transition: transform 0.55s cubic-bezier(0.21, 1, 0.31, 1), opacity 0.45s ease;
+}
+.results__icon.is-visible {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+}
+.results__icon img {
+ width: 32px;
+ height: 32px;
+ object-fit: contain;
+}
+.results__icon--yandex {
+ top: 16px;
+ left: 92px;
+}
+.results__icon--wordpress {
+ top: 84px;
+ left: 238px;
+}
+.results__icon--shopify {
+ top: 36px;
+ left: 540px;
+}
+.results__icon--aistudio {
+ top: 22px;
+ right: 240px;
+}
+.results__icon--bitrix {
+ top: 78px;
+ right: 86px;
+}
+.results__icon--cloudflare {
+ top: 154px;
+ right: 168px;
+}
+.results__icon--google {
+ right: 94px;
+ bottom: 128px;
+}
+.results__icon--openai {
+ right: 298px;
+ bottom: 34px;
+}
+.results__icon--tilda {
+ bottom: 58px;
+ left: 156px;
+}
+.results__icon--n8n {
+ bottom: 96px;
+ left: 388px;
+}
+.results__icon--vk {
+ left: 0;
+ top: 196px;
+}
+.results.is-static .results__slider {
+ height: auto;
+}
+.results.is-static .results__track {
+ display: grid;
+ gap: 12px;
+ height: auto;
+}
+.results.is-static .results__slide {
+ position: relative;
+ inset: auto;
+ min-height: 0;
+ opacity: 1;
+ visibility: visible;
+ pointer-events: auto;
+}
+.results.is-static .results__title {
+ opacity: 1;
+ transform: none;
+}
+.results.is-static .results__icon {
+ opacity: 1;
+ transform: none;
+}
+.results.is-animation-ready .results__label {
+ opacity: 0;
+ transform: translateY(14px);
+ will-change: opacity, transform;
+}
+.results.is-animation-ready .results__title {
+ opacity: 0;
+ transform: translateY(46px);
+ will-change: opacity, transform;
+}
+.results.is-animation-ready .results__icon {
+ opacity: 0;
+ transform: scale(0.86) translateY(36px) rotate(-4deg);
+ will-change: opacity, transform;
+}
+.results.is-animation-ready.is-in-view .results__label {
+ animation: resultsFadeUp 0.65s cubic-bezier(0.21, 1, 0.31, 1) 0.1s forwards;
+}
+.results.is-animation-ready.is-in-view .results__title {
+ animation: resultsTitleIn 0.8s cubic-bezier(0.21, 1, 0.31, 1) 0.22s forwards;
+}
+.results.is-animation-ready.is-in-view .results__icon {
+ animation: resultsIconIn 0.72s cubic-bezier(0.21, 1, 0.31, 1) var(--results-icon-delay, 0s) forwards, resultsIconFloat 5.8s ease-in-out calc(var(--results-icon-delay, 0s) + 0.78s) infinite;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(1) {
+ --results-icon-delay: 0.04s;
+ --results-float-offset: -8px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(2) {
+ --results-icon-delay: 0.1s;
+ --results-float-offset: 7px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(3) {
+ --results-icon-delay: 0.16s;
+ --results-float-offset: -6px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(4) {
+ --results-icon-delay: 0.22s;
+ --results-float-offset: 8px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(5) {
+ --results-icon-delay: 0.28s;
+ --results-float-offset: -7px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(6) {
+ --results-icon-delay: 0.34s;
+ --results-float-offset: 6px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(7) {
+ --results-icon-delay: 0.4s;
+ --results-float-offset: -9px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(8) {
+ --results-icon-delay: 0.46s;
+ --results-float-offset: 7px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(9) {
+ --results-icon-delay: 0.52s;
+ --results-float-offset: -6px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(10) {
+ --results-icon-delay: 0.58s;
+ --results-float-offset: 8px;
+}
+.results.is-animation-ready.is-in-view .results__icon:nth-child(11) {
+ --results-icon-delay: 0.64s;
+ --results-float-offset: -7px;
+}
+
+@keyframes resultsFadeUp {
+ from {
+ opacity: 0;
+ transform: translateY(14px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+@keyframes resultsTitleIn {
+ from {
+ opacity: 0;
+ transform: translateY(46px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(26px);
+ }
+}
+@keyframes resultsIconIn {
+ from {
+ opacity: 0;
+ transform: scale(0.86) translateY(36px) rotate(-4deg);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1) translateY(16px) rotate(0deg);
+ }
+}
+@keyframes resultsIconFloat {
+ 0%, 100% {
+ opacity: 1;
+ transform: scale(1) translateY(16px) rotate(0deg);
+ }
+ 50% {
+ opacity: 1;
+ transform: scale(1) translateY(calc(16px + var(--results-float-offset, -8px))) rotate(1.2deg);
+ }
+}
+@keyframes resultsIconInMobile {
+ from {
+ opacity: 0;
+ transform: scale(0.9) translateY(18px) rotate(-3deg);
+ }
+ to {
+ opacity: 1;
+ transform: none;
+ }
+}
+@media (max-width: 1120px) {
+ .results__container {
+ min-height: 620px;
+ }
+ .results__title {
+ font-size: clamp(34px, 5.1vw, 56px);
+ }
+ .results__icon--yandex {
+ left: 34px;
+ }
+ .results__icon--wordpress {
+ left: 150px;
+ }
+ .results__icon--shopify {
+ left: 410px;
+ }
+ .results__icon--aistudio {
+ right: 182px;
+ }
+ .results__icon--bitrix {
+ right: 40px;
+ }
+ .results__icon--cloudflare {
+ right: 124px;
+ }
+ .results__icon--google {
+ right: 52px;
+ }
+ .results__icon--openai {
+ right: 222px;
+ }
+ .results__icon--tilda {
+ left: 90px;
+ }
+ .results__icon--n8n {
+ left: 292px;
+ }
+}
+@media (max-width: 760px) {
+ .results {
+ min-height: unset;
+ padding: 74px 0 92px;
+ }
+ .results__container {
+ height: auto;
+ min-height: unset;
+ display: block;
+ }
+ .results__content {
+ max-width: 620px;
+ margin-inline: auto;
+ }
+ .results__label {
+ margin-bottom: 12px;
+ font-size: clamp(20px, 4.2vw, 28px);
+ }
+ .results__slide {
+ min-height: 132px;
+ }
+ .results__title {
+ font-size: clamp(30px, 8.7vw, 44px);
+ line-height: 1.05;
+ }
+ .results__dots {
+ margin-top: 16px;
+ }
+ .results__icons {
+ position: static;
+ margin: 0 auto 36px;
+ width: min(420px, 100%);
+ display: grid;
+ grid-template-columns: repeat(4, 45px);
+ justify-content: center;
+ gap: 14px;
+ }
+ .results__icon {
+ position: relative;
+ top: auto;
+ right: auto;
+ bottom: auto;
+ left: auto;
+ opacity: 1;
+ transform: none;
+ }
+ .results.is-animation-ready.is-in-view .results__icon {
+ animation: resultsIconInMobile 0.62s cubic-bezier(0.21, 1, 0.31, 1) var(--results-icon-delay, 0s) forwards;
+ }
+}
+@media (max-width: 420px) {
+ .results {
+ padding: 62px 0 78px;
+ }
+ .results__icons {
+ width: min(320px, 100%);
+ grid-template-columns: repeat(3, 45px);
+ gap: 12px;
+ margin-bottom: 28px;
+ }
+ .results__slide {
+ min-height: 120px;
+ }
+ .results__title {
+ font-size: clamp(28px, 9vw, 38px);
+ letter-spacing: -0.01em;
+ }
+}
+@media (prefers-reduced-motion: reduce) {
+ .results.is-animation-ready .results__label {
+ opacity: 1;
+ transform: none;
+ animation: none !important;
+ will-change: auto;
+ }
+ .results.is-animation-ready .results__title {
+ opacity: 1;
+ transform: translateY(26px);
+ animation: none !important;
+ will-change: auto;
+ }
+ .results.is-animation-ready .results__icon {
+ opacity: 1;
+ transform: scale(1) translateY(16px);
+ animation: none !important;
+ will-change: auto;
+ }
+}
+@media (max-width: 760px) and (prefers-reduced-motion: reduce) {
+ .results.is-animation-ready .results__icon {
+ transform: none;
+ }
+}
+.expertise {
+ position: relative;
+ padding: 44px 0 40px;
+ overflow: hidden;
+ background: #ffffff;
+}
+.expertise__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+}
+.expertise__header {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 448px;
+ gap: 80px;
+ align-items: start;
+}
+.expertise__label {
+ margin: 0 0 2px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.expertise__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.expertise__title span {
+ color: #C2C2C2;
+}
+.expertise__text {
+ max-width: 448px;
+ margin: 22px 0 0;
+ color: #111111;
+ font-size: 18px;
+ font-weight: 400;
+ line-height: 1.55;
+ letter-spacing: 0.005em;
+}
+.expertise__tabs {
+ width: fit-content;
+ min-height: 39px;
+ display: flex;
+ align-items: center;
+ gap: 2px;
+ margin: 36px auto 0;
+ padding: 2px;
+ border-radius: 999px;
+ background: #f2f2f2;
+ box-shadow: inset 0 0 0 1px rgba(17, 17, 17, 0.02);
+}
+.expertise__tab {
+ min-height: 35px;
+ padding: 0 17px;
+ border: 0;
+ border-radius: 999px;
+ color: #a6a6a8;
+ background: transparent;
+ font: inherit;
+ font-size: 13px;
+ font-weight: 600;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: pointer;
+ transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
+}
+.expertise__tab.is-active {
+ color: #111111;
+ background: #ffffff;
+ box-shadow: 0 2px 7px rgba(17, 17, 17, 0.05);
+}
+@media (hover: hover) and (pointer: fine) {
+ .expertise__tab:hover {
+ color: #111111;
+ }
+}
+.expertise__cases {
+ position: relative;
+ width: 100vw;
+ margin-top: 50px;
+ margin-inline: calc(50% - 50vw);
+ overflow: visible;
+}
+.expertise__track {
+ display: flex;
+ align-items: stretch;
+}
+
+.expertise-card {
+ width: 300px;
+ min-height: 430px;
+ height: auto;
+ flex: 0 0 300px;
+ overflow: hidden;
+ border: 1px solid rgba(17, 17, 17, 0.16);
+ border-radius: 12px;
+ background: #ffffff;
+}
+.expertise-card__media {
+ height: 279px;
+ overflow: hidden;
+ background: #f2f2f2;
+}
+.expertise-card__media img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+.expertise-card__body {
+ padding: 13px 10px 7px;
+}
+.expertise-card__title {
+ margin: 0;
+ color: #111111;
+ font-size: 24px;
+ font-weight: 800;
+ line-height: 1.15;
+ letter-spacing: -0.03em;
+ text-align: center;
+}
+.expertise-card__list {
+ display: grid;
+ gap: 7px;
+ margin: 11px 0 0;
+ padding: 0 0 0 2px;
+ color: #6f6f73;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1.2;
+ list-style: none;
+}
+.expertise-card__list li {
+ position: relative;
+ padding-left: 19px;
+}
+.expertise-card__list li::before {
+ content: "";
+ position: absolute;
+ top: 0.5em;
+ left: 0;
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: #C7FF4F;
+ transform: translateY(-50%);
+}
+.expertise-card__tags {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: nowrap;
+ gap: 9px;
+ margin: 16px 0 0;
+ padding: 0;
+ list-style: none;
+}
+.expertise-card__tags li {
+ min-height: 27px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0 11px;
+ border: 1px solid rgba(17, 17, 17, 0.16);
+ border-radius: 999px;
+ color: #111111;
+ background: rgba(242, 242, 242, 0.55);
+ font-size: 12px;
+ font-weight: 500;
+ line-height: 1;
+ white-space: nowrap;
+}
+
+@media (max-width: 1120px) {
+ .expertise__header {
+ grid-template-columns: minmax(0, 1fr) 390px;
+ gap: 48px;
+ }
+ .expertise__track {
+ align-items: stretch;
+ }
+}
+@media (max-width: 760px) {
+ .expertise {
+ padding: 70px 0 72px;
+ }
+ .expertise__container {
+ width: min(100% - 32px, 620px);
+ }
+ .expertise__header {
+ display: block;
+ }
+ .expertise__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .expertise__text {
+ max-width: 100%;
+ margin-top: 20px;
+ font-size: 16px;
+ line-height: 1.45;
+ }
+ .expertise__tabs {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 28px;
+ overflow-x: auto;
+ scrollbar-width: none;
+ }
+ .expertise__tabs::-webkit-scrollbar {
+ display: none;
+ }
+ .expertise__tab {
+ padding-inline: 15px;
+ }
+ .expertise__cases {
+ margin-top: 32px;
+ overflow: visible;
+ }
+ .expertise__track {
+ align-items: stretch;
+ }
+ .expertise-card {
+ width: 286px;
+ flex-basis: 286px;
+ }
+ .expertise-card__media {
+ height: 266px;
+ }
+ .expertise-card__title {
+ font-size: 23px;
+ }
+ .expertise-card__list {
+ font-size: 13px;
+ }
+ .expertise-card__tags {
+ gap: 6px;
+ }
+ .expertise-card__tags li {
+ padding-inline: 9px;
+ }
+}
+@media (max-width: 420px) {
+ .expertise {
+ padding: 60px 0 64px;
+ }
+ .expertise__container {
+ width: calc(100% - 24px);
+ }
+ .expertise__label {
+ font-size: 15px;
+ }
+ .expertise__tabs {
+ min-height: 37px;
+ }
+ .expertise__tab {
+ min-height: 33px;
+ padding-inline: 13px;
+ font-size: 12px;
+ }
+ .expertise__track {
+ align-items: stretch;
+ }
+ .expertise-card {
+ width: 272px;
+ min-height: 420px;
+ flex-basis: 272px;
+ }
+ .expertise-card__media {
+ height: 254px;
+ }
+ .expertise-card__body {
+ padding-inline: 9px;
+ }
+ .expertise-card__tags {
+ flex-wrap: wrap;
+ }
+}
+.process {
+ position: relative;
+ padding: 44px 0 100px;
+ background: #ffffff;
+}
+.process__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+}
+.process__heading {
+ max-width: 1100px;
+}
+.process__label {
+ margin: 0 0 2px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.process__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.process__title span {
+ color: #C2C2C2;
+}
+.process__grid {
+ width: min(1192px, 100%);
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 24px;
+ margin: 58px auto 0;
+}
+
+.process-card {
+ min-height: 190px;
+ padding: 16px 28px 20px;
+ border: 1px solid rgba(17, 17, 17, 0.16);
+ border-radius: 30px;
+ background: #ffffff;
+}
+.process-card__number {
+ display: block;
+ margin: 0 0 18px;
+ color: #f4f3f0;
+ font-size: 60px;
+ font-weight: 900;
+ line-height: 0.96;
+ letter-spacing: -0.055em;
+}
+.process-card__title {
+ margin: 0;
+ color: #111111;
+ font-size: 20px;
+ font-weight: 800;
+ line-height: 1.2;
+ letter-spacing: -0.02em;
+}
+.process-card__text {
+ max-width: 310px;
+ margin: 12px 0 0;
+ color: #6f6f73;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.75;
+ letter-spacing: -0.01em;
+}
+
+@media (max-width: 1120px) {
+ .process__grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+}
+@media (max-width: 760px) {
+ .process {
+ padding: 70px 0 72px;
+ }
+ .process__container {
+ width: min(100% - 32px, 620px);
+ }
+ .process__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .process__grid {
+ grid-template-columns: 1fr;
+ gap: 16px;
+ margin-top: 32px;
+ }
+ .process-card {
+ min-height: 172px;
+ padding: 16px 24px 20px;
+ border-radius: 24px;
+ }
+ .process-card__number {
+ margin-bottom: 16px;
+ font-size: 54px;
+ }
+ .process-card__text {
+ max-width: 100%;
+ font-size: 14px;
+ line-height: 1.6;
+ }
+}
+@media (max-width: 420px) {
+ .process {
+ padding: 60px 0 64px;
+ }
+ .process__container {
+ width: calc(100% - 24px);
+ }
+ .process__label {
+ font-size: 15px;
+ }
+ .process-card {
+ min-height: 166px;
+ padding: 15px 20px 19px;
+ border-radius: 22px;
+ }
+ .process-card__number {
+ font-size: 50px;
+ }
+ .process-card__title {
+ font-size: 19px;
+ }
+}
+.technologies {
+ position: relative;
+ padding: 44px 0 66px;
+ overflow: hidden;
+ background: #ffffff;
+}
+.technologies__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+}
+.technologies__label {
+ margin: 0 0 2px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.technologies__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.technologies__title span {
+ color: #C2C2C2;
+}
+.technologies__marquee {
+ width: 100vw;
+ display: grid;
+ gap: 32px;
+ margin-top: 60px;
+ margin-inline: calc(50% - 50vw);
+}
+.technologies__row {
+ width: 100%;
+ overflow: hidden;
+}
+.technologies__track {
+ width: max-content;
+ display: flex;
+ align-items: center;
+ will-change: transform;
+}
+.technologies__track--left {
+ animation: technologies-marquee-left 38s linear infinite;
+}
+.technologies__track--right {
+ animation: technologies-marquee-right 42s linear infinite;
+}
+.technologies__row--top .technologies__track {
+ margin-left: -82px;
+}
+.technologies__row--bottom .technologies__track {
+ margin-left: 10px;
+}
+.technologies__group {
+ display: flex;
+ align-items: center;
+ gap: 41px;
+ padding-right: 41px;
+ flex: 0 0 auto;
+}
+@media (prefers-reduced-motion: reduce) {
+ .technologies__track {
+ animation: none;
+ }
+}
+
+.technology-item {
+ display: inline-flex;
+ align-items: center;
+ gap: 11px;
+ flex: 0 0 auto;
+ color: #111111;
+ font-size: 22px;
+ font-weight: 500;
+ line-height: 1;
+ letter-spacing: -0.03em;
+ white-space: nowrap;
+}
+.technology-item__icon {
+ width: 44px;
+ height: 44px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ flex: 0 0 44px;
+ border-radius: 7px;
+ background: #f2f2f2;
+ overflow: hidden;
+}
+.technology-item__icon img {
+ display: block;
+ width: 32px;
+ height: 32px;
+ object-fit: contain;
+}
+.technology-item__icon--wordpress {
+ background: #057da3;
+}
+.technology-item__icon--n8n {
+ background: #e83e73;
+}
+.technology-item__icon--bitrix {
+ background: #42b9ea;
+}
+.technology-item__icon--bitrix img {
+ width: 32px;
+ height: auto;
+}
+.technology-item__icon--react {
+ background: #1f1f1f;
+}
+.technology-item__icon--nuxt, .technology-item__icon--woo, .technology-item__icon--docker, .technology-item__icon--vue {
+ background: #f2f2f2;
+}
+.technology-item__icon--modx {
+ background: #f4f4f4;
+}
+.technology-item__icon--php {
+ background: #535f99;
+}
+.technology-item__icon--git {
+ background: #fb5036;
+}
+.technology-item__icon--mysql {
+ background: #ed8a00;
+}
+.technology-item__icon--tilda {
+ background: #ff5b3a;
+}
+
+@keyframes technologies-marquee-left {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ }
+ 100% {
+ transform: translate3d(-50%, 0, 0);
+ }
+}
+@keyframes technologies-marquee-right {
+ 0% {
+ transform: translate3d(-50%, 0, 0);
+ }
+ 100% {
+ transform: translate3d(0, 0, 0);
+ }
+}
+@media (max-width: 760px) {
+ .technologies {
+ padding: 70px 0 72px;
+ }
+ .technologies__container {
+ width: min(100% - 32px, 620px);
+ }
+ .technologies__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .technologies__marquee {
+ gap: 22px;
+ margin-top: 38px;
+ }
+ .technologies__group {
+ gap: 28px;
+ padding-right: 28px;
+ }
+ .technologies__row--top .technologies__track {
+ margin-left: -54px;
+ }
+ .technologies__row--bottom .technologies__track {
+ margin-left: 12px;
+ }
+ .technology-item {
+ gap: 9px;
+ font-size: 18px;
+ }
+ .technology-item__icon {
+ width: 38px;
+ height: 38px;
+ flex-basis: 38px;
+ border-radius: 7px;
+ }
+ .technology-item__icon img {
+ width: 28px;
+ height: 28px;
+ }
+}
+@media (max-width: 420px) {
+ .technologies {
+ padding: 60px 0 64px;
+ }
+ .technologies__container {
+ width: calc(100% - 24px);
+ }
+ .technologies__label {
+ font-size: 15px;
+ }
+ .technologies__marquee {
+ gap: 18px;
+ margin-top: 34px;
+ }
+ .technologies__group {
+ gap: 22px;
+ padding-right: 22px;
+ }
+ .technology-item {
+ font-size: 16px;
+ }
+ .technology-item__icon {
+ width: 34px;
+ height: 34px;
+ flex-basis: 34px;
+ }
+ .technology-item__icon img {
+ width: 25px;
+ height: 25px;
+ }
+}
+.turnkey {
+ position: relative;
+ padding: 40px 0 20px;
+ background: #ffffff;
+}
+.turnkey__container {
+ width: min(1194px, 100% - 40px);
+ margin-inline: auto;
+}
+.turnkey__card {
+ min-height: 590px;
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 520px;
+ gap: 84px;
+ padding: 48px 48px 50px;
+ border: 1px solid rgba(17, 17, 17, 0.16);
+ border-radius: 30px;
+ background: #ffffff;
+}
+.turnkey__content {
+ max-width: 475px;
+}
+.turnkey__label {
+ margin: 0 0 13px;
+ color: #929292;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 1.2;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+}
+.turnkey__title {
+ margin: 0;
+ color: #111111;
+ font-size: clamp(34px, 2.5vw, 38px);
+ font-weight: 700;
+ line-height: 1.02;
+ letter-spacing: -0.035em;
+}
+.turnkey__text {
+ margin: 27px 0 0;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.45;
+ letter-spacing: -0.01em;
+}
+.turnkey__button {
+ min-width: 244px;
+ min-height: 54px;
+ margin-top: 34px;
+ padding-inline: 30px;
+ font-size: 16px;
+}
+.turnkey__list {
+ align-self: start;
+ display: grid;
+ gap: 14px;
+ margin: 0;
+ padding: 0;
+ color: #111111;
+ font-size: 16px;
+ font-weight: 500;
+ line-height: 1.38;
+ letter-spacing: -0.01em;
+ list-style: none;
+}
+.turnkey__list li {
+ position: relative;
+ min-height: 20px;
+ padding-left: 32px;
+}
+.turnkey__list li::before {
+ content: "";
+ position: absolute;
+ top: 0.64em;
+ left: 0;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: #C7FF4F;
+ transform: translateY(-50%);
+}
+
+@media (max-width: 1120px) {
+ .turnkey__card {
+ grid-template-columns: minmax(0, 1fr) minmax(430px, 0.9fr);
+ gap: 48px;
+ }
+}
+@media (max-width: 760px) {
+ .turnkey {
+ padding: 70px 0 72px;
+ }
+ .turnkey__container {
+ width: min(100% - 32px, 620px);
+ }
+ .turnkey__card {
+ min-height: auto;
+ grid-template-columns: 1fr;
+ gap: 36px;
+ padding: 34px 30px 36px;
+ border-radius: 26px;
+ }
+ .turnkey__content {
+ max-width: 100%;
+ }
+ .turnkey__title {
+ font-size: clamp(32px, 8vw, 42px);
+ }
+ .turnkey__text {
+ margin-top: 20px;
+ font-size: 15px;
+ }
+ .turnkey__button {
+ min-width: 220px;
+ margin-top: 28px;
+ }
+ .turnkey__list {
+ gap: 13px;
+ font-size: 15px;
+ line-height: 1.45;
+ }
+}
+@media (max-width: 420px) {
+ .turnkey {
+ padding: 60px 0 64px;
+ }
+ .turnkey__container {
+ width: calc(100% - 24px);
+ }
+ .turnkey__card {
+ padding: 28px 20px 30px;
+ border-radius: 22px;
+ }
+ .turnkey__label {
+ font-size: 13px;
+ }
+ .turnkey__title {
+ font-size: clamp(29px, 10vw, 36px);
+ }
+ .turnkey__button {
+ width: 100%;
+ min-width: 0;
+ }
+ .turnkey__list li {
+ padding-left: 28px;
+ }
+ .turnkey__list li::before {
+ width: 18px;
+ height: 18px;
+ }
+}
+.clients {
+ position: relative;
+ padding: 44px 0 88px;
+ overflow: hidden;
+ background: #ffffff;
+}
+.clients__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+}
+.clients__label {
+ margin: 0 0 2px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.clients__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.clients__title span {
+ color: #C2C2C2;
+}
+.clients__marquee {
+ width: 100vw;
+ display: grid;
+ gap: 10px;
+ margin-top: 35px;
+ margin-inline: calc(50% - 50vw);
+}
+.clients__row {
+ width: 100%;
+ overflow: hidden;
+}
+.clients__track {
+ width: max-content;
+ display: flex;
+ will-change: transform;
+}
+.clients__track--left {
+ animation: clients-marquee-left 48s linear infinite;
+}
+.clients__track--right {
+ animation: clients-marquee-right 52s linear infinite;
+}
+.clients__row--top .clients__track {
+ margin-left: 8px;
+}
+.clients__row--bottom .clients__track {
+ margin-left: -160px;
+}
+.clients__group {
+ display: flex;
+ gap: 10px;
+ padding-right: 10px;
+}
+
+.review-card {
+ width: 382px;
+ min-height: 206px;
+ flex: 0 0 382px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 19px 20px 20px;
+ border: 1px solid rgba(17, 17, 17, 0.16);
+ border-radius: 30px;
+ background: #ffffff;
+}
+.review-card__text {
+ max-width: 335px;
+ margin: 0;
+ color: #111111;
+ font-size: 16px;
+ font-weight: 500;
+ line-height: 1.53;
+ letter-spacing: -0.01em;
+}
+.review-card__author {
+ display: flex;
+ align-items: center;
+ gap: 13px;
+ margin-top: 24px;
+}
+.review-card__avatar {
+ width: 48px;
+ height: 48px;
+ flex: 0 0 48px;
+ border: 1px solid rgba(17, 17, 17, 0.14);
+ border-radius: 50%;
+ background: #faf9f6;
+}
+.review-card__name {
+ margin: 0;
+ color: #111111;
+ font-size: 18px;
+ font-weight: 600;
+ line-height: 1.15;
+ letter-spacing: -0.02em;
+}
+.review-card__position {
+ margin: 4px 0 0;
+ color: #888888;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.2;
+ letter-spacing: -0.01em;
+}
+
+@keyframes clients-marquee-left {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ }
+ 100% {
+ transform: translate3d(-50%, 0, 0);
+ }
+}
+@keyframes clients-marquee-right {
+ 0% {
+ transform: translate3d(-50%, 0, 0);
+ }
+ 100% {
+ transform: translate3d(0, 0, 0);
+ }
+}
+@media (max-width: 760px) {
+ .clients {
+ padding: 70px 0 72px;
+ }
+ .clients__container {
+ width: min(100% - 32px, 620px);
+ }
+ .clients__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .clients__marquee {
+ gap: 12px;
+ margin-top: 34px;
+ }
+ .clients__group {
+ gap: 12px;
+ padding-right: 12px;
+ }
+ .clients__row--top .clients__track {
+ margin-left: -70px;
+ }
+ .clients__row--bottom .clients__track {
+ margin-left: -190px;
+ }
+ .review-card {
+ width: 340px;
+ min-height: 196px;
+ flex-basis: 340px;
+ padding: 18px 18px 19px;
+ border-radius: 26px;
+ }
+ .review-card__text {
+ font-size: 15px;
+ line-height: 1.48;
+ }
+ .review-card__name {
+ font-size: 17px;
+ }
+ .review-card__position {
+ font-size: 14px;
+ }
+}
+@media (max-width: 420px) {
+ .clients {
+ padding: 60px 0 64px;
+ }
+ .clients__container {
+ width: calc(100% - 24px);
+ }
+ .clients__label {
+ font-size: 15px;
+ }
+ .clients__row--top .clients__track {
+ margin-left: -90px;
+ }
+ .clients__row--bottom .clients__track {
+ margin-left: -220px;
+ }
+ .review-card {
+ width: 300px;
+ min-height: 188px;
+ flex-basis: 300px;
+ padding: 17px 17px 18px;
+ border-radius: 24px;
+ }
+ .review-card__text {
+ font-size: 14px;
+ }
+ .review-card__avatar {
+ width: 44px;
+ height: 44px;
+ flex-basis: 44px;
+ }
+}
+.values {
+ padding: 46px 0 82px;
+ background: #ffffff;
+}
+.values__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+}
+.values__label {
+ margin: 0 0 2px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.values__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.values__title span {
+ color: #C2C2C2;
+}
+.values__grid {
+ width: min(100%, 966px);
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 32px;
+ margin: 58px auto 0;
+}
+
+.value-card {
+ min-width: 0;
+ text-align: center;
+}
+.value-card__media {
+ height: 216px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 8px;
+ background: #f2f2f2;
+}
+.value-card__media img {
+ width: 64px;
+ height: 64px;
+ display: block;
+ opacity: 0.94;
+}
+.value-card__title {
+ margin: 11px 0 0;
+ color: #111111;
+ font-size: 16px;
+ font-weight: 800;
+ line-height: 1.18;
+ letter-spacing: -0.015em;
+}
+.value-card__text {
+ max-width: 276px;
+ margin: 8px auto 0;
+ color: #888888;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1.28;
+ letter-spacing: -0.01em;
+}
+
+@media (max-width: 1120px) {
+ .values__grid {
+ gap: 24px;
+ }
+ .value-card__media {
+ height: 200px;
+ }
+}
+@media (max-width: 760px) {
+ .values {
+ padding: 70px 0 72px;
+ }
+ .values__container {
+ width: min(100% - 32px, 620px);
+ }
+ .values__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .values__grid {
+ grid-template-columns: 1fr;
+ gap: 28px;
+ margin-top: 34px;
+ }
+ .value-card__media {
+ height: 220px;
+ }
+ .value-card__title {
+ margin-top: 12px;
+ font-size: 17px;
+ }
+ .value-card__text {
+ max-width: 330px;
+ font-size: 14px;
+ line-height: 1.35;
+ }
+}
+@media (max-width: 420px) {
+ .values {
+ padding: 60px 0 64px;
+ }
+ .values__container {
+ width: calc(100% - 24px);
+ }
+ .values__label {
+ font-size: 15px;
+ }
+ .values__grid {
+ gap: 24px;
+ }
+ .value-card__media {
+ height: 196px;
+ }
+}
+.faq {
+ padding: 46px 0 83px;
+ background: #ffffff;
+}
+.faq__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+}
+.faq__label {
+ margin: 0 0 2px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.faq__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.faq__title span {
+ color: #C2C2C2;
+}
+.faq__list {
+ width: min(100%, 1256px);
+ margin: 58px auto 0;
+ overflow: hidden;
+ border: 1px solid rgba(17, 17, 17, 0.16);
+ border-radius: 20px;
+ background: #ffffff;
+}
+
+.faq-item + .faq-item {
+ border-top: 1px solid rgba(17, 17, 17, 0.14);
+}
+.faq-item__button {
+ width: 100%;
+ min-height: 69px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ padding: 18px 24px 18px 20px;
+ border: 0;
+ background: transparent;
+ color: #111111;
+ font: inherit;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.35;
+ letter-spacing: -0.01em;
+ text-align: left;
+ cursor: pointer;
+ transition: background 0.2s ease;
+}
+@media (hover: hover) and (pointer: fine) {
+ .faq-item__button:hover {
+ background: rgba(17, 17, 17, 0.025);
+ }
+}
+.faq-item__button[aria-expanded=true] .faq-item__icon {
+ transform: rotate(45deg);
+}
+.faq-item__icon {
+ position: relative;
+ width: 18px;
+ height: 18px;
+ flex: 0 0 18px;
+ transition: transform 0.2s ease;
+}
+.faq-item__icon::before, .faq-item__icon::after {
+ content: "";
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ width: 11px;
+ height: 1px;
+ border-radius: 999px;
+ background: #111111;
+ transform: translate(-50%, -50%);
+}
+.faq-item__icon::after {
+ width: 1px;
+ height: 11px;
+}
+.faq-item__panel {
+ padding: 0 68px 22px 20px;
+ color: #888888;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.48;
+ letter-spacing: -0.01em;
+}
+.faq-item__panel p {
+ max-width: 820px;
+ margin: 0;
+}
+
+@media (max-width: 760px) {
+ .faq {
+ padding: 70px 0 72px;
+ }
+ .faq__container {
+ width: min(100% - 32px, 620px);
+ }
+ .faq__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .faq__list {
+ margin-top: 34px;
+ border-radius: 18px;
+ }
+ .faq-item__button {
+ min-height: 64px;
+ padding: 17px 18px;
+ font-size: 15px;
+ }
+ .faq-item__panel {
+ padding: 0 18px 18px;
+ font-size: 14px;
+ }
+}
+@media (max-width: 420px) {
+ .faq {
+ padding: 60px 0 64px;
+ }
+ .faq__container {
+ width: calc(100% - 24px);
+ }
+ .faq__label {
+ font-size: 15px;
+ }
+ .faq-item__button {
+ gap: 16px;
+ min-height: 60px;
+ padding: 15px 16px;
+ }
+ .faq-item__panel {
+ padding: 0 16px 17px;
+ }
+}
+.contact {
+ padding: 46px 0 88px;
+ background: #ffffff;
+}
+.contact__container {
+ width: min(1420px, 100% - 40px);
+ margin-inline: auto;
+ display: grid;
+ grid-template-columns: minmax(300px, 470px) minmax(620px, 1fr);
+ gap: clamp(48px, 6.5vw, 150px);
+ align-items: start;
+}
+.contact__content {
+ padding-top: 0;
+}
+.contact__label {
+ margin: 0 0 8px;
+ color: #6f6f73;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+.contact__title {
+ margin: 0;
+ color: #333333;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 700;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+}
+.contact__title span {
+ color: #C2C2C2;
+}
+.contact__text {
+ max-width: 440px;
+ margin: 28px 0 0;
+ color: #888888;
+ font-size: 19px;
+ font-weight: 400;
+ line-height: 1.42;
+ letter-spacing: -0.022em;
+}
+
+.contact-sentence {
+ width: 100%;
+ margin: 0;
+}
+.contact-sentence__text {
+ margin: 0;
+ color: #111111;
+ font-size: clamp(32px, 2.33vw, 40px);
+ font-weight: 400;
+ line-height: 1.19;
+ letter-spacing: -0.055em;
+}
+.contact-sentence__actions {
+ display: flex;
+ align-items: center;
+ gap: 18px;
+ margin-top: 28px;
+}
+.contact-sentence__submit {
+ min-width: 184px;
+}
+.contact-sentence__status {
+ min-height: 22px;
+ margin: 0;
+ color: #888888;
+ font-size: 14px;
+ line-height: 1.35;
+ letter-spacing: -0.01em;
+}
+.contact-sentence__status.is-success {
+ color: #333333;
+}
+
+.contact-field {
+ display: inline;
+ position: relative;
+ min-width: 1.5em;
+ padding: 0 0.04em;
+ border: 0;
+ border-bottom: 1px solid currentColor;
+ border-radius: 0;
+ background: transparent;
+ color: #C2C2C2;
+ outline: none;
+ cursor: text;
+ transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
+}
+.contact-field[contenteditable=true], .contact-field:focus-visible {
+ color: #111111;
+ border-color: #111111;
+ background: rgba(17, 17, 17, 0.035);
+}
+.contact-field--selector {
+ cursor: pointer;
+ user-select: none;
+}
+.contact-field.is-filled {
+ color: #111111;
+}
+.contact-field.is-error {
+ color: #d73a31;
+ border-color: #d73a31;
+ background: rgba(215, 58, 49, 0.07);
+}
+
+.contact-dropdown {
+ position: absolute;
+ z-index: 80;
+ min-width: 220px;
+ max-width: min(320px, 100vw - 24px);
+ margin: 0;
+ padding: 8px;
+ list-style: none;
+ border: 1px solid rgba(17, 17, 17, 0.12);
+ border-radius: 16px;
+ background: #ffffff;
+ box-shadow: 0 18px 45px rgba(17, 17, 17, 0.12);
+}
+.contact-dropdown li {
+ padding: 11px 12px;
+ border-radius: 10px;
+ color: #111111;
+ font-size: 15px;
+ font-weight: 500;
+ line-height: 1.2;
+ cursor: pointer;
+ transition: background 0.2s ease;
+}
+@media (hover: hover) and (pointer: fine) {
+ .contact-dropdown li:hover {
+ background: rgba(17, 17, 17, 0.055);
+ }
+}
+
+.contact-date-input {
+ position: fixed;
+ left: -1000px;
+ top: -1000px;
+ width: 24px;
+ height: 24px;
+ opacity: 0;
+ pointer-events: auto;
+}
+
+@media (max-width: 1120px) {
+ .contact__container {
+ grid-template-columns: minmax(280px, 390px) minmax(520px, 1fr);
+ gap: 64px;
+ }
+ .contact-sentence__text {
+ font-size: clamp(30px, 3.1vw, 36px);
+ }
+}
+@media (max-width: 760px) {
+ .contact {
+ padding: 70px 0 72px;
+ }
+ .contact__container {
+ width: min(100% - 32px, 620px);
+ grid-template-columns: 1fr;
+ gap: 34px;
+ }
+ .contact__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+ .contact__text {
+ margin-top: 20px;
+ font-size: 17px;
+ }
+ .contact-sentence__text {
+ font-size: clamp(26px, 7vw, 36px);
+ line-height: 1.22;
+ }
+ .contact-sentence__actions {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 12px;
+ }
+}
+@media (max-width: 420px) {
+ .contact {
+ padding: 60px 0 64px;
+ }
+ .contact__container {
+ width: calc(100% - 24px);
+ }
+ .contact__label {
+ font-size: 15px;
+ }
+ .contact-sentence__text {
+ font-size: 25px;
+ }
+ .contact-dropdown {
+ min-width: 200px;
+ }
+}
+.site-footer {
+ padding: 82px 0 50px;
+ background: #ffffff;
+}
+.site-footer__container {
+ width: min(1192px, 100% - 40px);
+ margin-inline: auto;
+}
+.site-footer__top {
+ display: grid;
+ grid-template-columns: minmax(320px, 1fr) 180px 262px;
+ gap: clamp(70px, 6.8vw, 130px);
+ align-items: start;
+ padding-bottom: 66px;
+ border-bottom: 1px solid rgba(17, 17, 17, 0.16);
+}
+.site-footer__brand {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+}
+.site-footer__logo {
+ display: inline-flex;
+ width: 190px;
+ transition: opacity 0.2s ease;
+}
+.site-footer__logo img {
+ width: 190px;
+ height: auto;
+}
+@media (hover: hover) and (pointer: fine) {
+ .site-footer__logo:hover {
+ opacity: 0.72;
+ }
+}
+.site-footer__description {
+ max-width: 330px;
+ margin: 29px 0 0;
+ color: #888888;
+ font-size: 18px;
+ font-weight: 400;
+ line-height: 1.55;
+ letter-spacing: -0.022em;
+}
+.site-footer__title {
+ margin: 3px 0 22px;
+ color: #111111;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1.2;
+ text-transform: uppercase;
+ letter-spacing: -0.01em;
+}
+.site-footer__list {
+ display: flex;
+ flex-direction: column;
+ gap: 14px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ color: #888888;
+ font-size: 17px;
+ font-weight: 400;
+ line-height: 1.35;
+ letter-spacing: -0.018em;
+}
+.site-footer__list a {
+ transition: color 0.2s ease;
+}
+@media (hover: hover) and (pointer: fine) {
+ .site-footer__list a:hover {
+ color: #111111;
+ }
+}
+.site-footer__bottom {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ padding-top: 33px;
+ color: #888888;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.35;
+ letter-spacing: -0.02em;
+}
+.site-footer__bottom p {
+ margin: 0;
+}
+.site-footer__bottom a {
+ transition: color 0.2s ease;
+}
+@media (hover: hover) and (pointer: fine) {
+ .site-footer__bottom a:hover {
+ color: #111111;
+ }
+}
+
+@media (max-width: 1120px) {
+ .site-footer__top {
+ grid-template-columns: minmax(280px, 1fr) 160px 240px;
+ gap: 54px;
+ }
+}
+@media (max-width: 760px) {
+ .site-footer {
+ padding: 64px 0 40px;
+ }
+ .site-footer__container {
+ width: min(100% - 32px, 620px);
+ }
+ .site-footer__top {
+ grid-template-columns: 1fr 1fr;
+ gap: 40px 32px;
+ padding-bottom: 42px;
+ }
+ .site-footer__brand {
+ grid-column: 1/-1;
+ }
+ .site-footer__description {
+ margin-top: 22px;
+ font-size: 17px;
+ }
+ .site-footer__bottom {
+ align-items: flex-start;
+ flex-direction: column;
+ gap: 12px;
+ padding-top: 26px;
+ }
+}
+@media (max-width: 520px) {
+ .site-footer {
+ padding: 52px 0 34px;
+ }
+ .site-footer__container {
+ width: calc(100% - 24px);
+ }
+ .site-footer__top {
+ grid-template-columns: 1fr;
+ gap: 34px;
+ }
+ .site-footer__logo, .site-footer__logo img {
+ width: 168px;
+ }
+ .site-footer__title {
+ margin-bottom: 16px;
+ }
+ .site-footer__list {
+ gap: 12px;
+ font-size: 16px;
+ }
+ .site-footer__bottom {
+ font-size: 14px;
+ }
+}
diff --git a/assets/css/main.min.css b/assets/css/main.min.css
new file mode 100644
index 0000000..5192112
--- /dev/null
+++ b/assets/css/main.min.css
@@ -0,0 +1 @@
+a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font-size:100%;font:inherit;margin:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#fff;color:#111;font-family:Nunito Sans,Segoe UI,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.4;margin:0;min-width:320px;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}a,button{-webkit-tap-highlight-color:transparent}img,svg{display:block;max-width:100%}.container{margin-inline:auto;width:min(1200px,100% - 32px)}.btn{align-items:center;border:1px solid transparent;border-radius:999px;display:inline-flex;font-size:14px;font-weight:600;justify-content:center;line-height:1;min-height:46px;padding:0 26px;transition:transform .2s ease,border-color .2s ease,background-color .2s ease,color .2s ease;white-space:nowrap}@media (hover:hover) and (pointer:fine){.btn:hover{transform:translateY(-2px)}}.btn--dark{background:#111;box-shadow:0 18px 38px rgba(17,17,17,.12);color:#fff;gap:12px;min-width:172px}.btn--light{background:hsla(0,0%,100%,.78);border-color:rgba(17,17,17,.14);color:#202023;min-width:150px}.site-header{left:50%;position:fixed;top:14px;transform:translateX(-50%);width:min(505px,100% - 32px);z-index:20}.site-header__inner{align-items:center;backdrop-filter:blur(16px);background:hsla(0,0%,97.3%,.86);border:1px solid rgba(17,17,17,.06);border-radius:999px;display:flex;justify-content:space-between;min-height:50px;padding:0 20px}.site-header__logo{flex:0 0 auto}.site-header__logo img{height:auto;width:100px}.site-header__nav{align-items:center;color:#6f6f73;display:flex;font-size:12px;font-weight:400;gap:22px;line-height:1}.site-header__nav a{transition:color .2s ease}@media (hover:hover) and (pointer:fine){.site-header__nav a:hover{color:#111}}@media (max-width:520px){.site-header{top:10px;width:calc(100% - 20px)}.site-header__inner{min-height:46px;padding:0 16px}.site-header__logo img{width:92px}.site-header__nav{font-size:11px;gap:12px}}.page--landing{background:#fff;min-height:100vh;overflow:hidden}.hero{border-bottom:1px solid rgba(17,17,17,.05);height:100vh;max-height:900px;overflow:hidden;position:relative}.hero:after{background:rgba(17,17,17,.05);bottom:36px;right:-155px}.hero:after,.hero:before{border-radius:50%;content:"";filter:blur(56px);height:260px;pointer-events:none;position:absolute;width:560px}.hero:before{background:rgba(199,255,79,.1);left:-155px;top:-156px}.hero__container{align-items:center;display:flex;height:100%;justify-content:center;position:relative;width:100%}.hero__content{margin-inline:auto;position:relative;text-align:center;width:min(850px,100%);z-index:2}.hero__badge{align-items:center;background:hsla(0,0%,100%,.82);border:1px solid rgba(17,17,17,.13);border-radius:999px;color:#111;display:inline-flex;font-size:14px;font-weight:500;gap:8px;justify-content:center;line-height:1;min-height:34px;padding:0 20px}.hero__badge span{color:#333;flex:0 0 auto;height:10px;position:relative;width:10px}.hero__title{color:#333;font-size:82px;font-weight:700;letter-spacing:-.058em;line-height:.95;margin-top:36px}.hero__title span{color:#c9c9cc}.hero__text{color:#888;font-size:16px;font-weight:400;letter-spacing:.002em;line-height:1.24;margin:36px auto 0}.hero__actions{align-items:center;display:flex;gap:16px;justify-content:center;margin-top:36px}.hero__actions .btn{font-size:16px}.hero__tags{align-items:center;color:#888;display:flex;flex-wrap:wrap;font-size:14px;font-weight:600;gap:15px 34px;justify-content:center;line-height:1.2;margin-top:36px}.hero__tags li{padding-left:15px;position:relative}.hero__tags li:before{background:#c7ff4f;border-radius:50%;content:"";height:6px;left:0;position:absolute;top:50%;transform:translateY(-50%);width:6px}.hero-card{backdrop-filter:blur(12px);border:1px solid rgba(15,15,16,.12);border-radius:11px;position:absolute;z-index:3}.hero-card--conversion{align-items:center;background:hsla(0,0%,100%,.84);bottom:calc(50% - 190px);box-shadow:0 17px 26px rgba(17,17,17,.18);display:flex;gap:14px;left:calc(50% - 462px);min-height:84px;padding:17px 18px;width:146px}.hero-card--conversion .hero-card__icon{align-items:center;background:#c7ff4f;border-radius:50%;display:flex;flex:0 0 38px;height:38px;justify-content:center;width:38px}.hero-card--conversion .hero-card__icon img{height:20px;width:20px}.hero-card--conversion span{color:#888;display:block;font-size:14px;font-weight:400;line-height:1.2;margin-bottom:1px}.hero-card--conversion strong{color:#141416;display:block;font-size:24px;font-weight:700;letter-spacing:-.04em;line-height:1}.hero-card--launch{background:#0b0b0c;border-color:hsla(0,0%,100%,.04);box-shadow:0 20px 35px rgba(17,17,17,.25);color:#fff;left:calc(50% + 380px);min-height:70px;padding:14px 20px;width:-moz-fit-content;width:fit-content}.hero-card--launch span,.hero-card--launch strong{display:block}.hero-card--launch span{font-size:18px;font-weight:600;line-height:1.05}.hero-card--launch strong{color:#c7ff4f;font-size:16px;font-weight:400;line-height:1;margin-top:5px}@media (max-width:1120px){.hero{max-height:860px}.hero__title{font-size:clamp(62px,7.2vw,78px)}.hero__text{max-width:620px}.hero-card--conversion{bottom:calc(50% - 176px);left:max(24px,50% - 410px)}.hero-card--launch{left:auto;right:max(24px,50% - 500px)}}@media (max-width:760px){.hero{height:auto;max-height:none;min-height:100svh;padding:104px 0 56px}.hero:before{filter:blur(48px);height:250px;left:-250px;top:-110px;width:440px}.hero:after{bottom:-24px;filter:blur(50px);height:260px;right:-250px;width:460px}.hero__container{flex-direction:column;height:auto;justify-content:center;min-height:calc(100svh - 160px)}.hero__content{width:min(620px,100%)}.hero__badge{font-size:13px;min-height:32px;padding:0 16px}.hero__title{font-size:clamp(46px,10.2vw,64px);letter-spacing:-.055em;line-height:.98;margin-top:26px;text-wrap:balance}.hero__text{font-size:15px;line-height:1.36;margin-top:24px;max-width:520px}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:28px}.hero__actions .btn{font-size:15px;min-height:46px;min-width:160px}.hero__tags{font-size:13px;gap:11px 22px;margin-top:28px}.hero-card{inset:auto;position:relative}.hero-card--conversion{bottom:auto;box-shadow:0 14px 24px rgba(17,17,17,.14);left:auto;margin-top:34px;min-height:76px;padding:14px 16px;transform:translateX(-72px);width:146px}.hero-card--conversion .hero-card__icon{flex-basis:34px;height:34px;width:34px}.hero-card--conversion .hero-card__icon img{height:18px;width:18px}.hero-card--conversion span{font-size:13px}.hero-card--conversion strong{font-size:22px}.hero-card--launch{box-shadow:0 16px 28px rgba(17,17,17,.2);left:auto;margin-top:-18px;min-height:64px;padding:12px 18px;right:auto;transform:translateX(76px)}.hero-card--launch span{font-size:16px}.hero-card--launch strong{font-size:15px}}@media (max-width:520px){.hero{min-height:100svh;padding:92px 0 44px}.hero__container{min-height:calc(100svh - 136px);width:calc(100% - 24px)}.hero__badge{font-size:12px;min-height:30px;padding:0 14px}.hero__title{font-size:clamp(37px,11.5vw,50px);letter-spacing:-.05em;line-height:1;margin-top:22px}.hero__text{font-size:14px;line-height:1.42;margin-top:20px}.hero__actions{flex-direction:column;gap:10px;margin:26px auto 0;width:min(100%,330px)}.hero__actions .btn{min-height:48px;min-width:0;width:100%}.hero__tags{font-size:12px;gap:10px 18px;justify-content:flex-start;margin:24px auto 0;width:min(100%,330px)}.hero__tags li{padding-left:13px}.hero-card--conversion{margin-top:28px;transform:translateX(-48px)}.hero-card--launch{transform:translateX(48px)}}@media (max-width:420px){.hero{padding:86px 0 38px}.hero__container{min-height:calc(100svh - 124px);width:calc(100% - 22px)}.hero__title{font-size:clamp(34px,9.6vw,38px);letter-spacing:-.044em}.hero__tags{justify-content:center}.hero-card--conversion,.hero-card--launch{transform:none}.hero-card--conversion{margin-top:24px}.hero-card--launch{margin-top:10px}}.results{min-height:100vh;overflow:hidden;position:relative}.results__container{align-items:center;display:flex;height:100vh;justify-content:center;min-height:680px;position:relative}.results__content{position:relative;text-align:center;width:min(1120px,100%);z-index:2}.results__label{color:#6f6f73;font-size:16px;font-weight:700;line-height:1.1;margin-bottom:14px}.results__slider{height:190px;margin-inline:auto;overflow:visible;position:relative;width:min(1120px,100%)}.results__track{height:100%;position:relative}.results__slide{align-items:center;display:flex;inset:0;justify-content:center;min-height:100%;pointer-events:none;position:absolute;transition:opacity .35s ease;visibility:hidden}.results__slide.is-active{opacity:1;pointer-events:auto;visibility:visible}.results__title{color:#333;font-size:clamp(40px,4.6vw,72px);font-weight:700;letter-spacing:-.02em;line-height:1.03;margin:0;transform:translateY(26px);transition:opacity .45s ease,transform .55s ease}.results__slide.is-active .results__title{opacity:1;transform:translateY(0)}.results__dots{align-items:center;display:flex;gap:10px;justify-content:center;margin-top:28px}.results__dots span{background:rgba(17,17,17,.22);border-radius:50%;height:8px;transition:width .3s ease,background-color .3s ease;width:8px}.results__dots span.is-active{background:#333;border-radius:999px;width:24px}.results__icons{height:200%;inset:0;pointer-events:none;position:absolute;transform:translateY(-23%)}.results__icon{align-items:center;background:var(--icon-bg,#fff);border-radius:8px;box-shadow:0 10px 20px rgba(17,17,17,.07);display:flex;height:45px;justify-content:center;opacity:1;position:absolute;transform:scale(1) translateY(16px);transition:transform .55s cubic-bezier(.21,1,.31,1),opacity .45s ease;width:45px}.results__icon.is-visible{opacity:1;transform:scale(1) translateY(0)}.results__icon img{height:32px;-o-object-fit:contain;object-fit:contain;width:32px}.results__icon--yandex{left:92px;top:16px}.results__icon--wordpress{left:238px;top:84px}.results__icon--shopify{left:540px;top:36px}.results__icon--aistudio{right:240px;top:22px}.results__icon--bitrix{right:86px;top:78px}.results__icon--cloudflare{right:168px;top:154px}.results__icon--google{bottom:128px;right:94px}.results__icon--openai{bottom:34px;right:298px}.results__icon--tilda{bottom:58px;left:156px}.results__icon--n8n{bottom:96px;left:388px}.results__icon--vk{left:0;top:196px}.results.is-static .results__slider{height:auto}.results.is-static .results__track{display:grid;gap:12px;height:auto}.results.is-static .results__slide{inset:auto;min-height:0;opacity:1;pointer-events:auto;position:relative;visibility:visible}.results.is-static .results__icon,.results.is-static .results__title{opacity:1;transform:none}.results.is-animation-ready .results__label{opacity:0;transform:translateY(14px);will-change:opacity,transform}.results.is-animation-ready .results__title{opacity:0;transform:translateY(46px);will-change:opacity,transform}.results.is-animation-ready .results__icon{opacity:0;transform:scale(.86) translateY(36px) rotate(-4deg);will-change:opacity,transform}.results.is-animation-ready.is-in-view .results__label{animation:resultsFadeUp .65s cubic-bezier(.21,1,.31,1) .1s forwards}.results.is-animation-ready.is-in-view .results__title{animation:resultsTitleIn .8s cubic-bezier(.21,1,.31,1) .22s forwards}.results.is-animation-ready.is-in-view .results__icon{animation:resultsIconIn .72s cubic-bezier(.21,1,.31,1) var(--results-icon-delay,0s) forwards,resultsIconFloat 5.8s ease-in-out calc(var(--results-icon-delay, 0s) + .78s) infinite}.results.is-animation-ready.is-in-view .results__icon:first-child{--results-icon-delay:0.04s;--results-float-offset:-8px}.results.is-animation-ready.is-in-view .results__icon:nth-child(2){--results-icon-delay:0.1s;--results-float-offset:7px}.results.is-animation-ready.is-in-view .results__icon:nth-child(3){--results-icon-delay:0.16s;--results-float-offset:-6px}.results.is-animation-ready.is-in-view .results__icon:nth-child(4){--results-icon-delay:0.22s;--results-float-offset:8px}.results.is-animation-ready.is-in-view .results__icon:nth-child(5){--results-icon-delay:0.28s;--results-float-offset:-7px}.results.is-animation-ready.is-in-view .results__icon:nth-child(6){--results-icon-delay:0.34s;--results-float-offset:6px}.results.is-animation-ready.is-in-view .results__icon:nth-child(7){--results-icon-delay:0.4s;--results-float-offset:-9px}.results.is-animation-ready.is-in-view .results__icon:nth-child(8){--results-icon-delay:0.46s;--results-float-offset:7px}.results.is-animation-ready.is-in-view .results__icon:nth-child(9){--results-icon-delay:0.52s;--results-float-offset:-6px}.results.is-animation-ready.is-in-view .results__icon:nth-child(10){--results-icon-delay:0.58s;--results-float-offset:8px}.results.is-animation-ready.is-in-view .results__icon:nth-child(11){--results-icon-delay:0.64s;--results-float-offset:-7px}@keyframes resultsFadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes resultsTitleIn{0%{opacity:0;transform:translateY(46px)}to{opacity:1;transform:translateY(26px)}}@keyframes resultsIconIn{0%{opacity:0;transform:scale(.86) translateY(36px) rotate(-4deg)}to{opacity:1;transform:scale(1) translateY(16px) rotate(0deg)}}@keyframes resultsIconFloat{0%,to{opacity:1;transform:scale(1) translateY(16px) rotate(0deg)}50%{opacity:1;transform:scale(1) translateY(calc(16px + var(--results-float-offset, -8px))) rotate(1.2deg)}}@keyframes resultsIconInMobile{0%{opacity:0;transform:scale(.9) translateY(18px) rotate(-3deg)}to{opacity:1;transform:none}}@media (max-width:1120px){.results__container{min-height:620px}.results__title{font-size:clamp(34px,5.1vw,56px)}.results__icon--yandex{left:34px}.results__icon--wordpress{left:150px}.results__icon--shopify{left:410px}.results__icon--aistudio{right:182px}.results__icon--bitrix{right:40px}.results__icon--cloudflare{right:124px}.results__icon--google{right:52px}.results__icon--openai{right:222px}.results__icon--tilda{left:90px}.results__icon--n8n{left:292px}}@media (max-width:760px){.results{min-height:unset;padding:74px 0 92px}.results__container{display:block;height:auto;min-height:unset}.results__content{margin-inline:auto;max-width:620px}.results__label{font-size:clamp(20px,4.2vw,28px);margin-bottom:12px}.results__slide{min-height:132px}.results__title{font-size:clamp(30px,8.7vw,44px);line-height:1.05}.results__dots{margin-top:16px}.results__icons{display:grid;gap:14px;grid-template-columns:repeat(4,45px);justify-content:center;margin:0 auto 36px;position:static;width:min(420px,100%)}.results__icon{bottom:auto;left:auto;opacity:1;position:relative;right:auto;top:auto;transform:none}.results.is-animation-ready.is-in-view .results__icon{animation:resultsIconInMobile .62s cubic-bezier(.21,1,.31,1) var(--results-icon-delay,0s) forwards}}@media (max-width:420px){.results{padding:62px 0 78px}.results__icons{gap:12px;grid-template-columns:repeat(3,45px);margin-bottom:28px;width:min(320px,100%)}.results__slide{min-height:120px}.results__title{font-size:clamp(28px,9vw,38px);letter-spacing:-.01em}}@media (prefers-reduced-motion:reduce){.results.is-animation-ready .results__label{animation:none!important;opacity:1;transform:none;will-change:auto}.results.is-animation-ready .results__title{animation:none!important;opacity:1;transform:translateY(26px);will-change:auto}.results.is-animation-ready .results__icon{animation:none!important;opacity:1;transform:scale(1) translateY(16px);will-change:auto}}@media (max-width:760px) and (prefers-reduced-motion:reduce){.results.is-animation-ready .results__icon{transform:none}}.expertise{background:#fff;overflow:hidden;padding:44px 0 40px;position:relative}.expertise__container{margin-inline:auto;width:min(1420px,100% - 40px)}.expertise__header{align-items:start;display:grid;gap:80px;grid-template-columns:minmax(0,1fr) 448px}.expertise__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 2px}.expertise__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:600;letter-spacing:-.052em;line-height:1.03;margin:0}.expertise__title span{color:#c2c2c2}.expertise__text{color:#111;font-size:18px;font-weight:400;letter-spacing:.005em;line-height:1.55;margin:22px 0 0;max-width:448px}.expertise__tabs{align-items:center;background:#f2f2f2;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(17,17,17,.02);display:flex;gap:2px;margin:36px auto 0;min-height:39px;padding:2px;width:-moz-fit-content;width:fit-content}.expertise__tab{background:transparent;border:0;border-radius:999px;color:#a6a6a8;cursor:pointer;font:inherit;font-size:13px;font-weight:600;line-height:1;min-height:35px;padding:0 17px;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease;white-space:nowrap}.expertise__tab.is-active{background:#fff;box-shadow:0 2px 7px rgba(17,17,17,.05);color:#111}@media (hover:hover) and (pointer:fine){.expertise__tab:hover{color:#111}}.expertise__cases{margin-top:50px;margin-inline:calc(50% - 50vw);overflow:visible;position:relative;width:100vw}.expertise__track{align-items:stretch;display:flex}.expertise-card{background:#fff;border:1px solid rgba(17,17,17,.16);border-radius:12px;flex:0 0 300px;height:auto;min-height:430px;overflow:hidden;width:300px}.expertise-card__media{background:#f2f2f2;height:279px;overflow:hidden}.expertise-card__media img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.expertise-card__body{padding:13px 10px 7px}.expertise-card__title{color:#111;font-size:24px;font-weight:800;letter-spacing:-.03em;line-height:1.15;margin:0;text-align:center}.expertise-card__list{color:#6f6f73;display:grid;font-size:14px;font-weight:500;gap:7px;line-height:1.2;list-style:none;margin:11px 0 0;padding:0 0 0 2px}.expertise-card__list li{padding-left:19px;position:relative}.expertise-card__list li:before{background:#c7ff4f;border-radius:50%;content:"";height:6px;left:0;position:absolute;top:.5em;transform:translateY(-50%);width:6px}.expertise-card__tags{align-items:center;display:flex;flex-wrap:nowrap;gap:9px;justify-content:center;list-style:none;margin:16px 0 0;padding:0}.expertise-card__tags li{align-items:center;background:hsla(0,0%,95%,.55);border:1px solid rgba(17,17,17,.16);border-radius:999px;color:#111;display:inline-flex;font-size:12px;font-weight:500;justify-content:center;line-height:1;min-height:27px;padding:0 11px;white-space:nowrap}@media (max-width:1120px){.expertise__header{gap:48px;grid-template-columns:minmax(0,1fr) 390px}.expertise__track{align-items:stretch}}@media (max-width:760px){.expertise{padding:70px 0 72px}.expertise__container{width:min(100% - 32px,620px)}.expertise__header{display:block}.expertise__title{font-size:clamp(36px,9vw,46px)}.expertise__text{font-size:16px;line-height:1.45;margin-top:20px;max-width:100%}.expertise__tabs{justify-content:flex-start;margin-top:28px;overflow-x:auto;scrollbar-width:none;width:100%}.expertise__tabs::-webkit-scrollbar{display:none}.expertise__tab{padding-inline:15px}.expertise__cases{margin-top:32px;overflow:visible}.expertise__track{align-items:stretch}.expertise-card{flex-basis:286px;width:286px}.expertise-card__media{height:266px}.expertise-card__title{font-size:23px}.expertise-card__list{font-size:13px}.expertise-card__tags{gap:6px}.expertise-card__tags li{padding-inline:9px}}@media (max-width:420px){.expertise{padding:60px 0 64px}.expertise__container{width:calc(100% - 24px)}.expertise__label{font-size:15px}.expertise__tabs{min-height:37px}.expertise__tab{font-size:12px;min-height:33px;padding-inline:13px}.expertise__track{align-items:stretch}.expertise-card{flex-basis:272px;min-height:420px;width:272px}.expertise-card__media{height:254px}.expertise-card__body{padding-inline:9px}.expertise-card__tags{flex-wrap:wrap}}.process{background:#fff;padding:44px 0 100px;position:relative}.process__container{margin-inline:auto;width:min(1420px,100% - 40px)}.process__heading{max-width:1100px}.process__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 2px}.process__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:600;letter-spacing:-.052em;line-height:1.03;margin:0}.process__title span{color:#c2c2c2}.process__grid{display:grid;gap:24px;grid-template-columns:repeat(3,minmax(0,1fr));margin:58px auto 0;width:min(1192px,100%)}.process-card{background:#fff;border:1px solid rgba(17,17,17,.16);border-radius:30px;min-height:190px;padding:16px 28px 20px}.process-card__number{color:#f4f3f0;display:block;font-size:60px;font-weight:900;letter-spacing:-.055em;line-height:.96;margin:0 0 18px}.process-card__title{color:#111;font-size:20px;font-weight:800;letter-spacing:-.02em;line-height:1.2;margin:0}.process-card__text{color:#6f6f73;font-size:15px;font-weight:400;letter-spacing:-.01em;line-height:1.75;margin:12px 0 0;max-width:310px}@media (max-width:1120px){.process__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.process{padding:70px 0 72px}.process__container{width:min(100% - 32px,620px)}.process__title{font-size:clamp(36px,9vw,46px)}.process__grid{gap:16px;grid-template-columns:1fr;margin-top:32px}.process-card{border-radius:24px;min-height:172px;padding:16px 24px 20px}.process-card__number{font-size:54px;margin-bottom:16px}.process-card__text{font-size:14px;line-height:1.6;max-width:100%}}@media (max-width:420px){.process{padding:60px 0 64px}.process__container{width:calc(100% - 24px)}.process__label{font-size:15px}.process-card{border-radius:22px;min-height:166px;padding:15px 20px 19px}.process-card__number{font-size:50px}.process-card__title{font-size:19px}}.technologies{background:#fff;overflow:hidden;padding:44px 0 66px;position:relative}.technologies__container{margin-inline:auto;width:min(1420px,100% - 40px)}.technologies__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 2px}.technologies__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:600;letter-spacing:-.052em;line-height:1.03;margin:0}.technologies__title span{color:#c2c2c2}.technologies__marquee{display:grid;gap:32px;margin-top:60px;margin-inline:calc(50% - 50vw);width:100vw}.technologies__row{overflow:hidden;width:100%}.technologies__track{align-items:center;display:flex;width:-moz-max-content;width:max-content;will-change:transform}.technologies__track--left{animation:technologies-marquee-left 38s linear infinite}.technologies__track--right{animation:technologies-marquee-right 42s linear infinite}.technologies__row--top .technologies__track{margin-left:-82px}.technologies__row--bottom .technologies__track{margin-left:10px}.technologies__group{align-items:center;display:flex;flex:0 0 auto;gap:41px;padding-right:41px}@media (prefers-reduced-motion:reduce){.technologies__track{animation:none}}.technology-item{align-items:center;color:#111;display:inline-flex;flex:0 0 auto;font-size:22px;font-weight:500;gap:11px;letter-spacing:-.03em;line-height:1;white-space:nowrap}.technology-item__icon{align-items:center;background:#f2f2f2;border-radius:7px;display:inline-flex;flex:0 0 44px;height:44px;justify-content:center;overflow:hidden;width:44px}.technology-item__icon img{display:block;height:32px;-o-object-fit:contain;object-fit:contain;width:32px}.technology-item__icon--wordpress{background:#057da3}.technology-item__icon--n8n{background:#e83e73}.technology-item__icon--bitrix{background:#42b9ea}.technology-item__icon--bitrix img{height:auto;width:32px}.technology-item__icon--react{background:#1f1f1f}.technology-item__icon--docker,.technology-item__icon--nuxt,.technology-item__icon--vue,.technology-item__icon--woo{background:#f2f2f2}.technology-item__icon--modx{background:#f4f4f4}.technology-item__icon--php{background:#535f99}.technology-item__icon--git{background:#fb5036}.technology-item__icon--mysql{background:#ed8a00}.technology-item__icon--tilda{background:#ff5b3a}@keyframes technologies-marquee-left{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}@keyframes technologies-marquee-right{0%{transform:translate3d(-50%,0,0)}to{transform:translateZ(0)}}@media (max-width:760px){.technologies{padding:70px 0 72px}.technologies__container{width:min(100% - 32px,620px)}.technologies__title{font-size:clamp(36px,9vw,46px)}.technologies__marquee{gap:22px;margin-top:38px}.technologies__group{gap:28px;padding-right:28px}.technologies__row--top .technologies__track{margin-left:-54px}.technologies__row--bottom .technologies__track{margin-left:12px}.technology-item{font-size:18px;gap:9px}.technology-item__icon{border-radius:7px;flex-basis:38px;height:38px;width:38px}.technology-item__icon img{height:28px;width:28px}}@media (max-width:420px){.technologies{padding:60px 0 64px}.technologies__container{width:calc(100% - 24px)}.technologies__label{font-size:15px}.technologies__marquee{gap:18px;margin-top:34px}.technologies__group{gap:22px;padding-right:22px}.technology-item{font-size:16px}.technology-item__icon{flex-basis:34px;height:34px;width:34px}.technology-item__icon img{height:25px;width:25px}}.turnkey{background:#fff;padding:40px 0 20px;position:relative}.turnkey__container{margin-inline:auto;width:min(1194px,100% - 40px)}.turnkey__card{background:#fff;border:1px solid rgba(17,17,17,.16);border-radius:30px;display:grid;gap:84px;grid-template-columns:minmax(0,1fr) 520px;min-height:590px;padding:48px 48px 50px}.turnkey__content{max-width:475px}.turnkey__label{color:#929292;font-size:14px;font-weight:600;letter-spacing:.04em;line-height:1.2;margin:0 0 13px;text-transform:uppercase}.turnkey__title{color:#111;font-size:clamp(34px,2.5vw,38px);font-weight:700;letter-spacing:-.035em;line-height:1.02;margin:0}.turnkey__text{color:#6f6f73;font-size:16px;font-weight:400;letter-spacing:-.01em;line-height:1.45;margin:27px 0 0}.turnkey__button{font-size:16px;margin-top:34px;min-height:54px;min-width:244px;padding-inline:30px}.turnkey__list{align-self:start;color:#111;display:grid;font-size:16px;font-weight:500;gap:14px;letter-spacing:-.01em;line-height:1.38;list-style:none;margin:0;padding:0}.turnkey__list li{min-height:20px;padding-left:32px;position:relative}.turnkey__list li:before{background:#c7ff4f;border-radius:50%;content:"";height:20px;left:0;position:absolute;top:.64em;transform:translateY(-50%);width:20px}@media (max-width:1120px){.turnkey__card{gap:48px;grid-template-columns:minmax(0,1fr) minmax(430px,.9fr)}}@media (max-width:760px){.turnkey{padding:70px 0 72px}.turnkey__container{width:min(100% - 32px,620px)}.turnkey__card{border-radius:26px;gap:36px;grid-template-columns:1fr;min-height:auto;padding:34px 30px 36px}.turnkey__content{max-width:100%}.turnkey__title{font-size:clamp(32px,8vw,42px)}.turnkey__text{font-size:15px;margin-top:20px}.turnkey__button{margin-top:28px;min-width:220px}.turnkey__list{font-size:15px;gap:13px;line-height:1.45}}@media (max-width:420px){.turnkey{padding:60px 0 64px}.turnkey__container{width:calc(100% - 24px)}.turnkey__card{border-radius:22px;padding:28px 20px 30px}.turnkey__label{font-size:13px}.turnkey__title{font-size:clamp(29px,10vw,36px)}.turnkey__button{min-width:0;width:100%}.turnkey__list li{padding-left:28px}.turnkey__list li:before{height:18px;width:18px}}.clients{background:#fff;overflow:hidden;padding:44px 0 88px;position:relative}.clients__container{margin-inline:auto;width:min(1420px,100% - 40px)}.clients__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 2px}.clients__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:600;letter-spacing:-.052em;line-height:1.03;margin:0}.clients__title span{color:#c2c2c2}.clients__marquee{display:grid;gap:10px;margin-top:35px;margin-inline:calc(50% - 50vw);width:100vw}.clients__row{overflow:hidden;width:100%}.clients__track{display:flex;width:-moz-max-content;width:max-content;will-change:transform}.clients__track--left{animation:clients-marquee-left 48s linear infinite}.clients__track--right{animation:clients-marquee-right 52s linear infinite}.clients__row--top .clients__track{margin-left:8px}.clients__row--bottom .clients__track{margin-left:-160px}.clients__group{display:flex;gap:10px;padding-right:10px}.review-card{background:#fff;border:1px solid rgba(17,17,17,.16);border-radius:30px;display:flex;flex:0 0 382px;flex-direction:column;justify-content:space-between;min-height:206px;padding:19px 20px 20px;width:382px}.review-card__text{color:#111;font-size:16px;font-weight:500;letter-spacing:-.01em;line-height:1.53;margin:0;max-width:335px}.review-card__author{align-items:center;display:flex;gap:13px;margin-top:24px}.review-card__avatar{background:#faf9f6;border:1px solid rgba(17,17,17,.14);border-radius:50%;flex:0 0 48px;height:48px;width:48px}.review-card__name{color:#111;font-size:18px;font-weight:600;letter-spacing:-.02em;line-height:1.15;margin:0}.review-card__position{color:#888;font-size:15px;font-weight:400;letter-spacing:-.01em;line-height:1.2;margin:4px 0 0}@keyframes clients-marquee-left{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}@keyframes clients-marquee-right{0%{transform:translate3d(-50%,0,0)}to{transform:translateZ(0)}}@media (max-width:760px){.clients{padding:70px 0 72px}.clients__container{width:min(100% - 32px,620px)}.clients__title{font-size:clamp(36px,9vw,46px)}.clients__marquee{gap:12px;margin-top:34px}.clients__group{gap:12px;padding-right:12px}.clients__row--top .clients__track{margin-left:-70px}.clients__row--bottom .clients__track{margin-left:-190px}.review-card{border-radius:26px;flex-basis:340px;min-height:196px;padding:18px 18px 19px;width:340px}.review-card__text{font-size:15px;line-height:1.48}.review-card__name{font-size:17px}.review-card__position{font-size:14px}}@media (max-width:420px){.clients{padding:60px 0 64px}.clients__container{width:calc(100% - 24px)}.clients__label{font-size:15px}.clients__row--top .clients__track{margin-left:-90px}.clients__row--bottom .clients__track{margin-left:-220px}.review-card{border-radius:24px;flex-basis:300px;min-height:188px;padding:17px 17px 18px;width:300px}.review-card__text{font-size:14px}.review-card__avatar{flex-basis:44px;height:44px;width:44px}}.values{background:#fff;padding:46px 0 82px}.values__container{margin-inline:auto;width:min(1420px,100% - 40px)}.values__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 2px}.values__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:600;letter-spacing:-.052em;line-height:1.03;margin:0}.values__title span{color:#c2c2c2}.values__grid{display:grid;gap:32px;grid-template-columns:repeat(3,minmax(0,1fr));margin:58px auto 0;width:min(100%,966px)}.value-card{min-width:0;text-align:center}.value-card__media{align-items:center;background:#f2f2f2;border-radius:8px;display:flex;height:216px;justify-content:center}.value-card__media img{display:block;height:64px;opacity:.94;width:64px}.value-card__title{color:#111;font-size:16px;font-weight:800;letter-spacing:-.015em;line-height:1.18;margin:11px 0 0}.value-card__text{color:#888;font-size:12px;font-weight:400;letter-spacing:-.01em;line-height:1.28;margin:8px auto 0;max-width:276px}@media (max-width:1120px){.values__grid{gap:24px}.value-card__media{height:200px}}@media (max-width:760px){.values{padding:70px 0 72px}.values__container{width:min(100% - 32px,620px)}.values__title{font-size:clamp(36px,9vw,46px)}.values__grid{gap:28px;grid-template-columns:1fr;margin-top:34px}.value-card__media{height:220px}.value-card__title{font-size:17px;margin-top:12px}.value-card__text{font-size:14px;line-height:1.35;max-width:330px}}@media (max-width:420px){.values{padding:60px 0 64px}.values__container{width:calc(100% - 24px)}.values__label{font-size:15px}.values__grid{gap:24px}.value-card__media{height:196px}}.faq{background:#fff;padding:46px 0 83px}.faq__container{margin-inline:auto;width:min(1420px,100% - 40px)}.faq__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 2px}.faq__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:600;letter-spacing:-.052em;line-height:1.03;margin:0}.faq__title span{color:#c2c2c2}.faq__list{background:#fff;border:1px solid rgba(17,17,17,.16);border-radius:20px;margin:58px auto 0;overflow:hidden;width:min(100%,1256px)}.faq-item+.faq-item{border-top:1px solid rgba(17,17,17,.14)}.faq-item__button{align-items:center;background:transparent;border:0;color:#111;cursor:pointer;display:flex;font:inherit;font-size:16px;font-weight:400;gap:24px;justify-content:space-between;letter-spacing:-.01em;line-height:1.35;min-height:69px;padding:18px 24px 18px 20px;text-align:left;transition:background .2s ease;width:100%}@media (hover:hover) and (pointer:fine){.faq-item__button:hover{background:rgba(17,17,17,.025)}}.faq-item__button[aria-expanded=true] .faq-item__icon{transform:rotate(45deg)}.faq-item__icon{flex:0 0 18px;height:18px;position:relative;transition:transform .2s ease;width:18px}.faq-item__icon:after,.faq-item__icon:before{background:#111;border-radius:999px;content:"";height:1px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:11px}.faq-item__icon:after{height:11px;width:1px}.faq-item__panel{color:#888;font-size:15px;font-weight:400;letter-spacing:-.01em;line-height:1.48;padding:0 68px 22px 20px}.faq-item__panel p{margin:0;max-width:820px}@media (max-width:760px){.faq{padding:70px 0 72px}.faq__container{width:min(100% - 32px,620px)}.faq__title{font-size:clamp(36px,9vw,46px)}.faq__list{border-radius:18px;margin-top:34px}.faq-item__button{font-size:15px;min-height:64px;padding:17px 18px}.faq-item__panel{font-size:14px;padding:0 18px 18px}}@media (max-width:420px){.faq{padding:60px 0 64px}.faq__container{width:calc(100% - 24px)}.faq__label{font-size:15px}.faq-item__button{gap:16px;min-height:60px;padding:15px 16px}.faq-item__panel{padding:0 16px 17px}}.contact{background:#fff;padding:46px 0 88px}.contact__container{align-items:start;display:grid;gap:clamp(48px,6.5vw,150px);grid-template-columns:minmax(300px,470px) minmax(620px,1fr);margin-inline:auto;width:min(1420px,100% - 40px)}.contact__content{padding-top:0}.contact__label{color:#6f6f73;font-size:16px;font-weight:600;line-height:1.2;margin:0 0 8px}.contact__title{color:#333;font-size:clamp(42px,2.9vw,48px);font-weight:700;letter-spacing:-.052em;line-height:1.03;margin:0}.contact__title span{color:#c2c2c2}.contact__text{color:#888;font-size:19px;font-weight:400;letter-spacing:-.022em;line-height:1.42;margin:28px 0 0;max-width:440px}.contact-sentence{margin:0;width:100%}.contact-sentence__text{color:#111;font-size:clamp(32px,2.33vw,40px);font-weight:400;letter-spacing:-.055em;line-height:1.19;margin:0}.contact-sentence__actions{align-items:center;display:flex;gap:18px;margin-top:28px}.contact-sentence__submit{min-width:184px}.contact-sentence__status{color:#888;font-size:14px;letter-spacing:-.01em;line-height:1.35;margin:0;min-height:22px}.contact-sentence__status.is-success{color:#333}.contact-field{background:transparent;border:0;border-bottom:1px solid;border-radius:0;color:#c2c2c2;cursor:text;display:inline;min-width:1.5em;outline:none;padding:0 .04em;position:relative;transition:color .2s ease,border-color .2s ease,background .2s ease}.contact-field:focus-visible,.contact-field[contenteditable=true]{background:rgba(17,17,17,.035);border-color:#111;color:#111}.contact-field--selector{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.contact-field.is-filled{color:#111}.contact-field.is-error{background:rgba(215,58,49,.07);border-color:#d73a31;color:#d73a31}.contact-dropdown{background:#fff;border:1px solid rgba(17,17,17,.12);border-radius:16px;box-shadow:0 18px 45px rgba(17,17,17,.12);list-style:none;margin:0;max-width:min(320px,100vw - 24px);min-width:220px;padding:8px;position:absolute;z-index:80}.contact-dropdown li{border-radius:10px;color:#111;cursor:pointer;font-size:15px;font-weight:500;line-height:1.2;padding:11px 12px;transition:background .2s ease}@media (hover:hover) and (pointer:fine){.contact-dropdown li:hover{background:rgba(17,17,17,.055)}}.contact-date-input{height:24px;left:-1000px;opacity:0;pointer-events:auto;position:fixed;top:-1000px;width:24px}@media (max-width:1120px){.contact__container{gap:64px;grid-template-columns:minmax(280px,390px) minmax(520px,1fr)}.contact-sentence__text{font-size:clamp(30px,3.1vw,36px)}}@media (max-width:760px){.contact{padding:70px 0 72px}.contact__container{gap:34px;grid-template-columns:1fr;width:min(100% - 32px,620px)}.contact__title{font-size:clamp(36px,9vw,46px)}.contact__text{font-size:17px;margin-top:20px}.contact-sentence__text{font-size:clamp(26px,7vw,36px);line-height:1.22}.contact-sentence__actions{align-items:flex-start;flex-direction:column;gap:12px}}@media (max-width:420px){.contact{padding:60px 0 64px}.contact__container{width:calc(100% - 24px)}.contact__label{font-size:15px}.contact-sentence__text{font-size:25px}.contact-dropdown{min-width:200px}}.site-footer{background:#fff;padding:82px 0 50px}.site-footer__container{margin-inline:auto;width:min(1192px,100% - 40px)}.site-footer__top{align-items:start;border-bottom:1px solid rgba(17,17,17,.16);display:grid;gap:clamp(70px,6.8vw,130px);grid-template-columns:minmax(320px,1fr) 180px 262px;padding-bottom:66px}.site-footer__brand{align-items:flex-start;display:flex;flex-direction:column}.site-footer__logo{display:inline-flex;transition:opacity .2s ease;width:190px}.site-footer__logo img{height:auto;width:190px}@media (hover:hover) and (pointer:fine){.site-footer__logo:hover{opacity:.72}}.site-footer__description{color:#888;font-size:18px;font-weight:400;letter-spacing:-.022em;line-height:1.55;margin:29px 0 0;max-width:330px}.site-footer__title{color:#111;font-size:14px;font-weight:500;letter-spacing:-.01em;line-height:1.2;margin:3px 0 22px;text-transform:uppercase}.site-footer__list{color:#888;display:flex;flex-direction:column;font-size:17px;font-weight:400;gap:14px;letter-spacing:-.018em;line-height:1.35;list-style:none;margin:0;padding:0}.site-footer__list a{transition:color .2s ease}@media (hover:hover) and (pointer:fine){.site-footer__list a:hover{color:#111}}.site-footer__bottom{align-items:center;color:#888;display:flex;font-size:15px;font-weight:400;gap:24px;justify-content:space-between;letter-spacing:-.02em;line-height:1.35;padding-top:33px}.site-footer__bottom p{margin:0}.site-footer__bottom a{transition:color .2s ease}@media (hover:hover) and (pointer:fine){.site-footer__bottom a:hover{color:#111}}@media (max-width:1120px){.site-footer__top{gap:54px;grid-template-columns:minmax(280px,1fr) 160px 240px}}@media (max-width:760px){.site-footer{padding:64px 0 40px}.site-footer__container{width:min(100% - 32px,620px)}.site-footer__top{gap:40px 32px;grid-template-columns:1fr 1fr;padding-bottom:42px}.site-footer__brand{grid-column:1/-1}.site-footer__description{font-size:17px;margin-top:22px}.site-footer__bottom{align-items:flex-start;flex-direction:column;gap:12px;padding-top:26px}}@media (max-width:520px){.site-footer{padding:52px 0 34px}.site-footer__container{width:calc(100% - 24px)}.site-footer__top{gap:34px;grid-template-columns:1fr}.site-footer__logo,.site-footer__logo img{width:168px}.site-footer__title{margin-bottom:16px}.site-footer__list{font-size:16px;gap:12px}.site-footer__bottom{font-size:14px}}
\ No newline at end of file
diff --git a/assets/img/expertise-case-dark.jpg b/assets/img/expertise-case-dark.jpg
new file mode 100644
index 0000000..ec96ba4
Binary files /dev/null and b/assets/img/expertise-case-dark.jpg differ
diff --git a/assets/img/expertise-case-laptop.jpg b/assets/img/expertise-case-laptop.jpg
new file mode 100644
index 0000000..a23b436
Binary files /dev/null and b/assets/img/expertise-case-laptop.jpg differ
diff --git a/assets/img/expertise-case-web.jpg b/assets/img/expertise-case-web.jpg
new file mode 100644
index 0000000..be6ab54
Binary files /dev/null and b/assets/img/expertise-case-web.jpg differ
diff --git a/assets/img/icon-aistudio.svg b/assets/img/icon-aistudio.svg
new file mode 100644
index 0000000..9203662
--- /dev/null
+++ b/assets/img/icon-aistudio.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/icon-bitrix.svg b/assets/img/icon-bitrix.svg
new file mode 100644
index 0000000..64c17e8
--- /dev/null
+++ b/assets/img/icon-bitrix.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/img/icon-cloudflare.svg b/assets/img/icon-cloudflare.svg
new file mode 100644
index 0000000..caa2115
--- /dev/null
+++ b/assets/img/icon-cloudflare.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/icon-docker.svg b/assets/img/icon-docker.svg
new file mode 100644
index 0000000..0fa5a03
--- /dev/null
+++ b/assets/img/icon-docker.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/icon-git.svg b/assets/img/icon-git.svg
new file mode 100644
index 0000000..0948683
--- /dev/null
+++ b/assets/img/icon-git.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/assets/img/icon-google.svg b/assets/img/icon-google.svg
new file mode 100644
index 0000000..1fced85
--- /dev/null
+++ b/assets/img/icon-google.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/img/icon-modx.svg b/assets/img/icon-modx.svg
new file mode 100644
index 0000000..b2c81bf
--- /dev/null
+++ b/assets/img/icon-modx.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/img/icon-mysql.svg b/assets/img/icon-mysql.svg
new file mode 100644
index 0000000..280f7a4
--- /dev/null
+++ b/assets/img/icon-mysql.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/img/icon-n8n.svg b/assets/img/icon-n8n.svg
new file mode 100644
index 0000000..5bc9e13
--- /dev/null
+++ b/assets/img/icon-n8n.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/icon-nuxt.svg b/assets/img/icon-nuxt.svg
new file mode 100644
index 0000000..27b964c
--- /dev/null
+++ b/assets/img/icon-nuxt.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/img/icon-openai.svg b/assets/img/icon-openai.svg
new file mode 100644
index 0000000..335425a
--- /dev/null
+++ b/assets/img/icon-openai.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/icon-php.svg b/assets/img/icon-php.svg
new file mode 100644
index 0000000..95a8ef0
--- /dev/null
+++ b/assets/img/icon-php.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/img/icon-placeholder.svg b/assets/img/icon-placeholder.svg
new file mode 100644
index 0000000..a0432e8
--- /dev/null
+++ b/assets/img/icon-placeholder.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/img/icon-react.svg b/assets/img/icon-react.svg
new file mode 100644
index 0000000..061fc8a
--- /dev/null
+++ b/assets/img/icon-react.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/img/icon-shopify.svg b/assets/img/icon-shopify.svg
new file mode 100644
index 0000000..e20309c
--- /dev/null
+++ b/assets/img/icon-shopify.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/icon-star.svg b/assets/img/icon-star.svg
new file mode 100644
index 0000000..4e770f6
--- /dev/null
+++ b/assets/img/icon-star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/icon-tilda.svg b/assets/img/icon-tilda.svg
new file mode 100644
index 0000000..26732e0
--- /dev/null
+++ b/assets/img/icon-tilda.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/img/icon-vk.svg b/assets/img/icon-vk.svg
new file mode 100644
index 0000000..16b98fd
--- /dev/null
+++ b/assets/img/icon-vk.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/icon-vue.svg b/assets/img/icon-vue.svg
new file mode 100644
index 0000000..9df0197
--- /dev/null
+++ b/assets/img/icon-vue.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/img/icon-woo.svg b/assets/img/icon-woo.svg
new file mode 100644
index 0000000..a373c31
--- /dev/null
+++ b/assets/img/icon-woo.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/img/icon-wordpress.svg b/assets/img/icon-wordpress.svg
new file mode 100644
index 0000000..e9ed442
--- /dev/null
+++ b/assets/img/icon-wordpress.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/icon-yandex.svg b/assets/img/icon-yandex.svg
new file mode 100644
index 0000000..30a98a4
--- /dev/null
+++ b/assets/img/icon-yandex.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/logo.svg b/assets/img/logo.svg
new file mode 100644
index 0000000..89b14eb
--- /dev/null
+++ b/assets/img/logo.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..8740333
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,561 @@
+(function ($) {
+ 'use strict';
+
+ $(function () {
+ const $expertise = $('.expertise');
+
+ if (!$expertise.length || typeof Swiper !== 'function') {
+ return;
+ }
+
+ const $slider = $expertise.find('.expertise__cases');
+ const $wrapper = $expertise.find('.expertise__track');
+ const $tabs = $expertise.find('.expertise__tab');
+ const sourceSlides = $wrapper.find('.expertise-card').map(function () {
+ const $slide = $(this);
+
+ return {
+ group: $slide.data('expertise-group'),
+ html: this.outerHTML,
+ };
+ }).get();
+
+ let expertiseSwiper = null;
+ let activeFilter = null;
+
+ const getSlidesByFilter = function (filter) {
+ return sourceSlides.filter(function (slide) {
+ return slide.group === filter;
+ });
+ };
+
+ const updateTabs = function (filter) {
+ $tabs.each(function () {
+ const $tab = $(this);
+ const isActive = $tab.data('expertise-filter') === filter;
+
+ $tab
+ .toggleClass('is-active', isActive)
+ .attr({
+ 'aria-selected': String(isActive),
+ 'aria-pressed': String(isActive),
+ });
+ });
+ };
+
+ const destroySlider = function () {
+ if (!expertiseSwiper) {
+ return;
+ }
+
+ expertiseSwiper.destroy(true, true);
+ expertiseSwiper = null;
+ };
+
+ const getLoopSlidesHtml = function (slides) {
+ // Для loop в Swiper важно, чтобы реальных слайдов было заметно больше,
+ // чем помещается в видимой области. Иначе Swiper отключает loop на широких экранах.
+ const minSlidesForLoop = 24;
+ const repeatCount = Math.max(1, Math.ceil(minSlidesForLoop / slides.length));
+ let html = '';
+
+ for (let i = 0; i < repeatCount; i += 1) {
+ slides.forEach(function (slide) {
+ html += slide.html;
+ });
+ }
+
+ return html;
+ };
+
+ const initSlider = function () {
+ const slidesCount = $wrapper.children('.swiper-slide').length;
+ const loopEnabled = slidesCount > 1;
+
+ expertiseSwiper = new Swiper($slider[0], {
+ slidesPerView: 'auto',
+ spaceBetween: 16,
+ speed: 650,
+ grabCursor: true,
+ allowTouchMove: true,
+ watchOverflow: false,
+ loop: loopEnabled,
+ loopedSlides: Math.min(12, slidesCount),
+ loopAdditionalSlides: Math.min(12, slidesCount),
+ loopPreventsSliding: false,
+ normalizeSlideIndex: true,
+ observer: true,
+ observeParents: true,
+ breakpoints: {
+ 768: {
+ spaceBetween: 24,
+ },
+ 1200: {
+ spaceBetween: 32,
+ },
+ },
+ });
+ };
+
+ const renderSlides = function (filter) {
+ const slides = getSlidesByFilter(filter);
+
+ if (!slides.length) {
+ return;
+ }
+
+ destroySlider();
+ $wrapper.html(getLoopSlidesHtml(slides));
+ initSlider();
+ };
+
+ const setActiveFilter = function (filter) {
+ if (activeFilter === filter || !getSlidesByFilter(filter).length) {
+ return;
+ }
+
+ activeFilter = filter;
+ updateTabs(filter);
+ renderSlides(filter);
+ };
+
+ const initialFilter = $tabs.filter('.is-active').first().data('expertise-filter')
+ || $tabs.first().data('expertise-filter');
+
+ setActiveFilter(initialFilter);
+
+ $tabs.on('click', function () {
+ setActiveFilter($(this).data('expertise-filter'));
+ });
+ });
+})(jQuery);
+
+
+(function ($) {
+ 'use strict';
+
+ $(function () {
+ const $results = $('.results');
+
+ if (!$results.length) {
+ return;
+ }
+
+ $results.addClass('is-animation-ready');
+
+ const showResults = function (target) {
+ $(target).addClass('is-in-view');
+ };
+
+ if (!('IntersectionObserver' in window)) {
+ $results.each(function () {
+ showResults(this);
+ });
+
+ return;
+ }
+
+ const observer = new IntersectionObserver(function (entries, currentObserver) {
+ entries.forEach(function (entry) {
+ if (!entry.isIntersecting) {
+ return;
+ }
+
+ showResults(entry.target);
+ currentObserver.unobserve(entry.target);
+ });
+ }, {
+ threshold: 0.24,
+ rootMargin: '0px 0px -12% 0px',
+ });
+
+ $results.each(function () {
+ observer.observe(this);
+ });
+ });
+})(jQuery);
+
+(function ($) {
+ 'use strict';
+
+ $(function () {
+ const $faq = $('.faq');
+
+ if (!$faq.length) {
+ return;
+ }
+
+ $faq.on('click', '.faq-item__button', function () {
+ const $button = $(this);
+ const $item = $button.closest('.faq-item');
+ const $panel = $item.find('.faq-item__panel').first();
+ const isOpen = $button.attr('aria-expanded') === 'true';
+
+ $button.attr('aria-expanded', String(!isOpen));
+
+ if (isOpen) {
+ $panel.stop(true, true).slideUp(220, function () {
+ $panel.attr('hidden', true).removeAttr('style');
+ });
+ } else {
+ $panel.removeAttr('hidden').hide().stop(true, true).slideDown(220, function () {
+ $panel.removeAttr('style');
+ });
+ }
+ });
+ });
+})(jQuery);
+
+
+(function ($) {
+ 'use strict';
+
+ $(function () {
+ const $forms = $('.contact-sentence');
+
+ if (!$forms.length) {
+ return;
+ }
+
+ const options = {
+ task: ['лендинг', 'интернет-магазин', 'интеграцию', 'дизайн', 'доработку сайта'],
+ method: ['Telegram', 'WhatsApp', 'звонок', 'email'],
+ time: ['09:00–12:00', '12:00–15:00', '15:00–18:00', 'любое время'],
+ };
+
+ let $dateInput = $('.contact-date-input');
+
+ if (!$dateInput.length) {
+ $dateInput = $(' ').appendTo('body');
+ }
+
+ const cleanValue = function ($field) {
+ const text = $.trim($field.text()).replace(/\s+/g, ' ');
+ const placeholder = $.trim($field.data('placeholder') || '');
+ const normalized = text.replace(/[()]/g, '').replace(/▾/g, '').trim();
+
+ if ($field.hasClass('is-placeholder') || normalized === placeholder) {
+ return '';
+ }
+
+ return normalized;
+ };
+
+ const getPlaceholderText = function ($field) {
+ const placeholder = $.trim($field.data('placeholder') || '');
+ const withArrow = $field.hasClass('contact-field--selector');
+
+ return '(' + placeholder + (withArrow ? ' ▾' : '') + ')';
+ };
+
+ const setFieldValue = function ($field, value, isPlaceholder) {
+ const text = isPlaceholder ? getPlaceholderText($field) : value;
+
+ $field
+ .text(text)
+ .toggleClass('is-placeholder', !!isPlaceholder)
+ .toggleClass('is-filled', !isPlaceholder && !!value)
+ .removeClass('is-error');
+
+ updateHidden($field.closest('form'));
+ };
+
+ const updateHidden = function ($form) {
+ $form.find('.contact-field').each(function () {
+ const $field = $(this);
+ const name = $field.data('field');
+
+ if (!name) {
+ return;
+ }
+
+ $form.find('input[name="' + name + '"]').val(cleanValue($field));
+ });
+ };
+
+ const selectAll = function (el) {
+ const range = document.createRange();
+ const selection = window.getSelection();
+
+ range.selectNodeContents(el);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ };
+
+ const setCaretEnd = function (el) {
+ const range = document.createRange();
+ const selection = window.getSelection();
+
+ range.selectNodeContents(el);
+ range.collapse(false);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ };
+
+ const formatPhone = function (value) {
+ const raw = String(value || '').replace(/\s+/g, '');
+ const hasPlus = raw.indexOf('+') === 0;
+ const digits = raw.replace(/\D/g, '').slice(0, 11);
+
+ if (!digits) {
+ return hasPlus ? '+' : '';
+ }
+
+ let formatted = hasPlus || digits.charAt(0) === '7' ? '+' : '';
+
+ formatted += digits.slice(0, 1);
+
+ if (digits.length > 1) {
+ formatted += ' ' + digits.slice(1, 4);
+ }
+
+ if (digits.length > 4) {
+ formatted += ' ' + digits.slice(4, 7);
+ }
+
+ if (digits.length > 7) {
+ formatted += ' ' + digits.slice(7, 9);
+ }
+
+ if (digits.length > 9) {
+ formatted += ' ' + digits.slice(9, 11);
+ }
+
+ return formatted;
+ };
+
+ const openDropdown = function ($field) {
+ const type = $field.data('type');
+ const values = options[type] || [];
+
+ if (!values.length) {
+ return;
+ }
+
+ $('.contact-dropdown').remove();
+
+ const rect = $field[0].getBoundingClientRect();
+ const $dropdown = $('
');
+
+ values.forEach(function (value) {
+ $(' ').text(value).appendTo($dropdown);
+ });
+
+ $('body').append($dropdown);
+
+ const left = Math.min(rect.left + window.pageXOffset - 10, window.pageXOffset + window.innerWidth - $dropdown.outerWidth() - 12);
+
+ $dropdown.css({
+ top: rect.bottom + window.pageYOffset + 8,
+ left: Math.max(12, left),
+ });
+
+ $dropdown.on('click', 'li', function () {
+ setFieldValue($field, $(this).text(), false);
+ $dropdown.remove();
+ });
+ };
+
+ const openDatePicker = function ($field) {
+ const rect = $field[0].getBoundingClientRect();
+ const picker = $dateInput[0];
+
+ $dateInput
+ .val('')
+ .css({
+ left: rect.left + 'px',
+ top: rect.top + 'px',
+ width: Math.max(rect.width, 24) + 'px',
+ height: Math.max(rect.height, 24) + 'px',
+ })
+ .off('change.contact')
+ .one('change.contact', function () {
+ if (this.value) {
+ setFieldValue($field, this.value, false);
+ }
+ });
+
+ requestAnimationFrame(function () {
+ try {
+ if (typeof picker.showPicker === 'function') {
+ picker.showPicker();
+ } else {
+ picker.focus();
+ picker.click();
+ }
+ } catch (error) {
+ picker.focus();
+ picker.click();
+ }
+ });
+ };
+
+ const isEmail = function (value) {
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
+ };
+
+ const validateForm = function ($form) {
+ let valid = true;
+ let $firstError = null;
+
+ const markError = function ($field) {
+ valid = false;
+ $field.addClass('is-error');
+
+ if (!$firstError) {
+ $firstError = $field;
+ }
+ };
+
+ $form.find('.contact-field').removeClass('is-error');
+
+ const required = ['name', 'task', 'phone', 'email', 'method', 'date', 'time'];
+
+ required.forEach(function (name) {
+ const $field = $form.find('.contact-field[data-field="' + name + '"]');
+ const value = cleanValue($field);
+
+ if (!value) {
+ markError($field);
+ }
+ });
+
+ const $name = $form.find('.contact-field[data-field="name"]');
+ const $phone = $form.find('.contact-field[data-field="phone"]');
+ const $email = $form.find('.contact-field[data-field="email"]');
+ const name = cleanValue($name);
+ const phone = cleanValue($phone);
+ const email = cleanValue($email);
+
+ if (name && name.length < 2) {
+ markError($name);
+ }
+
+ if (phone && phone.replace(/\D/g, '').length < 10) {
+ markError($phone);
+ }
+
+ if (email && !isEmail(email)) {
+ markError($email);
+ }
+
+ if (!valid && $firstError) {
+ $form.find('.contact-sentence__status')
+ .removeClass('is-success')
+ .text('Заполните подсвеченные поля.');
+ $('html, body').animate({ scrollTop: $firstError.offset().top - 120 }, 260);
+ }
+
+ return valid;
+ };
+
+ $forms.each(function () {
+ updateHidden($(this));
+ });
+
+ $(document).on('click keydown', '.contact-field--editable', function (event) {
+ const $field = $(this);
+
+ if ($field.attr('contenteditable')) {
+ return;
+ }
+
+ if (event.type === 'keydown' && event.key !== 'Enter' && event.key !== ' ') {
+ return;
+ }
+
+ event.preventDefault();
+
+ const value = cleanValue($field);
+
+ $field.attr('contenteditable', 'true');
+ $field.text(value);
+ $field.removeClass('is-placeholder is-error');
+ $field.focus();
+ selectAll($field[0]);
+ });
+
+ $(document).on('input', '.contact-field--editable', function () {
+ const $field = $(this);
+
+ if ($field.data('type') === 'phone') {
+ $field.text(formatPhone($field.text()));
+ setCaretEnd(this);
+ }
+
+ updateHidden($field.closest('form'));
+ });
+
+ $(document).on('paste', '.contact-field--editable[data-type="phone"]', function (event) {
+ event.preventDefault();
+
+ const clipboard = event.originalEvent.clipboardData || window.clipboardData;
+ const text = clipboard ? clipboard.getData('text') : '';
+
+ $(this).text(formatPhone(text));
+ setCaretEnd(this);
+ updateHidden($(this).closest('form'));
+ });
+
+ $(document).on('blur keydown', '.contact-field--editable[contenteditable="true"]', function (event) {
+ if (event.type === 'keydown' && event.key !== 'Enter') {
+ return;
+ }
+
+ event.preventDefault();
+
+ const $field = $(this);
+ const value = $.trim($field.text()).replace(/\s+/g, ' ');
+
+ $field.removeAttr('contenteditable');
+
+ if (!value) {
+ setFieldValue($field, '', true);
+ } else {
+ setFieldValue($field, value, false);
+ }
+ });
+
+ $(document).on('click keydown', '.contact-field--selector', function (event) {
+ if (event.type === 'keydown' && event.key !== 'Enter' && event.key !== ' ') {
+ return;
+ }
+
+ event.preventDefault();
+ event.stopPropagation();
+
+ const $field = $(this);
+
+ if ($field.data('type') === 'date') {
+ openDatePicker($field);
+ } else {
+ openDropdown($field);
+ }
+ });
+
+ $(document).on('click', function () {
+ $('.contact-dropdown').remove();
+ });
+
+ $forms.on('submit', function (event) {
+ event.preventDefault();
+
+ const $form = $(this);
+ const $status = $form.find('.contact-sentence__status');
+
+ updateHidden($form);
+
+ if (!validateForm($form)) {
+ return;
+ }
+
+ const payload = Object.fromEntries(new FormData($form[0]).entries());
+
+ console.log('Contact form payload:', payload);
+
+ $status
+ .addClass('is-success')
+ .text('Заявка подготовлена. Подключите обработчик отправки формы.');
+ });
+ });
+})(jQuery);
diff --git a/assets/scss/_base.scss b/assets/scss/_base.scss
new file mode 100644
index 0000000..a690452
--- /dev/null
+++ b/assets/scss/_base.scss
@@ -0,0 +1,150 @@
+@use "vars" as *;
+@use "mixins" as *;
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
+body {
+ min-width: 320px;
+ margin: 0;
+ font-family: $font-main;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.4;
+ color: $color-black;
+ background: $color-white;
+ text-rendering: geometricPrecision;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+button,
+a {
+ -webkit-tap-highlight-color: transparent;
+}
+
+img,
+svg {
+ display: block;
+ max-width: 100%;
+}
+
+.container {
+ width: min($container-width, calc(100% - 32px));
+ margin-inline: auto;
+}
+
+.btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 46px;
+ padding: 0 26px;
+ border: 1px solid transparent;
+ border-radius: $radius-pill;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 1;
+ white-space: nowrap;
+ transition: transform $transition-fast, border-color $transition-fast, background-color $transition-fast, color $transition-fast;
+
+ @include hover-supported {
+ transform: translateY(-2px);
+ }
+
+ &--dark {
+ min-width: 172px;
+ gap: 12px;
+ color: $color-white;
+ background: $color-black;
+ box-shadow: 0 18px 38px rgba($color-black, 0.12);
+ }
+
+ &--light {
+ min-width: 150px;
+ color: $color-btn-light-text;
+ background: rgba($color-white, 0.78);
+ border-color: rgba($color-black, 0.14);
+ }
+}
+
+.site-header {
+ position: fixed;
+ top: 14px;
+ left: 50%;
+ z-index: 20;
+ width: min(505px, calc(100% - 32px));
+ transform: translateX(-50%);
+
+ &__inner {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ min-height: 50px;
+ padding: 0 20px;
+ border: 1px solid rgba($color-black, 0.06);
+ border-radius: $radius-pill;
+ background: rgba(248, 248, 248, 0.86);
+ backdrop-filter: blur(16px);
+ }
+
+ &__logo {
+ flex: 0 0 auto;
+
+ img {
+ width: 100px;
+ height: auto;
+ }
+ }
+
+ &__nav {
+ display: flex;
+ align-items: center;
+ gap: 22px;
+ color: $color-header-text;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1;
+
+ a {
+ transition: color $transition-fast;
+
+ @include hover-supported {
+ color: $color-black;
+ }
+ }
+ }
+}
+
+@include media-down($bp-mobile) {
+ .site-header {
+ top: 10px;
+ width: calc(100% - 20px);
+
+ &__inner {
+ min-height: 46px;
+ padding: 0 16px;
+ }
+
+ &__logo img {
+ width: 92px;
+ }
+
+ &__nav {
+ gap: 12px;
+ font-size: 11px;
+ }
+ }
+}
diff --git a/assets/scss/_fonts.scss b/assets/scss/_fonts.scss
new file mode 100644
index 0000000..058f5c4
--- /dev/null
+++ b/assets/scss/_fonts.scss
@@ -0,0 +1 @@
+/* Nunito Sans is connected in index.html via Google Fonts. */
diff --git a/assets/scss/_mixins.scss b/assets/scss/_mixins.scss
new file mode 100644
index 0000000..5795a7f
--- /dev/null
+++ b/assets/scss/_mixins.scss
@@ -0,0 +1,13 @@
+@mixin hover-supported {
+ @media (hover: hover) and (pointer: fine) {
+ &:hover {
+ @content;
+ }
+ }
+}
+
+@mixin media-down($width) {
+ @media (max-width: $width) {
+ @content;
+ }
+}
\ No newline at end of file
diff --git a/assets/scss/_reset.scss b/assets/scss/_reset.scss
new file mode 100644
index 0000000..0bd81cf
--- /dev/null
+++ b/assets/scss/_reset.scss
@@ -0,0 +1,134 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+ display: block;
+}
+
+body {
+ line-height: 1;
+}
+
+ol,
+ul {
+ list-style: none;
+}
+
+blockquote,
+q {
+ quotes: none;
+}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+ content: '';
+ content: none;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
\ No newline at end of file
diff --git a/assets/scss/_vars.scss b/assets/scss/_vars.scss
new file mode 100644
index 0000000..4cb3a25
--- /dev/null
+++ b/assets/scss/_vars.scss
@@ -0,0 +1,29 @@
+$font-main: "Nunito Sans", "Segoe UI", Arial, sans-serif;
+
+$color-black: #111111;
+$color-dark: #333333;
+$color-gray: #C2C2C2;
+$color-light-gray: #c9c9cc;
+$color-border: rgba(15, 15, 16, 0.12);
+$color-white: #ffffff;
+$color-accent: #C7FF4F;
+$color-red: #ff1d25;
+$color-page-start: #fbfff4;
+$color-muted-text: #888888;
+$color-muted-text-soft: #828286;
+$color-header-text: #6f6f73;
+$color-badge-text: #3b3b3e;
+$color-btn-light-text: #202023;
+$color-launch-bg: #0b0b0c;
+$color-section-gray: #f2f2f2;
+
+$container-width: 1200px;
+$radius-pill: 999px;
+$radius-card: 11px;
+
+$bp-desktop-md: 1120px;
+$bp-tablet: 760px;
+$bp-mobile: 520px;
+$bp-mobile-sm: 420px;
+
+$transition-fast: 0.2s ease;
diff --git a/assets/scss/main.scss b/assets/scss/main.scss
new file mode 100644
index 0000000..8e0c28d
--- /dev/null
+++ b/assets/scss/main.scss
@@ -0,0 +1,2964 @@
+@use "fonts";
+@use "reset";
+@use "vars" as *;
+@use "mixins" as *;
+@use "base";
+
+.page--landing {
+ min-height: 100vh;
+ overflow: hidden;
+ background: #fff;
+}
+
+.hero {
+ position: relative;
+ height: 100vh;
+ max-height: 900px;
+ overflow: hidden;
+ border-bottom: 1px solid rgba($color-black, 0.05);
+
+ &::after {
+ content: "";
+ position: absolute;
+ right: -155px;
+ bottom: 36px;
+ width: 560px;
+ height: 260px;
+ border-radius: 50%;
+ background: rgba($color-black, 0.05);
+ filter: blur(56px);
+ pointer-events: none;
+ }
+
+ &::before {
+ content: "";
+ position: absolute;
+ left: -155px;
+ top: -156px;
+ width: 560px;
+ height: 260px;
+ border-radius: 50%;
+ background: rgba($color-accent, 0.1);
+ filter: blur(56px);
+ pointer-events: none;
+ }
+
+
+ &__container {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ &__content {
+ position: relative;
+ z-index: 2;
+ width: min(850px, 100%);
+ margin-inline: auto;
+ text-align: center;
+ }
+
+ &__badge {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ min-height: 34px;
+ padding: 0 20px;
+ border: 1px solid rgba($color-black, 0.13);
+ border-radius: $radius-pill;
+ color: $color-black;
+ background: rgba($color-white, 0.82);
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1;
+
+ span {
+ position: relative;
+ width: 10px;
+ height: 10px;
+ flex: 0 0 auto;
+ color: $color-dark;
+ }
+ }
+
+ &__title {
+ margin-top: 36px;
+ color: $color-dark;
+ font-size: 82px;
+ font-weight: 700;
+ line-height: 0.95;
+ letter-spacing: -0.058em;
+
+ span {
+ color: $color-light-gray;
+ }
+ }
+
+ &__text {
+ margin: 36px auto 0;
+ color: $color-muted-text;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.24;
+ letter-spacing: 0.002em;
+ }
+
+ &__actions {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 16px;
+ margin-top: 36px;
+
+ .btn{
+ font-size: 16px;
+ }
+ }
+
+ &__tags {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ gap: 15px 34px;
+ margin-top: 36px;
+ color: $color-muted-text;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 1.2;
+
+ li {
+ position: relative;
+ padding-left: 15px;
+
+ &::before {
+ content: "";
+ position: absolute;
+ top: 50%;
+ left: 0;
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: $color-accent;
+ transform: translateY(-50%);
+ }
+ }
+ }
+}
+
+.hero-card {
+ position: absolute;
+ z-index: 3;
+ border: 1px solid $color-border;
+ border-radius: $radius-card;
+ backdrop-filter: blur(12px);
+
+ &--conversion {
+ bottom: calc(50% - 190px);
+ left: calc(50% - 462px);
+ display: flex;
+ align-items: center;
+ gap: 14px;
+ width: 146px;
+ min-height: 84px;
+ padding: 17px 18px;
+ background: rgba($color-white, 0.84);
+ box-shadow: 0 17px 26px rgba($color-black, 0.18);
+
+ .hero-card__icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 38px;
+ height: 38px;
+ flex: 0 0 38px;
+ border-radius: 50%;
+ background: $color-accent;
+
+ img {
+ width: 20px;
+ height: 20px;
+ }
+ }
+
+ span {
+ display: block;
+ margin-bottom: 1px;
+ color: $color-muted-text;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.2;
+ }
+
+ strong {
+ display: block;
+ color: #141416;
+ font-size: 24px;
+ font-weight: 700;
+ line-height: 1;
+ letter-spacing: -0.04em;
+ }
+ }
+
+ &--launch {
+ left: calc(50% + 380px);
+ width: fit-content;
+ min-height: 70px;
+ padding: 14px 20px;
+ color: $color-white;
+ background: $color-launch-bg;
+ border-color: rgba($color-white, 0.04);
+ box-shadow: 0 20px 35px rgba($color-black, 0.25);
+
+ span,
+ strong {
+ display: block;
+ }
+
+ span {
+ font-size: 18px;
+ font-weight: 600;
+ line-height: 1.05;
+ }
+
+ strong {
+ margin-top: 5px;
+ color: $color-accent;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1;
+ }
+ }
+}
+
+
+@include media-down($bp-desktop-md) {
+ .hero {
+ max-height: 860px;
+
+ &__title {
+ font-size: clamp(62px, 7.2vw, 78px);
+ }
+
+ &__text {
+ max-width: 620px;
+ }
+ }
+
+ .hero-card {
+ &--conversion {
+ left: max(24px, calc(50% - 410px));
+ bottom: calc(50% - 176px);
+ }
+
+ &--launch {
+ left: auto;
+ right: max(24px, calc(50% - 500px));
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .hero {
+ height: auto;
+ min-height: 100svh;
+ max-height: none;
+ padding: 104px 0 56px;
+
+ &::before {
+ left: -250px;
+ top: -110px;
+ width: 440px;
+ height: 250px;
+ filter: blur(48px);
+ }
+
+ &::after {
+ right: -250px;
+ bottom: -24px;
+ width: 460px;
+ height: 260px;
+ filter: blur(50px);
+ }
+
+ &__container {
+ height: auto;
+ min-height: calc(100svh - 160px);
+ flex-direction: column;
+ justify-content: center;
+ }
+
+ &__content {
+ width: min(620px, 100%);
+ }
+
+ &__badge {
+ min-height: 32px;
+ padding: 0 16px;
+ font-size: 13px;
+ }
+
+ &__title {
+ margin-top: 26px;
+ font-size: clamp(46px, 10.2vw, 64px);
+ line-height: 0.98;
+ letter-spacing: -0.055em;
+ text-wrap: balance;
+ }
+
+ &__text {
+ max-width: 520px;
+ margin-top: 24px;
+ font-size: 15px;
+ line-height: 1.36;
+ }
+
+ &__actions {
+ flex-wrap: wrap;
+ gap: 12px;
+ margin-top: 28px;
+
+ .btn {
+ min-width: 160px;
+ min-height: 46px;
+ font-size: 15px;
+ }
+ }
+
+ &__tags {
+ gap: 11px 22px;
+ margin-top: 28px;
+ font-size: 13px;
+ }
+ }
+
+ .hero-card {
+ position: relative;
+ inset: auto;
+
+ &--conversion {
+ left: auto;
+ bottom: auto;
+ width: 146px;
+ min-height: 76px;
+ margin-top: 34px;
+ padding: 14px 16px;
+ transform: translateX(-72px);
+ box-shadow: 0 14px 24px rgba($color-black, 0.14);
+
+ .hero-card__icon {
+ width: 34px;
+ height: 34px;
+ flex-basis: 34px;
+
+ img {
+ width: 18px;
+ height: 18px;
+ }
+ }
+
+ span {
+ font-size: 13px;
+ }
+
+ strong {
+ font-size: 22px;
+ }
+ }
+
+ &--launch {
+ left: auto;
+ right: auto;
+ min-height: 64px;
+ margin-top: -18px;
+ padding: 12px 18px;
+ transform: translateX(76px);
+ box-shadow: 0 16px 28px rgba($color-black, 0.2);
+
+ span {
+ font-size: 16px;
+ }
+
+ strong {
+ font-size: 15px;
+ }
+ }
+ }
+}
+
+@include media-down($bp-mobile) {
+ .hero {
+ min-height: 100svh;
+ padding: 92px 0 44px;
+
+ &__container {
+ width: calc(100% - 24px);
+ min-height: calc(100svh - 136px);
+ }
+
+ &__badge {
+ min-height: 30px;
+ padding: 0 14px;
+ font-size: 12px;
+ }
+
+ &__title {
+ margin-top: 22px;
+ font-size: clamp(37px, 11.5vw, 50px);
+ line-height: 1;
+ letter-spacing: -0.05em;
+ }
+
+ &__text {
+ margin-top: 20px;
+ font-size: 14px;
+ line-height: 1.42;
+ }
+
+ &__actions {
+ width: min(100%, 330px);
+ margin: 26px auto 0;
+ flex-direction: column;
+ gap: 10px;
+
+ .btn {
+ width: 100%;
+ min-width: 0;
+ min-height: 48px;
+ }
+ }
+
+ &__tags {
+ width: min(100%, 330px);
+ margin: 24px auto 0;
+ justify-content: flex-start;
+ gap: 10px 18px;
+ font-size: 12px;
+
+ li {
+ padding-left: 13px;
+ }
+ }
+ }
+
+ .hero-card {
+ &--conversion {
+ margin-top: 28px;
+ transform: translateX(-48px);
+ }
+
+ &--launch {
+ transform: translateX(48px);
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .hero {
+ padding: 86px 0 38px;
+
+ &__container {
+ width: calc(100% - 22px);
+ min-height: calc(100svh - 124px);
+ }
+
+ &__title {
+ font-size: clamp(34px, 9.6vw, 38px);
+ letter-spacing: -0.044em;
+ }
+
+ &__tags {
+ justify-content: center;
+ }
+ }
+
+ .hero-card {
+ &--conversion,
+ &--launch {
+ transform: none;
+ }
+
+ &--conversion {
+ margin-top: 24px;
+ }
+
+ &--launch {
+ margin-top: 10px;
+ }
+ }
+}
+.results {
+ position: relative;
+ min-height: 100vh;
+ overflow: hidden;
+
+ &__container {
+ position: relative;
+ height: 100vh;
+ min-height: 680px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ &__content {
+ position: relative;
+ z-index: 2;
+ width: min(1120px, 100%);
+ text-align: center;
+ }
+
+ &__label {
+ margin-bottom: 14px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 700;
+ line-height: 1.1;
+ }
+
+ &__slider {
+ width: min(1120px, 100%);
+ margin-inline: auto;
+ position: relative;
+ height: 190px;
+ overflow: visible;
+ }
+
+ &__track {
+ position: relative;
+ height: 100%;
+ }
+
+ &__slide {
+ position: absolute;
+ inset: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 100%;
+ visibility: hidden;
+ pointer-events: none;
+ transition: opacity 0.35s ease;
+
+ &.is-active {
+ opacity: 1;
+ visibility: visible;
+ pointer-events: auto;
+ }
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(40px, 4.6vw, 72px);
+ font-weight: 700;
+ line-height: 1.03;
+ letter-spacing: -0.02em;
+ transform: translateY(26px);
+ transition: opacity 0.45s ease, transform 0.55s ease;
+ }
+
+ &__slide.is-active .results__title {
+ opacity: 1;
+ transform: translateY(0);
+ }
+
+ &__dots {
+ margin-top: 28px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 10px;
+
+ span {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: rgba($color-black, 0.22);
+ transition: width 0.3s ease, background-color 0.3s ease;
+
+ &.is-active {
+ width: 24px;
+ border-radius: 999px;
+ background: $color-dark;
+ }
+ }
+ }
+
+ &__icons {
+ position: absolute;
+ inset: 0;
+ pointer-events: none;
+ height: 200%;
+ transform: translateY(-23%);
+ }
+
+ &__icon {
+ position: absolute;
+ width: 45px;
+ height: 45px;
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--icon-bg, $color-white);
+ box-shadow: 0 10px 20px rgba($color-black, 0.07);
+ opacity: 1;
+ transform: scale(1) translateY(16px);
+ transition: transform 0.55s cubic-bezier(0.21, 1, 0.31, 1), opacity 0.45s ease;
+
+ &.is-visible {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+ }
+
+ img {
+ width: 32px;
+ height: 32px;
+ object-fit: contain;
+ }
+
+ &--yandex {
+ top: 16px;
+ left: 92px;
+ }
+
+ &--wordpress {
+ top: 84px;
+ left: 238px;
+ }
+
+ &--shopify {
+ top: 36px;
+ left: 540px;
+ }
+
+ &--aistudio {
+ top: 22px;
+ right: 240px;
+ }
+
+ &--bitrix {
+ top: 78px;
+ right: 86px;
+ }
+
+ &--cloudflare {
+ top: 154px;
+ right: 168px;
+ }
+
+ &--google {
+ right: 94px;
+ bottom: 128px;
+ }
+
+ &--openai {
+ right: 298px;
+ bottom: 34px;
+ }
+
+ &--tilda {
+ bottom: 58px;
+ left: 156px;
+ }
+
+ &--n8n {
+ bottom: 96px;
+ left: 388px;
+ }
+
+ &--vk {
+ left: 0;
+ top: 196px;
+ }
+ }
+
+ &.is-static {
+ .results__slider {
+ height: auto;
+ }
+
+ .results__track {
+ display: grid;
+ gap: 12px;
+ height: auto;
+ }
+
+ .results__slide {
+ position: relative;
+ inset: auto;
+ min-height: 0;
+ opacity: 1;
+ visibility: visible;
+ pointer-events: auto;
+ }
+
+ .results__title {
+ opacity: 1;
+ transform: none;
+ }
+
+ .results__icon {
+ opacity: 1;
+ transform: none;
+ }
+ }
+
+ &.is-animation-ready {
+ .results__label {
+ opacity: 0;
+ transform: translateY(14px);
+ will-change: opacity, transform;
+ }
+
+ .results__title {
+ opacity: 0;
+ transform: translateY(46px);
+ will-change: opacity, transform;
+ }
+
+ .results__icon {
+ opacity: 0;
+ transform: scale(0.86) translateY(36px) rotate(-4deg);
+ will-change: opacity, transform;
+ }
+ }
+
+ &.is-animation-ready.is-in-view {
+ .results__label {
+ animation: resultsFadeUp 0.65s cubic-bezier(0.21, 1, 0.31, 1) 0.1s forwards;
+ }
+
+ .results__title {
+ animation: resultsTitleIn 0.8s cubic-bezier(0.21, 1, 0.31, 1) 0.22s forwards;
+ }
+
+ .results__icon {
+ animation:
+ resultsIconIn 0.72s cubic-bezier(0.21, 1, 0.31, 1) var(--results-icon-delay, 0s) forwards,
+ resultsIconFloat 5.8s ease-in-out calc(var(--results-icon-delay, 0s) + 0.78s) infinite;
+ }
+
+ .results__icon:nth-child(1) {
+ --results-icon-delay: 0.04s;
+ --results-float-offset: -8px;
+ }
+
+ .results__icon:nth-child(2) {
+ --results-icon-delay: 0.1s;
+ --results-float-offset: 7px;
+ }
+
+ .results__icon:nth-child(3) {
+ --results-icon-delay: 0.16s;
+ --results-float-offset: -6px;
+ }
+
+ .results__icon:nth-child(4) {
+ --results-icon-delay: 0.22s;
+ --results-float-offset: 8px;
+ }
+
+ .results__icon:nth-child(5) {
+ --results-icon-delay: 0.28s;
+ --results-float-offset: -7px;
+ }
+
+ .results__icon:nth-child(6) {
+ --results-icon-delay: 0.34s;
+ --results-float-offset: 6px;
+ }
+
+ .results__icon:nth-child(7) {
+ --results-icon-delay: 0.4s;
+ --results-float-offset: -9px;
+ }
+
+ .results__icon:nth-child(8) {
+ --results-icon-delay: 0.46s;
+ --results-float-offset: 7px;
+ }
+
+ .results__icon:nth-child(9) {
+ --results-icon-delay: 0.52s;
+ --results-float-offset: -6px;
+ }
+
+ .results__icon:nth-child(10) {
+ --results-icon-delay: 0.58s;
+ --results-float-offset: 8px;
+ }
+
+ .results__icon:nth-child(11) {
+ --results-icon-delay: 0.64s;
+ --results-float-offset: -7px;
+ }
+ }
+}
+
+@keyframes resultsFadeUp {
+ from {
+ opacity: 0;
+ transform: translateY(14px);
+ }
+
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+@keyframes resultsTitleIn {
+ from {
+ opacity: 0;
+ transform: translateY(46px);
+ }
+
+ to {
+ opacity: 1;
+ transform: translateY(26px);
+ }
+}
+
+@keyframes resultsIconIn {
+ from {
+ opacity: 0;
+ transform: scale(0.86) translateY(36px) rotate(-4deg);
+ }
+
+ to {
+ opacity: 1;
+ transform: scale(1) translateY(16px) rotate(0deg);
+ }
+}
+
+@keyframes resultsIconFloat {
+ 0%, 100% {
+ opacity: 1;
+ transform: scale(1) translateY(16px) rotate(0deg);
+ }
+
+ 50% {
+ opacity: 1;
+ transform: scale(1) translateY(calc(16px + var(--results-float-offset, -8px))) rotate(1.2deg);
+ }
+}
+
+@keyframes resultsIconInMobile {
+ from {
+ opacity: 0;
+ transform: scale(0.9) translateY(18px) rotate(-3deg);
+ }
+
+ to {
+ opacity: 1;
+ transform: none;
+ }
+}
+
+@include media-down($bp-desktop-md) {
+ .results {
+ &__container {
+ min-height: 620px;
+ }
+
+ &__title {
+ font-size: clamp(34px, 5.1vw, 56px);
+ }
+
+ &__icon {
+ &--yandex {
+ left: 34px;
+ }
+
+ &--wordpress {
+ left: 150px;
+ }
+
+ &--shopify {
+ left: 410px;
+ }
+
+ &--aistudio {
+ right: 182px;
+ }
+
+ &--bitrix {
+ right: 40px;
+ }
+
+ &--cloudflare {
+ right: 124px;
+ }
+
+ &--google {
+ right: 52px;
+ }
+
+ &--openai {
+ right: 222px;
+ }
+
+ &--tilda {
+ left: 90px;
+ }
+
+ &--n8n {
+ left: 292px;
+ }
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .results {
+ min-height: unset;
+ padding: 74px 0 92px;
+
+ &__container {
+ height: auto;
+ min-height: unset;
+ display: block;
+ }
+
+ &__content {
+ max-width: 620px;
+ margin-inline: auto;
+ }
+
+ &__label {
+ margin-bottom: 12px;
+ font-size: clamp(20px, 4.2vw, 28px);
+ }
+
+ &__slide {
+ min-height: 132px;
+ }
+
+ &__title {
+ font-size: clamp(30px, 8.7vw, 44px);
+ line-height: 1.05;
+ }
+
+ &__dots {
+ margin-top: 16px;
+ }
+
+ &__icons {
+ position: static;
+ margin: 0 auto 36px;
+ width: min(420px, 100%);
+ display: grid;
+ grid-template-columns: repeat(4, 45px);
+ justify-content: center;
+ gap: 14px;
+ }
+
+ &__icon {
+ position: relative;
+ top: auto;
+ right: auto;
+ bottom: auto;
+ left: auto;
+ opacity: 1;
+ transform: none;
+ }
+
+ &.is-animation-ready.is-in-view {
+ .results__icon {
+ animation: resultsIconInMobile 0.62s cubic-bezier(0.21, 1, 0.31, 1) var(--results-icon-delay, 0s) forwards;
+ }
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .results {
+ padding: 62px 0 78px;
+
+ &__icons {
+ width: min(320px, 100%);
+ grid-template-columns: repeat(3, 45px);
+ gap: 12px;
+ margin-bottom: 28px;
+ }
+
+ &__slide {
+ min-height: 120px;
+ }
+
+ &__title {
+ font-size: clamp(28px, 9vw, 38px);
+ letter-spacing: -0.01em;
+ }
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .results.is-animation-ready {
+ .results__label {
+ opacity: 1;
+ transform: none;
+ animation: none !important;
+ will-change: auto;
+ }
+
+ .results__title {
+ opacity: 1;
+ transform: translateY(26px);
+ animation: none !important;
+ will-change: auto;
+ }
+
+ .results__icon {
+ opacity: 1;
+ transform: scale(1) translateY(16px);
+ animation: none !important;
+ will-change: auto;
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ @media (prefers-reduced-motion: reduce) {
+ .results.is-animation-ready {
+ .results__icon {
+ transform: none;
+ }
+ }
+ }
+}
+
+.expertise {
+ position: relative;
+ padding: 44px 0 40px;
+ overflow: hidden;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__header {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 448px;
+ gap: 80px;
+ align-items: start;
+ }
+
+ &__label {
+ margin: 0 0 2px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__text {
+ max-width: 448px;
+ margin: 22px 0 0;
+ color: $color-black;
+ font-size: 18px;
+ font-weight: 400;
+ line-height: 1.55;
+ letter-spacing: 0.005em;
+ }
+
+ &__tabs {
+ width: fit-content;
+ min-height: 39px;
+ display: flex;
+ align-items: center;
+ gap: 2px;
+ margin: 36px auto 0;
+ padding: 2px;
+ border-radius: $radius-pill;
+ background: $color-section-gray;
+ box-shadow: inset 0 0 0 1px rgba($color-black, 0.02);
+ }
+
+ &__tab {
+ min-height: 35px;
+ padding: 0 17px;
+ border: 0;
+ border-radius: $radius-pill;
+ color: #a6a6a8;
+ background: transparent;
+ font: inherit;
+ font-size: 13px;
+ font-weight: 600;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: pointer;
+ transition: color $transition-fast, background-color $transition-fast, box-shadow $transition-fast;
+
+ &.is-active {
+ color: $color-black;
+ background: $color-white;
+ box-shadow: 0 2px 7px rgba($color-black, 0.05);
+ }
+
+ @include hover-supported {
+ color: $color-black;
+ }
+ }
+
+ &__cases {
+ position: relative;
+ width: 100vw;
+ margin-top: 50px;
+ margin-inline: calc(50% - 50vw);
+ overflow: visible;
+ }
+
+ &__track {
+ display: flex;
+ align-items: stretch;
+ }
+}
+
+.expertise-card {
+ width: 300px;
+ min-height: 430px;
+ height: auto;
+ flex: 0 0 300px;
+ overflow: hidden;
+ border: 1px solid rgba($color-black, 0.16);
+ border-radius: 12px;
+ background: $color-white;
+
+ &__media {
+ height: 279px;
+ overflow: hidden;
+ background: $color-section-gray;
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+ }
+
+ &__body {
+ padding: 13px 10px 7px;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-black;
+ font-size: 24px;
+ font-weight: 800;
+ line-height: 1.15;
+ letter-spacing: -0.03em;
+ text-align: center;
+ }
+
+ &__list {
+ display: grid;
+ gap: 7px;
+ margin: 11px 0 0;
+ padding: 0 0 0 2px;
+ color: $color-header-text;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1.2;
+ list-style: none;
+
+ li {
+ position: relative;
+ padding-left: 19px;
+
+ &::before {
+ content: "";
+ position: absolute;
+ top: 0.5em;
+ left: 0;
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: $color-accent;
+ transform: translateY(-50%);
+ }
+ }
+ }
+
+ &__tags {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: nowrap;
+ gap: 9px;
+ margin: 16px 0 0;
+ padding: 0;
+ list-style: none;
+
+ li {
+ min-height: 27px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0 11px;
+ border: 1px solid rgba($color-black, 0.16);
+ border-radius: $radius-pill;
+ color: $color-black;
+ background: rgba($color-section-gray, 0.55);
+ font-size: 12px;
+ font-weight: 500;
+ line-height: 1;
+ white-space: nowrap;
+ }
+ }
+}
+
+@include media-down($bp-desktop-md) {
+ .expertise {
+ &__header {
+ grid-template-columns: minmax(0, 1fr) 390px;
+ gap: 48px;
+ }
+
+ &__track {
+ align-items: stretch;
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .expertise {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__header {
+ display: block;
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__text {
+ max-width: 100%;
+ margin-top: 20px;
+ font-size: 16px;
+ line-height: 1.45;
+ }
+
+ &__tabs {
+ width: 100%;
+ justify-content: flex-start;
+ margin-top: 28px;
+ overflow-x: auto;
+ scrollbar-width: none;
+
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ }
+
+ &__tab {
+ padding-inline: 15px;
+ }
+
+ &__cases {
+ margin-top: 32px;
+ overflow: visible;
+ }
+
+ &__track {
+ align-items: stretch;
+ }
+ }
+
+ .expertise-card {
+ width: 286px;
+ flex-basis: 286px;
+
+ &__media {
+ height: 266px;
+ }
+
+ &__title {
+ font-size: 23px;
+ }
+
+ &__list {
+ font-size: 13px;
+ }
+
+ &__tags {
+ gap: 6px;
+
+ li {
+ padding-inline: 9px;
+ }
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .expertise {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+
+ &__tabs {
+ min-height: 37px;
+ }
+
+ &__tab {
+ min-height: 33px;
+ padding-inline: 13px;
+ font-size: 12px;
+ }
+
+ &__track {
+ align-items: stretch;
+ }
+ }
+
+ .expertise-card {
+ width: 272px;
+ min-height: 420px;
+ flex-basis: 272px;
+
+ &__media {
+ height: 254px;
+ }
+
+ &__body {
+ padding-inline: 9px;
+ }
+
+ &__tags {
+ flex-wrap: wrap;
+ }
+ }
+}
+
+.process {
+ position: relative;
+ padding: 44px 0 100px;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__heading {
+ max-width: 1100px;
+ }
+
+ &__label {
+ margin: 0 0 2px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__grid {
+ width: min(1192px, 100%);
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 24px;
+ margin: 58px auto 0;
+ }
+}
+
+.process-card {
+ min-height: 190px;
+ padding: 16px 28px 20px;
+ border: 1px solid rgba($color-black, 0.16);
+ border-radius: 30px;
+ background: $color-white;
+
+ &__number {
+ display: block;
+ margin: 0 0 18px;
+ color: #f4f3f0;
+ font-size: 60px;
+ font-weight: 900;
+ line-height: 0.96;
+ letter-spacing: -0.055em;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-black;
+ font-size: 20px;
+ font-weight: 800;
+ line-height: 1.2;
+ letter-spacing: -0.02em;
+ }
+
+ &__text {
+ max-width: 310px;
+ margin: 12px 0 0;
+ color: $color-header-text;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.75;
+ letter-spacing: -0.01em;
+ }
+}
+
+@include media-down($bp-desktop-md) {
+ .process {
+ &__grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .process {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__grid {
+ grid-template-columns: 1fr;
+ gap: 16px;
+ margin-top: 32px;
+ }
+ }
+
+ .process-card {
+ min-height: 172px;
+ padding: 16px 24px 20px;
+ border-radius: 24px;
+
+ &__number {
+ margin-bottom: 16px;
+ font-size: 54px;
+ }
+
+ &__text {
+ max-width: 100%;
+ font-size: 14px;
+ line-height: 1.6;
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .process {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+ }
+
+ .process-card {
+ min-height: 166px;
+ padding: 15px 20px 19px;
+ border-radius: 22px;
+
+ &__number {
+ font-size: 50px;
+ }
+
+ &__title {
+ font-size: 19px;
+ }
+ }
+}
+
+
+.technologies {
+ position: relative;
+ padding: 44px 0 66px;
+ overflow: hidden;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__label {
+ margin: 0 0 2px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__marquee {
+ width: 100vw;
+ display: grid;
+ gap: 32px;
+ margin-top: 60px;
+ margin-inline: calc(50% - 50vw);
+ }
+
+ &__row {
+ width: 100%;
+ overflow: hidden;
+ }
+
+ &__track {
+ width: max-content;
+ display: flex;
+ align-items: center;
+ will-change: transform;
+
+ &--left {
+ animation: technologies-marquee-left 38s linear infinite;
+ }
+
+ &--right {
+ animation: technologies-marquee-right 42s linear infinite;
+ }
+ }
+
+ &__row--top &__track {
+ margin-left: -82px;
+ }
+
+ &__row--bottom &__track {
+ margin-left: 10px;
+ }
+
+ &__group {
+ display: flex;
+ align-items: center;
+ gap: 41px;
+ padding-right: 41px;
+ flex: 0 0 auto;
+ }
+
+ @media (prefers-reduced-motion: reduce) {
+ &__track {
+ animation: none;
+ }
+ }
+}
+
+.technology-item {
+ display: inline-flex;
+ align-items: center;
+ gap: 11px;
+ flex: 0 0 auto;
+ color: $color-black;
+ font-size: 22px;
+ font-weight: 500;
+ line-height: 1;
+ letter-spacing: -0.03em;
+ white-space: nowrap;
+
+ &__icon {
+ width: 44px;
+ height: 44px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ flex: 0 0 44px;
+ border-radius: 7px;
+ background: $color-section-gray;
+ overflow: hidden;
+
+ img {
+ display: block;
+ width: 32px;
+ height: 32px;
+ object-fit: contain;
+ }
+
+ &--wordpress {
+ background: #057da3;
+ }
+
+ &--n8n {
+ background: #e83e73;
+ }
+
+ &--bitrix {
+ background: #42b9ea;
+
+ img {
+ width: 32px;
+ height: auto;
+ }
+ }
+
+ &--react {
+ background: #1f1f1f;
+ }
+
+ &--nuxt,
+ &--woo,
+ &--docker,
+ &--vue {
+ background: $color-section-gray;
+ }
+
+ &--modx {
+ background: #f4f4f4;
+ }
+
+ &--php {
+ background: #535f99;
+ }
+
+ &--git {
+ background: #fb5036;
+ }
+
+ &--mysql {
+ background: #ed8a00;
+ }
+
+ &--tilda {
+ background: #ff5b3a;
+ }
+ }
+}
+
+@keyframes technologies-marquee-left {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ }
+
+ 100% {
+ transform: translate3d(-50%, 0, 0);
+ }
+}
+
+@keyframes technologies-marquee-right {
+ 0% {
+ transform: translate3d(-50%, 0, 0);
+ }
+
+ 100% {
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@include media-down($bp-tablet) {
+ .technologies {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__marquee {
+ gap: 22px;
+ margin-top: 38px;
+ }
+
+ &__group {
+ gap: 28px;
+ padding-right: 28px;
+ }
+
+ &__row--top &__track {
+ margin-left: -54px;
+ }
+
+ &__row--bottom &__track {
+ margin-left: 12px;
+ }
+ }
+
+ .technology-item {
+ gap: 9px;
+ font-size: 18px;
+
+ &__icon {
+ width: 38px;
+ height: 38px;
+ flex-basis: 38px;
+ border-radius: 7px;
+
+ img {
+ width: 28px;
+ height: 28px;
+ }
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .technologies {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+
+ &__marquee {
+ gap: 18px;
+ margin-top: 34px;
+ }
+
+ &__group {
+ gap: 22px;
+ padding-right: 22px;
+ }
+ }
+
+ .technology-item {
+ font-size: 16px;
+
+ &__icon {
+ width: 34px;
+ height: 34px;
+ flex-basis: 34px;
+
+ img {
+ width: 25px;
+ height: 25px;
+ }
+ }
+ }
+}
+
+.turnkey {
+ position: relative;
+ padding: 40px 0 20px;
+ background: $color-white;
+
+ &__container {
+ width: min(1194px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__card {
+ min-height: 590px;
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 520px;
+ gap: 84px;
+ padding: 48px 48px 50px;
+ border: 1px solid rgba($color-black, 0.16);
+ border-radius: 30px;
+ background: $color-white;
+ }
+
+ &__content {
+ max-width: 475px;
+ }
+
+ &__label {
+ margin: 0 0 13px;
+ color: #929292;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 1.2;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-black;
+ font-size: clamp(34px, 2.5vw, 38px);
+ font-weight: 700;
+ line-height: 1.02;
+ letter-spacing: -0.035em;
+ }
+
+ &__text {
+ margin: 27px 0 0;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.45;
+ letter-spacing: -0.01em;
+ }
+
+ &__button {
+ min-width: 244px;
+ min-height: 54px;
+ margin-top: 34px;
+ padding-inline: 30px;
+ font-size: 16px;
+ }
+
+ &__list {
+ align-self: start;
+ display: grid;
+ gap: 14px;
+ margin: 0;
+ padding: 0;
+ color: $color-black;
+ font-size: 16px;
+ font-weight: 500;
+ line-height: 1.38;
+ letter-spacing: -0.01em;
+ list-style: none;
+ }
+
+ &__list li {
+ position: relative;
+ min-height: 20px;
+ padding-left: 32px;
+
+ &::before {
+ content: "";
+ position: absolute;
+ top: 0.64em;
+ left: 0;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: $color-accent;
+ transform: translateY(-50%);
+ }
+ }
+}
+
+@include media-down($bp-desktop-md) {
+ .turnkey {
+ &__card {
+ grid-template-columns: minmax(0, 1fr) minmax(430px, 0.9fr);
+ gap: 48px;
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .turnkey {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__card {
+ min-height: auto;
+ grid-template-columns: 1fr;
+ gap: 36px;
+ padding: 34px 30px 36px;
+ border-radius: 26px;
+ }
+
+ &__content {
+ max-width: 100%;
+ }
+
+ &__title {
+ font-size: clamp(32px, 8vw, 42px);
+ }
+
+ &__text {
+ margin-top: 20px;
+ font-size: 15px;
+ }
+
+ &__button {
+ min-width: 220px;
+ margin-top: 28px;
+ }
+
+ &__list {
+ gap: 13px;
+ font-size: 15px;
+ line-height: 1.45;
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .turnkey {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__card {
+ padding: 28px 20px 30px;
+ border-radius: 22px;
+ }
+
+ &__label {
+ font-size: 13px;
+ }
+
+ &__title {
+ font-size: clamp(29px, 10vw, 36px);
+ }
+
+ &__button {
+ width: 100%;
+ min-width: 0;
+ }
+
+ &__list li {
+ padding-left: 28px;
+
+ &::before {
+ width: 18px;
+ height: 18px;
+ }
+ }
+ }
+}
+
+
+.clients {
+ position: relative;
+ padding: 44px 0 88px;
+ overflow: hidden;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__label {
+ margin: 0 0 2px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__marquee {
+ width: 100vw;
+ display: grid;
+ gap: 10px;
+ margin-top: 35px;
+ margin-inline: calc(50% - 50vw);
+ }
+
+ &__row {
+ width: 100%;
+ overflow: hidden;
+ }
+
+ &__track {
+ width: max-content;
+ display: flex;
+ will-change: transform;
+
+ &--left {
+ animation: clients-marquee-left 48s linear infinite;
+ }
+
+ &--right {
+ animation: clients-marquee-right 52s linear infinite;
+ }
+ }
+
+ &__row--top &__track {
+ margin-left: 8px;
+ }
+
+ &__row--bottom &__track {
+ margin-left: -160px;
+ }
+
+ &__group {
+ display: flex;
+ gap: 10px;
+ padding-right: 10px;
+ }
+}
+
+.review-card {
+ width: 382px;
+ min-height: 206px;
+ flex: 0 0 382px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 19px 20px 20px;
+ border: 1px solid rgba($color-black, 0.16);
+ border-radius: 30px;
+ background: $color-white;
+
+ &__text {
+ max-width: 335px;
+ margin: 0;
+ color: $color-black;
+ font-size: 16px;
+ font-weight: 500;
+ line-height: 1.53;
+ letter-spacing: -0.01em;
+ }
+
+ &__author {
+ display: flex;
+ align-items: center;
+ gap: 13px;
+ margin-top: 24px;
+ }
+
+ &__avatar {
+ width: 48px;
+ height: 48px;
+ flex: 0 0 48px;
+ border: 1px solid rgba($color-black, 0.14);
+ border-radius: 50%;
+ background: #faf9f6;
+ }
+
+ &__name {
+ margin: 0;
+ color: $color-black;
+ font-size: 18px;
+ font-weight: 600;
+ line-height: 1.15;
+ letter-spacing: -0.02em;
+ }
+
+ &__position {
+ margin: 4px 0 0;
+ color: $color-muted-text;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.2;
+ letter-spacing: -0.01em;
+ }
+}
+
+@keyframes clients-marquee-left {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ }
+
+ 100% {
+ transform: translate3d(-50%, 0, 0);
+ }
+}
+
+@keyframes clients-marquee-right {
+ 0% {
+ transform: translate3d(-50%, 0, 0);
+ }
+
+ 100% {
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@include media-down($bp-tablet) {
+ .clients {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__marquee {
+ gap: 12px;
+ margin-top: 34px;
+ }
+
+ &__group {
+ gap: 12px;
+ padding-right: 12px;
+ }
+
+ &__row--top &__track {
+ margin-left: -70px;
+ }
+
+ &__row--bottom &__track {
+ margin-left: -190px;
+ }
+ }
+
+ .review-card {
+ width: 340px;
+ min-height: 196px;
+ flex-basis: 340px;
+ padding: 18px 18px 19px;
+ border-radius: 26px;
+
+ &__text {
+ font-size: 15px;
+ line-height: 1.48;
+ }
+
+ &__name {
+ font-size: 17px;
+ }
+
+ &__position {
+ font-size: 14px;
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .clients {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+
+ &__row--top &__track {
+ margin-left: -90px;
+ }
+
+ &__row--bottom &__track {
+ margin-left: -220px;
+ }
+ }
+
+ .review-card {
+ width: 300px;
+ min-height: 188px;
+ flex-basis: 300px;
+ padding: 17px 17px 18px;
+ border-radius: 24px;
+
+ &__text {
+ font-size: 14px;
+ }
+
+ &__avatar {
+ width: 44px;
+ height: 44px;
+ flex-basis: 44px;
+ }
+ }
+}
+
+.values {
+ padding: 46px 0 82px;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__label {
+ margin: 0 0 2px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__grid {
+ width: min(100%, 966px);
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 32px;
+ margin: 58px auto 0;
+ }
+}
+
+.value-card {
+ min-width: 0;
+ text-align: center;
+
+ &__media {
+ height: 216px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 8px;
+ background: #f2f2f2;
+
+ img {
+ width: 64px;
+ height: 64px;
+ display: block;
+ opacity: 0.94;
+ }
+ }
+
+ &__title {
+ margin: 11px 0 0;
+ color: $color-black;
+ font-size: 16px;
+ font-weight: 800;
+ line-height: 1.18;
+ letter-spacing: -0.015em;
+ }
+
+ &__text {
+ max-width: 276px;
+ margin: 8px auto 0;
+ color: $color-muted-text;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1.28;
+ letter-spacing: -0.01em;
+ }
+}
+
+@include media-down($bp-desktop-md) {
+ .values {
+ &__grid {
+ gap: 24px;
+ }
+ }
+
+ .value-card {
+ &__media {
+ height: 200px;
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .values {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__grid {
+ grid-template-columns: 1fr;
+ gap: 28px;
+ margin-top: 34px;
+ }
+ }
+
+ .value-card {
+ &__media {
+ height: 220px;
+ }
+
+ &__title {
+ margin-top: 12px;
+ font-size: 17px;
+ }
+
+ &__text {
+ max-width: 330px;
+ font-size: 14px;
+ line-height: 1.35;
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .values {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+
+ &__grid {
+ gap: 24px;
+ }
+ }
+
+ .value-card {
+ &__media {
+ height: 196px;
+ }
+ }
+}
+
+.faq {
+ padding: 46px 0 83px;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__label {
+ margin: 0 0 2px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 600;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__list {
+ width: min(100%, 1256px);
+ margin: 58px auto 0;
+ overflow: hidden;
+ border: 1px solid rgba($color-black, 0.16);
+ border-radius: 20px;
+ background: $color-white;
+ }
+}
+
+.faq-item {
+ & + & {
+ border-top: 1px solid rgba($color-black, 0.14);
+ }
+
+ &__button {
+ width: 100%;
+ min-height: 69px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ padding: 18px 24px 18px 20px;
+ border: 0;
+ background: transparent;
+ color: $color-black;
+ font: inherit;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.35;
+ letter-spacing: -0.01em;
+ text-align: left;
+ cursor: pointer;
+ transition: background $transition-fast;
+
+ @include hover-supported {
+ background: rgba($color-black, 0.025);
+ }
+
+ &[aria-expanded="true"] {
+ .faq-item__icon {
+ transform: rotate(45deg);
+ }
+ }
+ }
+
+ &__icon {
+ position: relative;
+ width: 18px;
+ height: 18px;
+ flex: 0 0 18px;
+ transition: transform $transition-fast;
+
+ &::before,
+ &::after {
+ content: "";
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ width: 11px;
+ height: 1px;
+ border-radius: 999px;
+ background: $color-black;
+ transform: translate(-50%, -50%);
+ }
+
+ &::after {
+ width: 1px;
+ height: 11px;
+ }
+ }
+
+ &__panel {
+ padding: 0 68px 22px 20px;
+ color: $color-muted-text;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.48;
+ letter-spacing: -0.01em;
+
+ p {
+ max-width: 820px;
+ margin: 0;
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .faq {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__list {
+ margin-top: 34px;
+ border-radius: 18px;
+ }
+ }
+
+ .faq-item {
+ &__button {
+ min-height: 64px;
+ padding: 17px 18px;
+ font-size: 15px;
+ }
+
+ &__panel {
+ padding: 0 18px 18px;
+ font-size: 14px;
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .faq {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+ }
+
+ .faq-item {
+ &__button {
+ gap: 16px;
+ min-height: 60px;
+ padding: 15px 16px;
+ }
+
+ &__panel {
+ padding: 0 16px 17px;
+ }
+ }
+}
+
+
+.contact {
+ padding: 46px 0 88px;
+ background: $color-white;
+
+ &__container {
+ width: min(1420px, calc(100% - 40px));
+ margin-inline: auto;
+ display: grid;
+ grid-template-columns: minmax(300px, 470px) minmax(620px, 1fr);
+ gap: clamp(48px, 6.5vw, 150px);
+ align-items: start;
+ }
+
+ &__content {
+ padding-top: 0;
+ }
+
+ &__label {
+ margin: 0 0 8px;
+ color: $color-header-text;
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+ }
+
+ &__title {
+ margin: 0;
+ color: $color-dark;
+ font-size: clamp(42px, 2.9vw, 48px);
+ font-weight: 700;
+ line-height: 1.03;
+ letter-spacing: -0.052em;
+
+ span {
+ color: $color-gray;
+ }
+ }
+
+ &__text {
+ max-width: 440px;
+ margin: 28px 0 0;
+ color: $color-muted-text;
+ font-size: 19px;
+ font-weight: 400;
+ line-height: 1.42;
+ letter-spacing: -0.022em;
+ }
+}
+
+.contact-sentence {
+ width: 100%;
+ margin: 0;
+
+ &__text {
+ margin: 0;
+ color: $color-black;
+ font-size: clamp(32px, 2.33vw, 40px);
+ font-weight: 400;
+ line-height: 1.19;
+ letter-spacing: -0.055em;
+ }
+
+ &__actions {
+ display: flex;
+ align-items: center;
+ gap: 18px;
+ margin-top: 28px;
+ }
+
+ &__submit {
+ min-width: 184px;
+ }
+
+ &__status {
+ min-height: 22px;
+ margin: 0;
+ color: $color-muted-text;
+ font-size: 14px;
+ line-height: 1.35;
+ letter-spacing: -0.01em;
+
+ &.is-success {
+ color: $color-dark;
+ }
+ }
+}
+
+.contact-field {
+ display: inline;
+ position: relative;
+ min-width: 1.5em;
+ padding: 0 0.04em;
+ border: 0;
+ border-bottom: 1px solid currentColor;
+ border-radius: 0;
+ background: transparent;
+ color: $color-gray;
+ outline: none;
+ cursor: text;
+ transition: color $transition-fast, border-color $transition-fast, background $transition-fast;
+
+ &[contenteditable="true"],
+ &:focus-visible {
+ color: $color-black;
+ border-color: $color-black;
+ background: rgba($color-black, 0.035);
+ }
+
+ &--selector {
+ cursor: pointer;
+ user-select: none;
+ }
+
+ &.is-filled {
+ color: $color-black;
+ }
+
+ &.is-error {
+ color: #d73a31;
+ border-color: #d73a31;
+ background: rgba(#d73a31, 0.07);
+ }
+}
+
+.contact-dropdown {
+ position: absolute;
+ z-index: 80;
+ min-width: 220px;
+ max-width: min(320px, calc(100vw - 24px));
+ margin: 0;
+ padding: 8px;
+ list-style: none;
+ border: 1px solid rgba($color-black, 0.12);
+ border-radius: 16px;
+ background: $color-white;
+ box-shadow: 0 18px 45px rgba($color-black, 0.12);
+
+ li {
+ padding: 11px 12px;
+ border-radius: 10px;
+ color: $color-black;
+ font-size: 15px;
+ font-weight: 500;
+ line-height: 1.2;
+ cursor: pointer;
+ transition: background $transition-fast;
+
+ @include hover-supported {
+ background: rgba($color-black, 0.055);
+ }
+ }
+}
+
+.contact-date-input {
+ position: fixed;
+ left: -1000px;
+ top: -1000px;
+ width: 24px;
+ height: 24px;
+ opacity: 0;
+ pointer-events: auto;
+}
+
+@include media-down($bp-desktop-md) {
+ .contact {
+ &__container {
+ grid-template-columns: minmax(280px, 390px) minmax(520px, 1fr);
+ gap: 64px;
+ }
+ }
+
+ .contact-sentence {
+ &__text {
+ font-size: clamp(30px, 3.1vw, 36px);
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .contact {
+ padding: 70px 0 72px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ grid-template-columns: 1fr;
+ gap: 34px;
+ }
+
+ &__title {
+ font-size: clamp(36px, 9vw, 46px);
+ }
+
+ &__text {
+ margin-top: 20px;
+ font-size: 17px;
+ }
+ }
+
+ .contact-sentence {
+ &__text {
+ font-size: clamp(26px, 7vw, 36px);
+ line-height: 1.22;
+ }
+
+ &__actions {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 12px;
+ }
+ }
+}
+
+@include media-down($bp-mobile-sm) {
+ .contact {
+ padding: 60px 0 64px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__label {
+ font-size: 15px;
+ }
+ }
+
+ .contact-sentence {
+ &__text {
+ font-size: 25px;
+ }
+ }
+
+ .contact-dropdown {
+ min-width: 200px;
+ }
+}
+
+.site-footer {
+ padding: 82px 0 50px;
+ background: $color-white;
+
+ &__container {
+ width: min(1192px, calc(100% - 40px));
+ margin-inline: auto;
+ }
+
+ &__top {
+ display: grid;
+ grid-template-columns: minmax(320px, 1fr) 180px 262px;
+ gap: clamp(70px, 6.8vw, 130px);
+ align-items: start;
+ padding-bottom: 66px;
+ border-bottom: 1px solid rgba($color-black, 0.16);
+ }
+
+ &__brand {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+
+ &__logo {
+ display: inline-flex;
+ width: 190px;
+ transition: opacity $transition-fast;
+
+ img {
+ width: 190px;
+ height: auto;
+ }
+
+ @include hover-supported {
+ opacity: 0.72;
+ }
+ }
+
+ &__description {
+ max-width: 330px;
+ margin: 29px 0 0;
+ color: $color-muted-text;
+ font-size: 18px;
+ font-weight: 400;
+ line-height: 1.55;
+ letter-spacing: -0.022em;
+ }
+
+ &__title {
+ margin: 3px 0 22px;
+ color: $color-black;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1.2;
+ text-transform: uppercase;
+ letter-spacing: -0.01em;
+ }
+
+ &__list {
+ display: flex;
+ flex-direction: column;
+ gap: 14px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ color: $color-muted-text;
+ font-size: 17px;
+ font-weight: 400;
+ line-height: 1.35;
+ letter-spacing: -0.018em;
+
+ a {
+ transition: color $transition-fast;
+
+ @include hover-supported {
+ color: $color-black;
+ }
+ }
+ }
+
+ &__bottom {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ padding-top: 33px;
+ color: $color-muted-text;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.35;
+ letter-spacing: -0.02em;
+
+ p {
+ margin: 0;
+ }
+
+ a {
+ transition: color $transition-fast;
+
+ @include hover-supported {
+ color: $color-black;
+ }
+ }
+ }
+}
+
+@include media-down($bp-desktop-md) {
+ .site-footer {
+ &__top {
+ grid-template-columns: minmax(280px, 1fr) 160px 240px;
+ gap: 54px;
+ }
+ }
+}
+
+@include media-down($bp-tablet) {
+ .site-footer {
+ padding: 64px 0 40px;
+
+ &__container {
+ width: min(100% - 32px, 620px);
+ }
+
+ &__top {
+ grid-template-columns: 1fr 1fr;
+ gap: 40px 32px;
+ padding-bottom: 42px;
+ }
+
+ &__brand {
+ grid-column: 1 / -1;
+ }
+
+ &__description {
+ margin-top: 22px;
+ font-size: 17px;
+ }
+
+ &__bottom {
+ align-items: flex-start;
+ flex-direction: column;
+ gap: 12px;
+ padding-top: 26px;
+ }
+ }
+}
+
+@include media-down($bp-mobile) {
+ .site-footer {
+ padding: 52px 0 34px;
+
+ &__container {
+ width: calc(100% - 24px);
+ }
+
+ &__top {
+ grid-template-columns: 1fr;
+ gap: 34px;
+ }
+
+ &__logo,
+ &__logo img {
+ width: 168px;
+ }
+
+ &__title {
+ margin-bottom: 16px;
+ }
+
+ &__list {
+ gap: 12px;
+ font-size: 16px;
+ }
+
+ &__bottom {
+ font-size: 14px;
+ }
+ }
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e247413
--- /dev/null
+++ b/index.html
@@ -0,0 +1,1486 @@
+
+
+
+
+
+
+ AdConversion — веб-разработка
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ✦
+ веб-разработка
+
+
+
+ Создаем сайты,
+ которые работают
+
+
+
+ Проектируем, дизайним и собираем продукты под бизнес-задачи: заявки, продажи, доверие и рост.
+
+
+
+
+
+
+
+
+
+
+
+
+ Конверсия
+ +38%
+
+
+
+
+ Срок запуска
+ от 2 недель
+
+
+
+
+
+
+
+
+
+
+
+ Лендинги
+ Интернет-магазины
+ Интеграции
+ Дизайн
+
+
+
+
+
+
+
+
+
MVP-продукты
+
+ Запуск MVP за 4 недели
+ Интеграция банковских API
+
+
+
+
+
+
+
+
+
Лендинги
+
+ Структура под заявки
+ Адаптивная верстка
+
+
+
+
+
+
+
+
+
Промо-страницы
+
+ Быстрый запуск кампании
+ Формы и аналитика
+
+
+
+
+
+
+
+
+
B2B-страницы
+
+ Сложная подача услуги
+ Подключение CRM
+
+
+
+
+
+
+
+
+
Квиз-воронки
+
+ Сценарии вопросов
+ Передача лидов в CRM
+
+
+
+
+
+
+
+
+
SEO-лендинги
+
+ Семантическая структура
+ Базовая оптимизация
+
+
+
+
+
+
+
+
+
Интернет-магазины
+
+ Каталог и карточки товаров
+ Корзина, оплата, доставка
+
+
+
+
+
+
+
+
+
Каталоги
+
+ Фильтры и сортировка
+ Удобная структура категорий
+
+
+
+
+
+
+
+
+
Личный кабинет
+
+ История заказов
+ Профиль покупателя
+
+
+
+
+
+
+
+
+
Checkout
+
+ Сценарии оформления заказа
+ Валидация и подсказки
+
+
+
+
+
+
+
+
+
Маркетплейс
+
+ Карточки продавцов
+ Разделение заказов
+
+
+
+
+
+
+
+
+
Товарные витрины
+
+ Быстрая загрузка каталога
+ Промо-блоки и подборки
+
+
+
+
+
+
+
+
+
Интеграции
+
+ Обмен товарами и заказами
+ Синхронизация статусов
+
+
+
+
+
+
+
+
+
Платежные API
+
+ Оплата и возвраты
+ Безопасная обработка данных
+
+
+
+
+
+
+
+
+
CRM-связки
+
+ Передача лидов
+ Автоматизация воронок
+
+
+
+
+
+
+
+
+
Складские остатки
+
+ Обновление наличия
+ Контроль резервов
+
+
+
+
+
+
+
+
+
Email-сервисы
+
+ Подписки и сегменты
+ Триггерные уведомления
+
+
+
+
+
+
+
+
+
Сервисные API
+
+ Карты, доставка, аналитика
+ Единый слой интеграций
+
+
+
+
+
+
+
+
+
UI-концепции
+
+ Визуальная система сайта
+ Главные экраны и состояния
+
+
+
+
+
+
+
+
+
Дизайн-системы
+
+ Компоненты и состояния
+ Подготовка к разработке
+
+
+
+
+
+
+
+
+
Прототипы
+
+ Кликабельные сценарии
+ Проверка логики до разработки
+
+
+
+
+
+
+
+
+
Редизайн
+
+ Обновление визуала
+ Сохранение рабочей структуры
+
+
+
+
+
+
+
+
+
Mobile UI
+
+ Адаптивные макеты
+ Удобные мобильные сценарии
+
+
+
+
+
+
+
+
+
Креативы
+
+ Баннеры и промо-блоки
+ Единый стиль коммуникаций
+
+
+
+
+
+
+
+
+
+
+
+
Процесс
+
+ Как будет проходить работа?
+
+
+
+
+
+ 01
+ Бриф и цели
+
+ Разбираем задачу, аудиторию, конкурентов, воронку и критерии результата.
+
+
+
+
+ 02
+ Структура и прототип
+
+ Собираем логику страниц, блоки, сценарии и будущую навигацию.
+
+
+
+
+ 03
+ Дизайн
+
+ Создаем визуальную концепцию, UI-kit, адаптивы и состояния.
+
+
+
+
+ 04
+ Разработка
+
+ Верстаем, подключаем CMS, формы, интеграции, анимации и админку.
+
+
+
+
+ 05
+ Тестирование
+
+ Проверяем адаптив, скорость, формы, SEO-базу, аналитику и ошибки.
+
+
+
+
+ 06
+ Запуск и поддержка
+
+ Публикуем проект, отслеживаем работу и развиваем сайт после релиза.
+
+
+
+
+
+
+
+
+
Технологии
+
+ Технологии, с которыми мы работаем
+
+
+
+
+
+
+
+
+
+
+
+ WordPress
+
+
+
+
+
+ n8n
+
+
+
+
+
+ Bitrix
+
+
+
+
+
+ React.js
+
+
+
+
+
+ Nuxt
+
+
+
+
+
+ WooCommerce
+
+
+
+
+
+ MODX
+
+
+
+
+
+ PHP
+
+
+
+
+
+ Docker
+
+
+
+
+
+ GIT
+
+
+
+
+
+ MySQL
+
+
+
+
+
+ Tilda
+
+
+
+
+
+ Vue.js
+
+
+
+
+
+
+
+ WordPress
+
+
+
+
+
+ n8n
+
+
+
+
+
+ Bitrix
+
+
+
+
+
+ React.js
+
+
+
+
+
+ Nuxt
+
+
+
+
+
+ WooCommerce
+
+
+
+
+
+ MODX
+
+
+
+
+
+ PHP
+
+
+
+
+
+ Docker
+
+
+
+
+
+ GIT
+
+
+
+
+
+ MySQL
+
+
+
+
+
+ Tilda
+
+
+
+
+
+ Vue.js
+
+
+
+
+
+
+
+
+
+
+
+
+ Tilda
+
+
+
+
+
+ Vue.js
+
+
+
+
+
+ WordPress
+
+
+
+
+
+ MODX
+
+
+
+
+
+ PHP
+
+
+
+
+
+ Docker
+
+
+
+
+
+ GIT
+
+
+
+
+
+ MySQL
+
+
+
+
+
+ Tilda
+
+
+
+
+
+ Vue.js
+
+
+
+
+
+ WordPress
+
+
+
+
+
+ n8n
+
+
+
+
+
+ Bitrix
+
+
+
+
+
+ React.js
+
+
+
+
+
+
+
+ Tilda
+
+
+
+
+
+ Vue.js
+
+
+
+
+
+ WordPress
+
+
+
+
+
+ MODX
+
+
+
+
+
+ PHP
+
+
+
+
+
+ Docker
+
+
+
+
+
+ GIT
+
+
+
+
+
+ MySQL
+
+
+
+
+
+ Tilda
+
+
+
+
+
+ Vue.js
+
+
+
+
+
+ WordPress
+
+
+
+
+
+ n8n
+
+
+
+
+
+ Bitrix
+
+
+
+
+
+ React.js
+
+
+
+
+
+
+
+
+
+
+
+
Под ключ
+
+ Что входит в разработку под ключ
+
+
+ Полный цикл от аналитики до запуска и поддержки.
+
+
Получить предложение
+
+
+
+ Аналитика и структура страниц
+ UX-прототип
+ UI-дизайн
+ Адаптив под desktop / tablet / mobile
+ Frontend-разработка
+ CMS или backend
+ Формы и заявки
+ Интеграции с CRM / Bitrix24 / 1C / Telegram
+ Базовая SEO-подготовка
+ Настройка аналитики
+ Тестирование
+ Перенос на хостинг
+ Инструкция по управлению сайтом
+ Поддержка после запуска
+
+
+
+
+
+
+
+
Наши клиенты
+
+ Что говорят клиенты
+
+
+
+
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+
+
+
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+ "Получили не просто красивый сайт, а понятную структуру, удобную админку и нормальную техническую основу для рекламы."
+
+
+
+
Анна
+
руководитель проекта
+
+
+
+
+
+
+
+
+
+
+
+
Ценности
+
+ Почему с нами удобно работать?
+
+
+
+
+
+ Бизнес-ориентированность
+
+ Разбираем задачу, аудиторию, конкурентов, воронку и критерии результата.
+
+
+
+
+
+ Хорошая техническая база
+
+ Разбираем задачу, аудиторию, конкурентов, воронку и критерии результата.
+
+
+
+
+
+ Абсолютная прозрачность
+
+ Разбираем задачу, аудиторию, конкурентов, воронку и критерии результата.
+
+
+
+
+
+
+
+
+
FAQ
+
+ Ответы на часто задаваемые вопросы
+
+
+
+
+
+ Сколько стоит разработка сайта?
+
+
+
+
+ Стоимость зависит от типа проекта, количества страниц, дизайна, интеграций и backend-логики. После короткого брифа мы фиксируем состав работ и готовим понятную оценку.
+
+
+
+
+
+
+ Можно ли сделать сайт на WordPress или Bitrix?
+
+
+
+
+ Да. Подбираем CMS под задачу: WordPress подходит для контентных сайтов и небольших каталогов, Bitrix — для проектов со сложной структурой, интеграциями и расширенной админкой.
+
+
+
+
+
+
+ Вы делаете только дизайн или разработку тоже?
+
+
+
+
+ Работаем как отдельно с дизайном, так и с полным циклом: аналитика, прототип, UI-дизайн, верстка, разработка, интеграции, тестирование и запуск.
+
+
+
+
+
+
+ Можно ли доработать существующий сайт?
+
+
+
+
+ Да. Можем доработать интерфейс, исправить технические ошибки, ускорить сайт, подключить новые формы, интеграции, CRM, аналитику или платежные сервисы.
+
+
+
+
+
+
+ Что нужно для старта?
+
+
+
+
+ На старте достаточно описать задачу, цель сайта, примерную структуру, референсы и ограничения по срокам. Остальное уточняем на брифинге.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..72b051b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,4216 @@
+{
+ "name": "adconversion",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "adconversion",
+ "version": "1.0.0",
+ "license": "ISC",
+ "devDependencies": {
+ "autoprefixer": "^10.4.27",
+ "cssnano": "^7.1.2",
+ "npm-run-all": "^4.1.5",
+ "postcss": "^8.5.6",
+ "postcss-cli": "^11.0.1",
+ "sass": "^1.97.3"
+ }
+ },
+ "node_modules/@colordx/core": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.3.3.tgz",
+ "integrity": "sha512-G8zo59+F4jAEbMUSL8xmcXZmW8MCu7WuYrn58ZgUMai6k0xLj3gEidpKViZ4GXVcKsiLrhBNASOpuG9ZyoxzWw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz",
+ "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.3",
+ "is-glob": "^4.0.3",
+ "node-addon-api": "^7.0.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.6",
+ "@parcel/watcher-darwin-arm64": "2.5.6",
+ "@parcel/watcher-darwin-x64": "2.5.6",
+ "@parcel/watcher-freebsd-x64": "2.5.6",
+ "@parcel/watcher-linux-arm-glibc": "2.5.6",
+ "@parcel/watcher-linux-arm-musl": "2.5.6",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.6",
+ "@parcel/watcher-linux-arm64-musl": "2.5.6",
+ "@parcel/watcher-linux-x64-glibc": "2.5.6",
+ "@parcel/watcher-linux-x64-musl": "2.5.6",
+ "@parcel/watcher-win32-arm64": "2.5.6",
+ "@parcel/watcher-win32-ia32": "2.5.6",
+ "@parcel/watcher-win32-x64": "2.5.6"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz",
+ "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz",
+ "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz",
+ "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz",
+ "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz",
+ "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz",
+ "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz",
+ "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz",
+ "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz",
+ "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz",
+ "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz",
+ "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz",
+ "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz",
+ "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher/node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz",
+ "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "caniuse-lite": "^1.0.30001787",
+ "fraction.js": "^5.3.4",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.21",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz",
+ "integrity": "sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
+ "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.10.12",
+ "caniuse-lite": "^1.0.30001782",
+ "electron-to-chromium": "^1.5.328",
+ "node-releases": "^2.0.36",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
+ "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "get-intrinsic": "^1.3.0",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001790",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz",
+ "integrity": "sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/css-declaration-sorter": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz",
+ "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.9"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
+ "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.27.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssnano": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.7.tgz",
+ "integrity": "sha512-N5LGn/OlhMxDTvKACwUPMzT34SSj1b022pvUAE/Vh6r2WD1aUCbc+QNIP/JjX9VVxebdJWZQ3352Lt4oF7dQ/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssnano-preset-default": "^7.0.15",
+ "lilconfig": "^3.1.3"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/cssnano"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/cssnano-preset-default": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.15.tgz",
+ "integrity": "sha512-60kx7lJ40//HA85cIfQXSOJFby2D2V1pOMNHVCxue3KFWCjRzmiQyL9OvI+NAhwUlaojOfF9eK3nGvrJLCBUfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "css-declaration-sorter": "^7.2.0",
+ "cssnano-utils": "^5.0.2",
+ "postcss-calc": "^10.1.1",
+ "postcss-colormin": "^7.0.9",
+ "postcss-convert-values": "^7.0.11",
+ "postcss-discard-comments": "^7.0.7",
+ "postcss-discard-duplicates": "^7.0.3",
+ "postcss-discard-empty": "^7.0.2",
+ "postcss-discard-overridden": "^7.0.2",
+ "postcss-merge-longhand": "^7.0.6",
+ "postcss-merge-rules": "^7.0.10",
+ "postcss-minify-font-values": "^7.0.2",
+ "postcss-minify-gradients": "^7.0.4",
+ "postcss-minify-params": "^7.0.8",
+ "postcss-minify-selectors": "^7.1.0",
+ "postcss-normalize-charset": "^7.0.2",
+ "postcss-normalize-display-values": "^7.0.2",
+ "postcss-normalize-positions": "^7.0.3",
+ "postcss-normalize-repeat-style": "^7.0.3",
+ "postcss-normalize-string": "^7.0.2",
+ "postcss-normalize-timing-functions": "^7.0.2",
+ "postcss-normalize-unicode": "^7.0.8",
+ "postcss-normalize-url": "^7.0.2",
+ "postcss-normalize-whitespace": "^7.0.2",
+ "postcss-ordered-values": "^7.0.3",
+ "postcss-reduce-initial": "^7.0.8",
+ "postcss-reduce-transforms": "^7.0.2",
+ "postcss-svgo": "^7.1.2",
+ "postcss-unique-selectors": "^7.0.6"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/cssnano-utils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.2.tgz",
+ "integrity": "sha512-kt41WLK7FLKfePzPi645Y+/NtW/nNM7Su6nlNUfJyRNW3JcuU3JU7+cWJc+JexTeZ8dRBvFufefdG2XpXkIo0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/inspect-js"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dependency-graph": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz",
+ "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.343",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.343.tgz",
+ "integrity": "sha512-YHnQ3MXI08icvL9ZKnEBy05F2EQ8ob01UaMOuMbM8l+4UcAq6MPPbBTJBbsBUg3H8JeZNt+O4fjsoWth3p6IFg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.24.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz",
+ "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "data-view-buffer": "^1.0.2",
+ "data-view-byte-length": "^1.0.2",
+ "data-view-byte-offset": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "es-set-tostringtag": "^2.1.0",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "get-intrinsic": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "get-symbol-description": "^1.1.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.1.0",
+ "is-array-buffer": "^3.0.5",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.2",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.2.1",
+ "is-set": "^2.0.3",
+ "is-shared-array-buffer": "^1.0.4",
+ "is-string": "^1.1.1",
+ "is-typed-array": "^1.1.15",
+ "is-weakref": "^1.1.1",
+ "math-intrinsics": "^1.1.0",
+ "object-inspect": "^1.13.4",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.7",
+ "own-keys": "^1.0.1",
+ "regexp.prototype.flags": "^1.5.4",
+ "safe-array-concat": "^1.1.3",
+ "safe-push-apply": "^1.0.0",
+ "safe-regex-test": "^1.1.0",
+ "set-proto": "^1.0.0",
+ "stop-iteration-iterator": "^1.1.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-length": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4",
+ "typed-array-length": "^1.0.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.19"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.3.4",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz",
+ "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+ "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/has-bigints": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/immutable": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz",
+ "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-async-function": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+ "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.38",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz",
+ "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-type/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pidtree": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.10",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz",
+ "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-calc": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz",
+ "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12 || ^20.9 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.38"
+ }
+ },
+ "node_modules/postcss-cli": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz",
+ "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^3.3.0",
+ "dependency-graph": "^1.0.0",
+ "fs-extra": "^11.0.0",
+ "picocolors": "^1.0.0",
+ "postcss-load-config": "^5.0.0",
+ "postcss-reporter": "^7.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "read-cache": "^1.0.0",
+ "slash": "^5.0.0",
+ "tinyglobby": "^0.2.12",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "postcss": "index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-colormin": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.9.tgz",
+ "integrity": "sha512-EZpoUlmbXQUpe+g4ZaGM2kjGlHrQ7Bjzb3xHcNrC9ysI1tGoib6DAYvxg6aB7MGxsjgLF+Qx/jwZQkJ5cKDvXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@colordx/core": "^5.2.0",
+ "browserslist": "^4.28.2",
+ "caniuse-api": "^3.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-convert-values": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.11.tgz",
+ "integrity": "sha512-H+s7P0f9jJylSysAHs3/5MhAx7GthDO05uw1h56L2xyEqpiLTFLEqBNw3PUYzD5p/AKwWaigCXf6FGELpOw9lw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-discard-comments": {
+ "version": "7.0.7",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.7.tgz",
+ "integrity": "sha512-FJhE3fSte7HaRNL4iwD8LTG9vWqj3puxXIdig6LfrFqc1TJRUhY4kXOkeTXZZfTXYny+k+SO7fd2fymj1wduJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-discard-duplicates": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.3.tgz",
+ "integrity": "sha512-9cRxXwhEM/aNZon1qZyToX4NmjbFbxOGbww+0CnbYFDbbPRGZ8jg4IbM8UlA+CzkXxM35itxyaHKNqBBg/RTDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-discard-empty": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.2.tgz",
+ "integrity": "sha512-NZFouOmOwtngJVgkNeI1LtkzFdYqIurxgy4wq3qNvIiXFURTZ3b/K7q3dP3QitlWQ5imHDQL0qSorItQhoxb1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-discard-overridden": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.2.tgz",
+ "integrity": "sha512-Ym01X4v6U3sY8X0P1J9P+RTar+7JyLTOzDrxKSeaArFsLmkVu4KcAKPBWDYRIyZ/q4jwpSPnOnekeSSqXSXKUw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz",
+ "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.1.1",
+ "yaml": "^2.4.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "jiti": ">=1.21.0",
+ "postcss": ">=8.0.9",
+ "tsx": "^4.8.1"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-merge-longhand": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.6.tgz",
+ "integrity": "sha512-lDsWeKRsssX/9vKFpingoRiuvGajtOGCJhs1kyaTJ5fzaVzs0aPPYe38UZ/ukMFEA5iuRIjQJHIkH2niYO3ubQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "stylehacks": "^7.0.10"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-merge-rules": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.10.tgz",
+ "integrity": "sha512-UXYKxkg8Cy1so/evF7AE/25PNXZb3E0SrvjdbtbGf+MW+doLenKqRLQzz6YZW469ktiXK2MVLFWtel/DftCV0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "caniuse-api": "^3.0.0",
+ "cssnano-utils": "^5.0.2",
+ "postcss-selector-parser": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-minify-font-values": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.2.tgz",
+ "integrity": "sha512-Z82NUmnvhPrvMUaHfkaAVBmWQq9F8Dox4Dy0LiwbaTxfmDUWLQtS+0WCgKViwdWCPPajiY9YzoQftgqKdXkM5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-minify-gradients": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.4.tgz",
+ "integrity": "sha512-g8MNeNyN+lbwKy8DCtJ6zU6awBL0InBsSOaKmgZ1MdRLVItLQUNFNAzzzBnOp4qowOcyyB6GetTlQ0/0UNXvag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@colordx/core": "^5.2.0",
+ "cssnano-utils": "^5.0.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-minify-params": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.8.tgz",
+ "integrity": "sha512-DIUKM5DZGTmxN7KFKT+rxt0FdPDmRrdK/k3n3+6Po+N/QYn06juwagHcfOVBG0CfCHwcnI612GAUCZc3eT+ZEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "cssnano-utils": "^5.0.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-minify-selectors": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.1.0.tgz",
+ "integrity": "sha512-HYl/6I0aL+UvpA10t65BSa7h+tVjBgE6oRI5N/3ylX3vtwvlDL67G3FT3vYDPnTksxr0riiyJcT0tBtyRVoloA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.1",
+ "caniuse-api": "^3.0.0",
+ "cssesc": "^3.0.0",
+ "postcss-selector-parser": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.2.tgz",
+ "integrity": "sha512-YoINoiR4YKlzfB95Y93b0DSxWy7FLw+1SADIaznMHb88AKizpzfF80tolmiDEbYr1UM4r4Hw+NZq37SwT5f3uw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.2.tgz",
+ "integrity": "sha512-wu/NTSjnp8sX5TnEHVPN+eScjAtRs18ELtEduG+Ek3GxjeUDUT+VAA3PJjVIXBcVIk6fiLYFj2iKH0q99S3T2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.3.tgz",
+ "integrity": "sha512-1CJI++oA3yK/fQlPUcEngUfcSWS08Pkt9fK+jVgL53mmtHDBHi0YiuB0m3D9BXwZjmfvCc2GQmFqCAF/CVcPzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.3.tgz",
+ "integrity": "sha512-RvImJ2Ml4LZSx31qC2C8LDiz65IgBNATtwEr9r3Aue+D0cCGbj4rjNojb/uGpEm4QxnOTzFqMvaDYuKiT1Cmpg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.2.tgz",
+ "integrity": "sha512-FqtrUh2BU2MnVeLeWBbJ2rwOjuDnA91XvoImc1BbgMWIxdxiPTaquflBHsmFBA3xh3pC3wPZO9W5MaIc7wU/Xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.2.tgz",
+ "integrity": "sha512-5H5fpXBnMACEXzn7k9RP7qWZ1eWg8cuZkUuFygStY7icOj+UucwMWXeMmdkF/iITvTVa7fP85tdRCJeznpdFfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.8.tgz",
+ "integrity": "sha512-imCM3cwK3hvlAG4z1AzYM24m8BPA3/Jk/S71wfbn2I6+E2b+UwFaGvlNqydihXTSl3OFPeQXztqCzg+NGeSibQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-url": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.2.tgz",
+ "integrity": "sha512-bLnNY7t76NLRb9QQyCVmCN4qwoHxiq6vABH/CXav9wTuR6dNGHGQ72AyO/+h2quWxZk3l7BqxNL1vtDi9H6y1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.2.tgz",
+ "integrity": "sha512-TNSVkuhkeOhl36WruQlflxOb7HweoeZowSusNpfsM1+ZvqJ24Mc+xksu05ecMQxlu+0zgI8pyznO2EWqDCQbLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-ordered-values": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.3.tgz",
+ "integrity": "sha512-FTt6R9RF7NAYfpOHa2XFPm89FVuo5GiIbcfwOXFy1MYF38BeiNW9ke8ybw9Pk62eEsUlRVVbxHWA3B7ERYqOOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssnano-utils": "^5.0.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-reduce-initial": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.8.tgz",
+ "integrity": "sha512-VeVRmbgpgTZuRcDQdqnsB4iYTeS2dBRV07UdwK6V3x61F1xTQ2pgIzHBIR4rQYRlXRNKBTGYYhEL1eNA7w9vaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "caniuse-api": "^3.0.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-reduce-transforms": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.2.tgz",
+ "integrity": "sha512-OV5P9hMnf7kEkeXVXyS5ESqxbIls7a3TqFymUAV5JICO/9YCBEU+QQhQjZiDHaLwFdV7/CL481kVeBUk5FdY3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-reporter": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz",
+ "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "thenby": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-svgo": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.2.tgz",
+ "integrity": "sha512-ixExc8m+/68yuSYQzV/1DgtTup/7nI2dN9eiDS5GMRUzeCH4q9UcqeZPwcSVhdf8ay9fRwXDUHwcY5/XzQSszQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "svgo": "^4.0.1"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >= 18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-unique-selectors": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.6.tgz",
+ "integrity": "sha512-cDxnYw1QuBMW5w3svZ0BlYF0IA4Amr+1JoTLXzu6vDFPNwohN2QU+sPZNx15b930LR7ce+/600h28/cYoxO9vw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
+ "which-builtin-type": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.12",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz",
+ "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.9",
+ "call-bound": "^1.0.4",
+ "get-intrinsic": "^1.3.0",
+ "has-symbols": "^1.1.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sass": {
+ "version": "1.99.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz",
+ "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.1.5",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.padend": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz",
+ "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/stylehacks": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.10.tgz",
+ "integrity": "sha512-sRJ7klmhe/Fl5woJcbJUa2qP1Ueffsl1CQI4ePvqXLkZmcIuAt09aP9uT/FOFPqXh9Rh8M5UkgEnwTdTKn/Aag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.2",
+ "postcss-selector-parser": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.5.10"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svgo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz",
+ "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^11.1.0",
+ "css-select": "^5.1.0",
+ "css-tree": "^3.0.1",
+ "css-what": "^6.1.0",
+ "csso": "^5.0.5",
+ "picocolors": "^1.1.1",
+ "sax": "^1.5.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo.js"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/svgo"
+ }
+ },
+ "node_modules/thenby": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.4.1.tgz",
+ "integrity": "sha512-D5a/bO0KdalOE3q8MlrRmSxjbKZHT3MQmXkJP+r97Vw8MMwOZKOwUSEyTtK7eSMj2y0kyAjpYMRMZmmLw1FtNQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
+ "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
+ "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..09014f7
--- /dev/null
+++ b/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "adconversion",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "scss:build": "sass assets/scss/main.scss assets/css/main.css --no-source-map",
+ "css:minify": "postcss assets/css/main.css -o assets/css/main.min.css",
+ "css:build": "npm-run-all scss:build css:minify",
+ "scss:watch": "sass --watch assets/scss:assets/css --no-source-map",
+ "css:watch": "postcss assets/css/main.css -o assets/css/main.min.css --watch",
+ "dev": "npm-run-all --parallel scss:watch css:watch"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "type": "commonjs",
+ "devDependencies": {
+ "autoprefixer": "^10.4.27",
+ "cssnano": "^7.1.2",
+ "npm-run-all": "^4.1.5",
+ "postcss": "^8.5.6",
+ "postcss-cli": "^11.0.1",
+ "sass": "^1.97.3"
+ }
+}
\ No newline at end of file
diff --git a/postcss.config.cjs b/postcss.config.cjs
new file mode 100644
index 0000000..4783756
--- /dev/null
+++ b/postcss.config.cjs
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: [
+ require('autoprefixer'),
+ require('cssnano')({ preset: 'default' })
+ ]
+};
\ No newline at end of file