<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:defaultwidgetversion='2' b:layoutsVersion='3' 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>
<meta charset='utf-8'/>
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'/>
<title><data:blog.pageTitle/></title>
<b:include data='blog' name='all-head-content'/>
<!-- Google Fonts & Icons -->
<link href='https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap' rel='stylesheet'/>
<link href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css' rel='stylesheet'/>
<b:skin><![CDATA[
:root {
--primary: #ef4444;
--primary-hover: #dc2626;
--accent-gradient: linear-gradient(135deg, #f43f5e 0%, #8b5cf6 100%);
--bg-body: #050811;
--bg-card: rgba(15, 23, 42, 0.75);
--text-main: #f8fafc;
--text-secondary: #94a3b8;
--border-color: rgba(244, 63, 94, 0.15);
--shadow-sm: 0 10px 30px 0 rgba(0, 0, 0, 0.5);
--radius-md: 18px;
--radius-full: 9999px;
--transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
body.light-mode {
--bg-body: #f8fafc;
--bg-card: rgba(255, 255, 255, 0.9);
--text-main: #0f172a;
--text-secondary: #64748b;
--border-color: rgba(226, 232, 240, 0.8);
--shadow-sm: 0 10px 30px 0 rgba(0, 0, 0, 0.05);
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', sans-serif; background-color: var(--bg-body); color: var(--text-main); line-height: 1.5; transition: background 0.3s ease; overflow-x: hidden; width: 100%; position: relative; }
/* Ambient Background Glow */
body:not(.light-mode)::before {
content: '';
position: absolute;
top: 0; left: 50%;
transform: translateX(-50%);
width: 900px; height: 450px;
background: radial-gradient(circle, rgba(244, 63, 94, 0.1) 0%, rgba(139, 92, 246, 0.04) 50%, transparent 80%);
z-index: -1;
pointer-events: none;
}
a { text-decoration: none; color: inherit; transition: var(--transition); }
.container { width: 100%; max-width: 1400px; margin: 0 auto; padding: 0 16px; }
@media(min-width: 768px) { .container { padding: 0 24px; } }
/* Header */
.site-header { position: sticky; top: 0; z-index: 1000; background-color: var(--bg-card); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-bottom: 1px solid var(--border-color); height: 75px; display: flex; align-items: center; justify-content: space-between; padding: 0 24px; box-shadow: var(--shadow-sm); width: 100%; transition: height 0.3s ease; }
.site-header.compact { height: 62px; }
.site-logo { font-size: 20px; font-weight: 700; color: var(--text-main); display: flex; align-items: center; gap: 10px; }
.logo-icon { background: var(--accent-gradient); color: #fff; width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; border-radius: 12px; box-shadow: 0 4px 15px rgba(244, 63, 94, 0.35); }
.nav-links { display: flex; align-items: center; gap: 28px; font-weight: 500; font-size: 14px; }
.nav-links a { position: relative; color: var(--text-secondary); padding: 4px 0; }
.nav-links a:hover, .nav-links a.active { color: var(--text-main); }
.nav-links a.active::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 100%; height: 2px; background: var(--accent-gradient); border-radius: 2px; }
.header-actions { display: flex; align-items: center; gap: 12px; }
.theme-toggle-btn { background: var(--bg-card); border: 1px solid var(--border-color); color: var(--text-main); width: 40px; height: 40px; border-radius: var(--radius-full); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: var(--transition); box-shadow: var(--shadow-sm); }
.theme-toggle-btn:hover { transform: scale(1.08); border-color: var(--primary); }
.mobile-menu-toggle { display: none; background: none; border: none; color: var(--text-main); font-size: 22px; cursor: pointer; }
@media(max-width: 768px) { .nav-links { display: none; } .mobile-menu-toggle { display: block; } }
/* Mobile Nav Drawer */
.mobile-nav { display: none; background: var(--bg-card); backdrop-filter: blur(16px); border-bottom: 1px solid var(--border-color); padding: 16px 24px; flex-direction: column; gap: 12px; width: 100%; }
.mobile-nav.open { display: flex; }
.mobile-nav a { font-size: 15px; font-weight: 500; color: var(--text-secondary); padding: 8px 0; border-bottom: 1px solid var(--border-color); }
/* Buttons */
.btn-gradient { background: var(--accent-gradient); color: #fff; border: none; padding: 10px 22px; border-radius: var(--radius-full); font-size: 13px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; box-shadow: 0 4px 15px rgba(244, 63, 94, 0.35); transition: var(--transition); }
.btn-gradient:hover { transform: translateY(-2px); opacity: 0.95; box-shadow: 0 6px 22px rgba(244, 63, 94, 0.5); }
/* Shorts & Reels Grid (9:16 vertical video aspect ratio) */
.shorts-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-top: 24px; width: 100%; }
@media(min-width: 580px) { .shorts-grid { grid-template-columns: repeat(3, 1fr); gap: 20px; } }
@media(min-width: 992px) { .shorts-grid { grid-template-columns: repeat(4, 1fr); gap: 24px; } }
@media(min-width: 1280px) { .shorts-grid { grid-template-columns: repeat(5, 1fr); } }
.short-card { background-color: var(--bg-card); backdrop-filter: blur(12px); border: 1px solid var(--border-color); border-radius: var(--radius-md); overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--shadow-sm); transition: var(--transition); position: relative; width: 100%; }
.short-card:hover { transform: translateY(-6px); border-color: rgba(244, 63, 94, 0.5); box-shadow: 0 20px 40px rgba(244, 63, 94, 0.2); }
/* Vertical Shorts Thumbnail Container (9:16 Aspect Ratio) */
.short-thumb { position: relative; width: 100%; padding-top: 177.77%; background: #000; overflow: hidden; }
.short-thumb img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.short-card:hover .short-thumb img { transform: scale(1.08); }
/* Play Icon Overlay on Thumbnail */
.play-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.35); display: flex; align-items: center; justify-content: center; opacity: 0; transition: var(--transition); }
.short-card:hover .play-overlay { opacity: 1; }
.play-btn-circle { width: 54px; height: 54px; background: var(--primary); color: #fff; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; font-size: 18px; box-shadow: 0 4px 20px rgba(244, 63, 94, 0.6); transform: scale(0.8); transition: var(--transition); }
.short-card:hover .play-btn-circle { transform: scale(1); }
.short-badge { position: absolute; top: 12px; left: 12px; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); color: #fff; padding: 4px 10px; border-radius: var(--radius-full); font-size: 11px; font-weight: 600; display: flex; align-items: center; gap: 5px; z-index: 2; border: 1px solid rgba(255,255,255,0.1); }
.short-badge i { color: var(--primary); }
.short-info { padding: 14px; display: flex; flex-direction: column; gap: 8px; flex-grow: 1; justify-content: space-between; }
.short-title { font-size: 14px; font-weight: 600; color: var(--text-main); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.short-title:hover { color: var(--primary); }
.short-meta { display: flex; align-items: center; justify-content: space-between; font-size: 11px; color: var(--text-secondary); border-top: 1px solid var(--border-color); padding-top: 10px; margin-top: 4px; }
/* Single Video View */
.video-player-container { width: 100%; max-width: 450px; margin: 20px auto; background: #000; border-radius: 20px; overflow: hidden; position: relative; box-shadow: 0 25px 50px rgba(0,0,0,0.6); border: 1px solid var(--border-color); }
.video-wrapper { position: relative; padding-top: 177.77%; width: 100%; }
.video-wrapper iframe, .video-wrapper video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; }
.post-body { font-size: 15px; line-height: 1.8; margin-top: 16px; word-break: break-word; color: var(--text-secondary); }
.widget { background-color: var(--bg-card); backdrop-filter: blur(12px); border: 1px solid var(--border-color); border-radius: var(--radius-md); padding: 22px; margin-bottom: 24px; box-shadow: var(--shadow-sm); width: 100%; }
/* Ad Gadgets */
.ad-gadget { background: var(--bg-card); backdrop-filter: blur(10px); border: 2px dashed var(--border-color); padding: 14px; text-align: center; margin: 20px 0; color: var(--text-secondary); font-size: 12px; border-radius: var(--radius-md); width: 100%; }
]]></b:skin>
</head>
<body>
<!-- Header -->
<header class='site-header' id='siteHeader'>
<a class='site-logo' expr:href='data:blog.homepageUrl'>
<div class='logo-icon'><i class='fa-solid fa-play'/></div>
<span>Tanbin Shorts</span>
</a>
<nav class='nav-links'>
<a class='nav-link-tab active' expr:href='data:blog.homepageUrl'>Trending Reels</a>
<a class='nav-link-tab' data-target='trendingView' href='javascript:void(0);'>Viral Shorts</a>
<a class='nav-link-tab' data-target='categoriesView' href='javascript:void(0);'>Categories</a>
</nav>
<div class='header-actions'>
<button class='theme-toggle-btn' id='themeToggleBtn' title='Toggle Mode'><i class='fa-solid fa-sun' id='themeIcon'/></button>
<button class='mobile-menu-toggle' id='mobileMenuBtn'><i class='fa-solid fa-bars'/></button>
</div>
</header>
<!-- Mobile Nav Drawer -->
<div class='mobile-nav' id='mobileNav'>
<a expr:href='data:blog.homepageUrl'>Trending Reels</a>
<a class='nav-link-tab mobile-tab' data-target='trendingView' href='javascript:void(0);'>Viral Shorts</a>
<a class='nav-link-tab mobile-tab' data-target='categoriesView' href='javascript:void(0);'>Categories</a>
</div>
<!-- AD GADGET 1 -->
<div class='container'>
<b:section class='ad-gadget' id='Ad-Gadget-1' showaddelement='yes' title='Ad Gadget 1: Top Banner'/>
</div>
<!-- Main Content Area -->
<div class='container' id='mainHomeContent'>
<main class='main-content'>
<!-- AD GADGET 2 -->
<b:section class='ad-gadget' id='Ad-Gadget-2' showaddelement='yes' title='Ad Gadget 2: Above Feed'/>
<b:section id='main-blog-section' showaddelement='yes'>
<b:widget id='Blog1' locked='false' title='Blog Posts' type='Blog' version='2' visible='true'>
<b:widget-settings>
<b:widget-setting name='showDateHeader'>false</b:widget-setting>
<b:widget-setting name='style.textcolor'>#ffffff</b:widget-setting>
<b:widget-setting name='showShareButtons'>false</b:widget-setting>
<b:widget-setting name='showCommentLink'>true</b:widget-setting>
<b:widget-setting name='style.urlcolor'>#ffffff</b:widget-setting>
<b:widget-setting name='showAuthor'>true</b:widget-setting>
<b:widget-setting name='style.linkcolor'>#ffffff</b:widget-setting>
<b:widget-setting name='style.unittype'>TextAndImage</b:widget-setting>
<b:widget-setting name='style.bgcolor'>#ffffff</b:widget-setting>
<b:widget-setting name='reactionsLabel'/>
<b:widget-setting name='showAuthorProfile'>false</b:widget-setting>
<b:widget-setting name='style.layout'>1x1</b:widget-setting>
<b:widget-setting name='showLabels'>true</b:widget-setting>
<b:widget-setting name='showLocation'>true</b:widget-setting>
<b:widget-setting name='showTimestamp'>true</b:widget-setting>
<b:widget-setting name='postsPerAd'>1</b:widget-setting>
<b:widget-setting name='showBacklinks'>false</b:widget-setting>
<b:widget-setting name='style.bordercolor'>#ffffff</b:widget-setting>
<b:widget-setting name='showInlineAds'>false</b:widget-setting>
<b:widget-setting name='showReactions'>false</b:widget-setting>
</b:widget-settings>
<b:includable id='main'>
<!-- INDEX / HOME VIEW (Shorts Grid Style) -->
<b:if cond='data:blog.pageType == "index" or data:blog.pageType == "archive" or data:blog.pageType == "search"'>
<div style='display:flex; justify-content:space-between; align-items:center; margin-top:10px;'>
<h2 style='font-size: 18px; font-weight: 700;'><i class='fa-solid fa-fire' style='color:var(--primary);'/> Trending Video Shorts</h2>
<span style='font-size:13px; color:var(--text-secondary);'>Swipe & Watch</span>
</div>
<div class='shorts-grid'>
<b:loop values='data:posts' var='post'>
<div class='short-card'>
<a class='short-thumb' expr:href='data:post.url'>
<div class='short-badge'><i class='fa-solid fa-bolt'/> Shorts</div>
<b:if cond='data:post.featuredImage'>
<img expr:alt='data:post.title' expr:src='data:post.featuredImage' loading='lazy'/>
<b:else/>
<b:if cond='data:post.firstImageUrl'>
<img expr:alt='data:post.title' expr:src='data:post.firstImageUrl' loading='lazy'/>
<b:else/>
<img alt='Video Thumbnail' loading='lazy' src='https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?q=80&w=400&auto=format&fit=crop'/>
</b:if>
</b:if>
<div class='play-overlay'>
<div class='play-btn-circle'><i class='fa-solid fa-play'/></div>
</div>
</a>
<div class='short-info'>
<a class='short-title' expr:href='data:post.url'><data:post.title/></a>
<div class='short-meta'>
<span><i class='fa-regular fa-eye'/> 12.4K</span>
<span><i class='fa-regular fa-heart' style='color:var(--primary);'/> 1.8K</span>
</div>
</div>
</div>
</b:loop>
</div>
<!-- Pagination -->
<b:if cond='data:olderPageUrl'>
<div style='text-align: center; margin-top: 40px;'>
<a class='btn-gradient' expr:href='data:olderPageUrl' style='padding: 12px 32px; font-size: 14px;'>আরও ভিডিও দেখুন <i class='fa-solid fa-arrow-right'/></a>
</div>
</b:if>
<!-- SINGLE VIDEO / SHORT VIEW -->
<b:else/>
<b:loop values='data:posts' var='post'>
<div class='video-player-container'>
<div class='video-wrapper'>
<!-- Post body will contain the video embed (YouTube Shorts / MP4 / iframe) -->
<b:if cond='data:post.body'>
<data:post.body/>
<b:else/>
<iframe allowfullscreen='true' src='https://www.youtube.com/embed/dQw4w9WgXcQ'/>
</b:if>
</div>
</div>
<div class='widget' style='max-width: 650px; margin: 20px auto;'>
<h1 style='font-size: 20px; font-weight: 700; margin-bottom: 12px; word-break:break-word;'><data:post.title/></h1>
<div class='post-body'>
<data:post.snippet/>
</div>
</div>
<div class='widget' style='max-width: 650px; margin: 20px auto;'>
<b:include data='post' name='commentPicker'/>
</div>
</b:loop>
</b:if>
</b:includable>
<b:includable id='aboutPostAuthor'>
<div class='author-name'>
<a class='g-profile' expr:href='data:post.author.profileUrl' rel='author' title='author profile'>
<span>
<data:post.author.name/>
</span>
</a>
</div>
<div>
<span class='author-desc'>
<data:post.author.aboutMe/>
</span>
</div>
</b:includable>
<b:includable id='addComments'>
<a expr:href='data:post.commentsUrl' expr:onclick='data:post.commentsUrlOnclick'>
<b:message name='messages.postAComment'/>
</a>
</b:includable>
<b:includable id='commentAuthorAvatar'>
<div class='avatar-image-container'>
<img class='author-avatar' expr:src='data:comment.authorAvatarSrc' height='35' width='35'/>
</div>
</b:includable>
<b:includable id='commentDeleteIcon' var='comment'>
<span expr:class='"item-control " + data:comment.adminClass'>
<b:if cond='data:showCmtPopup'>
<div class='goog-toggle-button'>
<div class='goog-inline-block comment-action-icon'/>
</div>
<b:else/>
<a class='comment-delete' expr:href='data:comment.deleteUrl' expr:title='data:messages.deleteComment'>
<img src='https://resources.blogblog.com/img/icon_delete13.gif'/>
</a>
</b:if>
</span>
</b:includable>
<b:includable id='commentForm' var='post'>
<div class='comment-form'>
<a name='comment-form'/>
<h4 id='comment-post-message'><data:messages.postAComment/></h4>
<b:if cond='data:this.messages.blogComment != ""'>
<p><data:this.messages.blogComment/></p>
</b:if>
<b:include data='post' name='commentFormIframeSrc'/>
<iframe allowtransparency='allowtransparency' class='blogger-iframe-colorize blogger-comment-from-post' expr:height='data:cmtIframeInitialHeight ?: "90px"' frameborder='0' id='comment-editor' name='comment-editor' src='' width='100%'/>
<data:post.cmtfpIframe/>
<script type='text/javascript'>
BLOG_CMT_createIframe('<data:post.appRpcRelayPath/>');
</script>
</div>
</b:includable>
<b:includable id='commentFormIframeSrc' var='post'>
<a expr:href='data:post.commentFormIframeSrc' id='comment-editor-src'/>
</b:includable>
<b:includable id='commentItem' var='comment'>
<div class='comment' expr:id='"c" + data:comment.id'>
<b:include cond='data:blog.enabledCommentProfileImages' name='commentAuthorAvatar'/>
<div class='comment-block'>
<div class='comment-author'>
<b:if cond='data:comment.authorUrl'>
<b:message name='messages.authorSaidWithLink'>
<b:param expr:value='data:comment.author' name='authorName'/>
<b:param expr:value='data:comment.authorUrl' name='authorUrl'/>
</b:message>
<b:else/>
<b:message name='messages.authorSaid'>
<b:param expr:value='data:comment.author' name='authorName'/>
</b:message>
</b:if>
</div>
<div expr:class='"comment-body" + (data:comment.isDeleted ? " deleted" : "")'>
<data:comment.body/>
</div>
<div class='comment-footer'>
<span class='comment-timestamp'>
<a expr:href='data:comment.url' title='comment permalink'>
<data:comment.timestamp/>
</a>
<b:include data='comment' name='commentDeleteIcon'/>
</span>
</div>
</div>
</div>
</b:includable>
<b:includable id='commentList' var='comments'>
<div id='comments-block'>
<b:loop values='data:comments' var='comment'>
<b:include data='comment' name='commentItem'/>
</b:loop>
</div>
</b:includable>
<b:includable id='commentPicker' var='post'>
<b:if cond='data:post.showThreadedComments'>
<b:include data='post' name='threadedComments'/>
<b:else/>
<b:include data='post' name='comments'/>
</b:if>
</b:includable>
<b:includable id='comments' var='post'>
<section expr:class='"comments" + (data:post.embedCommentForm ? " embed" : "")' expr:data-num-comments='data:post.numberOfComments' id='comments'>
<a name='comments'/>
<b:if cond='data:post.allowComments'>
<b:include name='commentsTitle'/>
<div expr:id='data:widget.instanceId + "_comments-block-wrapper"'>
<b:include cond='data:post.comments' data='post.comments' name='commentList'/>
</div>
<b:if cond='data:post.commentPagingRequired'>
<div class='paging-control-container'>
<b:if cond='data:post.hasOlderLinks'>
<a expr:class='data:post.oldLinkClass' expr:href='data:post.oldestLinkUrl'>
<data:messages.oldest/>
</a>
<a expr:class='data:post.oldLinkClass' expr:href='data:post.olderLinkUrl'>
<data:messages.older/>
</a>
</b:if>
<span class='comment-range-text'>
<data:post.commentRangeText/>
</span>
<b:if cond='data:post.hasNewerLinks'>
<a expr:class='data:post.newLinkClass' expr:href='data:post.newerLinkUrl'>
<data:messages.newer/>
</a>
<a expr:class='data:post.newLinkClass' expr:href='data:post.newestLinkUrl'>
<data:messages.newest/>
</a>
</b:if>
</div>
</b:if>
<div class='footer'>
<b:if cond='data:post.embedCommentForm'>
<b:if cond='data:post.allowNewComments'>
<b:include data='post' name='commentForm'/>
<b:else/>
<data:post.noNewCommentsText/>
</b:if>
<b:else/>
<b:if cond='data:post.allowComments'>
<b:include data='post' name='addComments'/>
</b:if>
</b:if>
</div>
</b:if>
<b:if cond='data:showCmtPopup'>
<div id='comment-popup'>
<iframe allowtransparency='allowtransparency' frameborder='0' id='comment-actions' name='comment-actions' scrolling='no'>
</iframe>
</div>
</b:if>
</section>
</b:includable>
<b:includable id='commentsTitle'>
<h3 class='title'><data:messages.comments/></h3>
</b:includable>
<b:includable id='feedLinks'>
<b:if cond='!data:view.isPost'> <!-- Blog feed links -->
<b:if cond='data:feedLinks'>
<div class='blog-feeds'>
<b:include data='feedLinks' name='feedLinksBody'/>
</div>
</b:if>
<b:else/> <!--Post feed links -->
<div class='post-feeds'>
<b:loop values='data:posts' var='post'>
<b:if cond='data:post.allowComments and data:post.feedLinks'>
<b:include data='post.feedLinks' name='feedLinksBody'/>
</b:if>
</b:loop>
</div>
</b:if>
</b:includable>
<b:includable id='feedLinksBody' var='links'>
<div class='feed-links'>
<data:messages.subscribeTo/>
<b:loop values='data:links' var='f'>
<a class='feed-link' expr:href='data:f.url' expr:type='data:f.mimeType' target='_blank'><data:f.name/> (<data:f.feedType/>)</a>
</b:loop>
</div>
</b:includable>
<b:includable id='homePageLink'>
<a class='home-link' expr:href='data:blog.homepageUrl'>
<data:messages.home/>
</a>
</b:includable>
<b:includable id='iframeComments' var='post'>
<!-- G+ comments, no longer available. The includable is retained for backwards-compatibility. -->
</b:includable>
<b:includable id='inlineAd' var='post'>
<b:if cond='!data:view.isPreview'>
<b:if cond='data:this.adCode or data:this.adClientId or data:blog.adsenseClientId'>
<!-- Ad -->
<div class='inline-ad'>
<b:if cond='data:this.adCode != ""'>
<data:this.adCode/>
<b:else/>
<b:include cond='data:this.adClientId or data:blog.adsenseClientId' name='defaultAdUnit'/>
</b:if>
</div>
</b:if>
<b:else/>
<div class='inline-ad'>
<div class='inline-ad-placeholder'>
<span><b:message name='messages.adsGoHere'/></span>
</div>
</div>
</b:if>
</b:includable>
<b:includable id='nextPageLink'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + "_blog-pager-older-link"' expr:title='data:messages.olderPosts'>
<data:messages.olderPosts/>
</a>
</b:includable>
<b:includable id='post' var='post'>
<div class='post'>
<b:include data='post' name='postMeta'/>
<b:include data='post' name='postTitle'/>
<b:include name='headerByline'/>
<b:if cond='data:view.isSingleItem'>
<b:include data='post' name='postBody'/>
<b:else/>
<b:include data='post' name='postBodySnippet'/>
<b:include data='post' name='postJumpLink'/>
</b:if>
<b:include data='post' name='postFooter'/>
</div>
</b:includable>
<b:includable id='postBody' var='post'>
<!-- If metaDescription is empty, use the post body as the schema.org description too, for G+/FB snippeting. -->
<div class='post-body entry-content float-container' expr:id='"post-body-" + data:post.id'>
<data:post.body/>
</div>
</b:includable>
<b:includable id='postBodySnippet' var='post'>
<b:include data='post' name='postBody'/>
</b:includable>
<b:includable id='postCommentsAndAd' var='post'>
<article class='post-outer-container'>
<!-- Post title and body -->
<div class='post-outer'>
<b:include data='post' name='post'/>
</div>
<!-- Comments -->
<b:include cond='data:view.isSingleItem' data='post' name='commentPicker'/>
<!-- Show ad inside post container, after comments, if single item. -->
<b:include cond='data:view.isSingleItem and data:post.includeAd' data='post' name='inlineAd'/>
</article>
<!-- Show ad outside post container (between posts) for feed pages. -->
<b:include cond='data:view.isMultipleItems and data:post.includeAd' data='post' name='inlineAd'/>
</b:includable>
<b:includable id='postCommentsLink'>
<b:if cond='data:view.isMultipleItems'>
<span class='byline post-comment-link container'>
<b:include cond='data:post.commentSource != 1' name='commentsLink'/>
</span>
</b:if>
</b:includable>
<b:includable id='postFooter' var='post'>
<div class='post-footer'>
<b:include name='footerBylines'/>
<b:include data='post' name='postFooterAuthorProfile'/>
</div>
</b:includable>
<b:includable id='postFooterAuthorProfile' var='post'>
<b:if cond='data:post.author.aboutMe and data:view.isPost'>
<div class='author-profile'>
<b:if cond='data:post.author.authorPhoto.url'>
<img class='author-image' expr:src='data:post.author.authorPhoto.url' width='50px'/>
<div class='author-about'>
<b:include data='post' name='aboutPostAuthor'/>
</div>
<b:else/>
<b:include data='post' name='aboutPostAuthor'/>
</b:if>
</div>
</b:if>
</b:includable>
<b:includable id='postHeader' var='post'>
<b:include name='headerByline'/>
</b:includable>
<b:includable id='postMeta' var='post'>
<b:include data='post' name='postMetadataJSON'/>
</b:includable>
<b:includable id='postPagination'>
<div class='blog-pager container' id='blog-pager'>
<b:include cond='data:newerPageUrl' name='previousPageLink'/>
<b:include cond='data:olderPageUrl' name='nextPageLink'/>
<b:include cond='data:view.url != data:blog.homepageUrl' name='homePageLink'/>
</div>
</b:includable>
<b:includable id='postTitle' var='post'>
<a expr:name='data:post.id'/>
<b:if cond='data:post.title != ""'>
<h3 class='post-title entry-title'>
<b:if cond='data:post.link or (data:post.url and data:view.url != data:post.url)'>
<a expr:href='data:post.link ?: data:post.url'><data:post.title/></a>
<b:else/>
<data:post.title/>
</b:if>
</h3>
</b:if>
</b:includable>
<b:includable id='previousPageLink'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + "_blog-pager-newer-link"' expr:title='data:messages.newerPosts'>
<data:messages.newerPosts/>
</a>
</b:includable>
<b:includable id='threadedCommentForm' var='post'>
<div class='comment-form'>
<a name='comment-form'/>
<h4 id='comment-post-message'><data:messages.postAComment/></h4>
<b:if cond='data:this.messages.blogComment != ""'>
<p><data:this.messages.blogComment/></p>
</b:if>
<b:include data='post' name='commentFormIframeSrc'/>
<iframe allowtransparency='allowtransparency' class='blogger-iframe-colorize blogger-comment-from-post' expr:height='data:cmtIframeInitialHeight ?: "90px"' frameborder='0' id='comment-editor' name='comment-editor' src='' width='100%'/>
<data:post.cmtfpIframe/>
<script type='text/javascript'>
BLOG_CMT_createIframe('<data:post.appRpcRelayPath/>');
</script>
</div>
</b:includable>
<b:includable id='threadedCommentJs' var='post'>
<script async='async' expr:src='data:post.commentSrc' type='text/javascript'/>
<b:template-script inline='true' name='threaded_comments'/>
<script type='text/javascript'>
blogger.widgets.blog.initThreadedComments(
<data:post.commentJso/>,
<data:post.commentMsgs/>,
<data:post.commentConfig/>);
</script>
</b:includable>
<b:includable id='threadedComments' var='post'>
<section class='comments threaded' expr:data-embed='data:post.embedCommentForm' expr:data-num-comments='data:post.numberOfComments' id='comments'>
<a name='comments'/>
<b:include name='commentsTitle'/>
<div class='comments-content'>
<b:if cond='data:post.embedCommentForm'>
<b:include data='post' name='threadedCommentJs'/>
</b:if>
<div id='comment-holder'>
<data:post.commentHtml/>
</div>
</div>
<p class='comment-footer'>
<b:if cond='data:post.allowNewComments'>
<b:include data='post' name='threadedCommentForm'/>
<b:else/>
<data:post.noNewCommentsText/>
</b:if>
<b:if cond='data:post.showManageComments'>
<b:include data='post' name='manageComments'/>
</b:if>
</p>
<b:if cond='data:showCmtPopup'>
<div id='comment-popup'>
<iframe allowtransparency='allowtransparency' frameborder='0' id='comment-actions' name='comment-actions' scrolling='no'>
</iframe>
</div>
</b:if>
</section>
</b:includable>
<b:includable id='tooltipCss'>
<!-- LINT.IfChange -->
<style>
.post-body a.b-tooltip-container {
position: relative;
display: inline-block;
}
.post-body a.b-tooltip-container .b-tooltip {
display: block !important;
position: absolute;
top: 100%;
left: 50%;
transform: translate(-20%, 1px);
visibility: hidden;
opacity: 0;
z-index: 1;
transition: opacity 0.2s ease-in-out;
}
.post-body a.b-tooltip-container .b-tooltip iframe {
width: 200px;
height: 198px;
max-width: none;
border: none;
border-radius: 20px;
box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.2);
}
@media (hover: hover) {
.post-body a.b-tooltip-container:hover .b-tooltip {
visibility: visible;
opacity: 1;
}
}
</style>
<!-- LINT.ThenChange(//depot/google3/java/com/google/blogger/b2/layouts/widgets/v2-style.css) -->
</b:includable>
</b:widget>
</b:section>
<!-- AD GADGET 3 -->
<b:section class='ad-gadget' id='Ad-Gadget-3' showaddelement='yes' title='Ad Gadget 3: Bottom Banner'/>
</main>
</div>
<footer style='text-align: center; padding: 40px 16px; font-size: 13px; color: var(--text-secondary); border-top: 1px solid var(--border-color); margin-top: 60px;'>
© 2026 Tanbin Shorts. All rights reserved.
</footer>
<!-- Script wrapped safely inside CDATA -->
<script><![CDATA[
document.addEventListener('DOMContentLoaded', function() {
const toggleBtn = document.getElementById('themeToggleBtn');
const icon = document.getElementById('themeIcon');
const savedTheme = localStorage.getItem('tanbinshorts_theme');
if(savedTheme === 'light') {
document.body.classList.add('light-mode');
if(icon) icon.className = 'fa-solid fa-moon';
} else {
document.body.classList.remove('light-mode');
if(icon) icon.className = 'fa-solid fa-sun';
}
if(toggleBtn) {
toggleBtn.addEventListener('click', function() {
document.body.classList.toggle('light-mode');
if(document.body.classList.contains('light-mode')) {
localStorage.setItem('tanbinshorts_theme', 'light');
if(icon) icon.className = 'fa-solid fa-moon';
} else {
localStorage.setItem('tanbinshorts_theme', 'dark');
if(icon) icon.className = 'fa-solid fa-sun';
}
});
}
// Header Scroll Compact Effect
const header = document.getElementById('siteHeader');
window.addEventListener('scroll', function() {
if(window.scrollY > 40) {
header.classList.add('compact');
} else {
header.classList.remove('compact');
}
});
// Mobile Drawer Menu Toggle
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
const mobileNav = document.getElementById('mobileNav');
if(mobileMenuBtn && mobileNav) {
mobileMenuBtn.addEventListener('click', function() {
mobileNav.classList.toggle('open');
});
}
});
]]></script>
</body>
</html>
Comments
Post a Comment