Happy New Year 2026 | Congratulations & Celebration

Happy New Year 2026 | Congratulations & Celebration

Suraj (UI/UX Developer)
Dec 2025

Happy New Year 2026 | Congratulations & Celebration

As the clock strikes midnight and the calendar turns a new page, Happy New Year 2026 arrives with fresh hope, renewed energy, and countless opportunities. The New Year is not just a change of date—it’s a celebration of achievements, lessons learned, and dreams waiting to be fulfilled. It’s a time to congratulate ourselves and others for making it through another year and to welcome the future with optimism and joy.

Welcoming 2026 with Positivity

The beginning of a new year symbolizes new beginnings, fresh goals, and positive change. Whether 2025 was filled with success, challenges, or valuable lessons, 2026 gives everyone a chance to start again with confidence. This is the perfect moment to reflect on past accomplishments, appreciate growth, and set meaningful resolutions for personal and professional life.

Celebrating the New Year encourages us to focus on gratitude, mindfulness, and happiness. Small moments—family gatherings, friendly messages, or quiet reflections—make this celebration truly special.

Congratulations on Your Journey So Far

New Year wishes are incomplete without congratulations. Congratulations to everyone who worked hard, stayed strong during tough times, and kept moving forward despite obstacles. Every step taken in the past year deserves recognition.

Whether it’s career growth, personal development, business achievements, or improved relationships, 2026 is the right time to applaud progress and encourage continued success.

Celebrations that Bring People Together

New Year celebrations bring families, friends, and communities closer. From joyful parties and festive decorations to heartfelt messages and social media wishes, the spirit of celebration spreads happiness everywhere. Lighting up homes, sharing sweets, and exchanging warm greetings reflect the joy of new beginnings.

Celebrations also remind us to spread positivity, kindness, and hope, making the New Year meaningful not just for ourselves but for everyone around us.

New Goals, New Dreams in 2026

The New Year inspires goal-setting and motivation. It’s the ideal time to plan new projects, improve skills, focus on health, and strengthen relationships. Instead of pressure, 2026 should be embraced with balance—progress over perfection.

May this year bring:

Happiness and peace

Success and growth

Good health and prosperity

Stronger relationships and confidence

Final New Year Wishes

As we celebrate the arrival of Happy New Year 2026, let’s move forward with courage, gratitude, and determination. May this year open doors to new opportunities and fill life with success and celebration.

Congratulations on a new beginning—here’s to a brighter, better, and more successful 2026!

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
     <meta charset="UTF-8">
     <title>CKD | Happy New Year 2026 – Wishes, Success & New Beginnings</title>
     <link rel="stylesheet" type="text/css" href="css/style.css">
  </head>
  <body>
     <div id="scene-bg">
        <div class="main-cc-center-box">
           <div class="card-ckd-basic">
              <h2>✨ Congratulations 🎉</h2>
              <h1 class="bounce-text">
                 <span>Happy New Year</span>
                 <span> </span>
                 <span style="--i:2">2</span>
                 <span style="--i:3">0</span>
                 <span style="--i:4">2</span>
                 <span style="--i:5">6</span>
              </h1>
              <div class="message">"Wishing you success, happiness,<br>
                 and new opportunities in the year ahead."
              </div>
           </div>
        </div>
     </div>
     </div>
     <canvas id="confetti-canvas"></canvas>
     <script src="js/js.js"></script>
  </body>
</html>

CSS

