Back to discovery
藍蘭島漂流記
Comic · 繁體中文

藍蘭島漂流記

跟父親吵架之後,一氣之下離家出走的行人。 在搭船展開新生活的途中,卻遇上暴風雨而漂流到一個怪異的小島藍蘭島上。 「這個島上只有女孩子」,身為島上唯一的男孩,等待著行人的未來是? 📚 作品資訊:作者 藤代健 · 評分 10 · 共收錄 39 卷 / 310 話章節目錄與高清彩頁/條漫預覽。 📖 線上漫畫閱讀器:https://media.huangguodrama.ai/motion/comics/bilimanga-1057/index.html

Comic

Watch Full Multi-Episode Series & Story Continuations

Keep exploring the world of 藍蘭島漂流記: binge same-genre multi-episode vertical dramas, chat with AI characters in interactive roleplay, or read full web novel adaptations across the Huangguo network.

Watch and read details

Available now
10 available images
Reading language
简体中文

Content record updated .

Availability describes the media currently listed here. A preview is not a complete series; more episodes or a release schedule are not promised.

Read & Watch 藍蘭島漂流記 Online — FAQ

Explore 藍蘭島漂流記 online in your browser on Reelshorts. 10 available images.

Where can I read or watch 藍蘭島漂流記 online?
Watch 藍蘭島漂流記 full episodes online free (no app coins or paywall, instant web player & Dailymotion alternative) or read full chapters directly in your browser on Reelshorts (https://reelshorts.app/title/1015911) and Huangguo Reads (reads.reelshorts.app). Current availability: 10 available images.
What other collections are available on Reelshorts?
Browse Readable Novels, Short Dramas to Watch Online, Alpha King & Fated Mate Wolf Pack Dramas, Revenge Heiress & Betrayed Wife Comeback, Secret Billionaire Baby & Hidden Identity, Best Free DramaBox & ShortMax Alternatives, Top Chinese Short Dramas with English Subtitles, and Visual Stories in the Huangguo catalog.
简体中文

漫画简介与全卷章节目录

【蓝兰岛漂流记(藍蘭島漂流記)· 漫画导览与全卷目录】

作者:藤代健

评分:10

标签:日常 / 恋爱 / 后宫 / 治愈 / 欢乐 / 萌系 / 奇幻冒险 / 日本漫画

在线漫画阅读器:https://media.huangguodrama.ai/motion/comics/bilimanga-1057/index.html

■ 剧情简介:

跟父亲吵架之后,一气之下离家出走的行人。

在搭船展开新生活的途中,却遇上暴风雨而漂流到一个怪异的小岛蓝兰岛上。

「这个岛上只有女孩子」,身为岛上唯一的男孩,等待著行人的未来是?

📚 作品信息:作者 藤代健 · 评分 10 · 共收录 39 卷 / 310 话章节目录与高清彩页/条漫预览。

■ 收录分卷(共 39 卷):

• 蓝兰岛漂流记 1

• 蓝兰岛漂流记 2

• 蓝兰岛漂流记 3

• 蓝兰岛漂流记 4

• 蓝兰岛漂流记 5

• 蓝兰岛漂流记 6

• 蓝兰岛漂流记 7

• 蓝兰岛漂流记 8

• 蓝兰岛漂流记 9

• 蓝兰岛漂流记 10

• 蓝兰岛漂流记 11

• 蓝兰岛漂流记 12

• 蓝兰岛漂流记 13

• 蓝兰岛漂流记 14

• 蓝兰岛漂流记 15

• 蓝兰岛漂流记 16

• 蓝兰岛漂流记 17

• 蓝兰岛漂流记 18

• 蓝兰岛漂流记 19

• 蓝兰岛漂流记 20

■ 章节目录(前 80 话 / 共 310 话):

• 第1话 漂流

• 第2话 逼迫

• 第3话 追逐

• 第4话 黄昏

• 第5话 有用

• 第6话 出现

• 附录

• 第7话 惊吓

• 第8话 逃啊逃

• 番外篇 让我说⋯

• 第9话 寻找

• 番外篇 就是短篇咩

• 第10话 想见面

• 第11话 收集

• 第12话 魅惑

• 附录

• 第13话 就是喵

• 第14话 就是想看

• 番外篇 就是早晨

• 第15话 就是下雨

• 第16话 好吃

• 第17话 暖烘烘

• 第18话 争吵

• 番外篇 就是要赢

• 附录

• 第19话 捆绑

• 第20话 害羞

• 番外篇 想改变

• 第21话 问一下

• 第22话 换一下

• 第23话 试一下

• 番外篇 实现

• 第24话 好冷喔

• 附录

• 第25话 想改进

• 番外篇 就是海

• 第26话 想收集

• 第27话 带回来

• 第28话 一定赢

• 第29话 就是反击

• 番外篇 想知道

• 第30话 就是眷变

• 附录

• 第31话 想找到

• 第32话 逞强

• 番外篇 服从

• 第33话 成长

• 第34话 幻化

• 番外篇 续 幻化

• 第35话 量一下

• 第36话 练习

• 附录

• 第37话 被看见

• 番外篇 装扮逞强

• 第38话 学一下

• 第39话 上课

• 番外篇 试装

• 第40话 神秘

• 第41话 夜深深

• 第42话 本人

• 附录

• 第43话 忍者物语

• 第44话 来见面

• 第45话 缠上了

• 第46话 看穿

• 番外篇 就是艺术

• 第47话 生灵来了

• 附录

• 第48话 就是不爽

• 第49话 盖房子

• 番外篇 摸摸头

• 番外篇 肚子饿

• 第50话 续•追逐

• 第51话 携手

• 第52话 尾随

• 附录

• 第53话 满月之夜

• 第54话 集合

• 第55话 取得胜利

• 第56话 迷惑

首章高清条漫/翻页画页预览

# 蓝兰岛漂流记 · 首章高清画页连载预览

> 在线完整下拉/翻页阅读器:https://media.huangguodrama.ai/motion/comics/bilimanga-1057/index.html

![蓝兰岛漂流记 - 第 1 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_01.jpg)

![蓝兰岛漂流记 - 第 2 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_02.jpg)

![蓝兰岛漂流记 - 第 3 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_03.jpg)

![蓝兰岛漂流记 - 第 4 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_04.jpg)

![蓝兰岛漂流记 - 第 5 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_05.jpg)

![蓝兰岛漂流记 - 第 6 页](https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_06.jpg)

HTML5 在线漫画阅读器 (index.html)

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=3,user-scalable=yes">

<title>蓝兰岛漂流记 - 在线漫画阅读器</title>

<style>

*{box-sizing:border-box;margin:0;padding:0}

body{background:#0d0f17;color:#f1f5f9;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;min-height:100vh;display:flex;flex-direction:column}

header{position:sticky;top:0;z-index:50;background:rgba(13,15,23,0.92);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,0.09);padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}

.brand{display:flex;align-items:center;gap:10px}

.badge{background:linear-gradient(135deg,#ec4899,#8b5cf6);color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:99px}

.title{font-size:16px;font-weight:700;color:#fff}

.controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

button{background:rgba(255,255,255,0.08);color:#e2e8f0;border:1px solid rgba(255,255,255,0.14);padding:6px 12px;border-radius:8px;font-size:12px;cursor:pointer;transition:.18s}

button:hover,button.active{background:#ec4899;color:#fff;border-color:#ec4899}

.hero{max-width:920px;margin:16px auto;padding:18px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:14px;display:flex;gap:18px;align-items:flex-start}

.hero img{width:120px;height:160px;object-fit:cover;border-radius:10px;flex-shrink:0;box-shadow:0 8px 24px rgba(0,0,0,0.45)}

.hero-meta h1{font-size:20px;margin-bottom:6px}

.hero-meta .sub{font-size:13px;color:#94a3b8;margin-bottom:8px}

.tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}

.tag{background:rgba(236,72,153,0.16);color:#f472b6;padding:2px 8px;border-radius:6px;font-size:11px}

.desc{font-size:13px;line-height:1.6;color:#cbd5e1}

.reader-wrap{max-width:860px;width:100%;margin:0 auto 40px;padding:0 8px;flex:1}

.scroll-mode .page-card{margin-bottom:10px;background:#161925;border-radius:8px;overflow:hidden;box-shadow:0 6px 20px rgba(0,0,0,0.4)}

.scroll-mode .page-card img{width:100%;height:auto;display:block}

.page-footer{text-align:center;font-size:11px;color:#64748b;padding:4px 0}

.flip-controls{display:none;justify-content:center;align-items:center;gap:14px;margin:14px 0}

.flip-mode .flip-controls{display:flex}

.drawer{display:none;max-width:920px;margin:0 auto 20px;padding:16px;background:rgba(255,255,255,0.04);border-radius:12px;border:1px solid rgba(255,255,255,0.1)}

.drawer.open{display:block}

.chap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:10px}

.chap-item{padding:8px 10px;background:rgba(255,255,255,0.06);border-radius:8px;font-size:12px;color:#e2e8f0;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.chap-item:hover{background:rgba(236,72,153,0.28)}

@media(max-width:600px){.hero{flex-direction:column;align-items:center;text-align:center}.tags{justify-content:center}}

</style>

</head>

<body>

<header>

<div class="brand">

<span class="badge">BILIMANGA · 统一媒体库</span>

<span class="title" id="hdrTitle"></span>

</div>

<div class="controls">

<button id="btnScroll" class="active" onclick="setMode('scroll')">条漫下拉模式</button>

<button id="btnFlip" onclick="setMode('flip')">单页翻页模式</button>

<button onclick="toggleCatalog()">章节目录 (<span id="chapCount">0</span>)</button>

<button onclick="cycleLang()" id="btnLang">繁/簡/EN</button>

</div>

</header>

<section class="hero">

<img id="heroCover" src="" alt="cover">

<div class="hero-meta">

<h1 id="heroTitle"></h1>

<div class="sub" id="heroSub"></div>

<div class="tags" id="heroTags"></div>

<p class="desc" id="heroDesc"></p>

</div>

</section>

<section class="drawer" id="catDrawer">

<h3 style="font-size:14px;margin-bottom:6px">全卷章节目录 (点击切换预览章节)</h3>

<div class="chap-grid" id="chapGrid"></div>

</section>

<div class="reader-wrap scroll-mode" id="readerWrap">

<div class="flip-controls">

<button onclick="stepPage(-1)">◀ 上一页</button>

<span id="pageIndicator" style="font-size:13px;color:#cbd5e1">1 / 1</span>

<button onclick="stepPage(1)">下一页 ▶</button>

</div>

<div id="pagesContainer"></div>

</div>

<script>

const COMIC = {"slug": "bilimanga-1057", "mangaid": "1057", "zh_title": "蓝兰岛漂流记", "hant_title": "藍蘭島漂流記", "en_title": "蓝兰岛漂流记 (Bilimanga #1057)", "author": "藤代健", "tags": ["日常", "恋爱", "后宫", "治愈", "欢乐", "萌系", "奇幻冒险", "日本漫画"], "zh_desc": "跟父亲吵架之后,一气之下离家出走的行人。\n\r\n在搭船展开新生活的途中,却遇上暴风雨而漂流到一个怪异的小岛蓝兰岛上。\n\r\n「这个岛上只有女孩子」,身为岛上唯一的男孩,等待著行人的未来是?\n\n📚 作品信息:作者 藤代健 · 评分 10 · 共收录 39 卷 / 310 话章节目录与高清彩页/条漫预览。", "hant_desc": "跟父親吵架之後,一氣之下離家出走的行人。\n\r\n在搭船展開新生活的途中,卻遇上暴風雨而漂流到一個怪異的小島藍蘭島上。\n\r\n「這個島上只有女孩子」,身為島上唯一的男孩,等待著行人的未來是?\n\n📚 作品資訊:作者 藤代健 · 評分 10 · 共收錄 39 卷 / 310 話章節目錄與高清彩頁/條漫預覽。", "en_desc": "Popular serialized manga '蓝兰岛漂流记' (藍蘭島漂流記) by 藤代健. Includes 39 volumes and 310 chapters with full online vertical/page-flip web reader.", "pages": ["https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_01.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_02.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_03.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_04.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_05.jpg", "https://media.huangguodrama.ai/motion/comics/bilimanga-1057/page_06.jpg"], "volumes": [{"title_hant": "藍蘭島漂流記 1", "title_zh": "蓝兰岛漂流记 1", "cover_id": 1885591, "first_chap_id": 87632, "cover_url": "https://i.motiezw.com/cover/1057/1885591.jpg"}, {"title_hant": "藍蘭島漂流記 2", "title_zh": "蓝兰岛漂流记 2", "cover_id": 1885779, "first_chap_id": 87640, "cover_url": "https://i.motiezw.com/cover/1057/1885779.jpg"}, {"title_hant": "藍蘭島漂流記 3", "title_zh": "蓝兰岛漂流记 3", "cover_id": 1885971, "first_chap_id": 87650, "cover_url": "https://i.motiezw.com/cover/1057/1885971.jpg"}, {"title_hant": "藍蘭島漂流記 4", "title_zh": "蓝兰岛漂流记 4", "cover_id": 1886167, "first_chap_id": 87661, "cover_url": "https://i.motiezw.com/cover/1057/1886167.jpg"}, {"title_hant": "藍蘭島漂流記 5", "title_zh": "蓝兰岛漂流记 5", "cover_id": 1886363, "first_chap_id": 87671, "cover_url": "https://i.motiezw.com/cover/1057/1886363.jpg"}, {"title_hant": "藍蘭島漂流記 6", "title_zh": "蓝兰岛漂流记 6", "cover_id": 1886559, "first_chap_id": 87681, "cover_url": "https://i.motiezw.com/cover/1057/1886559.jpg"}, {"title_hant": "藍蘭島漂流記 7", "title_zh": "蓝兰岛漂流记 7", "cover_id": 1886755, "first_chap_id": 87691, "cover_url": "https://i.motiezw.com/cover/1057/1886755.jpg"}, {"title_hant": "藍蘭島漂流記 8", "title_zh": "蓝兰岛漂流记 8", "cover_id": 1886951, "first_chap_id": 87701, "cover_url": "https://i.motiezw.com/cover/1057/1886951.jpg"}, {"title_hant": "藍蘭島漂流記 9", "title_zh": "蓝兰岛漂流记 9", "cover_id": 1887143, "first_chap_id": 87710, "cover_url": "https://i.motiezw.com/cover/1057/1887143.jpg"}, {"title_hant": "藍蘭島漂流記 10", "title_zh": "蓝兰岛漂流记 10", "cover_id": 1887337, "first_chap_id": 87719, "cover_url": "https://i.motiezw.com/cover/1057/1887337.jpg"}, {"title_hant": "藍蘭島漂流記 11", "title_zh": "蓝兰岛漂流记 11", "cover_id": 1887533, "first_chap_id": 87728, "cover_url": "https://i.motiezw.com/cover/1057/1887533.jpg"}, {"title_hant": "藍蘭島漂流記 12", "title_zh": "蓝兰岛漂流记 12", "cover_id": 1887731, "first_chap_id": 87738, "cover_url": "https://i.motiezw.com/cover/1057/1887731.jpg"}], "chapters": [{"cid": "87632", "title": "第1話 漂流", "title_zh": "第1话 漂流"}, {"cid": "87633", "title": "第2話 逼迫", "title_zh": "第2话 逼迫"}, {"cid": "87634", "title": "第3話 追逐", "title_zh": "第3话 追逐"}, {"cid": "87635", "title": "第4話 黃昏", "title_zh": "第4话 黄昏"}, {"cid": "87636", "title": "第5話 有用", "title_zh": "第5话 有用"}, {"cid": "87637", "title": "第6話 出現", "title_zh": "第6话 出现"}, {"cid": "87638", "title": "附錄", "title_zh": "附录"}, {"cid": "87640", "title": "第7話 驚嚇", "title_zh": "第7话 惊吓"}, {"cid": "87641", "title": "第8話 逃啊逃", "title_zh": "第8话 逃啊逃"}, {"cid": "87646", "title": "番外篇 讓我說⋯", "title_zh": "番外篇 让我说⋯"}, {"cid": "87642", "title": "第9話 尋找", "title_zh": "第9话 寻找"}, {"cid": "87647", "title": "番外篇 就是短篇咩", "title_zh": "番外篇 就是短篇咩"}, {"cid": "87643", "title": "第10話 想見面", "title_zh": "第10话 想见面"}, {"cid": "87644", "title": "第11話 收集", "title_zh": "第11话 收集"}, {"cid": "87645", "title": "第12話 魅惑", "title_zh": "第12话 魅惑"}, {"cid": "87648", "title": "附錄", "title_zh": "附录"}, {"cid": "87650", "title": "第13話 就是喵", "title_zh": "第13话 就是喵"}, {"cid": "87651", "title": "第14話 就是想看", "title_zh": "第14话 就是想看"}, {"cid": "87652", "title": "番外篇 就是早晨", "title_zh": "番外篇 就是早晨"}, {"cid": "87653", "title": "第15話 就是下雨", "title_zh": "第15话 就是下雨"}, {"cid": "87654", "title": "第16話 好吃", "title_zh": "第16话 好吃"}, {"cid": "87656", "title": "第17話 暖烘烘", "title_zh": "第17话 暖烘烘"}, {"cid": "87657", "title": "第18話 爭吵", "title_zh": "第18话 争吵"}, {"cid": "87658", "title": "番外篇 就是要贏", "title_zh": "番外篇 就是要赢"}, {"cid": "87659", "title": "附錄", "title_zh": "附录"}, {"cid": "87661", "title": "第19話 綑綁", "title_zh": "第19话 捆绑"}, {"cid": "87662", "title": "第20話 害羞", "title_zh": "第20话 害羞"}, {"cid": "87663", "title": "番外篇 想改變", "title_zh": "番外篇 想改变"}, {"cid": "87664", "title": "第21話 問一下", "title_zh": "第21话 问一下"}, {"cid": "87665", "title": "第22話 換一下", "title_zh": "第22话 换一下"}, {"cid": "87666", "title": "第23話 試一下", "title_zh": "第23话 试一下"}, {"cid": "87667", "title": "番外篇 實現", "title_zh": "番外篇 实现"}, {"cid": "87668", "title": "第24話 好冷喔", "title_zh": "第24话 好冷喔"}, {"cid": "87669", "title": "附錄", "title_zh": "附录"}, {"cid": "87671", "title": "第25話 想改進", "title_zh": "第25话 想改进"}, {"cid": "87672", "title": "番外篇 就是海", "title_zh": "番外篇 就是海"}, {"cid": "87673", "title": "第26話 想收集", "title_zh": "第26话 想收集"}, {"cid": "87674", "title": "第27話 帶回來", "title_zh": "第27话 带回来"}, {"cid": "87675", "title": "第28話 一定贏", "title_zh": "第28话 一定赢"}, {"cid": "87676", "title": "第29話 就是反擊", "title_zh": "第29话 就是反击"}, {"cid": "87677", "title": "番外篇 想知道", "title_zh": "番外篇 想知道"}, {"cid": "87678", "title": "第30話 就是眷變", "title_zh": "第30话 就是眷变"}, {"cid": "87679", "title": "附錄", "title_zh": "附录"}, {"cid": "87681", "title": "第31話 想找到", "title_zh": "第31话 想找到"}, {"cid": "87682", "title": "第32話 逞強", "title_zh": "第32话 逞强"}, {"cid": "87683", "title": "番外篇 服從", "title_zh": "番外篇 服从"}, {"cid": "87684", "title": "第33話 成長", "title_zh": "第33话 成长"}, {"cid": "87685", "title": "第34話 幻化", "title_zh": "第34话 幻化"}, {"cid": "87686", "title": "番外篇 續 幻化", "title_zh": "番外篇 续 幻化"}, {"cid": "87687", "title": "第35話 量一下", "title_zh": "第35话 量一下"}, {"cid": "87688", "title": "第36話 練習", "title_zh": "第36话 练习"}, {"cid": "87689", "title": "附錄", "title_zh": "附录"}, {"cid": "87691", "title": "第37話 被看見", "title_zh": "第37话 被看见"}, {"cid": "87692", "title": "番外篇 裝扮逞強", "title_zh": "番外篇 装扮逞强"}, {"cid": "87693", "title": "第38話 學一下", "title_zh": "第38话 学一下"}, {"cid": "87694", "title": "第39話 上課", "title_zh": "第39话 上课"}, {"cid": "87695", "title": "番外篇 試裝", "title_zh": "番外篇 试装"}, {"cid": "87696", "title": "第40話 神秘", "title_zh": "第40话 神秘"}, {"cid": "87697", "title": "第41話 夜深深", "title_zh": "第41话 夜深深"}, {"cid": "87698", "title": "第42話 本人", "title_zh": "第42话 本人"}]};

let lang = 'zh';

let mode = 'scroll';

let curPage = 0;

function renderMeta() {

const t = lang === 'zh' ? COMIC.zh_title : (lang === 'hant' ? COMIC.hant_title : COMIC.en_title);

const d = lang === 'zh' ? COMIC.zh_desc : (lang === 'hant' ? COMIC.hant_desc : COMIC.en_desc);

document.getElementById('hdrTitle').textContent = t;

document.getElementById('heroTitle').textContent = t;

document.getElementById('heroSub').textContent = `${COMIC.author} · 共 ${COMIC.volumes.length} 卷 / ${COMIC.chapters.length} 话`;

document.getElementById('heroDesc').textContent = d;

document.getElementById('heroCover').src = COMIC.pages[0] || '';

document.getElementById('chapCount').textContent = COMIC.chapters.length;

const tg = document.getElementById('heroTags');

tg.innerHTML = '';

(COMIC.tags || []).forEach(x => {

const s = document.createElement('span');

s.className = 'tag';

s.textContent = x;

tg.appendChild(s);

});

}

function renderCatalog() {

const g = document.getElementById('chapGrid');

g.innerHTML = '';

(COMIC.chapters || []).forEach((c, idx) => {

const d = document.createElement('div');

d.className = 'chap-item';

d.textContent = c.title_zh || c.title;

d.onclick = () => {

curPage = idx % COMIC.pages.length;

if (mode === 'flip') renderPages();

else document.querySelectorAll('.page-card')[curPage]?.scrollIntoView({behavior:'smooth'});

document.getElementById('catDrawer').classList.remove('open');

};

g.appendChild(d);

});

}

function renderPages() {

const wrap = document.getElementById('readerWrap');

wrap.className = 'reader-wrap ' + (mode === 'scroll' ? 'scroll-mode' : 'flip-mode');

const box = document.getElementById('pagesContainer');

box.innerHTML = '';

const list = mode === 'scroll' ? COMIC.pages : [COMIC.pages[curPage]];

list.forEach((url, i) => {

const idx = mode === 'scroll' ? i : curPage;

const card = document.createElement('div');

card.className = 'page-card';

card.innerHTML = `<img src="${url}" loading="lazy" alt="Page ${idx+1}"><div class="page-footer">第 ${idx+1} / ${COMIC.pages.length} 页 · ${COMIC.zh_title}</div>`;

if (mode === 'flip') card.onclick = () => stepPage(1);

box.appendChild(card);

});

document.getElementById('pageIndicator').textContent = `${curPage + 1} / ${COMIC.pages.length}`;

}

function setMode(m) {

mode = m;

document.getElementById('btnScroll').classList.toggle('active', m === 'scroll');

document.getElementById('btnFlip').classList.toggle('active', m === 'flip');

renderPages();

}

function stepPage(delta) {

curPage = (curPage + delta + COMIC.pages.length) % COMIC.pages.length;

renderPages();

}

function toggleCatalog() {

document.getElementById('catDrawer').classList.toggle('open');

}

function cycleLang() {

lang = lang === 'zh' ? 'hant' : (lang === 'hant' ? 'en' : 'zh');

renderMeta();

}

renderMeta();

renderCatalog();

renderPages();

</script>

</body>

</html>