X7ROOT File Manager
Current Path:
/home/u126090504/domains/shreeganeshacademy.in/public_html
home
/
u126090504
/
domains
/
shreeganeshacademy.in
/
public_html
/
๐
..
๐
Antiraging-Cell.php
(2.73 KB)
๐
B.Ed.&B.P.Ed.php
(4.44 KB)
๐
about-us.php
(8.82 KB)
๐
academic-head-message.php
(5.84 KB)
๐
achievers.php
(3.07 KB)
๐
admin
๐
admission.php
(4.56 KB)
๐
admission_submit.php
(1.96 KB)
๐
album.php
(890 B)
๐
computer-courses.php
(20.66 KB)
๐
config.php
(1.17 KB)
๐
contact-us.php
(14.66 KB)
๐
contactdb.php
(796 B)
๐
css
๐
director's-message.php
(5.17 KB)
๐
downloads.php
(3.14 KB)
๐
error.log
(14.6 KB)
๐
facilities.php
(5.62 KB)
๐
faculty.php
(4.96 KB)
๐
fonts
๐
footer.php
(32.51 KB)
๐
franchise.php
(2.09 KB)
๐
gallery.php
(3.21 KB)
๐
governing-body.php
(3.58 KB)
๐
grievance-form.php
(13.71 KB)
๐
header.php
(13.48 KB)
๐
images
๐
index.php
(71.3 KB)
๐
js
๐
lib
๐
our-recruiters.php
(2.77 KB)
๐
payment.php
(8.1 KB)
๐
payment_submit.php
(10.97 KB)
๐
payment_verify.php
(2.31 KB)
๐
placement.php
(8.33 KB)
๐
principal's-message.php
(6.02 KB)
๐
qrcodes
๐
revolution
๐
scope.php
(14.14 KB)
๐
search_videos.php
(1.76 KB)
๐
shreeganesh.zip
(66.92 MB)
๐
submit-grievance.php
(3.88 KB)
๐
thank-you.php
(1.28 KB)
๐
tutorial.php
(4.8 KB)
๐
u126090504_shreeg.sql
(36.69 KB)
๐
uploads
๐
videos.php
(4.38 KB)
Editing: footer.php
<?php // footer.php โ Improved responsive footer with light effect on contact section (copy-paste the entire file) ?> <!-- Google Font + FontAwesome (keep these in header if you already have them) --> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="" crossorigin="anonymous"/> <style> /* --------- FOOTER: base --------- */ .site-footer { background:#040404; color:#cfcfcf; font-family:'Poppins',sans-serif; position:relative; overflow:hidden; padding-top:40px; } /* Top floating rounded info card */ .footer-info-card{ max-width:1200px; margin: 18px auto 0; background: #161616; border-radius:18px; padding:34px 30px; box-shadow: 0 8px 30px rgba(0,0,0,0.6); display:flex; gap:10px; align-items:stretch; justify-content:space-between; position:relative; z-index:2; } /* --- CONTACT LIGHT WRAPPER --- */ .footer-info-card .contact-light { position:relative; overflow:visible; transition:transform .35s ease; } /* subtle glowing floating orb (behind contact group) */ .footer-info-card .contact-light::before{ content:""; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%) scale(1); width:360px; height:160px; border-radius:50%; pointer-events:none; filter: blur(36px) saturate(120%); background: radial-gradient(closest-side, rgba(255,59,59,0.18) 0%, rgba(255,59,59,0.10) 30%, rgba(255,59,59,0.02) 60%, transparent 100%); opacity:0.9; z-index:0; animation: floatGlow 6s ease-in-out infinite; mix-blend-mode: screen; } /* smaller dynamic sparkles */ .footer-info-card .contact-light::after{ content:""; position:absolute; left:10%; top:18%; width:12px; height:12px; border-radius:50%; background: rgba(255,255,255,0.9); box-shadow: 0 0 18px 4px rgba(255,59,59,0.6), 0 0 40px 12px rgba(255,190,190,0.06); opacity:0.08; transform:translateZ(0); animation: pulseTiny 2.8s infinite ease-in-out; z-index:3; pointer-events:none; } /* hover lift effect for the card's contact column */ .footer-info-card .col.contact-col:hover{ transform:translateY(-6px); } /* Each card column */ .footer-info-card .col{ flex:1; text-align:center; padding:0 18px; position:relative; z-index:4; /* put content above glow */ } /* vertical separators between middle columns */ .footer-info-card .col.sep:before{ content:""; position:absolute; left:0; top:10%; height:80%; width:1px; background: linear-gradient(#444,#2a2a2a 40%, transparent 60%); transform:translateX(-50%); display:none; } .footer-info-card .col.sep-right:after{ content:""; position:absolute; right:0; top:10%; height:80%; width:1px; background: linear-gradient(#444,#2a2a2a 40%, transparent 60%); transform:translateX(50%); display:none; } /* icon circle */ .footer-info-card .icon{ display:inline-block; width:34px; height:34px; line-height:34px; border-radius:50%; background:transparent; color:#ff3b3b; font-size:18px; margin-bottom:10px; position:relative; z-index:5; } /* small shimmer on icon on hover */ .footer-info-card .col.contact-col .icon:hover{ transform: scale(1.06); transition: transform .2s ease; } /* heading & text */ .footer-info-card h5{ margin:0 0 8px; color:#e6e6ff; /* slight bluish like your screenshot */ font-weight:700; font-size:18px; letter-spacing:0.2px; } .footer-info-card p{ margin:0; color:#bdbdbd; font-size:13px; line-height:1.6; } /* MAIN footer widgets (under the card) */ .footer-widgets-wrap{ max-width:1200px; margin:50px auto 30px; padding:0 20px; display:grid; grid-template-columns: 1.25fr 1fr 1fr 1fr; gap:34px; } /* section titles */ .footer-widgets-wrap .widget-title{ color:#ffffff; font-size:16px; font-weight:700; margin-bottom:16px; position:relative; padding-bottom:8px; } .footer-widgets-wrap .widget-title:after{ content:""; position:absolute; left:0; bottom:0; width:36px; height:3px; background:#ff3b3b; border-radius:2px; } /* about text */ .footer-about p{ color:#bfbfbf; line-height:1.8; } /* recent posts */ .recent-post{ display:flex; gap:14px; margin-bottom:18px; align-items:flex-start; } .rp-date{ background:#ff3b3b; color:#fff; width:56px; min-width:56px; border-radius:8px; text-align:center; padding:8px 6px; } .rp-date .day{ font-size:20px; font-weight:700; line-height:1; } .rp-date .mon{ font-size:11px; display:block; margin-top:6px; } /* sitemap list */ .footer-sitemap ul{ padding:0; margin:0; list-style:none; } .footer-sitemap ul li{ margin:10px 0; } .footer-sitemap ul li a{ color:#cfcfcf; text-decoration:none; font-size:14px; } .footer-sitemap ul li a:hover{ color:#ff3b3b; } /* newsletter */ .newsletter { display:flex; gap:8px; align-items:center; } .newsletter input[type="email"]{ background:#0a0a0a; border:1px solid #222; color:#ddd; padding:12px 14px; min-width:200px; outline:none; font-size:14px; } .newsletter button{ background:#ff3b3b; border:none; padding:11px 14px; border-radius:4px; cursor:pointer; color:#fff; display:flex; align-items:center; justify-content:center; } /* social icons row */ .footer-social-row{ text-align:center; margin-top:10px; } .footer-social-row a{ display:inline-block; margin:0 7px; width:44px; height:44px; line-height:44px; border-radius:50%; background:#121212; color:#dcdcdc; text-align:center; text-decoration:none; } .footer-social-row a:hover{ background:#ff3b3b; color:#fff; } /* bottom copyright */ .footer-bottom{ border-top:1px solid rgba(255,255,255,0.03); padding:18px 0 48px; color:#9a9a9a; text-align:center; font-size:13px; } /* back to top button */ .back-to-top{ position:fixed; right:22px; bottom:22px; width:48px; height:48px; background:#ff3b3b; border-radius:8px; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 20px rgba(0,0,0,0.5); z-index:9999; cursor:pointer; } .back-to-top i{ color:#fff; } /* ---------- RESPONSIVE ---------- */ @media (min-width:1120px){ /* show separators on wider screens */ .footer-info-card .col.sep { padding-left:28px; padding-right:28px; } .footer-info-card .col.sep:before { display:block; left:0; transform:translateX(-50%); } .footer-info-card .col.sep-right:after{ display:block; right:0; transform:translateX(50%); } } @media (max-width:900px){ .footer-widgets-wrap{ grid-template-columns: 1fr 1fr; gap:24px; margin-top:30px; } .footer-info-card{ flex-direction:column; gap:18px; padding:22px; margin-top:10px; } .footer-info-card .col.sep:before, .footer-info-card .col.sep-right:after{ display:none; } /* reduce glow size on smaller screens */ .footer-info-card .contact-light::before{ width:280px; height:140px; filter: blur(30px); } } @media (max-width:520px){ .footer-widgets-wrap{ grid-template-columns:1fr; gap:20px; } .footer-info-card h5{ font-size:16px; } .rp-date{ width:46px; min-width:46px; padding:6px 6px; } .footer-info-card{ padding:18px; margin:12px; border-radius:12px; } .newsletter input[type="email"]{ min-width:140px; width:100%; } .newsletter{ flex-direction:row; align-items:center; } .footer-info-card .contact-light::before{ width:220px; height:120px; filter: blur(28px); left:50%; } } /* ===== Animations ===== */ @keyframes floatGlow { 0% { transform: translate(-50%,-50%) scale(0.98); opacity:0.85; } 50% { transform: translate(-46%,-54%) scale(1.02); opacity:1; } 100% { transform: translate(-50%,-50%) scale(0.98); opacity:0.85; } } @keyframes pulseTiny { 0% { transform:scale(0.9); opacity:0.06; } 50% { transform:scale(1.2); opacity:0.18; } 100% { transform:scale(0.9); opacity:0.06; } } </style> <?php // footer.php โ KIPS (Modern Red/Black + Full-Section Particles) ?> <!-- ====== FOOTER (Modern Particle Theme) ====== --> <script> jQuery(function ($) { function bindMobileSubmenus() { // Remove any old handlers then bind fresh (prevents double-binding) $('#menu .has-submenu > a').off('click.mobile').on('click.mobile', function (e) { if (window.matchMedia('(max-width: 991px)').matches) { var $link = $(this); var $li = $link.parent(); var $sub = $li.children('.mega-submenu'); // Toggle open/close e.preventDefault(); // stop navigation for toggling if (!$li.hasClass('open')) { // Close siblings $li.siblings('.has-submenu.open').removeClass('open') .children('.mega-submenu').stop(true, true).slideUp(200) .prev('a.mega-menu-link').attr('aria-expanded','false'); $li.addClass('open'); $sub.stop(true, true).slideDown(200); $link.attr('aria-expanded', 'true'); } else { $li.removeClass('open'); $sub.stop(true, true).slideUp(200); $link.attr('aria-expanded', 'false'); } } }); } bindMobileSubmenus(); // When resizing back to desktop, reset styles/classes $(window).on('resize', function () { if (!window.matchMedia('(max-width: 991px)').matches) { $('#menu .has-submenu').removeClass('open') .children('.mega-submenu').removeAttr('style'); $('#menu .has-submenu > a').attr('aria-expanded','false'); } }); }); </script> <style> :root{ --footer-bg: #000000; /* black */ --accent: #020674; /* NEW BLUE */ --text: #FFFFFF; --muted: #D9D9D9; --fb-height-desktop: 420px; --fb-height-mobile: 460px; --map-height-desktop: 410px; --map-height-mobile: 300px; } .footer.kips-footer{ position: relative; color: var(--text); background: radial-gradient(1200px 600px at 15% 0%, rgba(2,6,116,0.10) 0%, rgba(0,0,0,0) 55%), radial-gradient(800px 400px at 85% 20%, rgba(2,6,116,0.10) 0%, rgba(0,0,0,0) 60%), linear-gradient(180deg, #0a0a0a 0%, #000000 45%, #060606 100%); border-top: 3px solid var(--accent); border-bottom: 3px solid var(--accent); box-shadow: inset 0 1px 0 rgba(2,6,116,0.25), 0 0 30px rgba(2,6,116,0.10); overflow: hidden; isolation: isolate; } /* sweeping sheen */ .footer.kips-footer::before{ content:""; position:absolute; inset:-20% -50% auto -50%; height: 140%; background: linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.06) 50%, transparent 100%); transform: rotate(8deg) translateX(-110%); animation: kipsSweep 9s linear infinite; pointer-events:none; } @keyframes kipsSweep{ 0% { transform: rotate(8deg) translateX(-110%); opacity:.6; } 50% { opacity:.35; } 100% { transform: rotate(8deg) translateX(110%); opacity:.6; } } .kips-particles{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; filter: blur(0.3px); } .footer .second-footer{ position: relative; z-index:1; } .footer .widget-area{ margin-bottom:32px; } .footer .widget{ background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015)); border: 1px solid rgba(2,6,116,0.30); border-radius: 14px; box-shadow: inset 0 1px 10px rgba(2,6,116,0.10), 0 10px 28px rgba(0,0,0,.45), 0 0 0 2px rgba(2,6,116,.06); padding: 18px 16px; backdrop-filter: blur(2px); } .footer .widget-title{ font-weight: 800; letter-spacing:.2px; margin-bottom: 18px; display:inline-flex; align-items:center; gap:10px; text-transform: uppercase; color:#fff; filter: drop-shadow(0 2px 6px rgba(2,6,116,.35)); } .footer .widget-title::before{ content:""; width:10px; height:10px; border-radius:50%; background: var(--accent); box-shadow: 0 0 12px rgba(2,6,116,.9), 0 0 2px rgba(2,6,116,1); } .footer .widget-title::after{ content:""; display:block; height:3px; width:38px; background: linear-gradient(90deg, var(--accent), rgba(2,6,116,0)); border-radius: 999px; } .footer .textwidget{ color: var(--muted); line-height:1.75; text-align: justify; } .footer a{ color:#b3c4ff; text-decoration:none; transition: all .25s ease; } .footer a:hover{ color:#ffffff; text-shadow: 0 0 10px rgba(2,6,116,.9), 0 0 2px rgba(2,6,116,1); } #menu-footer-quick-links{ list-style:none; padding-left:0; margin:0; display:flex; flex-direction:column; gap:10px; } #menu-footer-quick-links li a{ display:inline-flex; align-items:flex-start; gap:8px; padding:6px 0; border-bottom: 1px dashed rgba(2,6,116,.35); } #menu-footer-quick-links li:last-child a{ border-bottom:none; } .fb-box, .map-box{ width:100%; border-radius:12px; overflow:hidden; border:1px solid rgba(2,6,116,.45); box-shadow: 0 0 0 2px rgba(2,6,116,.08), 0 10px 24px rgba(0,0,0,.45); background: #0a0a0a; } .fb-box{ height: var(--fb-height-desktop); } .map-box{ height: var(--map-height-desktop); } .bottom-footer-text{ position:relative; z-index:1; border-top: 2px solid rgba(2,6,116,.45); background: linear-gradient(180deg, rgba(2,6,116,0.10), rgba(0,0,0,0) 30%); } .bottom-footer-text .credit{ color:#b3c4ff; padding:16px 0; } .bottom-footer-text .credit a{ color:#ffffff; text-decoration: underline dotted; } .footer.kips-footer .glow-border{ position:absolute; inset:0; pointer-events:none; z-index:0; background: radial-gradient(600px 120px at 20% 100%, rgba(2,6,116,.25), transparent 60%), radial-gradient(420px 120px at 80% 100%, rgba(2,6,116,.18), transparent 60%); mix-blend-mode: screen; } @media (max-width: 991.98px){ .fb-box{ height: var(--fb-height-mobile); } .map-box{ height: var(--map-height-mobile); } } </style> <footer class="site-footer" role="contentinfo"> <!-- Top rounded info card --> <!-- NOTE: added class 'contact-light' to the middle and right columns so glow affects contact area. Also added class 'contact-col' for subtle hover lift. --> <div class="footer-info-card" aria-hidden="false"> <div class="col" aria-label="address"> <div class="icon"><i class="fas fa-map-marker-alt"></i></div> <h5>Address</h5> <p>Shree Ganesh Academy<br>In front of Padhunapada Primary School, Balasore</p> </div> <div class="col sep contact-col contact-light" aria-label="phone"> <div class="icon"><i class="fas fa-phone"></i></div> <h5>Phone Number</h5> <p>9178759454, 9439874265 <br>6371730463,8917350829</p> </div> <div class="col sep-right contact-col contact-light" aria-label="email"> <div class="icon"><i class="fas fa-envelope"></i></div> <h5>Email Address</h5> <p>info@shreeganeshacademy.in<br>www.shreeganeshacademy.in</p> </div> </div> <!-- Main widgets --> <div class="footer-widgets-wrap"> <!-- ABOUT --> <div class="footer-about"> <!-- Replace 'logo.png' with your path or remove the img tag --> <div class="widget-title">About us</div> <p style="text-align:justify;">Founded in 2016 by Kaushik Pradhan, Shree Ganesh Academy has emerged as the most trusted and result-oriented educational institution in Balasore, offering B.Ed., +2 Science, and +2 Arts coaching under one roof. With a strong focus on conceptual learning, disciplined academic culture, and practical exposure, the Academy has consistently delivered top results in CHSE and B.Ed. entrance examinations.</p> </div> <!-- RECENT POSTS --> <div> <div class="widget-title">Recent Posts</div> <div class="recent-post"> <iframe src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2Fshree.ganes.academy%2F&tabs=timeline&width=340&height=500&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true&appId=578293714142434" width="340" height="350" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"></iframe> </div> </div> <!-- SITEMAP --> <div class="footer-sitemap"> <div class="widget-title">Quick Links</div> <ul> <li><a href="#">Home</a></li> <li><a href="#">About us</a></li> <li><a href="#">B.Ed. Education</a></li> <li><a href="#">Facilities</a></li> <li><a href="#">B.Ed. Education</a></li> <li><a href="#">+2 Science Coaching</a></li> <li><a href="#">+2 Arts Coaching</a></li> <li><a href="#">Gallery</a></li> <li><a href="#">Contact us</a></li> </ul> </div> <!-- NEWSLETTER --> <div> <div class="widget-title">Google Map</div> <div class="recent-post"> Loading... </div> </div> </div> <!-- social icons --> <div class="footer-social-row" aria-hidden="false"> <a href="#" aria-label="facebook"><i class="fab fa-facebook-f"></i></a> <a href="#" aria-label="google"><i class="fab fa-google"></i></a> <a href="#" aria-label="twitter"><i class="fab fa-twitter"></i></a> <a href="#" aria-label="pinterest"><i class="fab fa-pinterest"></i></a> <a href="#" aria-label="vimeo"><i class="fab fa-vimeo-v"></i></a> </div> <!-- copyright --> <div class="footer-bottom"> ยฉ <?php echo date('Y'); ?> <span style="color:#ff3b3b;font-weight:700;">Shree Ganesh Academy</span>. All Rights Reserved. | By <a href="https://eduwebsoft.co.in/" style="color:red;">Eduweb Software Solutions</a> </div> </footer> <!-- BACK TO TOP --> <div class="back-to-top" id="backToTop" title="Back to top" role="button" aria-label="Back to top"> <i class="fas fa-angle-up"></i> </div> <script> // back to top (function(){ var b = document.getElementById('backToTop'); function scrolly(){ if(window.pageYOffset > 300) b.style.display = 'flex'; else b.style.display = 'none'; } b.style.display = 'none'; window.addEventListener('scroll', scrolly); b.addEventListener('click', function(e){ e.preventDefault(); window.scrollTo({top:0,behavior:'smooth'}); }); // optional: small parallax on mouse move for glow (only on larger screens) function enableMouseGlow(){ var contactCols = document.querySelectorAll('.footer-info-card .contact-light'); if(!contactCols || contactCols.length===0) return; document.addEventListener('mousemove', function(e){ var w = window.innerWidth; if(w < 900) return; // skip on small screens contactCols.forEach(function(el){ var rect = el.getBoundingClientRect(); var cx = rect.left + rect.width/2; var cy = rect.top + rect.height/2; var dx = (e.clientX - cx)/rect.width * 20; // tune movement var dy = (e.clientY - cy)/rect.height * 12; el.style.transform = 'translate3d(' + (dx*0.4) + 'px,' + (dy*0.35) + 'px,0)'; }); }); // reset on mouse leave document.addEventListener('mouseleave', function(){ contactCols.forEach(function(el){ el.style.transform = ''; }); }); } enableMouseGlow(); })(); </script> <!-- small accessibility helper --> <style> .sr-only{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; } </style> <!-- GetButton.io widget (unchanged) --> <!-- โ Sticky Call (Left) + WhatsApp Business (Right) --> <style> :root { --cta-size: 58px; --cta-offset: 18px; --cta-z: 9999; } .sticky-btn { position: fixed; bottom: var(--cta-offset); width: var(--cta-size); height: var(--cta-size); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; text-decoration: none; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25); z-index: var(--cta-z); pointer-events: auto; animation: floatIn 0.5s ease-out both; } /* Left (Call Button) */ .cta-call { left: var(--cta-offset); background-color: #E53935; animation-delay: 0.1s; } /* Right (WhatsApp Button) */ .cta-whatsapp { right: var(--cta-offset); background-color: #25D366; animation-delay: 0.2s; } /* Hover effects */ .sticky-btn:hover { transform: scale(1.08); } /* Pulse Animation */ .sticky-btn::after { content: ""; position: absolute; inset: 0; border-radius: 50%; box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.15); animation: pulse 1.8s ease-out infinite; z-index: -1; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.18); } 70% { box-shadow: 0 0 0 18px rgba(0, 0, 0, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); } } /* Floating entrance */ @keyframes floatIn { from { opacity: 0; transform: translateY(20px) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } } /* Responsive bottom space fix */ @media (max-width: 520px) { .sticky-btn { bottom: 14px; } } </style> <!-- ๐ CALL BUTTON --> <a href="tel:+919337671699" class="sticky-btn cta-call" aria-label="Call Us"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="white" viewBox="0 0 24 24"> <path d="M6.62 10.79a15.05 15.05 0 006.59 6.59l2.2-2.2a1 1 0 011.01-.24c1.11.37 2.31.57 3.58.57a1 1 0 011 1v3.5a1 1 0 01-1 1C11.4 21.82 2.18 12.6 2.18 2a1 1 0 011-1H6.7a1 1 0 011 1c0 1.27.2 2.47.57 3.58a1 1 0 01-.24 1.01l-2.2 2.2z"/> </svg> </a> <!-- ๐ข WHATSAPP BUSINESS BUTTON --> <!-- ๐ข WHATSAPP BUSINESS BUTTON (inline SVG โ no external image) --> <!-- WhatsApp floating button with hover / tap text bar --> <style> /* Container */ .oca-whatsapp-wrap { position: fixed; bottom: 22px; right: 22px; z-index: 9999; display: flex; align-items: center; gap: 12px; pointer-events: auto; font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; } /* Label (the text bar) */ .oca-whatsapp-label { background: #fff; color: #0a0a0a; padding: 10px 14px; border-radius: 12px; box-shadow: 0 6px 22px rgba(0,0,0,0.14); font-size: 14px; line-height: 1.2; max-width: 320px; transform-origin: right center; transform: translateX(8px) scale(0.98); opacity: 0; transition: transform 220ms cubic-bezier(.2,.9,.28,1), opacity 220ms; pointer-events: none; /* label doesn't intercept pointer until shown */ white-space: nowrap; } /* text inside label wraps on narrow screens */ @media (max-width: 420px) { .oca-whatsapp-label { white-space: normal; max-width: 260px; font-size: 13px; } } /* When visible */ .oca-whatsapp-wrap.show-label .oca-whatsapp-label { transform: translateX(0) scale(1); opacity: 1; pointer-events: auto; } /* Floating round button */ .oca-cta { width: 54px; height: 54px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(180deg,#25D366,#1da851); box-shadow: 0 8px 28px rgba(37,211,102,0.18); transition: transform 180ms ease, box-shadow 180ms; cursor: pointer; text-decoration: none; } .oca-cta:focus { outline: 3px solid rgba(37,211,102,0.18); outline-offset: 4px; } .oca-cta:hover { transform: translateY(-4px) scale(1.03); box-shadow: 0 12px 30px rgba(37,211,102,0.22); } /* small bounce glow (subtle) */ @keyframes oca-bounce { 0% { transform: translateY(0); } 50% { transform: translateY(-6px); } 100% { transform: translateY(0); } } .oca-cta.glow { animation: oca-bounce 2.4s infinite ease-in-out; } /* Icon styling */ .oca-cta svg { display:block; width:26px; height:26px; } /* Optional: hide label on very small screens by default (tap to show) */ @media (max-width: 360px) { .oca-whatsapp-label { display: none; } .oca-whatsapp-wrap.show-label .oca-whatsapp-label { display: block; } } </style> <div class="oca-whatsapp-wrap" id="ocaWhatsapp"> <!-- Label shown on hover or tap --> <div class="oca-whatsapp-label" id="ocaWhatsappLabel" role="status" aria-live="polite"> Welcome to เคถเฅเคฐเฅ Ganesh Academy. How may I assist you today? </div> <!-- Link: +91 9437266850 with prefilled message --> <!-- Prefilled text encoded: Hello Online Computer Application (OCA) Team! Welcome to Online Computer Application (OCA). How may I assist you today? --> <a id="ocaWhatsappBtn" class="oca-cta glow" href="https://wa.me/919178759454?text=Hello%20เคถเฅเคฐเฅ%20Ganesh%20Academy%20Team!%20Welcome%20to%20เคถเฅเคฐเฅ%20Ganesh%20Academy.%20How%20may%20I%20assist%20you%20today%3F" target="_blank" rel="noopener noreferrer" aria-label="Chat with เคถเฅเคฐเฅ Ganesh Academy on WhatsApp"> <svg viewBox="0 0 32 32" aria-hidden="true" focusable="false"> <path d="M16 3C9.38 3 4 8.38 4 15c0 2.52.76 4.85 2.07 6.78L5 29l7.4-1.94A11.9 11.9 0 0016 27c6.62 0 12-5.38 12-12S22.62 3 16 3z" fill="#fff"/> <text x="16" y="20" text-anchor="middle" font-family="system-ui, -apple-system, Segoe UI, Roboto, 'Helvetica Neue', Arial" font-weight="700" font-size="14" fill="#25D366">B</text> </svg> </a> </div> <script> (function () { const wrap = document.getElementById('ocaWhatsapp'); const btn = document.getElementById('ocaWhatsappBtn'); let touchLabelShown = false; let lastTouchTime = 0; // Desktop: show label on hover (pure CSS) โ but add JS to add/remove class for a11y (focus) wrap.addEventListener('mouseenter', () => wrap.classList.add('show-label')); wrap.addEventListener('mouseleave', () => wrap.classList.remove('show-label')); // Keyboard focus accessibility: show label when button receives focus btn.addEventListener('focus', () => wrap.classList.add('show-label')); btn.addEventListener('blur', () => wrap.classList.remove('show-label')); // Mobile / touch behavior: // - First tap: show the label (prevents accidental navigation) // - Second tap within short time: follow the link (open WhatsApp) // Implementation: intercept touchstart, if label not shown -> show and prevent navigation. btn.addEventListener('touchstart', function (ev) { const now = Date.now(); // If label already visible and user double-taps quickly, allow navigation if (wrap.classList.contains('show-label') && (now - lastTouchTime) < 1200) { // allow default (open WhatsApp) return; } // If label not visible, show it and prevent immediate navigation if (!wrap.classList.contains('show-label')) { ev.preventDefault(); // stop link following on first touch wrap.classList.add('show-label'); touchLabelShown = true; lastTouchTime = now; // hide label automatically after 6s if user does nothing setTimeout(() => { wrap.classList.remove('show-label'); }, 6000); } else { // label visible but not quick double-tap, set lastTouchTime and let next touch open lastTouchTime = now; } }); // Safety: if user taps elsewhere, hide label document.addEventListener('touchstart', function (e) { if (!wrap.contains(e.target)) { wrap.classList.remove('show-label'); } }, {passive: true}); })(); </script> <!-- โ /Sticky Footer Buttons --> <!-- AOS --> <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> <script>AOS.init({ offset: 300, duration: 1700 });</script> <!-- Your Scripts --> <script src="js/custom.js"></script> <script> // Mobile menu toggle document.addEventListener("DOMContentLoaded", function(){ var btn = document.querySelector(".btn-show-menu-mobile"); if(btn){ btn.addEventListener("click", function(){ var menu = document.getElementById("menu"); if(menu){ menu.style.display = (getComputedStyle(menu).display === "none") ? "block" : "none"; } }); } }); </script> <script src="js/custom-header.js"></script> <!-- Lightweight Particles (full-section, red on black, no external lib) --> <script> (function(){ const footer = document.querySelector('footer.kips-footer'); const cvs = document.getElementById('kipsParticles'); if(!footer || !cvs) return; const ctx = cvs.getContext('2d'); const DPR = Math.min(window.devicePixelRatio || 1, 2); let w=0, h=0, particles = [], raf; const RED = 'rgba(234,0,0,'; // opacity appended at render function makeParticle(){ const speed = 0.12 + Math.random()*0.35; // slow float return { x: Math.random()*w, y: Math.random()*h, r: 0.8 + Math.random()*2.2, vx: (Math.random()*2-1)*speed, vy: (Math.random()*2-1)*speed, a: 0.08 + Math.random()*0.22 }; } function resize(){ const rect = footer.getBoundingClientRect(); // โ FULL FOOTER SIZE const newW = Math.max(1, Math.floor(rect.width * DPR)); const newH = Math.max(1, Math.floor(rect.height * DPR)); if(newW === w && newH === h) return; // avoid redundant work w = newW; h = newH; cvs.width = w; cvs.height = h; cvs.style.width = rect.width + 'px'; cvs.style.height = rect.height + 'px'; const target = Math.max(60, Math.min(240, Math.floor((w*h)/(12000)))); if(particles.length < target){ for(let i=particles.length; i<target; i++) particles.push(makeParticle()); } else { particles.length = target; } } function step(){ ctx.clearRect(0,0,w,h); // soft red vignette const g = ctx.createRadialGradient(w*0.5,h*0.2,0, w*0.5,h*0.2, Math.max(w,h)*0.8); g.addColorStop(0, 'rgba(234,0,0,0.04)'); g.addColorStop(1, 'rgba(0,0,0,0)'); ctx.fillStyle = g; ctx.fillRect(0,0,w,h); // points for(const p of particles){ p.x += p.vx; p.y += p.vy; // wrap edges if(p.x < -10) p.x = w+10; if(p.x > w+10) p.x = -10; if(p.y < -10) p.y = h+10; if(p.y > h+10) p.y = -10; ctx.beginPath(); ctx.arc(p.x, p.y, p.r*DPR, 0, Math.PI*2); ctx.fillStyle = RED + p.a + ')'; ctx.shadowColor = 'rgba(234,0,0,0.6)'; ctx.shadowBlur = 10*DPR; ctx.fill(); ctx.shadowBlur = 0; } // connecting lines (short distances) for(let i=0;i<particles.length;i++){ for(let j=i+1;j<particles.length;j++){ const a = particles[i], b = particles[j]; const dx = a.x-b.x, dy = a.y-b.y, d2 = dx*dx+dy*dy; const maxD = 140*DPR; if(d2 < maxD*maxD){ const o = 0.12 - d2/(maxD*maxD)*0.12; if(o > 0){ ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.strokeStyle = RED + (o*0.8) + ')'; ctx.lineWidth = 0.6*DPR; ctx.stroke(); } } } } raf = requestAnimationFrame(step); } // observe footer size (handles responsive + content height) const ro = new ResizeObserver(resize); ro.observe(footer); // pause when tab hidden let running = true; document.addEventListener('visibilitychange', () => { if(document.hidden){ running=false; cancelAnimationFrame(raf); } else if(!running){ running=true; step(); } }); resize(); step(); })(); </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script> <script> $('.slick_slider').slick({ slidesToShow: 4, slidesToScroll: 1, arrows: false, autoplay: true, centerMode: true, centerPadding: '0px', infinite: true, responsive: [ { breakpoint: 1100, settings: { slidesToShow: 3 }}, { breakpoint: 777, settings: { slidesToShow: 2 }}, { breakpoint: 590, settings: { slidesToShow: 1 }} ] }); </script>
Upload File
Create Folder