{"id":16151,"date":"2026-08-14T12:34:53","date_gmt":"2026-08-14T12:34:53","guid":{"rendered":"https:\/\/augustfest.ee\/?page_id=16151"},"modified":"2026-08-15T07:00:04","modified_gmt":"2026-08-15T07:00:04","slug":"afbingo","status":"publish","type":"page","link":"https:\/\/augustfest.ee\/en\/afbingo\/","title":{"rendered":"Bingo"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"16151\" class=\"elementor elementor-16151\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2a1462c e-flex e-con-boxed e-con e-parent\" data-id=\"2a1462c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-81faabf elementor-widget elementor-widget-shortcode\" data-id=\"81faabf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <style>\n      .augustfest-bingo-wrapper {\n        max-width: 480px;\n        margin: 20px auto;\n        font-family: 'Helvetica Neue', Arial, sans-serif;\n      }\n      .order-details-card {\n        background: #f8fafc;\n        border: 1px solid #cbd5e1;\n        padding: 20px;\n        border-radius: 12px;\n        margin-bottom: 20px;\n        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);\n      }\n      .order-title {\n        color: #1e293b;\n        font-size: 15px;\n        font-weight: 800;\n        margin: 0 0 14px 0;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n      }\n      .form-group { margin-bottom: 12px; text-align: left; }\n      .form-group label {\n        display: block; color: #475569; font-size: 11px;\n        font-weight: 700; margin-bottom: 4px; text-transform: uppercase;\n      }\n      .order-input {\n        width: 100%; background: #ffffff; border: 1px solid #cbd5e1;\n        color: #0f172a; padding: 12px; border-radius: 8px; font-size: 14px; box-sizing: border-box;\n      }\n      .order-input:focus { border-color: #ef4444; outline: none; box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2); }\n      \n      .checkbox-group {\n        display: flex; gap: 20px; margin-top: 6px; background: #fff; padding: 10px 14px; border: 1px solid #cbd5e1; border-radius: 8px;\n      }\n      .checkbox-label {\n        display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #1e293b; cursor: pointer; text-transform: none !important; margin: 0 !important;\n      }\n      .checkbox-label input[type=\"checkbox\"] {\n        width: 16px; height: 16px; accent-color: #ef4444; cursor: pointer;\n      }\n\n      .bingo-grid-container { display: grid; grid-template-columns: 1fr; gap: 16px; }\n      \n      .bingo-box {\n        background-color: #ffffff; border: 2px solid #e2e8f0;\n        border-radius: 12px; padding: 20px; text-align: center; position: relative; overflow: hidden;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.03);\n        display: flex; flex-direction: column; align-items: center; justify-content: center;\n      }\n      .bingo-box:hover { border-color: #ef4444; box-shadow: 0 4px 12px rgba(239,68,68,0.1); }\n      \n      .bingo-box.bonus-box { border: 2px dashed #8b5cf6; background: #fdf4ff; }\n      .bingo-box.bonus-box:hover { border-color: #7c3aed; box-shadow: 0 4px 12px rgba(139, 92, 246, 0.15); }\n\n      .bingo-box.gold-box { border: 2px solid #f59e0b; background: linear-gradient(145deg, #fffbeb, #fef3c7); box-shadow: 0 4px 15px rgba(245, 158, 11, 0.15); }\n      .bingo-box.gold-box:hover { border-color: #d97706; box-shadow: 0 6px 20px rgba(217, 119, 6, 0.25); }\n      \n      .tile-header-info { display: flex; justify-content: center; align-items: center; margin-bottom: 10px; width: 100%; }\n      .tile-badge { display: inline-block; background-color: #ef4444; color: #ffffff; font-size: 10px; font-weight: 900; padding: 4px 12px; border-radius: 20px; }\n      .tile-badge.bonus-badge { background-color: #8b5cf6; }\n      .tile-badge.gold-badge { background: linear-gradient(135deg, #f59e0b, #d97706); color: #ffffff; text-shadow: 0 1px 1px rgba(0,0,0,0.2); }\n      \n      .tile-action { color: #0f172a; font-size: 18px; font-weight: 800; margin: 0 0 8px 0; text-transform: uppercase; text-align: center; }\n      .tile-description { color: #475569; font-size: 12px; line-height: 1.4; margin: 0 0 15px 0; text-align: center; }\n      .bingo-file-input { display: none !important; }\n      \n      .bingo-upload-btn {\n        display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n        background: #f1f5f9; color: #0f172a; border: 1px solid #cbd5e1; padding: 10px 16px; border-radius: 8px;\n        font-size: 13px; font-weight: bold; cursor: pointer;\n      }\n      .bingo-upload-btn.bonus-upload-btn { background: #ede9fe; color: #5b21b6; border-color: #c4b5fd; }\n      .bingo-upload-btn.gold-upload-btn { background: #fef3c7; color: #92400e; border-color: #fcd34d; }\n\n      .bingo-upload-btn:hover { background: #ef4444; color: #ffffff; border-color: #ef4444; }\n      .bingo-upload-btn.bonus-upload-btn:hover { background: #7c3aed; color: #ffffff; border-color: #7c3aed; }\n      .bingo-upload-btn.gold-upload-btn:hover { background: #d97706; color: #ffffff; border-color: #d97706; }\n      \n      .tile-preview-container {\n        position: absolute; top: 0; left: 0; width: 100%; height: 100%;\n        background-color: rgba(255, 255, 255, 0.95); display: none; z-index: 5;\n      }\n      .tile-image-preview { width: 100%; height: 100%; object-fit: cover; opacity: 0.3; }\n      .completion-overlay { position: absolute; top: 40%; left: 50%; transform: translate(-50%, -50%); text-align: center; width: 100%; }\n      .checkmark { display: block; font-size: 36px; color: #10b981; font-weight: bold; }\n      .status-text { color: #0f172a; font-size: 11px; font-weight: 900; letter-spacing: 1px; }\n      .remove-photo-btn {\n        position: absolute; bottom: 12px; left: 50%; transform: translateX(-50%);\n        background: #0f172a; color: #ffffff; border: none; padding: 6px 14px; border-radius: 6px; font-size: 11px; cursor: pointer; white-space: nowrap;\n      }\n      .submit-container { text-align: center; margin-top: 24px; }\n      .bingo-submit-btn {\n        background: #10b981; color: #ffffff; border: none; padding: 14px 28px;\n        font-size: 16px; font-weight: 900; text-transform: uppercase; border-radius: 8px; cursor: pointer; width: 100%;\n        box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);\n      }\n      .bingo-submit-btn:hover { background: #059669; }\n      \n      .bingo-progress-container {\n        background: #f8fafc; border: 1px solid #cbd5e1; border-radius: 12px; padding: 15px; margin-bottom: 20px; text-align: center;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.03);\n      }\n      .bingo-progress-bar-bg { background: #e2e8f0; height: 12px; border-radius: 6px; overflow: hidden; margin-top: 10px; }\n      .bingo-progress-fill { background: #10b981; height: 100%; width: 0%; transition: width 0.3s ease; }\n      .progress-text { color: #1e293b; font-weight: bold; font-size: 14px; }\n      .score-text { color: #d97706; font-weight: 900; font-size: 15px; margin-top: 6px; display: block; }\n\n      .invite-card {\n        background: linear-gradient(135deg, #eff6ff, #dbeafe);\n        border: 2px dashed #3b82f6; border-radius: 12px; padding: 20px; margin-top: 25px; text-align: center; display: none;\n      }\n      .invite-card h4 { color: #1e40af; margin: 0 0 8px 0; font-size: 16px; }\n      .invite-card p { color: #1e3a8a; font-size: 13px; margin: 0 0 14px 0; line-height: 1.4; }\n      .invite-link-box { display: flex; gap: 8px; max-width: 100%; margin-bottom: 12px; }\n      .invite-url-input { flex: 1; padding: 10px; border: 1px solid #93c5fd; border-radius: 6px; background: #fff; font-size: 12px; color: #1e293b; }\n      \n      .social-share-buttons { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-top: 10px; }\n      .social-btn {\n        display: inline-flex; align-items: center; justify-content: center; gap: 6px;\n        padding: 12px 18px; border-radius: 8px; font-weight: bold; font-size: 13px; color: #fff; text-decoration: none; border: none; cursor: pointer; flex: 1; min-width: 180px;\n      }\n      .social-btn.instagram { background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); }\n      .social-btn.copy { background: #2563eb; }\n      .social-btn:hover { opacity: 0.9; color: #fff; }\n\n      .upload-progress-wrapper {\n        display: none; margin-top: 15px; background: #f8fafc; border: 1px solid #cbd5e1; border-radius: 10px; padding: 15px; text-align: left;\n      }\n      .upload-progress-bar-bg { background: #e2e8f0; height: 10px; border-radius: 5px; overflow: hidden; margin-top: 8px; }\n      .upload-progress-fill { background: #3b82f6; height: 100%; width: 0%; transition: width 0.1s linear; }\n      .upload-progress-info { display: flex; justify-content: space-between; font-size: 12px; color: #475569; font-weight: bold; }\n      \n      @media (min-width: 768px) {\n        .augustfest-bingo-wrapper { max-width: 800px; }\n        .bingo-grid-container { grid-template-columns: repeat(2, 1fr); }\n      }\n      @media (min-width: 1024px) {\n        .augustfest-bingo-wrapper { max-width: 1000px; }\n        .bingo-grid-container { grid-template-columns: repeat(3, 1fr); }\n      }\n    <\/style>\n\n    <div class=\"augustfest-bingo-wrapper\">\n      <div class=\"order-details-card\">\n        <h3 class=\"order-title\">Osaleja info<\/h3>\n        <div class=\"form-group\">\n          <label for=\"bingo-user-name\">T\u00e4isnimi *<\/label>\n          <input type=\"text\" id=\"bingo-user-name\" placeholder=\"Jaan Tamm\" required class=\"order-input\" oninput=\"updateInviteLink()\" \/>\n        <\/div>\n        <div class=\"form-group\">\n          <label>Ma olen *<\/label>\n          <div class=\"checkbox-group\">\n            <label class=\"checkbox-label\">\n              <input type=\"checkbox\" name=\"bingo_role_type[]\" value=\"K\u00fclastaja\" checked \/> K\u00fclastaja\n            <\/label>\n            <label class=\"checkbox-label\">\n              <input type=\"checkbox\" name=\"bingo_role_type[]\" value=\"Osaleja\" \/> Osaleja\n            <\/label>\n          <\/div>\n        <\/div>\n        <div class=\"form-group\">\n          <label for=\"bingo-user-email\">E-posti aadress *<\/label>\n          <input type=\"email\" id=\"bingo-user-email\" placeholder=\"jaan@example.com\" required class=\"order-input\" \/>\n        <\/div>\n      <\/div>\n      \n      <div class=\"bingo-progress-container\">\n        <div class=\"progress-text\"><span id=\"completed-count\">0<\/span> \/ 15 ruutu l\u00e4bitud<\/div>\n        <span class=\"score-text\">\u2b50 Koguskoor: <span id=\"total-score-count\">0<\/span> punkti<\/span>\n        <div class=\"bingo-progress-bar-bg\">\n          <div class=\"bingo-progress-fill\" id=\"bingo-progress-bar\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"bingo-grid-container\">\n                <div class=\"bingo-box\" id=\"tile-container-flame-spitting-exhaust\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 1 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">K\u00e4rts ja M\u00fcrts<\/h3>\n          <p class=\"tile-description\">Tee tegevusfoto summutist, mis s\u00fclitab leeki paukumise v\u00f5i k\u00e4ivitamise ajal.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"flame-spitting-exhaust\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'flame-spitting-exhaust', 'image')\" \/>\n          <label for=\"flame-spitting-exhaust\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('flame-spitting-exhaust')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-tandem-drift-action\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 2 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Driftime Koos<\/h3>\n          <p class=\"tile-description\">J\u00e4\u00e4dvusta kaks autot, mis driftivad kurvis k\u00fclg ees teineteisest sentimeetrite kaugusel.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"tandem-drift-action\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'tandem-drift-action', 'image')\" \/>\n          <label for=\"tandem-drift-action\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('tandem-drift-action')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-high-five-car-enthusiast\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 3 (SOTSIAALNE) (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Viska viis koos teise autoentusiastiga!<\/h3>\n          <p class=\"tile-description\">Tee foto, kus l\u00f6\u00f6d \u00fcritusel patsi teise autoentusiastiga!<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"high-five-car-enthusiast\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'high-five-car-enthusiast', 'image')\" \/>\n          <label for=\"high-five-car-enthusiast\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('high-five-car-enthusiast')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-group-selfie-with-crew\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 4 (SOTSIAALNE) (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Meeskonna grupiselfie<\/h3>\n          <p class=\"tile-description\">Tee \u00fchine grupifoto\/selfie koos teise automeeskonna v\u00f5i tiimiga.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"group-selfie-with-crew\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'group-selfie-with-crew', 'image')\" \/>\n          <label for=\"group-selfie-with-crew\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('group-selfie-with-crew')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-co-mechanic-inspection\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 5 (SOTSIAALNE) (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Kaasmehaaniku \u00fclevaatus<\/h3>\n          <p class=\"tile-description\">Ava v\u00f5\u00f5raga kapott ja tehke koos foto, kus osutate mootoriplokile.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"co-mechanic-inspection\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'co-mechanic-inspection', 'image')\" \/>\n          <label for=\"co-mechanic-inspection\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('co-mechanic-inspection')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box gold-box\" id=\"tile-container-drift-taxi-joker\" data-points=\"10\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge gold-badge\">\ud83c\udccf JOKKERI BOONUS  (+10 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Driftitakso s\u00f5it<\/h3>\n          <p class=\"tile-description\">Salvesta ja laadi \u00fcles l\u00fchike video eepilisest Driftitakso s\u00f5idust!<\/p>\n          \n          <input type=\"file\" accept=\"video\/*\" capture=\"camcorder\" id=\"drift-taxi-joker\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'drift-taxi-joker', 'video')\" \/>\n          <label for=\"drift-taxi-joker\" class=\"bingo-upload-btn gold-upload-btn\">\ud83c\udfa5 Salvesta\/laadi \u00fcles video<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <video class=\"tile-image-preview\" muted loop autoplay style=\"object-fit:cover;\"><\/video>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">VIDEO LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('drift-taxi-joker')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box bonus-box\" id=\"tile-container-driver-thumbs-up\" data-points=\"5\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge bonus-badge\">TEGEVUS 6 (+5 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Baltic Hotbois Meeskond<\/h3>\n          <p class=\"tile-description\">Tee foto m\u00f5ne meeskonna liikmega<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"driver-thumbs-up\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'driver-thumbs-up', 'image')\" \/>\n          <label for=\"driver-thumbs-up\" class=\"bingo-upload-btn bonus-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('driver-thumbs-up')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-insane-engine-bay\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 7 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Hullumeelne mootoriruum<\/h3>\n          <p class=\"tile-description\">Pildista avatud mootori tuumi, mille all on tugevalt modifitseeritud mootoridetailid.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"insane-engine-bay\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'insane-engine-bay', 'image')\" \/>\n          <label for=\"insane-engine-bay\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('insane-engine-bay')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-tire-smoke-cloud\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 8 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">K\u00f5ik kohad suitsu t\u00e4is<\/h3>\n          <p class=\"tile-description\">J\u00e4\u00e4dvusta drifti v\u00f5i kummip\u00f5letamise ajal massiivne rehvisuitsu pilv.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"tire-smoke-cloud\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'tire-smoke-cloud', 'image')\" \/>\n          <label for=\"tire-smoke-cloud\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('tire-smoke-cloud')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-low-rider-stance\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 9 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">K\u00f5ige madalam pill<\/h3>\n          <p class=\"tile-description\">Leia auto, mis on nii madalaks lastud, et tundub asfalti kraapivat.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"low-rider-stance\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'low-rider-stance', 'image')\" \/>\n          <label for=\"low-rider-stance\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('low-rider-stance')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-favourite-thing-augustfest\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 10 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Sinu lemmikasi<\/h3>\n          <p class=\"tile-description\">Tee pilt oma absoluutsest lemmikhetkest v\u00f5i tipphetkest Augustfestil!<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"favourite-thing-augustfest\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'favourite-thing-augustfest', 'image')\" \/>\n          <label for=\"favourite-thing-augustfest\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('favourite-thing-augustfest')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-spl-audio-db-meter\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 11 (SPL) (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">SPL Audio<\/h3>\n          <p class=\"tile-description\">Head over to the SPL area and snap a photo of the crew members or a car blasting sound!<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"spl-audio-db-meter\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'spl-audio-db-meter', 'image')\" \/>\n          <label for=\"spl-audio-db-meter\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('spl-audio-db-meter')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box\" id=\"tile-container-cleanest-wheel-fitment\" data-points=\"1\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge\">TEGEVUS 12 (+1 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Parim Fitment<\/h3>\n          <p class=\"tile-description\">Pildista autot, millel on absoluutselt ideaalne, koopaga tasa olev velje ja rehvi istuvus.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"cleanest-wheel-fitment\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'cleanest-wheel-fitment', 'image')\" \/>\n          <label for=\"cleanest-wheel-fitment\" class=\"bingo-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('cleanest-wheel-fitment')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box bonus-box\" id=\"tile-container-custom-tile-1786777757\" data-points=\"5\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge bonus-badge\">BONUS 13 (+5 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Leia Augustfesti meeskonna liige<\/h3>\n          <p class=\"tile-description\">Leia Augustfeti meeskonna liige ja tee temaga koos pilti<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"custom-tile-1786777757\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'custom-tile-1786777757', 'image')\" \/>\n          <label for=\"custom-tile-1786777757\" class=\"bingo-upload-btn bonus-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('custom-tile-1786777757')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n                <div class=\"bingo-box bonus-box\" id=\"tile-container-custom-tile-1786789063\" data-points=\"5\">\n          <div class=\"tile-header-info\">\n            <div class=\"tile-badge bonus-badge\">Monster Energy (+5 p)<\/div>\n          <\/div>\n          <h3 class=\"tile-action\">Monster Energy<\/h3>\n          <p class=\"tile-description\">Tee pilti, kus sa hoiad 5 Monster Energy purki tornina enda k\u00e4es.<\/p>\n          \n          <input type=\"file\" accept=\"image\/*\" capture=\"environment\" id=\"custom-tile-1786789063\" class=\"bingo-file-input\" onchange=\"handleTileUpload(event, 'custom-tile-1786789063', 'image')\" \/>\n          <label for=\"custom-tile-1786789063\" class=\"bingo-upload-btn bonus-upload-btn\">\ud83d\udcf7 Pildista ja laadi \u00fcles<\/label>\n          \n          <div class=\"tile-preview-container\">\n                          <img class=\"tile-image-preview\" alt=\"Proof Photo\" \/>\n                        <div class=\"completion-overlay\">\n              <span class=\"checkmark\">\u2713<\/span>\n              <span class=\"status-text\">T\u00d5ESTUS LISATUD<\/span>\n            <\/div>\n            <button type=\"button\" class=\"remove-photo-btn\" onclick=\"removeTileFile('custom-tile-1786789063')\">Muuda faili<\/button>\n          <\/div>\n        <\/div>\n              <\/div>\n\n      <div class=\"submit-container\">\n        <button id=\"submit-augustfest-bingo\" onclick=\"submitBingoOrder()\" class=\"bingo-submit-btn\">\ud83d\uded2 Saada esitus<\/button>\n        \n        <div id=\"upload-progress-wrapper\" class=\"upload-progress-wrapper\">\n          <div class=\"upload-progress-info\">\n            <span id=\"upload-status-label\">Failide ettevalmistamine...<\/span>\n            <span id=\"upload-percentage-label\">0%<\/span>\n          <\/div>\n          <div class=\"upload-progress-bar-bg\">\n            <div id=\"upload-progress-fill\" class=\"upload-progress-fill\"><\/div>\n          <\/div>\n        <\/div>\n\n        <div id=\"bingo-submit-status\" style=\"margin-top: 10px; font-weight: bold;\"><\/div>\n\n        <!-- Viral Share & Invite Card -->\n        <div id=\"invite-card\" class=\"invite-card\">\n          <h4>\ud83d\ude80 Teeni +5 boonuspunkti iga s\u00f5bra eest!<\/h4>\n          <p>Jaga oma kutse linki otse. Kui s\u00f5brad liituvad sinu lingi kaudu ja l\u00f5petavad oma bingo, saad sina koheselt <strong>+5 boonuspunkti<\/strong>!<\/p>\n          <div class=\"invite-link-box\">\n            <input type=\"text\" id=\"invite-url-field\" class=\"invite-url-input\" readonly \/>\n          <\/div>\n          <div class=\"social-share-buttons\">\n            <button type=\"button\" class=\"social-btn instagram\" onclick=\"shareToInstagramStory()\">\ud83d\udcf8 Jaga Instagrami Storys<\/button>\n            <button type=\"button\" class=\"social-btn copy\" onclick=\"copyInviteLink()\">\ud83d\udccb Kopeeri link<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <script>\n      const totalTiles = 15;\n      const uploadedFiles = {};\n      const baseUrl = 'https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/pages\/16151';\n      const logoUrl = 'https:\/\/augustfest.ee\/wp-content\/uploads\/2026\/08\/RINNALE-LOGO.png';\n      \n      function updateProgress() {\n        const fileInputs = document.querySelectorAll('.bingo-file-input');\n        let completed = 0;\n        let totalPoints = 0;\n        \n        fileInputs.forEach((input) => {\n          if (uploadedFiles[input.id] || input.files.length > 0) {\n            completed++;\n            const container = input.closest('.bingo-box');\n            const pts = parseInt(container.getAttribute('data-points')) || 1;\n            totalPoints += pts;\n          }\n        });\n        \n        document.getElementById('completed-count').innerText = completed;\n        document.getElementById('total-score-count').innerText = totalPoints;\n        const percentage = (completed \/ totalTiles) * 100;\n        document.getElementById('bingo-progress-bar').style.width = percentage + '%';\n      }\n\n      function updateInviteLink() {\n        const nameInput = document.getElementById('bingo-user-name').value.trim();\n        const slug = nameInput ? encodeURIComponent(nameInput.toLowerCase().replace(\/[^a-z0-9]\/g, '')) : 'player';\n        const inviteUrl = baseUrl + (baseUrl.includes('?') ? '&' : '?') + 'ref=' + slug;\n        document.getElementById('invite-url-field').value = inviteUrl;\n      }\n\n      function copyInviteLink() {\n        const inputField = document.getElementById('invite-url-field');\n        inputField.select();\n        inputField.setSelectionRange(0, 99999);\n        navigator.clipboard.writeText(inputField.value).then(() => {\n          alert('Kutse link kopeeriti l\u00f5ikepuhvrisse!');\n        });\n      }\n\n      function shareToInstagramStory() {\n        copyInviteLink();\n        \n        const canvas = document.createElement('canvas');\n        canvas.width = 1080;\n        canvas.height = 1920;\n        const ctx = canvas.getContext('2d');\n\n        \/\/ Dark modern background gradient\n        const grad = ctx.createLinearGradient(0, 0, 0, 1920);\n        grad.addColorStop(0, '#0f172a');\n        grad.addColorStop(0.5, '#1e1b4b');\n        grad.addColorStop(1, '#020617');\n        ctx.fillStyle = grad;\n        ctx.fillRect(0, 0, 1080, 1920);\n\n        \/\/ Render main logo and \"BINGO\" title\n        const logoImg = new Image();\n        logoImg.crossOrigin = 'anonymous';\n        logoImg.src = logoUrl;\n        logoImg.onload = function() {\n          const logoWidth = 600;\n          const logoHeight = (logoImg.height \/ logoImg.width) * logoWidth;\n          const logoX = (1080 - logoWidth) \/ 2;\n          const logoY = 320;\n\n          ctx.drawImage(logoImg, logoX, logoY, logoWidth, logoHeight);\n\n          \/\/ \"BINGO\" styled heading under the logo\n          const textY = logoY + logoHeight + 90;\n          ctx.fillStyle = '#ef4444';\n          ctx.font = '900 110px \"Helvetica Neue\", Arial, sans-serif';\n          ctx.textAlign = 'center';\n          ctx.fillText('BINGO', 540, textY);\n\n          \/\/ Subtext callout\n          ctx.fillStyle = '#ffffff';\n          ctx.font = '700 48px \"Helvetica Neue\", Arial, sans-serif';\n          ctx.fillText('LIITU V\u00c4LJAKUTSEGA JA L\u00d6\u00d6 MINU SKOORI!', 540, textY + 120);\n\n          ctx.fillStyle = '#93c5fd';\n          ctx.font = '500 36px \"Helvetica Neue\", Arial, sans-serif';\n          ctx.fillText('Link kopeeritud! Kleebi lingi kleeps Instagram Storysse', 540, textY + 200);\n\n          canvas.toBlob(function(blob) {\n            const file = new File([blob], 'augustfest-bingo-story.png', { type: 'image\/png' });\n            if (navigator.canShare && navigator.canShare({ files: [file] })) {\n              navigator.share({\n                files: [file],\n                title: 'Augustfest Bingo',\n                text: 'Liitu minu Augustfest Bingo v\u00e4ljakutsega!'\n              }).catch(() => {});\n            } else {\n              const a = document.createElement('a');\n              a.href = URL.createObjectURL(blob);\n              a.download = 'augustfest-bingo-story.png';\n              a.click();\n              alert('Story pilt on alla laaditud ja link kopeeritud! Laadi pilt \u00fcles Instagram Stories ja lisa oma lingi kleeps.');\n            }\n          }, 'image\/png');\n        };\n\n        logoImg.onerror = function() {\n          alert('Link kopeeriti l\u00f5ikepuhvrisse! Jaga seda oma Instagram Storys.');\n        };\n      }\n      \n      function handleTileUpload(event, actionId, fileType) {\n        const file = event.target.files[0];\n        if (!file) return;\n        \n        const containerId = 'tile-container-' + actionId;\n        const container = document.getElementById(containerId);\n        const previewContainer = container.querySelector('.tile-preview-container');\n        const previewElement = container.querySelector('.tile-image-preview');\n\n        \/\/ Store original raw file without descaling or compression\n        uploadedFiles[actionId] = file;\n        previewElement.src = URL.createObjectURL(file);\n        previewContainer.style.display = 'block';\n        updateProgress();\n      }\n\n      function removeTileFile(actionId) {\n        const containerId = 'tile-container-' + actionId;\n        const container = document.getElementById(containerId);\n        \n        document.getElementById(actionId).value = '';\n        delete uploadedFiles[actionId];\n        container.querySelector('.tile-image-preview').src = '';\n        container.querySelector('.tile-preview-container').style.display = 'none';\n        \n        updateProgress();\n      }\n\n      function submitBingoOrder() {\n        const statusDiv = document.getElementById('bingo-submit-status');\n        const submitBtn = document.getElementById('submit-augustfest-bingo');\n        const progressWrapper = document.getElementById('upload-progress-wrapper');\n        const progressFill = document.getElementById('upload-progress-fill');\n        const percentageLabel = document.getElementById('upload-percentage-label');\n        const statusLabel = document.getElementById('upload-status-label');\n        \n        const name = document.getElementById('bingo-user-name').value.trim();\n        const email = document.getElementById('bingo-user-email').value.trim();\n\n        const roleCheckboxes = document.querySelectorAll('input[name=\"bingo_role_type[]\"]:checked');\n        const selectedRoles = Array.from(roleCheckboxes).map(cb => cb.value);\n\n        if (!name || !email) {\n          statusDiv.style.color = '#ef4444';\n          statusDiv.innerHTML = '\u26a0\ufe0f Palun sisesta nii oma nimi kui ka e-posti aadress!';\n          return;\n        }\n\n        if (selectedRoles.length === 0) {\n          statusDiv.style.color = '#ef4444';\n          statusDiv.innerHTML = '\u26a0\ufe0f Palun vali v\u00e4hemalt \u00fcks rolli t\u00fc\u00fcp!';\n          return;\n        }\n\n        const formData = new FormData();\n        let fileCount = 0;\n\n        for (const actionId in uploadedFiles) {\n          if (uploadedFiles.hasOwnProperty(actionId)) {\n            const isVideoFile = uploadedFiles[actionId].type && uploadedFiles[actionId].type.startsWith('video');\n            const ext = isVideoFile ? '.mp4' : '.jpg';\n            formData.append(actionId, uploadedFiles[actionId], actionId + ext);\n            fileCount++;\n          }\n        }\n\n        if (fileCount === 0) {\n          statusDiv.style.color = '#ef4444';\n          statusDiv.innerHTML = '\u26a0\ufe0f Palun t\u00e4ida ja laadi \u00fcles failid v\u00e4hemalt \u00fche ruudu kohta enne saatmist!';\n          return;\n        }\n\n        formData.append('participant_name', name);\n        formData.append('participant_type', selectedRoles.join(', '));\n        formData.append('participant_email', email);\n        formData.append('action', 'submit_augustfest_bingo');\n\n        submitBtn.disabled = true;\n        submitBtn.style.opacity = '0.6';\n        statusDiv.innerHTML = '';\n        progressWrapper.style.display = 'block';\n        progressFill.style.width = '0%';\n        percentageLabel.innerText = '0%';\n        statusLabel.innerText = 'T\u00e4isresolutsioonis failide \u00fcleslaadimine...';\n\n        const xhr = new XMLHttpRequest();\n        xhr.open('POST', 'https:\/\/augustfest.ee\/wp-admin\/admin-ajax.php', true);\n\n        xhr.upload.onprogress = function(e) {\n          if (e.lengthComputable) {\n            const percentComplete = Math.round((e.loaded \/ e.total) * 100);\n            progressFill.style.width = percentComplete + '%';\n            percentageLabel.innerText = percentComplete + '%';\n            \n            if (percentComplete === 100) {\n              statusLabel.innerText = 'Serverip\u00e4ringu t\u00f6\u00f6tlemine...';\n            }\n          }\n        };\n\n        xhr.onload = function() {\n          if (xhr.status === 200) {\n            try {\n              const data = JSON.parse(xhr.responseText);\n              if (data.success) {\n                progressFill.style.width = '100%';\n                percentageLabel.innerText = '100%';\n                statusLabel.innerText = '\u00dcleslaadimine l\u00f5petatud!';\n                statusDiv.style.color = '#10b981';\n                statusDiv.innerHTML = '\ud83c\udf89 Esitus k\u00e4tte saadud! Kontrolli oma e-posti!';\n                submitBtn.style.display = 'none';\n                updateInviteLink();\n                document.getElementById('invite-card').style.display = 'block';\n              } else {\n                progressWrapper.style.display = 'none';\n                statusDiv.style.color = '#ef4444';\n                statusDiv.innerHTML = '\u274c Saatmine eba\u00f5nnestus: ' + (data.data || 'Tundmatu viga');\n                submitBtn.disabled = false;\n                submitBtn.style.opacity = '1';\n              }\n            } catch (err) {\n              progressWrapper.style.display = 'none';\n              statusDiv.style.color = '#ef4444';\n              statusDiv.innerHTML = '\u274c Vigane serveri vastus.';\n              submitBtn.disabled = false;\n              submitBtn.style.opacity = '1';\n            }\n          } else {\n            progressWrapper.style.display = 'none';\n            statusDiv.style.color = '#ef4444';\n            statusDiv.innerHTML = '\u274c Serveri \u00fchenduse viga (HTTP ' + xhr.status + ').';\n            submitBtn.disabled = false;\n            submitBtn.style.opacity = '1';\n          }\n        };\n\n        xhr.onerror = function() {\n          progressWrapper.style.display = 'none';\n          statusDiv.style.color = '#ef4444';\n          statusDiv.innerHTML = '\u274c \u00dcleslaadimise ajal tekkis v\u00f5rguviga.';\n          submitBtn.disabled = false;\n          submitBtn.style.opacity = '1';\n        };\n\n        xhr.send(formData);\n      }\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":952,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-16151","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/pages\/16151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/users\/952"}],"replies":[{"embeddable":true,"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/comments?post=16151"}],"version-history":[{"count":10,"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/pages\/16151\/revisions"}],"predecessor-version":[{"id":16363,"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/pages\/16151\/revisions\/16363"}],"wp:attachment":[{"href":"https:\/\/augustfest.ee\/en\/wp-json\/wp\/v2\/media?parent=16151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}