Community Development & Advocacy Forum Nepal (CDAFN)
CDAFN
Applications are completed on the original website.
Apply on official siteJob overview
/* Modal Container */ #protech_ads_roadblock-ad { position: fixed; top: 10px; left: 0; width: 100%; height: 100%; background: transparent; display: none; /* Hidden by default */ align-items: center; justify-content: center; z-index: 9999; padding: 20px; box-sizing: border-box; } /* Modal Content */ #protech_ads_roadblock-ad .protech_ads_ad-content { display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; padding: 10px; } /* Image Wrapper */ .content-wrapper { position: relative; display: inline-block; width: 100%; } /* Image Styling */ #protech_ads_roadblock-ad img { width: auto; max-width: 100%; max-height: calc(90vh - 60px); object-fit: contain; display: block; margin: auto; border: 10px solid #f4f6f8; } /* Skip Ad Button */ #protech_ads_skip-ad1, #protech_ads_skip-ad2, #protech_ads_skip-ad3 { position: absolute; top: 10px; right: 10px; padding: 8px 16px; font-size: 14px; cursor: pointer; border: none; border-radius: 4px; background-color: rgba(0, 123, 255, 0.43); color: #fff; z-index: 10; display: none; } #protech_ads_skip-ad1:disabled, #protech_ads_skip-ad2:disabled, #protech_ads_skip-ad3:disabled { background-color: rgb(250 8 8 / 68%); cursor: not-allowed; } /* Hide second and third ad by default */ #protech_ads_ad2, #protech_ads_ad3 { display: none; } /* Responsive Adjustments */ @media (max-width: 768px) { #protech_ads_roadblock-ad img { border: 3px solid white; } } @media (max-width: 480px) { #protech_ads_roadblock-ad img { border: 2px solid white; } #protech_ads_skip-ad1, #protech_ads_skip-ad2, #protech_ads_skip-ad3 { font-size: 12px; padding: 6px 12px; } } document.addEventListener('DOMContentLoaded', function () { const roadblockAd = document.getElementById('protech_ads_roadblock-ad'); const adContentWrapper = roadblockAd.querySelector('.protech_ads_ad-content'); const skipButton1 = document.getElementById('protech_ads_skip-ad1'); const skipButton2 = document.getElementById('protech_ads_skip-ad2'); const skipButton3 = document.getElementById('protech_ads_skip-ad3'); const ad1 = document.getElementById('protech_ads_ad1'); const ad2 = document.getElementById('protech_ads_ad2'); const ad3 = document.getElementById('protech_ads_ad3'); let countdown = 10; let countdownInterval; // Function to check if an element has an image function hasImage(element) { return element && element.querySelector('img') !== null; } // Check if either ad has an image const hasAd1Image = hasImage(ad1); const hasAd2Image = hasImage(ad2); const hasAd3Image = hasImage(ad3); // If no images are present in either ad, remove everything and return if (!hasAd1Image && !hasAd2Image && !hasAd3Image) { if (roadblockAd) { roadblockAd.remove(); } return; } let currentImage = 1; // Function to cleanup and remove the ad function cleanupAd() { if (roadblockAd) { roadblockAd.style.display = 'none'; roadblockAd.remove(); } // Clear countdown interval if (countdownInterval) { clearInterval(countdownInterval); } // Reset all pointer events and overflow document.body.style.overflow = 'auto'; document.body.style.pointerEvents = 'auto'; // Reset pointer events for all elements const allElements = document.getElementsByTagName('*'); for (let element of allElements) { element.style.pointerEvents = 'auto'; } // Force a reflow to ensure styles are applied document.body.offsetHeight; } // Function to update countdown function updateCountdown(button) { button.textContent = `Skip Ad (${countdown})`; countdown--; if (countdown updateCountdown(skipButton1), 1000); } else if (hasAd2Image) { // If only second ad has image, show it directly roadblockAd.style.display = 'flex'; ad1.style.display = 'none'; ad2.style.display = 'block'; skipButton2.style.display = 'block'; skipButton2.textContent = `Skip Ad (${countdown})`; countdownInterval = setInterval(() => updateCountdown(skipButton2), 1000); currentImage = 2; } else if (hasAd3Image) { // If only third ad has image, show it directly roadblockAd.style.display = 'flex'; ad1.style.display = 'none'; ad2.style.display = 'none'; ad3.style.display = 'block'; skipButton3.style.display = 'block'; skipButton3.textContent = `Skip Ad (${countdown})`; countdownInterval = setInterval(() => updateCountdown(skipButton3), 1000); currentImage = 3; } // Function to switch to the second ad function switchToSecondAd() { if (!hasAd2Image) { cleanupAd(); return; } // Clear first countdown if (countdownInterval) { clearInterval(countdownInterval); } // Reset countdown for second ad countdown = 10; ad1.style.display = 'none'; ad2.style.display = 'block'; skipButton1.style.display = 'none'; skipButton2.style.display = 'block'; skipButton2.textContent = `Skip Ad (${countdown})`; // Start new countdown countdownInterval = setInterval(() => updateCountdown(skipButton2), 1000); } // Function to switch to the third ad function switchToThirdAd() { if (!hasAd3Image) { cleanupAd(); return; } // Clear second countdown if (countdownInterval) { clearInterval(countdownInterval); } // Reset countdown for third ad countdown = 10; ad1.style.display = 'none'; ad2.style.display = 'none'; ad3.style.display = 'block'; skipButton1.style.display = 'none'; skipButton2.style.display = 'none'; skipButton3.style.display = 'block'; skipButton3.textContent = `Skip Ad (${countdown})`; // Start new countdown countdownInterval = setInterval(() => updateCountdown(skipButton3), 1000); } // Skip button for first ad if (hasAd1Image) { skipButton1.addEventListener('click', function () { if (hasAd2Image) { switchToSecondAd(); } else if (hasAd3Image) { switchToThirdAd(); } else { cleanupAd(); } }); } // Skip button for second ad if (hasAd2Image) { skipButton2.addEventListener('click', function () { if (hasAd3Image) { switchToThirdAd(); } else { cleanupAd(); } }); } // Skip button for third ad if (hasAd3Image) { skipButton3.addEventListener('click', cleanupAd); } // Initial setup document.body.style.overflow = 'hidden'; document.body.style.pointerEvents = 'none'; roadblockAd.style.pointerEvents = 'auto'; }); Wednesday, September 23, 2026 [email protected] +977-9854022997 /* ======================================== TOP HEADER STYLES ======================================== */ /* Top Header Container */ .top-header { background-color: #f8f9fa; border-bottom: 1px solid #e9ecef; padding: 8px 0; font-size: 13px; color: #6c757d; position: relative; z-index: 1000; } /* Top Header Content Layout */ .top-header-content { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 15px; } /* Left Section - Navigation Links & Date */ .top-header-left { display: flex; align-items: center; gap: 20px; flex: 1; min-width: 0; } /* Contact Information */ .contact-info { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; } .contact-link { display: flex; align-items: center; gap: 6px; color: #6c757d; text-decoration: none; font-weight: 400; transition: all 0.3s ease; padding: 5px 8px; border-radius: 4px; } .contact-link i { font-size: 14px; transition: transform 0.3s ease; } .contact-link:hover { color: #007bff; background-color: rgba(0, 123, 255, 0.05); text-decoration: none; } .contact-link:hover i { transform: scale(1.1); } /* Current Date */ .current-date { display: flex; align-items: center; font-weight: 500; color: #495057; } .date-text { font-size: 13px; white-space: nowrap; } /* Center Section - Reserved for future content */ .top-header-center { display: flex; align-items: center; justify-content: center; flex: 0 0 auto; } /* Right Section - Outlook Login & Language Translator */ .top-header-right { display: flex; align-items: center; justify-content: flex-end; flex: 0 0 auto; gap: 12px; } /* Outlook Login Button */ .outlook-login-btn { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(135deg, #0078d4, #106ebe); color: #ffffff; text-decoration: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 2px 8px rgba(0, 120, 212, 0.4); position: relative; overflow: hidden; font-size: 14px; } .outlook-login-btn:hover { text-decoration: none; color: #ffffff; transform: translateY(-2px) scale(1.05); box-shadow: 0 4px 15px rgba(0, 120, 212, 0.6); } .outlook-login-btn:hover i { transform: scale(1.1); } /* Language Translator Container */ .translator-container { display: flex; align-items: center; gap: 4px; } .translator-container a { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; text-decoration: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); position: relative; overflow: hidden; } .translator-container a:hover { text-decoration: none; transform: translateY(-2px) scale(1.05); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } .translator-container a img { border-radius: 50%; transition: all 0.3s ease; } /* English flag styling */ .translator-container a:first-child { background: linear-gradient(135deg, #0078d4, #106ebe); box-shadow: 0 2px 8px rgba(0, 120, 212, 0.4); } .translator-container a:first-child:hover { box-shadow: 0 4px 15px rgba(0, 120, 212, 0.6); } /* Nepali flag styling */ .translator-container a:last-child { background: linear-gradient(135deg, #dc143c, #b22222); box-shadow: 0 2px 8px rgba(220, 20, 60, 0.4); } .translator-container a:last-child:hover { box-shadow: 0 4px 15px rgba(220, 20, 60, 0.6); } /* ======================================== RESPONSIVE DESIGN ======================================== */ /* Tablet and below (768px and down) */ @media (max-width:
Applications are completed on the original employer website.
Review the full listing and confirm eligibility, salary, and application instructions before applying.
Similar vacancies
Lumino Technology Pvt. Ltd.
Lumino Technology Pvt. Ltd.
Mid Level Backend Developer
Nepal
Negotiable
AITC International
AITC International
Video Editor-2
Bhaktapur, Nepal
Negotiable
AITC International
INTERNSHIP
DevOps Trainee
Bhaktapur, Nepal
Negotiable