<!-- BUS_Lover - সকল বাসের তথ্য ল্যান্ডিং পেজ। WordPress এ "Custom HTML" ব্লকে পেস্ট করুন।
নতুন বাস যোগ করতে নিচে এর ভেতরে BUSES তালিকায় একটি নতুন {…} ব্লক কপি করে বদলান। -->
.bl{--g:#1b7a34;--gd:#14602a;--bg:#f6f8f4;--tx:#1f2a1f;--mu:#6b756b;
font-family:'Hind Siliguri',Arial,sans-serif;color:var(--tx);background:#fff;max-
width:2200px;margin:0 auto;line-height:1.4;scroll-behavior:smooth}
.bl *{box-sizing:border-box;margin:0;padding:0}
.bl a{text-decoration:none;color:inherit}
.bl button{font:inherit;cursor:pointer}
.bl .top{display:flex;align-items:center;gap:24px;padding:14px 40px}
.bl .logo{display:flex;align-items:center;gap:8px;font-size:32px;font-weight:700;color:var(--g);white-space:nowrap}
.bl .logo small{display:block;font-size:11px;font-weight:500;color:var(--gd);margin-top:-8px}
.bl .search{flex:1;max-width:560px;margin:0 auto;display:flex;border:1px solid #d9ded6;border-radius:30px;overflow:hidden;background:#fff}
.bl .search input{flex:1;border:0;padding:11px 18px;font:inherit;font-size:14px;outline:0;background:transparent}
.bl .search button{background:var(--g);color:#fff;border:0;width:48px;font-size:17px}
.bl .fb{background:#1877f2;color:#fff;padding:9px 18px;border-radius:8px;font-size:14px;font-weight:600;white-space:nowrap}
.bl nav{background:var(--bg);display:flex;gap:6px;padding:8px 40px;overflow-x:auto;border-top:1px solid #eef1ec}
.bl nav a{padding:9px 22px;font-size:14px;font-weight:500;border-radius:8px;white-space:nowrap}
.bl nav a.on{background:var(--g);color:#fff}
.bl nav a:hover:not(.on){color:var(--g)}
.bl .hero{position:relative;min-height:340px;background:radial-gradient(circle at 20% 30%,#e9f3dc,#cfe3b8 55%,#b9d49c);overflow:hidden}
.bl .sl{display:none;align-items:center;justify-content:space-between;gap:30px;padding:34px 80px 54px;min-height:340px}
.bl .sl.on{display:flex}
.bl .copy{flex:0 0 44%;text-align:center}
.bl .copy small{display:inline-block;background:#fff;color:var(--g);font-weight:600;font-size:13px;padding:3px 14px;border-radius:20px}
.bl .copy h1{font-size:46px;line-height:1.15;color:var(--gd);font-weight:700;margin:10px 0}
.bl .copy p{font-size:16px;font-weight:500;margin-bottom:18px}
.bl .btn{display:inline-block;background:var(--g);color:#fff;padding:12px 32px;border-radius:8px;font-weight:600;font-size:16px;border:0}
.bl .btn:hover{background:var(--gd)}
.bl .photo{flex:1;height:260px;border-radius:16px;box-shadow:0 8px 22px rgba(0,0,0,.2);border:5px solid #fff}
.bl .pic{position:relative;display:flex;align-items:center;justify-content:center;font-size:70px;background:linear-gradient(135deg,#f1f7ea,#c8dfb0);overflow:hidden;border-radius:10px}
.bl .pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bl .photo.pic{font-size:110px}
.bl .arr{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;background:#fff;border:0;box-shadow:0 1px 6px rgba(0,0,0,.25);font-size:22px;z-index:2}
.bl .arr.l{left:14px}.bl .arr.r{right:14px}
.bl .dots{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:2}
.bl .dots button{width:18px;height:6px;border:0;border-radius:4px;background:#fff;opacity:.7}
.bl .dots button.on{background:var(--g);opacity:1;width:24px}
.bl .feat{display:flex;gap:26px;justify-content:center;background:#fff;border-radius:40px;padding:10px 24px;margin:-24px auto 0;position:relative;z-index:3;width:max-content;max-width:calc(100% - 28px);font-size:13px;font-weight:500;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.bl section{padding:26px 50px 8px}
.bl .sh{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px;flex-wrap:wrap}
.bl .sh h2{font-size:22px;font-weight:700}
.bl .sh h2:before{content:"🌿";margin-right:8px;font-size:18px}
.bl .sh span{color:var(--mu);font-size:13px}
.bl .chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.bl .chips button{border:1.5px solid var(--g);background:#fff;color:var(--g);padding:6px 16px;border-radius:20px;font-size:13px;font-weight:600}
.bl .chips button.on{background:var(--g);color:#fff}
.bl .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.bl .card{background:#fff;border:1px solid #eef1ec;border-radius:10px;padding:12px;box-shadow:0 1px 5px rgba(0,0,0,.05);transition:.2s;display:flex;flex-direction:column}
.bl .card:hover{transform:translateY(-3px);border-color:var(--g)}
.bl .card .pic{height:130px;margin-bottom:10px}
.bl .card h3{font-size:17px;font-weight:700;color:var(--gd)}
.bl .card p{font-size:13px;color:var(--mu);margin:3px 0 10px;flex:1}
.bl .pill{display:inline-block;font-size:12px;font-weight:600;padding:2px 10px;border-radius:12px;background:#e6f2e3;color:var(--gd)}
.bl .pill.n{background:#fff3df;color:#a05a00}
.bl .card .more{margin-top:10px;border:1.5px solid var(--g);color:var(--g);background:#fff;border-radius:7px;padding:8px;font-size:13px;font-weight:600}
.bl .card .more:hover{background:var(--g);color:#fff}
.bl .empty{grid-column:1/-1;text-align:center;padding:36px 10px;background:var(--bg);border-radius:10px;color:var(--mu)}
.bl .empty b{display:block;font-size:40px}
.bl .info{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.bl .in{background:var(--bg);border-radius:10px;padding:16px;text-align:center;font-size:14px;font-weight:500}
.bl .in b{display:block;font-size:34px;font-weight:400;margin-bottom:4px}
.bl .cta{margin:28px 50px 0;background:var(--g);color:#fff;border-radius:12px;padding:26px 30px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.bl .cta h2{font-size:24px}.bl .cta p{opacity:.9;font-size:14px}
.bl .cta a{background:#fff;color:var(--gd);padding:12px 28px;border-radius:8px;font-weight:700}
.bl footer{text-align:center;padding:24px;font-size:13px;color:var(--mu)}
.bl .ov{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:99999;display:none;align-items:center;justify-content:center;padding:16px}
.bl .ov.on{display:flex}
.bl .md{background:#fff;border-radius:14px;width:100%;max-width:720px;max-height:90vh;overflow:auto;position:relative}
.bl .md .pic{height:170px;border-radius:14px 14px 0 0}
.bl .x{position:absolute;right:10px;top:10px;width:34px;height:34px;border-radius:50%;border:0;background:#fff;font-size:18px;box-shadow:0 1px 5px rgba(0,0,0,.3);z-index:2}
.bl .mh{padding:14px 22px 0}
.bl .mh h2{font-size:24px;color:var(--gd)}
.bl .tabs{display:flex;gap:6px;padding:12px 22px;border-bottom:1px solid #eef1ec;overflow-x:auto}
.bl .tabs button{border:0;background:var(--bg);padding:8px 16px;border-radius:8px;font-size:14px;font-weight:600;white-space:nowrap}
.bl .tabs button.on{background:var(--g);color:#fff}
.bl .bd{padding:16px 22px 22px}
.bl .row{border:1px solid #eef1ec;border-radius:10px;padding:12px 14px;margin-bottom:10px}
.bl .row h4{font-size:16px;color:var(--gd);margin-bottom:6px}
.bl .row .v{font-size:13px;color:var(--mu)}
.bl .tg{display:flex;gap:8px;flex-wrap:wrap}
.bl .tg span{background:var(--bg);border-radius:8px;padding:5px 12px;font-size:14px;font-weight:600}
.bl .tg span b{color:var(--gd)}
.bl .ct{display:flex;justify-content:space-between;align-items:center;gap:10px}
.bl .ct a{background:var(--g);color:#fff;padding:7px 16px;border-radius:8px;font-size:14px;font-weight:600;white-space:nowrap}
@media(max-width:1100px){.bl .grid{grid-template-columns:repeat(3,1fr)}.bl .info{grid-template-columns:repeat(2,1fr)}.bl .sl{flex-direction:column-reverse;padding:26px 24px 56px}.bl .copy{flex:none}.bl .copy h1{font-size:34px}.bl .photo{width:100%;flex:none;height:190px}}
@media(max-width:640px){.bl .top{flex-wrap:wrap;padding:12px 16px}.bl .logo{font-size:26px}.bl .search{order:3;flex:1 0 100%;max-width:none}.bl .fb{margin-left:auto}.bl nav,.bl section{padding-left:14px;padding-right:14px}.bl .grid{grid-template-columns:repeat(2,1fr);gap:10px}.bl .card h3{font-size:15px}.bl .feat{flex-direction:column;border-radius:16px;gap:4px;width:auto}.bl .cta{margin-left:14px;margin-right:14px}.bl .arr{display:none}}
👍 BUS_Lover পেজে যান
/* ===== বাসের তথ্য এখানে যোগ/পরিবর্তন করুন (নিচের তথ্য নমুনা) =====
n: বাসের নাম | en: ইংরেজি নাম (সার্চের জন্য) | t: ধরন | img: বাসের ছবির লিংক (খালি রাখলে 🚌 দেখাবে)
routes: r=রুট, via=ভায়া, km=দূরত্ব, hr=সময়, f=ভাড়া [[ধরন,টাকা]], s=ছাড়ার সময়
counters: [জায়গা, ফোন নম্বর] */
var BUSES=[
{n:"হানিফ এন্টারপ্রাইজ",en:"hanif enterprise",t:"এসি / নন-এসি",img:"",
routes:[{r:"ঢাকা → চট্টগ্রাম",via:"কুমিল্লা, ফেনী",km:"২৬০ কি.মি.",hr:"৬-৭ ঘণ্টা",f:[["নন-এসি","৭০০"],["এসি","১,২০০"]],s:["সকাল ০৬:০০","দুপুর ০২:০০","রাত ১০:৩০"]},
{r:"ঢাকা → খুলনা",via:"ফরিদপুর, যশোর",km:"৩০০ কি.মি.",hr:"৮-৯ ঘণ্টা",f:[["নন-এসি","৭২০"],["এসি","১,২০০"]],s:["সকাল ০৭:৩০","রাত ১০:০০"]}],
counters:[["কলাবাগান, ঢাকা","01700-000001"],["কমলাপুর, ঢাকা","01700-000002"],["দামপাড়া, চট্টগ্রাম","01700-000003"]]},
{n:"শ্যামলী পরিবহন",en:"shyamoli paribahan",t:"এসি / নন-এসি",img:"",
routes:[{r:"ঢাকা → সিলেট",via:"ভৈরব, হবিগঞ্জ",km:"২৪০ কি.মি.",hr:"৬-৭ ঘণ্টা",f:[["নন-এসি","৬৫০"],["এসি","১,১০০"]],s:["সকাল ০৭:০০","দুপুর ০১:৩০","রাত ১১:০০"]},
{r:"ঢাকা → রাজশাহী",via:"সিরাজগঞ্জ, বগুড়া",km:"২৫০ কি.মি.",hr:"৭-৮ ঘণ্টা",f:[["নন-এসি","৬৮০"],["এসি","১,১৫০"]],s:["সকাল ০৬:৩০","রাত ১০:০০"]}],
counters:[["গাবতলী, ঢাকা","01700-000011"],["কমলাপুর, ঢাকা","01700-000012"]]},
{n:"গ্রীন লাইন",en:"green line",t:"এসি / স্লিপার",img:"",
routes:[{r:"ঢাকা → কক্সবাজার",via:"চট্টগ্রাম, চকরিয়া",km:"৪১০ কি.মি.",hr:"১০-১১ ঘণ্টা",f:[["এসি","১,৮০০"],["স্লিপার","২,৫০০"]],s:["সকাল ০৮:০০","রাত ০৯:৩০"]},
{r:"ঢাকা → বরিশাল",via:"মাওয়া, ভাঙ্গা",km:"১৭৫ কি.মি.",hr:"৫-৬ ঘণ্টা",f:[["এসি","৯৫০"]],s:["সকাল ০৮:৩০","দুপুর ০১:০০"]}],
counters:[["কলাবাগান, ঢাকা","01700-000021"],["কক্সবাজার সদর","01700-000022"]]},
{n:"এনা পরিবহন",en:"ena paribahan",t:"এসি / নন-এসি",img:"",
routes:[{r:"ঢাকা → চট্টগ্রাম",via:"কুমিল্লা, ফেনী",km:"২৬০ কি.মি.",hr:"৬-৭ ঘণ্টা",f:[["নন-এসি","৬৮০"],["এসি","১,১৫০"]],s:["সকাল ০৭:০০","বিকাল ০৪:০০","রাত ১১:০০"]}],
counters:[["সায়েদাবাদ, ঢাকা","01700-000031"],["স্টেশন রোড, চট্টগ্রাম","01700-000032"]]},
{n:"সোহাগ পরিবহন",en:"sohag paribahan",t:"নন-এসি",img:"",
routes:[{r:"ঢাকা → রাজশাহী",via:"সিরাজগঞ্জ, বগুড়া",km:"২৫০ কি.মি.",hr:"৭-৮ ঘণ্টা",f:[["নন-এসি","৬৫০"],["এসি","১,১০০"]],s:["সকাল ০৬:০০","রাত ০৯:৩০"]},
{r:"ঢাকা → খুলনা",via:"ফরিদপুর, যশোর",km:"৩০০ কি.মি.",hr:"৮-৯ ঘণ্টা",f:[["নন-এসি","৭০০"]],s:["সকাল ০৮:০০"]}],
counters:[["গাবতলী, ঢাকা","01700-000041"]]},
{n:"ঈগল পরিবহন",en:"eagle paribahan",t:"এসি",img:"",
routes:[{r:"ঢাকা → বরিশাল",via:"মাওয়া, ভাঙ্গা",km:"১৭৫ কি.মি.",hr:"৫-৬ ঘণ্টা",f:[["নন-এসি","৫৫০"],["এসি","৯৫০"]],s:["সকাল ০৭:৩০","দুপুর ০২:০০","রাত ০৮:০০"]},
{r:"ঢাকা → সিলেট",via:"ভৈরব, হবিগঞ্জ",km:"২৪০ কি.মি.",hr:"৬-৭ ঘণ্টা",f:[["এসি","১,১০০"]],s:["সকাল ০৯:০০","রাত ১০:৩০"]}],
counters:[["গুলিস্তান, ঢাকা","01700-000051"],["কমলাপুর, ঢাকা","01700-000052"]]}
];
var REG=["চট্টগ্রাম","সিলেট","কক্সবাজার","রাজশাহী","খুলনা","বরিশাল"];
/* ===== নিচের অংশ বদলানোর দরকার নেই ===== */
(function(){
var $=function(s){return document.querySelector(s)},q="",rg="",cur=0,timer;
function pic(b,c){return ''}).join('')
+''}).join('');
if(k===1)return b.routes.map(function(r){return ''}).join('');
if(k===2)return b.routes.map(function(r){return ''}).join('');
return b.counters.map(function(c){return '📞 কল করুন'}).join('');
}
function open(i){
var b=BUSES[i],T=['🛣 রুট','💰 ভাড়া','⏰ সিডিউল','📞 কাউন্টার'];
md.innerHTML=''+pic(b)+'
🛣 রুট💰 ভাড়া⏰ সিডিউল📞 কাউন্টার নম্বর
বাসের তালিকা
কেন BUS Lover?
🔎বাসের নাম দিয়ে সহজে খোঁজা
🛣সকল রুট ও ভাড়া একসাথে
⏰সঠিক ছাড়ার সময়সূচি
📞কাউন্টারের সরাসরি কল নম্বর
আপনার বাসের তথ্য খুঁজে পাননি?
আমাদের ফেসবুক পেজে মেসেজ দিন, আমরা দ্রুত তথ্য যোগ করব।
🚌'+(b.img?'
':'')+'
'}
function dest(b){return b.routes.map(function(r){return r.r.split('→').pop().trim()}).join(", ")}
function bn(s){return String(s).toLowerCase()}
/* ক্যারোসেল */
var hero=$('#hero'),sl=BUSES.slice(0,5);
hero.innerHTML=sl.map(function(b,i){return ''+b.t+'
'+pic(b,'photo')+''+b.n+'
'+b.routes.map(function(r){return r.r}).join(" | ")+'
'+sl.map(function(_,i){return ''}).join('')+'
';
var slides=hero.querySelectorAll('.sl'),dots=hero.querySelectorAll('.dots button');
function go(n){cur=(n+slides.length)%slides.length;slides.forEach(function(s,i){s.classList.toggle('on',i===cur)});dots.forEach(function(d,i){d.classList.toggle('on',i===cur)})}
function auto(){clearInterval(timer);if(!matchMedia('(prefers-reduced-motion:reduce)').matches)timer=setInterval(function(){go(cur+1)},4500)}
hero.querySelector('.arr.l').onclick=function(){go(cur-1);auto()};
hero.querySelector('.arr.r').onclick=function(){go(cur+1);auto()};
dots.forEach(function(d,i){d.onclick=function(){go(i);auto()}});
hero.onmouseenter=function(){clearInterval(timer)};hero.onmouseleave=auto;auto();
hero.addEventListener('click',function(e){var i=e.target.getAttribute&&e.target.getAttribute('data-i');if(i!==null&&i!==undefined&&e.target.className==='btn')open(+i)});
/* বাসের তালিকা */
$('#chips').innerHTML=['সব'].concat(REG).map(function(r,i){return ''}).join('');
function render(){
var list=BUSES.map(function(b,i){return{b:b,i:i}}).filter(function(o){
var b=o.b,hay=bn(b.n+' '+(b.en||'')+' '+b.routes.map(function(r){return r.r}).join(' '));
var okq=!q||hay.indexOf(bn(q))>-1,okr=!rg||b.routes.some(function(r){return r.r.indexOf(rg)>-1});
return okq&&okr});
$('#cnt').textContent='মোট '+list.length+'টি বাস';
$('#grid').innerHTML=list.length?list.map(function(o){var b=o.b;return ''+pic(b)+'
'}).join(''):''+b.n+'
গন্তব্য: '+dest(b)+'
'+b.t+'🔍এই নামে কোনো বাস পাওয়া যায়নি।
আমাদের ফেসবুক পেজে মেসেজ দিন, আমরা তথ্য যোগ করব।
';
}
$('#q').addEventListener('input',function(e){q=e.target.value.trim();render();if(q)$('#buses').scrollIntoView({behavior:'smooth',block:'start'})});
$('#chips').addEventListener('click',function(e){var r=e.target.getAttribute('data-r');if(r===null)return;rg=r;[].forEach.call($('#chips').children,function(c){c.classList.toggle('on',c===e.target)});render()});
$('#grid').addEventListener('click',function(e){var i=e.target.getAttribute('data-i');if(i!==null)open(+i)});
/* বিস্তারিত পপআপ */
var ov=$('#ov'),md=$('#md');
function tab(b,k){
if(k===0)return b.routes.map(function(r){return 'আমাদের ফেসবুক পেজে মেসেজ দিন, আমরা তথ্য যোগ করব।
'+r.r+'
ভায়া: '+r.via+' | দূরত্ব: '+r.km+' | সময়: '+r.hr+'
'+r.r+'
'+r.f.map(function(x){return ''+x[0]+': ৳ '+x[1]+''}).join('')+'
'+r.r+'
'+r.s.map(function(x){return ''+x+''}).join('')+'
'+c[0]+'
'+c[1]+'
'+b.n+'
'+b.t+''+T.map(function(t,k){return ''}).join('')+'
'+tab(b,0)+'
';
md.onclick=function(e){
if(e.target.className==='x')return close();
var k=e.target.getAttribute('data-k');if(k===null)return;
[].forEach.call(md.querySelectorAll('.tabs button'),function(x){x.classList.toggle('on',x===e.target)});
md.querySelector('.bd').innerHTML=tab(b,+k);
};
ov.classList.add('on');
}
function close(){ov.classList.remove('on')}
ov.addEventListener('click',function(e){if(e.target===ov)close()});
document.addEventListener('keydown',function(e){if(e.key==='Escape')close()});
render();
})();