<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:defaultwidgetversion='2' b:layoutsVersion='3' b:responsive='true' b:templateUrl='gallery.xml' b:templateVersion='1.0.0' expr:dir='data:blog.languageDirection' expr:lang='data:blog.locale' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<!--
✏️ এডিট জোন — শুধু নিচের GCFG অংশটুকু বদলালেই চলবে
পোস্ট কীভাবে দেবেন:
১) পোস্টের লেখায় ছবি দিন, তারপর লিখুন:
নাম: রাহিম
ঠিকানা: ঢাকা
WhatsApp: 017XXXXXXXX
Telegram: @rahim
২) HTML ভিউতে এই ব্লকটি যোগ করুন (দরকারি লাইনগুলো রাখুন):
div class vcfg এর ভেতরে এভাবে:
STATUS: FREE (অথবা PAID)
CATEGORY: Viral
PRICE: ৳10
VIEWS: 12K
DOWNLOADS: 40
৩) অথবা এগুলো লেবেল দিয়েও দেওয়া যায় (লেবেল ব্লকের চেয়ে অগ্রাধিকার পায়):
paid বা free
price:10
views:12000
downloads:40
cat:Viral
withdrawn:100 (এই ছবির যত পয়েন্ট পেমেন্ট হয়ে গেছে)
Monetization (জোর করে বিজ্ঞাপন চালু)
noads (এই ছবিতে কোনো বিজ্ঞাপন দেখাবে না)
482913 (গোপন পিন) অথবা u-xxxxxxxxxx (নিরাপদ পিন-কোড)
৪) নিরাপদ পিন-কোড বানাতে: আপনার সাইটের /?pintool=1 পেজে যান।
৫) বিজ্ঞাপন কেমন দেখাবে আগে দেখতে (ফাঁকা বক্স সহ): যেকোনো পেজের শেষে ?adpreview=1 যোগ করুন।
বিজ্ঞাপন বসানোর নতুন উপায় (Layout থেকে):
Layout → Ad Top / Ad Mid / Ad Bottom / Ad Sticky → "গ্যাজেট যোগ করুন" → HTML/JavaScript
গ্যাজেটে কোডটি এভাবে মুড়ে বসান (script চালু হওয়া ঠিকমতো নিয়ন্ত্রণের জন্য):
<template> আপনার বিজ্ঞাপনের কোড </template>
VIEWS ঘরে ব্লগার স্ট্যাটস থেকে আসল সংখ্যাটিই বসান।
-->
<script type='text/javascript'>//<![CDATA[
window.GCFG={
/* ===== যোগাযোগ ও পেমেন্ট ===== */
ownerWhatsApp:'8801XXXXXXXXX', /* দেশের কোডসহ, + ছাড়া। সাবমিট/কেনা/উইথড্র সব এই নম্বরে আসবে */
bkash:'01XXXXXXXXX', /* বিকাশ নম্বর (পেইড ছবি কেনার জন্য দেখাবে) */
nagad:'01XXXXXXXXX', /* নগদ নম্বর */
rocket:'', /* রকেট (ফাঁকা রাখলে দেখাবে না) */
currency:'৳',
/* ===== ডাউনলোড আনলক (স্পনসর পেজ) ===== */
sponsorUrl:'https://femalesfellowship.com/me7xy2yp?key=d67ad64222f27878af4b3d5dd1ae8222',
waitSeconds:5, /* কত সেকেন্ড পর ডাউনলোড চালু হবে */
unlockMinutes:30, /* একবার আনলক করলে কত মিনিট খোলা থাকবে */
sdSize:1280, /* সাধারণ (SD) ডাউনলোডের সাইজ, HD সবসময় আসল সাইজ */
/* ===== পয়েন্ট ও উইথড্র ===== */
viewsPerStep:1000, /* প্রতি এত ভিউতে */
pointsPerStep:100, /* এত পয়েন্ট */
minWithdraw:100, /* ন্যূনতম উইথড্র পয়েন্ট */
banHours:24, /* ভুল পিনে কত ঘণ্টা ব্যান */
strikesToPermanent:2, /* কত বার ভুল হলে স্থায়ী নিষেধাজ্ঞা */
salt:'change-this-salt-123', /* গোপন লেখা: পরে বদলালে আগের পিন-কোড কাজ করবে না */
/* =====================================================
বিজ্ঞাপন (শুধু ছবি খুললে দেখাবে — হোম পেজে কখনো না)
===================================================== */
adsOn:true, /* false দিলে সব বিজ্ঞাপন বন্ধ */
adsMode:'all', /* 'all' = প্রতিটি ছবিতে | 'monetized' = শুধু মনিটাইজড ছবিতে */
monetizeViews:500, /* 'monetized' মোডে: এত ভিউ হলে বিজ্ঞাপন */
adsOnPaid:true, /* পেইড ছবির পেজেও বিজ্ঞাপন? (false = না) */
/* --- AdSense (সবচেয়ে সহজ) --- */
adClient:'', /* যেমন ca-pub-1234567890123456 */
adSlot:'', /* সব জায়গার জন্য একটি স্লট আইডি (নিচেরগুলো ফাঁকা থাকলে এটি কাজ করবে) */
adSlotTop:'', /* ছবির উপরের ব্যানার স্লট (ঐচ্ছিক) */
adSlotMid:'', /* বাটনের নিচের স্লট (ঐচ্ছিক) */
adSlotBottom:'', /* সবার নিচের স্লট (ঐচ্ছিক) */
adSlotSticky:'', /* মোবাইলের নিচে আটকে থাকা ব্যানার স্লট (ঐচ্ছিক) */
/* --- অন্য নেটওয়ার্ক (Adsterra, Monetag, PropellerAds ইত্যাদি) ---
সহজ উপায়: সাইটে ঢুকে ঠিকানার শেষে /?adtool=1 লিখুন। সেখানে নেটওয়ার্কের কোড যেমন আছে তেমন পেস্ট করলে
নিচের ঘরের জন্য তৈরি লাইন পাবেন — সেটি এখানে ফাঁকা লাইনের জায়গায় বসান। */
adCodeTop:'',
adCodeMid:'',
adCodeBottom:'',
adCodeSticky:'',
adCodeIframe:false, /* true দিলে সব কোড আলাদা ফ্রেমে চলবে (invoke.js / document.write ভিত্তিক ব্যানারের জন্য দরকার) */
/* --- নিজস্ব ব্যানার (সরাসরি স্পনসর/অ্যাফিলিয়েট) --- */
/* দ্রষ্টব্য: উপরের adCode ঘরগুলো ফাঁকা থাকলে তবেই এই ব্যানার কাজ করবে */
adBannerImg:'', /* ব্যানার ছবির লিংক */
adBannerUrl:'', /* ক্লিক করলে যে লিংকে যাবে */
adBannerAlt:'স্পনসর',
/* --- কোথায় কোথায় দেখাবে --- */
adShowTop:true, /* ছবির উপরে ব্যানার */
adShowMid:true, /* বাটনের নিচে (ডাউনলোড বাটনের কাছে) */
adShowBottom:true, /* ছবির কার্ডের নিচে */
adShowSticky:true, /* নিচে আটকানো ব্যানার (ক্লোজ বাটনসহ) */
adStickyMobileOnly:true, /* শুধু মোবাইলে দেখাবে */
adStickyHideMin:30, /* ✕ চাপলে কত মিনিট লুকিয়ে থাকবে */
/* --- আরও ফিচার --- */
adLazy:true, /* স্ক্রলে দেখা গেলে তবেই বিজ্ঞাপন লোড (দ্রুত সাইট, ভালো ভিউযোগ্যতা) */
adLabel:'বিজ্ঞাপন', /* বিজ্ঞাপনের উপরের ছোট লেখা */
adPlaceholder:false, /* true হলে বিজ্ঞাপন না থাকলেও ফাঁকা বক্স দেখাবে (টেস্টের জন্য) */
adblockNotice:false, /* true হলে অ্যাড-ব্লকার থাকলে নরম অনুরোধ দেখাবে */
/* ===== অন্যান্য ===== */
reportEmail:'',
maxPosts:500,
bn:true /* সংখ্যা বাংলায় */
};
//]]></script>
<meta content='width=device-width, initial-scale=1' name='viewport'/>
<meta content='#6c5ce7' name='theme-color'/>
<title><data:blog.pageTitle/></title>
<b:include data='blog' name='all-head-content'/>
<link href='https://fonts.googleapis.com' rel='preconnect'/>
<link href='https://fonts.googleapis.com/css2?family=Hind+Siliguri:wght@400;500;600;700&display=swap' rel='stylesheet'/>
<script type='text/javascript'>//<![CDATA[
try{var t=localStorage.getItem('th')||(window.matchMedia&&matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light');document.documentElement.setAttribute('data-t',t)}catch(e){}
//]]></script>
<b:skin><![CDATA[
/* ===== Modern Photo Gallery Theme v2 ===== */
:root{--bg:#f4f5fb;--card:#fff;--tx:#14161f;--mu:#6b7080;--ac:#6c5ce7;--ac2:#00b894;--pk:#e84393;--bd:#e6e8f0;--sh:0 6px 24px rgba(20,22,40,.08);--sh2:0 16px 40px rgba(108,92,231,.25);--r:16px}
html[data-t=dark]{--bg:#0d0f16;--card:#171a25;--tx:#eceef6;--mu:#99a0b5;--bd:#262a3a;--sh:0 6px 24px rgba(0,0,0,.45);--sh2:0 16px 40px rgba(0,0,0,.6)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--tx);font-family:'Hind Siliguri',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.55}
body.lock{overflow:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%}
button{font-family:inherit}
.wrap{max-width:1280px;margin:0 auto;padding:0 16px}
/* ---------- হেডার ---------- */
.top{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--bd)}
.bar{display:flex;align-items:center;gap:10px;height:66px}
.logo{font-weight:700;font-size:21px;white-space:nowrap}
.logo span{background:linear-gradient(90deg,var(--ac),var(--pk));-webkit-background-clip:text;background-clip:text;color:transparent}
.search{flex:1;max-width:400px;margin-left:auto;position:relative}
.search input{width:100%;padding:11px 16px 11px 40px;border-radius:99px;border:1px solid var(--bd);background:var(--card);color:var(--tx);font:inherit;outline:none;transition:border-color .2s,box-shadow .2s}
.search:before{content:"\1F50D";position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:14px;opacity:.6}
.search input:focus{border-color:var(--ac);box-shadow:0 0 0 4px rgba(108,92,231,.14)}
.ic{border:1px solid var(--bd);background:var(--card);color:var(--tx);width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:17px;transition:transform .2s}
.ic:hover{transform:rotate(25deg)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:99px;border:0;background:linear-gradient(135deg,var(--ac),#a29bfe);color:#fff;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;transition:transform .15s,filter .15s,box-shadow .15s;box-shadow:0 4px 14px rgba(108,92,231,.25)}
.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn[disabled]{opacity:.6;cursor:default;transform:none}
.btn.ghost{background:transparent;color:var(--tx);border:1px solid var(--bd);box-shadow:none}
.btn.wa{background:#25d366;box-shadow:0 4px 14px rgba(37,211,102,.25)}
.btn.tg{background:#229ed9;box-shadow:0 4px 14px rgba(34,158,217,.25)}
.btn.hd{background:linear-gradient(135deg,#e17055,#fdcb6e);color:#2d1500;box-shadow:0 4px 14px rgba(225,112,85,.25)}
.btn.buy{background:linear-gradient(135deg,#00b894,#55efc4);color:#00281f;box-shadow:0 4px 14px rgba(0,184,148,.25)}
/* ---------- হিরো ---------- */
.hero{position:relative;margin:22px 0 10px;padding:34px 28px;border-radius:26px;background:linear-gradient(135deg,#6c5ce7 0%,#a855f7 50%,#e84393 100%);color:#fff;overflow:hidden;box-shadow:var(--sh2)}
.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.12)}
.hero:before{width:260px;height:260px;right:-60px;top:-90px}
.hero:after{width:180px;height:180px;right:140px;bottom:-110px}
.hero h1{position:relative;margin:0 0 8px;font-size:clamp(26px,4.4vw,42px);line-height:1.2}
.hero p{position:relative;margin:0;max-width:640px;opacity:.92}
.hst{position:relative;display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.hst span{background:rgba(255,255,255,.18);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:6px 14px;border-radius:99px;font-size:14px;font-weight:600}
/* ---------- ফিল্টার ---------- */
.tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0}
.chip{padding:7px 16px;border-radius:99px;border:1px solid var(--bd);background:var(--card);color:var(--tx);cursor:pointer;font:inherit;transition:all .15s}
.chip:hover{border-color:var(--ac)}
.chip.on{background:var(--ac);border-color:var(--ac);color:#fff;box-shadow:0 4px 12px rgba(108,92,231,.3)}
.tools select{margin-left:auto;padding:8px 12px;border-radius:12px;border:1px solid var(--bd);background:var(--card);color:var(--tx);font:inherit}
/* ---------- গ্রিড ও কার্ড ---------- */
.grid{column-width:250px;column-gap:16px}
.card{break-inside:avoid;margin:0 0 16px;background:var(--card);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);cursor:pointer;transition:transform .25s,box-shadow .25s;border:1px solid var(--bd);animation:pop .4s both}
.card:hover{transform:translateY(-4px);box-shadow:var(--sh2)}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.ph{position:relative;background:var(--bd);overflow:hidden}
.ph img{display:block;width:100%;height:auto;aspect-ratio:var(--ar,16/9);object-fit:cover;transition:transform .5s}
.card:hover .ph img{transform:scale(1.05)}
.ph:after{content:"";position:absolute;inset:auto 0 0 0;height:50%;background:linear-gradient(transparent,rgba(0,0,0,.45));opacity:0;transition:opacity .25s;pointer-events:none}
.card:hover .ph:after{opacity:1}
.tag{position:absolute;top:10px;left:10px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:99px;background:rgba(0,0,0,.55);color:#fff;z-index:2}
.pb{position:absolute;top:10px;right:10px;font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;background:#00b894;color:#00281f;z-index:2}
.pb.paid{background:#fdcb6e;color:#2d2400}
.mb{position:absolute;bottom:10px;right:10px;font-size:11px;padding:3px 9px;border-radius:99px;background:#fdcb6e;color:#2d2400;font-weight:600;z-index:2}
.ct{position:absolute;bottom:10px;left:10px;font-size:11px;padding:3px 9px;border-radius:99px;background:rgba(108,92,231,.92);color:#fff;z-index:2}
.meta{padding:10px 14px 12px}
.meta b{display:block;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta small{display:block;color:var(--mu);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px;font-size:12px;color:var(--mu)}
.empty,.load{padding:60px 0;text-align:center;color:var(--mu)}
h3.sec{margin:34px 0 14px;font-size:20px}
.skg{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-top:20px}
.sk{height:220px;border-radius:var(--r);background:linear-gradient(90deg,var(--bd) 25%,color-mix(in srgb,var(--bd) 50%,var(--card)) 50%,var(--bd) 75%);background-size:200% 100%;animation:sh 1.3s infinite}
.sk:nth-child(3n){height:290px}.sk:nth-child(3n+1){height:180px}
@keyframes sh{to{background-position:-200% 0}}
/* ---------- ছবির বিস্তারিত ---------- */
.pw{margin:20px 0}
#mbox .pw{margin:0}
.pv{background:var(--card);border:1px solid var(--bd);border-radius:22px;overflow:hidden;box-shadow:var(--sh)}
.pv.port{display:grid;grid-template-columns:minmax(0,440px) 1fr}
.pimg{position:relative;background:#000}
.pimg img{display:block;width:100%;height:auto;max-height:80vh;object-fit:contain;background:#000;cursor:zoom-in}
.zm{position:absolute;right:12px;bottom:12px;width:38px;height:38px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:17px;cursor:pointer}
.pinfo{padding:22px}
.pinfo h2{margin:0 0 4px;font-size:25px;line-height:1.25}
.addr{margin:0 0 12px;color:var(--mu)}
.stats{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px;font-size:13px;color:var(--mu)}
.stats>span{background:var(--bg);border:1px solid var(--bd);padding:4px 12px;border-radius:99px}
.stats b{color:var(--tx)}
.stats .mon{background:#fdcb6e;color:#2d2400;border-color:#fdcb6e;font-weight:600}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.dla{margin:6px 0 14px;padding:14px;border-radius:16px;background:var(--bg);border:1px dashed var(--bd)}
.dla .btns{margin-bottom:0}
.dla small{display:block;color:var(--mu);margin-top:8px}
.more{display:inline-block;color:var(--ac);font-weight:600;margin:6px 0 14px}
#lb{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.92);display:none;align-items:center;justify-content:center;cursor:zoom-out;padding:10px}
#lb.on{display:flex}
#lb img{max-width:100%;max-height:100%;object-fit:contain}
/* ---------- বিজ্ঞাপন ---------- */
.adbox{margin:14px 0;text-align:center}
.adbox.top{margin:0 0 14px}
.adbox.bottom{margin:14px 0 0}
.adbox .al{display:block;font-size:10px;letter-spacing:1px;color:var(--mu);margin-bottom:4px;text-transform:uppercase}
.adin{min-height:var(--ah,90px);display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:14px;background:var(--card);border:1px solid var(--bd);max-width:100%}
.adbox.top{--ah:90px}.adbox.mid{--ah:250px}.adbox.bottom{--ah:250px}
.adin ins{width:100%}
.adin img{display:block;max-width:100%;height:auto;border-radius:10px}
.adin iframe{border:0;width:100%;display:block}
.adin .ph0{color:var(--mu);font-size:12px;padding:10px}
.adin .abn{color:var(--mu);font-size:13px;padding:12px}
#stk{position:fixed;left:0;right:0;bottom:0;z-index:150;background:var(--card);border-top:1px solid var(--bd);box-shadow:0 -6px 22px rgba(0,0,0,.2);padding:8px 10px;display:none}
#stk.on{display:block}
#stk .adin{--ah:50px;min-height:50px;border:0;background:transparent}
#stk .sx{position:absolute;top:-13px;right:10px;width:26px;height:26px;border-radius:50%;border:1px solid var(--bd);background:var(--card);color:var(--tx);cursor:pointer;font-size:12px;line-height:1}
body.has-stk{padding-bottom:76px}
body.has-stk #mbox{padding-bottom:80px}
body.has-stk #up{bottom:90px}
/* ---------- ক্রিয়েটর ---------- */
.chead{display:flex;gap:18px;align-items:center;flex-wrap:wrap;background:var(--card);border:1px solid var(--bd);border-radius:22px;padding:22px;margin:22px 0;box-shadow:var(--sh)}
.av{width:76px;height:76px;border-radius:50%;background:linear-gradient(135deg,var(--ac),var(--pk));color:#fff;display:grid;place-items:center;font-size:32px;font-weight:700;box-shadow:0 6px 18px rgba(232,67,147,.3)}
.chead h1{margin:0;font-size:24px}
/* ---------- মডাল ---------- */
#modal{position:fixed;inset:0;z-index:2147482000;background:rgba(5,6,12,.74);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);display:none;overflow:auto;padding:24px 12px}
#modal.on{display:block}
#mbox{position:relative;max-width:980px;margin:0 auto;animation:mi .28s both}
@keyframes mi{from{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}
.fbox{background:var(--card);border-radius:22px;padding:24px;max-width:520px;margin:0 auto;border:1px solid var(--bd)}
.fbox h2{margin-top:0}
.x{position:fixed;top:14px;right:14px;z-index:2147483000;pointer-events:auto;touch-action:manipulation;width:40px;height:40px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:18px;cursor:pointer}
.nv{position:fixed;top:50%;z-index:2147483000;width:44px;height:44px;margin-top:-22px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:26px;line-height:1;cursor:pointer;transition:background .2s}
.nv:hover{background:var(--ac)}
.nv.prev{left:12px}.nv.next{right:12px}
.form{display:grid;gap:10px}
.form input:not([type=checkbox]):not([type=file]),.form select{padding:12px 14px;border-radius:12px;border:1px solid var(--bd);background:var(--bg);color:var(--tx);font:inherit;width:100%}
.form input:focus,.form select:focus{outline:none;border-color:var(--ac)}
.drop{display:block;border:2px dashed var(--bd);border-radius:14px;padding:18px;text-align:center;color:var(--mu);cursor:pointer}
.drop input{display:none}
#sprev{width:100%;max-height:240px;object-fit:contain;border-radius:12px;background:#000}
.hp{position:absolute;left:-9999px;opacity:0}
.ck{font-size:13px;color:var(--mu);display:flex;gap:8px;align-items:flex-start}
.note{padding:12px 14px;border-radius:12px;background:#ffeaa7;color:#2d2400;font-size:14px;margin:8px 0}
.note.err{background:#fab1a0;color:#3d0c02}
.note.ok{background:#b8f2d9;color:#00281f}
.pay{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--bd);border-radius:12px;margin:6px 0}
.pay b{font-size:17px;letter-spacing:.5px}
.tbl{width:100%;border-collapse:collapse;font-size:14px;margin:8px 0}
.tbl td,.tbl th{padding:6px 4px;border-bottom:1px solid var(--bd);text-align:left}
/* ---------- টোস্ট ও টপ বাটন ---------- */
#toast{position:fixed;left:50%;bottom:90px;transform:translate(-50%,20px);background:#14161f;color:#fff;padding:10px 18px;border-radius:99px;font-size:14px;opacity:0;pointer-events:none;transition:all .25s;z-index:400}
#toast.on{opacity:1;transform:translate(-50%,0)}
#up{position:fixed;right:16px;bottom:20px;width:44px;height:44px;border-radius:50%;border:0;background:linear-gradient(135deg,var(--ac),var(--pk));color:#fff;font-size:20px;cursor:pointer;box-shadow:var(--sh2);opacity:0;pointer-events:none;transition:opacity .25s;z-index:60}
#up.on{opacity:1;pointer-events:auto}
footer{margin:50px 0 30px;text-align:center;color:var(--mu);font-size:13px}
body.app-on #Blog1{display:none}
.adhid{display:none!important}
.adlay{margin:20px auto;max-width:900px}
.dev{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:12px;padding:7px 16px;border-radius:99px;border:1px solid var(--bd);background:var(--card);font-size:13px}
.dev b{background:linear-gradient(90deg,var(--ac),var(--pk));-webkit-background-clip:text;background-clip:text;color:transparent}
.dev a{color:#e53935;font-weight:600}
.dev a:hover{text-decoration:underline}
@media(max-width:720px){
.bar{height:auto;flex-wrap:wrap;padding:8px 0;gap:8px}
.logo{font-size:17px;flex:1}
.search{order:5;flex-basis:100%;max-width:none;margin:0}
.btn{padding:8px 12px;font-size:14px}
.grid{column-width:150px;column-gap:10px}
.card{margin-bottom:10px;border-radius:12px}
.meta{padding:8px 10px 10px}
.meta b{font-size:13px}
.pv.port{grid-template-columns:1fr}
.pinfo{padding:16px}
.pinfo h2{font-size:20px}
#modal{padding:0}
.pv,.fbox{border-radius:0}
.pv{border-left:0;border-right:0}
.adbox{margin-left:8px;margin-right:8px}
.chead{padding:16px}
.tools{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}
.tools::-webkit-scrollbar{display:none}
.tools select{margin-left:0;flex:none}
.chip{flex:none}
.hero{padding:22px 18px;border-radius:20px;margin-top:14px}
.nv{width:38px;height:38px;font-size:22px;margin-top:-19px;background:rgba(0,0,0,.4)}
.nv.prev{left:6px}.nv.next{right:6px}
}
@media(min-width:900px){#stk{display:none!important}}
]]></b:skin>
</head>
<body>
<b:if cond='data:blog.pageType == "item"'>
<div id='bi' style='display:none' data-type='item' expr:data-pid='data:blog.postId'></div>
<b:elseif cond='data:blog.pageType == "static_page"'/>
<div id='bi' style='display:none' data-type='static'></div>
<b:else/>
<div id='bi' style='display:none' data-type='index'></div>
</b:if>
<header class='top'><div class='wrap bar'>
<a class='logo' expr:href='data:blog.homepageUrl'><span><data:blog.title/></span></a>
<div class='search'><input id='q' type='search' placeholder='নাম, ঠিকানা বা ট্যাগ দিয়ে খুঁজুন…'/></div>
<button class='ic' id='thm' title='থিম বদলান'>◐</button>
<button class='btn ghost' id='wdb'>উইথড্র</button>
<button class='btn' id='sub'>+ ছবি জমা দিন</button>
</div></header>
<main class='wrap'>
<div id='app'><div class='skg'><div class='sk'></div><div class='sk'></div><div class='sk'></div><div class='sk'></div><div class='sk'></div><div class='sk'></div><div class='sk'></div><div class='sk'></div></div></div>
<b:section class='main' id='main' showaddelement='yes'>
<b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog' version='2'>
<b:includable id='main' var='top'>
<b:loop values='data:posts' var='post'>
<article class='fb'><h2><a expr:href='data:post.url'><data:post.title/></a></h2><div><data:post.body/></div></article>
</b:loop>
</b:includable>
</b:widget>
</b:section>
</main>
<footer class='wrap'>© <data:blog.title/> — ছবির স্বত্ব সংশ্লিষ্ট শিল্পীর। আপত্তি থাকলে "রিপোর্ট" বাটন ব্যবহার করুন।
<div class='dev'>Development by <b>Tanbin Farazi</b> · <a href='https://youtube.com/@tanbintechzone?si=87yRAD3ZbGZms4dY' target='_blank' rel='noopener'>▶ YouTube: Tanbin Tech</a></div>
</footer>
<div id='modal'><div id='mbox'></div></div>
<div id='stk'></div>
<div id='lb'><img alt=''/></div>
<div id='toast'></div>
<!-- ===== বিজ্ঞাপন গ্যাজেট এলাকা (Layout থেকে HTML/JavaScript গ্যাজেট যোগ করুন) ===== -->
<div id='adstore' style='display:none'>
<b:section class='adsec' id='ad-top' maxwidgets='1' showaddelement='yes'/>
<b:section class='adsec' id='ad-mid' maxwidgets='1' showaddelement='yes'/>
<b:section class='adsec' id='ad-bottom' maxwidgets='1' showaddelement='yes'/>
<b:section class='adsec' id='ad-sticky' maxwidgets='1' showaddelement='yes'/>
</div>
<button id='up' aria-label='উপরে যান'>↑</button>
<script type='text/javascript'>//<![CDATA[
(function(){
var CFG=window.GCFG||{};
/* লেয়াউটের HTML/JavaScript গ্যাজেট থেকে বিজ্ঞাপনের কোড পড়া (কোড <template> দিয়ে মুড়ে বসাতে হবে) */
var ADSRC=document.getElementById('adstore');
['Top','Mid','Bottom','Sticky'].forEach(function(P){
var w=ADSRC&&ADSRC.querySelector('#ad-'+P.toLowerCase()+' .widget-content');
if(!w)return;
var raw=(w.innerHTML||'').trim();if(!raw)return;
var d=document.createElement('div');d.innerHTML=raw;
var tt=d.querySelector('template');
if(tt){raw=(tt.innerHTML||'').trim();if(tt.hasAttribute('data-frame'))CFG['adFrame'+P]=true}
if(raw){CFG['adCode'+P]=raw;if(/atOptions|invoke\.js|document\.write/.test(raw))CFG['adFrame'+P]=true}
});
var BI=document.getElementById('bi'),TYPE=BI?BI.getAttribute('data-type'):'index',PID=BI?BI.getAttribute('data-pid'):'';
var app=document.getElementById('app'),MD=document.getElementById('modal'),MB=document.getElementById('mbox');
var POSTS=[],F={ratio:'all',st:'all',cat:'',sort:'new',q:''};
var PREV=/[?&]adpreview=1/.test(location.search);
function el(t,c,h){var e=document.createElement(t);if(c)e.className=c;if(h!=null)e.innerHTML=h;return e}
function esc(s){return String(s==null?'':s).replace(/[&<>"']/g,function(m){return {'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]})}
function bn2en(s){return String(s==null?'':s).replace(/[০-৯]/g,function(d){return '০১২৩৪৫৬৭৮৯'.indexOf(d)})}
function toBn(s){return CFG.bn?String(s).replace(/\d/g,function(d){return '০১২৩৪৫৬৭৮৯'.charAt(d)}):String(s)}
function num(n){n=+n||0;return toBn(n>=1e6?(Math.round(n/1e5)/10)+'M':n>=1000?(Math.round(n/100)/10)+'K':n)}
function slug(s){return String(s).toLowerCase().replace(/[^a-z0-9ঀ-]+/g,'-').replace(/^-|-$/g,'')}
function ls(k,v){try{if(v===undefined)return localStorage.getItem(k);localStorage.setItem(k,v)}catch(e){}return null}
function waUrl(text,to){return 'https://wa.me/'+String(to||CFG.ownerWhatsApp||'').replace(/\D/g,'')+'?text='+encodeURIComponent(text||'')}
function cur(n){return toBn((CFG.currency||'৳')+n)}
var tt;function toast(m){var t=document.getElementById('toast');t.textContent=m;t.classList.add('on');clearTimeout(tt);tt=setTimeout(function(){t.classList.remove('on')},1800)}
/* ---------- Blogger ইমেজ রিসাইজ ---------- */
function rs(u,w){u=String(u).replace(/^http:/,'https:');
if(/\/s\d+(-[a-z0-9-]+)?\//i.test(u))return u.replace(/\/s\d+(-[a-z0-9-]+)?\//i,'/s'+w+'/');
if(/\/w\d+-h\d+(-[a-z0-9-]+)*\//i.test(u))return u.replace(/\/w\d+-h\d+(-[a-z0-9-]+)*\//i,'/s'+w+'/');
if(/=s\d+(-[a-z0-9-]+)?$/i.test(u))return u.replace(/=s\d+(-[a-z0-9-]+)?$/i,'=s'+w);
return u}
/* ---------- হ্যাশ ---------- */
function sha(s){
if(window.crypto&&crypto.subtle&&window.TextEncoder){
return crypto.subtle.digest('SHA-256',new TextEncoder().encode(s)).then(function(b){
return Array.prototype.map.call(new Uint8Array(b),function(x){return ('0'+x.toString(16)).slice(-2)}).join('').slice(0,10)})}
var h=5381;for(var i=0;i<s.length;i++)h=((h<<5)+h+s.charCodeAt(i))|0;
return Promise.resolve(('0000000000'+(h>>>0).toString(16)).slice(-10))}
function pinHash(pin){return sha((CFG.salt||'')+bn2en(pin).trim())}
/* ---------- কন্টাক্ট লিংক ---------- */
var RE_WA=/(?:wa\.me\/|whatsapp\.com\/(?:send\?phone=)?)(\+?\d+)/i,RE_TG=/t\.me\/(\+?[A-Za-z0-9_]+)/i;
function waLink(v){v=bn2en(v).trim();var m=v.match(RE_WA),d=m?m[1]:v.replace(/\D/g,'');d=String(d).replace(/^\+/,'');if(!d)return '';if(/^01\d{9}$/.test(d))d='88'+d;return 'https://wa.me/'+d}
function tgLink(v){v=bn2en(v).trim();if(/^https?:\/\//i.test(v))return v;var m=v.match(RE_TG);if(m)return 'https://t.me/'+m[1];
if(/^@/.test(v))return 'https://t.me/'+v.slice(1);var d=v.replace(/[\s-]/g,'');
if(/^\+?\d{8,15}$/.test(d)){d=d.replace(/^\+/,'');if(/^01\d{9}$/.test(d))d='88'+d;return 'https://t.me/+'+d}
if(/^[A-Za-z0-9_]{4,}$/.test(v))return 'https://t.me/'+v;return ''}
/* ---------- 12K / ১২ হাজার → সংখ্যা ---------- */
function parseCount(s){s=bn2en(s||'').replace(/,/g,'').replace(/হাজার/g,'K').replace(/লাখ/g,'L').trim().toUpperCase();
var m=s.match(/^([\d.]+)\s*([KML])?$/);if(!m)return 0;return Math.round((parseFloat(m[1])||0)*({K:1e3,L:1e5,M:1e6}[m[2]]||1))}
/* ---------- ফিড এন্ট্রি পার্স ---------- */
function parseEntry(e){
var id=((e.id&&e.id.$t||'').match(/post-(\d+)/)||[])[1]||'';
var html=(e.content&&e.content.$t)||'';
var doc=new DOMParser().parseFromString(html.replace(/<br\s*\/?>/gi,'\n').replace(/(<\/(?:p|div|li|h\d)>)/gi,'$1\n'),'text/html');
var cfg={},vc=doc.querySelector('.vcfg');
if(vc){(vc.textContent||'').split('\n').forEach(function(l){var m=l.match(/^\s*([A-Za-z]+)\s*[::=]\s*(.+?)\s*$/);if(m)cfg[m[1].toLowerCase()]=m[2]});vc.parentNode.removeChild(vc)}
var im=doc.querySelector('img'),src=im?im.getAttribute('src'):'',w=0,h=0;
if(im){w=+(im.getAttribute('data-original-width')||im.getAttribute('width'))||0;h=+(im.getAttribute('data-original-height')||im.getAttribute('height'))||0}
var lines=(doc.body.textContent||'').split('\n').map(function(x){return x.replace(/\u00a0/g,' ').trim()}).filter(Boolean);
var m={name:'',addr:'',wa:'',tg:''},rest=[];
lines.forEach(function(l){var mm;
if((mm=l.match(/^(?:name|নাম)\s*[::\-–]\s*(.+)$/i))){m.name=mm[1];return}
if((mm=l.match(/^(?:address|location|ঠিকানা)\s*[::\-–]\s*(.+)$/i))){m.addr=mm[1];return}
if((mm=l.match(/^(?:whats\s*app|wa|হোয়াটসঅ্যাপ|হোয়াটসএপ)\s*[::\-–]\s*(.+)$/i))){m.wa=waLink(mm[1]);return}
if((mm=l.match(/^(?:telegram|tg|টেলিগ্রাম)\s*[::\-–]\s*(.+)$/i))){m.tg=tgLink(mm[1]);return}
if(RE_WA.test(l)){m.wa=waLink(l);return}
if(RE_TG.test(l)){m.tg=tgLink(l);return}
if(/^\+?(88)?01\d{9}$/.test(bn2en(l).replace(/[\s-]/g,''))){m.wa=waLink(l);return}
rest.push(l)});
var title=(e.title&&e.title.$t)||'';
var name=m.name||rest.shift()||title,addr=m.addr||rest.shift()||'';
var labels=(e.category||[]).map(function(c){return c.term}),pin='',ucode='',mon=false,noads=false,tags=[];
labels.forEach(function(l){var t=l.trim(),mm;
if(/^\d{3,10}$/.test(bn2en(t)))pin=bn2en(t);
else if(/^u-[0-9a-f]{10}$/i.test(t))ucode=t.slice(2).toLowerCase();
else if(/^monetization$/i.test(t))mon=true;
else if(/^noads$/i.test(t))noads=true;
else if(/^paid$/i.test(t))cfg.status='PAID';
else if(/^free$/i.test(t))cfg.status='FREE';
else if((mm=t.match(/^(price|views|downloads|category|cat|status|withdrawn)\s*[:=]\s*(.+)$/i)))cfg[mm[1].toLowerCase()==='cat'?'category':mm[1].toLowerCase()]=mm[2];
else tags.push(t)});
if(/^(1|true|yes)$/i.test(cfg.noads||''))noads=true;
var price=parseFloat(bn2en(cfg.price||'').replace(/[^\d.]/g,''))||0;
var paid=/paid|পেইড/i.test(cfg.status||'')||(!cfg.status&&price>0);
var url='';(e.link||[]).forEach(function(l){if(l.rel==='alternate')url=l.href});
var p={id:id,img:src,w:w,h:h,name:name,addr:addr,wa:m.wa,tg:m.tg,pin:pin,ucode:ucode,mon:mon,noads:noads,tags:tags,url:url,
paid:paid,price:price,category:(cfg.category||'').trim(),views:parseCount(cfg.views),dls:parseCount(cfg.downloads),wd:parseCount(cfg.withdrawn)};
p.port=(w&&h)?h>w:false;p.ar=(w&&h)?w+'/'+h:'16/9';return p}
function gid(p){
if(p.pin)return pinHash(p.pin).then(function(h){p.cid=h});
p.cid=p.ucode||('x'+p.id);return Promise.resolve()}
function loadPosts(){
return fetch('/feeds/posts/default?alt=json&max-results='+(CFG.maxPosts||500)).then(function(r){return r.json()}).then(function(j){
var es=(j.feed&&j.feed.entry)||[];POSTS=es.map(parseEntry).filter(function(p){return p.img&&p.id});
return Promise.all(POSTS.map(gid))})}
function byId(id){return POSTS.filter(function(x){return x.id===id})[0]}
/* ---------- পয়েন্ট ও মনিটাইজেশন ---------- */
function pts(p){var g=Math.floor(p.views/(CFG.viewsPerStep||1000))*(CFG.pointsPerStep||100);return Math.max(0,g-(p.wd||0))}
function isMon(p){return p.mon||p.views>=(CFG.monetizeViews||500)}
/* =====================================================
বিজ্ঞাপন সিস্টেম — শুধু ছবির বিস্তারিত ভিউতে চলে
===================================================== */
var adsLoaded=false,blocked=false;
function cap(s){return s.charAt(0).toUpperCase()+s.slice(1)}
function adsAllowed(p){
if(CFG.adsOn===false||p.noads)return false;
if(p.paid&&CFG.adsOnPaid===false)return false;
if(CFG.adsMode==='monetized'&&!isMon(p))return false;
return true}
function hasAd(pos){
var P=cap(pos);
return !!(CFG['adCode'+P]||(CFG.adClient&&(CFG['adSlot'+P]||CFG.adSlot))||CFG.adBannerImg||PREV||CFG.adPlaceholder)}
function loadAdSense(){
if(adsLoaded||!CFG.adClient)return;adsLoaded=true;
var s=document.createElement('script');s.async=true;s.crossOrigin='anonymous';
s.src='https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client='+encodeURIComponent(CFG.adClient);
document.head.appendChild(s)}
function injectCode(box,html){
var t=document.createElement('div');t.innerHTML=html;
var sc=[].slice.call(t.querySelectorAll('script'));
sc.forEach(function(s){s.parentNode.removeChild(s)});
box.appendChild(t);
sc.forEach(function(o){
if(o.src&&/adsbygoogle\.js/.test(o.src)){if(adsLoaded)return;adsLoaded=true}
var n=document.createElement('script');
[].forEach.call(o.attributes,function(a){n.setAttribute(a.name,a.value)});
if(o.text)n.text=o.text;box.appendChild(n)})}
function fillAd(box,pos){
var P=cap(pos),code=CFG['adCode'+P],slot=CFG['adSlot'+P]||CFG.adSlot;
if(blocked&&CFG.adblockNotice){box.innerHTML='<div class="abn">\uD83D\uDE4F বিজ্ঞাপন ব্লকার বন্ধ রাখলে সাইটটি ফ্রি রাখতে সাহায্য হয়। ধন্যবাদ!</div>';return true}
if(code){
if(CFG.adCodeIframe||CFG['adFrame'+P]||/atOptions|invoke\.js|document\.write/.test(code)){
var h={top:100,mid:260,bottom:260,sticky:60}[pos]||100;
var f=document.createElement('iframe');f.height=h;f.setAttribute('scrolling','no');
f.setAttribute('sandbox','allow-scripts allow-popups allow-popups-to-escape-sandbox allow-same-origin');
f.srcdoc='<body style="margin:0;display:flex;justify-content:center;background:transparent">'+code+'</body>';
box.appendChild(f)}
else injectCode(box,code);
return true}
if(CFG.adClient&&slot){
loadAdSense();
var ins=document.createElement('ins');ins.className='adsbygoogle';ins.style.display='block';
ins.setAttribute('data-ad-client',CFG.adClient);ins.setAttribute('data-ad-slot',slot);
ins.setAttribute('data-ad-format',pos==='sticky'?'horizontal':'auto');
ins.setAttribute('data-full-width-responsive','true');
box.appendChild(ins);
try{(window.adsbygoogle=window.adsbygoogle||[]).push({})}catch(e){}
return true}
if(CFG.adBannerImg){
var a=document.createElement('a');a.href=CFG.adBannerUrl||'#';a.target='_blank';a.rel='sponsored noopener nofollow';
a.innerHTML='<img loading="lazy" alt="'+esc(CFG.adBannerAlt||'')+'" src="'+esc(CFG.adBannerImg)+'"/>';
box.appendChild(a);return true}
if(PREV||CFG.adPlaceholder){box.innerHTML='<span class="ph0">বিজ্ঞাপনের জায়গা ('+pos+')</span>';return true}
return false}
function adNode(pos){
var w=el('div','adbox '+pos,'<span class="al">'+esc(CFG.adLabel||'বিজ্ঞাপন')+'</span><div class="adin"></div>');
var inn=w.querySelector('.adin'),done=false;
function go(){if(done)return;done=true;if(!fillAd(inn,pos))w.style.display='none'}
if(CFG.adLazy!==false&&'IntersectionObserver' in window){
var io=new IntersectionObserver(function(es){if(es[0].isIntersecting){io.disconnect();go()}},{rootMargin:'250px'});io.observe(w)}
else setTimeout(go,60);
return w}
function detectBlock(){
if(!CFG.adblockNotice)return;
var b=el('div','adsbox ad-banner textads');b.style.cssText='position:absolute;left:-999px;top:-999px;width:10px;height:10px';
document.body.appendChild(b);
setTimeout(function(){blocked=!b.offsetHeight;if(b.parentNode)b.parentNode.removeChild(b)},250)}
function showSticky(p){
hideSticky();
if(!adsAllowed(p)||CFG.adShowSticky===false||!hasAd('sticky'))return;
if(CFG.adStickyMobileOnly!==false&&window.innerWidth>=900)return;
if(Date.now()-(+ls('stkx')||0)<(CFG.adStickyHideMin||30)*6e4)return;
var s=document.getElementById('stk');
s.innerHTML='<button class="sx" aria-label="বন্ধ">✕</button><div class="adin"></div>';
s.classList.add('on');document.body.classList.add('has-stk');
fillAd(s.querySelector('.adin'),'sticky');
s.querySelector('.sx').onclick=function(){ls('stkx',Date.now());hideSticky()}}
function hideSticky(){
var s=document.getElementById('stk');if(s){s.classList.remove('on');s.innerHTML=''}
document.body.classList.remove('has-stk')}
/* ---------- কার্ড ও গ্রিড (এখানে কোনো বিজ্ঞাপন নেই) ---------- */
function card(p){
var a=el('article','card');a.setAttribute('data-id',p.id);var pt=pts(p);
a.innerHTML='<div class="ph"><img loading="lazy" decoding="async" alt="'+esc(p.name)+'" src="'+rs(p.img,p.port?500:640)+'" style="--ar:'+p.ar+'"/>'+
'<span class="tag">'+(p.port?'৯:১৬':'১৬:৯')+'</span>'+
'<span class="pb'+(p.paid?' paid':'')+'">'+(p.paid?cur(p.price||0):'FREE')+'</span>'+
(p.category?'<span class="ct">'+esc(p.category)+'</span>':'')+(isMon(p)?'<span class="mb">\uD83D\uDCB0</span>':'')+'</div>'+
'<div class="meta"><b>'+esc(p.name)+'</b>'+(p.addr?'<small>\uD83D\uDCCD '+esc(p.addr)+'</small>':'')+
'<div class="st">'+(p.views?'<span>\uD83D\uDC41 '+num(p.views)+'</span>':'')+(p.dls?'<span>⬇ '+num(p.dls)+'</span>':'')+(pt?'<span>⭐ '+num(pt)+'</span>':'')+'</div></div>';
var im=a.querySelector('img');
im.onload=function(){if(!p.w&&im.naturalWidth){p.w=im.naturalWidth;p.h=im.naturalHeight;p.port=p.h>p.w;p.ar=p.w+'/'+p.h;
im.style.setProperty('--ar',p.ar);a.querySelector('.tag').textContent=p.port?'৯:১৬':'১৬:৯'}};
return a}
function mkGrid(list){
var g=el('div','grid');list.forEach(function(p,i){var c=card(p);c.style.animationDelay=Math.min(i,12)*30+'ms';g.appendChild(c)});
g.addEventListener('click',function(e){var c=e.target.closest('.card');if(!c)return;var p=byId(c.getAttribute('data-id'));if(p)openPost(p,list)});
return g}
/* ---------- মডাল ---------- */
var CURLIST=[],CURIDX=-1;
function openM(node){hideSticky();MB.innerHTML='<button class="x" aria-label="বন্ধ">✕</button>';MB.appendChild(node);MD.style.display='block';MD.classList.add('on');document.body.classList.add('lock');MD.scrollTop=0}
function openPost(p,list){CURLIST=list&&list.length?list:[p];CURIDX=CURLIST.indexOf(p);showPost(p)}
function showPost(p){
MB.innerHTML='<button class="x" aria-label="বন্ধ">✕</button>'+(CURLIST.length>1?'<button class="nv prev" aria-label="আগেরটি">‹</button><button class="nv next" aria-label="পরেরটি">›</button>':'');
MB.appendChild(postView(p));
MB.style.animation='none';void MB.offsetWidth;MB.style.animation='';
MD.style.display='block';MD.classList.add('on');document.body.classList.add('lock');MD.scrollTop=0;
showSticky(p)}
function step(d){
if(!MD.classList.contains('on')||CURLIST.length<2||CURIDX<0)return;
CURIDX=(CURIDX+d+CURLIST.length)%CURLIST.length;showPost(CURLIST[CURIDX])}
function closeM(){MD.classList.remove('on');MD.style.display='none';document.body.classList.remove('lock');try{MB.innerHTML=''}catch(e){}CURIDX=-1;try{if(TYPE!=='item')hideSticky()}catch(e){}}
function modalClick(e){
var t=e.target;if(!t||!t.closest)return;
if(t.closest('.x')){e.preventDefault();e.stopPropagation();closeM();return}
if(t.closest('.prev')){e.preventDefault();e.stopPropagation();step(-1);return}
if(t.closest('.next')){e.preventDefault();e.stopPropagation();step(1);return}
if(t===MD){closeM()}}
document.addEventListener('click',modalClick,true);
document.addEventListener('touchend',function(e){var t=e.target;if(t&&t.closest&&t.closest('.x')){e.preventDefault();closeM()}},true);
document.addEventListener('keydown',function(e){
if(e.key==='Escape'){var lb=document.getElementById('lb');if(lb.classList.contains('on'))lb.classList.remove('on');else closeM()}
if(e.key==='ArrowLeft'&&CURIDX>=0)step(-1);
if(e.key==='ArrowRight'&&CURIDX>=0)step(1)});
document.getElementById('lb').onclick=function(){this.classList.remove('on')};
function zoom(p){var lb=document.getElementById('lb');lb.querySelector('img').src=rs(p.img,2000);lb.classList.add('on')}
/* ---------- ডাউনলোড আনলক ---------- */
function unlocked(p){return Date.now()-(+ls('u'+p.id)||0)<(CFG.unlockMinutes||30)*6e4}
function dlHtml(p){
if(p.paid)return '<div class="btns"><button class="btn buy" data-a="buy">\uD83D\uDED2 কিনুন — '+cur(p.price||0)+'</button></div><small>পেইড ছবি: পেমেন্টের পর WhatsApp-এ অরিজিনাল ফাইল পাঠানো হবে।</small>';
if(unlocked(p))return '<div class="btns"><button class="btn" data-a="sd">⬇ ডাউনলোড (SD)</button><button class="btn hd" data-a="hd">⬇ HD ডাউনলোড</button></div>';
return '<div class="btns"><button class="btn" data-a="unlock">\uD83E\uDD16 Human Verify করুন</button></div><small>ভেরিফাই করলে একটি স্পনসর (বিজ্ঞাপন) পেজ নতুন ট্যাবে খুলবে। '+toBn(CFG.waitSeconds||5)+' সেকেন্ড পর ডাউনলোড চালু হবে।</small>'}
function startUnlock(p,box,btn){
if(CFG.sponsorUrl)window.open(CFG.sponsorUrl,'_blank');
var n=CFG.waitSeconds||5;btn.disabled=true;btn.textContent='⏳ ভেরিফাই হচ্ছে… '+toBn(n);
var t=setInterval(function(){n--;if(n>0){btn.textContent='⏳ ভেরিফাই হচ্ছে… '+toBn(n);return}
clearInterval(t);ls('u'+p.id,Date.now());box.innerHTML='<div class="note ok">✅ ভেরিফাইড! এখন ডাউনলোড করুন।</div>'+dlHtml(p)},1000)}
function dl(p,size,hd){
var u=rs(p.img,size);
fetch(u).then(function(r){return r.blob()}).then(function(b){
var a=document.createElement('a');a.href=URL.createObjectURL(b);
a.download=(slug(p.name)||'image')+'-'+p.id+(hd?'-hd':'-sd')+(b.type==='image/png'?'.png':b.type==='image/webp'?'.webp':'.jpg');
document.body.appendChild(a);a.click();setTimeout(function(){URL.revokeObjectURL(a.href);a.remove()},1500)
}).catch(function(){window.open(u,'_blank')})}
/* ---------- কেনা (পেইড ছবি) ---------- */
function openBuy(p){
var pays=[['বিকাশ',CFG.bkash],['নগদ',CFG.nagad],['রকেট',CFG.rocket]].filter(function(x){return x[1]&&!/X{4}/.test(x[1])});
var msg='\uD83D\uDED2 ছবি কিনতে চাই\nছবি: '+(p.url||'')+'\nID: '+p.id+'\nনাম: '+p.name+'\nপ্রাইস: '+(CFG.currency||'৳')+p.price+'\n\nপেমেন্ট করার পর ট্রানজেকশন আইডি পাঠাচ্ছি।';
var box=el('div','fbox','<h2>\uD83D\uDED2 ছবি কিনুন — '+cur(p.price||0)+'</h2><p>নিচের যেকোনো নম্বরে <b>'+cur(p.price||0)+'</b> সেন্ড মানি করুন, তারপর WhatsApp-এ ট্রানজেকশন আইডি জানান।</p>'+
(pays.length?pays.map(function(x){return '<div class="pay"><span>'+x[0]+'</span><b>'+esc(x[1])+'</b><button class="btn ghost" data-copy="'+esc(x[1])+'">কপি</button></div>'}).join(''):'<div class="note">অ্যাডমিন এখনও পেমেন্ট নম্বর সেট করেননি।</div>')+
'<div class="btns" style="margin-top:14px"><a class="btn wa" target="_blank" rel="noopener" href="'+esc(waUrl(msg))+'">WhatsApp-এ জানান</a></div>');
box.addEventListener('click',function(e){var b=e.target.closest('[data-copy]');if(b&&navigator.clipboard){navigator.clipboard.writeText(b.getAttribute('data-copy'));b.textContent='✓'}});
openM(box)}
/* ---------- পোস্ট ভিউ (এখানেই বিজ্ঞাপন) ---------- */
function postView(p){
var mon=isMon(p),pt=pts(p),ads=adsAllowed(p);
var w=el('div','pw'),d=el('div','pv '+(p.port?'port':'land'));
d.innerHTML='<div class="pimg"><img src="'+rs(p.img,1600)+'" alt="'+esc(p.name)+'"/><button class="zm" data-a="zoom" aria-label="বড় করুন">⤢</button></div><div class="pinfo">'+
'<h2>'+esc(p.name)+'</h2>'+(p.addr?'<p class="addr">\uD83D\uDCCD '+esc(p.addr)+'</p>':'')+
'<div class="stats">'+(p.views?'<span>\uD83D\uDC41 <b>'+num(p.views)+'</b> ভিউ</span>':'')+(p.dls?'<span>⬇ <b>'+num(p.dls)+'</b> ডাউনলোড</span>':'')+
(p.category?'<span>\uD83C\uDFF7 '+esc(p.category)+'</span>':'')+'<span>'+(p.paid?'\uD83D\uDCB3 PAID '+cur(p.price||0):'\uD83C\uDD93 FREE')+'</span>'+
(pt?'<span>⭐ <b>'+num(pt)+'</b> পয়েন্ট</span>':'')+(mon?'<span class="mon">\uD83D\uDCB0 মনিটাইজড</span>':'')+'</div>'+
'<div class="dla">'+dlHtml(p)+'</div>'+
'<div class="btns">'+
(p.wa?'<a class="btn wa" target="_blank" rel="noopener nofollow" href="'+esc(p.wa)+'">WhatsApp</a>':'')+
(p.tg?'<a class="btn tg" target="_blank" rel="noopener nofollow" href="'+esc(p.tg)+'">Telegram</a>':'')+
'<button class="btn ghost" data-a="sh">শেয়ার</button><button class="btn ghost" data-a="wd">\uD83D\uDCB8 উইথড্র</button>'+
(CFG.reportEmail?'<button class="btn ghost" data-a="rp">রিপোর্ট</button>':'')+'</div>'+
'<div class="amid"></div>'+
'<a class="more" href="/?creator='+p.cid+'">এই শিল্পীর সব ছবি →</a>'+
(p.tags.length?'<div>'+p.tags.map(function(t){return '<span class="chip" style="font-size:12px;padding:3px 10px;margin-right:4px">#'+esc(t)+'</span>'}).join('')+'</div>':'')+
'</div>';
/* বিজ্ঞাপন বসানো: উপরে, মাঝে, নিচে */
if(ads&&CFG.adShowTop!==false&&hasAd('top'))w.appendChild(adNode('top'));
w.appendChild(d);
if(ads&&CFG.adShowMid!==false&&hasAd('mid'))d.querySelector('.amid').appendChild(adNode('mid'));
if(ads&&CFG.adShowBottom!==false&&hasAd('bottom'))w.appendChild(adNode('bottom'));
var dla=d.querySelector('.dla');
d.addEventListener('click',function(e){var b=e.target.closest('[data-a]');if(!b)return;var a=b.getAttribute('data-a');
if(a==='unlock')startUnlock(p,dla,b);
if(a==='sd')dl(p,CFG.sdSize||1280,false);
if(a==='hd')dl(p,0,true);
if(a==='buy')openBuy(p);
if(a==='wd')openWithdraw(p);
if(a==='zoom')zoom(p);
if(a==='sh'){var u=p.url||location.href;if(navigator.share)navigator.share({title:p.name,url:u}).catch(function(){});
else if(navigator.clipboard){navigator.clipboard.writeText(u);toast('লিংক কপি হয়েছে ✓')}}
if(a==='rp')location.href='mailto:'+CFG.reportEmail+'?subject='+encodeURIComponent('রিপোর্ট: '+p.id)+'&body='+encodeURIComponent(p.url||'')});
d.querySelector('.pimg img').onclick=function(){zoom(p)};
return w}
/* ---------- উইথড্র (পিন যাচাই + ব্যান) ---------- */
function getBan(){try{return JSON.parse(ls('wdban')||'{}')||{}}catch(e){return {}}}
function setBan(b){ls('wdban',JSON.stringify(b))}
function openWithdraw(ctx){
var box=el('div','fbox');openM(box);
function banView(b){
var adm=waUrl('আমার উইথড্র অপশন ব্যান হয়েছে। ভুল হয়ে থাকলে দেখুন।');
if(b.perm){box.innerHTML='<h2>\uD83D\uDEAB নিষিদ্ধ</h2><div class="note err">বারবার ভুল পিন দেওয়ায় এই ডিভাইস থেকে উইথড্র অপশন স্থায়ীভাবে নিষিদ্ধ করা হয়েছে। ভুল হয়ে থাকলে অ্যাডমিনের সাথে যোগাযোগ করুন।</div><a class="btn wa" target="_blank" rel="noopener" href="'+esc(adm)+'">অ্যাডমিনকে জানান</a>';return true}
if(b.until&&b.until>Date.now()){var h=Math.ceil((b.until-Date.now())/36e5);
box.innerHTML='<h2>⛔ সাময়িক ব্যান</h2><div class="note err">ভুল পিন দেওয়ায় আপনি '+toBn(CFG.banHours||24)+' ঘণ্টার জন্য উইথড্র রিকোয়েস্ট করতে পারবেন না। আর প্রায় '+toBn(h)+' ঘণ্টা পর আবার চেষ্টা করুন। ব্যান শেষে আবার ভুল করলে স্থায়ীভাবে নিষিদ্ধ হবেন।</div>';return true}
return false}
function wrong(){
var b=getBan();b.strikes=(b.strikes||0)+1;
if(b.strikes>=(CFG.strikesToPermanent||2)){b.perm=true}else{b.until=Date.now()+(CFG.banHours||24)*36e5}
setBan(b);banView(b)}
function form(){
box.innerHTML='<h2>\uD83D\uDCB8 উইথড্র রিকোয়েস্ট</h2><p style="color:var(--mu)">ছবিতে দেওয়া আপনার গোপন পিন লিখুন। প্রতি '+toBn(CFG.viewsPerStep||1000)+' ভিউতে '+toBn(CFG.pointsPerStep||100)+' পয়েন্ট। ন্যূনতম '+toBn(CFG.minWithdraw||100)+' পয়েন্ট।</p>'+
'<form class="form" id="wf"><input id="wpin" type="password" inputmode="numeric" placeholder="গোপন পিন" required autocomplete="off"/><button class="btn" type="submit">যাচাই করুন</button></form>'+
'<div class="note" style="margin-top:12px">⚠️ ভুল পিন দিলে '+toBn(CFG.banHours||24)+' ঘণ্টার জন্য ব্যান; ব্যানের পর আবার ভুল করলে স্থায়ী নিষেধাজ্ঞা।</div>';
box.querySelector('#wf').onsubmit=function(e){e.preventDefault();var pin=box.querySelector('#wpin').value;
pinHash(pin).then(function(h){
var list=POSTS.filter(function(p){return p.cid===h});
if(!list.length||(ctx&&ctx.cid!==h)){wrong();return}
step2(list,pin)})}}
function step2(list,pin){
var total=0,rows='';list.forEach(function(p){var x=pts(p);total+=x;rows+='<tr><td>'+esc(p.name)+' · ID '+toBn(p.id.slice(-5))+'</td><td>\uD83D\uDC41 '+num(p.views)+'</td><td>⭐ '+num(x)+'</td></tr>'});
var min=CFG.minWithdraw||100;
if(total<min){box.innerHTML='<h2>✅ পিন সঠিক</h2><table class="tbl">'+rows+'</table><div class="note">মোট পয়েন্ট: <b>'+num(total)+'</b>। উইথড্রের জন্য ন্যূনতম '+num(min)+' পয়েন্ট লাগবে।</div>';return}
box.innerHTML='<h2>✅ পিন সঠিক</h2><table class="tbl">'+rows+'</table><p>মোট পয়েন্ট: <b>'+num(total)+'</b></p>'+
'<form class="form" id="wf2"><input id="wam" type="number" min="'+min+'" max="'+total+'" value="'+total+'" required/>'+
'<select id="wmt"><option>বিকাশ</option><option>নগদ</option><option>রকেট</option></select>'+
'<input id="wno" type="tel" placeholder="যে নম্বরে নিতে চান" required/><button class="btn wa" type="submit">WhatsApp-এ রিকোয়েস্ট পাঠান</button></form>';
box.querySelector('#wf2').onsubmit=function(e){e.preventDefault();
var am=Math.min(total,Math.max(min,+box.querySelector('#wam').value||total));
var msg='\uD83D\uDCB8 উইথড্র রিকোয়েস্ট\nনাম: '+list[0].name+'\nপিন: '+pin+'\nমোট পয়েন্ট: '+total+'\nউইথড্র: '+am+'\nমেথড: '+box.querySelector('#wmt').value+'\nনম্বর: '+box.querySelector('#wno').value+'\nছবি:\n'+list.slice(0,10).map(function(p){return (p.url||p.id)+' (ভিউ '+p.views+')'}).join('\n');
window.open(waUrl(msg),'_blank')}}
if(!banView(getBan()))form()}
/* ---------- হোম (কোনো বিজ্ঞাপন নেই) ---------- */
function filtered(){
var q=F.q.toLowerCase(),l=POSTS.filter(function(p){
if(F.ratio==='land'&&p.port)return false;if(F.ratio==='port'&&!p.port)return false;
if(F.st==='free'&&p.paid)return false;if(F.st==='paid'&&!p.paid)return false;
if(F.cat&&p.category!==F.cat)return false;
if(q&&(p.name+' '+p.addr+' '+p.category+' '+p.tags.join(' ')).toLowerCase().indexOf(q)<0)return false;return true});
if(F.sort==='views')l.sort(function(a,b){return b.views-a.views});
if(F.sort==='dl')l.sort(function(a,b){return b.dls-a.dls});
return l}
function renderHome(){
var cats={},tv=0,fr=0;POSTS.forEach(function(p){if(p.category)cats[p.category]=1;tv+=p.views;if(!p.paid)fr++});
var ck=Object.keys(cats);
app.innerHTML='<section class="hero"><h1>সুন্দর ছবির সংগ্রহ</h1><p>১৬:৯ ও ৯:১৬ — আপনার তোলা বা ডিজাইন করা ছবি জমা দিন, ডাউনলোড করুন, শিল্পীর সাথে সরাসরি যোগাযোগ করুন।</p>'+
'<div class="hst"><span>\uD83D\uDDBC '+num(POSTS.length)+' ছবি</span><span>\uD83D\uDC41 '+num(tv)+' ভিউ</span><span>\uD83C\uDD93 '+num(fr)+' ফ্রি</span></div></section>'+
'<div class="tools" id="t1"><button class="chip on" data-r="all">সব</button><button class="chip" data-r="land">১৬:৯</button><button class="chip" data-r="port">৯:১৬</button>'+
'<button class="chip on" data-s="all">ফ্রি+পেইড</button><button class="chip" data-s="free">\uD83C\uDD93 ফ্রি</button><button class="chip" data-s="paid">\uD83D\uDCB3 পেইড</button>'+
'<select id="srt"><option value="new">নতুন আগে</option><option value="views">বেশি ভিউ</option><option value="dl">বেশি ডাউনলোড</option></select></div>'+
(ck.length?'<div class="tools" id="t2"><button class="chip on" data-c="">সব ক্যাটাগরি</button>'+ck.map(function(c){return '<button class="chip" data-c="'+esc(c)+'">'+esc(c)+'</button>'}).join('')+'</div>':'')+
'<div id="gw"></div>';
var gw=app.querySelector('#gw');
function draw(){var l=filtered();gw.innerHTML='';if(!l.length){gw.innerHTML='<div class="empty">কোনো ছবি পাওয়া যায়নি।</div>';return}gw.appendChild(mkGrid(l))}
function mark(attr,val){[].forEach.call(app.querySelectorAll('['+attr+']'),function(x){x.classList.toggle('on',x.getAttribute(attr)===val)})}
app.addEventListener('click',function(e){var b=e.target.closest('.chip');if(!b)return;
if(b.hasAttribute('data-r')){F.ratio=b.getAttribute('data-r');mark('data-r',F.ratio)}
else if(b.hasAttribute('data-s')){F.st=b.getAttribute('data-s');mark('data-s',F.st)}
else if(b.hasAttribute('data-c')){F.cat=b.getAttribute('data-c');mark('data-c',F.cat)}
else return;draw()});
app.querySelector('#srt').onchange=function(){F.sort=this.value;draw()};
window.__draw=draw;draw()}
/* ---------- ক্রিয়েটর পেজ (কোনো বিজ্ঞাপন নেই) ---------- */
function renderCreator(cid){
var list=POSTS.filter(function(p){return p.cid===cid});
if(!list.length){app.innerHTML='<div class="empty">এই শিল্পীর কোনো ছবি পাওয়া যায়নি।</div>';return}
var p0=list[0],v=0,d=0,pt=0;list.forEach(function(p){v+=p.views;d+=p.dls;pt+=pts(p)});
var h=el('div','chead','<div class="av">'+esc((p0.name||'?').charAt(0))+'</div><div style="flex:1;min-width:200px"><h1>'+esc(p0.name)+'</h1>'+
(p0.addr?'<p class="addr" style="margin:2px 0 8px">\uD83D\uDCCD '+esc(p0.addr)+'</p>':'')+
'<div class="stats" style="margin:0"><span><b>'+num(list.length)+'</b> ছবি</span><span>\uD83D\uDC41 <b>'+num(v)+'</b></span>'+(d?'<span>⬇ <b>'+num(d)+'</b></span>':'')+'<span>⭐ <b>'+num(pt)+'</b> পয়েন্ট</span></div></div>'+
'<div class="btns" style="margin:0">'+(p0.wa?'<a class="btn wa" target="_blank" rel="noopener nofollow" href="'+esc(p0.wa)+'">WhatsApp</a>':'')+(p0.tg?'<a class="btn tg" target="_blank" rel="noopener nofollow" href="'+esc(p0.tg)+'">Telegram</a>':'')+
'<button class="btn ghost" id="cwd">\uD83D\uDCB8 উইথড্র</button></div>');
app.innerHTML='';app.appendChild(h);app.appendChild(mkGrid(list));
h.querySelector('#cwd').onclick=function(){openWithdraw(list[0])}}
/* ---------- সিঙ্গেল পোস্ট (বিজ্ঞাপন সহ) ---------- */
function renderItem(pid){
function go(p){
app.innerHTML='';app.appendChild(postView(p));showSticky(p);
var o=POSTS.filter(function(x){return x.cid===p.cid&&x.id!==p.id});
if(o.length){app.appendChild(el('h3','sec','এই শিল্পীর আরও ছবি'));app.appendChild(mkGrid(o))}
var m=POSTS.filter(function(x){return x.cid!==p.cid}).slice(0,12);
if(m.length){app.appendChild(el('h3','sec','আরও ছবি'));app.appendChild(mkGrid(m))}}
var p=byId(pid);if(p)return go(p);
return fetch('/feeds/posts/default/'+pid+'?alt=json').then(function(r){return r.json()}).then(function(j){
var q=parseEntry(j.entry);if(!q.img){document.body.classList.remove('app-on');app.style.display='none';return}
return gid(q).then(function(){POSTS.push(q);go(q)})})}
/* ---------- পিন-কোড টুল (শুধু অ্যাডমিনের জন্য: /?pintool=1) ---------- */
function renderTool(){
app.innerHTML='<div class="fbox" style="margin-top:30px"><h2>\uD83D\uDD10 পিন → নিরাপদ লেবেল কোড</h2><p style="color:var(--mu)">পিন লিখুন, নিচে যে কোড আসবে সেটি লেবেল হিসেবে দিন। এতে আসল পিন ফিডে দেখা যাবে না, কিন্তু উইথড্রে ওই পিনই কাজ করবে।</p>'+
'<form class="form" id="tf"><input id="tpin" inputmode="numeric" placeholder="পিন (৪–১০ সংখ্যা)" required/><button class="btn" type="submit">কোড বানান</button></form><div id="tout"></div></div>';
app.querySelector('#tf').onsubmit=function(e){e.preventDefault();
pinHash(app.querySelector('#tpin').value).then(function(h){app.querySelector('#tout').innerHTML='<div class="note ok">লেবেল: <b>u-'+h+'</b></div>'})}}
/* ---------- বিজ্ঞাপন কোড কনভার্টার (শুধু অ্যাডমিনের জন্য: /?adtool=1) ---------- */
function toLine(code,P){
var s=String(code).trim().replace(/\\/g,'\\\\').replace(/'/g,"\\'").replace(/\r?\n/g,'\\n').replace(/<\/script/gi,'<\\/script');
return 'adCode'+P+":'"+s+"',"}
function renderAdTool(){
var ta='padding:12px 14px;border-radius:12px;border:1px solid var(--bd);background:var(--bg);color:var(--tx);font:13px monospace;width:100%';
app.innerHTML='<div class="fbox" style="margin-top:30px;max-width:720px"><h2>\uD83E\uDDE9 বিজ্ঞাপনের কোড কনভার্টার</h2><p style="color:var(--mu)">নেটওয়ার্কের কোড নিচে যেমন আছে তেমন পেস্ট করুন। জায়গা বেছে "লাইন বানান" চাপুন, তারপর যে লাইন আসবে সেটি GCFG-র ফাঁকা লাইনের জায়গায় বসান।</p>'+
'<form class="form" id="atf"><select id="atp"><option value="Top">Top — ছবির উপরে</option><option value="Mid">Mid — বাটনের নিচে</option><option value="Bottom">Bottom — সবার নিচে</option><option value="Sticky">Sticky — মোবাইলের নিচে আটকানো</option></select>'+
'<textarea id="atc" rows="8" style="'+ta+'" placeholder="এখানে নেটওয়ার্কের কোড পেস্ট করুন" required></textarea><button class="btn" type="submit">লাইন বানান</button></form><div id="ato"></div></div>';
app.querySelector('#atf').onsubmit=function(e){e.preventDefault();
var P=app.querySelector('#atp').value,line=toLine(app.querySelector('#atc').value,P);
app.querySelector('#ato').innerHTML='<div class="note ok" style="margin-top:12px">তৈরি লাইন (কপি করে GCFG-তে adCode'+P+': লাইনের জায়গায় বসান):</div><textarea id="atr" rows="6" readonly style="'+ta+'"></textarea><div class="btns" style="margin-top:8px"><button class="btn" type="button" id="atcp">কপি</button></div>';
var r=app.querySelector('#atr');r.value=line;
app.querySelector('#atcp').onclick=function(){r.select();if(navigator.clipboard)navigator.clipboard.writeText(line);toast('কপি হয়েছে ✓')}}}
/* ---------- সাবমিট (WhatsApp-এ) ---------- */
function openSubmit(){
var cats={};POSTS.forEach(function(p){if(p.category)cats[p.category]=1});
var box=el('div','fbox','<h2>ছবি জমা দিন (WhatsApp-এ)</h2><form class="form" id="sf">'+
'<label class="drop"><input type="file" id="sfile" accept="image/*"/><span id="dtxt">\uD83D\uDCF7 ছবি বাছাই করুন (১৬:৯ বা ৯:১৬ হলে ভালো)</span></label><img id="sprev" hidden alt=""/>'+
'<input name="name" placeholder="আপনার নাম *" required maxlength="60"/>'+
'<input name="addr" placeholder="ঠিকানা *" required maxlength="120"/>'+
'<input name="pin" type="tel" inputmode="numeric" pattern="[0-9০-৯]{4,10}" placeholder="গোপন পিন (৪–১০ সংখ্যা) * — মনে রাখুন" required/>'+
'<input name="wa" placeholder="আপনার WhatsApp নম্বর (ঐচ্ছিক)"/>'+
'<input name="tg" placeholder="টেলিগ্রাম ইউজারনেম (ঐচ্ছিক)"/>'+
'<input name="cat" list="cl" placeholder="ক্যাটাগরি (যেমন Viral)"/><datalist id="cl">'+Object.keys(cats).map(function(c){return '<option value="'+esc(c)+'"/>'}).join('')+'</datalist>'+
'<select name="st" id="sst"><option value="FREE">ফ্রি ছবি</option><option value="PAID">পেইড ছবি</option></select>'+
'<input name="price" id="spr" type="number" min="1" placeholder="প্রাইস" hidden/>'+
'<label class="ck"><input type="checkbox" required/> ছবিটি আমার নিজের তোলা/ডিজাইন করা; প্রকাশে আমি সম্মতি দিচ্ছি।</label>'+
'<a class="btn wa" id="sbtn" href="#" target="_blank" rel="noopener">WhatsApp-এ পাঠান</a>'+
'<button class="btn ghost" type="button" id="sshare" hidden>\uD83D\uDCE4 ছবিসহ শেয়ার করুন (মোবাইল)</button>'+
'<p id="smsg" style="margin:0;font-size:14px;color:var(--mu)">তথ্য পাঠানোর পর WhatsApp চ্যাটে ছবিটি (\uD83D\uDCCE) যুক্ত করে পাঠান।</p></form>');
openM(box);
var f=box.querySelector('#sf'),fi=box.querySelector('#sfile'),prev=box.querySelector('#sprev'),file=null;
box.querySelector('#sst').onchange=function(){box.querySelector('#spr').hidden=this.value!=='PAID'};
fi.onchange=function(){file=fi.files[0];if(!file)return;prev.src=URL.createObjectURL(file);prev.hidden=false;
var im=new Image();im.onload=function(){var ar=im.width/im.height,ok=(Math.abs(ar-16/9)<0.12)||(Math.abs(ar-9/16)<0.07);
box.querySelector('#dtxt').textContent=(ok?'✅ ':'⚠️ ')+(im.width>=im.height?'ল্যান্ডস্কেপ':'পোর্ট্রেইট')+' ('+im.width+'×'+im.height+')'+(ok?'':' — আদর্শ অনুপাত ১৬:৯ / ৯:১৬')};im.src=prev.src;
if(navigator.canShare&&navigator.canShare({files:[file]}))box.querySelector('#sshare').hidden=false};
function text(){var fd=new FormData(f),st=fd.get('st'),pr=fd.get('price');
return '\uD83D\uDCF8 নতুন ছবি জমা\nনাম: '+fd.get('name')+'\nঠিকানা: '+fd.get('addr')+'\nপিন: '+bn2en(fd.get('pin'))+
'\nWhatsApp: '+(fd.get('wa')||'-')+'\nTelegram: '+(fd.get('tg')||'-')+'\nক্যাটাগরি: '+(fd.get('cat')||'-')+
'\nস্ট্যাটাস: '+st+(st==='PAID'&&pr?' '+(CFG.currency||'৳')+pr:'')+'\n\n(ছবি নিচে যুক্ত করছি)'}
box.querySelector('#sbtn').addEventListener('click',function(e){
if(!f.reportValidity()){e.preventDefault();return}
this.href=waUrl(text())});
box.querySelector('#sshare').onclick=function(){if(!f.reportValidity())return;
navigator.share({files:[file],text:text()}).catch(function(){})}}
/* ---------- হেডার ও অন্যান্য ---------- */
document.getElementById('sub').onclick=openSubmit;
document.getElementById('wdb').onclick=function(){openWithdraw(null)};
document.getElementById('thm').onclick=function(){var t=document.documentElement.getAttribute('data-t')==='dark'?'light':'dark';document.documentElement.setAttribute('data-t',t);ls('th',t)};
var qi=document.getElementById('q'),qt;
qi.addEventListener('input',function(){clearTimeout(qt);qt=setTimeout(function(){F.q=qi.value.trim();
if(window.__draw&&document.getElementById('gw'))window.__draw();else if(F.q)location.href='/?q='+encodeURIComponent(F.q)},250)});
var up=document.getElementById('up');
window.addEventListener('scroll',function(){up.classList.toggle('on',window.scrollY>600)},{passive:true});
up.onclick=function(){window.scrollTo({top:0,behavior:'smooth'})};
/* ---------- শুরু ---------- */
detectBlock();
if(TYPE==='static'){app.style.display='none'}
else{
document.body.classList.add('app-on');
var qs=new URLSearchParams(location.search);
if(qs.get('pintool')){renderTool()}
else if(qs.get('adtool')){renderAdTool()}
else loadPosts().then(function(){
if(TYPE==='item'&&PID)return renderItem(PID);
if(qs.get('creator'))return renderCreator(qs.get('creator'));
if(qs.get('q')){F.q=qs.get('q');qi.value=F.q}
renderHome()
}).catch(function(){app.innerHTML='<div class="empty">লোড করা যায়নি। ব্লগের Settings → Site feed "Full" করা আছে কিনা দেখুন।</div>'})
}
})();
//]]></script>
</body>
</html>
