{"id":648,"date":"2024-01-15T16:13:23","date_gmt":"2024-01-15T14:13:23","guid":{"rendered":"http:\/\/kaksik.ee\/?page_id=648"},"modified":"2026-04-08T13:05:26","modified_gmt":"2026-04-08T10:05:26","slug":"ai-video-tellimine-1","status":"publish","type":"page","link":"https:\/\/kaksik.ee\/en\/ai-video-tellimine-1\/","title":{"rendered":"AI-video-tellimine-1"},"content":{"rendered":"<div class=\"brz brz-root__container brz-reset-all brz-root__container-page\" >\n<section id=\"ycbAZLtiEobn_ycbAZLtiEobn\" class=\"brz-section brz-css-d-section brz-css-7fe1tz\">\n<div class=\"brz-section__content brz-section--boxed brz-css-d-sectionitem-bg brz-css-m9bknz\" data-brz-custom-id=\"dr2N5a11A7xJ\">\n<div class=\"brz-bg\">\n<div class=\"brz-bg-color\"><\/div>\n<\/div>\n<div class=\"brz-container brz-css-d-sectionitem-container brz-css-imsmsy\">\n<div id=\"\" class=\"brz-css-d-wrapper brz-css-14y36t brz-wrapper\">\n<div class=\"brz-rich-text brz-rich-text__custom brz-css-d-richtext brz-css-1cldhv0\" data-brz-custom-id=\"wttq9niYgHiA\">\n<div data-brz-translate-text=\"1\">\n<h1 class=\"brz-text-lg-center brz-tp-lg-heading1 brz-css-uuCmq\" data-uniq-id=\"il0QE\" data-generated-css=\"brz-css-k_bt0\"><strong style=\"color: rgba(var(--brz-global-color7),1);\" class=\"brz-cp-color7\">AI VIDEO TELLIMINE<\/strong><\/h1>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"\" class=\"brz-css-d-wrapper brz-css-lg7nxy brz-wrapper\">\n<div class=\"brz-embed-code brz-css-d-embedcode brz-css-ho9km0\" data-brz-custom-id=\"cXYwiQX6gxKU\">\n<div class=\"brz-embed-content\">\n<div><link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700&amp;family=DM+Serif+Display&amp;display=swap\" rel=\"stylesheet\">\n<style>\n\/* \u2500\u2500 RESET & CONTAINER \u2500\u2500 *\/\n.kk-order * { box-sizing: border-box; margin: 0; padding: 0; }\n.kk-order {\n  max-width: 620px; margin: 0 auto; font-family: 'DM Sans', sans-serif;\n  color: #1a1a2e; -webkit-font-smoothing: antialiased;\n}<\/p>\n<p>\/* \u2500\u2500 CARD \u2500\u2500 *\/\n.kk-order-card {\n  background: #fff; border-radius: 16px;\n  box-shadow: 0 2px 20px rgba(8,27,118,0.07);\n  border: 1px solid rgba(8,27,118,0.06);\n  overflow: hidden;\n}<\/p>\n<p>\/* \u2500\u2500 HEADER \u2500\u2500 *\/\n.kk-order-header {\n  background: linear-gradient(135deg, #081b76 0%, #0d2399 100%);\n  padding: 36px 40px 32px; text-align: center; position: relative; overflow: hidden;\n}\n.kk-order-header::before {\n  content: ''; position: absolute; top: -40px; right: -40px;\n  width: 160px; height: 160px;\n  background: radial-gradient(circle, rgba(232,49,110,0.2) 0%, transparent 70%);\n  border-radius: 50%;\n}\n.kk-order-header::after {\n  content: ''; position: absolute; bottom: -30px; left: -20px;\n  width: 120px; height: 120px;\n  background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);\n  border-radius: 50%;\n}\n.kk-order-title {\n  font-family: 'DM Serif Display', serif; font-size: 28px;\n  color: #fff; line-height: 1.2; position: relative; z-index: 1;\n}\n.kk-order-subtitle {\n  font-size: 14px; color: rgba(255,255,255,0.65); margin-top: 8px;\n  position: relative; z-index: 1; font-weight: 400;\n}<\/p>\n<p>\/* \u2500\u2500 BODY \u2500\u2500 *\/\n.kk-order-body { padding: 32px 40px 40px; }\n@media (max-width: 600px) {\n  .kk-order-body { padding: 24px 20px 32px; }\n  .kk-order-header { padding: 28px 20px 24px; }\n}<\/p>\n<p>\/* \u2500\u2500 SECTION LABEL \u2500\u2500 *\/\n.kk-section-label {\n  font-size: 11px; font-weight: 700; letter-spacing: 0.1em;\n  text-transform: uppercase; color: #081b76; opacity: 0.5;\n  margin-bottom: 10px;\n}<\/p>\n<p>\/* \u2500\u2500 PRODUCT CARDS \u2500\u2500 *\/\n.kk-products { display: flex; gap: 14px; margin-bottom: 28px; }\n@media (max-width: 500px) { .kk-products { flex-direction: column; } }<\/p>\n<p>.kk-product-card {\n  flex: 1; border: 2px solid #e8e8ee; border-radius: 12px;\n  padding: 22px 20px; cursor: pointer; transition: all 0.2s;\n  position: relative; text-align: center; background: #fff;\n}\n.kk-product-card:hover { border-color: #c7d7f9; background: #fafaff; }\n.kk-product-card.selected {\n  border-color: #e8316e; background: rgba(232,49,110,0.03);\n  box-shadow: 0 0 0 1px #e8316e;\n}\n.kk-product-card.selected::after {\n  content: '\u2713'; position: absolute; top: 10px; right: 12px;\n  width: 22px; height: 22px; border-radius: 50%; background: #e8316e;\n  color: #fff; font-size: 12px; font-weight: 700;\n  display: flex; align-items: center; justify-content: center;\n}\n.kk-product-name {\n  font-family: 'DM Serif Display', serif; font-size: 20px;\n  color: #081b76; margin-bottom: 4px;\n}\n.kk-product-desc {\n  font-size: 12px; color: #6b7db3; margin-bottom: 12px; font-weight: 400;\n}\n.kk-product-price {\n  font-family: 'DM Serif Display', serif; font-size: 28px; color: #1a1a2e;\n  line-height: 1;\n}\n.kk-product-price .kk-eur { font-size: 18px; color: #e8316e; margin-left: 2px; }\n.kk-product-vat { font-size: 11px; color: #999; margin-top: 4px; }<\/p>\n<p>\/* \u2500\u2500 FORM FIELDS \u2500\u2500 *\/\n.kk-field-group { margin-bottom: 20px; }\n.kk-field-row { display: flex; gap: 14px; margin-bottom: 20px; }\n@media (max-width: 500px) { .kk-field-row { flex-direction: column; gap: 16px; } }<\/p>\n<p>.kk-label {\n  display: block; font-size: 13px; font-weight: 600; color: #081b76;\n  margin-bottom: 6px;\n}\n.kk-label .kk-optional { font-weight: 400; color: #999; font-size: 11px; }<\/p>\n<p>.kk-input, .kk-select, .kk-textarea {\n  width: 100%; padding: 12px 14px; border: 1.5px solid #e0e0ea;\n  border-radius: 8px; font-family: 'DM Sans', sans-serif; font-size: 14px;\n  color: #1a1a2e; background: #fff; transition: border-color 0.2s;\n  outline: none;\n}\n.kk-input:focus, .kk-select:focus, .kk-textarea:focus {\n  border-color: #081b76; box-shadow: 0 0 0 3px rgba(8,27,118,0.06);\n}\n.kk-input.error, .kk-select.error { border-color: #e8316e; }\n.kk-textarea { min-height: 80px; resize: vertical; }\n.kk-select { appearance: none; cursor: pointer;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%23081b76' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat; background-position: right 14px center;\n  padding-right: 36px;\n}<\/p>\n<p>\/* \u2500\u2500 SUBTITLES TOGGLE \u2500\u2500 *\/\n.kk-toggle-row {\n  display: flex; align-items: center; gap: 10px; margin-bottom: 20px;\n}\n.kk-toggle-group { display: flex; gap: 0; }\n.kk-toggle-btn {\n  padding: 8px 18px; border: 1.5px solid #e0e0ea; font-family: 'DM Sans', sans-serif;\n  font-size: 13px; font-weight: 500; color: #666; cursor: pointer;\n  background: #fff; transition: all 0.15s;\n}\n.kk-toggle-btn:first-child { border-radius: 8px 0 0 8px; }\n.kk-toggle-btn:last-child { border-radius: 0 8px 8px 0; border-left: none; }\n.kk-toggle-btn.active {\n  background: #e8316e; color: #fff; border-color: #e8316e;\n}\n.kk-toggle-btn.active + .kk-toggle-btn { border-left-color: #e8316e; }<\/p>\n<p>\/* \u2500\u2500 FILE UPLOAD \u2500\u2500 *\/\n.kk-upload-zone {\n  border: 2px dashed #d0d0dd; border-radius: 10px; padding: 20px;\n  text-align: center; cursor: pointer; transition: all 0.2s;\n  position: relative; margin-bottom: 20px; background: #fafaff;\n}\n.kk-upload-zone:hover { border-color: #081b76; background: #f0f3ff; }\n.kk-upload-zone.has-file { border-color: #16a34a; border-style: solid; background: #f0fdf4; }\n.kk-upload-icon { font-size: 24px; margin-bottom: 6px; color: #081b76; opacity: 0.4; }\n.kk-upload-text { font-size: 13px; color: #6b7db3; }\n.kk-upload-text strong { color: #081b76; }\n.kk-upload-hint { font-size: 11px; color: #999; margin-top: 4px; }\n.kk-upload-filename {\n  font-size: 13px; color: #16a34a; font-weight: 600; margin-top: 6px;\n  display: flex; align-items: center; justify-content: center; gap: 6px;\n}\n.kk-upload-remove {\n  background: none; border: none; color: #c0254f; font-size: 16px;\n  cursor: pointer; padding: 0 4px; line-height: 1;\n}\n.kk-upload-input { display: none; }<\/p>\n<p>\/* \u2500\u2500 DIVIDER \u2500\u2500 *\/\n.kk-divider { height: 1px; background: #eef0f5; margin: 28px 0; }<\/p>\n<p>\/* \u2500\u2500 GDPR CHECKBOX \u2500\u2500 *\/\n.kk-gdpr-label {\n  display: flex; align-items: flex-start; gap: 10px; cursor: pointer;\n  margin-bottom: 20px; font-size: 13px; color: #555; line-height: 1.5;\n}\n.kk-gdpr-label input[type=\"checkbox\"] { display: none; }\n.kk-gdpr-checkmark {\n  width: 20px; height: 20px; min-width: 20px; border-radius: 5px;\n  border: 2px solid #d0d0dd; display: flex; align-items: center;\n  justify-content: center; margin-top: 1px; transition: all 0.15s;\n  flex-shrink: 0;\n}\n.kk-gdpr-label:has(input:checked) .kk-gdpr-checkmark {\n  background: #e8316e; border-color: #e8316e;\n}\n.kk-gdpr-label:has(input:checked) .kk-gdpr-checkmark::after {\n  content: ''; width: 9px; height: 5px;\n  border-left: 2px solid #fff; border-bottom: 2px solid #fff;\n  transform: rotate(-45deg) translateY(-1px); display: block;\n}\n.kk-gdpr-link { color: #e8316e; text-decoration: underline; text-underline-offset: 2px; }\n.kk-gdpr-link:hover { color: #c0254f; }<\/p>\n<p>\/* \u2500\u2500 SUBMIT BUTTON \u2500\u2500 *\/\n.kk-submit-btn {\n  width: 100%; padding: 16px; background: #e8316e; color: #fff;\n  border: none; border-radius: 8px; font-family: 'DM Sans', sans-serif;\n  font-size: 15px; font-weight: 600; letter-spacing: 0.04em; cursor: pointer;\n  display: flex; align-items: center; justify-content: center; gap: 10px;\n  transition: background 0.2s, transform 0.15s;\n}\n.kk-submit-btn:hover { background: #c0254f; transform: translateY(-1px); }\n.kk-submit-btn:active { transform: translateY(0); }\n.kk-submit-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }\n.kk-submit-btn .arrow { font-size: 18px; }<\/p>\n<p>\/* \u2500\u2500 ERROR & SUCCESS \u2500\u2500 *\/\n.kk-form-error {\n  color: #c0254f; font-size: 12px; margin-bottom: 12px;\n  display: none; text-align: center;\n}\n.kk-form-success {\n  display: none; text-align: center; padding: 40px 20px;\n}\n.kk-success-icon { font-size: 48px; margin-bottom: 12px; }\n.kk-success-title {\n  font-family: 'DM Serif Display', serif; font-size: 24px;\n  color: #081b76; margin-bottom: 8px;\n}\n.kk-success-text { font-size: 14px; color: #6b7db3; line-height: 1.6; }<\/p>\n<p>\/* \u2500\u2500 SPINNER \u2500\u2500 *\/\n.kk-spinner {\n  display: inline-block; width: 18px; height: 18px;\n  border: 2px solid rgba(255,255,255,0.3); border-top-color: #fff;\n  border-radius: 50%; animation: kk-spin 0.6s linear infinite;\n}\n@keyframes kk-spin { to { transform: rotate(360deg); } }\n<\/style>\n<div class=\"kk-order\">\n<div class=\"kk-order-card\">\n<p>    <!-- HEADER --><\/p>\n<div class=\"kk-order-header\">\n<div class=\"kk-order-title\" id=\"kk-form-title\">AI Video tellimine<\/div>\n<div class=\"kk-order-subtitle\" id=\"kk-form-subtitle\">Vali pakett, t\u00e4ida andmed ja saada tellimus<\/div>\n<\/p><\/div>\n<p>    <!-- FORM BODY --><\/p>\n<div class=\"kk-order-body\" id=\"kk-form-body\">\n<p>      <!-- 1. PRODUCT SELECTION --><\/p>\n<div class=\"kk-section-label\" data-i18n=\"section_product\">Vali pakett<\/div>\n<div class=\"kk-products\">\n<div class=\"kk-product-card\" data-product=\"start\" onclick=\"selectProduct('start')\">\n<div class=\"kk-product-name\">START<\/div>\n<div class=\"kk-product-desc\" data-i18n=\"start_desc\">AI video kuni 2 min<\/div>\n<div class=\"kk-product-price\">299<span class=\"kk-eur\">\u20ac<\/span><\/div>\n<div class=\"kk-product-vat\">+ km<\/div>\n<\/p><\/div>\n<div class=\"kk-product-card\" data-product=\"standard\" onclick=\"selectProduct('standard')\">\n<div class=\"kk-product-name\">STANDARD<\/div>\n<div class=\"kk-product-desc\" data-i18n=\"standard_desc\">AI video kuni 5 min<\/div>\n<div class=\"kk-product-price\">549<span class=\"kk-eur\">\u20ac<\/span><\/div>\n<div class=\"kk-product-vat\">+ km<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>      <!-- 2. CONTACT FIELDS --><\/p>\n<div class=\"kk-section-label\" data-i18n=\"section_contact\">Tellija andmed<\/div>\n<div class=\"kk-field-row\">\n<div class=\"kk-field-group\" style=\"flex:1;\">\n          <label class=\"kk-label\" data-i18n=\"label_name\">Nimi<\/label><br \/>\n          <input type=\"text\" class=\"kk-input\" id=\"kk-name\" placeholder=\"\" autocomplete=\"name\">\n        <\/div>\n<div class=\"kk-field-group\" style=\"flex:1;\">\n          <label class=\"kk-label\" data-i18n=\"label_email\">E-post<\/label><br \/>\n          <input type=\"email\" class=\"kk-input\" id=\"kk-email\" placeholder=\"\" autocomplete=\"email\">\n        <\/div>\n<\/p><\/div>\n<p>      <!-- 3. LANGUAGE --><\/p>\n<div class=\"kk-field-group\">\n        <label class=\"kk-label\" data-i18n=\"label_language\">Video keel<\/label><br \/>\n        <select class=\"kk-select\" id=\"kk-language\"><option value=\"estonian\" data-i18n-opt=\"lang_et\">Eesti<\/option><option value=\"english\" data-i18n-opt=\"lang_en\">Inglise<\/option><option value=\"russian\" data-i18n-opt=\"lang_ru\">Vene<\/option><\/select>\n      <\/div>\n<p>      <!-- 4. SUBTITLES --><\/p>\n<div class=\"kk-field-group\">\n        <label class=\"kk-label\" data-i18n=\"label_subtitles\">Subtiitrid<\/label><\/p>\n<div class=\"kk-toggle-row\">\n<div class=\"kk-toggle-group\">\n            <button type=\"button\" class=\"kk-toggle-btn active\" data-sub=\"yes\" onclick=\"selectSubtitles('yes')\" data-i18n=\"sub_yes\">Jah<\/button><br \/>\n            <button type=\"button\" class=\"kk-toggle-btn\" data-sub=\"no\" onclick=\"selectSubtitles('no')\" data-i18n=\"sub_no\">Ei<\/button>\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>      <!-- 5. SCRIPT UPLOAD --><\/p>\n<div class=\"kk-field-group\">\n        <label class=\"kk-label\"><br \/>\n          <span data-i18n=\"label_script\">Video stsenaarium<\/span><br \/>\n          <span class=\"kk-optional\" id=\"kk-script-hint\" data-i18n=\"script_hint_start\">(kuni 240 s\u00f5na)<\/span><br \/>\n        <\/label><\/p>\n<div class=\"kk-upload-zone\" id=\"kk-script-zone\" onclick=\"document.getElementById('kk-script-file').click()\">\n<div class=\"kk-upload-icon\"><\/div>\n<div class=\"kk-upload-text\" data-i18n=\"upload_text\">Kliki v\u00f5i lohista fail siia<\/div>\n<div class=\"kk-upload-hint\" data-i18n=\"upload_hint_script\">.doc, .docx, .pdf, .txt<\/div>\n<div class=\"kk-upload-filename\" id=\"kk-script-filename\" style=\"display:none;\"><\/div>\n<p>          <input type=\"file\" class=\"kk-upload-input\" id=\"kk-script-file\" accept=\".doc,.docx,.pdf,.txt\" onchange=\"handleFileSelect('script')\">\n        <\/div>\n<\/p><\/div>\n<p>      <!-- 6. LOGO UPLOAD --><\/p>\n<div class=\"kk-field-group\">\n        <label class=\"kk-label\"><br \/>\n          <span data-i18n=\"label_logo\">Ettev\u00f5tte logo<\/span><br \/>\n        <\/label><\/p>\n<div class=\"kk-upload-zone\" id=\"kk-logo-zone\" onclick=\"document.getElementById('kk-logo-file').click()\">\n<div class=\"kk-upload-icon\"><\/div>\n<div class=\"kk-upload-text\" data-i18n=\"upload_text\">Kliki v\u00f5i lohista fail siia<\/div>\n<div class=\"kk-upload-hint\" data-i18n=\"upload_hint_logo\">.png, .jpg, .svg, .ai, .eps<\/div>\n<div class=\"kk-upload-filename\" id=\"kk-logo-filename\" style=\"display:none;\"><\/div>\n<p>          <input type=\"file\" class=\"kk-upload-input\" id=\"kk-logo-file\" accept=\".png,.jpg,.jpeg,.svg,.ai,.eps\" onchange=\"handleFileSelect('logo')\">\n        <\/div>\n<\/p><\/div>\n<p>      <!-- 7. COMMENT --><\/p>\n<div class=\"kk-field-group\">\n        <label class=\"kk-label\"><br \/>\n          <span data-i18n=\"label_comment\">Kommentaar<\/span><br \/>\n          <span class=\"kk-optional\" data-i18n=\"optional\">(valikuline)<\/span><br \/>\n        <\/label><br \/>\n        <textarea class=\"kk-textarea\" id=\"kk-comment\" rows=\"3\"><\/textarea>\n      <\/div>\n<div class=\"kk-divider\"><\/div>\n<p>      <!-- 8. GDPR --><br \/>\n      <label class=\"kk-gdpr-label\"><br \/>\n        <input type=\"checkbox\" id=\"kk-gdpr\"><br \/>\n        <span class=\"kk-gdpr-checkmark\"><\/span><br \/>\n        <span id=\"kk-gdpr-text\"><br \/>\n          N\u00f5ustun oma isikuandmete t\u00f6\u00f6tlemisega vastavalt<br \/>\n          <a href=\"https:\/\/kaksik.ee\/privaatsuspoliitika\" target=\"_blank\" class=\"kk-gdpr-link\">Privaatsuspoliitikale<\/a><br \/>\n        <\/span><br \/>\n      <\/label><\/p>\n<p>      <!-- ERROR --><\/p>\n<div class=\"kk-form-error\" id=\"kk-error\"><\/div>\n<p>      <!-- 9. SUBMIT --><br \/>\n      <button type=\"button\" class=\"kk-submit-btn\" id=\"kk-submit\" onclick=\"submitOrder()\"><br \/>\n        <span id=\"kk-submit-text\" data-i18n=\"btn_submit\">Saada tellimus<\/span><br \/>\n        <span class=\"arrow\">\u2192<\/span><br \/>\n      <\/button><\/p><\/div>\n<p>    <!-- SUCCESS STATE --><\/p>\n<div class=\"kk-form-success\" id=\"kk-success\">\n<div class=\"kk-success-icon\"><\/div>\n<div class=\"kk-success-title\" id=\"kk-success-title\">Tellimus saadetud!<\/div>\n<div class=\"kk-success-text\" id=\"kk-success-text\">\n        T\u00e4nan! V\u00f5tan peatselt \u00fchendust, et detaile t\u00e4psustada.\n      <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p><script>\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ i18n \u2014 TranslatePress detection\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst KK_LANG = (() => {\n  \/\/ 1. TranslatePress: check html lang attribute\n  const htmlLang = document.documentElement.lang || '';\n  if (htmlLang.startsWith('en')) return 'en';\n  \/\/ 2. TranslatePress: check URL prefix \/en\/\n  if (window.location.pathname.startsWith('\/en\/') || window.location.pathname.startsWith('\/en')) return 'en';\n  \/\/ 3. TranslatePress cookie\n  const m = document.cookie.match(\/trp_language=([^;]+)\/);\n  if (m && m[1].startsWith('en')) return 'en';\n  return 'et';\n})();<\/p>\n<p>const i18n = {\n  et: {\n    form_title: 'Tellimisvorm',\n    form_subtitle: 'Vali pakett, t\u00e4ida andmed ja saada tellimus',\n    section_product: 'Vali pakett',\n    start_desc: 'AI video kuni 2 min',\n    standard_desc: 'AI video kuni 5 min',\n    section_contact: 'Tellija andmed',\n    label_name: 'Nimi',\n    label_email: 'E-post',\n    label_language: 'Video keel',\n    lang_et: 'Eesti',\n    lang_en: 'Inglise',\n    lang_ru: 'Vene',\n    label_subtitles: 'Subtiitrid',\n    sub_yes: 'Jah',\n    sub_no: 'Ei',\n    label_script: 'Video stsenaarium',\n    script_hint_start: '(kuni 240 s\u00f5na)',\n    script_hint_standard: '(kuni 600 s\u00f5na)',\n    upload_text: 'Kliki v\u00f5i lohista fail siia',\n    upload_hint_script: '.doc, .docx, .pdf, .txt',\n    upload_hint_logo: '.png, .jpg, .svg, .ai, .eps',\n    label_logo: 'Ettev\u00f5tte logo',\n    label_comment: 'Kommentaar',\n    optional: '(valikuline)',\n    gdpr_text: 'N\u00f5ustun oma isikuandmete t\u00f6\u00f6tlemisega vastavalt <a href=\"https:\/\/kaksik.ee\/privaatsuspoliitika\" target=\"_blank\" class=\"kk-gdpr-link\">Privaatsuspoliitikale<\/a>',\n    btn_submit: 'Saada tellimus',\n    success_title: 'Tellimus saadetud!',\n    success_text: 'T\u00e4nan! V\u00f5tan peatselt \u00fchendust, et detaile t\u00e4psustada.',\n    err_product: 'Palun vali pakett.',\n    err_name: 'Palun sisesta nimi.',\n    err_email: 'Palun sisesta korrektne e-posti aadress.',\n    err_gdpr: 'Palun n\u00f5ustu isikuandmete t\u00f6\u00f6tlemisega.',\n    err_send: 'Viga saatmisel. Palun proovi uuesti.',\n    btn_sending: 'Saadan...',\n  },\n  en: {\n    form_title: 'Order form',\n    form_subtitle: 'Choose a package, fill in details and submit your order',\n    section_product: 'Choose package',\n    start_desc: 'AI video up to 2 min',\n    standard_desc: 'AI video up to 5 min',\n    section_contact: 'Your details',\n    label_name: 'Name',\n    label_email: 'Email',\n    label_language: 'Video language',\n    lang_et: 'Estonian',\n    lang_en: 'English',\n    lang_ru: 'Russian',\n    label_subtitles: 'Subtitles',\n    sub_yes: 'Yes',\n    sub_no: 'No',\n    label_script: 'Video script',\n    script_hint_start: '(up to 240 words)',\n    script_hint_standard: '(up to 600 words)',\n    upload_text: 'Click or drag a file here',\n    upload_hint_script: '.doc, .docx, .pdf, .txt',\n    upload_hint_logo: '.png, .jpg, .svg, .ai, .eps',\n    label_logo: 'Company logo',\n    label_comment: 'Comment',\n    optional: '(optional)',\n    gdpr_text: 'I consent to the processing of my personal data in accordance with the <a href=\"https:\/\/kaksik.ee\/en\/privaatsuspoliitika\" target=\"_blank\" class=\"kk-gdpr-link\">Privacy Policy<\/a>',\n    btn_submit: 'Submit order',\n    success_title: 'Order submitted!',\n    success_text: 'Thank you! I will contact you shortly to specify details.',\n    err_product: 'Please select a package.',\n    err_name: 'Please enter your name.',\n    err_email: 'Please enter a valid email address.',\n    err_gdpr: 'Please consent to data processing.',\n    err_send: 'Sending failed. Please try again.',\n    btn_sending: 'Sending...',\n  }\n};<\/p>\n<p>function t(key) { return (i18n[KK_LANG] || i18n['et'])[key] || key; }<\/p>\n<p>\/\/ Apply translations on load\nfunction applyLang() {\n  const L = i18n[KK_LANG] || i18n['et'];\n  document.getElementById('kk-form-title').textContent = L.form_title;\n  document.getElementById('kk-form-subtitle').textContent = L.form_subtitle;\n  document.getElementById('kk-gdpr-text').innerHTML = L.gdpr_text;\n  document.getElementById('kk-submit-text').textContent = L.btn_submit;\n  document.getElementById('kk-success-title').textContent = L.success_title;\n  document.getElementById('kk-success-text').textContent = L.success_text;<\/p>\n<p>  \/\/ data-i18n elements\n  document.querySelectorAll('[data-i18n]').forEach(el => {\n    const key = el.getAttribute('data-i18n');\n    if (L[key]) el.textContent = L[key];\n  });\n  \/\/ select options\n  document.querySelectorAll('[data-i18n-opt]').forEach(el => {\n    const key = el.getAttribute('data-i18n-opt');\n    if (L[key]) el.textContent = L[key];\n  });<\/p>\n<p>  updateScriptHint();\n}<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ STATE\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nlet selectedProduct = null;\nlet selectedSubtitles = 'yes';<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ PRODUCT SELECTION\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction selectProduct(type) {\n  selectedProduct = type;\n  document.querySelectorAll('.kk-product-card').forEach(c => {\n    c.classList.toggle('selected', c.dataset.product === type);\n  });\n  updateScriptHint();\n}<\/p>\n<p>function updateScriptHint() {\n  const hint = document.getElementById('kk-script-hint');\n  if (selectedProduct === 'standard') {\n    hint.textContent = t('script_hint_standard');\n  } else {\n    hint.textContent = t('script_hint_start');\n  }\n}<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ SUBTITLES TOGGLE\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction selectSubtitles(val) {\n  selectedSubtitles = val;\n  document.querySelectorAll('.kk-toggle-btn').forEach(btn => {\n    btn.classList.toggle('active', btn.dataset.sub === val);\n  });\n}<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ FILE UPLOADS\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction handleFileSelect(type) {\n  const input = document.getElementById(type === 'script' ? 'kk-script-file' : 'kk-logo-file');\n  const zone = document.getElementById(type === 'script' ? 'kk-script-zone' : 'kk-logo-zone');\n  const fnEl = document.getElementById(type === 'script' ? 'kk-script-filename' : 'kk-logo-filename');<\/p>\n<p>  if (input.files.length > 0) {\n    const file = input.files[0];\n    zone.classList.add('has-file');\n    fnEl.style.display = 'flex';\n    fnEl.innerHTML = ' ' + file.name +\n      ' <button class=\"kk-upload-remove\" onclick=\"event.stopPropagation(); removeFile('' + type + '')\" title=\"Eemalda\">\u00d7<\/button>';\n    \/\/ hide default content\n    zone.querySelector('.kk-upload-icon').style.display = 'none';\n    zone.querySelector('.kk-upload-text').style.display = 'none';\n    zone.querySelector('.kk-upload-hint').style.display = 'none';\n  }\n}<\/p>\n<p>function removeFile(type) {\n  const input = document.getElementById(type === 'script' ? 'kk-script-file' : 'kk-logo-file');\n  const zone = document.getElementById(type === 'script' ? 'kk-script-zone' : 'kk-logo-zone');\n  const fnEl = document.getElementById(type === 'script' ? 'kk-script-filename' : 'kk-logo-filename');<\/p>\n<p>  input.value = '';\n  zone.classList.remove('has-file');\n  fnEl.style.display = 'none';\n  fnEl.innerHTML = '';\n  zone.querySelector('.kk-upload-icon').style.display = '';\n  zone.querySelector('.kk-upload-text').style.display = '';\n  zone.querySelector('.kk-upload-hint').style.display = '';\n}<\/p>\n<p>\/\/ Drag-and-drop support\n['kk-script-zone', 'kk-logo-zone'].forEach(id => {\n  const zone = document.getElementById(id);\n  const type = id.includes('script') ? 'script' : 'logo';\n  const input = document.getElementById(type === 'script' ? 'kk-script-file' : 'kk-logo-file');<\/p>\n<p>  zone.addEventListener('dragover', e => { e.preventDefault(); zone.style.borderColor = '#081b76'; });\n  zone.addEventListener('dragleave', e => { e.preventDefault(); zone.style.borderColor = ''; });\n  zone.addEventListener('drop', e => {\n    e.preventDefault(); zone.style.borderColor = '';\n    if (e.dataTransfer.files.length) {\n      input.files = e.dataTransfer.files;\n      handleFileSelect(type);\n    }\n  });\n});<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ VALIDATION & SUBMIT\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction showError(msg) {\n  const el = document.getElementById('kk-error');\n  el.textContent = msg; el.style.display = 'block';\n}\nfunction hideError() {\n  document.getElementById('kk-error').style.display = 'none';\n}<\/p>\n<p>async function submitOrder() {\n  hideError();<\/p>\n<p>  \/\/ validate\n  if (!selectedProduct) { showError(t('err_product')); return; }\n  const name = document.getElementById('kk-name').value.trim();\n  if (!name) { showError(t('err_name')); document.getElementById('kk-name').classList.add('error'); return; }\n  document.getElementById('kk-name').classList.remove('error');<\/p>\n<p>  const email = document.getElementById('kk-email').value.trim();\n  if (!email || !\/^[^s@]+@[^s@]+.[^s@]+$\/.test(email)) {\n    showError(t('err_email')); document.getElementById('kk-email').classList.add('error'); return;\n  }\n  document.getElementById('kk-email').classList.remove('error');<\/p>\n<p>  if (!document.getElementById('kk-gdpr').checked) { showError(t('err_gdpr')); return; }<\/p>\n<p>  \/\/ build FormData\n  const fd = new FormData();\n  fd.append('product', selectedProduct);\n  fd.append('name', name);\n  fd.append('email', email);\n  fd.append('language', document.getElementById('kk-language').value);\n  fd.append('subtitles', selectedSubtitles);\n  fd.append('comment', document.getElementById('kk-comment').value.trim());\n  fd.append('form_lang', KK_LANG);<\/p>\n<p>  const scriptFile = document.getElementById('kk-script-file').files[0];\n  if (scriptFile) fd.append('script_file', scriptFile);<\/p>\n<p>  const logoFile = document.getElementById('kk-logo-file').files[0];\n  if (logoFile) fd.append('logo_file', logoFile);<\/p>\n<p>  \/\/ disable button\n  const btn = document.getElementById('kk-submit');\n  const btnText = document.getElementById('kk-submit-text');\n  btn.disabled = true;\n  btnText.innerHTML = '<span class=\"kk-spinner\"><\/span> ' + t('btn_sending');\n  btn.querySelector('.arrow').style.display = 'none';<\/p>\n<p>  try {\n    \/\/ \u2500\u2500 ADJUST THIS URL to match your PHP file location \u2500\u2500\n    const res = await fetch('\/wp-content\/themes\/twentytwentythree\/ai-video-order.php', {\n      method: 'POST', body: fd\n    });\n    const data = await res.json();\n    if (data.success) {\n      document.getElementById('kk-form-body').style.display = 'none';\n      document.getElementById('kk-success').style.display = 'block';\n    } else {\n      showError(data.message || t('err_send'));\n      btn.disabled = false;\n      btnText.textContent = t('btn_submit');\n      btn.querySelector('.arrow').style.display = '';\n    }\n  } catch (e) {\n    showError(t('err_send'));\n    btn.disabled = false;\n    btnText.textContent = t('btn_submit');\n    btn.querySelector('.arrow').style.display = '';\n  }\n}<\/p>\n<p>\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ INIT\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\napplyLang();\n<\/script><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"\" class=\"brz-css-d-wrapper brz-css-r-wrapper brz-css-1tde2ue brz-wrapper\">\n<div class=\"brz-spacer brz-css-d-spacer brz-css-z005fs\"><\/div>\n<\/div>\n<div id=\"\" class=\"brz-css-d-wrapper brz-css-3ygtnv brz-wrapper\">\n<div class=\"brz-rich-text brz-rich-text__custom brz-css-d-richtext brz-css-xpnld3\" data-brz-custom-id=\"nnQnAmUVexbx\">\n<div data-brz-translate-text=\"1\">\n<p class=\"brz-text-lg-center brz-tp-lg-paragraph brz-css-otN2k\" data-generated-css=\"brz-css-cQS8K\" data-uniq-id=\"ly2zb\"><span class=\"brz-cp-color2\" style=\"color: rgba(var(--brz-global-color2),1);\">NB! Antud tellimisvorm on sooviavaldus valitud t\u00f6\u00f6 tellimiseks. T\u00f6\u00f6 teostamine algab p\u00e4rast vajadusel t\u00e4iendavate detailide t\u00e4psustamist ja <\/span><span class=\"brz-cp-color2\" style=\"color: rgb(28, 28, 28);\">arve v\u00e4ljastamist<\/span><span class=\"brz-cp-color2\" style=\"color: rgba(var(--brz-global-color2),1);\">.<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section><\/div>\n<p><!-- version:1775642726 --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI VIDEO TELLIMINE AI Video tellimine Vali pakett, t\u00e4ida andmed ja saada tellimus Vali pakett START AI video kuni 2 min 299\u20ac + km STANDARD AI video kuni 5 min 549\u20ac + km Tellija andmed Nimi E-post Video keel EestiIngliseVene Subtiitrid Jah Ei Video stsenaarium (kuni 240 s\u00f5na) Kliki v\u00f5i lohista fail siia .doc, .docx, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"brizy-blank-template.php","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-648","page","type-page","status-publish","hentry"],"aioseo_notices":[],"brizy_media":[{"id":722,"url":"https:\/\/kaksik.ee\/wp-content\/uploads\/2024\/01\/avatarid_v1.png","name":"avatarid_v1.png","meta":{"brizy_attachment_uid":"wp-83ce3aadfa55e89e96b71b631de41b3a.png","brizy_post_uid":["74776c490dce18911751cf3774a4f133"]}},{"id":741,"url":"https:\/\/kaksik.ee\/wp-content\/uploads\/2024\/01\/ai_video_template_1_cover.jpg","name":"ai_video_template_1_cover.jpg","meta":{"brizy_attachment_uid":"wp-d3043381313e7b0820a229f69b309f72.jpg","brizy_post_uid":["74776c490dce18911751cf3774a4f133"]}}],"_links":{"self":[{"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/pages\/648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/comments?post=648"}],"version-history":[{"count":17,"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/pages\/648\/revisions"}],"predecessor-version":[{"id":2910,"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/pages\/648\/revisions\/2910"}],"wp:attachment":[{"href":"https:\/\/kaksik.ee\/en\/wp-json\/wp\/v2\/media?parent=648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}