1<!DOCTYPE html><html lang="en" data-tui-theme="taiga ui" class="tui-zero-scrollbar"><head> 2 <meta charset="utf-8"> 3 <meta name="format-detection" content="telephone=no"> 4 5 <title></title> 6 <meta name="description" content=""> 7 <base href="/"> 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9 10 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 11 <link rel="preconnect" href="/" crossorigin=""> 12 13 <style>@font-face{font-family:'DM Sans';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKK58VXh.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKy58Q.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:italic;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKK58VXh.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:italic;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKy58Q.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:italic;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKK58VXh.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:italic;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKy58Q.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;
13src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style> 14 <link rel="stylesheet" href="styles-HFG6D3V7.css"><style ng-app-id="ng">@keyframes tuiSkeletonVibe{to{opacity:.5}}@keyframes tuiPresent{to{opacity:.99999}}@keyframes tuiFade{0%{opacity:0}}@keyframes tuiSlide{0%{transform:var(--tui-from, translateY(100%))}}@keyframes tuiScale{0%{transform:scale(var(--tui-scale, 0))}}@keyframes tuiCollapse{0%{grid-template-rows:0fr}to{grid-template-rows:1fr}}.tui-enter,.tui-leave{animation-duration:var(--tui-duration);animation-timing-function:ease-in-out;pointer-events:none}.tui-leave{animation-direction:reverse} 15</style><style ng-app-id="ng">.tui-zero-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.tui-zero-scrollbar::-webkit-scrollbar,.tui-zero-scrollbar::-webkit-scrollbar-thumb{display:none}body,input{margin:0}tui-root{position:relative;display:block;font:var(--tui-font-text-s);color:var(--tui-text-primary);flex:1;border-image:conic-gradient(var(--tui-background-base) 0 0) fill 0/0/0 0 100vh 0;-webkit-tap-highlight-color:transparent}:root{--tui-inline-start: left;--tui-inline-end: right;--tui-inline: 1}[dir=rtl]{--tui-inline-start: right;--tui-inline-end: left;--tui-inline: -1}tui-root>.t-root-scrollbar{position:fixed;top:0;left:0;bottom:0;right:0;z-index:0;display:none;margin:0}[data-tui-theme] tui-root>.t-root-scrollbar{display:block}.t-root-content{position:relative;top:var(--t-root-top);block-size:100%;isolation:isolate}.t-root-content>*{--t-root-top: 0}[tuiDropdownButton][tuiDropdownButton]{display:none} 16</style><style ng-app-id="ng">[_nghost-ng-c242000724]{position:fixed;top:0;left:0;inline-size:100%;block-size:100%;scrollbar-width:none;-ms-overflow-style:none;pointer-events:none;overflow:hidden;overscroll-behavior:none;overflow-wrap:break-word;margin-block-start:var(--t-root-top)}[_nghost-ng-c242000724]::-webkit-scrollbar, [_nghost-ng-c242000724]::-webkit-scrollbar-thumb{display:none}[_nghost-ng-c242000724]:has(section){pointer-events:auto;overflow:auto}[_nghost-ng-c242000724]:has(section:only-of-type tui-dialog[new][data-appearance~=fullscreen])>.t-overlay, [_nghost-ng-c242000724]:has(section:only-of-type tui-notification-middle)>.t-overlay{opacity:0}[_nghost-ng-c242000724]:before{content:"";display:block;block-size:200%}.t-overlay[_ngcontent-ng-c242000724], .t-dialog[_ngcontent-ng-c242000724]{transition-property:filter;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;bottom:0;right:0;display:flex;block-size:100%;align-items:flex-start;outline:none;overflow:auto}.t-overlay[_ngcontent-ng-c242000724]::-webkit-scrollbar, .t-dialog[_ngcontent-ng-c242000724]::-webkit-scrollbar, .t-overlay[_ngcontent-ng-c242000724]::-webkit-scrollbar-thumb, .t-dialog[_ngcontent-ng-c242000724]::-webkit-scrollbar-thumb{display:none}.t-dialog[_ngcontent-ng-c242000724]{position:sticky;overscroll-behavior:none;filter:brightness(.25)}.t-dialog[_ngcontent-ng-c242000724]:has(tui-dialog[new]){display:grid;place-items:center}.t-dialog[_ngcontent-ng-c242000724] >.tui-enter+.t-scrollbars .t-bar_vertical, .t-dialog[_ngcontent-ng-c242000724] >.tui-leave+.t-scrollbars .t-bar_vertical{display:none}.t-overlay[_ngcontent-ng-c242000724]{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;background:var(--tui-service-backdrop);-webkit-backdrop-filter:var(--tui-backdrop, none);backdrop-filter:var(--tui-backdrop, none);opacity:0;transition-timing-function:ease-in}.t-overlay_visible[_ngcontent-ng-c242000724]{opacity:1;transition-timing-function:ease-out}.t-dialog[_ngcontent-ng-c242000724]:last-child{pointer-events:auto;filter:none}tui-root:has(tui-dropdown-mobile._sheet)[_nghost-ng-c242000724] .t-dialog[_ngcontent-ng-c242000724]:last-child, tui-root:has(tui-dropdown-mobile._sheet) [_nghost-ng-c242000724] .t-dialog[_ngcontent-ng-c242000724]:last-child{filter:brightness(.5)}.t-scrollbars[_ngcontent-ng-c242000724]{position:fixed;top:0;left:0;bottom:0;right:0;margin:0;color:#747474}.t-scrollbars[_ngcontent-ng-c242000724] .t-bar_horizontal, .t-scrollbars[_ngcontent-ng-c242000724] .t-bar_vertical .t-thumb[style*="height: 100%"]{display:none}</style><style ng-app-id="ng">tui-alerts>.t-wrapper{position:fixed;top:0;left:0;inline-size:100%;display:flex;flex-direction:column;pointer-events:none;box-sizing:border-box;block-size:100%;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}tui-alerts>.t-wrapper>*{pointer-events:auto} 17</style><style ng-app-id="ng">[_nghost-ng-c2886978137]{position:fixed;top:0;left:0;inline-size:100%;block-size:100%;block-size:0}</style><style ng-app-id="ng">[_nghost-ng-c586047382]{position:sticky;top:0;left:0;z-index:1;inset-inline-start:0;min-inline-size:calc(100% - 1px);min-block-size:calc(100% - 1px);max-inline-size:calc(100% - 1px);max-block-size:calc(100% - 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none;overflow:hidden;color:var(--tui-text-primary)}.t-bar[_ngcontent-ng-c586047382]{position:absolute;right:0;bottom:0;pointer-events:auto}.t-bar.tui-enter[_ngcontent-ng-c586047382], .t-bar.tui-leave[_ngcontent-ng-c586047382]{animation-name:tuiFade}.t-bar_vertical[_ngcontent-ng-c586047382]{top:0;inline-size:.875rem}@supports (inset-inline-end: 0){.t-bar_vertical[_ngcontent-ng-c586047382]{right:unset;inset-inline-end:0}}.t-bar_horizontal[_ngcontent-ng-c586047382]{left:0;inset-inline-start:0;block-size:.875rem}.t-bar_has-horizontal[_ngcontent-ng-c586047382]{bottom:.5rem}.t-bar_has-vertical[_ngcontent-ng-c586047382]{right:.5rem}.t-thumb[_ngcontent-ng-c586047382]{transition-property:all;transition-duration:.15s;transition-timing-function:ease-in-out;position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;pointer-events:auto;-webkit-user-select:none;user-select:none;background:currentColor;background-clip:content-box;box-sizing:border-box;transition-property:width,height,opacity;opacity:.2}.t-thumb[_ngcontent-ng-c586047382]:hover{opacity:.24}.t-thumb[_ngcontent-ng-c586047382]:active{opacity:.48}.t-bar_vertical[_ngcontent-ng-c586047382] .t-thumb[_ngcontent-ng-c586047382]{right:0;inset-inline-end:0;inline-size:.75rem;min-block-size:1.25rem}.t-bar_vertical[_ngcontent-ng-c586047382]:hover .t-thumb[_ngcontent-ng-c586047382], .t-bar_vertical[_ngcontent-ng-c586047382] .t-thumb[_ngcontent-ng-c586047382]:active{inline-size:.875rem}.t-bar_horizontal[_ngcontent-ng-c586047382] .t-thumb[_ngcontent-ng-c586047382]{bottom:0;block-size:.75rem;min-inline-size:1.25rem}.t-bar_horizontal[_ngcontent-ng-c586047382]:hover .t-thumb[_ngcontent-ng-c586047382], .t-bar_horizontal[_ngcontent-ng-c586047382] .t-thumb[_ngcontent-ng-c586047382]:active{block-size:.875rem}</style><style ng-app-id="ng">.page-display-wrapper[_ngcontent-ng-c2530830588]{container-type:inline-size}</style><style ng-app-id="ng">.plark-credit[_ngcontent-ng-c3952576619]{position:fixed;right:16px;bottom:16px;z-index:1000;background:#000;color:#fff;font-size:12px;line-height:1;padding:8px 10px;border-radius:999px;text-decoration:none;display:inline-block;cursor:pointer;box-shadow:0 0 0 1px #ffffff1f,0 6px 18px #0000003d,0 0 14px #ffffff14;transition:padding .2s ease,box-shadow .2s ease}.plark-credit[_ngcontent-ng-c3952576619]:hover, .plark-credit[_ngcontent-ng-c3952576619]:focus-visible{padding:8px 12px;box-shadow:0 0 0 1px #ffffff2e,0 8px 22px #00000047,0 0 22px #ffffff24}.unclickable[_ngcontent-ng-c3952576619]{cursor:default}</style><link type="image/png" sizes="192x192" rel="icon" href="/uploads/dp8g852k7ugy8lp?thumb=192x192" data-custom-identifier="favicon"><link type="image/png" sizes="192x192" rel="apple-touch-icon" href="/uploads/dp8g852k7ugy8lp?thumb=192x192" data-custom-identifier="favicon"><meta name="apple-mobile-web-app-title" content="Plark" data-custom-identifier="favicon"><meta name="application-name" content="Plark" data-custom-identifier="favicon"><meta name="theme-color" content="" data-custom-identifier="favicon"><link rel="manifest" href="data:application/manifest+json,%7B%22name%22%3A%22Plark%22%2C%22short_name%22%3A%22Plark%22%2C%22display%22%3A%22standalone%22%2C%22start_url%22%3A%22%2F%22%2C%22scope%22%3A%22.%22%2C%22background_color%22%3A%22%22%2C%22theme_color%22%3A%22%22%2C%22icons%22%3A%5B%7B%22src%22%3A%22%2Fuploads%2Fdp8g852k7ugy8lp%3Fthumb%3D192x192%22%2C%22sizes%22%3A%22192x192%22%2C%22type%22%3A%22image%2Fpng%22%7D%2C%7B%22src%22%3A%22%2Fuploads%2Fdp8g852k7ugy8lp%3Fthumb%3D512x512%22%2C%22sizes%22%3A%22512x512%22%2C%22type%22%3A%22image%2Fpng%22%7D%5D%7D" data-custom-identifier="favicon"><style ng-app-id="ng">app-block-styled[_ngcontent-ng-c2329383876]{position:relative}.asset-container[_ngcontent-ng-c2329383876]{position:absolute;inset:0;z-index:-1;background:var(--tui-background-base)}.section-container[_ngcontent-ng-c2329383876]{display:flex;flex-direction:column} .section-container>div{width:100%} .section-container>div:only-child, .section-container>div:nth-child(2){align-self:center;margin-top:auto;margin-bottom:auto}</style><style ng-app-id="ng">.styled-block[_ngcontent-ng-c3229859464]{height:100%;position:relative} .styled-block [tuiWrapper][data-appearance=textfield]{background:var(--tui-background-field)} .styled-block tui-textfield{background:var(--tui-background-field)}</style><style ng-app-id="ng">.block-spacing[_ngcontent-ng-c2286764126]{padding-top:var(--margin-top-desktop);padding-bottom:var(--margin-bottom-desktop)}@media(max-width:1280px){.block-spacing[_ngcontent-ng-c2286764126]{padding-top:var(--margin-top-tablet);padding-bottom:var(--margin-bottom-tablet)}}@container (max-width: 1280px){.block-spacing[_ngcontent-ng-c2286764126]{padding-top:var(--margin-top-tablet);padding-bottom:var(--margin-bottom-tablet)}}@media(max-width:767px){.block-spacing[_ngcontent-ng-c2286764126]{padding-top:var(--margin-top-mobile);padding-bottom:var(--margin-bottom-mobile)}}@container (max-width: 767px){.block-spacing[_ngcontent-ng-c2286764126]{padding-top:var(--margin-top-mobile);padding-bottom:var(--margin-bottom-mobile)}}</style><style ng-app-id="ng">.navigation[_ngcontent-ng-c3082101480]{padding-right:20px;padding-left:20px;
17display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;padding-top:var(--margin-top-desktop);padding-bottom:var(--margin-bottom-desktop);row-gap:20px}.navigation-opened[_ngcontent-ng-c3082101480]{background:var(--tui-background-base)}.logo[_ngcontent-ng-c3082101480]{padding-right:20px}.toggle[_ngcontent-ng-c3082101480]{display:none}tui-icon[_ngcontent-ng-c3082101480]{color:var(--tui-text-primary)}.menu[_ngcontent-ng-c3082101480]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;row-gap:20px}.menu[_ngcontent-ng-c3082101480] > *[_ngcontent-ng-c3082101480]:last-child{margin-right:0}app-link[_ngcontent-ng-c3082101480]{margin-right:20px;margin-left:20px}app-button[_ngcontent-ng-c3082101480]{margin-right:5px;margin-left:5px} .navigation app-link a{color:var(--tui-text-secondary)!important} .navigation app-link a:hover{color:var(--tui-text-primary)!important}@media(max-width:1280px){.navigation[_ngcontent-ng-c3082101480]{justify-content:space-around}}@container (max-width: 1280px){.navigation[_ngcontent-ng-c3082101480]{justify-content:space-around}}@media(max-width:767px){.navigation[_ngcontent-ng-c3082101480]{justify-content:space-between}.toggle[_ngcontent-ng-c3082101480]{display:block}.menu[_ngcontent-ng-c3082101480]{padding-top:20px;padding-bottom:50px;display:none}.menu-opened[_ngcontent-ng-c3082101480]{display:flex;align-content:flex-start;min-height:100vh;position:absolute;left:0;right:0;width:100%;background:var(--tui-background-base);z-index:33;box-shadow:0 20px 20px #00000008}.menu[_ngcontent-ng-c3082101480] > app-link[_ngcontent-ng-c3082101480], .menu[_ngcontent-ng-c3082101480] > .button[_ngcontent-ng-c3082101480]{flex:1 1 100%;text-align:center}app-link[_ngcontent-ng-c3082101480]{margin:20px 0}app-button[_ngcontent-ng-c3082101480]{margin-right:0;margin-left:0}.icon[_ngcontent-ng-c3082101480]{padding-right:10px;padding-left:10px}.button[_ngcontent-ng-c3082101480]{padding-right:20px;padding-left:20px}}@container (max-width: 767px){.navigation[_ngcontent-ng-c3082101480]{justify-content:space-between}.toggle[_ngcontent-ng-c3082101480]{display:block}.menu[_ngcontent-ng-c3082101480]{padding-top:20px;padding-bottom:50px;display:none}.menu-opened[_ngcontent-ng-c3082101480]{display:flex;align-content:flex-start;min-height:100vh;position:absolute;left:0;right:0;width:100%;background:var(--tui-background-base);z-index:33;box-shadow:0 20px 20px #00000008}.menu[_ngcontent-ng-c3082101480] > app-link[_ngcontent-ng-c3082101480], .menu[_ngcontent-ng-c3082101480] > .button[_ngcontent-ng-c3082101480]{flex:1 1 100%;text-align:center}app-link[_ngcontent-ng-c3082101480]{margin:20px 0}app-button[_ngcontent-ng-c3082101480]{margin-right:0;margin-left:0}.icon[_ngcontent-ng-c3082101480]{padding-right:10px;padding-left:10px}.button[_ngcontent-ng-c3082101480]{padding-right:20px;padding-left:20px}}</style><style ng-app-id="ng">img[_ngcontent-ng-c1664382541]{display:block}.light-image[_ngcontent-ng-c1664382541]{display:var(--tui-light-image)}.dark-image[_ngcontent-ng-c1664382541]{display:var(--tui-dark-image)}</style><style ng-app-id="ng">[tuiAppearance]{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;-webkit-appearance:none;appearance:none;outline:.125rem solid transparent;outline-offset:-.125rem;transition-property:color,background-color,opacity,box-shadow,border-color,border-radius,filter}[tuiAppearance]:before,[tuiAppearance]:after{transition-duration:inherit;transition-timing-function:ease-in-out}[tuiAppearance]:focus-visible:not([data-focus=false]){outline-color:var(--tui-border-focus)}[tuiAppearance][data-focus=true]{outline-color:var(--tui-border-focus)}[tuiAppearance][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][tuiWrapper]._focused{outline-color:var(--tui-border-focus)}[tuiAppearance]:disabled:not([data-state]),[tuiAppearance][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}[tuiAppearance][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][tuiWrapper][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)} 18</style><style ng-app-id="ng">[tuiIcons]{--t-icon-start: none;--t-icon-end: none}[tuiIcons]:before,[tuiIcons]:after{content:"";inline-size:1em;block-size:1em;line-height:1em;font-size:1.5rem;flex-shrink:0;box-sizing:content-box;background:currentColor}[tuiIcons]:before{display:var(--t-icon-start, none);-webkit-mask:var(--t-icon-start) no-repeat center / contain padding-box;mask:var(--t-icon-start) no-repeat center / contain padding-box}[tuiIcons]:after{display:var(--t-icon-end, none);-webkit-mask:var(--t-icon-end) no-repeat center / contain padding-box;mask:var(--t-icon-end) no-repeat center / contain padding-box}[tuiIcons][data-icon-start=image]:before{-webkit-mask:none;mask:none;background:var(--t-icon-start) no-repeat center / contain padding-box}[tuiIcons][data-icon-end=image]:after{-webkit-mask:none;mask:none;background:var(--t-icon-end) no-repeat center / contain padding-box}[tuiIcons][data-icon-start=font]:before,[tuiIcons][data-icon-end=font]:after{display:grid;-webkit-mask:none;mask:none;background:none;font:1.3em/1 var(--tui-font-icon, inherit);text-align:center;place-content:center;text-transform:none}[tuiIcons][data-icon-start=font]:before{content:var(--t-icon-start)}[tuiIcons][data-icon-end=font]:after{content:var(--t-icon-end)} 19</style><style ng-app-id="ng">[tuiButton],[tuiIconButton]{--t-size: var(--tui-height-l);--t-radius: var(--tui-radius-l);--t-gap: .25rem;--t-padding: 0 1.25rem;--t-margin: -.25rem;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));block-size:var(--t-size);justify-content:center;border-radius:var(--t-radius);padding:var(--t-padding);-webkit-user-select:none;user-select:none;cursor:pointer;font:var(--tui-font-text-m);font-weight:700}[tuiButton]>img,[tuiIconButton]>img,[tuiButton]>tui-svg,[tuiIconButton]>tui-svg,[tuiButton]>tui-icon,[tuiIconButton]>tui-icon,[tuiButton]>tui-avatar,[tuiIconButton]>tui-avatar,[tuiButton]>tui-badge,[tuiIconButton]>tui-badge,[tuiButton]>[tuiBadge],[tuiIconButton]>[tuiBadge],[tuiButton]>[tuiRadio],[tuiIconButton]>[tuiRadio],[tuiButton]>[tuiSwitch],[tuiIconButton]>[tuiSwitch],[tuiButton]>[tuiCheckbox],[tuiIconButton]>[tuiCheckbox],[tuiButton][tuiIcons]:before,[tuiIconButton][tuiIcons]:before,[tuiButton][tuiIcons]:after,[tuiIconButton][tuiIcons]:after{margin:var(--t-margin)}[tuiButton]>.t-loader,[tuiIconButton]>.t-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}[tuiButton]>.t-loader .t-text,[tuiIconButton]>.t-loader .t-text{position:absolute}[tuiButton][data-size=xs],[tuiIconButton][data-size=xs]{--t-size: var(--tui-height-xs);--t-radius: var(--tui-radius-xs);--t-gap: .125rem;--t-padding: 0 .375rem;--t-margin: -.125rem;font:var(--tui-font-text-s)}[tuiButton][data-size=xs] tui-svg,[tuiIconButton][data-size=xs] tui-svg,[tuiButton][data-size=xs] tui-icon,[tuiIconButton][data-size=xs] tui-icon,[tuiButton][data-size=xs]:before,[tuiIconButton][data-size=xs]:before{font-size:1rem}[tuiButton][data-size=s],[tuiIconButton][data-size=s]{--t-size: var(--tui-height-s);--t-radius: var(--tui-radius-s);--t-gap: .125rem;--t-padding: 0 .625rem;--t-margin: -.125rem;font:var(--tui-font-text-s)}[tuiButton][data-size=s] tui-svg,[tuiIconButton][data-size=s] tui-svg,[tuiButton][data-size=s] tui-icon,[tuiIconButton][data-size=s] tui-icon,[tuiButton][data-size=s]:not([tuiIconButton][data-appearance=icon]
19):not([tuiIconButton][data-appearance=link]):before,[tuiIconButton][data-size=s]:not([tuiIconButton][data-appearance=icon]):not([tuiIconButton][data-appearance=link]):before{font-size:1rem}[tuiButton][data-size=m],[tuiIconButton][data-size=m]{--t-size: var(--tui-height-m);--t-radius: var(--tui-radius-m);--t-gap: .125rem;--t-padding: 0 1rem;--t-margin: -.375rem;font:var(--tui-font-text-m);font-weight:700}[tuiButton][data-size=m]:after,[tuiIconButton][data-size=m]:after{margin-inline-end:-.125rem}[tuiButton]._loading,[tuiIconButton]._loading{--tui-disabled-opacity: 1;-webkit-text-fill-color:transparent}[tuiButton]._loading>*,[tuiIconButton]._loading>*,[tuiButton]._loading:before,[tuiIconButton]._loading:before,[tuiButton]._loading:after,[tuiIconButton]._loading:after{opacity:0}[tuiButton]._loading>.t-loader,[tuiIconButton]._loading>.t-loader{opacity:1}[tuiButton][tuiIcons]:after,[tuiIconButton][tuiIcons]:after{font-size:1rem}[tuiButton][tuiButtonVertical],[tuiIconButton][tuiButtonVertical]{--t-margin: 0rem !important;--t-line-height: 1rem;flex-direction:column;flex-shrink:1;block-size:auto;padding:.75rem;gap:.375rem;min-inline-size:5rem;white-space:pre-line;font:var(--tui-font-text-ui-s)}[tuiButton][tuiButtonVertical]>*,[tuiIconButton][tuiButtonVertical]>*{max-block-size:calc(var(--t-line-height) * 2)}[tuiIconButton]{gap:0;inline-size:var(--t-size);font-size:0!important;padding:0}[tuiIconButton][data-size=l]:after{margin:0}[tuiIconButton][tuiIconButton][style*="--t-icon-start:"]:after{display:none} 20</style><style ng-app-id="ng">tui-icon{position:relative;display:inline-block;inline-size:1em;block-size:1em;font-size:1.5rem;flex-shrink:0;border:0 solid transparent;vertical-align:middle;box-sizing:border-box;-webkit-mask:var(--t-icon-bg) no-repeat center / contain;mask:var(--t-icon-bg) no-repeat center / contain}@media (hover: hover) and (pointer: fine){tui-icon[data-appearance=icon]:hover{color:var(--tui-text-secondary)}}tui-icon:after,tui-icon[tuiIcons]:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:"";display:block;-webkit-mask:var(--t-icon) no-repeat center / contain;mask:var(--t-icon) no-repeat center / contain;background:currentColor}tui-icon[data-icon=image]:after{-webkit-mask:none;mask:none;background:var(--t-icon) no-repeat center / contain}tui-icon[data-icon=font]:after{content:var(--t-icon);-webkit-mask:none;mask:none;background:none;font:1em/1 var(--tui-font-icon, inherit);text-align:center;text-transform:none} 21</style><style ng-app-id="ng">[tuiLink]{--tui-text-tertiary: var(--tui-text-secondary);transition-property:color,opacity,-webkit-text-decoration;transition-property:color,text-decoration,opacity;transition-property:color,text-decoration,opacity,-webkit-text-decoration;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;padding:0;background:transparent;border:none;cursor:pointer;font:inherit;color:var(--tui-text-primary);-webkit-text-decoration:none dashed currentColor;text-decoration:none dashed currentColor;text-underline-offset:.2em;text-decoration-thickness:.7px;text-decoration-color:color-mix(in lch,currentColor,transparent)}@media (hover: hover) and (pointer: fine){[tuiLink]:hover{--tui-text-secondary: var(--tui-text-primary)}}[tuiLink]:before{margin-inline-end:.25rem}[tuiLink]:after{margin-inline-start:.25rem}[tuiLink][tuiIcons]:before,[tuiLink][tuiIcons]:after{content:"\2060";padding:calc(var(--tui-icon-size, 1rem) / 2);vertical-align:super;font-size:0;line-height:0;box-sizing:border-box;-webkit-mask-size:calc(100% + 10 * var(--tui-stroke-width, .125rem)) 100%;mask-size:calc(100% + 10 * var(--tui-stroke-width, .125rem)) 100%;transition:none}[tuiLink][tuiChevron]:after{display:inline-block}[tuiLink]:focus-visible:not([data-focus=false]){outline:none;background:var(--tui-service-selection-background);background:color-mix(in lch,currentColor 12%,transparent)}[tuiLink][data-focus=true]{outline:none;background:var(--tui-service-selection-background);background:color-mix(in lch,currentColor 12%,transparent)}[tuiLink][tuiWrapper]:not(._focused):has(:focus-visible),[tuiLink][tuiWrapper]._focused{outline:none;background:var(--tui-service-selection-background);background:color-mix(in lch,currentColor 12%,transparent)}@media (hover: hover) and (pointer: fine){[tuiLink]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){text-decoration-color:currentColor}}@media (hover: hover) and (pointer: fine){[tuiLink]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){text-decoration-color:currentColor}}[tuiLink][data-state=hover]{text-decoration-color:currentColor}@media (hover: hover) and (pointer: fine){[tuiLink][tuiWrapper]:hover:not(._no-hover),[tuiLink][tuiWrapper][data-state=hover]{text-decoration-color:currentColor}}[tuiLink]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){text-decoration-color:currentColor}[tuiLink]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){text-decoration-color:currentColor}[tuiLink][data-state=active]{text-decoration-color:currentColor}[tuiLink][tuiWrapper]:active:not(._no-active),[tuiLink][tuiWrapper][data-state=active],[tuiLink][tuiWrapper][data-state=active]:hover{text-decoration-color:currentColor}@media (hover: hover) and (pointer: fine){[tuiLink][data-appearance=""]:hover{opacity:.7}}[tuiLink][data-appearance=""]:active{opacity:.7} 22</style><style ng-app-id="ng">@media(max-width:767px){.fullWidth[_ngcontent-ng-c2259669178]{width:100%}}@container (max-width: 767px){.fullWidth[_ngcontent-ng-c2259669178]{width:100%}}</style><style ng-app-id="ng">.tui-text_display-1[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-display-1);letter-spacing:var(--tui-font-heading-display-1-letter-spacing)}.tui-text_display-2[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-display-2);letter-spacing:var(--tui-font-heading-display-2-letter-spacing)}.tui-text_display-3[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-display-3);letter-spacing:var(--tui-font-heading-display-3-letter-spacing)}.tui-text_h1[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-1);letter-spacing:var(--tui-font-heading-1-letter-spacing)}.tui-text_h2[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-2);letter-spacing:var(--tui-font-heading-1-letter-spacing)}.tui-text_h3[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-3);letter-spacing:var(--tui-font-heading-2-letter-spacing)}
22.tui-text_h4[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-4);letter-spacing:var(--tui-font-heading-3-letter-spacing)}.tui-text_h5[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-5);letter-spacing:var(--tui-font-heading-4-letter-spacing)}.tui-text_h6[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-6);letter-spacing:var(--tui-font-heading-5-letter-spacing)}.tui-text_body-l[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-l);letter-spacing:var(--tui-font-text-l-letter-spacing)}.tui-text_body-m[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}.tui-text_body-s[_ngcontent-ng-c3445491201]{font:400 16.5px/26px var(--tui-font-text);letter-spacing:var(--tui-font-text-s-letter-spacing)}.tui-text_button[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-button)!important;letter-spacing:-.35px}.tui-text_overline[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-overline);line-height:20px;letter-spacing:4px}.tui-text-01[_ngcontent-ng-c3445491201]{color:var(--tui-text-primary)}.tui-text-02[_ngcontent-ng-c3445491201]{color:var(--tui-text-secondary)}.green-circle[_ngcontent-ng-c3445491201], .red-circle[_ngcontent-ng-c3445491201], .yellow-circle[_ngcontent-ng-c3445491201], .blue-circle[_ngcontent-ng-c3445491201], .grey-circle[_ngcontent-ng-c3445491201], .black-circle[_ngcontent-ng-c3445491201]{display:flex;align-items:center}.green-circle[_ngcontent-ng-c3445491201]:before, .red-circle[_ngcontent-ng-c3445491201]:before, .yellow-circle[_ngcontent-ng-c3445491201]:before, .blue-circle[_ngcontent-ng-c3445491201]:before, .grey-circle[_ngcontent-ng-c3445491201]:before, .black-circle[_ngcontent-ng-c3445491201]:before{content:"";min-width:10px;min-height:10px;border-radius:100%;margin-right:15px;background:var(--tui-border-normal)}.blue-circle[_ngcontent-ng-c3445491201]:before{background-color:var(--tui-status-info)}.yellow-circle[_ngcontent-ng-c3445491201]:before{background-color:var(--tui-status-warning)}.green-circle[_ngcontent-ng-c3445491201]:before{background-color:var(--tui-status-positive)}.red-circle[_ngcontent-ng-c3445491201]:before{background:var(--tui-status-negative)}.black-circle[_ngcontent-ng-c3445491201]:before{background:var(--tui-background-accent-opposite)}.grey-circle[_ngcontent-ng-c3445491201]:before{background:#9d9d9d}[tuiAppearance][data-appearance=secondary][_ngcontent-ng-c3445491201], [tuiAppearance][data-appearance=flat][_ngcontent-ng-c3445491201], [tuiAppearance][data-appearance=outline][_ngcontent-ng-c3445491201]{color:var(--tui-text-primary-on-secondary)}[tuiAppearance][data-appearance=icon][_ngcontent-ng-c3445491201]{color:var(--tui-text-tertiary)}.feature[_ngcontent-ng-c3445491201]{text-align:center;display:flex;flex-direction:column;align-items:center}app-icon-styled[_ngcontent-ng-c3445491201]{margin-bottom:50px}.header[_ngcontent-ng-c3445491201]{max-width:730px;margin-bottom:40px;color:var(--tui-text-primary);font:var(--tui-font-heading-display-3);letter-spacing:var(--tui-font-heading-display-3-letter-spacing)}.paragraph[_ngcontent-ng-c3445491201]{max-width:556px;color:var(--tui-text-secondary);font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}.medium-screen[_ngcontent-ng-c3445491201] .header[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-1);letter-spacing:var(--tui-font-heading-1-letter-spacing);margin-bottom:32px}.medium-screen[_ngcontent-ng-c3445491201] .paragraph[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}.small-screen[_ngcontent-ng-c3445491201] app-icon-styled[_ngcontent-ng-c3445491201]{margin-bottom:32px}.small-screen[_ngcontent-ng-c3445491201] .header[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-2);letter-spacing:var(--tui-font-heading-1-letter-spacing);margin-bottom:24px}.small-screen[_ngcontent-ng-c3445491201] .paragraph[_ngcontent-ng-c3445491201]{font:400 16.5px/26px var(--tui-font-text);letter-spacing:var(--tui-font-text-s-letter-spacing)}@media(max-width:1280px){.header[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-1);letter-spacing:var(--tui-font-heading-1-letter-spacing);margin-bottom:32px}.paragraph[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}}@container (max-width: 1280px){.header[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-1);letter-spacing:var(--tui-font-heading-1-letter-spacing);margin-bottom:32px}.paragraph[_ngcontent-ng-c3445491201]{font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}}@media(max-width:767px){app-icon-styled[_ngcontent-ng-c3445491201]{margin-bottom:32px}.header[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-2);letter-spacing:var(--tui-font-heading-1-letter-spacing);margin-bottom:24px}.paragraph[_ngcontent-ng-c3445491201]{font:400 16.5px/26px var(--tui-font-text);letter-spacing:var(--tui-font-text-s-letter-spacing)}}@container (max-width: 767px){app-icon-styled[_ngcontent-ng-c3445491201]{margin-bottom:32px}.header[_ngcontent-ng-c3445491201]{font:var(--tui-font-heading-2);letter-spacing:var(--tui-font-heading-1-letter-spacing);margin-bottom:24px}.paragraph[_ngcontent-ng-c3445491201]{font:400 16.5px/26px var(--tui-font-text);letter-spacing:var(--tui-font-text-s-letter-spacing)}}</style><style ng-app-id="ng">.icon[_ngcontent-ng-c1262864191]{color:var(--tui-background-accent-1);display:flex;align-items:center;justify-content:center}.styled-icon[_ngcontent-ng-c1262864191]{width:fit-content} .styled-icon tui-icon{height:inherit;width:inherit}img[_ngcontent-ng-c1262864191]{max-height:100%;max-width:100%}.outline[_ngcontent-ng-c1262864191]{padding:20px;border:2px solid var(--tui-border-normal)!important;border-radius:20px}.secondary[_ngcontent-ng-c1262864191]{padding:20px;background-color:var(--tui-background-neutral-1);border-radius:20px}</style><style ng-app-id="ng">
22video[_ngcontent-ng-c314026384]{display:block;width:100%!important;position:relative!important;height:100%;object-fit:cover;object-position:center}.overlay[_ngcontent-ng-c314026384]{position:absolute;top:0;left:0;width:100%;height:100%}</style><style ng-app-id="ng">.tui-text_display-1[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-display-1);letter-spacing:var(--tui-font-heading-display-1-letter-spacing)}.tui-text_display-2[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-display-2);letter-spacing:var(--tui-font-heading-display-2-letter-spacing)}.tui-text_display-3[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-display-3);letter-spacing:var(--tui-font-heading-display-3-letter-spacing)}.tui-text_h1[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-1);letter-spacing:var(--tui-font-heading-1-letter-spacing)}.tui-text_h2[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-2);letter-spacing:var(--tui-font-heading-1-letter-spacing)}.tui-text_h3[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-3);letter-spacing:var(--tui-font-heading-2-letter-spacing)}.tui-text_h4[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-4);letter-spacing:var(--tui-font-heading-3-letter-spacing)}.tui-text_h5[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-5);letter-spacing:var(--tui-font-heading-4-letter-spacing)}.tui-text_h6[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-6);letter-spacing:var(--tui-font-heading-5-letter-spacing)}.tui-text_body-l[_ngcontent-ng-c1434302071]{font:var(--tui-font-text-l);letter-spacing:var(--tui-font-text-l-letter-spacing)}.tui-text_body-m[_ngcontent-ng-c1434302071]{font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}.tui-text_body-s[_ngcontent-ng-c1434302071]{font:400 16.5px/26px var(--tui-font-text);letter-spacing:var(--tui-font-text-s-letter-spacing)}.tui-text_button[_ngcontent-ng-c1434302071]{font:var(--tui-font-text-button)!important;letter-spacing:-.35px}.tui-text_overline[_ngcontent-ng-c1434302071]{font:var(--tui-font-text-overline);line-height:20px;letter-spacing:4px}.tui-text-01[_ngcontent-ng-c1434302071]{color:var(--tui-text-primary)}.tui-text-02[_ngcontent-ng-c1434302071]{color:var(--tui-text-secondary)}.green-circle[_ngcontent-ng-c1434302071], .red-circle[_ngcontent-ng-c1434302071], .yellow-circle[_ngcontent-ng-c1434302071], .blue-circle[_ngcontent-ng-c1434302071], .grey-circle[_ngcontent-ng-c1434302071], .black-circle[_ngcontent-ng-c1434302071]{display:flex;align-items:center}.green-circle[_ngcontent-ng-c1434302071]:before, .red-circle[_ngcontent-ng-c1434302071]:before, .yellow-circle[_ngcontent-ng-c1434302071]:before, .blue-circle[_ngcontent-ng-c1434302071]:before, .grey-circle[_ngcontent-ng-c1434302071]:before, .black-circle[_ngcontent-ng-c1434302071]:before{content:"";min-width:10px;min-height:10px;border-radius:100%;margin-right:15px;background:var(--tui-border-normal)}.blue-circle[_ngcontent-ng-c1434302071]:before{background-color:var(--tui-status-info)}.yellow-circle[_ngcontent-ng-c1434302071]:before{background-color:var(--tui-status-warning)}.green-circle[_ngcontent-ng-c1434302071]:before{background-color:var(--tui-status-positive)}.red-circle[_ngcontent-ng-c1434302071]:before{background:var(--tui-status-negative)}.black-circle[_ngcontent-ng-c1434302071]:before{background:var(--tui-background-accent-opposite)}.grey-circle[_ngcontent-ng-c1434302071]:before{background:#9d9d9d}[tuiAppearance][data-appearance=secondary][_ngcontent-ng-c1434302071], [tuiAppearance][data-appearance=flat][_ngcontent-ng-c1434302071], [tuiAppearance][data-appearance=outline][_ngcontent-ng-c1434302071]{color:var(--tui-text-primary-on-secondary)}[tuiAppearance][data-appearance=icon][_ngcontent-ng-c1434302071]{color:var(--tui-text-tertiary)}.blog-list[_ngcontent-ng-c1434302071]{display:grid;grid-template-columns:repeat(var(--num-columns-desktop),1fr);column-gap:20px;row-gap:48px}app-button[_ngcontent-ng-c1434302071]{margin-right:auto;margin-left:auto}.loading[_ngcontent-ng-c1434302071]{display:flex;justify-content:center;padding-top:40px}app-card[_ngcontent-ng-c1434302071]{cursor:pointer}.card-content[_ngcontent-ng-c1434302071]{display:flex;flex-direction:column;height:100%}.image[_ngcontent-ng-c1434302071]{width:100%;overflow:hidden}.article-info[_ngcontent-ng-c1434302071]{padding:20px 20px 24px;display:flex;flex-direction:column;flex:1;font:var(--tui-font-text-m);letter-spacing:var(--tui-font-text-m-letter-spacing)}.title[_ngcontent-ng-c1434302071]{font:var(--tui-font-heading-5);letter-spacing:var(--tui-font-heading-4-letter-spacing);color:var(--tui-text-primary);margin-bottom:10px}.clamp[_ngcontent-ng-c1434302071]{pointer-events:none}.description[_ngcontent-ng-c1434302071]{color:var(--tui-text-secondary);margin:0;flex:1}.addional-info[_ngcontent-ng-c1434302071]{display:flex;align-items:center;gap:10px;color:var(--tui-text-secondary)}.empty-button[_ngcontent-ng-c1434302071]{height:56px}
22.author-name[_ngcontent-ng-c1434302071]{flex:1}@media(max-width:1280px){.blog-list[_ngcontent-ng-c1434302071]{grid-template-columns:repeat(var(--num-columns-tablet),1fr)}}@container (max-width: 1280px){.blog-list[_ngcontent-ng-c1434302071]{grid-template-columns:repeat(var(--num-columns-tablet),1fr)}}@media(max-width:767px){.blog-list[_ngcontent-ng-c1434302071]{grid-template-columns:repeat(1,1fr)}}@container (max-width: 767px){.blog-list[_ngcontent-ng-c1434302071]{grid-template-columns:repeat(1,1fr)}}</style><style ng-app-id="ng">.footer[_ngcontent-ng-c2511672999]{display:flex;flex-direction:row;flex-wrap:wrap-reverse;column-gap:60px;row-gap:50px}.logo-column[_ngcontent-ng-c2511672999]{flex-grow:100}.links-columns[_ngcontent-ng-c2511672999]{justify-content:space-between;flex-grow:1}.menu-list[_ngcontent-ng-c2511672999]{display:flex;flex-direction:row;flex-wrap:wrap;column-gap:70px;row-gap:48px}.menu-list[_ngcontent-ng-c2511672999] > app-footer-menu-list[_ngcontent-ng-c2511672999]{flex-grow:1}.icon-wrapper[_ngcontent-ng-c2511672999]{padding-left:10px}img[_ngcontent-ng-c2511672999]{display:inline-block;max-width:100%}.footer-paragraph[_ngcontent-ng-c2511672999]{color:var(--tui-text-secondary);margin:15px 0 33px}.social-icon[_ngcontent-ng-c2511672999]{display:inline-block;margin-right:20px}@media(max-width:1280px){.footer[_ngcontent-ng-c2511672999]{justify-content:start}}@container (max-width: 1280px){.footer[_ngcontent-ng-c2511672999]{justify-content:start}}@media(max-width:767px){.menu-list[_ngcontent-ng-c2511672999]{column-gap:50px}}@container (max-width: 767px){.menu-list[_ngcontent-ng-c2511672999]{column-gap:50px}}</style><style ng-app-id="ng">.header[_ngcontent-ng-c237844733]{margin-top:0;margin-bottom:20px;color:var(--tui-text-primary)}.footer-link[_ngcontent-ng-c237844733]{margin-bottom:15px} .footer-link a{color:var(--tui-text-secondary)!important;white-space:nowrap} .footer-link a:hover{color:var(--tui-text-primary)!important;white-space:nowrap}</style><style ng-app-id="ng">.card[_ngcontent-ng-c3802275756]{border-radius:var(--tui-radius-xl);overflow:overlay;height:100%}.normal-border[_ngcontent-ng-c3802275756]{border:2px solid var(--tui-border-normal)!important}.primary-border[_ngcontent-ng-c3802275756]{border:2px solid var(--tui-background-accent-1)!important}.accent-border[_ngcontent-ng-c3802275756]{border:2px solid var(--tui-background-accent-2)!important}</style><style ng-app-id="ng">.asset-container[_ngcontent-ng-c3713182591]{height:100%}img[_ngcontent-ng-c3713182591]{display:flex;position:relative!important;width:100%;object-fit:cover;height:100%}.asset-container[_ngcontent-ng-c3713182591]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--overlay-color);z-index:1;pointer-events:none}</style></head> 23 <body><!--nghm--> 24 <app-root ng-version="21.0.6" ngh="24" ng-server-context="ssr"><tui-root data-tui-version="4.66.0" data-platform="web" style="--tui-duration: 300ms; --tui-scroll-behavior: smooth;" class="_mobile" ngh="5"><div class="t-root-content"><router-outlet></router-outlet><app-root ngh="23"><div class="page-display"><div><app-blocks ngh="6"></app-blocks><app-page _nghost-ng-c2530830588="" ngh="22"><div _ngcontent-ng-c2530830588="" class="page-display-wrapper"><app-section-background _ngcontent-ng-c2530830588="" _nghost-ng-c2329383876="" ngh="8"><app-block-styled _ngcontent-ng-c2329383876="" _nghost-ng-c3229859464="" ngh="6"><div _ngcontent-ng-c3229859464="" class="styled-block" style="--tui-background-base:#000000ff;--tui-background-card:#050505f9;--tui-background-field:#0d0d0dd3;--tui-border-normal:#212121ff;--tui-border-focus:#212121ff;--tui-border-hover:#212121ff;--tui-text-primary:#ffffffff;--tui-text-secondary:#e6e6e6ff;--tui-text-tertiary:#e6e6e6ff;--tui-text-action:#707070ff;--tui-text-action-hover:#5e5e5eff;--tui-background-neutral-1:#121212ff;--tui-background-neutral-1-hover:#1f1f1fff;--tui-background-neutral-1-pressed:#2b2b2bff;--tui-text-primary-on-secondary:#ffffffff;--tui-background-accent-1:#e6fef1ff;--tui-background-accent-1-hover:#cdfde3ff;--tui-background-accent-1-pressed:#b5fcd6ff;--tui-text-primary-on-accent-1:#000000ff;--tui-background-accent-2:#fcfcfcff;--tui-background-accent-2-hover:#efefefff;--tui-background-accent-2-pressed:#e2e2e2ff;--tui-text-primary-on-accent-2:#000000ff;--tui-light-image:block;--tui-dark-image:none;"><div _ngcontent-ng-c2329383876="" class="asset-container"><!----><app-video _ngcontent-ng-c2329383876="" _nghost-ng-c314026384="" ngh="7"><video _ngcontent-ng-c314026384="" autoplay="" loop="" muted="" playsinline="true" webkit-playsinline="true" type="video/mp4" src="/uploads/kkuaa0j4zb1dzsa/geometric_arrow_pattern_6ulttgtfae_31xc4guoon.mp4"></video><div _ngcontent-ng-c314026384="" class="overlay" style="background-color: rgba(0, 0, 0, 0.8);"></div><!----></app-video><!----></div><div _ngcontent-ng-c2329383876="" class="section-container" style="min-height: 100%;"><div _ngcontent-ng-c2530830588="" blocktag="top-blocks"><div _ngcontent-ng-c2530830588="" blocktag="0"><app-block-spacing _ngcontent-ng-c2530830588="" _nghost-ng-c2286764126="" ngh="6"><div _ngcontent-ng-c2286764126="" style="--margin-top-desktop:15px;--margin-bottom-desktop:15px;--margin-top-tablet:15px;--margin-bottom-tablet:15px;--margin-top-mobile:15px;--margin-bottom-mobile:15px;" class=""><app-blocks _ngcontent-ng-c2530830588="" ngh="6"></app-blocks><app-top-menu1 _nghost-ng-c3082101480="" ngh="12"><section _ngcontent-ng-c3082101480="" class="topmenu1"><nav _ngcontent-ng-c3082101480="" class="navigation"><div _ngcontent-ng-c3082101480="" class="logo"><a _ngcontent-ng-c3082101480="" aria-label="Homepage" href="/"><app-logo _ngcontent-ng-c3082101480="" _nghost-ng-c1664382541="" ngh="9"><span _ngcontent-ng-c1664382541=""><img _ngcontent-ng-c1664382541="" priority="" alt="logo" class="light-image" src="/uploads/atxqpm5yhu2mjdv" height="30"><!----><img _ngcontent-ng-c1664382541="" priority="" alt="logo" class="dark-image" src="/uploads/lduwfp4xb43dsy4" height="30"><!----></span></app-logo></a></div><div _ngcontent-ng-c3082101480="" class="toggle"><button _ngcontent-ng-c3082101480="" tuiappearance="" tuiicons="" tuiiconbutton="" t
24ype="button" appearance="icon" size="m" aria-label="menu" style="" data-appearance="icon" data-size="m"><tui-icon _ngcontent-ng-c3082101480="" icon="@tui.align-justify" data-icon="svg" style="--t-icon: url(assets/taiga-ui/icons/align-justify.svg);" ngh="6"></tui-icon></button></div><div _ngcontent-ng-c3082101480="" class="menu"><app-link _ngcontent-ng-c3082101480="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/"><span class="tui-text_body-m"> Home </span></a><!----><!----><!----><!----></app-link><!----><!----><app-link _ngcontent-ng-c3082101480="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/pricing"><span class="tui-text_body-m"> Pricing </span></a><!----><!----><!----><!----></app-link><!----><!----><app-link _ngcontent-ng-c3082101480="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/contact-us"><span class="tui-text_body-m"> Contact Us </span></a><!----><!----><!----><!----></app-link><!----><!----><app-link _ngcontent-ng-c3082101480="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/changelog"><span class="tui-text_body-m"> Changelog </span></a><!----><!----><!----><!----></app-link><!----><!----><!----><app-button _ngcontent-ng-c3082101480="" _nghost-ng-c2259669178="" class="button" ngh="11"><a _ngcontent-ng-c2259669178="" tuiappearance="" tuiicons="" tuibutton="" type="button" class="fullWidth" style="" data-appearance="primary" data-size="m"><!----> Get Started <!----></a><!----><!----><!----><!----></app-button><!----><!----></div></nav></section></app-top-menu1><!----></div></app-block-spacing></div></div><div _ngcontent-ng-c2530830588="" blocktag="sections"><div _ngcontent-ng-c2530830588="" blocktag="0"><app-block-spacing _ngcontent-ng-c2530830588="" _nghost-ng-c2286764126="" ngh="6"><div _ngcontent-ng-c2286764126="" style="--margin-top-desktop:80px;--margin-bottom-desktop:80px;--margin-top-tablet:64px;--margin-bottom-tablet:64px;--margin-top-mobile:48px;--margin-bottom-mobile:48px;" class="block-spacing"><app-blocks _ngcontent-ng-c2530830588="" ngh="6"></app-blocks><app-features2 _nghost-ng-c3445491201="" ngh="6"><section _ngcontent-ng-c3445491201=""><div _ngcontent-ng-c3445491201="" class="tui-container tui-container_adaptive"><div _ngcontent-ng-c3445491201="" class="feature"><app-icon-styled _ngcontent-ng-c3445491201="" _nghost-ng-c1262864191="" ngh="13"><div _ngcontent-ng-c1262864191="" class="styled-icon none"><div _ngcontent-ng-c1262864191="" class="icon" style="height: 32px; width: 32px; color: var(--tui-background-accent-1);"><tui-icon _ngcontent-ng-c1262864191="" data-icon="svg" style="--t-icon: url(/assets/icons/feather/book-open.svg);" ngh="6"></tui-icon><!----><!----></div></div><!----></app-icon-styled><p _ngcontent-ng-c3445491201="" class="header"> Blog </p><p _ngcontent-ng-c3445491201="" class="paragraph"> </p></div></div></section></app-features2><!----></div></app-block-spacing></div></div><!----></div></div></app-block-styled></app-section-background><app-section-background _ngcontent-ng-c2530830588="" _nghost-ng-c2329383876="" ngh="14"><app-block-styled _ngcontent-ng-c2329383876="" _nghost-ng-c3229859464="" ngh="6"><div _ngcontent-ng-c3229859464="" class="styled-block" style="--tui-background-base:#000000ff;--tui-background-card:#050505f9;--tui-background-field:#0d0d0dd3;--tui-border-normal:#212121ff;--tui-border-focus:#212121ff;--tui-border-hover:#212121ff;--tui-text-primary:#ffffffff;--tui-text-secondary:#e6e6e6ff;--tui-text-tertiary:#e6e6e6ff;--tui-text-action:#707070ff;--tui-text-action-hover:#5e5e5eff;--tui-background-neutral-1:#121212ff;--tui-background-neutral-1-hover:#1f1f1fff;--tui-background-neutral-1-pressed:#2b2b2bff;--tui-text-primary-on-secondary:#ffffffff;--tui-background-accent-1:#e6fef1ff;--tui-background-accent-1-hover:#cdfde3ff;--tui-background-accent-1-pressed:#b5fcd6ff;--tui-text-primary-on-accent-1:#000000ff;--tui-background-accent-2:#fcfcfcff;--tui-background-accent-2-hover:#efefefff;--tui-background-accent-2-pressed:#e2e2e2ff;--tui-text-primary-on-accent-2:#000000ff;--tui-light-image:block;--tui-dark-image:none;"><div _ngcontent-ng-c2329383876="" class="asset-container"><!----><!----></div><div _ngcontent-ng-c2329383876="" class="section-container" style="min-height: 100%;"><div _ngcontent-ng-c2530830588="" blocktag="sections"><div _ngcontent-ng-c2530830588="" blocktag="1"><app-block-spacing _ngcontent-ng-c2530830588="" _nghost-ng-c2286764126="" ngh="6"><div _ngcontent-ng-c2286764126="" style="--margin-top-desktop:100px;--margin-bottom-desktop:100px;--margin-top-tablet:80px;--margin-bottom-tablet:80px;--margin-top-mobile:60px;--margin-bottom-mobile:60px;" class="block-spacing"><app-blocks _ngcontent-ng-c2530830588="" ngh="6"></app-blocks><app-post _nghost-ng-c1434302071="" ngh="17"><section _ngcontent-ng-c1434302071="" class="tui-container tui-container_adaptive"><div _ngcontent-ng-c1434302071="" class="blog-list" style="--num-columns-desktop: 2; --num-columns-tablet: 1;">
24<app-card _ngcontent-ng-c1434302071="" _nghost-ng-c3802275756="" ngh="15"><app-block-styled _ngcontent-ng-c3802275756="" _nghost-ng-c3229859464="" ngh="6"><div _ngcontent-ng-c3229859464="" class="styled-block"><div _ngcontent-ng-c3802275756="" class="card normal-border" style="background: #303030ff;"><div _ngcontent-ng-c1434302071="" class="card-content"><div _ngcontent-ng-c1434302071="" class="image" style="aspect-ratio: 2;"><app-image _ngcontent-ng-c1434302071="" _nghost-ng-c3713182591="" ngh="16"><div _ngcontent-ng-c3713182591="" class="asset-container" style="height: 100%;"><!----><img _ngcontent-ng-c3713182591="" style="aspect-ratio: 1.9885204081632653;" src="/uploads/se9g5ouoe0gdhtg"><!----></div><!----></app-image></div><!----><div _ngcontent-ng-c1434302071="" class="article-info"><p _ngcontent-ng-c1434302071="" class="title">Building Hostship: A lightweight Dokku alternative 25</p><p _ngcontent-ng-c1434302071="" class="description"> Lightweight CLI to help you self-host Plark on any VPS </p><div _ngcontent-ng-c1434302071="" class="addional-info" style="padding-top: 20px;"><!----><tui-icon _ngcontent-ng-c1434302071="" icon="@tui.calendar" data-icon="svg" style="--t-icon: url(assets/taiga-ui/icons/calendar.svg);" ngh="6"></tui-icon><span _ngcontent-ng-c1434302071=""> 2025-09-22 </span><!----></div></div></div></div></div></app-block-styled></app-card><app-card _ngcontent-ng-c1434302071="" _nghost-ng-c3802275756="" ngh="15"><app-block-styled _ngcontent-ng-c3802275756="" _nghost-ng-c3229859464="" ngh="6"><div _ngcontent-ng-c3229859464="" class="styled-block"><div _ngcontent-ng-c3802275756="" class="card normal-border" style="background: #303030ff;"><div _ngcontent-ng-c1434302071="" class="card-content"><div _ngcontent-ng-c1434302071="" class="image" style="aspect-ratio: 2;"><app-image _ngcontent-ng-c1434302071="" _nghost-ng-c3713182591="" ngh="16"><div _ngcontent-ng-c3713182591="" class="asset-container" style="height: 100%;"><!----><img _ngcontent-ng-c3713182591="" style="aspect-ratio: 1.9801829268292683;" src="/uploads/pc1k2cbm1qpobmv"><!----></div><!----></app-image></div><!----><div _ngcontent-ng-c1434302071="" class="article-info"><p _ngcontent-ng-c1434302071="" class="title">No-Code Isnât About CodeâItâs About Thoughtful Abstractions</p><p _ngcontent-ng-c1434302071="" class="description"> No-code tools changed the way people build websites, apps, and workflows - once the domain of programmers. While the ability to create without coding is an advantage to many, great no-code solutions shouldn't just replace code with a visual interface. </p><div _ngcontent-ng-c1434302071="" class="addional-info" style="padding-top: 20px;"><!----><tui-icon _ngcontent-ng-c1434302071="" icon="@tui.calendar" data-icon="svg" style="--t-icon: url(assets/taiga-ui/icons/calendar.svg);" ngh="6"></tui-icon><span _ngcontent-ng-c1434302071=""> 2025-02-08 </span><!----></div></div></div></div></div></app-block-styled></app-card><!----></div><!----></section></app-post><!----></div></app-block-spacing></div></div><!----></div></div></app-block-styled></app-section-background><app-section-background _ngcontent-ng-c2530830588="" _nghost-ng-c2329383876="" ngh="14"><app-block-styled _ngcontent-ng-c2329383876="" _nghost-ng-c3229859464="" ngh="6"><div _ngcontent-ng-c3229859464="" class="styled-block" style="--tui-background-base:#000000ff;--tui-background-card:#050505f9;--tui-background-field:#0d0d0dd3;--tui-border-normal:#212121ff;--tui-border-focus:#212121ff;--tui-border-hover:#212121ff;--tui-text-primary:#ffffffff;--tui-text-secondary:#e6e6e6ff;--tui-text-tertiary:#e6e6e6ff;--tui-text-action:#707070ff;--tui-text-action-hover:#5e5e5eff;--tui-background-neutral-1:#121212ff;--tui-background-neutral-1-hover:#1f1f1fff;--tui-background-neutral-1-pressed:#2b2b2bff;--tui-text-primary-on-secondary:#ffffffff;--tui-background-accent-1:#e6fef1ff;--tui-background-accent-1-hover:#cdfde3ff;--tui-background-accent-1-pressed:#b5fcd6ff;--tui-text-primary-on-accent-1:#000000ff;--tui-background-accent-2:#fcfcfcff;--tui-background-accent-2-hover:#efefefff;--tui-background-accent-2-pressed:#e2e2e2ff;--tui-text-primary-on-accent-2:#000000ff;--tui-light-image:block;--tui-dark-image:none;"><div _ngcontent-ng-c2329383876="" class="asset-container"><!----><!----></div><div _ngcontent-ng-c2329383876="" class="section-container" style="min-height: 100%;"><div _ngcontent-ng-c2530830588="" blocktag="bottom-blocks"><div _ngcontent-ng-c2530830588="" blocktag="0"><app-block-spacing _ngcontent-ng-c2530830588="" _nghost-ng-c2286764126="" ngh="6"><div _ngcontent-ng-c2286764126="" style="--margin-top-desktop:80px;--margin-bottom-desktop:80px;--margin-top-tablet:64px;--margin-bottom-tablet:64px;--margin-top-mobile:48px;--margin-bottom-mobile:48px;" class="block-spacing"><app-blocks _ngcontent-ng-c2530830588="" ngh="6"></app-blocks><app-footer1 _nghost-ng-c2511672999="" ngh="20"><section _ngcontent-ng-c2511672999=""><div _ngcontent-ng-c2511672999="" class="tui-container tui-container_adaptive"><div _ngcontent-ng-c2511672999="" class="footer"><div _ngcontent-ng-c2511672999="" class="logo-column"><app-logo _ngcontent-ng-c2511672999="" _nghost-ng-c1664382541="" ngh="9"><span _ngcontent-ng-c1664382541=""><img _ngcontent-ng-c1664382541="" priority="" alt="logo" class="light-image" src="/uploads/atxqpm5yhu2mjdv" height="30"><!----><img _ngcontent-ng-c1664382541="" priority="" alt="logo" class="dark-image" src="/uploads/lduwfp4xb43dsy4" height="30"><!----></span></app-logo><p _ngcontent-ng-c2511672999="" class="footer-paragraph tui-text_body-m"> Copyright © 2025. All rights reserved. </p></div><div _ngcontent-ng-c2511672999="" class="links-columns"><div _ngcontent-ng-c2511672999="" class="menu-list"><app-footer-menu-list _ngcontent-ng-c2511672999="" _nghost-ng-c237844733="" ngh="18"><p _ngcontent-ng-c237844733="" class="tui-text_h5 header">Links</p><ul _ngcontent-ng-c237844733=""><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/"><span class="tui-text_body-m"> Home </span></a><!----><!----><!----><!----></app-link></li><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/pricing"><span class="tui-text_body-m"> Pricing </span></a><!----><!----><!----><!----></app-link></li><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/contact-us"><span class="tui-text_body-m"> Contact Us </span></a><!----><!----><!----><!----></app-link></li><!----></ul></app-footer-menu-list><app-footer-menu-list _ngcontent-ng-c2511672999="" _nghost-ng-c237844733="" ngh="19"><p _ngcontent-ng-c237844733="" class="tui-text_h5 header">Support</p><ul _ngcontent-ng-c237844733=""><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/changelog"><span class="tui-text_body-m"> Changelog </span></a><!----><!----><!----><!----></app-link></li><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/blog"><span class="tui-text_body-m"> Blog </span></a><!----><!----><!----><!----></app-link></li><!----></ul></app-footer-menu-list><app-footer-menu-list _ngcontent-ng-c2511672999="" _nghost-ng-c237844733="" ngh="19"><p _ngcontent-ng-c237844733="" class="tui-text_h5 header">Legal</p><ul _ngcontent-ng-c237844733=""><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/privacy"><span class="tui-text_body-m"> Privacy </span></a><!----><!----><!----><!----></app-link></li><li _ngcontent-ng-c237844733="" class="footer-link"><app-link _ngcontent-ng-c237844733="" ngh="10"><!----><a tuiappearance="" tuiicons="" tuilink="" style="" data-appearance="action" href="/terms"><span class="tui-text_body-m"> Terms </span></a><!----><!----><!----><!----></app-link></li><!----></ul></app-footer-menu-list><!----></div></div></div></div></section></app-footer1><!----></div></app-block-spacing></div></div><!----></div></div></app-block-styled></app-section-background><!----><app-credit _ngcontent-ng-c2530830588="" _nghost-ng-c3952576619="" ngh="21"><!----><a _ngcontent-ng-c3952576619="" href="https://plark.com" target="_blank" rel="noopener" aria-label="Built with Plark - self-hosted website builder" title="Built with Plark - self-hosted website builder" class="plark-credit"><span _ngcontent-ng-c3952576619="" class="plark-credit__text">Built with Plark </span></a><!----><!----><!----></app-credit></div></app-page><!----></div><!----></div></app-root><!----></div>
25<tui-scroll-controls class="t-root-scrollbar" _nghost-ng-c586047382="" ngh="0"><!----><!----><!----><!----><!----><!----></tui-scroll-controls><!----><tui-popups ngh="1"><!----></tui-popups><tui-dialogs _nghost-ng-c242000724="" ngh="2"><div _ngcontent-ng-c242000724="" class="t-overlay"></div><!----></tui-dialogs><tui-alerts ngh="3"><!----></tui-alerts><tui-dropdowns style="position: absolute; width: 100%; top: 0;" ngh="1"><!----></tui-dropdowns><tui-hints aria-live="polite" _nghost-ng-c2886978137="" ngh="4"><!----></tui-hints><!----><!----></tui-root></app-root> 26 <link rel="modulepreload" href="chunk-4PJBCJNX.js"><link rel="modulepreload" href="chunk-ENAENDFR.js"><link rel="modulepreload" href="chunk-4GHXRDDG.js"><link rel="modulepreload" href="chunk-DAIAPVYP.js"><link rel="modulepreload" href="chunk-5R4ID5LV.js"><link rel="modulepreload" href="chunk-C46VXSCJ.js"><link rel="modulepreload" href="chunk-F4ZOBDZL.js"><link rel="modulepreload" href="chunk-YV53IP2E.js"><link rel="modulepreload" href="chunk-JLLYNCBC.js"><link rel="modulepreload" href="chunk-SSKZ3MQO.js">
26<script src="main-FTV75JP3.js" type="module"></script>
26 27
28<script id="ng-state" type="application/json">{"PAGE_DATA":{"_template":"page","sections":[{"_template":"features-2","description":"","header":"Blog","icon":{"_template":"styled-icon","asset":{"metadata":{},"source":1,"type":"image/svg+xml","url":"feather/book-open.svg"},"height":32,"style":"none"},"style":{"_template":"section-style","align":null,"background":{"_template":"background","extendBackground":false,"image":{"_template":"image","asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)"},"video":{"_template":"video","asset":{"metadata":{},"source":2,"type":"video/mp4","url":"kkuaa0j4zb1dzsa/geometric_arrow_pattern_6ulttgtfae_31xc4guoon.mp4"},"overlayColor":"rgba(0, 0, 0, 0.8)"}},"card":{"backgroundColor":null,"border":null,"style":null},"spacing":{"_template":"section-spacing","desktop":{"bottom":80,"top":80},"fullscreen":false,"mobile":{"bottom":48,"top":48},"tablet":{"bottom":64,"top":64}},"style":"base"}},{"_template":"post-collection-1","columns":2,"imageAspectRatio":2,"loadButton":{"_template":"button","appearanceName":"primary","label":"Load More","leftIcon":{"asset":null},"rightIcon":{"asset":null},"sizeName":"l","type":"action"},"pageSize":10,"showAuthor":false,"showDate":true,"style":{"_template":"section-style","align":null,"background":{"_template":"background","extendBackground":false,"image":{"_template":"image","asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)"},"video":{"_template":"video","asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)"}},"card":{"backgroundColor":"#303030ff","border":"normal","style":"inherit"},"spacing":{"_template":"section-spacing","desktop":{"bottom":100,"top":100},"fullscreen":false,"mobile":{"bottom":60,"top":60},"tablet":{"bottom":80,"top":80}},"style":"base"},"tags":["c3qa5w1ccyyyvx1"],"_collection":{"records":[{"status":"live","url":"/hostship-dokku-alternative","title":"Building Hostship: A lightweight Dokku alternative\n","sections":[{"richText":[{"_template":"text","content":"\u003Ch1 style=\"text-align: left;\">Building Hostship: A Lightweight Dokku Alternative\u003C/h1>\u003Cp style=\"text-align: left;\">\u003C/p>\u003Cp>I wanted a hassle-free way for users to deploy \u003Cstrong>Plark\u003C/strong>âa self-hosted website builderâon any VPS.\u003C/p>\u003Cp>Think \u003Cstrong>Dokkuâs spirit\u003C/strong> (\u003Ca href=\"https://progrium.github.io/blog/2013/06/19/dokku-the-smallest-paas-implementation-youve-ever-seen/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">originally under 100 lines of Bash\u003C/a>) ⦠I want it lightweight, for a single application, and simple for users.\u003C/p>\u003Cp>I was inspired by \u003Ca href=\"https://once.com/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">ONCEâs\u003C/a> model, where you buy a license, self-host on your own server, and start everything with a single command.\u003C/p>\u003Cp>Looking closer, I saw that ONCE protects their images with pull authorizationâyou buy a license, get a token, and only then can you pull the docker image. My initial plan was to follow that same approach.\u003C/p>\u003Cp>But mid-build I asked: \u003Cstrong>\u003Cem>Is that the right direction?\u003C/em>\u003C/strong>\u003C/p>\u003Cp>\u003C/p>\u003Ch2>Reach Over Control\u003C/h2>\u003Cp>Itâs hard to sell a product without letting people try it firsthand. And with a self-hosted product, I donât incur per-user infrastructure costsâso why not open it up? I chose a simpler path:\u003C/p>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>Open installs for everyone.\u003C/strong>\u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>Gate features behind a license.\u003C/strong>\u003C/p>\u003C/li>\u003C/ul>\u003Cp>This approach keeps things simple and accessible. Of course, someone could try to reverse-engineer and unlock features (violating the terms of use), but with frequent updates and the value of stability, most users would stick with the official builds.\u003C/p>\u003Cp>In return, I avoid the complexity of running a private registry and auth stack, and simply push images to \u003Cstrong>Docker Hub\u003C/strong>. That not only reduces moving parts, but also makes it trivial to distribute Plark on platforms like \u003Cstrong>Railway, Render, Dokploy, and others\u003C/strong>âanywhere that can pull public Docker images.\u003C/p>\u003Cp>\u003Cstrong>The result:\u003C/strong> less friction, wider distribution, and fewer moving parts.\u003C/p>\u003Cp>Paid features can be toggled in-app using a license key which is verified against a lightweight License endpointâcompletely decoupled from deployment.\u003C/p>\u003Cp>\u003C/p>\u003Ch2 style=\"text-align: left;\">Objective\u003C/h2>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>One-liner install.\u003C/strong> No prerequisites beyond a fresh VPS. \u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>Single compose file.\u003C/strong> Defines the services needed for your application. \u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>Pull-and-run updates.\u003C/strong> A tiny listener that can trigger updates on request.\u003C/p>\u003C/li>\u003C/ul>"},{"image":{"asset":{"source":2,"type":"image/webp","url":"se9g5ouoe0gdhtg","metadata":{"aspect_ratio":1.9885204081632653}},"_template":"image"},"width":"s","_template":"image-section"},{"_template":"text","content":"\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">Compose metadata\u003C/h3>\u003Cp>The application is defined by a single compose.json file hosted in an S3 bucket, which always points to the latest version. When an update is triggered, the CLI fetches the latest compose file and overrides the local one.\u003C/p>"},{"image":{"asset":{"source":2,"type":"image/png","url":"75jvj4vvhq1o4mq","metadata":{"aspect_ratio":0.6605691056910569}},"_template":"image"},"width":"s","_template":"image-section"},{"_template":"text","content":"\u003Cp>\u003C/p>\u003Ch2 style=\"text-align: left;\">The CLI\u003C/h2>\u003Cpre>\u003Ccode class=\"language-Shell\">hostship setup <compose-url>\u003C/code>\u003C/pre>\u003Cul>\u003Cli>\u003Cp>Installs Docker (if missing).\u003C/p>\u003C/li>\u003Cli>\u003Cp>Downloads compose.json\u003C/p>\u003C/li>\u003Cli>\u003Cp>Writes a \u003Ccode>.env\u003C/code> that includes an DEPLOY_URL. Triggering this url will update your compose to the latest version.\u003C/p>\u003Cul>\u003Cli>\u003Cp>\u003Ccode>DEPLOY_URL=http://172.17.0.1:8080/update/<KEY>\u003C/code>\u003C/p>\u003Cp>The server listener validates the key before updating.\u003C/p>\u003Cp>\u003C/p>\u003C/li>\u003C/ul>\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"language-Shell\">hostship start\u003C/code>\u003C/pre>\u003Cul>\u003Cli>\u003Cp>Starts the application.\u003C/p>\u003Cp>\u003C/p>\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"language-Shell\">hostship hotreload\u003C/code>\u003C/pre>\u003Cul>\u003Cli>\u003Cp>Runs a tiny HTTP listener, that when triggered fetches the latest \u003Ccode>compose.json\u003C/code> and restart the application.\u003C/p>\u003Cp>\u003C/p>\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"language-Shell\">hostship systemd install\u003C/code>\u003C/pre>\u003Cul>\u003Cli>\u003Cp>To ensure the service listener runs in the background and persists across reboots, this configures a systemd service.\u003C/p>\u003Cp style=\"text-align: left;\">\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>Domain Management\u003C/h2>\u003Cp>One aspect of tools like Dokku is domain managementâproxying requests, generating SSL certificates, and wiring everything up automatically. ONCE CLI as well, for example, asks for the domain name right during the setup. I initially considered following that pattern but decided to take a different path.\u003C/p>"},{"image":{"asset":{"source":2,"type":"image/png","url":"cdwxwzyu6zwgxdy","metadata":{"aspect_ratio":2.706382978723404}},"_template":"image"},"width":"s","_template":"image-section"},{"_template":"text","content":"\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">Decoupling Networking from the CLI\u003C/h3>\u003Cp>Domain and proxy requirements may vary widely across users and applications, For example:\u003C/p>\u003Cul>\u003Cli>\u003Cp>Some need simple redirects (e.g. \u003Ccode>www â apex domain or vice versa\u003C/code>).\u003C/p>\u003C/li>\u003Cli>\u003Cp>Custom cache headers.\u003C/p>\u003C/li>\u003Cli>\u003Cp>Multiple domains for different services.\u003C/p>\u003C/li>\u003Cli>\u003Cp>Multiple domains for the same service.\u003C/p>\u003C/li>\u003C/ul>\u003Cp>Baking domain and proxy management into the CLI would make it \u003Cstrong>either bloated or too opinionated\u003C/strong>. Instead, I chose not to handle these concerns at all, and leaned on Caddyâs APIâletting the Docker services themselves handle domains, SSL, and related configuration.\u003C/p>\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">Domain Handling\u003C/h3>\u003Cp>If the compose file is responsible for spinning up containers, Hostship is responsible for fetching and updating the \u003Ccode>compose.json\u003C/code> file.\u003C/p>\u003Cp>From there, the Docker services themselves take over. On startup, Plark makes an initial call to Caddyâs API to check the current configuration.\u003C/p>\u003Cul>\u003Cli>\u003Cp>If the configuration is empty, it initializes Caddy, so the application is exposed on the serverâs IP address. \u003C/p>\u003C/li>\u003Cli>\u003Cp>Once initialized, Plark also provides access for admin users to update the domain name of the service.\u003C/p>"},{"image":{"asset":{"source":2,"type":"image/webp","url":"ph8k5k5qev12qfy","metadata":{"aspect_ratio":2}},"_template":"image"},"width":"s","_template":"image-section"},{"_template":"text","content":"\u003Cp>\u003C/p>\u003Cp>Another upside of this approach: unlike ONCE, this doesnât force domain entry through the CLI. It also means a
28server can be fully provisioned \u003Cstrong>without the user ever needing to SSH into it manually\u003C/strong>âsince many providers (like Hetzner and DigitalOcean) support running an \u003Cstrong>init script via cloud-init\u003C/strong> on first boot. Therefore, you can pass in the install script, and the server comes online with your application already running.\u003C/p>\u003C/li>\u003C/ul>\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">Auto-Generating Domains: A Failed Experiment\u003C/h3>\u003Cp>I briefly experimented with auto-generating domains by combining the service name and the serverâs IP address, for example: \u003Cstrong>service.12.123.22.123.plark.com\u003C/strong>.\u003C/p>\u003Cp>This could be paired with services like \u003Ca href=\"https://sslip.io\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">sslip.io\u003C/a>\u003Cstrong> \u003C/strong>or a self-hosted custom DNS, to resolve IP-based domains and issue SSL certificates automatically. But the drawbacks piled up quickly:\u003C/p>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>Letâs Encrypt rate limits\u003C/strong>: issuing certificates repeatedly under the same apex domain quickly hit caps.\u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>Extra dependencies\u003C/strong>: relying on external DNS services adds fragility.\u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>User confusion\u003C/strong>: it is unexpected to install software on your own server and see it exposed on a domain name that you have no control over.\u003C/p>\u003C/li>\u003C/ul>\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">Why IPs are good enough (and now secure)\u003C/h3>\u003Cp>Exposing services on an IP address is perfectly fine for the initial setup. Users can always attach their own domains right after.\u003C/p>\u003Cp>Even better: \u003Ca href=\"https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Letâs Encrypt has announced that, later this year (2025),\u003C/a> it will begin issuing certificates for IP addresses. This means services exposed by IP will soon be able to run securely.\u003C/p>\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">Last Thoughts\u003C/h3>\u003Cp>What I took away from building Hostship is that cutting complexity pays off. A small CLI, a single compose file, and a lightweight update flow can go a long way without dragging in the weight of a full PaaS. By focusing only on the essentials, I ended up with a setup thatâs easy to ship, easy to maintain, and easy for others to run.\u003C/p>\u003Cp>If youâre working on building self-hosted product, this pattern can save you weeks of engineering time â and spare users a lot of unnecessary friction.\u003C/p>\u003Cp>Want to see how it works under the hood? The code is open source and available on GitHub: \u003Ca href=\"https://github.com/plark-inc/hostship\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">\u003Cem>plark-inc/hostship\u003C/em>\u003C/a>\u003C/p>\u003Cp>\u003C/p>"}],"style":{"style":"accent","align":null,"spacing":{"desktop":{"top":80,"bottom":80},"tablet":{"top":64,"bottom":64},"mobile":{"top":48,"bottom":48},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":false,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"rich-text"}],"settings":{"publishDate":"2025-09-22T20:00:00.000Z","image":{"asset":{"source":2,"type":"image/webp","url":"se9g5ouoe0gdhtg","metadata":{"aspect_ratio":1.9885204081632653}},"_template":"image"},"author":null,"tags":["c3qa5w1ccyyyvx1"],"extract":"Lightweight CLI to help you self-host Plark on any VPS","layout":"v7dt3zhq0gkd0ob","metaTitle":"Building Hostship: A lightweight Dokku Alternative","metaDescription":"Lightweight CLI to help you self-host Plark on any VPS"},"siteSettings":{"id":"6y3fiofgdxshtkb","_template":"site-settings","layout":{"layouts":[{"id":"v7dt3zhq0gkd0ob","label":"primary","topBlocks":[{"logo":{"light":{"source":2,"type":"image/svg+xml","url":"atxqpm5yhu2mjdv","metadata":{"aspect_ratio":2.3935643564356437}},"dark":{"source":2,"type":"image/svg+xml","url":"lduwfp4xb43dsy4","metadata":{"aspect_ratio":2.1577777777777776}},"height":30,"_template":"logo"},"items":[{"label":"Home","type":"page","url":"","entry":{"id":"64n30007ptcphsq","_template":"entry-l
28ink","url":"/"},"section":null,"_template":"link"},{"label":"Pricing","type":"page","url":"","entry":{"id":"3itrn2u7aar40sw","_template":"entry-link","url":"/pricing"},"section":0,"_template":"link"},{"label":"Contact Us","type":"page","url":"","entry":{"id":"8kpgq1b2uf368jy","_template":"entry-link","url":"/contact-us"},"section":0,"_template":"link"},{"label":"Changelog","type":"page","url":"","entry":{"id":"rtau98wzkfpiwcs","_template":"entry-link","url":"/changelog"},"section":0,"_template":"link"},{"label":"Get Started","appearanceName":"primary","sizeName":"m","type":"page","entry":{"id":"hrdcsnbxh4f1hke","_template":"entry-link","url":"/get-started"},"url":"","section":null,"leftIcon":{"asset":null},"rightIcon":{"asset":null},"_template":"button"}],"style":{"style":"base","align":null,"spacing":{"desktop":{"top":15,"bottom":15},"tablet":{"top":15,"bottom":15},"mobile":{"top":15,"bottom":15},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":true,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"top-menu-1"}],"bottomBlocks":[{"logo":{"light":{"source":2,"type":"image/svg+xml","url":"atxqpm5yhu2mjdv","metadata":{"aspect_ratio":2.3935643564356437}},"dark":{"source":2,"type":"image/svg+xml","url":"lduwfp4xb43dsy4","metadata":{"aspect_ratio":2.1577777777777776}},"height":30,"_template":"logo"},"description":"Copyright © 2025. All rights reserved.","menuList":[{"header":"Links","links":[{"label":"Home","type":"page","url":"","entry":{"id":"64n30007ptcphsq","_template":"entry-link","url":"/"},"section":0,"_template":"link"},{"label":"Pricing","type":"page","url":"","entry":{"id":"3itrn2u7aar40sw","_template":"entry-link","url":"/pricing"},"section":0,"_template":"link"},{"label":"Contact Us","type":"page","url":"","entry":{"id":"8kpgq1b2uf368jy","_template":"entry-link","url":"/contact-us"},"section":0,"_template":"link"}],"_template":"footer-menu-list"},{"header":"Support","links":[{"label":"Changelog","type":"page","url":"","entry":{"id":"rtau98wzkfpiwcs","_template":"entry-link","url":"/changelog"},"section":0,"_template":"link"},{"label":"Blog","type":"page","url":"","entry":{"id":"dqy9oyuaeb4jp80","_template":"entry-link","url":"/blog"},"section":0,"_template":"link"}],"_template":"footer-menu-list"},{"header":"Legal","links":[{"label":"Privacy","type":"page","url":"","entry":{"id":"4ucjid0wpkxm2f2","_template":"entry-link","url":"/privacy"},"section":0,"_template":"link"},{"label":"Terms","type":"page","url":"","entry":{"id":"z2uv0azpnea7gw7","_template":"entry-link","url":"/terms"},"section":0,"_template":"link"}],"_template":"footer-menu-list"}],"style":{"style":"base","align":null,"spacing":{"desktop":{"top":80,"bottom":80},"tablet":{"top":64,"bottom":64},"mobile":{"top":48,"bottom":48},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":false,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"footer-1"}]}]},"style":{"colors":{"choice":"custom","theme":"n6r8cnvgbht06tv","brand":{"base":"#000000FF","secondary":"#070707FF","primary":"#E6FEF1FF","accent":"#ffffffff"},"sections":[{"id":"base","label":"Base","background":{"section":"#000000ff","card":"#050505f9","field":"#0d0d0dd3","border":"#212121ff","image":"light"},"text":{"primary":"#ffffffff","secondary":"#e6e6e6ff","tertiary":"#e6e6e6ff","link":"#707070ff","linkHover":"#5e5e5eff"},"buttons":[{"label":"primary","color":"#e6fef1ff","hoverColor":"#cdfde3ff","activeColor":"#b5fcd6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#121212ff","hoverColor":"#1f1f1fff","activeColor":"#2b2b2bff","textColor":"#ffffffff","_template":"button-style"},{"label":"accent","color":"#fcfcfcff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"}],"_template":"section-color"},{"id":"primary","label":"Primary","background":{"section":"#e6fef1ff","card":"#e6fef1ff","field":"#e6fef1ff","border":"#c9fde1ff","image":"dark"},"text":{"primary":"#000000ff","secondary":"#033f1eff","tertiary":"#000000ff","link":"#4a4a4aff","linkHover":"#575757ff"},"buttons":[{"label":"primary","color":"#ffffffff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#c4fddeff","hoverColor":"#abfcd0ff","activeColor":"#93fbc2ff","textColor":"#000000ff","_template":"button-style"},{"label":"accent","color":"#070707ff","hoverColor":"#141414ff","activeColor":"#202020ff","textColor":"#ffffffff","_template":"button-style"}],"_template":"section-color"},{"id":"secondary","label":"Secondary","background":{"section":"#070707ff","card":"#070707ff","field":"#070707ff","border":"#161616ff","image":"light"},"text":{"primary":"#ffffffff","secondary":"#dfdfdfff","tertiary":"#e
286e6e6ff","link":"#ffffffff","linkHover":"#ffffffff"},"buttons":[{"label":"primary","color":"#e6fef1ff","hoverColor":"#cdfde3ff","activeColor":"#b5fcd6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#191919ff","hoverColor":"#262626ff","activeColor":"#323232ff","textColor":"#ffffffff","_template":"button-style"},{"label":"accent","color":"#fcfcfcff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"}],"_template":"section-color"},{"id":"accent","label":"Accent","background":{"section":"#fcfcfcff","card":"#fcfcfcff","field":"#fcfcfcff","border":"#edededff","image":"dark"},"text":{"primary":"#000000ff","secondary":"#1e1e1eff","tertiary":"#000000ff","link":"#367c57ff","linkHover":"#245139ff"},"buttons":[{"label":"primary","color":"#7fd7a6ff","hoverColor":"#6eb48eff","activeColor":"#7fd7a6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#eaeaeaff","hoverColor":"#ddddddff","activeColor":"#d0d0d0ff","textColor":"#000000ff","_template":"button-style"},{"label":"accent","color":"#070707ff","hoverColor":"#141414ff","activeColor":"#202020ff","textColor":"#ffffffff","_template":"button-style"}],"_template":"section-color"}],"_template":"style-color"},"_template":"style"},"favicon":{"icon":{"source":2,"type":"image/png","url":"dp8g852k7ugy8lp","metadata":{"aspect_ratio":1}},"name":"Plark","start_url":"/","display":"standalone","browserToolbar":"","splashScreenBackground":"","splashScreenToolbar":""},"scripts":{"script":"\u003Cscript defer src=\"https://cloud.umami.is/script.js\" data-website-id=\"2316ed2d-942f-42fb-b0da-3636b95edb98\">\u003C/script>","_template":"site-scripts"},"post":{"authors":[],"tags":[{"id":"opy97oaxwm1p2hl","label":"changelog"},{"id":"c3qa5w1ccyyyvx1","label":"blog"}]}},"_template":"post","id":"mji9x7ov8bu4zf4"},{"status":"live","url":"/blog/no-code-is-not-about-code","title":"No-Code Isnât About CodeâItâs About Thoughtful Abstractions","sections":[{"icon":{"asset":null,"height":40,"style":"none","_template":"styled-icon"},"header":"No-Code Isnât About CodeâItâs About Thoughtful Abstractions","description":"","style":{"style":"primary","align":null,"spacing":{"desktop":{"top":80,"bottom":80},"tablet":{"top":64,"bottom":64},"mobile":{"top":48,"bottom":48},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":false,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"features-2"},{"richText":[{"_template":"text","content":"\u003Cp style=\"text-align: left;\">No-code tools have changed the way people build websites, apps, and workflows - once the domain of programmers. While the ability to create without coding is an advantage to many, great no-code solutions shouldn't just replace code with \u003Cem>visual coding\u003C/em>. Instead, they should streamline complexity by focusing on what matters most.\u003C/p>\u003Cp style=\"text-align: left;\">\u003C/p>\u003Ch3>The Paradox of Flexibility\u003C/h3>"},{"image":{"asset":{"source":2,"type":"image/png","url":"nifeia9ez92c8cx","metadata":{"aspect_ratio":1.3970917225950783}},"_template":"image"},"width":"s","_template":"image-section"},{"_template":"text","content":"\u003Cp>Code is powerful largely because itâs flexible: it lets you control everything from the color of a button to the conditions under which certain functions run. At first glance, it may seem straightforward to replace these capabilities with toggle switches and drag-and-drop components.\u003C/p>\u003Cp>But as no-code tools add more options to match codingâs adaptability, their interfaces can become cluttered. Users facing dozens of knobs, dropdowns, and input fields often feel overwhelmedâdefeating the original goal of making creation easier.\u003C/p>\u003Cp>\u003C/p>\u003Ch3 style=\"text-align: left;\">How No-Code Gets It Right\u003C/h3>\u003Cp>Great no-code tools succeed by making intelligent design choices that reduce complexity while preserving some creative freedom. Instead of overwhelming users with endless options, they make strategic decisions on their behalf.\u003C/p>\u003Col>\u003Cli>\u003Cp>\u003Cstrong>Purposeful Defaults \u003C/strong>â A great no-code tool should minimize setup time by offering sensible presets. Instead of forcing users to configure every possible option, give them a robust starting point. The tool can automatically apply typical design settings or workflow logic that work for most use cases.\u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>Component-Based Design\u003C/strong> â Powerful no-code platforms organize features into intuitive building blocks, such as âFormsâ or âGalleries.â These ready-made modules ensure a consistent process and outcomes.\u003C/p>\u003C/li>\u003Cli>\u003Cp>\u003Cstrong>Focused Functionality\u003C/strong> â Some no-code tools aim to be everything for everyoneâbut this can lead to clutter. Platforms that focus on a
28specific niche (like landing pages, event registration, or internal dashboards) can deliver just the right balance of features without overwhelming users.\u003C/p>"},{"image":{"asset":{"source":2,"type":"image/webp","url":"pc1k2cbm1qpobmv","metadata":{"aspect_ratio":1.9801829268292683}},"_template":"image"},"width":"s","_template":"image-section"},{"_template":"text","content":"\u003C/li>\u003C/ol>\u003Cp>\u003C/p>\u003Ch3>Why Itâs Not Really About Code\u003C/h3>\u003Cp>At the heart of great no-code solutions is an understanding of user goals. Whether typing commands into a terminal or using a visual builder, the aim remains the same: to achieve an end goal without unnecessary complexity.\u003C/p>\u003Cp>\u003C/p>\u003Cp>No-code isnât about eliminating code but about striking a balance between power and simplicity. By leveraging smart defaults, component-based design, and a focus on specific use cases, the best no-code tools offer \u003Cstrong>the right amount of abstraction,\u003C/strong> simplifying the building process so users can concentrate on their ideas and outcomes. In the end, less can be more, especially when it comes to abstracting the internal mechanics.\u003C/p>\u003Ch3>\u003C/h3>\u003Cp>\u003C/p>"}],"style":{"style":"accent","align":null,"spacing":{"desktop":{"top":80,"bottom":80},"tablet":{"top":64,"bottom":64},"mobile":{"top":48,"bottom":48},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":false,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"rich-text"}],"settings":{"publishDate":"2025-02-08T17:02:16.795Z","image":{"asset":{"source":2,"type":"image/webp","url":"pc1k2cbm1qpobmv","metadata":{"aspect_ratio":1.9801829268292683}},"_template":"image"},"author":null,"tags":["c3qa5w1ccyyyvx1"],"extract":"No-code tools changed the way people build websites, apps, and workflows - once the domain of programmers. While the ability to create without coding is an advantage to many, great no-code solutions shouldn't just replace code with a visual interface.","layout":"v7dt3zhq0gkd0ob","metaTitle":"No-Code Isnât About CodeâItâs About Thoughtful Abstractions","metaDescription":"No-code tools changed the way people build websites, apps, and workflows - once the domain of programmers. While the ability to create without coding is an advantage to many, great no-code solutions shouldn't just replace code with a visual interface."},"siteSettings":{"id":"6y3fiofgdxshtkb","_template":"site-settings","layout":{"layouts":[{"id":"v7dt3zhq0gkd0ob","label":"primary","topBlocks":[{"logo":{"light":{"source":2,"type":"image/svg+xml","url":"atxqpm5yhu2mjdv","metadata":{"aspect_ratio":2.3935643564356437}},"dark":{"source":2,"type":"image/svg+xml","url":"lduwfp4xb43dsy4","metadata":{"aspect_ratio":2.1577777777777776}},"height":30,"_template":"logo"},"items":[{"label":"Home","type":"page","url":"","entry":{"id":"64n30007ptcphsq","_template":"entry-link","url":"/"},"section":null,"_template":"link"},{"label":"Pricing","type":"page","url":"","entry":{"id":"3itrn2u7aar40sw","_template":"entry-link","url":"/pricing"},"section":0,"_template":"link"},{"label":"Contact Us","type":"page","url":"","entry":{"id":"8kpgq1b2uf368jy","_template":"entry-link","url":"/contact-us"},"section":0,"_template":"link"},{"label":"Changelog","type":"page","url":"","entry":{"id":"rtau98wzkfpiwcs","_template":"entry-link","url":"/changelog"},"section":0,"_template":"link"},{"label":"Get Started","appearanceName":"primary","sizeName":"m","type":"page","entry":{"id":"hrdcsnbxh4f1hke","_template":"entry-link","url":"/get-started"},"url":"","section":null,"leftIcon":{"asset":null},"rightIcon":{"asset":null},"_template":"button"}],"style":{"style":"base","align":null,"spacing":{"desktop":{"top":15,"bottom":15},"tablet":{"top":15,"bottom":15},"mobile":{"top":15,"bottom":15},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"}
28,"extendBackground":true,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"top-menu-1"}],"bottomBlocks":[{"logo":{"light":{"source":2,"type":"image/svg+xml","url":"atxqpm5yhu2mjdv","metadata":{"aspect_ratio":2.3935643564356437}},"dark":{"source":2,"type":"image/svg+xml","url":"lduwfp4xb43dsy4","metadata":{"aspect_ratio":2.1577777777777776}},"height":30,"_template":"logo"},"description":"Copyright © 2025. All rights reserved.","menuList":[{"header":"Links","links":[{"label":"Home","type":"page","url":"","entry":{"id":"64n30007ptcphsq","_template":"entry-link","url":"/"},"section":0,"_template":"link"},{"label":"Pricing","type":"page","url":"","entry":{"id":"3itrn2u7aar40sw","_template":"entry-link","url":"/pricing"},"section":0,"_template":"link"},{"label":"Contact Us","type":"page","url":"","entry":{"id":"8kpgq1b2uf368jy","_template":"entry-link","url":"/contact-us"},"section":0,"_template":"link"}],"_template":"footer-menu-list"},{"header":"Support","links":[{"label":"Changelog","type":"page","url":"","entry":{"id":"rtau98wzkfpiwcs","_template":"entry-link","url":"/changelog"},"section":0,"_template":"link"},{"label":"Blog","type":"page","url":"","entry":{"id":"dqy9oyuaeb4jp80","_template":"entry-link","url":"/blog"},"section":0,"_template":"link"}],"_template":"footer-menu-list"},{"header":"Legal","links":[{"label":"Privacy","type":"page","url":"","entry":{"id":"4ucjid0wpkxm2f2","_template":"entry-link","url":"/privacy"},"section":0,"_template":"link"},{"label":"Terms","type":"page","url":"","entry":{"id":"z2uv0azpnea7gw7","_template":"entry-link","url":"/terms"},"section":0,"_template":"link"}],"_template":"footer-menu-list"}],"style":{"style":"base","align":null,"spacing":{"desktop":{"top":80,"bottom":80},"tablet":{"top":64,"bottom":64},"mobile":{"top":48,"bottom":48},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":false,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"footer-1"}]}]},"style":{"colors":{"choice":"custom","theme":"n6r8cnvgbht06tv","brand":{"base":"#000000FF","secondary":"#070707FF","primary":"#E6FEF1FF","accent":"#ffffffff"},"sections":[{"id":"base","label":"Base","background":{"section":"#000000ff","card":"#050505f9","field":"#0d0d0dd3","border":"#212121ff","image":"light"},"text":{"primary":"#ffffffff","secondary":"#e6e6e6ff","tertiary":"#e6e6e6ff","link":"#707070ff","linkHover":"#5e5e5eff"},"buttons":[{"label":"primary","color":"#e6fef1ff","hoverColor":"#cdfde3ff","activeColor":"#b5fcd6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#121212ff","hoverColor":"#1f1f1fff","activeColor":"#2b2b2bff","textColor":"#ffffffff","_template":"button-style"},{"label":"accent","color":"#fcfcfcff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"}],"_template":"section-color"},{"id":"primary","label":"Primary","background":{"section":"#e6fef1ff","card":"#e6fef1ff","field":"#e6fef1ff","border":"#c9fde1ff","image":"dark"},"text":{"primary":"#000000ff","secondary":"#033f1eff","tertiary":"#000000ff","link":"#4a4a4aff","linkHover":"#575757ff"},"buttons":[{"label":"primary","color":"#ffffffff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#c4fddeff","hoverColor":"#abfcd0ff","activeColor":"#93fbc2ff","textColor":"#000000ff","_template":"button-style"},{"label":"accent","color":"#070707ff","hoverColor":"#141414ff","activeColor":"#202020ff","textColor":"#ffffffff","_template":"button-style"}],"_template":"section-color"},{"id":"secondary","label":"Secondary","background":{"section":"#070707ff","card":"#070707ff","field":"#070707ff","border":"#161616ff","image":"light"},"text":{"primary":"#ffffffff","secondary":"#dfdfdfff","tertiary":"#e
286e6e6ff","link":"#ffffffff","linkHover":"#ffffffff"},"buttons":[{"label":"primary","color":"#e6fef1ff","hoverColor":"#cdfde3ff","activeColor":"#b5fcd6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#191919ff","hoverColor":"#262626ff","activeColor":"#323232ff","textColor":"#ffffffff","_template":"button-style"},{"label":"accent","color":"#fcfcfcff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"}],"_template":"section-color"},{"id":"accent","label":"Accent","background":{"section":"#fcfcfcff","card":"#fcfcfcff","field":"#fcfcfcff","border":"#edededff","image":"dark"},"text":{"primary":"#000000ff","secondary":"#1e1e1eff","tertiary":"#000000ff","link":"#367c57ff","linkHover":"#245139ff"},"buttons":[{"label":"primary","color":"#7fd7a6ff","hoverColor":"#6eb48eff","activeColor":"#7fd7a6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#eaeaeaff","hoverColor":"#ddddddff","activeColor":"#d0d0d0ff","textColor":"#000000ff","_template":"button-style"},{"label":"accent","color":"#070707ff","hoverColor":"#141414ff","activeColor":"#202020ff","textColor":"#ffffffff","_template":"button-style"}],"_template":"section-color"}],"_template":"style-color"},"_template":"style"},"favicon":{"icon":{"source":2,"type":"image/png","url":"dp8g852k7ugy8lp","metadata":{"aspect_ratio":1}},"name":"Plark","start_url":"/","display":"standalone","browserToolbar":"","splashScreenBackground":"","splashScreenToolbar":""},"scripts":{"script":"\u003Cscript defer src=\"https://cloud.umami.is/script.js\" data-website-id=\"2316ed2d-942f-42fb-b0da-3636b95edb98\">\u003C/script>","_template":"site-scripts"},"post":{"authors":[],"tags":[{"id":"opy97oaxwm1p2hl","label":"changelog"},{"id":"c3qa5w1ccyyyvx1","label":"blog"}]}},"_template":"post","id":"nxo0ox0stzgql0p"}],"totalRecords":2}}],"settings":{"layout":"v7dt3zhq0gkd0ob","metaDescription":"","metaTitle":"","publishDate":"2025-02-10T07:42:13.292Z"},"siteSettings":{"_template":"site-settings","id":"6y3fiofgdxshtkb","layout":{"layouts":[{"id":"v7dt3zhq0gkd0ob","label":"primary","topBlocks":[{"logo":{"light":{"source":2,"type":"image/svg+xml","url":"atxqpm5yhu2mjdv","metadata":{"aspect_ratio":2.3935643564356437}},"dark":{"source":2,"type":"image/svg+xml","url":"lduwfp4xb43dsy4","metadata":{"aspect_ratio":2.1577777777777776}},"height":30,"_template":"logo"},"items":[{"label":"Home","type":"page","url":"","entry":{"id":"64n30007ptcphsq","_template":"entry-link","url":"/"},"section":null,"_template":"link"},{"label":"Pricing","type":"page","url":"","entry":{"id":"3itrn2u7aar40sw","_template":"entry-link","url":"/pricing"},"section":0,"_template":"link"},{"label":"Contact Us","type":"page","url":"","entry":{"id":"8kpgq1b2uf368jy","_template":"entry-link","url":"/contact-us"},"section":0,"_template":"link"},{"label":"Changelog","type":"page","url":"","entry":{"id":"rtau98wzkfpiwcs","_template":"entry-link","url":"/changelog"},"section":0,"_template":"link"},{"label":"Get Started","appearanceName":"primary","sizeName":"m","type":"page","entry":{"id":"hrdcsnbxh4f1hke","_template":"entry-link","url":"/get-started"},"url":"","section":null,"leftIcon":{"asset":null},"rightIcon":{"asset":null},"_template":"button"}],"style":{"style":"base","align":null,"spacing":{"desktop":{"top":15,"bottom":15},"tablet":{"top":15,"bottom":15},"mobile":{"top":15,"bottom":15},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":true,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"top-menu-1"}],"bottomBlocks":[{"logo":{"light":{"source":2,"type":"image/svg+xml","url":"atxqpm5yhu2mjdv","metadata":{"aspect_ratio":2.3935643564356437}},"dark":{"source":2,"type":"image/svg+xml","url":"lduwfp4xb43dsy4","metadata":{"aspect_ratio":2.1577777777777776}},"height":30,"_template":"logo"},"description":"Copyright © 2025. All rights reserved.","menuList":[{"header":"Links","links":[{"label":"Home","type":"page","url":"","entry":{"id":"64n30007ptcphsq","_template":"entry-l
28ink","url":"/"},"section":0,"_template":"link"},{"label":"Pricing","type":"page","url":"","entry":{"id":"3itrn2u7aar40sw","_template":"entry-link","url":"/pricing"},"section":0,"_template":"link"},{"label":"Contact Us","type":"page","url":"","entry":{"id":"8kpgq1b2uf368jy","_template":"entry-link","url":"/contact-us"},"section":0,"_template":"link"}],"_template":"footer-menu-list"},{"header":"Support","links":[{"label":"Changelog","type":"page","url":"","entry":{"id":"rtau98wzkfpiwcs","_template":"entry-link","url":"/changelog"},"section":0,"_template":"link"},{"label":"Blog","type":"page","url":"","entry":{"id":"dqy9oyuaeb4jp80","_template":"entry-link","url":"/blog"},"section":0,"_template":"link"}],"_template":"footer-menu-list"},{"header":"Legal","links":[{"label":"Privacy","type":"page","url":"","entry":{"id":"4ucjid0wpkxm2f2","_template":"entry-link","url":"/privacy"},"section":0,"_template":"link"},{"label":"Terms","type":"page","url":"","entry":{"id":"z2uv0azpnea7gw7","_template":"entry-link","url":"/terms"},"section":0,"_template":"link"}],"_template":"footer-menu-list"}],"style":{"style":"base","align":null,"spacing":{"desktop":{"top":80,"bottom":80},"tablet":{"top":64,"bottom":64},"mobile":{"top":48,"bottom":48},"fullscreen":false,"_template":"section-spacing"},"background":{"image":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"image"},"video":{"asset":null,"overlayColor":"rgba(0, 0, 0, 0.8)","_template":"video"},"extendBackground":false,"_template":"background"},"card":{"style":null,"backgroundColor":null,"border":null},"_template":"section-style"},"_template":"footer-1"}]}]},"style":{"colors":{"choice":"custom","theme":"n6r8cnvgbht06tv","brand":{"base":"#000000FF","secondary":"#070707FF","primary":"#E6FEF1FF","accent":"#ffffffff"},"sections":[{"id":"base","label":"Base","background":{"section":"#000000ff","card":"#050505f9","field":"#0d0d0dd3","border":"#212121ff","image":"light"},"text":{"primary":"#ffffffff","secondary":"#e6e6e6ff","tertiary":"#e6e6e6ff","link":"#707070ff","linkHover":"#5e5e5eff"},"buttons":[{"label":"primary","color":"#e6fef1ff","hoverColor":"#cdfde3ff","activeColor":"#b5fcd6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#121212ff","hoverColor":"#1f1f1fff","activeColor":"#2b2b2bff","textColor":"#ffffffff","_template":"button-style"},{"label":"accent","color":"#fcfcfcff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"}],"_template":"section-color"},{"id":"primary","label":"Primary","background":{"section":"#e6fef1ff","card":"#e6fef1ff","field":"#e6fef1ff","border":"#c9fde1ff","image":"dark"},"text":{"primary":"#000000ff","secondary":"#033f1eff","tertiary":"#000000ff","link":"#4a4a4aff","linkHover":"#575757ff"},"buttons":[{"label":"primary","color":"#ffffffff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#c4fddeff","hoverColor":"#abfcd0ff","activeColor":"#93fbc2ff","textColor":"#000000ff","_template":"button-style"},{"label":"accent","color":"#070707ff","hoverColor":"#141414ff","activeColor":"#202020ff","textColor":"#ffffffff","_template":"button-style"}],"_template":"section-color"},{"id":"secondary","label":"Secondary","background":{"section":"#070707ff","card":"#070707ff","field":"#070707ff","border":"#161616ff","image":"light"},"text":{"primary":"#ffffffff","secondary":"#dfdfdfff","tertiary":"#e6e6e6ff","link":"#ffffffff","linkHover":"#ffffffff"},"buttons":[{"label":"primary","color":"#e6fef1ff","hoverColor":"#cdfde3ff","activeColor":"#b5fcd6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#191919ff","hoverColor":"#262626ff","activeColor":"#323232ff","textColor":"#ffffffff","_template":"button-style"},{"label":"accent","color":"#fcfcfcff","hoverColor":"#efefefff","activeColor":"#e2e2e2ff","textColor":"#000000ff","_template":"button-style"}],"_template":"section-color"},{"id":"accent","label":"Accent","background":{"section":"#fcfcfcff","card":"#fcfcfcff","field":"#fcfcfcff","border":"#edededff","image":"dark"},"text":{"primary":"#000000ff","secondary":"#1e1e1eff","tertiary":"#000000ff","link":"#367c57ff","linkHover":"#245139ff"},"buttons":[{"label":"primary","color":"#7fd7a6ff","hoverColor":"#6eb48eff","activeColor":"#7fd7a6ff","textColor":"#000000ff","_template":"button-style"},{"label":"secondary","color":"#eaeaeaff","hoverColor":"#ddddddff","activeColor":"#d0d0d0ff","textColor":"#000000ff","_template":"button-style"},{"label":"accent","color":"#070707ff","hoverColor":"#141414ff","activeColor":"#202020ff","textColor":"#ffffffff","_template":"button-style"}],"_template":"section-color"}],"_template":"style-color"},"_template":"style"},"favicon":{"icon":{"source":2,"type":"image/png","url":"dp8g852k7ugy8lp","metadata":{"aspect_ratio":1}},"name":"Plark","start_url":"/","display":"standalone","browserToolbar":"","splashScreenBackgroun
28d":"","splashScreenToolbar":""},"scripts":{"script":"\u003Cscript defer src=\"https://cloud.umami.is/script.js\" data-website-id=\"2316ed2d-942f-42fb-b0da-3636b95edb98\">\u003C/script>","_template":"site-scripts"},"post":{"authors":[],"tags":[{"id":"opy97oaxwm1p2hl","label":"changelog"},{"id":"c3qa5w1ccyyyvx1","label":"blog"}]}},"status":"live","title":"Blog","url":"/blog","id":"dqy9oyuaeb4jp80"},"is-licensed":false,"__nghData__":[{"t":{"0":"t2","1":"t3"},"c":{"0":[{"i":"t3","r":4,"t":{"0":"t4"},"c":{"0":[{"i":"t4","r":3,"e":{"0":2},"t":{"1":"t5","2":"t6"},"c":{"1":[],"2":[]}}]}}],"1":[]}},{"c":{"0":[]}},{"t":{"1":"t7"},"c":{"1":[]}},{"t":{"0":"t8"},"c":{"0":[]}},{"t":{"0":"t9"},"c":{"0":[]}},{"t":{"2":"t0"},"c":{"2":[{"i":"t0","r":8,"e":{"0":7},"t":{"1":"t1"},"c":{"1":[{"i":"t1","r":1}]},"n":{"4":"hfn4","6":"hfn5","8":"hfn6","10":"hfn7"}}]}},{},{"t":{"0":"t14"},"c":{"0":[{"i":"t14","r":2}]}},{"n":{"1":"0f2"},"t":{"2":"t12","3":"t13"},"c":{"2":[],"3":[{"i":"t13","r":1}]}},{"t":{"2":"t16","3":"t17"},"c":{"2":[{"i":"t16","r":1}],"3":[{"i":"t17","r":1}]}},{"t":{"0":"t20","1":"t21"},"c":{"0":[],"1":[{"i":"t21","r":4,"t":{"0":"t22","1":"t23","2":"t24"},"c":{"0":[{"i":"t22","r":1}],"1":[],"2":[]}}]}},{"t":{"0":"t26","1":"t31"},"c":{"0":[{"i":"t26","r":3,"t":{"0":"t27","1":"t30"},"c":{"0":[{"i":"t27","r":1,"t":{"1":"t28","3":"t29"},"c":{"1":[],"3":[]}}],"1":[]}}],"1":[]}},{"t":{"12":"t18"},"c":{"12":[{"i":"t18","r":3,"t":{"0":"t19","1":"t25"},"c":{"0":[{"i":"t19","r":1}],"1":[]},"x":4},{"i":"t18","r":3,"t":{"0":"t19","1":"t25"},"c":{"0":[],"1":[{"i":"t25","r":1}]}}]}},{"t":{"0":"t46"},"c":{"0":[{"i":"t46","r":1,"t":{"2":"t47","3":"t48"},"c":{"2":[{"i":"t47","r":1}],"3":[]}}]}},{"n":{"1":"0f2"},"t":{"2":"t12","3":"t13"},"c":{"2":[],"3":[]}},{"n":{"1":"0f2"}},{"t":{"0":"t40"},"c":{"0":[{"i":"t40","r":1,"t":{"1":"t41","2":"t42"},"c":{"1":[],"2":[{"i":"t42","r":1}]}}]}},{"t":{"3":"t59","4":"t63"},"c":{"3":[{"i":"t59","r":1,"n":{"1":"0f4"},"t":{"2":"t60","9":"t61","10":"t62"},"c":{"2":[{"i":"t60","r":1}],"9":[],"10":[{"i":"t62","r":2}]},"x":2}],"4":[]}},{"t":{"4":"t51"},"c":{"4":[{"i":"t51","r":1,"x":3}]}},{"t":{"4":"t51"},"c":{"4":[{"i":"t51","r":1,"x":2}]}},{"t":{"10":"t50"},"c":{"10":[{"i":"t50","r":1,"x":3}]}},{"t":{"0":"t52"},"c":{"0":[{"i":"t52","r":4,"t":{"0":"t53","1":"t54"},"c":{"0":[],"1":[{"i":"t54","r":2,"t":{"0":"t55"},"c":{"0":[{"i":"t55","r":1}]}}]}}]}},{"t":{"2":"t11"},"c":{"2":[{"i":"t11","r":1,"n":{"2":"0f3nf"},"t":{"2":"t15"},"c":{"2":[{"i":"t15","r":1,"n":{"3":"2f2"},"c":{"3":[{"i":"c3082101480","r":1}]}},{"i":"t15","r":1,"n":{"3":"2f2"},"c":{"3":[{"i":"c3445491201","r":1}]}}]}},{"i":"t11","r":1,"n":{"2":"0f3nf"},"t":{"2":"t15"},"c":{"2":[{"i":"t15","r":1,"n":{"3":"2f2"},"c":{"3":[{"i":"c1434302071","r":1}]}}]}},{"i":"t11","r":1,"n":{"2":"0f3nf"},"t":{"2":"t15"},"c":{"2":[{"i":"t15","r":1,"n":{"3":"2f2"},"c":{"3":[{"i":"c2511672999","r":1}]}}]}}]}},{"t":{"1":"t10"},"c":{"1":[{"i":"t10","r":1,"c":{"1":[{"i":"c2530830588","r":1}]}}]}},{"n":{"1":"0f2"},"c":{"1":[{"i":"c123398266","r":1}]}}]}</script>
28</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.