body{margin:0;height:100%;overflow:hidden;background:#000} #scene-bg{ position:fixed; inset:0; z-index:1; } #confetti-canvas{ position:fixed; inset:0; pointer-events:none; z-index:0; } .main-cc-center-box { text-align: center; display: flex; justify-content: center; align-items: center; height: 95vh; background-image: linear-gradient(to bottom, #185b6b80, #00000000); } .bounce-text span{ display:inline-block; position:relative; top:0; font:47px/61px arial; color:#fff; animation:bounce .9s ease infinite alternate; animation-delay:calc(var(--i)*.1s); -webkit-text-stroke: 2px #f2f2f2; text-stroke: 10px #000; text-shadow: 0 1px 0 #000,0 1px 0 #000,0 1px 0 #000, 0 1px 0 #000,0 1px 0 #000, 0 1px 1px rgba(0,0,0,.4); } @keyframes bounce{ 100%{ transform: rotate(5deg)scale(1.211```1`); top:-20px; text-shadow: 0 1px 0 #000,0 3px 0 #000,0 2px 0 #000, 0 4px 0 #000,0 3px 0 #000, 0 50px 25px rgba(0,0,0,.2); } } .main-cc-center-box h1 { color: #fefefe; text-shadow: 0px 0px 4px #000000; } .message { font-size: 2em; color: #fff; text-shadow: 0px 0px 1px #000000; font-weight: 800; margin-bottom: 10px; } .card-ckd-basic { background-image: linear-gradient(to bottom, #267c90cc ,#000); padding: 25px; margin: 10px; z-index: 5; border-style: dashed !important; position:relative; box-shadow: 0px 0px 0px 5.5px #267c90cc inset; font-family: monospace; border: 4px solid #fff; animation: rote 1.5s ease 0s infinite normal forwards;} @keyframes rote { from{ border-radius: 7px 7px 7px 7px; border: 4.5px solid #fff; } to { border-radius: 8.5px 8.5px 8.5px 8.5px; border: 8.5px solid #fff; } } .card-ckd-basic h2{font:36px/40px arial;color: #fcfcfc;text-shadow: 0px 0px 3px #000000;font-weight: 700;}

JavaScript

   const c=document.getElementById('confetti-canvas'),
        ctx=c.getContext('2d');
   
        let w,h,
        dpr=Math.min(2,window.devicePixelRatio||1),
        pieces=[],
        mx=0,
        smoothMX=0,
        C=1500,
        S=3;
        
        function resize(){
          w=c.width=window.innerWidth*dpr;
          h=c.height=window.innerHeight*dpr;
          c.style.width=w/dpr+'px';
          c.style.height=h/dpr+'px';
          ctx.setTransform(dpr,0,0,dpr,0,0)
        }
        addEventListener('resize',resize);
        resize();
        
        addEventListener('pointermove',e=>{
          mx=(e.clientX/w)*2-1
        });
        
        const pal=[[255,214,102],[255,107,107],[116,185,255],[120,224,143],[235,235,235]],
        rand=(a,b)=>a+Math.random()*(b-a),
        pick=a=>a[(Math.random()*a.length)|0],
        sc=new Map();
        
        function skey(r,g,b,bw,bh,bl){
          return`${r},${g},${b}|${bw}x${bh}|${bl}`
        }
        
        function sprite(r,g,b,bw,bh,bl){
          const p=bl?Math.ceil(bl*3+6):2,
          cn=document.createElement('canvas');
          cn.width=bw+2*p;
          cn.height=bh+2*p;
          const cc=cn.getContext('2d');
        
          if(bl){
            cc.shadowColor=`rgb(${r},${g},${b})`;
            cc.shadowBlur=bl
          }
          cc.fillStyle=`rgb(${r},${g},${b})`;
          cc.fillRect(p,p,bw,bh);
          cc.shadowBlur=0;
        
          for(let i=0;i<Math.max(18,(bw*bh/9));i++){
            let x=(p+Math.random()*bw)|0,
            y=(p+Math.random()*bh)|0,
            v=(Math.random()*61-30)|0;
            cc.globalAlpha=.2;
            cc.fillStyle=`rgb(${r+v},${g+v},${b+v})`;
            cc.fillRect(x,y,1,1)
          }
          cc.globalAlpha=1;
          return{img:cn,ox:p+bw/2,oy:p+bh/2}
        }
        
        function getSprite(r,g,b,bw,bh,bl){
          const k=skey(r,g,b,bw,bh,bl);
          if(sc.has(k))return sc.get(k);
          const s=sprite(r,g,b,bw,bh,bl);
          sc.set(k,s);
          return s
        }
        
        function piece(init){
          const z=Math.random(),
          layer=z<.5?0:z<.85?1:2,
          base=layer===0?rand(2,4):layer===1?rand(4,7):rand(12,20),
          rgb=pick(pal),
          bw=Math.max(2,Math.round(base)),
          bh=Math.round(bw*rand(1,1.6)),
          spr=getSprite(rgb[0]*.72,rgb[1]*.72,rgb[2]*.72,bw,bh,0);
        
          return{
            x:rand(-141,w+141),
            y:init?rand(-80,h+80):rand(-261,-61),
            vx:rand(.15,.55),
            vy:rand(.6,1.6),
            rot:rand(0,6.28),
            vr:rand(-.015,.015),
            sway:rand(0,6.28),
            swaySpeed:rand(.01,.02),
            flip:rand(0,6.28),
            flipSpeed:rand(.02,.05),
            drift:rand(.2,.6),
            layer,
            spr
          }
        }
        
        pieces=Array.from({length:C},()=>piece(true));
        let last=performance.now();
        
        function loop(now){
          const dt=Math.min(.035,(now-last)/1020);
          last=now;
          ctx.clearRect(0,0,w,h);
        
          smoothMX+= (mx-smoothMX)*.05;
          const wind=.45+Math.sin(now*.00035)*.15+smoothMX*.35;
        
          for(let i=0;i<pieces.length;i++){
            const p=pieces[i],
            depth=p.layer===0?.55:p.layer===1?.85:1;
        
            p.sway+=p.swaySpeed*61*dt*S;
            p.flip+=p.flipSpeed*61*dt*S;
        
            const drift=Math.sin(p.sway)*p.drift;
            p.x+=(wind*depth+drift+p.vx)*61*dt*S;
            p.y+=p.vy*(.8+.2*Math.sin(p.sway))*61*dt*S;
            p.rot+=p.vr*61*dt*S;
        
            if(p.x<-310)p.x=w+310;
            if(p.x>w+310)p.x=-310;
            if(p.y>h+340)pieces[i]=piece(false);
        
            ctx.save();
            ctx.translate(p.x,p.y);
            ctx.rotate(p.rot);
            ctx.scale(.1+.9*Math.abs(Math.sin(p.flip)),1);
            ctx.globalAlpha=p.layer===0?.16:p.layer===1?.42:.72;
            ctx.drawImage(p.spr.img,-p.spr.ox,-p.spr.oy);
            ctx.restore();
          }
          requestAnimationFrame(loop)
        }
        requestAnimationFrame(loop);