@yui540/comimi 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,7 +5,6 @@ var e = {
5
5
  pageTurnMode: "single",
6
6
  layoutMode: "inline",
7
7
  autoPageTurnIntervalMs: 5e3,
8
- pageTurnAnimation: !0,
9
8
  backgroundColor: "white",
10
9
  zoom: {
11
10
  min: 1,
@@ -78,7 +77,6 @@ var o = {
78
77
  "settings.backgroundColor.black": "Black",
79
78
  "settings.interval": "Auto play interval",
80
79
  "settings.interval.unit": "s",
81
- "settings.animation": "Page turn animation",
82
80
  "settings.direction.rtl": "Right to left",
83
81
  "settings.direction.ltr": "Left to right",
84
82
  "menu.openShortcuts": "Keyboard shortcuts",
@@ -119,7 +117,6 @@ var o = {
119
117
  "settings.backgroundColor.black": "Hitam",
120
118
  "settings.interval": "Interval putar otomatis",
121
119
  "settings.interval.unit": "dtk",
122
- "settings.animation": "Animasi balik halaman",
123
120
  "settings.direction.rtl": "Kanan",
124
121
  "settings.direction.ltr": "Kiri",
125
122
  "menu.openShortcuts": "Pintasan keyboard",
@@ -160,7 +157,6 @@ var o = {
160
157
  "settings.backgroundColor.black": "黒",
161
158
  "settings.interval": "自動再生の秒数",
162
159
  "settings.interval.unit": "秒",
163
- "settings.animation": "ページ移動アニメーション",
164
160
  "settings.direction.rtl": "右",
165
161
  "settings.direction.ltr": "左",
166
162
  "menu.openShortcuts": "キーボードショートカット",
@@ -201,7 +197,6 @@ var o = {
201
197
  "settings.backgroundColor.black": "검정",
202
198
  "settings.interval": "자동 재생 간격",
203
199
  "settings.interval.unit": "초",
204
- "settings.animation": "페이지 넘김 애니메이션",
205
200
  "settings.direction.rtl": "오른쪽",
206
201
  "settings.direction.ltr": "왼쪽",
207
202
  "menu.openShortcuts": "키보드 단축키",
@@ -219,7 +214,7 @@ var o = {
219
214
  "seek.previewAlt": "{{page}}페이지 미리보기",
220
215
  loading: "로딩 중",
221
216
  "error.pageRequestFailed": "{{page}}페이지 요청 실패"
222
- }, ee = {
217
+ }, u = {
223
218
  "overlay.autoPageTurn": "เล่นอัตโนมัติ",
224
219
  "overlay.layout": "โหมดการแสดงผล",
225
220
  "overlay.settings": "ตั้งค่า",
@@ -242,7 +237,6 @@ var o = {
242
237
  "settings.backgroundColor.black": "ดำ",
243
238
  "settings.interval": "ระยะเวลาเล่นอัตโนมัติ",
244
239
  "settings.interval.unit": "วินาที",
245
- "settings.animation": "อนิเมชันการพลิกหน้า",
246
240
  "settings.direction.rtl": "ขวา",
247
241
  "settings.direction.ltr": "ซ้าย",
248
242
  "menu.openShortcuts": "คีย์ลัด",
@@ -260,7 +254,7 @@ var o = {
260
254
  "seek.previewAlt": "ตัวอย่างหน้า {{page}}",
261
255
  loading: "กำลังโหลด",
262
256
  "error.pageRequestFailed": "ขอหน้า {{page}} ไม่สำเร็จ"
263
- }, te = {
257
+ }, ee = {
264
258
  "overlay.autoPageTurn": "自动播放",
265
259
  "overlay.layout": "显示模式",
266
260
  "overlay.settings": "设置",
@@ -283,7 +277,6 @@ var o = {
283
277
  "settings.backgroundColor.black": "黑色",
284
278
  "settings.interval": "自动播放间隔",
285
279
  "settings.interval.unit": "秒",
286
- "settings.animation": "翻页动画",
287
280
  "settings.direction.rtl": "向右",
288
281
  "settings.direction.ltr": "向左",
289
282
  "menu.openShortcuts": "键盘快捷键",
@@ -301,16 +294,16 @@ var o = {
301
294
  "seek.previewAlt": "第 {{page}} 页预览",
302
295
  loading: "加载中",
303
296
  "error.pageRequestFailed": "第 {{page}} 页请求失败"
304
- }, ne = class {
297
+ }, te = class {
305
298
  locale;
306
299
  translations;
307
300
  constructor(e, t) {
308
301
  this.locale = e, this.translations = {
309
302
  ja: c,
310
303
  en: o,
311
- "zh-CN": te,
304
+ "zh-CN": ee,
312
305
  ko: l,
313
- th: ee,
306
+ th: u,
314
307
  id: s
315
308
  }, t && (this.translations[e] = {
316
309
  ...this.translations[e] ?? {},
@@ -326,58 +319,58 @@ var o = {
326
319
  };
327
320
  //#endregion
328
321
  //#region src/components/icons.ts
329
- function u(e, t) {
322
+ function d(e, t) {
330
323
  switch (e) {
331
- case "arrow": return d("0 0 20 20", [f("M7.28685 6.64194L10.7742 10.0838L7.3011 13.3098C7.06547 13.5391 6.9336 13.8467 6.9336 14.1669C6.9336 14.4871 7.06547 14.7945 7.3011 15.0239C7.41902 15.1378 7.55971 15.2282 7.7149 15.29C7.87009 15.3517 8.03669 15.3835 8.20498 15.3835C8.37328 15.3835 8.53987 15.3517 8.69506 15.29C8.85025 15.2282 8.99095 15.1378 9.10887 15.0239L13.4787 10.9746C13.7134 10.7475 13.845 10.4422 13.845 10.1243C13.845 9.80629 13.7134 9.50107 13.4787 9.27399L9.10886 4.96826C8.86878 4.74159 8.54377 4.61426 8.20498 4.61426C7.86619 4.61426 7.54118 4.74159 7.3011 4.96826C7.18102 5.08007 7.08568 5.2134 7.02057 5.36056C6.95546 5.50772 6.92188 5.6657 6.92188 5.82528C6.92188 5.98487 6.95546 6.14293 7.02057 6.29009C7.08568 6.43725 7.18102 6.57058 7.3011 6.68239L7.28685 6.64194Z")], t);
332
- case "default": return d("0 0 20 20", [p("1", "4", "18", "12", "3")], t);
333
- case "wide": return d("0 0 20 20", [p("1", "2.5", "18", "15", "3"), f("M5.5719 6.31811C5.88754 6.00907 6.39381 6.01422 6.70294 6.3298C7.01206 6.64539 7.00674 7.15165 6.69124 7.46084L5.06993 9.04896L14.7642 9.16988L13.1761 7.54857C12.867 7.23293 12.8722 6.72667 13.1878 6.41754C13.5034 6.10841 14.0096 6.11374 14.3188 6.42923L17.2579 9.42977C17.5671 9.7454 17.5619 10.2516 17.2462 10.5608L14.2457 13.4999C13.93 13.809 13.4238 13.8038 13.1146 13.4882C12.8055 13.1726 12.8109 12.6664 13.1263 12.3572L14.7477 10.7691L5.0534 10.6481L6.64152 12.2695C6.95055 12.5851 6.94541 13.0914 6.62982 13.4005C6.31424 13.7096 5.80797 13.7043 5.49879 13.3888L2.55967 10.3883C2.2505 10.0726 2.25573 9.5664 2.57136 9.25723L5.5719 6.31811Z")], t);
334
- case "fullscreen": return d("0 0 20 20", [p("1", "1", "18", "18", "3"), f("M8.69922 3.7002C9.14096 3.7003 9.49902 4.05824 9.49902 4.5C9.49902 4.94176 9.14096 5.2997 8.69922 5.2998H6.42969L14.6992 13.5693V11.2998C14.6993 10.8581 15.0573 10.5 15.499 10.5C15.9408 10.5 16.2987 10.8581 16.2988 11.2998V15.5C16.2988 15.9418 15.9409 16.2998 15.499 16.2998H11.2988C10.8571 16.2997 10.499 15.9418 10.499 15.5C10.499 15.0582 10.8571 14.7003 11.2988 14.7002H13.5684L5.29883 6.43066V8.7002C5.29872 9.14193 4.94079 9.5 4.49902 9.5C4.05726 9.5 3.69932 9.14193 3.69922 8.7002V4.5C3.69922 4.05817 4.0572 3.7002 4.49902 3.7002H8.69922Z")], t);
335
- case "one": return d("0 0 20 20", [p("1", "2", "18", "16", "3"), re("6", "4", "8", "12", "1.5")], t);
336
- case "two": return d("0 0 20 20", [
337
- p("1", "2", "18", "16", "3"),
338
- f("M3 5.5C3 4.67157 3.67157 4 4.5 4H9.5V16H4.5C3.67157 16 3 15.3284 3 14.5V5.5Z"),
339
- f("M10.5 4H15.5C16.3284 4 17 4.67157 17 5.5V14.5C17 15.3284 16.3284 16 15.5 16H10.5V4Z")
324
+ case "arrow": return f("0 0 20 20", [p("M7.28685 6.64194L10.7742 10.0838L7.3011 13.3098C7.06547 13.5391 6.9336 13.8467 6.9336 14.1669C6.9336 14.4871 7.06547 14.7945 7.3011 15.0239C7.41902 15.1378 7.55971 15.2282 7.7149 15.29C7.87009 15.3517 8.03669 15.3835 8.20498 15.3835C8.37328 15.3835 8.53987 15.3517 8.69506 15.29C8.85025 15.2282 8.99095 15.1378 9.10887 15.0239L13.4787 10.9746C13.7134 10.7475 13.845 10.4422 13.845 10.1243C13.845 9.80629 13.7134 9.50107 13.4787 9.27399L9.10886 4.96826C8.86878 4.74159 8.54377 4.61426 8.20498 4.61426C7.86619 4.61426 7.54118 4.74159 7.3011 4.96826C7.18102 5.08007 7.08568 5.2134 7.02057 5.36056C6.95546 5.50772 6.92188 5.6657 6.92188 5.82528C6.92188 5.98487 6.95546 6.14293 7.02057 6.29009C7.08568 6.43725 7.18102 6.57058 7.3011 6.68239L7.28685 6.64194Z")], t);
325
+ case "default": return f("0 0 20 20", [m("1", "4", "18", "12", "3")], t);
326
+ case "wide": return f("0 0 20 20", [m("1", "2.5", "18", "15", "3"), p("M5.5719 6.31811C5.88754 6.00907 6.39381 6.01422 6.70294 6.3298C7.01206 6.64539 7.00674 7.15165 6.69124 7.46084L5.06993 9.04896L14.7642 9.16988L13.1761 7.54857C12.867 7.23293 12.8722 6.72667 13.1878 6.41754C13.5034 6.10841 14.0096 6.11374 14.3188 6.42923L17.2579 9.42977C17.5671 9.7454 17.5619 10.2516 17.2462 10.5608L14.2457 13.4999C13.93 13.809 13.4238 13.8038 13.1146 13.4882C12.8055 13.1726 12.8109 12.6664 13.1263 12.3572L14.7477 10.7691L5.0534 10.6481L6.64152 12.2695C6.95055 12.5851 6.94541 13.0914 6.62982 13.4005C6.31424 13.7096 5.80797 13.7043 5.49879 13.3888L2.55967 10.3883C2.2505 10.0726 2.25573 9.5664 2.57136 9.25723L5.5719 6.31811Z")], t);
327
+ case "fullscreen": return f("0 0 20 20", [m("1", "1", "18", "18", "3"), p("M8.69922 3.7002C9.14096 3.7003 9.49902 4.05824 9.49902 4.5C9.49902 4.94176 9.14096 5.2997 8.69922 5.2998H6.42969L14.6992 13.5693V11.2998C14.6993 10.8581 15.0573 10.5 15.499 10.5C15.9408 10.5 16.2987 10.8581 16.2988 11.2998V15.5C16.2988 15.9418 15.9409 16.2998 15.499 16.2998H11.2988C10.8571 16.2997 10.499 15.9418 10.499 15.5C10.499 15.0582 10.8571 14.7003 11.2988 14.7002H13.5684L5.29883 6.43066V8.7002C5.29872 9.14193 4.94079 9.5 4.49902 9.5C4.05726 9.5 3.69932 9.14193 3.69922 8.7002V4.5C3.69922 4.05817 4.0572 3.7002 4.49902 3.7002H8.69922Z")], t);
328
+ case "one": return f("0 0 20 20", [m("1", "2", "18", "16", "3"), h("6", "4", "8", "12", "1.5")], t);
329
+ case "two": return f("0 0 20 20", [
330
+ m("1", "2", "18", "16", "3"),
331
+ p("M3 5.5C3 4.67157 3.67157 4 4.5 4H9.5V16H4.5C3.67157 16 3 15.3284 3 14.5V5.5Z"),
332
+ p("M10.5 4H15.5C16.3284 4 17 4.67157 17 5.5V14.5C17 15.3284 16.3284 16 15.5 16H10.5V4Z")
340
333
  ], t);
341
- case "play": return d("0 0 20 20", [f("M17.0385 7.78428L6.49809 1.19667C4.68077 0.190227 2.5 1.37966 2.5 3.48403V16.5678C2.5 18.5806 4.68077 19.8616 6.49809 18.7636L17.0385 12.176C18.7649 11.1696 18.7649 8.79072 17.0385 7.78428Z")], t);
342
- case "pause": return d("0 0 20 20", [f("M6.14289 18.3332H4.68573C3.47144 18.3332 2.5 17.3332 2.5 16.0832V3.9165C2.5 2.6665 3.47144 1.6665 4.68573 1.6665H6.14289C7.35718 1.6665 8.32862 2.6665 8.32862 3.9165V15.9998C8.40957 17.3332 7.43814 18.3332 6.14289 18.3332Z"), f("M15.3138 18.3332H13.8555C12.6402 18.3332 11.668 17.3332 11.668 16.0832V3.9165C11.668 2.6665 12.6402 1.6665 13.8555 1.6665H15.3138C16.5291 1.6665 17.5013 2.6665 17.5013 3.9165V15.9998C17.5013 17.3332 16.5291 18.3332 15.3138 18.3332Z")], t);
343
- case "settings": return d("0 0 24 24", [f("M10.0144 1.34782C11.2164 0.658798 12.6836 0.658798 13.8856 1.34782C13.8947 1.35299 13.9036 1.35831 13.9125 1.36376L20.1001 5.17383C21.3211 5.88071 22 7.15791 22 8.54376V15.56C22 16.9 21.3552 18.2127 20.1836 18.8369L14.0125 22.6368C14.0036 22.6423 13.9947 22.6476 13.9856 22.6527C12.7836 23.3418 11.3164 23.3418 10.1144 22.6527C10.1053 22.6476 10.0964 22.6423 10.0875 22.6368L3.89984 18.8267C2.67884 18.1198 2 16.8426 2 15.4568V8.54376C2 7.15919 2.6776 5.88306 3.8965 5.17578L9.98139 1.36758C9.99225 1.36078 10.0032 1.35419 10.0144 1.34782ZM11.0006 3.14323L4.91861 6.94964C4.90775 6.95644 4.89675 6.96302 4.88564 6.96939C4.31578 7.29605 4 7.87148 4 8.54376V15.4568C4 16.1291 4.31578 16.7045 4.88564 17.0312C4.89466 17.0364 4.9036 17.0417 4.91246 17.0471L11.0978 20.8558C11.6895 21.1893 12.4105 21.1893 13.0022 20.8558L19.1875 17.0471C19.2088 17.034 19.2306 17.0217 19.2528 17.0103C19.6582 16.8011 20 16.2698 20 15.56V8.54376C20 7.87148 19.6842 7.29605 19.1144 6.96939C19.1053 6.96422 19.0964 6.95891 19.0875 6.95346L12.9022 3.14482C12.3115 2.8118 11.5918 2.81127 11.0006 3.14323ZM12 9.8851C10.8402 9.8851 9.89999 10.8552 9.89999 12.0519C9.89999 13.2486 10.8402 14.2187 12 14.2187C13.1598 14.2187 14.1 13.2486 14.1 12.0519C14.1 10.8552 13.1598 9.8851 12 9.8851ZM7.89999 12.0519C7.89999 9.7155 9.73563 7.8215 12 7.8215C14.2644 7.8215 16.1 9.7155 16.1 12.0519C16.1 14.3883 14.2644 16.2823 12 16.2823C9.73563 16.2823 7.89999 14.3883 7.89999 12.0519Z")], t);
344
- case "menu": return m(t);
345
- case "close": return h(t);
334
+ case "play": return f("0 0 20 20", [p("M17.0385 7.78428L6.49809 1.19667C4.68077 0.190227 2.5 1.37966 2.5 3.48403V16.5678C2.5 18.5806 4.68077 19.8616 6.49809 18.7636L17.0385 12.176C18.7649 11.1696 18.7649 8.79072 17.0385 7.78428Z")], t);
335
+ case "pause": return f("0 0 20 20", [p("M6.14289 18.3332H4.68573C3.47144 18.3332 2.5 17.3332 2.5 16.0832V3.9165C2.5 2.6665 3.47144 1.6665 4.68573 1.6665H6.14289C7.35718 1.6665 8.32862 2.6665 8.32862 3.9165V15.9998C8.40957 17.3332 7.43814 18.3332 6.14289 18.3332Z"), p("M15.3138 18.3332H13.8555C12.6402 18.3332 11.668 17.3332 11.668 16.0832V3.9165C11.668 2.6665 12.6402 1.6665 13.8555 1.6665H15.3138C16.5291 1.6665 17.5013 2.6665 17.5013 3.9165V15.9998C17.5013 17.3332 16.5291 18.3332 15.3138 18.3332Z")], t);
336
+ case "settings": return f("0 0 24 24", [p("M10.0144 1.34782C11.2164 0.658798 12.6836 0.658798 13.8856 1.34782C13.8947 1.35299 13.9036 1.35831 13.9125 1.36376L20.1001 5.17383C21.3211 5.88071 22 7.15791 22 8.54376V15.56C22 16.9 21.3552 18.2127 20.1836 18.8369L14.0125 22.6368C14.0036 22.6423 13.9947 22.6476 13.9856 22.6527C12.7836 23.3418 11.3164 23.3418 10.1144 22.6527C10.1053 22.6476 10.0964 22.6423 10.0875 22.6368L3.89984 18.8267C2.67884 18.1198 2 16.8426 2 15.4568V8.54376C2 7.15919 2.6776 5.88306 3.8965 5.17578L9.98139 1.36758C9.99225 1.36078 10.0032 1.35419 10.0144 1.34782ZM11.0006 3.14323L4.91861 6.94964C4.90775 6.95644 4.89675 6.96302 4.88564 6.96939C4.31578 7.29605 4 7.87148 4 8.54376V15.4568C4 16.1291 4.31578 16.7045 4.88564 17.0312C4.89466 17.0364 4.9036 17.0417 4.91246 17.0471L11.0978 20.8558C11.6895 21.1893 12.4105 21.1893 13.0022 20.8558L19.1875 17.0471C19.2088 17.034 19.2306 17.0217 19.2528 17.0103C19.6582 16.8011 20 16.2698 20 15.56V8.54376C20 7.87148 19.6842 7.29605 19.1144 6.96939C19.1053 6.96422 19.0964 6.95891 19.0875 6.95346L12.9022 3.14482C12.3115 2.8118 11.5918 2.81127 11.0006 3.14323ZM12 9.8851C10.8402 9.8851 9.89999 10.8552 9.89999 12.0519C9.89999 13.2486 10.8402 14.2187 12 14.2187C13.1598 14.2187 14.1 13.2486 14.1 12.0519C14.1 10.8552 13.1598 9.8851 12 9.8851ZM7.89999 12.0519C7.89999 9.7155 9.73563 7.8215 12 7.8215C14.2644 7.8215 16.1 9.7155 16.1 12.0519C16.1 14.3883 14.2644 16.2823 12 16.2823C9.73563 16.2823 7.89999 14.3883 7.89999 12.0519Z")], t);
337
+ case "menu": return g(t);
338
+ case "close": return _(t);
346
339
  }
347
340
  }
348
- function d(e, t, n) {
341
+ function f(e, t, n) {
349
342
  let r = document.createElementNS("http://www.w3.org/2000/svg", "svg");
350
343
  return r.setAttribute("viewBox", e), r.setAttribute("fill", "none"), r.classList.add("comimi-icon"), n && r.classList.add(n), r.append(...t), r;
351
344
  }
352
- function f(e) {
345
+ function p(e) {
353
346
  let t = document.createElementNS("http://www.w3.org/2000/svg", "path");
354
347
  return t.setAttribute("d", e), t.classList.add("comimi-icon-fill"), t;
355
348
  }
356
- function p(e, t, n, r, i) {
349
+ function m(e, t, n, r, i) {
357
350
  let a = document.createElementNS("http://www.w3.org/2000/svg", "rect");
358
351
  return a.setAttribute("x", e), a.setAttribute("y", t), a.setAttribute("width", n), a.setAttribute("height", r), a.setAttribute("rx", i), a.classList.add("comimi-icon-stroke"), a;
359
352
  }
360
- function re(e, t, n, r, i) {
353
+ function h(e, t, n, r, i) {
361
354
  let a = document.createElementNS("http://www.w3.org/2000/svg", "rect");
362
355
  return a.setAttribute("x", e), a.setAttribute("y", t), a.setAttribute("width", n), a.setAttribute("height", r), a.setAttribute("rx", i), a.classList.add("comimi-icon-fill"), a;
363
356
  }
364
- function m(e) {
357
+ function g(e) {
365
358
  let t = document.createElement("span");
366
359
  t.className = `comimi-menu-svg ${e ?? ""}`.trim();
367
360
  for (let e = 0; e < 3; e += 1) t.append(document.createElement("span"));
368
361
  return t;
369
362
  }
370
- function h(e) {
363
+ function _(e) {
371
364
  let t = document.createElement("span");
372
365
  return t.className = `comimi-close-svg ${e ?? ""}`.trim(), t.append(document.createElement("span"), document.createElement("span")), t;
373
366
  }
374
367
  //#endregion
375
368
  //#region src/components/arrow-buttons.ts
376
- function g({ state: e, callbacks: t }) {
369
+ function ne({ state: e, callbacks: t }) {
377
370
  let n = document.createElement("div");
378
- return n.className = "comimi-arrows", n.dataset.overlay = String(e.overlayVisible), n.append(_("prev", () => v(e, t, "left")), _("next", () => v(e, t, "right"))), n;
371
+ return n.className = "comimi-arrows", n.dataset.overlay = String(e.overlayVisible), n.dataset.autoplay = String(e.autoPageTurnEnabled), n.append(v("prev", () => y(e, t, "left")), v("next", () => y(e, t, "right"))), n;
379
372
  }
380
- function _(e, t) {
373
+ function v(e, t) {
381
374
  let n = document.createElement("button");
382
375
  n.type = "button", n.className = `comimi-arrow-button comimi-arrow-${e}`, n.setAttribute("aria-label", e === "next" ? "Next page" : "Previous page"), n.addEventListener("click", (e) => {
383
376
  e.stopPropagation(), t();
@@ -386,18 +379,18 @@ function _(e, t) {
386
379
  r.className = "comimi-arrow-inner";
387
380
  let i = document.createElement("span");
388
381
  i.className = "comimi-arrow-bg";
389
- let a = u("arrow");
382
+ let a = d("arrow");
390
383
  return a.classList.add("comimi-arrow-icon"), r.append(i, a), n.append(r), n;
391
384
  }
392
- function v(e, t, n) {
393
- ie(n, e.settings.readingDirection) ? t.nextPage() : t.previousPage();
385
+ function y(e, t, n) {
386
+ re(n, e.settings.readingDirection) ? t.nextPage() : t.previousPage();
394
387
  }
395
- function ie(e, t) {
388
+ function re(e, t) {
396
389
  return t === "rtl" ? e === "left" : e === "right";
397
390
  }
398
391
  //#endregion
399
392
  //#region src/components/center-message.ts
400
- function ae(e, t) {
393
+ function ie(e, t) {
401
394
  let n = document.createElement("div");
402
395
  n.className = "comimi-center-message", n.dataset.overlay = String(e.overlayVisible);
403
396
  let r = document.createElement("div");
@@ -407,72 +400,72 @@ function ae(e, t) {
407
400
  }
408
401
  //#endregion
409
402
  //#region src/components/page-layout.ts
410
- function y(e, t) {
411
- return E(e, e.currentPageIndex, t);
403
+ function b(e, t) {
404
+ return D(e, e.currentPageIndex, t);
412
405
  }
413
- function b(e, t, n) {
414
- let r = y(e, n), i = t === "previous" ? Math.min(...r) - 1 : Math.max(...r) + 1;
415
- return i < 0 || i >= e.manga.pages.length ? [] : E(e, i, n);
406
+ function x(e, t, n) {
407
+ let r = b(e, n), i = t === "previous" ? Math.min(...r) - 1 : Math.max(...r) + 1;
408
+ return i < 0 || i >= e.manga.pages.length ? [] : D(e, i, n);
416
409
  }
417
- function x(e, t) {
410
+ function S(e, t) {
418
411
  let n = [];
419
412
  for (let r = 1; r >= 1; --r) {
420
- let i = T(e, "previous", r, t);
413
+ let i = E(e, "previous", r, t);
421
414
  i.length > 0 && n.push({
422
415
  indexes: i,
423
416
  placement: "previous",
424
- offset: S(e, "previous", r)
417
+ offset: C(e, "previous", r)
425
418
  });
426
419
  }
427
420
  n.push({
428
- indexes: y(e, t),
421
+ indexes: b(e, t),
429
422
  placement: "current",
430
423
  offset: 0
431
424
  });
432
425
  for (let r = 1; r <= 1; r += 1) {
433
- let i = T(e, "next", r, t);
426
+ let i = E(e, "next", r, t);
434
427
  i.length > 0 && n.push({
435
428
  indexes: i,
436
429
  placement: "next",
437
- offset: S(e, "next", r)
430
+ offset: C(e, "next", r)
438
431
  });
439
432
  }
440
433
  return n;
441
434
  }
442
- function S(e, t, n) {
435
+ function C(e, t, n) {
443
436
  let r = e.settings.readingDirection === "rtl" ? -1 : 1;
444
437
  return (t === "next" ? r : -r) * n;
445
438
  }
446
- function C(e, t) {
439
+ function w(e, t) {
447
440
  if (t === "current") return "center";
448
441
  let n = e.settings.readingDirection === "rtl" ? "left" : "right";
449
442
  return t === "next" ? n : n === "left" ? "right" : "left";
450
443
  }
451
- function w(e, t) {
444
+ function T(e, t) {
452
445
  return t === "rtl" ? e > 0 : e < 0;
453
446
  }
454
- function T(e, t, n, r) {
455
- let i = y(e, r);
447
+ function E(e, t, n, r) {
448
+ let i = b(e, r);
456
449
  for (let a = 0; a < n; a += 1) {
457
450
  let n = t === "previous" ? Math.min(...i) - 1 : Math.max(...i) + 1;
458
451
  if (n < 0 || n >= e.manga.pages.length) return [];
459
- i = E(e, n, r);
452
+ i = D(e, n, r);
460
453
  }
461
454
  return i;
462
455
  }
463
- function E(e, t, n) {
456
+ function D(e, t, n) {
464
457
  let { manga: r, settings: i } = e;
465
458
  if (n || i.pageTurnMode !== "spread" || i.hasCover && t === 0) return [t];
466
- let a = [t, oe(e, t)].filter((e) => e >= 0 && e < r.pages.length), o = [...new Set(a)].sort((e, t) => e - t);
459
+ let a = [t, ae(e, t)].filter((e) => e >= 0 && e < r.pages.length), o = [...new Set(a)].sort((e, t) => e - t);
467
460
  return i.readingDirection === "rtl" ? o.reverse() : o;
468
461
  }
469
- function oe(e, t) {
462
+ function ae(e, t) {
470
463
  return e.settings.hasCover ? t % 2 == 1 ? t + 1 : t - 1 : t % 2 == 0 ? t + 1 : t - 1;
471
464
  }
472
465
  //#endregion
473
466
  //#region src/components/rabbit-mascot.ts
474
- var se = "<svg viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"comimi-rabbit-svg\">\n <mask id=\"comimi-rabbit-mask\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"50\" height=\"50\">\n <rect width=\"50\" height=\"50\" fill=\"#D9D9D9\"/>\n </mask>\n <g mask=\"url(#comimi-rabbit-mask)\">\n <path d=\"M3 41V50H47L48 46.5L47.5 41.5L46 36L42.5 32V29.5L43 23L41 14L36 10.5L29 12L25 16.5L21 12L15 10.5L9.5 14L7.5 22L7 33L3 41Z\" fill=\"white\"/>\n <path d=\"M44.4296 30.6958C44.6658 29.2364 44.8262 27.5939 44.9287 25.6301C45.1827 20.7786 44.6212 16.8733 43.2531 14.0123C41.4929 10.3257 38.3601 8.25926 34.1979 8.04056C30.3119 7.84418 27.1881 9.20546 24.9822 12.0396C22.3752 8.56275 18.828 7.87096 16.0027 8.01824C11.5152 8.25479 4.09982 10.8568 4.87077 25.6301C4.98218 27.759 5.1426 29.4372 5.37433 30.9011C1.8984 34.6592 0 39.3143 0 44.1301C0 46.2814 0.374332 48.4103 1.11854 50.4589C1.44831 51.365 2.30392 51.9318 3.21301 51.9318C3.46702 51.9318 3.72103 51.8872 3.97504 51.7979C5.13369 51.3784 5.73084 50.0974 5.31194 48.937C4.74599 47.3793 4.46078 45.7636 4.46078 44.1301C4.46078 40.1534 6.18984 36.2838 9.32709 33.2399C9.87077 32.7087 10.1114 31.9411 9.95989 31.1957C9.65241 29.6827 9.46078 27.8929 9.32709 25.398C9.16667 22.3005 8.67202 12.8742 16.2433 12.477C19.3717 12.3119 21.4349 13.807 22.7139 17.1589V27.4689C22.7139 28.7008 23.7121 29.7005 24.9421 29.7005C26.172 29.7005 27.1702 28.7008 27.1702 27.4689V17.1812C28.5294 13.8204 30.6907 12.3297 33.9706 12.4993C36.5107 12.6332 38.1863 13.7267 39.2424 15.9404C40.2807 18.1185 40.6996 21.2963 40.4857 25.398C40.3699 27.6608 40.1604 29.4952 39.8529 31.0038C39.697 31.7581 39.9465 32.5436 40.5036 33.0703C43.7522 36.1454 45.5392 40.073 45.5392 44.1301C45.5392 45.7592 45.254 47.3793 44.6881 48.937C44.2692 50.0974 44.8663 51.3739 46.025 51.7979C47.1836 52.2174 48.4581 51.6194 48.8815 50.4589C49.6212 48.4103 50 46.2814 50 44.1301C50 39.2161 48.0348 34.4896 44.4385 30.6958H44.4296Z\" fill=\"#E0E0E0\"/>\n <path d=\"M15.6152 45.4779C17.0919 45.4779 18.289 44.279 18.289 42.8C18.289 41.321 17.0919 40.1221 15.6152 40.1221C14.1385 40.1221 12.9414 41.321 12.9414 42.8C12.9414 44.279 14.1385 45.4779 15.6152 45.4779Z\" fill=\"#E0E0E0\"/>\n <path d=\"M29.6113 45.4779C31.088 45.4779 32.2851 44.279 32.2851 42.8C32.2851 41.321 31.088 40.1221 29.6113 40.1221C28.1346 40.1221 26.9375 41.321 26.9375 42.8C26.9375 44.279 28.1346 45.4779 29.6113 45.4779Z\" fill=\"#E0E0E0\"/>\n </g>\n</svg>";
475
- function D(e) {
467
+ var oe = "<svg viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"comimi-rabbit-svg\">\n <mask id=\"comimi-rabbit-mask\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"50\" height=\"50\">\n <rect width=\"50\" height=\"50\" fill=\"#D9D9D9\"/>\n </mask>\n <g mask=\"url(#comimi-rabbit-mask)\">\n <path d=\"M3 41V50H47L48 46.5L47.5 41.5L46 36L42.5 32V29.5L43 23L41 14L36 10.5L29 12L25 16.5L21 12L15 10.5L9.5 14L7.5 22L7 33L3 41Z\" fill=\"white\"/>\n <path d=\"M44.4296 30.6958C44.6658 29.2364 44.8262 27.5939 44.9287 25.6301C45.1827 20.7786 44.6212 16.8733 43.2531 14.0123C41.4929 10.3257 38.3601 8.25926 34.1979 8.04056C30.3119 7.84418 27.1881 9.20546 24.9822 12.0396C22.3752 8.56275 18.828 7.87096 16.0027 8.01824C11.5152 8.25479 4.09982 10.8568 4.87077 25.6301C4.98218 27.759 5.1426 29.4372 5.37433 30.9011C1.8984 34.6592 0 39.3143 0 44.1301C0 46.2814 0.374332 48.4103 1.11854 50.4589C1.44831 51.365 2.30392 51.9318 3.21301 51.9318C3.46702 51.9318 3.72103 51.8872 3.97504 51.7979C5.13369 51.3784 5.73084 50.0974 5.31194 48.937C4.74599 47.3793 4.46078 45.7636 4.46078 44.1301C4.46078 40.1534 6.18984 36.2838 9.32709 33.2399C9.87077 32.7087 10.1114 31.9411 9.95989 31.1957C9.65241 29.6827 9.46078 27.8929 9.32709 25.398C9.16667 22.3005 8.67202 12.8742 16.2433 12.477C19.3717 12.3119 21.4349 13.807 22.7139 17.1589V27.4689C22.7139 28.7008 23.7121 29.7005 24.9421 29.7005C26.172 29.7005 27.1702 28.7008 27.1702 27.4689V17.1812C28.5294 13.8204 30.6907 12.3297 33.9706 12.4993C36.5107 12.6332 38.1863 13.7267 39.2424 15.9404C40.2807 18.1185 40.6996 21.2963 40.4857 25.398C40.3699 27.6608 40.1604 29.4952 39.8529 31.0038C39.697 31.7581 39.9465 32.5436 40.5036 33.0703C43.7522 36.1454 45.5392 40.073 45.5392 44.1301C45.5392 45.7592 45.254 47.3793 44.6881 48.937C44.2692 50.0974 44.8663 51.3739 46.025 51.7979C47.1836 52.2174 48.4581 51.6194 48.8815 50.4589C49.6212 48.4103 50 46.2814 50 44.1301C50 39.2161 48.0348 34.4896 44.4385 30.6958H44.4296Z\" fill=\"#E0E0E0\"/>\n <path d=\"M15.6152 45.4779C17.0919 45.4779 18.289 44.279 18.289 42.8C18.289 41.321 17.0919 40.1221 15.6152 40.1221C14.1385 40.1221 12.9414 41.321 12.9414 42.8C12.9414 44.279 14.1385 45.4779 15.6152 45.4779Z\" fill=\"#E0E0E0\"/>\n <path d=\"M29.6113 45.4779C31.088 45.4779 32.2851 44.279 32.2851 42.8C32.2851 41.321 31.088 40.1221 29.6113 40.1221C28.1346 40.1221 26.9375 41.321 26.9375 42.8C26.9375 44.279 28.1346 45.4779 29.6113 45.4779Z\" fill=\"#E0E0E0\"/>\n </g>\n</svg>";
468
+ function O(e) {
476
469
  if (e === !1) return null;
477
470
  let t = document.createElement("div");
478
471
  if (t.className = "comimi-rabbit", e && "render" in e) return t.append(e.render()), t;
@@ -480,11 +473,11 @@ function D(e) {
480
473
  let n = document.createElement("img");
481
474
  return n.className = "comimi-rabbit-img", n.src = e.src, n.alt = e.alt ?? "", n.draggable = !1, t.append(n), t;
482
475
  }
483
- return t.innerHTML = se, t;
476
+ return t.innerHTML = oe, t;
484
477
  }
485
478
  //#endregion
486
479
  //#region src/components/inputs.ts
487
- var O = class {
480
+ var se = class {
488
481
  root;
489
482
  constructor(e) {
490
483
  this.root = document.createElement("button"), this.root.type = "button", this.root.className = "comimi-toggle-switch", this.root.dataset.checked = "false";
@@ -521,7 +514,7 @@ var O = class {
521
514
  let t = this.options.find((e) => String(e.value) === this.select.value);
522
515
  t && e(t.value);
523
516
  }), this.label = document.createElement("span"), this.label.className = "comimi-selectbox-label";
524
- let n = u("arrow");
517
+ let n = d("arrow");
525
518
  n.classList.add("comimi-selectbox-arrow"), this.root.append(t, this.select, this.label, n);
526
519
  }
527
520
  setOptions(e) {
@@ -601,19 +594,17 @@ var j = class {
601
594
  coverLabel;
602
595
  directionLabel;
603
596
  backgroundColorLabel;
604
- animationLabel;
605
597
  intervalLabel;
606
598
  localeSelect;
607
599
  coverToggle;
608
600
  directionSelect;
609
601
  backgroundColorSelect;
610
- animationToggle;
611
602
  intervalSlider;
612
603
  constructor(e, t) {
613
- this.callbacks = e, this.i18n = t, this.root = document.createElement("div"), this.root.className = "comimi-settings-panel", this.root.dataset.open = "false", this.root.setAttribute("role", "dialog"), this.root.addEventListener("click", (e) => e.stopPropagation()), this.body = document.createElement("div"), this.body.className = "comimi-settings-panel-body", this.inner = document.createElement("div"), this.inner.className = "comimi-settings-panel-inner", this.titleEl = document.createElement("div"), this.titleEl.className = "comimi-settings-panel-title", this.localeSelect = new k((e) => this.callbacks.updateSettings({ locale: String(e) })), this.coverToggle = new O((e) => this.callbacks.updateSettings({ hasCover: e })), this.directionSelect = new k((e) => this.callbacks.updateSettings({ readingDirection: e })), this.backgroundColorSelect = new k((e) => this.callbacks.updateSettings({ backgroundColor: e })), this.animationToggle = new O((e) => this.callbacks.updateSettings({ pageTurnAnimation: e })), this.intervalSlider = new ce((e) => this.callbacks.updateSettings({ autoPageTurnIntervalMs: Math.max(1, e) * 1e3 })), this.intervalSlider.setRange(3, 30, 1), this.localeLabel = this.createLabel(), this.coverLabel = this.createLabel(), this.directionLabel = this.createLabel(), this.backgroundColorLabel = this.createLabel(), this.animationLabel = this.createLabel(), this.intervalLabel = this.createLabel(), this.inner.append(this.titleEl, this.section(this.localeLabel, this.localeSelect.getElement()), this.section(this.coverLabel, this.coverToggle.getElement()), this.section(this.directionLabel, this.directionSelect.getElement()), this.section(this.animationLabel, this.animationToggle.getElement()), this.section(this.intervalLabel, this.intervalSlider.getElement()), this.section(this.backgroundColorLabel, this.backgroundColorSelect.getElement())), this.body.append(this.inner), this.root.append(this.body), A(this.body);
604
+ this.callbacks = e, this.i18n = t, this.root = document.createElement("div"), this.root.className = "comimi-settings-panel", this.root.dataset.open = "false", this.root.setAttribute("role", "dialog"), this.root.addEventListener("click", (e) => e.stopPropagation()), this.body = document.createElement("div"), this.body.className = "comimi-settings-panel-body", this.inner = document.createElement("div"), this.inner.className = "comimi-settings-panel-inner", this.titleEl = document.createElement("div"), this.titleEl.className = "comimi-settings-panel-title", this.localeSelect = new k((e) => this.callbacks.updateSettings({ locale: String(e) })), this.coverToggle = new se((e) => this.callbacks.updateSettings({ hasCover: e })), this.directionSelect = new k((e) => this.callbacks.updateSettings({ readingDirection: e })), this.backgroundColorSelect = new k((e) => this.callbacks.updateSettings({ backgroundColor: e })), this.intervalSlider = new ce((e) => this.callbacks.updateSettings({ autoPageTurnIntervalMs: Math.max(1, e) * 1e3 })), this.intervalSlider.setRange(3, 30, 1), this.localeLabel = this.createLabel(), this.coverLabel = this.createLabel(), this.directionLabel = this.createLabel(), this.backgroundColorLabel = this.createLabel(), this.intervalLabel = this.createLabel(), this.inner.append(this.titleEl, this.section(this.localeLabel, this.localeSelect.getElement()), this.section(this.coverLabel, this.coverToggle.getElement()), this.section(this.directionLabel, this.directionSelect.getElement()), this.section(this.intervalLabel, this.intervalSlider.getElement()), this.section(this.backgroundColorLabel, this.backgroundColorSelect.getElement())), this.body.append(this.inner), this.root.append(this.body), A(this.body);
614
605
  }
615
606
  update(e) {
616
- this.titleEl.textContent = this.i18n.t("settings.title"), this.localeLabel.textContent = "Language", this.coverLabel.textContent = this.i18n.t("settings.cover"), this.directionLabel.textContent = this.i18n.t("settings.direction"), this.backgroundColorLabel.textContent = this.i18n.t("settings.backgroundColor"), this.animationLabel.textContent = this.i18n.t("settings.animation"), this.intervalLabel.textContent = this.i18n.t("settings.interval"), this.localeSelect.setOptions([
607
+ this.titleEl.textContent = this.i18n.t("settings.title"), this.localeLabel.textContent = "Language", this.coverLabel.textContent = this.i18n.t("settings.cover"), this.directionLabel.textContent = this.i18n.t("settings.direction"), this.backgroundColorLabel.textContent = this.i18n.t("settings.backgroundColor"), this.intervalLabel.textContent = this.i18n.t("settings.interval"), this.localeSelect.setOptions([
617
608
  {
618
609
  label: "日本語",
619
610
  value: "ja"
@@ -650,7 +641,7 @@ var j = class {
650
641
  }, {
651
642
  label: this.i18n.t("settings.backgroundColor.black"),
652
643
  value: "black"
653
- }]), this.intervalSlider.setUnit(this.i18n.t("settings.interval.unit")), this.localeSelect.setValue(e.settings.locale), this.coverToggle.setChecked(e.settings.hasCover), this.directionSelect.setValue(e.settings.readingDirection), this.backgroundColorSelect.setValue(e.settings.backgroundColor), this.animationToggle.setChecked(e.settings.pageTurnAnimation), this.intervalSlider.setValue(Math.round(e.settings.autoPageTurnIntervalMs / 1e3)), this.root.dataset.open = String(e.panel === "settings"), this.scheduleHeightUpdate();
644
+ }]), this.intervalSlider.setUnit(this.i18n.t("settings.interval.unit")), this.localeSelect.setValue(e.settings.locale), this.coverToggle.setChecked(e.settings.hasCover), this.directionSelect.setValue(e.settings.readingDirection), this.backgroundColorSelect.setValue(e.settings.backgroundColor), this.intervalSlider.setValue(Math.round(e.settings.autoPageTurnIntervalMs / 1e3)), this.root.dataset.open = String(e.panel === "settings"), this.scheduleHeightUpdate();
654
645
  }
655
646
  getElement() {
656
647
  return this.root;
@@ -708,7 +699,7 @@ var j = class {
708
699
  this.callbacks = e, this.i18n = t, this.mascot = n, this.root = document.createElement("div"), this.root.className = "comimi-controls-dock", this.root.dataset.overlay = "false", this.root.dataset.autoplay = "false";
709
700
  let r = document.createElement("div");
710
701
  r.className = "comimi-controls-bg";
711
- let i = D(this.mascot), a = [r];
702
+ let i = O(this.mascot), a = [r];
712
703
  i && a.push(i), a.push(this.buildSeek(), this.buildRow()), this.root.append(...a);
713
704
  }
714
705
  getElement() {
@@ -748,7 +739,7 @@ var j = class {
748
739
  if (n === 0) return;
749
740
  let r = this.seekBar.getBoundingClientRect();
750
741
  if (r.width === 0) return;
751
- let i = Math.max(0, Math.min(r.width, e.clientX - r.left)), a = i / r.width, o = t.settings.readingDirection === "rtl" ? 1 - a : a, s = E(t, Math.min(n - 1, Math.max(0, Math.floor(o * n))), !1), c = s.map((e) => t.manga.pages[e]).filter((e) => !!e);
742
+ let i = Math.max(0, Math.min(r.width, e.clientX - r.left)), a = i / r.width, o = t.settings.readingDirection === "rtl" ? 1 - a : a, s = D(t, Math.min(n - 1, Math.max(0, Math.floor(o * n))), !1), c = s.map((e) => t.manga.pages[e]).filter((e) => !!e);
752
743
  this.refreshSeekPreviewThumbs(s, c);
753
744
  let l = [...s].sort((e, t) => e - t);
754
745
  this.seekPreviewLabel.textContent = l.length > 1 ? `${l[0] + 1} - ${l[l.length - 1] + 1}` : String(l[0] + 1), this.seekPreview.style.left = `${i}px`, this.seekPreview.dataset.show = "true";
@@ -780,9 +771,9 @@ var j = class {
780
771
  });
781
772
  let e = document.createElement("span");
782
773
  e.className = "comimi-autoplay-window", this.autoplaySlider = document.createElement("span"), this.autoplaySlider.className = "comimi-autoplay-slider", this.autoplaySlider.dataset.active = "false";
783
- let t = u("play");
774
+ let t = d("play");
784
775
  t.classList.add("comimi-autoplay-icon", "comimi-autoplay-icon-play");
785
- let n = u("pause");
776
+ let n = d("pause");
786
777
  return n.classList.add("comimi-autoplay-icon", "comimi-autoplay-icon-pause"), this.autoplaySlider.append(t, n), e.append(this.autoplaySlider), this.autoplayTooltip = document.createElement("span"), this.autoplayTooltip.className = "comimi-tooltip", this.autoplayButton.append(e, this.autoplayTooltip), this.autoplayContainer.append(this.autoplayButton), this.autoplayContainer;
787
778
  }
788
779
  buildSide() {
@@ -795,7 +786,7 @@ var j = class {
795
786
  n.type = "button", n.className = "comimi-page-mode-button comimi-has-tooltip", n.dataset.selected = "false", n.addEventListener("click", (t) => {
796
787
  t.stopPropagation(), this.callbacks.updateSettings({ pageTurnMode: e });
797
788
  });
798
- let r = u(t);
789
+ let r = d(t);
799
790
  r.classList.add("comimi-page-mode-icon");
800
791
  let i = document.createElement("span");
801
792
  return i.className = "comimi-tooltip", n.append(r, i), [
@@ -813,7 +804,7 @@ var j = class {
813
804
  let n = e.dataset.open === "true";
814
805
  this.callbacks.setPanel(n ? "none" : "settings");
815
806
  });
816
- let n = u("settings");
807
+ let n = d("settings");
817
808
  n.classList.add("comimi-settings-icon");
818
809
  let r = document.createElement("span");
819
810
  return r.className = "comimi-tooltip", t.append(n, r), e.append(t), [
@@ -850,7 +841,7 @@ var j = class {
850
841
  [this.titleEl, this.authorEl] = this.findTitleNodes(i), this.bottomEl = document.createElement("div"), this.bottomEl.className = "comimi-menu-bottom", this.bottomEl.style.height = "0px";
851
842
  let a = document.createElement("div");
852
843
  a.className = "comimi-menu-border", this.viewMenu = this.buildMenuView(), this.viewShortcut = this.buildShortcutView(), [this.viewPageList, this.pageListInner] = this.buildPageListView(), this.bottomEl.append(a, this.viewMenu, this.viewShortcut, this.viewPageList);
853
- let o = D(this.options.mascot), s = [r];
844
+ let o = O(this.options.mascot), s = [r];
854
845
  o && s.push(o), s.push(i, this.bottomEl), this.root.append(...s);
855
846
  }
856
847
  getElement() {
@@ -906,7 +897,7 @@ var j = class {
906
897
  let t = document.createElement("span");
907
898
  t.className = "comimi-menu-button";
908
899
  let n = document.createElement("span");
909
- n.className = "comimi-menu-button-inner", n.append(u("menu"), u("close")), t.append(n);
900
+ n.className = "comimi-menu-button-inner", n.append(d("menu"), d("close")), t.append(n);
910
901
  let r = document.createElement("span");
911
902
  r.className = "comimi-menu-title-wrap";
912
903
  let i = document.createElement("span");
@@ -933,7 +924,7 @@ var j = class {
933
924
  let r = document.createElement("span");
934
925
  r.className = "comimi-menu-link-text", this.bindI18nText(r, e);
935
926
  let i = document.createElement("span");
936
- return i.className = "comimi-menu-link-arrow", i.append(u("arrow")), n.append(r, i), n;
927
+ return i.className = "comimi-menu-link-arrow", i.append(d("arrow")), n.append(r, i), n;
937
928
  }
938
929
  buildShortcutView() {
939
930
  let e = document.createElement("div");
@@ -1001,7 +992,7 @@ var j = class {
1001
992
  let r = document.createElement("span");
1002
993
  r.className = "comimi-back-text", this.bindI18nText(r, "menu.back");
1003
994
  let i = document.createElement("span");
1004
- return i.className = "comimi-back-arrow", i.append(u("arrow")), t.append(n, r, i), e.append(t), e;
995
+ return i.className = "comimi-back-arrow", i.append(d("arrow")), t.append(n, r, i), e.append(t), e;
1005
996
  }
1006
997
  }, P = class {
1007
998
  callbacks;
@@ -1037,7 +1028,7 @@ var j = class {
1037
1028
  });
1038
1029
  let a = document.createElement("span");
1039
1030
  a.className = "comimi-view-switcher-icon-wrap";
1040
- let o = u(r);
1031
+ let o = d(r);
1041
1032
  o.classList.add("comimi-view-switcher-icon"), a.append(o);
1042
1033
  let s = document.createElement("span");
1043
1034
  return s.className = "comimi-view-switcher-label", s.textContent = t.t(n), i.append(a, s), this.root.append(i), {
@@ -1119,10 +1110,10 @@ var B = class {
1119
1110
  }) : this.root.style.transition = "";
1120
1111
  }
1121
1112
  update(e, t) {
1122
- let n = x(e, t), r = [];
1113
+ let n = S(e, t), r = [];
1123
1114
  for (let t of n) {
1124
1115
  let n = document.createElement("div");
1125
- n.className = "comimi-page-group", n.dataset.placement = t.placement, n.dataset.side = C(e, t.placement), n.style.transform = `translateX(${t.offset * 100}%)`;
1116
+ n.className = "comimi-page-group", n.dataset.placement = t.placement, n.dataset.side = w(e, t.placement), n.style.transform = `translateX(${t.offset * 100}%)`;
1126
1117
  let i = t.indexes.length > 1;
1127
1118
  for (let [r, a] of t.indexes.entries()) {
1128
1119
  let t = e.manga.pages[a];
@@ -1282,7 +1273,7 @@ function de({ className: e } = {}) {
1282
1273
  }
1283
1274
  //#endregion
1284
1275
  //#region src/components/arrow-buttons.styles.ts
1285
- var fe = "\n.comimi-arrows {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 30;\n}\n\n.comimi-arrow-button {\n position: absolute;\n top: 50%;\n width: 46px;\n height: 46px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n pointer-events: auto;\n transform: translateY(-50%);\n}\n\n.comimi-arrow-next {\n right: 24px;\n}\n\n.comimi-arrow-prev {\n left: 24px;\n}\n\n.comimi-arrow-inner {\n position: absolute;\n inset: 0;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-next .comimi-arrow-inner {\n transform: translateX(35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-prev .comimi-arrow-inner {\n transform: translateX(-35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] {\n pointer-events: none;\n}\n\n.comimi-arrow-bg {\n position: absolute;\n inset: 0;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-arrow-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n color: #666;\n transform: translate(-50%, -50%);\n pointer-events: none;\n}\n\n.comimi-arrow-prev .comimi-arrow-icon {\n transform: translate(-50%, -50%) scaleX(-1);\n}\n\n@keyframes comimi-arrow-bounce {\n from, to {\n transform: translate(-50%, -50%);\n }\n 40% {\n transform: translate(calc(-50% + 3px), -50%);\n }\n 70% {\n transform: translate(calc(-50% - 1.5px), -50%);\n }\n}\n\n@keyframes comimi-arrow-bounce-prev {\n from, to {\n transform: translate(-50%, -50%) scaleX(-1);\n }\n 40% {\n transform: translate(calc(-50% - 3px), -50%) scaleX(-1);\n }\n 70% {\n transform: translate(calc(-50% + 1.5px), -50%) scaleX(-1);\n }\n}\n\n@media (hover: hover) {\n .comimi-arrow-button:hover .comimi-arrow-bg {\n inset: -3px;\n border-radius: 20px;\n }\n\n .comimi-arrow-next:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce 0.5s ease-in-out 0.1s both;\n }\n\n .comimi-arrow-prev:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce-prev 0.5s ease-in-out 0.1s both;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-arrow-button {\n width: 36px;\n height: 50px;\n }\n\n .comimi-arrow-next {\n right: 0;\n }\n\n .comimi-arrow-prev {\n left: 0;\n }\n\n .comimi-arrow-next .comimi-arrow-bg {\n border-radius: 16px 0 0 16px;\n }\n\n .comimi-arrow-prev .comimi-arrow-bg {\n border-radius: 0 16px 16px 0;\n }\n}\n", pe = "\n.comimi-center-message {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n z-index: 20;\n transition: opacity 0.3s linear;\n}\n\n.comimi-center-message[data-overlay=\"false\"] {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.comimi-center-message-text {\n box-sizing: border-box;\n padding: 6px 12px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #bbb;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-center-message-mobile {\n display: none;\n}\n\n@media (max-width: 767px) {\n .comimi-center-message {\n width: calc(100% - 60px * 2);\n max-width: max-content;\n }\n\n .comimi-center-message-desktop {\n display: none;\n }\n\n .comimi-center-message-mobile {\n display: block;\n }\n}\n", me = "\n/* --- Controls dock (bottom) ------------------------------------------- */\n\n.comimi-controls-dock {\n box-sizing: border-box;\n position: absolute;\n bottom: 24px;\n left: 24px;\n width: calc(100% - 48px);\n padding: 20px 24px;\n z-index: 40;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-controls-dock[data-overlay=\"false\"] {\n transform: translateY(35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-controls-bg {\n position: absolute;\n inset: 0;\n border-radius: 20px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-controls-dock:hover > .comimi-controls-bg {\n inset: -4px -4px 0 -4px;\n border-radius: 20px;\n }\n}\n\n.comimi-controls-row {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n justify-content: space-between;\n align-items: center;\n}\n\n.comimi-controls-side {\n display: grid;\n grid-auto-flow: column;\n column-gap: 16px;\n justify-content: end;\n align-items: center;\n transition:\n opacity 0.2s ease-in-out,\n visibility 0.2s ease-in-out;\n}\n\n.comimi-controls-dock[data-autoplay=\"true\"] .comimi-controls-side {\n opacity: 0;\n visibility: hidden;\n}\n\n/* --- Seek bar --------------------------------------------------------- */\n\n.comimi-seek {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 10px;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.comimi-seek-text {\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: start;\n align-items: end;\n line-height: 14px;\n}\n\n.comimi-seek-current {\n color: #333;\n font-size: 12px;\n font-weight: 700;\n}\n\n.comimi-seek-total {\n color: #999;\n font-size: 12px;\n font-weight: 400;\n margin-left: 0.4em;\n}\n\n.comimi-seek-bar {\n position: relative;\n width: 100%;\n height: 18px;\n}\n\n.comimi-seek-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 8px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-seek-bar:hover .comimi-seek-track {\n height: 12px;\n }\n}\n\n.comimi-seek-fill {\n position: absolute;\n top: 0;\n height: 100%;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-seek-bar[data-direction=\"rtl\"] .comimi-seek-fill {\n right: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.comimi-seek-bar[data-direction=\"ltr\"] .comimi-seek-fill {\n left: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.comimi-seek-input {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 18px;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.comimi-seek-input::-webkit-slider-runnable-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -5px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input::-moz-range-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input:focus-visible {\n outline: none;\n}\n\n.comimi-seek-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input[data-direction=\"rtl\"] {\n direction: rtl;\n}\n\n/* --- Seek preview ---------------------------------------------------- */\n\n.comimi-seek-preview {\n position: absolute;\n bottom: 100%;\n left: 0;\n margin-bottom: 14px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n pointer-events: none;\n opacity: 0;\n transform: translateX(-50%);\n transition: opacity 0.16s linear;\n z-index: 5;\n}\n\n.comimi-seek-preview[data-show=\"true\"] {\n opacity: 1;\n}\n\n.comimi-seek-preview-thumbs {\n display: flex;\n flex-direction: row;\n gap: 4px;\n}\n\n.comimi-seek-preview-thumb {\n position: relative;\n width: 80px;\n aspect-ratio: 100 / 141;\n background: #fff;\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);\n}\n\n.comimi-seek-preview-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n user-select: none;\n -webkit-user-drag: none;\n}\n\n.comimi-seek-preview-thumb[data-kind=\"html\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n padding: 8px;\n color: #aaa;\n font-size: 11px;\n font-weight: 700;\n line-height: 1.4;\n text-align: center;\n}\n\n.comimi-seek-preview-label {\n color: #333;\n background: rgba(255, 255, 255, 0.5);\n backdrop-filter: blur(5px);\n box-shadow: var(--comimi-shadow);\n border-radius: 8px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 600;\n}\n\n@media (hover: none) {\n .comimi-seek-preview {\n display: none;\n }\n}\n\n/* --- Auto Play -------------------------------------------------------- */\n\n.comimi-autoplay {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n column-gap: 12px;\n justify-content: start;\n align-items: center;\n}\n\n.comimi-autoplay-button {\n position: relative;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-autoplay-window {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n overflow: hidden;\n transform: translate(-50%, -50%);\n}\n\n.comimi-autoplay-slider {\n position: absolute;\n top: 0;\n right: 0;\n width: 200%;\n height: 100%;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-autoplay-slider[data-active=\"true\"] {\n transform: translateX(50%);\n}\n\n.comimi-autoplay-icon {\n position: absolute;\n top: 0;\n width: 50%;\n height: 100%;\n display: block;\n}\n\n.comimi-autoplay-icon-play {\n right: 0;\n}\n\n.comimi-autoplay-icon-pause {\n left: 0;\n}\n\n.comimi-autoplay-progress {\n position: relative;\n width: 140px;\n height: 6px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n}\n\n.comimi-autoplay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n border-radius: 999px;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\n}\n\n/* --- Page Mode Toggle (single / spread) ------------------------------ */\n\n.comimi-page-mode {\n position: relative;\n width: 80px;\n height: 30px;\n}\n\n.comimi-page-mode-wrapper {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 80px;\n height: 30px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n background: #eeeeee;\n border-radius: 8px;\n transform: translate(-50%, -50%);\n transition: width 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-page-mode-wrapper:hover {\n width: 95px;\n }\n}\n\n.comimi-page-mode-button {\n position: relative;\n display: grid;\n place-content: center;\n width: 100%;\n height: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-page-mode-icon {\n display: block;\n width: 20px;\n opacity: 0.3;\n transform-origin: center bottom;\n transition: opacity 0.2s ease-in-out;\n}\n\n.comimi-page-mode-button[data-selected=\"true\"] .comimi-page-mode-icon {\n opacity: 1;\n}\n\n.comimi-page-mode-icon.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0s both;\n}\n\n/* --- Settings (button + popover panel) ------------------------------- */\n\n.comimi-settings {\n position: relative;\n width: 24px;\n height: 24px;\n}\n\n.comimi-settings-button {\n position: absolute;\n inset: 0;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-settings-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-settings[data-open=\"true\"] .comimi-settings-icon {\n transform: rotate(30deg);\n}\n\n@keyframes comimi-pop {\n from, to {\n transform: scale(1, 1);\n }\n 50% {\n transform: scale(0.95, 1.15);\n }\n 75% {\n transform: scale(1.15, 0.95);\n }\n}\n\n@keyframes comimi-autoplay-progress {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock {\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px 16px calc(20px + env(safe-area-inset-bottom, 0px));\n }\n\n .comimi-controls-bg {\n border-radius: 20px 20px 0 0;\n }\n}\n", he = "\n.comimi-error-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-error-icon-svg {\n width: 80px;\n}\n\n.comimi-error-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n animation: comimi-error-fall 0.8s ease-in-out 0s both;\n}\n\n.comimi-error-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-error-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-error-mimi-left {\n animation:\n comimi-error-mimi-left-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-left-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-mimi-right {\n animation:\n comimi-error-mimi-right-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-right-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-error-eye 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n@keyframes comimi-error-fall {\n from {\n opacity: 0;\n transform: translateY(-40%) rotate(10deg);\n }\n 20% {\n opacity: 1;\n }\n 40% {\n transform: translateY(0) rotate(0);\n }\n 60% {\n transform: translateY(0) scale(1.1, 0.95);\n }\n 80% {\n transform: translateY(0) scale(0.95, 1.1);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes comimi-error-mimi-left-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(20deg);\n }\n to {\n transform: rotate(10deg);\n }\n}\n\n@keyframes comimi-error-mimi-left-loop {\n from, to {\n transform: rotate(10deg);\n }\n 50% {\n transform: rotate(30deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(-20deg);\n }\n to {\n transform: rotate(-10deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-loop {\n from, to {\n transform: rotate(-10deg);\n }\n 50% {\n transform: rotate(-30deg);\n }\n}\n\n@keyframes comimi-error-eye {\n from, to {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(4px);\n }\n}\n", ge = "\n.comimi-icon {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-icon-fill {\n fill: currentColor;\n transition: fill .2s linear;\n}\n\n.comimi-icon-stroke {\n fill: none;\n stroke: currentColor;\n stroke-width: 1.6;\n transition: stroke .2s linear;\n}\n\n.comimi-menu-svg,\n.comimi-close-svg {\n display: block;\n position: relative;\n width: 34px;\n height: 34px;\n}\n\n.comimi-menu-svg span,\n.comimi-close-svg span {\n position: absolute;\n left: 50%;\n width: 17px;\n height: 3px;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-menu-svg span:nth-child(1) {\n top: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-menu-svg span:nth-child(2) {\n top: 50%;\n transform: translate(-50%, -50%);\n}\n\n.comimi-menu-svg span:nth-child(3) {\n bottom: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-close-svg span {\n top: 50%;\n}\n\n.comimi-close-svg span:nth-child(1) {\n transform: translate(-50%, -50%) rotate(45deg);\n}\n\n.comimi-close-svg span:nth-child(2) {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n", _e = "\n.comimi-selectbox {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n\n.comimi-selectbox-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-bg {\n inset: -3px;\n }\n}\n\n.comimi-selectbox-select {\n position: absolute;\n inset: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n color: transparent;\n font: inherit;\n cursor: pointer;\n opacity: 0;\n}\n\n.comimi-selectbox-select:disabled {\n cursor: not-allowed;\n}\n\n.comimi-selectbox-select option {\n color: #333;\n background-color: #fff;\n}\n\n.comimi-selectbox-label {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n padding: 8px 32px 8px 12px;\n color: #333;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n cursor: pointer;\n pointer-events: none;\n}\n\n.comimi-selectbox-arrow {\n position: absolute;\n top: 50%;\n right: 12px;\n z-index: 1;\n width: 16px;\n height: 16px;\n color: #aaa;\n transform: translateY(-50%) rotate(90deg);\n pointer-events: none;\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-arrow {\n animation: comimi-selectbox-arrow 0.5s ease-in-out 0s both;\n }\n}\n\n@keyframes comimi-selectbox-arrow {\n from, to {\n transform: translateY(-50%) rotate(90deg);\n }\n 40% {\n transform: translateY(calc(-50% + 3px)) rotate(90deg);\n }\n 70% {\n transform: translateY(calc(-50% - 1.5px)) rotate(90deg);\n }\n}\n\n.comimi-toggle-switch {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 6px;\n justify-content: start;\n align-items: center;\n width: 100%;\n padding: 2px;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-toggle-track {\n position: relative;\n width: 32px;\n height: 18px;\n border-radius: 999px;\n background: #eeeeee;\n transition: background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-track {\n background: #666;\n}\n\n.comimi-toggle-knob {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #666;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-knob {\n background: #fff;\n transform: translateX(100%);\n}\n\n.comimi-toggle-label-wrap {\n position: relative;\n width: 22px;\n height: 12px;\n overflow: hidden;\n}\n\n.comimi-toggle-label-inner {\n position: absolute;\n inset: 0;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-toggle-switch[data-checked=\"false\"] .comimi-toggle-label-inner {\n transform: translateX(-100%);\n}\n\n.comimi-toggle-label {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n font-size: 11px;\n font-weight: 400;\n line-height: 12px;\n text-align: center;\n}\n\n.comimi-toggle-label-on {\n color: #333;\n}\n\n.comimi-toggle-label-off {\n color: #aaa;\n transform: translateX(100%);\n}\n\n.comimi-range-slider {\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n}\n\n.comimi-range-slider[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\n.comimi-range-slider-wrap {\n position: relative;\n display: grid;\n align-items: center;\n min-width: 0;\n height: 18px;\n}\n\n.comimi-range-slider-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 6px;\n border-radius: 999px;\n background: #eeeeee;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-range-slider-wrap:hover .comimi-range-slider-track {\n height: 10px;\n }\n}\n\n.comimi-range-slider-fill {\n display: block;\n height: 100%;\n background: #666;\n border-radius: inherit;\n}\n\n.comimi-range-slider-input {\n position: relative;\n z-index: 1;\n width: 100%;\n height: 18px;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.comimi-range-slider-input::-webkit-slider-runnable-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -6px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-range-slider-input:hover:not(:disabled)::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input::-moz-range-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-range-slider-input:hover:not(:disabled)::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input:focus-visible {\n outline: none;\n}\n\n.comimi-range-slider-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-value {\n width: 36px;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1;\n text-align: right;\n white-space: nowrap;\n}\n", ve = "\n.comimi-loading-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-loading-icon-svg {\n width: 80px;\n}\n\n.comimi-loading-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n}\n\n.comimi-loading-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-loading-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-loading-mimi-left {\n animation:\n comimi-loading-mimi-left 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-left 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-mimi-right {\n animation:\n comimi-loading-mimi-right 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-right 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-eyes {\n transform: translateX(-7px);\n animation:\n comimi-loading-eyes-move 0.4s ease-in-out 1.2s both,\n comimi-loading-eyes-move 0.4s ease-in-out 2.6s reverse forwards;\n}\n\n.comimi-loading-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation:\n comimi-loading-eye 0.4s ease-in-out 0s forwards,\n comimi-loading-eye 0.4s ease-in-out 1.6s forwards;\n}\n\n.comimi-loading-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n.comimi-loading-icon-text span {\n display: inline-block;\n animation: comimi-loading-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-loading-icon-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-loading-icon-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-loading-icon-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-loading-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-loading-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-loading-eyes-move {\n from {\n transform: translateX(-7px);\n }\n to {\n transform: translateX(7px);\n }\n}\n\n@keyframes comimi-loading-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-loading-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n", ye = "\n.comimi-menu-panel {\n position: absolute;\n top: 24px;\n left: 24px;\n width: 420px;\n z-index: 45;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-menu-panel[data-overlay=\"false\"] {\n transform: translateY(-35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-menu-bg {\n position: absolute;\n inset: 0;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-menu-panel:hover > .comimi-menu-bg {\n inset: -5px;\n }\n}\n\n.comimi-menu-top {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 13px;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 62px;\n padding: 0 13px;\n border: 0;\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n.comimi-menu-button {\n position: relative;\n width: 34px;\n height: 34px;\n overflow: hidden;\n}\n\n.comimi-menu-button-inner {\n display: block;\n position: absolute;\n inset: 0;\n transition: transform 0.4s var(--comimi-spring);\n}\n\n.comimi-menu-panel[data-open=\"true\"] .comimi-menu-button-inner {\n transform: translateY(100%);\n}\n\n.comimi-menu-button-inner > * {\n position: absolute;\n inset: 0;\n}\n\n.comimi-menu-button-inner > *:nth-child(2) {\n transform: translateY(-100%);\n}\n\n.comimi-menu-title-wrap {\n min-width: 0;\n}\n\n.comimi-menu-title {\n display: block;\n width: 100%;\n color: #333;\n font-size: 15px;\n font-weight: 700;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-author {\n display: block;\n width: 100%;\n color: #666;\n font-size: 12px;\n font-weight: 400;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-bottom {\n position: relative;\n width: 100%;\n overflow: hidden;\n transition: height 0.24s ease-in-out;\n}\n\n.comimi-menu-border {\n width: 100%;\n height: 1px;\n background: #e0e0e0;\n}\n\n.comimi-menu-view {\n position: absolute;\n top: 1px;\n left: 0;\n width: 100%;\n transition: all 0.28s ease-in-out;\n opacity: 0;\n visibility: hidden;\n transform: scale(0.92);\n filter: blur(5px);\n}\n\n.comimi-menu-view-menu {\n position: relative;\n}\n\n.comimi-menu-panel[data-view=\"menu\"] .comimi-menu-view-menu,\n.comimi-menu-panel[data-view=\"shortcut\"] .comimi-menu-view-shortcut,\n.comimi-menu-panel[data-view=\"pageList\"] .comimi-menu-view-page-list {\n opacity: 1;\n visibility: visible;\n transform: scale(1);\n filter: blur(0);\n}\n\n.comimi-menu-list {\n position: relative;\n width: 100%;\n padding: 10px 0;\n}\n\n.comimi-menu-link {\n box-sizing: border-box;\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n padding: 10px 16px 10px 22px;\n border: 0;\n border-radius: 10px;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: background-color 0.24s linear;\n}\n\n.comimi-menu-link:hover {\n background: #f1f1f1;\n}\n\n.comimi-menu-link-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n text-align: left;\n}\n\n.comimi-menu-link-arrow {\n display: block;\n width: 20px;\n height: 20px;\n color: #aaa;\n}\n\n.comimi-menu-link-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-page-list-inner {\n box-sizing: border-box;\n padding: 0 22px;\n max-height: 315px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-page-list-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n}\n\n.comimi-page-list-item {\n display: grid;\n row-gap: 4px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n text-align: center;\n}\n\n.comimi-page-list-thumb {\n position: relative;\n display: block;\n width: 100%;\n aspect-ratio: 100 / 141;\n background: #fff;\n border-radius: 6px;\n outline: 3px solid #e0e0e0;\n}\n\n.comimi-page-list-thumb-html {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n padding: 8px;\n text-align: center;\n color: #aaa;\n font-size: 11px;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.comimi-page-list-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 4px;\n user-select: none;\n -webkit-user-drag: none;\n}\n\n.comimi-page-list-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n}\n\n.comimi-shortcut-inner {\n box-sizing: border-box;\n padding: 0 22px;\n max-height: 315px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-shortcut-grid {\n display: grid;\n row-gap: 22px;\n}\n\n.comimi-shortcut-section {\n display: grid;\n row-gap: 8px;\n}\n\n.comimi-shortcut-heading {\n color: #666;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n.comimi-shortcut-list {\n display: grid;\n row-gap: 8px;\n justify-items: start;\n}\n\n.comimi-shortcut-column {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n}\n\n.comimi-shortcut-item {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 8px;\n align-items: center;\n width: fit-content;\n}\n\n.comimi-shortcut-badge {\n display: grid;\n grid-auto-flow: column;\n column-gap: 6px;\n align-items: center;\n padding: 4px 8px;\n border-radius: 7px;\n background: #eeeeee;\n}\n\n.comimi-shortcut-key {\n color: #666;\n font-size: 13px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n.comimi-shortcut-or::before {\n content: \"or\";\n display: block;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1.45;\n}\n\n.comimi-shortcut-label {\n color: #666;\n font-size: 13px;\n font-weight: 400;\n line-height: 1.45;\n}\n\n.comimi-back-button {\n position: relative;\n width: 100%;\n height: 56px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-back-inner {\n position: absolute;\n inset: 8px;\n}\n\n.comimi-back-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-back-button:hover .comimi-back-bg {\n inset: -4px;\n border-radius: 10px;\n}\n\n.comimi-back-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n pointer-events: none;\n}\n\n.comimi-back-arrow {\n position: absolute;\n top: 50%;\n left: 8px;\n width: 22px;\n height: 22px;\n color: #aaa;\n transform: translateY(-50%) scaleX(-1);\n pointer-events: none;\n}\n\n.comimi-back-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n@media (max-width: 767px) {\n .comimi-menu-panel {\n top: 0;\n left: 0;\n width: 100%;\n }\n\n .comimi-menu-bg {\n border-radius: 0 0 16px 16px;\n }\n\n .comimi-menu-top {\n width: 100%;\n }\n\n .comimi-page-list-inner,\n .comimi-shortcut-inner {\n max-height: calc(var(--view-height, 100vh) - 62px - 56px);\n }\n}\n", be = "\n.comimi-notifications {\n position: absolute;\n bottom: 140px;\n left: 50%;\n transform: translateX(-50%);\n display: grid;\n row-gap: 8px;\n justify-items: center;\n pointer-events: none;\n z-index: 35;\n}\n\n.comimi-toast {\n display: grid;\n grid-template-columns: auto auto;\n gap: 5px;\n align-items: center;\n justify-content: center;\n width: fit-content;\n padding: 6px 13px 6px 8px;\n border-radius: 999px;\n background-color: #666;\n animation: comimi-toast-popup 0.37s ease-in-out 0s both;\n}\n\n.comimi-toast-dot {\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #888;\n}\n\n.comimi-toast-text {\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n@keyframes comimi-toast-popup {\n from {\n transform: translateY(6px) scale(0.2, 0.8);\n opacity: 0;\n }\n 60% {\n transform: translateY(-1px) scale(1.1, 1.05);\n opacity: 1;\n }\n to {\n transform: scale(1, 1);\n opacity: 1;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-notifications {\n bottom: calc(120px + env(safe-area-inset-bottom, 0px));\n }\n}\n", xe = "\n.comimi-stage {\n position: absolute;\n inset: 0;\n will-change: transform;\n transition: transform .18s ease;\n}\n\n.comimi-stage[data-dragging=\"true\"] {\n transition: none;\n}\n\n.comimi-page-group {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n box-sizing: border-box;\n}\n\n.comimi-page {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n min-width: 0;\n min-height: 0;\n background: transparent;\n overflow: hidden;\n flex: 0 0 auto;\n}\n\n.comimi-page[data-spread=\"true\"] {\n width: 50%;\n height: 100%;\n}\n\n.comimi-page[data-spread=\"false\"] {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] {\n justify-content: flex-end;\n}\n\n.comimi-page[data-position=\"right\"] {\n justify-content: flex-start;\n}\n\n.comimi-page img,\n.comimi-html-page {\n display: block;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center center;\n user-select: none;\n -webkit-user-select: none;\n -webkit-user-drag: none;\n -webkit-touch-callout: none;\n}\n\n.comimi-page img {\n pointer-events: none;\n}\n\n.comimi-page[data-spread=\"true\"] img,\n.comimi-page[data-spread=\"true\"] .comimi-html-page {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] img,\n.comimi-page[data-position=\"left\"] .comimi-html-page {\n object-position: right center;\n}\n\n.comimi-page[data-position=\"right\"] img,\n.comimi-page[data-position=\"right\"] .comimi-html-page {\n object-position: left center;\n}\n\n.comimi-html-page {\n width: min(100%, 960px);\n height: min(100%, 680px);\n background: #fff;\n color: #111;\n overflow: auto;\n}\n\n", Se = "\n.comimi-rabbit {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 50px;\n aspect-ratio: 1 / 1;\n z-index: 0;\n pointer-events: none;\n}\n\n.comimi-rabbit > * {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.comimi-controls-dock > .comimi-rabbit {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.comimi-menu-panel > .comimi-rabbit {\n top: 12px;\n right: 20px;\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock > .comimi-rabbit {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .comimi-menu-panel > .comimi-rabbit {\n display: none;\n }\n}\n", Ce = "\n.comimi-scrollfade {\n position: relative;\n overscroll-behavior: contain;\n}\n\n.comimi-scrollfade::before,\n.comimi-scrollfade::after {\n content: \"\";\n position: sticky;\n display: block;\n left: 0;\n width: 100%;\n height: 32px;\n z-index: 2;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.16s linear;\n}\n\n.comimi-scrollfade::before {\n top: 0;\n background: linear-gradient(to bottom, #fff, transparent);\n}\n\n.comimi-scrollfade::after {\n bottom: 0;\n background: linear-gradient(to top, #fff, transparent);\n}\n\n.comimi-scrollfade[data-scroll-up=\"true\"]::before {\n opacity: 1;\n}\n\n.comimi-scrollfade[data-scroll-down=\"true\"]::after {\n opacity: 1;\n}\n", we = "\n.comimi-settings-panel {\n position: absolute;\n top: 0;\n right: -16px;\n width: 250px;\n height: 0;\n border-radius: 20px;\n overflow: hidden;\n background: var(--comimi-glass-strong);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n opacity: 0;\n transform: translateY(calc(-100% - 8px));\n transition:\n height 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02),\n opacity 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02);\n z-index: 10;\n}\n\n.comimi-settings-panel[data-open=\"true\"] {\n opacity: 1;\n height: var(--comimi-settings-height, 460px);\n}\n\n.comimi-settings-panel-body {\n position: relative;\n width: 100%;\n max-height: calc(var(--view-height, 100vh) - 62px - 56px);\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-settings-panel-inner {\n box-sizing: border-box;\n position: relative;\n padding: 0 20px;\n}\n\n.comimi-settings-panel-title {\n color: #333;\n font-size: 14px;\n font-weight: 700;\n text-align: center;\n}\n\n.comimi-settings-section {\n display: grid;\n row-gap: 8px;\n margin-top: 18px;\n}\n\n.comimi-settings-label {\n color: #333;\n font-size: 12px;\n font-weight: 400;\n}\n\n", Te = "\n.comimi-splash {\n position: absolute;\n inset: 0;\n z-index: 100;\n background-color: #e0e0e0;\n overflow: hidden;\n animation: comimi-splash-clip 1s cubic-bezier(0.82, 0.01, 0.48, 1.02) 1s both;\n pointer-events: none;\n}\n\n.comimi-splash-logo-wrap {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -60%);\n width: 260px;\n aspect-ratio: 290 / 99;\n}\n\n.comimi-splash-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.72);\n width: 360px;\n aspect-ratio: 360 / 99;\n}\n\n.comimi-splash-symbol {\n position: absolute;\n top: 0;\n left: 0;\n width: 113px;\n display: block;\n transform-origin: center bottom;\n}\n\n.comimi-splash-logo-wrap-custom {\n width: 120px;\n aspect-ratio: 1 / 1;\n}\n\n.comimi-splash-logo-wrap-custom .comimi-splash-text {\n transform: translate(-50%, calc(100% + 16px));\n}\n\n.comimi-splash-custom-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n aspect-ratio: 1 / 1;\n}\n\n.comimi-splash-custom-logo > * {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.comimi-splash-typo-wrap {\n position: absolute;\n right: 7px;\n bottom: 11px;\n width: 229.5px;\n}\n\n.comimi-splash-typo {\n display: block;\n width: 100%;\n overflow: visible;\n}\n\n.comimi-splash-stroke {\n fill: none;\n stroke: #fff;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-splash-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-splash-mimi-left {\n animation: comimi-splash-mimi-left 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-mimi-right {\n animation: comimi-splash-mimi-right 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-eyes {\n transform: translateX(-7px);\n}\n\n.comimi-splash-eye {\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-splash-eye 0.4s ease-in-out 0.2s forwards;\n}\n\n.comimi-splash-heart {\n --size: 14px;\n position: absolute;\n top: -20px;\n width: var(--size);\n height: var(--size);\n}\n\n.comimi-splash-heart::before,\n.comimi-splash-heart::after {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 150%;\n border-radius: 999px;\n transform-origin: center bottom;\n}\n\n.comimi-splash-heart::before {\n transform: translateX(-32%) rotate(45deg);\n background-color: #eee;\n}\n\n.comimi-splash-heart::after {\n transform: translateX(32%) rotate(-45deg);\n background-color: #fff;\n}\n\n.comimi-splash-heart-1 {\n right: -2px;\n}\n\n.comimi-splash-heart-2 {\n right: 76px;\n}\n\n.comimi-splash-text {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 120%);\n color: #fff;\n font-size: 16px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-splash-text span {\n display: inline-block;\n animation: comimi-splash-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-splash-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-splash-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-splash-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-splash-clip {\n from {\n clip-path: circle(70%);\n }\n to {\n clip-path: circle(0%);\n }\n}\n\n@keyframes comimi-splash-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-splash-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-splash-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-splash-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n", Ee = "\n.comimi-tooltip {\n position: absolute;\n bottom: 0;\n left: 50%;\n padding: 6px 10px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #333;\n font-size: 12px;\n font-weight: 600;\n line-height: 1.45;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n opacity: 0;\n transform: translate(-50%, calc(100% + 6px)) scale(0.88);\n transform-origin: center top;\n transition:\n opacity 0.1s ease-in-out,\n transform 0.16s ease-in-out;\n z-index: 5;\n}\n\n@media (hover: hover) {\n .comimi-has-tooltip:hover > .comimi-tooltip {\n opacity: 1;\n transform: translate(-50%, calc(100% + 6px)) scale(1);\n }\n}\n", De = "\n.comimi-root {\n --comimi-bg: #fff;\n --comimi-surface: #f7f7f7;\n --comimi-surface-2: #eeeeee;\n --comimi-fg: #333;\n --comimi-muted: #666;\n --comimi-soft: #999;\n --comimi-line: #e0e0e0;\n --comimi-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n --comimi-glass: rgba(255, 255, 255, 0.8);\n --comimi-glass-strong: rgba(255, 255, 255, 0.8);\n --comimi-spring: cubic-bezier(0.34, 1.56, 0.64, 1);\n background: var(--comimi-bg);\n color: var(--comimi-fg);\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n width: calc(100% - 24px * 2);\n max-width: 900px;\n aspect-ratio: 900 / 636;\n margin: 0 auto;\n border-radius: 16px;\n box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.06);\n overflow: hidden;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n touch-action: none;\n transition:\n box-shadow 0.24s ease-out,\n background-color 0.16s linear;\n}\n\n.comimi-root:focus {\n outline: none;\n box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.14);\n}\n\n@media (max-width: 767px) {\n .comimi-root {\n max-width: 500px;\n aspect-ratio: 390 / 490;\n }\n}\n\n.comimi-root[data-bg=\"black\"] {\n --comimi-bg: #000;\n}\n\n.comimi-root[data-layout=\"wide\"] {\n width: 100%;\n max-width: none;\n aspect-ratio: auto;\n min-height: 320px;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n\n.comimi-root[data-layout=\"browserFullscreen\"],\n.comimi-root[data-layout=\"nativeFullscreen\"] {\n position: fixed;\n inset: 0;\n z-index: 999;\n width: 100vw;\n height: 100dvh;\n max-width: none;\n aspect-ratio: auto;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n\n.comimi-resize-handle {\n position: relative;\n width: 100%;\n height: 20px;\n background: #fff;\n cursor: ns-resize;\n touch-action: none;\n}\n\n.comimi-resize-handle::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 3px;\n border-radius: 999px;\n background: #bbb;\n transition:\n width 0.36s cubic-bezier(0.34, 1.56, 0.64, 1),\n height 0.36s cubic-bezier(0.34, 1.56, 0.64, 1),\n background-color 0.2s linear;\n}\n\n@media (hover: hover) {\n .comimi-resize-handle:hover::after {\n width: 52px;\n height: 5px;\n background: #888;\n }\n}\n\n", Oe = "\n.comimi-view-switcher {\n position: absolute;\n top: 20px;\n right: 20px;\n display: grid;\n grid-template-columns: repeat(3, 60px);\n width: 180px;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-view-switcher[data-overlay=\"false\"] {\n transform: translateY(-35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n@media (hover: hover) {\n .comimi-view-switcher:hover {\n transform: scaleX(1.03);\n }\n}\n\n.comimi-view-switcher-indicator {\n position: absolute;\n top: 0;\n left: 0;\n width: 60px;\n height: 100%;\n border-radius: 16px;\n background: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-view-switcher-button {\n position: relative;\n display: grid;\n row-gap: 5px;\n justify-items: center;\n align-content: center;\n height: 58px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: color 0.2s linear;\n}\n\n.comimi-view-switcher-button[data-selected=\"true\"] {\n color: #fff;\n}\n\n.comimi-view-switcher-icon-wrap {\n width: 20px;\n height: 20px;\n transform-origin: center bottom;\n}\n\n.comimi-view-switcher-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: currentColor;\n}\n\n.comimi-view-switcher-icon-wrap.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0.1s both;\n}\n\n.comimi-view-switcher-label {\n color: currentColor;\n font-size: 10px;\n font-weight: 500;\n text-align: center;\n transition: color 0.2s linear;\n}\n\n@media (max-width: 767px) {\n .comimi-view-switcher {\n top: 70px;\n right: auto;\n left: calc(50% - 90px);\n }\n}\n", q = !1, ke = [
1276
+ var fe = "\n.comimi-arrows {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 30;\n}\n\n.comimi-arrow-button {\n position: absolute;\n top: 50%;\n width: 46px;\n height: 46px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n pointer-events: auto;\n transform: translateY(-50%);\n}\n\n.comimi-arrow-next {\n right: 24px;\n}\n\n.comimi-arrow-prev {\n left: 24px;\n}\n\n.comimi-arrow-inner {\n position: absolute;\n inset: 0;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-next .comimi-arrow-inner,\n.comimi-arrows[data-autoplay=\"true\"] .comimi-arrow-next .comimi-arrow-inner {\n transform: translateX(35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-prev .comimi-arrow-inner,\n.comimi-arrows[data-autoplay=\"true\"] .comimi-arrow-prev .comimi-arrow-inner {\n transform: translateX(-35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"],\n.comimi-arrows[data-autoplay=\"true\"] {\n pointer-events: none;\n}\n\n.comimi-arrow-bg {\n position: absolute;\n inset: 0;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-arrow-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n color: #666;\n transform: translate(-50%, -50%);\n pointer-events: none;\n}\n\n.comimi-arrow-prev .comimi-arrow-icon {\n transform: translate(-50%, -50%) scaleX(-1);\n}\n\n@keyframes comimi-arrow-bounce {\n from, to {\n transform: translate(-50%, -50%);\n }\n 40% {\n transform: translate(calc(-50% + 3px), -50%);\n }\n 70% {\n transform: translate(calc(-50% - 1.5px), -50%);\n }\n}\n\n@keyframes comimi-arrow-bounce-prev {\n from, to {\n transform: translate(-50%, -50%) scaleX(-1);\n }\n 40% {\n transform: translate(calc(-50% - 3px), -50%) scaleX(-1);\n }\n 70% {\n transform: translate(calc(-50% + 1.5px), -50%) scaleX(-1);\n }\n}\n\n@media (hover: hover) {\n .comimi-arrow-button:hover .comimi-arrow-bg {\n inset: -3px;\n border-radius: 20px;\n }\n\n .comimi-arrow-next:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce 0.5s ease-in-out 0.1s both;\n }\n\n .comimi-arrow-prev:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce-prev 0.5s ease-in-out 0.1s both;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-arrow-button {\n width: 36px;\n height: 50px;\n }\n\n .comimi-arrow-next {\n right: 0;\n }\n\n .comimi-arrow-prev {\n left: 0;\n }\n\n .comimi-arrow-next .comimi-arrow-bg {\n border-radius: 16px 0 0 16px;\n }\n\n .comimi-arrow-prev .comimi-arrow-bg {\n border-radius: 0 16px 16px 0;\n }\n}\n", pe = "\n.comimi-center-message {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n z-index: 20;\n transition: opacity 0.3s linear;\n}\n\n.comimi-center-message[data-overlay=\"false\"] {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.comimi-center-message-text {\n box-sizing: border-box;\n padding: 6px 12px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #bbb;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-center-message-mobile {\n display: none;\n}\n\n@media (max-width: 767px) {\n .comimi-center-message {\n width: calc(100% - 60px * 2);\n max-width: max-content;\n }\n\n .comimi-center-message-desktop {\n display: none;\n }\n\n .comimi-center-message-mobile {\n display: block;\n }\n}\n", me = "\n/* --- Controls dock (bottom) ------------------------------------------- */\n\n.comimi-controls-dock {\n box-sizing: border-box;\n position: absolute;\n bottom: 24px;\n left: 24px;\n width: calc(100% - 48px);\n padding: 20px 24px;\n z-index: 40;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-controls-dock[data-overlay=\"false\"] {\n transform: translateY(35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-controls-bg {\n position: absolute;\n inset: 0;\n border-radius: 20px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-controls-dock:hover > .comimi-controls-bg {\n inset: -4px -4px 0 -4px;\n border-radius: 20px;\n }\n}\n\n.comimi-controls-row {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n justify-content: space-between;\n align-items: center;\n}\n\n.comimi-controls-side {\n display: grid;\n grid-auto-flow: column;\n column-gap: 16px;\n justify-content: end;\n align-items: center;\n transition:\n opacity 0.2s ease-in-out,\n visibility 0.2s ease-in-out;\n}\n\n.comimi-controls-dock[data-autoplay=\"true\"] .comimi-controls-side {\n opacity: 0;\n visibility: hidden;\n}\n\n/* --- Seek bar --------------------------------------------------------- */\n\n.comimi-seek {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 10px;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.comimi-seek-text {\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: start;\n align-items: end;\n line-height: 14px;\n}\n\n.comimi-seek-current {\n color: #333;\n font-size: 12px;\n font-weight: 700;\n}\n\n.comimi-seek-total {\n color: #999;\n font-size: 12px;\n font-weight: 400;\n margin-left: 0.4em;\n}\n\n.comimi-seek-bar {\n position: relative;\n width: 100%;\n height: 18px;\n}\n\n.comimi-seek-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 8px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-seek-bar:hover .comimi-seek-track {\n height: 12px;\n }\n}\n\n.comimi-seek-fill {\n position: absolute;\n top: 0;\n height: 100%;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-seek-bar[data-direction=\"rtl\"] .comimi-seek-fill {\n right: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.comimi-seek-bar[data-direction=\"ltr\"] .comimi-seek-fill {\n left: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.comimi-seek-input {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 18px;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.comimi-seek-input::-webkit-slider-runnable-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -5px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input::-moz-range-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input:focus-visible {\n outline: none;\n}\n\n.comimi-seek-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input[data-direction=\"rtl\"] {\n direction: rtl;\n}\n\n/* --- Seek preview ---------------------------------------------------- */\n\n.comimi-seek-preview {\n position: absolute;\n bottom: 100%;\n left: 0;\n margin-bottom: 14px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n pointer-events: none;\n opacity: 0;\n transform: translateX(-50%);\n transition: opacity 0.16s linear;\n z-index: 5;\n}\n\n.comimi-seek-preview[data-show=\"true\"] {\n opacity: 1;\n}\n\n.comimi-seek-preview-thumbs {\n display: flex;\n flex-direction: row;\n gap: 4px;\n}\n\n.comimi-seek-preview-thumb {\n position: relative;\n width: 80px;\n aspect-ratio: 100 / 141;\n background: #fff;\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);\n}\n\n.comimi-seek-preview-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n user-select: none;\n -webkit-user-drag: none;\n}\n\n.comimi-seek-preview-thumb[data-kind=\"html\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n padding: 8px;\n color: #aaa;\n font-size: 11px;\n font-weight: 700;\n line-height: 1.4;\n text-align: center;\n}\n\n.comimi-seek-preview-label {\n color: #333;\n background: rgba(255, 255, 255, 0.5);\n backdrop-filter: blur(5px);\n box-shadow: var(--comimi-shadow);\n border-radius: 8px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 600;\n}\n\n@media (hover: none) {\n .comimi-seek-preview {\n display: none;\n }\n}\n\n/* --- Auto Play -------------------------------------------------------- */\n\n.comimi-autoplay {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n column-gap: 12px;\n justify-content: start;\n align-items: center;\n}\n\n.comimi-autoplay-button {\n position: relative;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-autoplay-window {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n overflow: hidden;\n transform: translate(-50%, -50%);\n}\n\n.comimi-autoplay-slider {\n position: absolute;\n top: 0;\n right: 0;\n width: 200%;\n height: 100%;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-autoplay-slider[data-active=\"true\"] {\n transform: translateX(50%);\n}\n\n.comimi-autoplay-icon {\n position: absolute;\n top: 0;\n width: 50%;\n height: 100%;\n display: block;\n}\n\n.comimi-autoplay-icon-play {\n right: 0;\n}\n\n.comimi-autoplay-icon-pause {\n left: 0;\n}\n\n.comimi-autoplay-progress {\n position: relative;\n width: 140px;\n height: 6px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n}\n\n.comimi-autoplay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n border-radius: 999px;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\n}\n\n/* --- Page Mode Toggle (single / spread) ------------------------------ */\n\n.comimi-page-mode {\n position: relative;\n width: 80px;\n height: 30px;\n}\n\n.comimi-page-mode-wrapper {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 80px;\n height: 30px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n background: #eeeeee;\n border-radius: 8px;\n transform: translate(-50%, -50%);\n transition: width 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-page-mode-wrapper:hover {\n width: 95px;\n }\n}\n\n.comimi-page-mode-button {\n position: relative;\n display: grid;\n place-content: center;\n width: 100%;\n height: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-page-mode-icon {\n display: block;\n width: 20px;\n opacity: 0.3;\n transform-origin: center bottom;\n transition: opacity 0.2s ease-in-out;\n}\n\n.comimi-page-mode-button[data-selected=\"true\"] .comimi-page-mode-icon {\n opacity: 1;\n}\n\n.comimi-page-mode-icon.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0s both;\n}\n\n/* --- Settings (button + popover panel) ------------------------------- */\n\n.comimi-settings {\n position: relative;\n width: 24px;\n height: 24px;\n}\n\n.comimi-settings-button {\n position: absolute;\n inset: 0;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-settings-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-settings[data-open=\"true\"] .comimi-settings-icon {\n transform: rotate(30deg);\n}\n\n@keyframes comimi-pop {\n from, to {\n transform: scale(1, 1);\n }\n 50% {\n transform: scale(0.95, 1.15);\n }\n 75% {\n transform: scale(1.15, 0.95);\n }\n}\n\n@keyframes comimi-autoplay-progress {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n/* --- Autoplay progress shown outside the dock (overlay closed) -------- */\n\n.comimi-autoplay-overlay-progress {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 3px;\n z-index: 50;\n pointer-events: none;\n overflow: hidden;\n background: rgba(0, 0, 0, 0.06);\n opacity: 0;\n transition: opacity 0.16s linear;\n}\n\n.comimi-autoplay-overlay-progress[data-visible=\"true\"] {\n opacity: 1;\n}\n\n.comimi-autoplay-overlay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock {\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px 16px calc(20px + env(safe-area-inset-bottom, 0px));\n }\n\n .comimi-controls-bg {\n border-radius: 20px 20px 0 0;\n }\n}\n", he = "\n.comimi-error-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-error-icon-svg {\n width: 80px;\n}\n\n.comimi-error-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n animation: comimi-error-fall 0.8s ease-in-out 0s both;\n}\n\n.comimi-error-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-error-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-error-mimi-left {\n animation:\n comimi-error-mimi-left-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-left-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-mimi-right {\n animation:\n comimi-error-mimi-right-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-right-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-error-eye 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n@keyframes comimi-error-fall {\n from {\n opacity: 0;\n transform: translateY(-40%) rotate(10deg);\n }\n 20% {\n opacity: 1;\n }\n 40% {\n transform: translateY(0) rotate(0);\n }\n 60% {\n transform: translateY(0) scale(1.1, 0.95);\n }\n 80% {\n transform: translateY(0) scale(0.95, 1.1);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes comimi-error-mimi-left-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(20deg);\n }\n to {\n transform: rotate(10deg);\n }\n}\n\n@keyframes comimi-error-mimi-left-loop {\n from, to {\n transform: rotate(10deg);\n }\n 50% {\n transform: rotate(30deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(-20deg);\n }\n to {\n transform: rotate(-10deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-loop {\n from, to {\n transform: rotate(-10deg);\n }\n 50% {\n transform: rotate(-30deg);\n }\n}\n\n@keyframes comimi-error-eye {\n from, to {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(4px);\n }\n}\n", ge = "\n.comimi-icon {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-icon-fill {\n fill: currentColor;\n transition: fill .2s linear;\n}\n\n.comimi-icon-stroke {\n fill: none;\n stroke: currentColor;\n stroke-width: 1.6;\n transition: stroke .2s linear;\n}\n\n.comimi-menu-svg,\n.comimi-close-svg {\n display: block;\n position: relative;\n width: 34px;\n height: 34px;\n}\n\n.comimi-menu-svg span,\n.comimi-close-svg span {\n position: absolute;\n left: 50%;\n width: 17px;\n height: 3px;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-menu-svg span:nth-child(1) {\n top: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-menu-svg span:nth-child(2) {\n top: 50%;\n transform: translate(-50%, -50%);\n}\n\n.comimi-menu-svg span:nth-child(3) {\n bottom: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-close-svg span {\n top: 50%;\n}\n\n.comimi-close-svg span:nth-child(1) {\n transform: translate(-50%, -50%) rotate(45deg);\n}\n\n.comimi-close-svg span:nth-child(2) {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n", _e = "\n.comimi-selectbox {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n\n.comimi-selectbox-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-bg {\n inset: -3px;\n }\n}\n\n.comimi-selectbox-select {\n position: absolute;\n inset: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n color: transparent;\n font: inherit;\n cursor: pointer;\n opacity: 0;\n}\n\n.comimi-selectbox-select:disabled {\n cursor: not-allowed;\n}\n\n.comimi-selectbox-select option {\n color: #333;\n background-color: #fff;\n}\n\n.comimi-selectbox-label {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n padding: 8px 32px 8px 12px;\n color: #333;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n cursor: pointer;\n pointer-events: none;\n}\n\n.comimi-selectbox-arrow {\n position: absolute;\n top: 50%;\n right: 12px;\n z-index: 1;\n width: 16px;\n height: 16px;\n color: #aaa;\n transform: translateY(-50%) rotate(90deg);\n pointer-events: none;\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-arrow {\n animation: comimi-selectbox-arrow 0.5s ease-in-out 0s both;\n }\n}\n\n@keyframes comimi-selectbox-arrow {\n from, to {\n transform: translateY(-50%) rotate(90deg);\n }\n 40% {\n transform: translateY(calc(-50% + 3px)) rotate(90deg);\n }\n 70% {\n transform: translateY(calc(-50% - 1.5px)) rotate(90deg);\n }\n}\n\n.comimi-toggle-switch {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 6px;\n justify-content: start;\n align-items: center;\n width: 100%;\n padding: 2px;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-toggle-track {\n position: relative;\n width: 32px;\n height: 18px;\n border-radius: 999px;\n background: #eeeeee;\n transition: background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-track {\n background: #666;\n}\n\n.comimi-toggle-knob {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #666;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-knob {\n background: #fff;\n transform: translateX(100%);\n}\n\n.comimi-toggle-label-wrap {\n position: relative;\n width: 22px;\n height: 12px;\n overflow: hidden;\n}\n\n.comimi-toggle-label-inner {\n position: absolute;\n inset: 0;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-toggle-switch[data-checked=\"false\"] .comimi-toggle-label-inner {\n transform: translateX(-100%);\n}\n\n.comimi-toggle-label {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n font-size: 11px;\n font-weight: 400;\n line-height: 12px;\n text-align: center;\n}\n\n.comimi-toggle-label-on {\n color: #333;\n}\n\n.comimi-toggle-label-off {\n color: #aaa;\n transform: translateX(100%);\n}\n\n.comimi-range-slider {\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n}\n\n.comimi-range-slider[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\n.comimi-range-slider-wrap {\n position: relative;\n display: grid;\n align-items: center;\n min-width: 0;\n height: 18px;\n}\n\n.comimi-range-slider-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 6px;\n border-radius: 999px;\n background: #eeeeee;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-range-slider-wrap:hover .comimi-range-slider-track {\n height: 10px;\n }\n}\n\n.comimi-range-slider-fill {\n display: block;\n height: 100%;\n background: #666;\n border-radius: inherit;\n}\n\n.comimi-range-slider-input {\n position: relative;\n z-index: 1;\n width: 100%;\n height: 18px;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.comimi-range-slider-input::-webkit-slider-runnable-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -6px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-range-slider-input:hover:not(:disabled)::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input::-moz-range-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-range-slider-input:hover:not(:disabled)::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input:focus-visible {\n outline: none;\n}\n\n.comimi-range-slider-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-value {\n width: 36px;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1;\n text-align: right;\n white-space: nowrap;\n}\n", ve = "\n.comimi-loading-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-loading-icon-svg {\n width: 80px;\n}\n\n.comimi-loading-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n}\n\n.comimi-loading-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-loading-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-loading-mimi-left {\n animation:\n comimi-loading-mimi-left 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-left 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-mimi-right {\n animation:\n comimi-loading-mimi-right 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-right 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-eyes {\n transform: translateX(-7px);\n animation:\n comimi-loading-eyes-move 0.4s ease-in-out 1.2s both,\n comimi-loading-eyes-move 0.4s ease-in-out 2.6s reverse forwards;\n}\n\n.comimi-loading-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation:\n comimi-loading-eye 0.4s ease-in-out 0s forwards,\n comimi-loading-eye 0.4s ease-in-out 1.6s forwards;\n}\n\n.comimi-loading-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n.comimi-loading-icon-text span {\n display: inline-block;\n animation: comimi-loading-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-loading-icon-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-loading-icon-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-loading-icon-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-loading-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-loading-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-loading-eyes-move {\n from {\n transform: translateX(-7px);\n }\n to {\n transform: translateX(7px);\n }\n}\n\n@keyframes comimi-loading-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-loading-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n", ye = "\n.comimi-menu-panel {\n position: absolute;\n top: 24px;\n left: 24px;\n width: 420px;\n z-index: 45;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-menu-panel[data-overlay=\"false\"] {\n transform: translateY(-35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-menu-bg {\n position: absolute;\n inset: 0;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-menu-panel:hover > .comimi-menu-bg {\n inset: -5px;\n }\n}\n\n.comimi-menu-top {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 13px;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 62px;\n padding: 0 13px;\n border: 0;\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n.comimi-menu-button {\n position: relative;\n width: 34px;\n height: 34px;\n overflow: hidden;\n}\n\n.comimi-menu-button-inner {\n display: block;\n position: absolute;\n inset: 0;\n transition: transform 0.4s var(--comimi-spring);\n}\n\n.comimi-menu-panel[data-open=\"true\"] .comimi-menu-button-inner {\n transform: translateY(100%);\n}\n\n.comimi-menu-button-inner > * {\n position: absolute;\n inset: 0;\n}\n\n.comimi-menu-button-inner > *:nth-child(2) {\n transform: translateY(-100%);\n}\n\n.comimi-menu-title-wrap {\n min-width: 0;\n}\n\n.comimi-menu-title {\n display: block;\n width: 100%;\n color: #333;\n font-size: 15px;\n font-weight: 700;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-author {\n display: block;\n width: 100%;\n color: #666;\n font-size: 12px;\n font-weight: 400;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-bottom {\n position: relative;\n width: 100%;\n overflow: hidden;\n transition: height 0.24s ease-in-out;\n}\n\n.comimi-menu-border {\n width: 100%;\n height: 1px;\n background: #e0e0e0;\n}\n\n.comimi-menu-view {\n position: absolute;\n top: 1px;\n left: 0;\n width: 100%;\n transition: all 0.28s ease-in-out;\n opacity: 0;\n visibility: hidden;\n transform: scale(0.92);\n filter: blur(5px);\n}\n\n.comimi-menu-view-menu {\n position: relative;\n}\n\n.comimi-menu-panel[data-view=\"menu\"] .comimi-menu-view-menu,\n.comimi-menu-panel[data-view=\"shortcut\"] .comimi-menu-view-shortcut,\n.comimi-menu-panel[data-view=\"pageList\"] .comimi-menu-view-page-list {\n opacity: 1;\n visibility: visible;\n transform: scale(1);\n filter: blur(0);\n}\n\n.comimi-menu-list {\n position: relative;\n width: 100%;\n padding: 10px 0;\n}\n\n.comimi-menu-link {\n box-sizing: border-box;\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n padding: 10px 16px 10px 22px;\n border: 0;\n border-radius: 10px;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: background-color 0.24s linear;\n}\n\n.comimi-menu-link:hover {\n background: #f1f1f1;\n}\n\n.comimi-menu-link-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n text-align: left;\n}\n\n.comimi-menu-link-arrow {\n display: block;\n width: 20px;\n height: 20px;\n color: #aaa;\n}\n\n.comimi-menu-link-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-page-list-inner {\n box-sizing: border-box;\n padding: 0 22px;\n max-height: 315px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-page-list-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n}\n\n.comimi-page-list-item {\n display: grid;\n row-gap: 4px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n text-align: center;\n}\n\n.comimi-page-list-thumb {\n position: relative;\n display: block;\n width: 100%;\n aspect-ratio: 100 / 141;\n background: #fff;\n border-radius: 6px;\n outline: 3px solid #e0e0e0;\n}\n\n.comimi-page-list-thumb-html {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n padding: 8px;\n text-align: center;\n color: #aaa;\n font-size: 11px;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.comimi-page-list-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 4px;\n user-select: none;\n -webkit-user-drag: none;\n}\n\n.comimi-page-list-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n}\n\n.comimi-shortcut-inner {\n box-sizing: border-box;\n padding: 0 22px;\n max-height: 315px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-shortcut-grid {\n display: grid;\n row-gap: 22px;\n}\n\n.comimi-shortcut-section {\n display: grid;\n row-gap: 8px;\n}\n\n.comimi-shortcut-heading {\n color: #666;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n.comimi-shortcut-list {\n display: grid;\n row-gap: 8px;\n justify-items: start;\n}\n\n.comimi-shortcut-column {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n}\n\n.comimi-shortcut-item {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 8px;\n align-items: center;\n width: fit-content;\n}\n\n.comimi-shortcut-badge {\n display: grid;\n grid-auto-flow: column;\n column-gap: 6px;\n align-items: center;\n padding: 4px 8px;\n border-radius: 7px;\n background: #eeeeee;\n}\n\n.comimi-shortcut-key {\n color: #666;\n font-size: 13px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n.comimi-shortcut-or::before {\n content: \"or\";\n display: block;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1.45;\n}\n\n.comimi-shortcut-label {\n color: #666;\n font-size: 13px;\n font-weight: 400;\n line-height: 1.45;\n}\n\n.comimi-back-button {\n position: relative;\n width: 100%;\n height: 56px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-back-inner {\n position: absolute;\n inset: 8px;\n}\n\n.comimi-back-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-back-button:hover .comimi-back-bg {\n inset: -4px;\n border-radius: 10px;\n}\n\n.comimi-back-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n pointer-events: none;\n}\n\n.comimi-back-arrow {\n position: absolute;\n top: 50%;\n left: 8px;\n width: 22px;\n height: 22px;\n color: #aaa;\n transform: translateY(-50%) scaleX(-1);\n pointer-events: none;\n}\n\n.comimi-back-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n@media (max-width: 767px) {\n .comimi-menu-panel {\n top: 0;\n left: 0;\n width: 100%;\n }\n\n .comimi-menu-bg {\n border-radius: 0 0 16px 16px;\n }\n\n .comimi-menu-top {\n width: 100%;\n }\n\n .comimi-page-list-inner,\n .comimi-shortcut-inner {\n max-height: calc(var(--view-height, 100vh) - 62px - 56px);\n }\n}\n", be = "\n.comimi-notifications {\n position: absolute;\n bottom: 140px;\n left: 50%;\n transform: translateX(-50%);\n display: grid;\n row-gap: 8px;\n justify-items: center;\n pointer-events: none;\n z-index: 35;\n}\n\n.comimi-toast {\n display: grid;\n grid-template-columns: auto auto;\n gap: 5px;\n align-items: center;\n justify-content: center;\n width: fit-content;\n padding: 6px 13px 6px 8px;\n border-radius: 999px;\n background-color: #666;\n animation: comimi-toast-popup 0.37s ease-in-out 0s both;\n}\n\n.comimi-toast-dot {\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #888;\n}\n\n.comimi-toast-text {\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n@keyframes comimi-toast-popup {\n from {\n transform: translateY(6px) scale(0.2, 0.8);\n opacity: 0;\n }\n 60% {\n transform: translateY(-1px) scale(1.1, 1.05);\n opacity: 1;\n }\n to {\n transform: scale(1, 1);\n opacity: 1;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-notifications {\n bottom: calc(120px + env(safe-area-inset-bottom, 0px));\n }\n}\n", xe = "\n.comimi-stage {\n position: absolute;\n inset: 0;\n will-change: transform;\n transition: transform .18s ease;\n}\n\n.comimi-stage[data-dragging=\"true\"] {\n transition: none;\n}\n\n.comimi-page-group {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n box-sizing: border-box;\n}\n\n.comimi-page {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n min-width: 0;\n min-height: 0;\n background: transparent;\n overflow: hidden;\n flex: 0 0 auto;\n}\n\n.comimi-page[data-spread=\"true\"] {\n width: 50%;\n height: 100%;\n}\n\n.comimi-page[data-spread=\"false\"] {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] {\n justify-content: flex-end;\n}\n\n.comimi-page[data-position=\"right\"] {\n justify-content: flex-start;\n}\n\n.comimi-page img,\n.comimi-html-page {\n display: block;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center center;\n user-select: none;\n -webkit-user-select: none;\n -webkit-user-drag: none;\n -webkit-touch-callout: none;\n}\n\n.comimi-page img {\n pointer-events: none;\n}\n\n.comimi-page[data-spread=\"true\"] img,\n.comimi-page[data-spread=\"true\"] .comimi-html-page {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] img,\n.comimi-page[data-position=\"left\"] .comimi-html-page {\n object-position: right center;\n}\n\n.comimi-page[data-position=\"right\"] img,\n.comimi-page[data-position=\"right\"] .comimi-html-page {\n object-position: left center;\n}\n\n.comimi-html-page {\n width: min(100%, 960px);\n height: min(100%, 680px);\n background: #fff;\n color: #111;\n overflow: auto;\n}\n\n", Se = "\n.comimi-rabbit {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 50px;\n aspect-ratio: 1 / 1;\n z-index: 0;\n pointer-events: none;\n}\n\n.comimi-rabbit > * {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.comimi-controls-dock > .comimi-rabbit {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.comimi-menu-panel > .comimi-rabbit {\n top: 12px;\n right: 20px;\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock > .comimi-rabbit {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .comimi-menu-panel > .comimi-rabbit {\n display: none;\n }\n}\n", Ce = "\n.comimi-scrollfade {\n position: relative;\n overscroll-behavior: contain;\n}\n\n.comimi-scrollfade::before,\n.comimi-scrollfade::after {\n content: \"\";\n position: sticky;\n display: block;\n left: 0;\n width: 100%;\n height: 32px;\n z-index: 2;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.16s linear;\n}\n\n.comimi-scrollfade::before {\n top: 0;\n background: linear-gradient(to bottom, #fff, transparent);\n}\n\n.comimi-scrollfade::after {\n bottom: 0;\n background: linear-gradient(to top, #fff, transparent);\n}\n\n.comimi-scrollfade[data-scroll-up=\"true\"]::before {\n opacity: 1;\n}\n\n.comimi-scrollfade[data-scroll-down=\"true\"]::after {\n opacity: 1;\n}\n", we = "\n.comimi-settings-panel {\n position: absolute;\n top: 0;\n right: -16px;\n width: 250px;\n height: 0;\n border-radius: 20px;\n overflow: hidden;\n background: var(--comimi-glass-strong);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n opacity: 0;\n transform: translateY(calc(-100% - 8px));\n transition:\n height 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02),\n opacity 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02);\n z-index: 10;\n}\n\n.comimi-settings-panel[data-open=\"true\"] {\n opacity: 1;\n height: var(--comimi-settings-height, 460px);\n}\n\n.comimi-settings-panel-body {\n position: relative;\n width: 100%;\n max-height: calc(var(--view-height, 100vh) - 62px - 56px);\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-settings-panel-inner {\n box-sizing: border-box;\n position: relative;\n padding: 0 20px;\n}\n\n.comimi-settings-panel-title {\n color: #333;\n font-size: 14px;\n font-weight: 700;\n text-align: center;\n}\n\n.comimi-settings-section {\n display: grid;\n row-gap: 8px;\n margin-top: 18px;\n}\n\n.comimi-settings-label {\n color: #333;\n font-size: 12px;\n font-weight: 400;\n}\n\n", Te = "\n.comimi-splash {\n position: absolute;\n inset: 0;\n z-index: 100;\n background-color: #e0e0e0;\n overflow: hidden;\n animation: comimi-splash-clip 1s cubic-bezier(0.82, 0.01, 0.48, 1.02) 1s both;\n pointer-events: none;\n}\n\n.comimi-splash-logo-wrap {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -60%);\n width: 260px;\n aspect-ratio: 290 / 99;\n}\n\n.comimi-splash-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.72);\n width: 360px;\n aspect-ratio: 360 / 99;\n}\n\n.comimi-splash-symbol {\n position: absolute;\n top: 0;\n left: 0;\n width: 113px;\n display: block;\n transform-origin: center bottom;\n}\n\n.comimi-splash-logo-wrap-custom {\n width: 120px;\n aspect-ratio: 1 / 1;\n}\n\n.comimi-splash-logo-wrap-custom .comimi-splash-text {\n transform: translate(-50%, calc(100% + 16px));\n}\n\n.comimi-splash-custom-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n aspect-ratio: 1 / 1;\n}\n\n.comimi-splash-custom-logo > * {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.comimi-splash-typo-wrap {\n position: absolute;\n right: 7px;\n bottom: 11px;\n width: 229.5px;\n}\n\n.comimi-splash-typo {\n display: block;\n width: 100%;\n overflow: visible;\n}\n\n.comimi-splash-stroke {\n fill: none;\n stroke: #fff;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-splash-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-splash-mimi-left {\n animation: comimi-splash-mimi-left 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-mimi-right {\n animation: comimi-splash-mimi-right 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-eyes {\n transform: translateX(-7px);\n}\n\n.comimi-splash-eye {\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-splash-eye 0.4s ease-in-out 0.2s forwards;\n}\n\n.comimi-splash-heart {\n --size: 14px;\n position: absolute;\n top: -20px;\n width: var(--size);\n height: var(--size);\n}\n\n.comimi-splash-heart::before,\n.comimi-splash-heart::after {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 150%;\n border-radius: 999px;\n transform-origin: center bottom;\n}\n\n.comimi-splash-heart::before {\n transform: translateX(-32%) rotate(45deg);\n background-color: #eee;\n}\n\n.comimi-splash-heart::after {\n transform: translateX(32%) rotate(-45deg);\n background-color: #fff;\n}\n\n.comimi-splash-heart-1 {\n right: -2px;\n}\n\n.comimi-splash-heart-2 {\n right: 76px;\n}\n\n.comimi-splash-text {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 120%);\n color: #fff;\n font-size: 16px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-splash-text span {\n display: inline-block;\n animation: comimi-splash-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-splash-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-splash-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-splash-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-splash-clip {\n from {\n clip-path: circle(70%);\n }\n to {\n clip-path: circle(0%);\n }\n}\n\n@keyframes comimi-splash-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-splash-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-splash-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-splash-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n", Ee = "\n.comimi-tooltip {\n position: absolute;\n bottom: 0;\n left: 50%;\n padding: 6px 10px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #333;\n font-size: 12px;\n font-weight: 600;\n line-height: 1.45;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n opacity: 0;\n transform: translate(-50%, calc(100% + 6px)) scale(0.88);\n transform-origin: center top;\n transition:\n opacity 0.1s ease-in-out,\n transform 0.16s ease-in-out;\n z-index: 5;\n}\n\n@media (hover: hover) {\n .comimi-has-tooltip:hover > .comimi-tooltip {\n opacity: 1;\n transform: translate(-50%, calc(100% + 6px)) scale(1);\n }\n}\n", De = "\n.comimi-root {\n --comimi-bg: #fff;\n --comimi-surface: #f7f7f7;\n --comimi-surface-2: #eeeeee;\n --comimi-fg: #333;\n --comimi-muted: #666;\n --comimi-soft: #999;\n --comimi-line: #e0e0e0;\n --comimi-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n --comimi-glass: rgba(255, 255, 255, 0.8);\n --comimi-glass-strong: rgba(255, 255, 255, 0.8);\n --comimi-spring: cubic-bezier(0.34, 1.56, 0.64, 1);\n background: var(--comimi-bg);\n color: var(--comimi-fg);\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n width: calc(100% - 24px * 2);\n max-width: 900px;\n aspect-ratio: 900 / 636;\n margin: 0 auto;\n border-radius: 16px;\n box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.06);\n overflow: hidden;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n touch-action: none;\n transition:\n box-shadow 0.24s ease-out,\n background-color 0.16s linear;\n}\n\n.comimi-root:focus {\n outline: none;\n box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.14);\n}\n\n@media (max-width: 767px) {\n .comimi-root {\n max-width: 500px;\n aspect-ratio: 390 / 490;\n }\n}\n\n.comimi-root[data-bg=\"black\"] {\n --comimi-bg: #000;\n}\n\n.comimi-root[data-layout=\"wide\"] {\n width: 100%;\n max-width: none;\n aspect-ratio: auto;\n min-height: 320px;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n\n.comimi-root[data-layout=\"browserFullscreen\"],\n.comimi-root[data-layout=\"nativeFullscreen\"] {\n position: fixed;\n inset: 0;\n z-index: 999;\n width: 100vw;\n height: 100dvh;\n max-width: none;\n aspect-ratio: auto;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n\n.comimi-resize-handle {\n position: relative;\n width: 100%;\n height: 20px;\n background: #fff;\n cursor: ns-resize;\n touch-action: none;\n}\n\n.comimi-resize-handle::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 3px;\n border-radius: 999px;\n background: #bbb;\n transition:\n width 0.36s cubic-bezier(0.34, 1.56, 0.64, 1),\n height 0.36s cubic-bezier(0.34, 1.56, 0.64, 1),\n background-color 0.2s linear;\n}\n\n@media (hover: hover) {\n .comimi-resize-handle:hover::after {\n width: 52px;\n height: 5px;\n background: #888;\n }\n}\n\n", Oe = "\n.comimi-view-switcher {\n position: absolute;\n top: 20px;\n right: 20px;\n display: grid;\n grid-template-columns: repeat(3, 60px);\n width: 180px;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-view-switcher[data-overlay=\"false\"] {\n transform: translateY(-35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n@media (hover: hover) {\n .comimi-view-switcher:hover {\n transform: scaleX(1.03);\n }\n}\n\n.comimi-view-switcher-indicator {\n position: absolute;\n top: 0;\n left: 0;\n width: 60px;\n height: 100%;\n border-radius: 16px;\n background: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-view-switcher-button {\n position: relative;\n display: grid;\n row-gap: 5px;\n justify-items: center;\n align-content: center;\n height: 58px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: color 0.2s linear;\n}\n\n.comimi-view-switcher-button[data-selected=\"true\"] {\n color: #fff;\n}\n\n.comimi-view-switcher-icon-wrap {\n width: 20px;\n height: 20px;\n transform-origin: center bottom;\n}\n\n.comimi-view-switcher-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: currentColor;\n}\n\n.comimi-view-switcher-icon-wrap.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0.1s both;\n}\n\n.comimi-view-switcher-label {\n color: currentColor;\n font-size: 10px;\n font-weight: 500;\n text-align: center;\n transition: color 0.2s linear;\n}\n\n@media (max-width: 767px) {\n .comimi-view-switcher {\n top: 70px;\n right: auto;\n left: calc(50% - 90px);\n }\n}\n", q = !1, ke = [
1286
1277
  De,
1287
1278
  ge,
1288
1279
  Ee,
@@ -1333,6 +1324,8 @@ var je = 180, Me = 2e3, J = class {
1333
1324
  controlsDock;
1334
1325
  resizeHandle;
1335
1326
  viewSizeObserver;
1327
+ autoplayOverlayProgress;
1328
+ autoplayOverlayProgressBar;
1336
1329
  constructor(e, t, n, r, i, a, o = !1, s) {
1337
1330
  this.container = e, this.callbacks = t, this.assetLoader = n, this.i18n = r, this.lockLayoutMode = o, this.mascot = s, Ae(), this.pageStage = new B({
1338
1331
  assetLoader: this.assetLoader,
@@ -1360,11 +1353,11 @@ var je = 180, Me = 2e3, J = class {
1360
1353
  }), !this.viewModeSwitcher && !this.lockLayoutMode && (this.viewModeSwitcher = new P(this.callbacks, this.i18n)), this.controlsDock ||= new M(this.callbacks, this.i18n, this.mascot);
1361
1354
  let r = this.pageStage.getElement(), i = this.menuPanel.getElement(), a = this.viewModeSwitcher?.getElement(), o = this.controlsDock.getElement();
1362
1355
  Array.from(this.root.children).forEach((e) => {
1363
- e !== r && e !== i && e !== a && e !== o && e !== this.splash && e.remove();
1356
+ e !== r && e !== i && e !== a && e !== o && e !== this.splash && e !== this.autoplayOverlayProgress && e.remove();
1364
1357
  }), r.parentNode !== this.root && this.root.prepend(r), this.pageStage.update(e, this.isMobileViewport()), this.pageStage.snapTransform();
1365
1358
  let s = [
1366
- ae(n, this.i18n),
1367
- g({
1359
+ ie(n, this.i18n),
1360
+ ne({
1368
1361
  state: n,
1369
1362
  callbacks: this.callbacks
1370
1363
  }),
@@ -1372,7 +1365,7 @@ var je = 180, Me = 2e3, J = class {
1372
1365
  ];
1373
1366
  this.syncResizeHandle(e.layout.mode === "wide");
1374
1367
  let c = i.parentNode === this.root ? i : null;
1375
- if (c ? s.forEach((e) => this.root.insertBefore(e, c)) : (s.forEach((e) => this.root.appendChild(e)), this.root.appendChild(i)), a && a.parentNode !== this.root && this.root.appendChild(a), o.parentNode !== this.root && this.root.appendChild(o), this.menuPanel.update(n), this.viewModeSwitcher?.update(n), this.controlsDock.update(n, this.isMobileViewport()), this.splash && this.splash.parentNode !== this.root && this.root.append(this.splash), this.bindGestures(e), this.overlayApplyRaf !== void 0 && (cancelAnimationFrame(this.overlayApplyRaf), this.overlayApplyRaf = void 0), t) {
1368
+ if (c ? s.forEach((e) => this.root.insertBefore(e, c)) : (s.forEach((e) => this.root.appendChild(e)), this.root.appendChild(i)), a && a.parentNode !== this.root && this.root.appendChild(a), o.parentNode !== this.root && this.root.appendChild(o), this.menuPanel.update(n), this.viewModeSwitcher?.update(n), this.controlsDock.update(n, this.isMobileViewport()), this.syncAutoplayOverlayProgress(e), this.splash && this.splash.parentNode !== this.root && this.root.append(this.splash), this.bindGestures(e), this.overlayApplyRaf !== void 0 && (cancelAnimationFrame(this.overlayApplyRaf), this.overlayApplyRaf = void 0), t) {
1376
1369
  let t = e.overlayVisible;
1377
1370
  this.root.offsetWidth, this.overlayApplyRaf = requestAnimationFrame(() => {
1378
1371
  this.overlayApplyRaf = void 0, this.applyOverlayVisibility(t);
@@ -1401,19 +1394,26 @@ var je = 180, Me = 2e3, J = class {
1401
1394
  return this.isPageTurnAnimating;
1402
1395
  }
1403
1396
  animatePageTurn(e, t, n) {
1404
- return window.clearTimeout(this.pageTurnTimer), !e.settings.pageTurnAnimation || e.autoPageTurnEnabled || this.isPageTurnAnimating || b(e, t, this.isMobileViewport()).length === 0 ? !1 : (this.isPageTurnAnimating = !0, this.setStageDragOffset(this.getPageTurnTargetOffset(e, t), !0), this.pageTurnTimer = window.setTimeout(() => {
1397
+ return window.clearTimeout(this.pageTurnTimer), this.isPageTurnAnimating || x(e, t, this.isMobileViewport()).length === 0 ? !1 : (this.isPageTurnAnimating = !0, this.setStageDragOffset(this.getPageTurnTargetOffset(e, t), !0), this.pageTurnTimer = window.setTimeout(() => {
1405
1398
  this.isPageTurnAnimating = !1, n();
1406
1399
  }, je), !0);
1407
1400
  }
1408
1401
  isMobileViewport() {
1409
1402
  return window.matchMedia("(max-width: 767px)").matches;
1410
1403
  }
1404
+ syncAutoplayOverlayProgress(e) {
1405
+ if (!e.autoPageTurnEnabled) {
1406
+ this.autoplayOverlayProgress && (this.autoplayOverlayProgress.remove(), this.autoplayOverlayProgress = void 0, this.autoplayOverlayProgressBar = void 0);
1407
+ return;
1408
+ }
1409
+ this.autoplayOverlayProgress || (this.autoplayOverlayProgress = document.createElement("div"), this.autoplayOverlayProgress.className = "comimi-autoplay-overlay-progress", this.autoplayOverlayProgressBar = document.createElement("span"), this.autoplayOverlayProgressBar.className = "comimi-autoplay-overlay-progress-bar", this.autoplayOverlayProgress.append(this.autoplayOverlayProgressBar)), this.autoplayOverlayProgress.parentNode !== this.root && this.root.appendChild(this.autoplayOverlayProgress), this.autoplayOverlayProgress.dataset.visible = String(!e.overlayVisible), this.autoplayOverlayProgressBar.style.animationDuration = `${e.settings.autoPageTurnIntervalMs}ms`;
1410
+ }
1411
1411
  clampPan(e, t, n, r) {
1412
1412
  if (n <= 1) return {
1413
1413
  x: 0,
1414
1414
  y: 0
1415
1415
  };
1416
- let i = y(r, this.isMobileViewport()).length > 1 ? this.root.offsetWidth / 2 : this.root.offsetWidth, a = this.root.offsetHeight, o = i * (n - 1) / 2, s = a * (n - 1) / 2;
1416
+ let i = b(r, this.isMobileViewport()).length > 1 ? this.root.offsetWidth / 2 : this.root.offsetWidth, a = this.root.offsetHeight, o = i * (n - 1) / 2, s = a * (n - 1) / 2;
1417
1417
  return {
1418
1418
  x: Math.min(Math.max(e, -o), o),
1419
1419
  y: Math.min(Math.max(t, -s), s)
@@ -1446,8 +1446,8 @@ var je = 180, Me = 2e3, J = class {
1446
1446
  if (!this.isInteractiveTarget(t.target)) {
1447
1447
  if (!e.overlayVisible) {
1448
1448
  let n = this.root.getBoundingClientRect(), r = (t.clientX - n.left) / n.width;
1449
- if (r < .2 || r >= .8) {
1450
- let t = r < .2 ? "left" : "right";
1449
+ if (r < .3 || r >= .7) {
1450
+ let t = r < .3 ? "left" : "right";
1451
1451
  (e.settings.readingDirection === "rtl" ? t === "left" : t === "right") ? this.callbacks.nextPage() : this.callbacks.previousPage();
1452
1452
  return;
1453
1453
  }
@@ -1532,12 +1532,12 @@ var je = 180, Me = 2e3, J = class {
1532
1532
  this.root.addEventListener("click", l, !0), this.root.addEventListener("click", t), this.root.addEventListener("wheel", n, { passive: !1 }), this.root.addEventListener("mousedown", r), window.addEventListener("mousemove", i), window.addEventListener("mouseup", a), this.root.addEventListener("touchstart", o, { passive: !1 }), this.root.addEventListener("touchmove", s, { passive: !1 }), this.root.addEventListener("touchend", c), this.cleanup.push(() => this.root.removeEventListener("click", l, !0), () => this.root.removeEventListener("click", t), () => this.root.removeEventListener("wheel", n), () => this.root.removeEventListener("mousedown", r), () => window.removeEventListener("mousemove", i), () => window.removeEventListener("mouseup", a), () => this.root.removeEventListener("touchstart", o), () => this.root.removeEventListener("touchmove", s), () => this.root.removeEventListener("touchend", c));
1533
1533
  }
1534
1534
  handleSwipeEnd(e, t, n) {
1535
- if (window.clearTimeout(this.pageTurnTimer), !(n.zoomScale <= 1 && Math.abs(e) > 40 && Math.abs(e) > Math.abs(t))) {
1535
+ if (window.clearTimeout(this.pageTurnTimer), !(n.zoomScale <= 1 && Math.abs(e) > 30 && Math.abs(e) > Math.abs(t))) {
1536
1536
  this.setStageDragOffset(0, !0);
1537
1537
  return;
1538
1538
  }
1539
- let r = w(e, n.settings.readingDirection) ? "next" : "previous";
1540
- if (!(b(n, r, this.isMobileViewport()).length > 0)) {
1539
+ let r = T(e, n.settings.readingDirection) ? "next" : "previous";
1540
+ if (!(x(n, r, this.isMobileViewport()).length > 0)) {
1541
1541
  this.setStageDragOffset(0, !0);
1542
1542
  return;
1543
1543
  }
@@ -1549,7 +1549,7 @@ var je = 180, Me = 2e3, J = class {
1549
1549
  });
1550
1550
  }
1551
1551
  constrainDragOffset(e, t, n) {
1552
- return Math.abs(t) > Math.abs(e) ? 0 : b(n, w(e, n.settings.readingDirection) ? "next" : "previous", this.isMobileViewport()).length > 0 ? e : this.applyEdgeResistance(e);
1552
+ return Math.abs(t) > Math.abs(e) ? 0 : x(n, T(e, n.settings.readingDirection) ? "next" : "previous", this.isMobileViewport()).length > 0 ? e : this.applyEdgeResistance(e);
1553
1553
  }
1554
1554
  applyEdgeResistance(e) {
1555
1555
  let t = Math.sign(e), n = Math.abs(e), r = Math.max(this.root.clientWidth, 1), i = Math.min(r * .22, 140);
@@ -1559,7 +1559,7 @@ var je = 180, Me = 2e3, J = class {
1559
1559
  this.pageStage.setDragOffset(e, t);
1560
1560
  }
1561
1561
  getPageTurnTargetOffset(e, t) {
1562
- return C(e, t) === "left" ? this.root.clientWidth : -this.root.clientWidth;
1562
+ return w(e, t) === "left" ? this.root.clientWidth : -this.root.clientWidth;
1563
1563
  }
1564
1564
  isInteractiveTarget(e) {
1565
1565
  return e instanceof Element ? !!e.closest([
@@ -1831,11 +1831,17 @@ var Fe = class {
1831
1831
  ...i.settings,
1832
1832
  locale: i.locale ?? i.settings?.locale ?? e.locale
1833
1833
  });
1834
- this.lockLayoutMode = i.lockLayoutMode ?? !1, this.storage = new Ne(i.storage), this.assetLoader = new Ie(), this.i18n = new ne(a.locale, i.translations), this.store = new Fe(t(i.manga, a, i.initialPageIndex));
1834
+ this.lockLayoutMode = i.lockLayoutMode ?? !1, this.storage = new Ne(i.storage), this.assetLoader = new Ie(), this.i18n = new te(a.locale, i.translations), this.store = new Fe(t(i.manga, a, i.initialPageIndex));
1835
1835
  let o = {
1836
- goToPage: (e) => this.goToPage(e),
1837
- nextPage: () => this.nextPage(),
1838
- previousPage: () => this.previousPage(),
1836
+ goToPage: (e) => {
1837
+ this.store.getState().autoPageTurnEnabled || this.goToPage(e);
1838
+ },
1839
+ nextPage: () => {
1840
+ this.store.getState().autoPageTurnEnabled || this.nextPage();
1841
+ },
1842
+ previousPage: () => {
1843
+ this.store.getState().autoPageTurnEnabled || this.previousPage();
1844
+ },
1839
1845
  commitNextPage: () => this.commitNextPage(),
1840
1846
  commitPreviousPage: () => this.commitPreviousPage(),
1841
1847
  toggleOverlay: (e) => this.toggleOverlay(e),
@@ -1917,14 +1923,10 @@ var Fe = class {
1917
1923
  }
1918
1924
  }
1919
1925
  nextPage() {
1920
- if (this.renderer.isAnimatingPageTurn()) return;
1921
- let e = this.store.getState();
1922
- this.renderer.animatePageTurn(e, "next", () => this.commitNextPage()) || this.commitNextPage();
1926
+ this.renderer.isAnimatingPageTurn() || this.commitNextPage();
1923
1927
  }
1924
1928
  previousPage() {
1925
- if (this.renderer.isAnimatingPageTurn()) return;
1926
- let e = this.store.getState();
1927
- this.renderer.animatePageTurn(e, "previous", () => this.commitPreviousPage()) || this.commitPreviousPage();
1929
+ this.renderer.isAnimatingPageTurn() || this.commitPreviousPage();
1928
1930
  }
1929
1931
  commitNextPage() {
1930
1932
  if (this.renderer.isMobileViewport()) {
@@ -2076,7 +2078,7 @@ var Fe = class {
2076
2078
  this.mobileMediaQuery.addEventListener("change", e), this.unsubscribers.push(() => this.mobileMediaQuery?.removeEventListener("change", e));
2077
2079
  }
2078
2080
  moveFromKey(e) {
2079
- this.store.getState().settings.readingDirection === "rtl" ? e === "left" ? this.nextPage() : this.previousPage() : e === "left" ? this.previousPage() : this.nextPage();
2081
+ this.store.getState().autoPageTurnEnabled || (this.store.getState().settings.readingDirection === "rtl" ? e === "left" ? this.nextPage() : this.previousPage() : e === "left" ? this.previousPage() : this.nextPage());
2080
2082
  }
2081
2083
  async setLayoutMode(e) {
2082
2084
  if (!this.lockLayoutMode) {
@@ -2115,7 +2117,7 @@ var Fe = class {
2115
2117
  this.toggleAutoPageTurn();
2116
2118
  return;
2117
2119
  }
2118
- this.nextPage();
2120
+ this.commitNextPage();
2119
2121
  }, this.store.getState().settings.autoPageTurnIntervalMs));
2120
2122
  }
2121
2123
  emitPageChangeIfNeeded(e) {