reviw 1.4.1 → 1.5.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.
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { dirname as dirname$2143, join as join$2117, resolve as resolve$2162, extname as extname$2150, basename as basename$2160 } from "node:path";
3
- import { spawnSync as spawnSync$2239, execSync as execSync$2206, spawn as spawn$2234 } from "node:child_process";
4
- import { createHash as createHash$2188 } from "node:crypto";
5
- import { createServer as createServer$2167 } from "node:http";
6
- import { statSync as statSync$2257, unwatchFile as unwatchFile$2193, readdirSync as readdirSync$2219, existsSync as existsSync$2126, rmSync as rmSync$2228, mkdtempSync as mkdtempSync$2209, appendFileSync as appendFileSync$2124, createReadStream as createReadStream$2261, writeFileSync as writeFileSync$2121, unlinkSync as unlinkSync$2128, readFileSync as readFileSync$2131, watchFile as watchFile$2295, mkdirSync as mkdirSync$2136 } from "node:fs";
7
- import { tmpdir as tmpdir$2114, homedir as homedir$2133 } from "node:os";
2
+ import { dirname as dirname$1974, join as join$1948, resolve as resolve$1993, extname as extname$1981, basename as basename$1991 } from "node:path";
3
+ import { spawnSync as spawnSync$2072, execSync as execSync$2039, spawn as spawn$2067 } from "node:child_process";
4
+ import { createHash as createHash$2019 } from "node:crypto";
5
+ import { createServer as createServer$1998 } from "node:http";
6
+ import { statSync as statSync$2090, unwatchFile as unwatchFile$2024, readdirSync as readdirSync$2052, existsSync as existsSync$1957, rmSync as rmSync$2061, mkdtempSync as mkdtempSync$2042, appendFileSync as appendFileSync$1955, createReadStream as createReadStream$2094, writeFileSync as writeFileSync$1952, unlinkSync as unlinkSync$1959, readFileSync as readFileSync$1962, watchFile as watchFile$2128, mkdirSync as mkdirSync$1967 } from "node:fs";
7
+ import { tmpdir as tmpdir$1945, homedir as homedir$1964 } from "node:os";
8
8
  class $PanicError extends Error {}
9
9
  function $panic() {
10
10
  throw new $PanicError();
@@ -12,22 +12,6 @@ function $panic() {
12
12
  function _M0TPB13StringBuilder(param0) {
13
13
  this.val = param0;
14
14
  }
15
- function $bound_check(arr, index) {
16
- if (index < 0 || index >= arr.length) throw new Error("Index out of bounds");
17
- }
18
- function _M0TPC16string10StringView(param0, param1, param2) {
19
- this.str = param0;
20
- this.start = param1;
21
- this.end = param2;
22
- }
23
- function _M0TPB13SourceLocRepr(param0, param1, param2, param3, param4, param5) {
24
- this.pkg = param0;
25
- this.filename = param1;
26
- this.start_line = param2;
27
- this.start_column = param3;
28
- this.end_line = param4;
29
- this.end_column = param5;
30
- }
31
15
  function $compare_int(a, b) {
32
16
  return (a >= b) - (a <= b);
33
17
  }
@@ -43,10 +27,18 @@ const _M0FPB12random__seed = () => {
43
27
  function _M0TPB6Hasher(param0) {
44
28
  this.acc = param0;
45
29
  }
30
+ function _M0TPC16string10StringView(param0, param1, param2) {
31
+ this.str = param0;
32
+ this.start = param1;
33
+ this.end = param2;
34
+ }
46
35
  const _M0FPB19int__to__string__js = (x, radix) => {
47
36
  return x.toString(radix);
48
37
  };
49
- function _M0TPC13ref3RefGiE(param0) {
38
+ function $bound_check(arr, index) {
39
+ if (index < 0 || index >= arr.length) throw new Error("Index out of bounds");
40
+ }
41
+ function _M0TPB8MutLocalGiE(param0) {
50
42
  this.val = param0;
51
43
  }
52
44
  function $make_array_len_and_init(a, b) {
@@ -55,7 +47,7 @@ function $make_array_len_and_init(a, b) {
55
47
  return arr;
56
48
  }
57
49
  const _M0MPB7JSArray4push = (arr, val) => { arr.push(val); };
58
- function _M0TPC13ref3RefGORPC16string10StringViewE(param0) {
50
+ function _M0TPB8MutLocalGORPC16string10StringViewE(param0) {
59
51
  this.val = param0;
60
52
  }
61
53
  function _M0TPB3MapGssE(param0, param1, param2, param3, param4, param5, param6) {
@@ -90,6 +82,9 @@ _M0DTPC16option6OptionGRPB5ArrayGsEE4Some.prototype.$tag = 1;
90
82
  function _M0TPC13ref3RefGsE(param0) {
91
83
  this.val = param0;
92
84
  }
85
+ function _M0TPC13ref3RefGiE(param0) {
86
+ this.val = param0;
87
+ }
93
88
  function _M0TP36kazuph5reviw4core13ReviwQuestion(param0, param1, param2, param3, param4) {
94
89
  this.id = param0;
95
90
  this.question = param1;
@@ -315,147 +310,147 @@ function _M0TP36kazuph5reviw6server13ServerContext(param0, param1, param2, param
315
310
  this.finished = param9;
316
311
  }
317
312
  const _M0FP092moonbitlang_2fcore_2fbuiltin_2fStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger = { method_0: _M0IPB13StringBuilderPB6Logger13write__string, method_1: _M0IP016_24default__implPB6Logger16write__substringGRPB13StringBuilderE, method_2: _M0IPB13StringBuilderPB6Logger11write__view, method_3: _M0IPB13StringBuilderPB6Logger11write__char };
318
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS559 = ":";
319
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560 = "#";
320
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561 = "'";
321
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562 = "\"";
322
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563 = "\n";
323
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564 = "[";
324
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565 = "]";
325
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566 = "{";
326
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567 = "}";
327
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568 = ",";
328
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569 = "&";
329
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570 = "*";
330
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571 = "!";
331
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572 = "|";
332
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573 = ">";
333
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574 = "%";
334
- const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS575 = "@";
335
- const _M0FP36kazuph5reviw4core16split__to__linesN7_2abindS650 = "\n";
336
- const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS673 = "- ";
337
- const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS674 = " -";
338
- const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS675 = " ";
339
- const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS676 = " ";
340
- const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678 = "- ";
341
- const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS679 = " ";
342
- const _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS683 = "- ";
343
- const _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS684 = " ";
344
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS703 = "<details";
345
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS704 = "<div";
346
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS705 = "<section";
347
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706 = "<article";
348
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707 = "<aside";
349
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708 = "<nav";
350
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709 = "<header";
351
- const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS710 = "<footer";
352
- const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS712 = "#";
353
- const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS713 = "```";
354
- const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS714 = ">";
355
- const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS715 = "- ";
356
- const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS716 = "* ";
357
- const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS717 = "<";
358
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS718 = "graph ";
359
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS719 = "flowchart ";
360
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS720 = "sequenceDiagram";
361
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721 = "classDiagram";
362
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722 = "stateDiagram";
363
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723 = "erDiagram";
364
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724 = "journey";
365
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725 = "gantt";
366
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726 = "pie";
367
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727 = "gitGraph";
368
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728 = "mindmap";
369
- const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS729 = "timeline";
370
- const _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS730 = "|";
371
- const _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS731 = "-";
372
- const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS753 = "|";
373
- const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS754 = "|";
313
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560 = ":";
314
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561 = "#";
315
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562 = "'";
316
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563 = "\"";
317
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564 = "\n";
318
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565 = "[";
319
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566 = "]";
320
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567 = "{";
321
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568 = "}";
322
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569 = ",";
323
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570 = "&";
324
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571 = "*";
325
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572 = "!";
326
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573 = "|";
327
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574 = ">";
328
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS575 = "%";
329
+ const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS576 = "@";
330
+ const _M0FP36kazuph5reviw4core16split__to__linesN7_2abindS651 = "\n";
331
+ const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS676 = "- ";
332
+ const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS677 = " -";
333
+ const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678 = " ";
334
+ const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS679 = " ";
335
+ const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS681 = "- ";
336
+ const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS682 = " ";
337
+ const _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS686 = "- ";
338
+ const _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS687 = " ";
339
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706 = "<details";
340
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707 = "<div";
341
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708 = "<section";
342
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709 = "<article";
343
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS710 = "<aside";
344
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS711 = "<nav";
345
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS712 = "<header";
346
+ const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS713 = "<footer";
347
+ const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS715 = "#";
348
+ const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS716 = "```";
349
+ const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS717 = ">";
350
+ const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS718 = "- ";
351
+ const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS719 = "* ";
352
+ const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS720 = "<";
353
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721 = "graph ";
354
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722 = "flowchart ";
355
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723 = "sequenceDiagram";
356
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724 = "classDiagram";
357
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725 = "stateDiagram";
358
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726 = "erDiagram";
359
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727 = "journey";
360
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728 = "gantt";
361
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS729 = "pie";
362
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS730 = "gitGraph";
363
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS731 = "mindmap";
364
+ const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS732 = "timeline";
365
+ const _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS733 = "|";
366
+ const _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS734 = "-";
367
+ const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS756 = "|";
368
+ const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS757 = "|";
369
+ const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS758 = "|";
374
370
  const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS755 = "|";
375
- const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS752 = "|";
376
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS756 = ".mp4";
377
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS757 = ".webm";
378
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS758 = ".mov";
379
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759 = ".avi";
380
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760 = ".mkv";
381
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761 = ".m4v";
382
- const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS762 = ".ogv";
383
- const _M0FP36kazuph5reviw4core14render__inlineN7_2abindS768 = "javascript:";
384
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS781 = "expression(";
385
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS782 = "url(";
386
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS783 = "-moz-binding";
387
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784 = "behavior:";
388
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785 = "behaviour:";
389
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786 = "javascript:";
390
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787 = "vbscript:";
391
- const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS788 = "@import";
392
- const _M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS789 = "on";
393
- const _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS790 = "javascript:";
394
- const _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS791 = "data:text/html";
395
- const _M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS807 = ">";
396
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS809 = "<";
397
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS811 = "<summary>";
398
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS812 = "</details>";
399
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814 = "</details>";
400
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS815 = "<details";
401
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS819 = "#";
402
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS820 = "```";
403
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822 = "```";
404
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS823 = ">";
405
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS825 = ">";
406
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS830 = "- ";
407
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS831 = "* ";
408
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836 = "- ";
409
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS837 = "* ";
410
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833 = "[ ] ";
411
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834 = "[x] ";
412
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS835 = "[X] ";
413
- const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS848 = "|";
414
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS976 = "@@ ";
415
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS978 = "@@ ";
416
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979 = "diff ";
417
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS980 = "--- ";
418
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981 = "+";
419
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982 = "-";
420
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983 = " ";
421
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984 = "diff ";
422
- const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS985 = "--- ";
423
- const _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS987 = "a/";
424
- const _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS988 = "b/";
425
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS990 = "diff --git ";
426
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS992 = "new file mode";
427
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS993 = "deleted file mode";
428
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS994 = "Binary files";
429
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS995 = "index ";
430
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS996 = "--- ";
431
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS997 = "+++ ";
432
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS998 = "--- ";
433
- const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS999 = "+++ ";
434
- const _M0FP36kazuph5reviw4core27from__string_2econstr_2f660 = 0;
435
- const _M0FP36kazuph5reviw4core27from__string_2econstr_2f661 = 1;
436
- const _M0FP36kazuph5reviw4core27from__string_2econstr_2f662 = 2;
437
- const _M0FP36kazuph5reviw4core27from__string_2econstr_2f664 = 0;
438
- const _M0FP36kazuph5reviw4core27from__string_2econstr_2f665 = 1;
371
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759 = ".mp4";
372
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760 = ".webm";
373
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761 = ".mov";
374
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS762 = ".avi";
375
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS763 = ".mkv";
376
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS764 = ".m4v";
377
+ const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS765 = ".ogv";
378
+ const _M0FP36kazuph5reviw4core14render__inlineN7_2abindS771 = "javascript:";
379
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784 = "expression(";
380
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785 = "url(";
381
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786 = "-moz-binding";
382
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787 = "behavior:";
383
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS788 = "behaviour:";
384
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS789 = "javascript:";
385
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS790 = "vbscript:";
386
+ const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS791 = "@import";
387
+ const _M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS792 = "on";
388
+ const _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS793 = "javascript:";
389
+ const _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS794 = "data:text/html";
390
+ const _M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS810 = ">";
391
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS812 = "<";
392
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814 = "<summary>";
393
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS815 = "</details>";
394
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS817 = "</details>";
395
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS818 = "<details";
396
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822 = "#";
397
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS823 = "```";
398
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS825 = "```";
399
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS826 = ">";
400
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS828 = ">";
401
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833 = "- ";
402
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834 = "* ";
403
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS839 = "- ";
404
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS840 = "* ";
405
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836 = "[ ] ";
406
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS837 = "[x] ";
407
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS838 = "[X] ";
408
+ const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS851 = "|";
409
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979 = "@@ ";
410
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981 = "@@ ";
411
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982 = "diff ";
412
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983 = "--- ";
413
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984 = "+";
414
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS985 = "-";
415
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS986 = " ";
416
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS987 = "diff ";
417
+ const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS988 = "--- ";
418
+ const _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS990 = "a/";
419
+ const _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS991 = "b/";
420
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS993 = "diff --git ";
421
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS995 = "new file mode";
422
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS996 = "deleted file mode";
423
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS997 = "Binary files";
424
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS998 = "index ";
425
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS999 = "--- ";
426
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS1000 = "+++ ";
427
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS1001 = "--- ";
428
+ const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS1002 = "+++ ";
429
+ const _M0FP36kazuph5reviw4core27from__string_2econstr_2f569 = 0;
430
+ const _M0FP36kazuph5reviw4core27from__string_2econstr_2f570 = 1;
431
+ const _M0FP36kazuph5reviw4core27from__string_2econstr_2f571 = 2;
432
+ const _M0FP36kazuph5reviw4core27from__string_2econstr_2f573 = 0;
433
+ const _M0FP36kazuph5reviw4core27from__string_2econstr_2f574 = 1;
439
434
  const _M0FP36kazuph5reviw6server15active__servers = [];
440
435
  const _M0FP36kazuph5reviw6server12all__results = [];
441
436
  const _M0FP36kazuph5reviw6server12print__usageN5usageS419 = "Usage: reviw <file...> [options]\n\nOptions:\n --port <n> Base port (default: 4989)\n --host <addr> Bind address (default: 127.0.0.1, use 0.0.0.0 for remote)\n --no-open Don't open browser\n -e, --encoding <enc> Force encoding (e.g. shift-jis, euc-jp)\n -h, --help Show help\n -v, --version Show version\n\nSupported formats: CSV, TSV, Markdown, Diff, Plain text\nPipe stdin for diff: git diff | reviw";
442
437
  const _M0FP36kazuph5reviw6server12detect__modeN7_2abindS462 = ".";
443
- const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS526 = "..";
444
- const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530 = "scene_";
445
- const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS531 = ".jpg";
446
- const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS566 = "/";
447
- const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS564 = "..";
448
- const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS565 = "video/";
449
- const _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS568 = "/";
450
- const _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS567 = "..";
451
- const _M0FP36kazuph5reviw6server15handle__requestN7_2abindS569 = "/video-timeline?";
452
- const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS570 = "true";
453
- const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS571 = "true";
454
- const _M0FP017____moonbit__mainN7_2abindS590 = "-";
438
+ const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530 = "..";
439
+ const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS534 = "scene_";
440
+ const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS535 = ".jpg";
441
+ const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS570 = "/";
442
+ const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS568 = "..";
443
+ const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS569 = "video/";
444
+ const _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS572 = "/";
445
+ const _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS571 = "..";
446
+ const _M0FP36kazuph5reviw6server15handle__requestN7_2abindS573 = "/video-timeline?";
447
+ const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS574 = "true";
448
+ const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS575 = "true";
449
+ const _M0FP017____moonbit__mainN7_2abindS594 = "-";
455
450
  const _M0FP36kazuph5reviw6server15expected__count = _M0MPC13ref3Ref3newGiE(0);
456
451
  const _M0FP36kazuph5reviw6server18encoding__override = _M0MPC13ref3Ref3newGsE("");
457
- const _M0FPB33brute__force__find_2econstr_2f228 = 0;
458
- const _M0FPB43boyer__moore__horspool__find_2econstr_2f214 = 0;
452
+ const _M0FPB33brute__force__find_2econstr_2f153 = 0;
453
+ const _M0FPB43boyer__moore__horspool__find_2econstr_2f139 = 0;
459
454
  const _M0FP36kazuph5reviw6server10bind__host = _M0MPC13ref3Ref3newGsE("127.0.0.1");
460
455
  const _M0FP36kazuph5reviw6server13ui__js__cache = _M0MPC13ref3Ref3newGsE("");
461
456
  const _M0FPB4seed = _M0FPB12random__seed();
@@ -497,447 +492,6 @@ function _M0MPC16uint166UInt1623is__trailing__surrogate(self) {
497
492
  function _M0FPB32code__point__of__surrogate__pair(leading, trailing) {
498
493
  return (((Math.imul(leading - 55296 | 0, 1024) | 0) + trailing | 0) - 56320 | 0) + 65536 | 0;
499
494
  }
500
- function _M0MPC15array5Array2atGsE(self, index) {
501
- const len = self.length;
502
- if (index >= 0 && index < len) {
503
- $bound_check(self, index);
504
- return self[index];
505
- } else {
506
- return $panic();
507
- }
508
- }
509
- function _M0MPC15array5Array2atGcE(self, index) {
510
- const len = self.length;
511
- if (index >= 0 && index < len) {
512
- $bound_check(self, index);
513
- return self[index];
514
- } else {
515
- return $panic();
516
- }
517
- }
518
- function _M0MPC15array5Array2atGRPB5ArrayGsEE(self, index) {
519
- const len = self.length;
520
- if (index >= 0 && index < len) {
521
- $bound_check(self, index);
522
- return self[index];
523
- } else {
524
- return $panic();
525
- }
526
- }
527
- function _M0MPC15array5Array2atGdE(self, index) {
528
- const len = self.length;
529
- if (index >= 0 && index < len) {
530
- $bound_check(self, index);
531
- return self[index];
532
- } else {
533
- return $panic();
534
- }
535
- }
536
- function _M0MPB13SourceLocRepr5parse(repr) {
537
- const _bind = new _M0TPC16string10StringView(repr, 0, repr.length);
538
- const _data = _bind.str;
539
- const _start = _bind.start;
540
- const _end = _start + (_bind.end - _bind.start | 0) | 0;
541
- let _cursor = _start;
542
- let accept_state = -1;
543
- let match_end = -1;
544
- let match_tag_saver_0 = -1;
545
- let match_tag_saver_1 = -1;
546
- let match_tag_saver_2 = -1;
547
- let match_tag_saver_3 = -1;
548
- let match_tag_saver_4 = -1;
549
- let tag_0 = -1;
550
- let tag_1 = -1;
551
- let tag_1_1 = -1;
552
- let tag_1_2 = -1;
553
- let tag_3 = -1;
554
- let tag_2 = -1;
555
- let tag_2_1 = -1;
556
- let tag_4 = -1;
557
- _L: {
558
- if (_cursor < _end) {
559
- const _p = _cursor;
560
- if (_data.charCodeAt(_p) === 64) {
561
- _cursor = _cursor + 1 | 0;
562
- _L$2: while (true) {
563
- tag_0 = _cursor;
564
- if (_cursor < _end) {
565
- const _p$2 = _cursor;
566
- const next_char = _data.charCodeAt(_p$2);
567
- _cursor = _cursor + 1 | 0;
568
- if (next_char === 58) {
569
- if (_cursor < _end) {
570
- _cursor = _cursor + 1 | 0;
571
- let _tmp = 0;
572
- _L$3: while (true) {
573
- const dispatch_15 = _tmp;
574
- _L$4: {
575
- _L$5: {
576
- switch (dispatch_15) {
577
- case 3: {
578
- tag_1_2 = tag_1_1;
579
- tag_1_1 = tag_1;
580
- tag_1 = _cursor;
581
- if (_cursor < _end) {
582
- _L$6: {
583
- const _p$3 = _cursor;
584
- const next_char$2 = _data.charCodeAt(_p$3);
585
- _cursor = _cursor + 1 | 0;
586
- if (next_char$2 < 58) {
587
- if (next_char$2 < 48) {
588
- break _L$6;
589
- } else {
590
- tag_1 = _cursor;
591
- tag_2_1 = tag_2;
592
- tag_2 = _cursor;
593
- tag_3 = _cursor;
594
- if (_cursor < _end) {
595
- _L$7: {
596
- const _p$4 = _cursor;
597
- const next_char$3 = _data.charCodeAt(_p$4);
598
- _cursor = _cursor + 1 | 0;
599
- if (next_char$3 < 48) {
600
- if (next_char$3 === 45) {
601
- break _L$4;
602
- } else {
603
- break _L$7;
604
- }
605
- } else {
606
- if (next_char$3 > 57) {
607
- if (next_char$3 < 59) {
608
- _tmp = 3;
609
- continue _L$3;
610
- } else {
611
- break _L$7;
612
- }
613
- } else {
614
- _tmp = 6;
615
- continue _L$3;
616
- }
617
- }
618
- }
619
- _tmp = 0;
620
- continue _L$3;
621
- } else {
622
- break _L;
623
- }
624
- }
625
- } else {
626
- if (next_char$2 > 58) {
627
- break _L$6;
628
- } else {
629
- _tmp = 1;
630
- continue _L$3;
631
- }
632
- }
633
- }
634
- _tmp = 0;
635
- continue _L$3;
636
- } else {
637
- break _L;
638
- }
639
- }
640
- case 2: {
641
- tag_1 = _cursor;
642
- tag_2 = _cursor;
643
- if (_cursor < _end) {
644
- _L$6: {
645
- const _p$3 = _cursor;
646
- const next_char$2 = _data.charCodeAt(_p$3);
647
- _cursor = _cursor + 1 | 0;
648
- if (next_char$2 < 58) {
649
- if (next_char$2 < 48) {
650
- break _L$6;
651
- } else {
652
- _tmp = 2;
653
- continue _L$3;
654
- }
655
- } else {
656
- if (next_char$2 > 58) {
657
- break _L$6;
658
- } else {
659
- _tmp = 3;
660
- continue _L$3;
661
- }
662
- }
663
- }
664
- _tmp = 0;
665
- continue _L$3;
666
- } else {
667
- break _L;
668
- }
669
- }
670
- case 0: {
671
- tag_1 = _cursor;
672
- if (_cursor < _end) {
673
- const _p$3 = _cursor;
674
- const next_char$2 = _data.charCodeAt(_p$3);
675
- _cursor = _cursor + 1 | 0;
676
- if (next_char$2 === 58) {
677
- _tmp = 1;
678
- continue _L$3;
679
- } else {
680
- _tmp = 0;
681
- continue _L$3;
682
- }
683
- } else {
684
- break _L;
685
- }
686
- }
687
- case 4: {
688
- tag_1 = _cursor;
689
- tag_4 = _cursor;
690
- if (_cursor < _end) {
691
- _L$6: {
692
- const _p$3 = _cursor;
693
- const next_char$2 = _data.charCodeAt(_p$3);
694
- _cursor = _cursor + 1 | 0;
695
- if (next_char$2 < 58) {
696
- if (next_char$2 < 48) {
697
- break _L$6;
698
- } else {
699
- _tmp = 4;
700
- continue _L$3;
701
- }
702
- } else {
703
- if (next_char$2 > 58) {
704
- break _L$6;
705
- } else {
706
- tag_1_2 = tag_1_1;
707
- tag_1_1 = tag_1;
708
- tag_1 = _cursor;
709
- if (_cursor < _end) {
710
- _L$7: {
711
- const _p$4 = _cursor;
712
- const next_char$3 = _data.charCodeAt(_p$4);
713
- _cursor = _cursor + 1 | 0;
714
- if (next_char$3 < 58) {
715
- if (next_char$3 < 48) {
716
- break _L$7;
717
- } else {
718
- tag_1 = _cursor;
719
- tag_2_1 = tag_2;
720
- tag_2 = _cursor;
721
- if (_cursor < _end) {
722
- _L$8: {
723
- const _p$5 = _cursor;
724
- const next_char$4 = _data.charCodeAt(_p$5);
725
- _cursor = _cursor + 1 | 0;
726
- if (next_char$4 < 58) {
727
- if (next_char$4 < 48) {
728
- break _L$8;
729
- } else {
730
- _tmp = 5;
731
- continue _L$3;
732
- }
733
- } else {
734
- if (next_char$4 > 58) {
735
- break _L$8;
736
- } else {
737
- _tmp = 3;
738
- continue _L$3;
739
- }
740
- }
741
- }
742
- _tmp = 0;
743
- continue _L$3;
744
- } else {
745
- break _L$5;
746
- }
747
- }
748
- } else {
749
- if (next_char$3 > 58) {
750
- break _L$7;
751
- } else {
752
- _tmp = 1;
753
- continue _L$3;
754
- }
755
- }
756
- }
757
- _tmp = 0;
758
- continue _L$3;
759
- } else {
760
- break _L;
761
- }
762
- }
763
- }
764
- }
765
- _tmp = 0;
766
- continue _L$3;
767
- } else {
768
- break _L;
769
- }
770
- }
771
- case 5: {
772
- tag_1 = _cursor;
773
- tag_2 = _cursor;
774
- if (_cursor < _end) {
775
- _L$6: {
776
- const _p$3 = _cursor;
777
- const next_char$2 = _data.charCodeAt(_p$3);
778
- _cursor = _cursor + 1 | 0;
779
- if (next_char$2 < 58) {
780
- if (next_char$2 < 48) {
781
- break _L$6;
782
- } else {
783
- _tmp = 5;
784
- continue _L$3;
785
- }
786
- } else {
787
- if (next_char$2 > 58) {
788
- break _L$6;
789
- } else {
790
- _tmp = 3;
791
- continue _L$3;
792
- }
793
- }
794
- }
795
- _tmp = 0;
796
- continue _L$3;
797
- } else {
798
- break _L$5;
799
- }
800
- }
801
- case 6: {
802
- tag_1 = _cursor;
803
- tag_2 = _cursor;
804
- tag_3 = _cursor;
805
- if (_cursor < _end) {
806
- _L$6: {
807
- const _p$3 = _cursor;
808
- const next_char$2 = _data.charCodeAt(_p$3);
809
- _cursor = _cursor + 1 | 0;
810
- if (next_char$2 < 48) {
811
- if (next_char$2 === 45) {
812
- break _L$4;
813
- } else {
814
- break _L$6;
815
- }
816
- } else {
817
- if (next_char$2 > 57) {
818
- if (next_char$2 < 59) {
819
- _tmp = 3;
820
- continue _L$3;
821
- } else {
822
- break _L$6;
823
- }
824
- } else {
825
- _tmp = 6;
826
- continue _L$3;
827
- }
828
- }
829
- }
830
- _tmp = 0;
831
- continue _L$3;
832
- } else {
833
- break _L;
834
- }
835
- }
836
- case 1: {
837
- tag_1_1 = tag_1;
838
- tag_1 = _cursor;
839
- if (_cursor < _end) {
840
- _L$6: {
841
- const _p$3 = _cursor;
842
- const next_char$2 = _data.charCodeAt(_p$3);
843
- _cursor = _cursor + 1 | 0;
844
- if (next_char$2 < 58) {
845
- if (next_char$2 < 48) {
846
- break _L$6;
847
- } else {
848
- _tmp = 2;
849
- continue _L$3;
850
- }
851
- } else {
852
- if (next_char$2 > 58) {
853
- break _L$6;
854
- } else {
855
- _tmp = 1;
856
- continue _L$3;
857
- }
858
- }
859
- }
860
- _tmp = 0;
861
- continue _L$3;
862
- } else {
863
- break _L;
864
- }
865
- }
866
- default: {
867
- break _L;
868
- }
869
- }
870
- }
871
- tag_1 = tag_1_2;
872
- tag_2 = tag_2_1;
873
- match_tag_saver_0 = tag_0;
874
- match_tag_saver_1 = tag_1;
875
- match_tag_saver_2 = tag_2;
876
- match_tag_saver_3 = tag_3;
877
- match_tag_saver_4 = tag_4;
878
- accept_state = 0;
879
- match_end = _cursor;
880
- break _L;
881
- }
882
- tag_1_1 = tag_1_2;
883
- tag_1 = _cursor;
884
- tag_2 = tag_2_1;
885
- if (_cursor < _end) {
886
- _L$5: {
887
- const _p$3 = _cursor;
888
- const next_char$2 = _data.charCodeAt(_p$3);
889
- _cursor = _cursor + 1 | 0;
890
- if (next_char$2 < 58) {
891
- if (next_char$2 < 48) {
892
- break _L$5;
893
- } else {
894
- _tmp = 4;
895
- continue;
896
- }
897
- } else {
898
- if (next_char$2 > 58) {
899
- break _L$5;
900
- } else {
901
- _tmp = 1;
902
- continue;
903
- }
904
- }
905
- }
906
- _tmp = 0;
907
- continue;
908
- } else {
909
- break _L;
910
- }
911
- }
912
- } else {
913
- break _L;
914
- }
915
- } else {
916
- continue;
917
- }
918
- } else {
919
- break _L;
920
- }
921
- }
922
- } else {
923
- break _L;
924
- }
925
- } else {
926
- break _L;
927
- }
928
- }
929
- if (accept_state === 0) {
930
- const start_line = _M0MPC16string6String4view(_data, match_tag_saver_1 + 1 | 0, match_tag_saver_2);
931
- const start_column = _M0MPC16string6String4view(_data, match_tag_saver_2 + 1 | 0, match_tag_saver_3);
932
- const pkg = _M0MPC16string6String4view(_data, _start + 1 | 0, match_tag_saver_0);
933
- const filename = _M0MPC16string6String4view(_data, match_tag_saver_0 + 1 | 0, match_tag_saver_1);
934
- const end_line = _M0MPC16string6String4view(_data, match_tag_saver_3 + 1 | 0, match_tag_saver_4);
935
- const end_column = _M0MPC16string6String4view(_data, match_tag_saver_4 + 1 | 0, match_end);
936
- return new _M0TPB13SourceLocRepr(pkg, filename, start_line, start_column, end_line, end_column);
937
- } else {
938
- return $panic();
939
- }
940
- }
941
495
  function _M0IPB13StringBuilderPB6Logger13write__string(self, str) {
942
496
  self.val = `${self.val}${str}`;
943
497
  }
@@ -1019,7 +573,8 @@ function _M0IP016_24default__implPB4Show10to__stringGiE(self) {
1019
573
  }
1020
574
  function _M0IP016_24default__implPB4Show10to__stringGRPB9SourceLocE(self) {
1021
575
  const logger = _M0MPB13StringBuilder11new_2einner(0);
1022
- _M0IPB9SourceLocPB4Show6output(self, { self: logger, method_table: _M0FP092moonbitlang_2fcore_2fbuiltin_2fStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger });
576
+ const _p = { self: logger, method_table: _M0FP092moonbitlang_2fcore_2fbuiltin_2fStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger };
577
+ _p.method_table.method_0(_p.self, self);
1023
578
  return logger.val;
1024
579
  }
1025
580
  function _M0MPB4Iter4nextGcE(self) {
@@ -1041,7 +596,7 @@ function _M0MPC16string10StringView12view_2einner(self, start_offset, end_offset
1041
596
  const _Some = end_offset;
1042
597
  end_offset$2 = _Some;
1043
598
  }
1044
- return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= (self.end - self.start | 0)) ? new _M0TPC16string10StringView(self.str, self.start + start_offset | 0, self.start + end_offset$2 | 0) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "@moonbitlang/core/builtin:stringview.mbt:113:5-113:36");
599
+ return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= (self.end - self.start | 0)) ? new _M0TPC16string10StringView(self.str, self.start + start_offset | 0, self.start + end_offset$2 | 0) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "builtin/stringview.mbt:113:5-113:36@moonbitlang/core");
1045
600
  }
1046
601
  function _M0IPC16string10StringViewPB4Show10to__string(self) {
1047
602
  return self.str.substring(self.start, self.end);
@@ -1049,7 +604,7 @@ function _M0IPC16string10StringViewPB4Show10to__string(self) {
1049
604
  function _M0MPC16string10StringView4iter(self) {
1050
605
  const start = self.start;
1051
606
  const end = self.end;
1052
- const index = new _M0TPC13ref3RefGiE(start);
607
+ const index = new _M0TPB8MutLocalGiE(start);
1053
608
  const _p = () => {
1054
609
  if (index.val < end) {
1055
610
  const c1 = self.str.charCodeAt(index.val);
@@ -1074,8 +629,8 @@ function _M0MPB5Iter23newGicE(f) {
1074
629
  function _M0MPC16string10StringView5iter2(self) {
1075
630
  const start = self.start;
1076
631
  const end = self.end;
1077
- const index = new _M0TPC13ref3RefGiE(start);
1078
- const char_index = new _M0TPC13ref3RefGiE(0);
632
+ const index = new _M0TPB8MutLocalGiE(start);
633
+ const char_index = new _M0TPB8MutLocalGiE(0);
1079
634
  return _M0MPB5Iter23newGicE(() => {
1080
635
  if (index.val < end) {
1081
636
  const c1 = self.str.charCodeAt(index.val);
@@ -1105,17 +660,7 @@ function _M0MPC16string6String12view_2einner(self, start_offset, end_offset) {
1105
660
  const _Some = end_offset;
1106
661
  end_offset$2 = _Some;
1107
662
  }
1108
- return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= self.length) ? new _M0TPC16string10StringView(self, start_offset, end_offset$2) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "@moonbitlang/core/builtin:stringview.mbt:399:5-399:36");
1109
- }
1110
- function _M0MPC16string6String4view(self, start_offset$46$opt, end_offset) {
1111
- let start_offset;
1112
- if (start_offset$46$opt === undefined) {
1113
- start_offset = 0;
1114
- } else {
1115
- const _Some = start_offset$46$opt;
1116
- start_offset = _Some;
1117
- }
1118
- return _M0MPC16string6String12view_2einner(self, start_offset, end_offset);
663
+ return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= self.length) ? new _M0TPC16string10StringView(self, start_offset, end_offset$2) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "builtin/stringview.mbt:398:5-398:36@moonbitlang/core");
1119
664
  }
1120
665
  function _M0IPB13StringBuilderPB6Logger11write__view(self, str) {
1121
666
  self.val = `${self.val}${_M0IPC16string10StringViewPB4Show10to__string(str)}`;
@@ -1178,7 +723,7 @@ function _M0FPB28boyer__moore__horspool__find(haystack, needle) {
1178
723
  return undefined;
1179
724
  }
1180
725
  } else {
1181
- return _M0FPB43boyer__moore__horspool__find_2econstr_2f214;
726
+ return _M0FPB43boyer__moore__horspool__find_2econstr_2f139;
1182
727
  }
1183
728
  }
1184
729
  function _M0FPB18brute__force__find(haystack, needle) {
@@ -1189,44 +734,32 @@ function _M0FPB18brute__force__find(haystack, needle) {
1189
734
  const _p = 0;
1190
735
  const needle_first = needle.str.charCodeAt(needle.start + _p | 0);
1191
736
  const forward_len = haystack_len - needle_len | 0;
1192
- let i = 0;
737
+ let _tmp = 0;
1193
738
  while (true) {
739
+ const i = _tmp;
1194
740
  if (i <= forward_len) {
741
+ const _p$2 = haystack.str.charCodeAt(haystack.start + i | 0);
742
+ if (_p$2 !== needle_first) {
743
+ _tmp = i + 1 | 0;
744
+ continue;
745
+ }
746
+ let _tmp$2 = 1;
1195
747
  while (true) {
1196
- let _tmp;
1197
- if (i <= forward_len) {
1198
- const _p$2 = i;
1199
- const _p$3 = haystack.str.charCodeAt(haystack.start + _p$2 | 0);
1200
- _tmp = _p$3 !== needle_first;
1201
- } else {
1202
- _tmp = false;
1203
- }
1204
- if (_tmp) {
1205
- i = i + 1 | 0;
748
+ const j = _tmp$2;
749
+ if (j < needle_len) {
750
+ const _p$3 = i + j | 0;
751
+ const _p$4 = haystack.str.charCodeAt(haystack.start + _p$3 | 0);
752
+ const _p$5 = needle.str.charCodeAt(needle.start + j | 0);
753
+ if (_p$4 !== _p$5) {
754
+ break;
755
+ }
756
+ _tmp$2 = j + 1 | 0;
1206
757
  continue;
1207
758
  } else {
1208
- break;
1209
- }
1210
- }
1211
- if (i <= forward_len) {
1212
- let _tmp = 1;
1213
- while (true) {
1214
- const j = _tmp;
1215
- if (j < needle_len) {
1216
- const _p$2 = i + j | 0;
1217
- const _p$3 = haystack.str.charCodeAt(haystack.start + _p$2 | 0);
1218
- const _p$4 = needle.str.charCodeAt(needle.start + j | 0);
1219
- if (_p$3 !== _p$4) {
1220
- break;
1221
- }
1222
- _tmp = j + 1 | 0;
1223
- continue;
1224
- } else {
1225
- return i;
1226
- }
759
+ return i;
1227
760
  }
1228
- i = i + 1 | 0;
1229
761
  }
762
+ _tmp = i + 1 | 0;
1230
763
  continue;
1231
764
  } else {
1232
765
  break;
@@ -1237,7 +770,7 @@ function _M0FPB18brute__force__find(haystack, needle) {
1237
770
  return undefined;
1238
771
  }
1239
772
  } else {
1240
- return _M0FPB33brute__force__find_2econstr_2f228;
773
+ return _M0FPB33brute__force__find_2econstr_2f153;
1241
774
  }
1242
775
  }
1243
776
  function _M0MPC16string10StringView4find(self, str) {
@@ -1327,44 +860,32 @@ function _M0FPB23brute__force__rev__find(haystack, needle) {
1327
860
  if (haystack_len >= needle_len) {
1328
861
  const _p = 0;
1329
862
  const needle_first = needle.str.charCodeAt(needle.start + _p | 0);
1330
- let i = haystack_len - needle_len | 0;
863
+ let _tmp = haystack_len - needle_len | 0;
1331
864
  while (true) {
865
+ const i = _tmp;
1332
866
  if (i >= 0) {
867
+ const _p$2 = haystack.str.charCodeAt(haystack.start + i | 0);
868
+ if (_p$2 !== needle_first) {
869
+ _tmp = i - 1 | 0;
870
+ continue;
871
+ }
872
+ let _tmp$2 = 1;
1333
873
  while (true) {
1334
- let _tmp;
1335
- if (i >= 0) {
1336
- const _p$2 = i;
1337
- const _p$3 = haystack.str.charCodeAt(haystack.start + _p$2 | 0);
1338
- _tmp = _p$3 !== needle_first;
1339
- } else {
1340
- _tmp = false;
1341
- }
1342
- if (_tmp) {
1343
- i = i - 1 | 0;
874
+ const j = _tmp$2;
875
+ if (j < needle_len) {
876
+ const _p$3 = i + j | 0;
877
+ const _p$4 = haystack.str.charCodeAt(haystack.start + _p$3 | 0);
878
+ const _p$5 = needle.str.charCodeAt(needle.start + j | 0);
879
+ if (_p$4 !== _p$5) {
880
+ break;
881
+ }
882
+ _tmp$2 = j + 1 | 0;
1344
883
  continue;
1345
884
  } else {
1346
- break;
1347
- }
1348
- }
1349
- if (i >= 0) {
1350
- let _tmp = 1;
1351
- while (true) {
1352
- const j = _tmp;
1353
- if (j < needle_len) {
1354
- const _p$2 = i + j | 0;
1355
- const _p$3 = haystack.str.charCodeAt(haystack.start + _p$2 | 0);
1356
- const _p$4 = needle.str.charCodeAt(needle.start + j | 0);
1357
- if (_p$3 !== _p$4) {
1358
- break;
1359
- }
1360
- _tmp = j + 1 | 0;
1361
- continue;
1362
- } else {
1363
- return i;
1364
- }
885
+ return i;
1365
886
  }
1366
- i = i - 1 | 0;
1367
887
  }
888
+ _tmp = i - 1 | 0;
1368
889
  continue;
1369
890
  } else {
1370
891
  break;
@@ -1428,7 +949,7 @@ function _M0MPC16string6String8contains(self, str) {
1428
949
  }
1429
950
  function _M0MPC16string6String4iter(self) {
1430
951
  const len = self.length;
1431
- const index = new _M0TPC13ref3RefGiE(0);
952
+ const index = new _M0TPB8MutLocalGiE(0);
1432
953
  const _p = () => {
1433
954
  if (index.val < len) {
1434
955
  const c1 = self.charCodeAt(index.val);
@@ -1468,7 +989,7 @@ function _M0MPC16string10StringView5split(self, sep) {
1468
989
  if (sep_len === 0) {
1469
990
  return _M0MPB4Iter3mapGcRPC16string10StringViewE(_M0MPC16string10StringView4iter(self), (c) => _M0MPC16string6String12view_2einner(_M0IPC14char4CharPB4Show10to__string(c), 0, undefined));
1470
991
  }
1471
- const remaining = new _M0TPC13ref3RefGORPC16string10StringViewE(self);
992
+ const remaining = new _M0TPB8MutLocalGORPC16string10StringViewE(self);
1472
993
  const _p = () => {
1473
994
  const _bind = remaining.val;
1474
995
  if (_bind === undefined) {
@@ -1525,17 +1046,6 @@ function _M0MPC16string6String9to__lower(self) {
1525
1046
  return buf.val;
1526
1047
  }
1527
1048
  }
1528
- function _M0MPC16string6String17substring_2einner(self, start, end) {
1529
- const len = self.length;
1530
- let end$2;
1531
- if (end === undefined) {
1532
- end$2 = len;
1533
- } else {
1534
- const _Some = end;
1535
- end$2 = _Some;
1536
- }
1537
- return start >= 0 && (start <= end$2 && end$2 <= len) ? self.substring(start, end$2) : $panic();
1538
- }
1539
1049
  function _M0MPC16string6String9to__array(self) {
1540
1050
  const _p = _M0MPC16string6String4iter(self);
1541
1051
  const _p$2 = _M0MPC15array5Array11new_2einnerGcE(self.length);
@@ -1894,91 +1404,6 @@ function _M0IPC16string6StringPB4Hash13hash__combine(self, hasher) {
1894
1404
  function _M0MPC16double6Double10to__string(self) {
1895
1405
  return _M0FPB15ryu__to__string(self);
1896
1406
  }
1897
- function _M0IPB13SourceLocReprPB4Show6output(self, logger) {
1898
- const pkg = self.pkg;
1899
- const _data = pkg.str;
1900
- const _start = pkg.start;
1901
- const _end = _start + (pkg.end - pkg.start | 0) | 0;
1902
- let _cursor = _start;
1903
- let accept_state = -1;
1904
- let match_end = -1;
1905
- let match_tag_saver_0 = -1;
1906
- let tag_0 = -1;
1907
- let _bind;
1908
- _L: {
1909
- _L$2: {
1910
- _L$3: while (true) {
1911
- if (_cursor < _end) {
1912
- const _p = _cursor;
1913
- const next_char = _data.charCodeAt(_p);
1914
- _cursor = _cursor + 1 | 0;
1915
- if (next_char === 47) {
1916
- _L$4: while (true) {
1917
- tag_0 = _cursor;
1918
- if (_cursor < _end) {
1919
- const _p$2 = _cursor;
1920
- const next_char$2 = _data.charCodeAt(_p$2);
1921
- _cursor = _cursor + 1 | 0;
1922
- if (next_char$2 === 47) {
1923
- while (true) {
1924
- if (_cursor < _end) {
1925
- _cursor = _cursor + 1 | 0;
1926
- continue;
1927
- } else {
1928
- match_tag_saver_0 = tag_0;
1929
- accept_state = 0;
1930
- match_end = _cursor;
1931
- break _L$2;
1932
- }
1933
- }
1934
- } else {
1935
- continue;
1936
- }
1937
- } else {
1938
- break _L$2;
1939
- }
1940
- }
1941
- } else {
1942
- continue;
1943
- }
1944
- } else {
1945
- break _L$2;
1946
- }
1947
- }
1948
- break _L;
1949
- }
1950
- if (accept_state === 0) {
1951
- const package_name = _M0MPC16string6String4view(_data, match_tag_saver_0 + 1 | 0, match_end);
1952
- const module_name = _M0MPC16string6String4view(_data, _start, match_tag_saver_0);
1953
- _bind = { _0: module_name, _1: package_name };
1954
- } else {
1955
- _bind = { _0: pkg, _1: undefined };
1956
- }
1957
- }
1958
- const _module_name = _bind._0;
1959
- const _package_name = _bind._1;
1960
- if (_package_name === undefined) {
1961
- } else {
1962
- const _Some = _package_name;
1963
- const _pkg_name = _Some;
1964
- logger.method_table.method_2(logger.self, _pkg_name);
1965
- logger.method_table.method_3(logger.self, 47);
1966
- }
1967
- logger.method_table.method_2(logger.self, self.filename);
1968
- logger.method_table.method_3(logger.self, 58);
1969
- logger.method_table.method_2(logger.self, self.start_line);
1970
- logger.method_table.method_3(logger.self, 58);
1971
- logger.method_table.method_2(logger.self, self.start_column);
1972
- logger.method_table.method_3(logger.self, 45);
1973
- logger.method_table.method_2(logger.self, self.end_line);
1974
- logger.method_table.method_3(logger.self, 58);
1975
- logger.method_table.method_2(logger.self, self.end_column);
1976
- logger.method_table.method_3(logger.self, 64);
1977
- logger.method_table.method_2(logger.self, _module_name);
1978
- }
1979
- function _M0IPB9SourceLocPB4Show6output(self, logger) {
1980
- _M0IPB13SourceLocReprPB4Show6output(_M0MPB13SourceLocRepr5parse(self), logger);
1981
- }
1982
1407
  function _M0MPC15array5Array28unsafe__truncate__to__lengthGsE(self, new_len) {
1983
1408
  _M0MPB7JSArray11set__length(self, new_len);
1984
1409
  }
@@ -2000,7 +1425,7 @@ function _M0MPC15array5Array6removeGRP36kazuph5reviw6server7JsValueE(self, index
2000
1425
  _M0MPB7JSArray6splice(self, index, 1);
2001
1426
  return value;
2002
1427
  } else {
2003
- return _M0FPB5abortGRP36kazuph5reviw6server7JsValueE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "@moonbitlang/core/builtin:arraycore_js.mbt:251:5-253:6");
1428
+ return _M0FPB5abortGRP36kazuph5reviw6server7JsValueE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "builtin/arraycore_js.mbt:251:5-253:6@moonbitlang/core");
2004
1429
  }
2005
1430
  }
2006
1431
  function _M0MPC15array5Array6removeGsE(self, index) {
@@ -2010,12 +1435,48 @@ function _M0MPC15array5Array6removeGsE(self, index) {
2010
1435
  _M0MPB7JSArray6splice(self, index, 1);
2011
1436
  return value;
2012
1437
  } else {
2013
- return _M0FPB5abortGRPC16string10StringViewE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "@moonbitlang/core/builtin:arraycore_js.mbt:251:5-253:6");
1438
+ return _M0FPB5abortGRPC16string10StringViewE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "builtin/arraycore_js.mbt:251:5-253:6@moonbitlang/core");
2014
1439
  }
2015
1440
  }
2016
1441
  function _M0MPC15array5Array4copyGsE(self) {
2017
1442
  return _M0MPB7JSArray4copy(self);
2018
1443
  }
1444
+ function _M0MPC15array5Array2atGsE(self, index) {
1445
+ const len = self.length;
1446
+ if (index >= 0 && index < len) {
1447
+ $bound_check(self, index);
1448
+ return self[index];
1449
+ } else {
1450
+ return $panic();
1451
+ }
1452
+ }
1453
+ function _M0MPC15array5Array2atGcE(self, index) {
1454
+ const len = self.length;
1455
+ if (index >= 0 && index < len) {
1456
+ $bound_check(self, index);
1457
+ return self[index];
1458
+ } else {
1459
+ return $panic();
1460
+ }
1461
+ }
1462
+ function _M0MPC15array5Array2atGRPB5ArrayGsEE(self, index) {
1463
+ const len = self.length;
1464
+ if (index >= 0 && index < len) {
1465
+ $bound_check(self, index);
1466
+ return self[index];
1467
+ } else {
1468
+ return $panic();
1469
+ }
1470
+ }
1471
+ function _M0MPC15array5Array2atGdE(self, index) {
1472
+ const len = self.length;
1473
+ if (index >= 0 && index < len) {
1474
+ $bound_check(self, index);
1475
+ return self[index];
1476
+ } else {
1477
+ return $panic();
1478
+ }
1479
+ }
2019
1480
  function _M0MPC15array5Array5clearGsE(self) {
2020
1481
  _M0MPC15array5Array28unsafe__truncate__to__lengthGsE(self, 0);
2021
1482
  }
@@ -2025,38 +1486,38 @@ function _M0MPC13ref3Ref3newGsE(x) {
2025
1486
  function _M0MPC13ref3Ref3newGiE(x) {
2026
1487
  return new _M0TPC13ref3RefGiE(x);
2027
1488
  }
2028
- function _M0IP36kazuph5reviw4core8FileModePB2Eq5equal(_x_441, _x_442) {
2029
- switch (_x_441) {
1489
+ function _M0IP36kazuph5reviw4core8FileModePB2Eq5equal(_x_442, _x_443) {
1490
+ switch (_x_442) {
2030
1491
  case 0: {
2031
- if (_x_442 === 0) {
1492
+ if (_x_443 === 0) {
2032
1493
  return true;
2033
1494
  } else {
2034
1495
  return false;
2035
1496
  }
2036
1497
  }
2037
1498
  case 1: {
2038
- if (_x_442 === 1) {
1499
+ if (_x_443 === 1) {
2039
1500
  return true;
2040
1501
  } else {
2041
1502
  return false;
2042
1503
  }
2043
1504
  }
2044
1505
  case 2: {
2045
- if (_x_442 === 2) {
1506
+ if (_x_443 === 2) {
2046
1507
  return true;
2047
1508
  } else {
2048
1509
  return false;
2049
1510
  }
2050
1511
  }
2051
1512
  case 3: {
2052
- if (_x_442 === 3) {
1513
+ if (_x_443 === 3) {
2053
1514
  return true;
2054
1515
  } else {
2055
1516
  return false;
2056
1517
  }
2057
1518
  }
2058
1519
  default: {
2059
- if (_x_442 === 4) {
1520
+ if (_x_443 === 4) {
2060
1521
  return true;
2061
1522
  } else {
2062
1523
  return false;
@@ -2065,7 +1526,7 @@ function _M0IP36kazuph5reviw4core8FileModePB2Eq5equal(_x_441, _x_442) {
2065
1526
  }
2066
1527
  }
2067
1528
  function _M0FP36kazuph5reviw4core20yaml__escape__string(s) {
2068
- const needs_quote = _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS559, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS559.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574.length)) || _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS575, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS575.length)))))))))))))))));
1529
+ const needs_quote = _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS575, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS575.length)) || _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS576, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS576.length)))))))))))))))));
2069
1530
  if (needs_quote) {
2070
1531
  const buf = _M0MPB13StringBuilder11new_2einner(0);
2071
1532
  _M0IPB13StringBuilderPB6Logger11write__char(buf, 39);
@@ -2382,7 +1843,7 @@ function _M0FP36kazuph5reviw4core16parse__int__safe(s) {
2382
1843
  }
2383
1844
  function _M0FP36kazuph5reviw4core16split__to__lines(input) {
2384
1845
  const result = [];
2385
- const _it = _M0MPC16string6String5split(input, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16split__to__linesN7_2abindS650, 0, _M0FP36kazuph5reviw4core16split__to__linesN7_2abindS650.length));
1846
+ const _it = _M0MPC16string6String5split(input, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16split__to__linesN7_2abindS651, 0, _M0FP36kazuph5reviw4core16split__to__linesN7_2abindS651.length));
2386
1847
  while (true) {
2387
1848
  const _bind = _M0MPB4Iter4nextGRPC16string10StringViewE(_it);
2388
1849
  if (_bind === undefined) {
@@ -2396,6 +1857,18 @@ function _M0FP36kazuph5reviw4core16split__to__lines(input) {
2396
1857
  }
2397
1858
  return result;
2398
1859
  }
1860
+ function _M0FP36kazuph5reviw4core15is__path__under(base, child) {
1861
+ if (child === base) {
1862
+ return true;
1863
+ }
1864
+ const _bind = `${base}/`;
1865
+ if (_M0MPC16string6String11has__prefix(child, new _M0TPC16string10StringView(_bind, 0, _bind.length))) {
1866
+ return true;
1867
+ } else {
1868
+ const _bind$2 = `${base}\\`;
1869
+ return _M0MPC16string6String11has__prefix(child, new _M0TPC16string10StringView(_bind$2, 0, _bind$2.length));
1870
+ }
1871
+ }
2399
1872
  function _M0MP36kazuph5reviw4core8FileMode15from__extension(ext) {
2400
1873
  _L: {
2401
1874
  _L$2: {
@@ -2436,13 +1909,13 @@ function _M0MP36kazuph5reviw4core8FileMode15from__extension(ext) {
2436
1909
  function _M0MP36kazuph5reviw4core12ReviewAction12from__string(s) {
2437
1910
  switch (s) {
2438
1911
  case "handoff": {
2439
- return _M0FP36kazuph5reviw4core27from__string_2econstr_2f660;
1912
+ return _M0FP36kazuph5reviw4core27from__string_2econstr_2f569;
2440
1913
  }
2441
1914
  case "final_approve": {
2442
- return _M0FP36kazuph5reviw4core27from__string_2econstr_2f661;
1915
+ return _M0FP36kazuph5reviw4core27from__string_2econstr_2f570;
2443
1916
  }
2444
1917
  case "final_request_changes": {
2445
- return _M0FP36kazuph5reviw4core27from__string_2econstr_2f662;
1918
+ return _M0FP36kazuph5reviw4core27from__string_2econstr_2f571;
2446
1919
  }
2447
1920
  default: {
2448
1921
  return undefined;
@@ -2452,10 +1925,10 @@ function _M0MP36kazuph5reviw4core12ReviewAction12from__string(s) {
2452
1925
  function _M0MP36kazuph5reviw4core14ReviewDecision12from__string(s) {
2453
1926
  switch (s) {
2454
1927
  case "approve": {
2455
- return _M0FP36kazuph5reviw4core27from__string_2econstr_2f664;
1928
+ return _M0FP36kazuph5reviw4core27from__string_2econstr_2f573;
2456
1929
  }
2457
1930
  case "request_changes": {
2458
- return _M0FP36kazuph5reviw4core27from__string_2econstr_2f665;
1931
+ return _M0FP36kazuph5reviw4core27from__string_2econstr_2f574;
2459
1932
  }
2460
1933
  default: {
2461
1934
  return undefined;
@@ -2557,10 +2030,10 @@ function _M0FP36kazuph5reviw4core23parse__single__question(lines, start, end) {
2557
2030
  if (i < end) {
2558
2031
  const line = _M0MPC15array5Array2atGsE(lines, i);
2559
2032
  const trimmed = _M0FP36kazuph5reviw4core4trim(line);
2560
- if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS673, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS673.length)) && _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS674, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS674.length))) {
2033
+ if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS676, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS676.length)) && _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS677, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS677.length))) {
2561
2034
  break;
2562
2035
  }
2563
- if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS675, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS675.length)) && !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS676, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS676.length))) {
2036
+ if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678.length)) && !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS679, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS679.length))) {
2564
2037
  break;
2565
2038
  }
2566
2039
  const content_colon = _M0FP36kazuph5reviw4core15index__of__char(trimmed, 58);
@@ -2585,7 +2058,7 @@ function _M0FP36kazuph5reviw4core23parse__single__question(lines, start, end) {
2585
2058
  if (i < end) {
2586
2059
  const opt_line = _M0MPC15array5Array2atGsE(lines, i);
2587
2060
  const opt_trimmed = _M0FP36kazuph5reviw4core4trim(opt_line);
2588
- if (_M0MPC16string6String11has__prefix(opt_trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678.length)) && _M0MPC16string6String11has__prefix(opt_line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS679, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS679.length))) {
2061
+ if (_M0MPC16string6String11has__prefix(opt_trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS681, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS681.length)) && _M0MPC16string6String11has__prefix(opt_line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS682, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS682.length))) {
2589
2062
  _M0MPC15array5Array4pushGsE(options, _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(opt_trimmed, 2)));
2590
2063
  i = i + 1 | 0;
2591
2064
  } else {
@@ -2625,12 +2098,12 @@ function _M0FP36kazuph5reviw4core23parse__reviw__questions(lines, start, end) {
2625
2098
  if (i < end) {
2626
2099
  const item_line = _M0MPC15array5Array2atGsE(lines, i);
2627
2100
  const trimmed = _M0FP36kazuph5reviw4core4trim(item_line);
2628
- if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS683, 0, _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS683.length))) {
2101
+ if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS686, 0, _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS686.length))) {
2629
2102
  const q = _M0FP36kazuph5reviw4core23parse__single__question(lines, i, end);
2630
2103
  _M0MPC15array5Array4pushGsE(questions, q._0);
2631
2104
  i = q._1;
2632
2105
  } else {
2633
- if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(item_line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS684, 0, _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS684.length))) {
2106
+ if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(item_line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS687, 0, _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS687.length))) {
2634
2107
  break;
2635
2108
  } else {
2636
2109
  i = i + 1 | 0;
@@ -2780,7 +2253,7 @@ function _M0FP36kazuph5reviw4core20is__horizontal__rule(line) {
2780
2253
  }
2781
2254
  function _M0FP36kazuph5reviw4core22is__html__block__start(line) {
2782
2255
  const t = _M0FP36kazuph5reviw4core4trim(line);
2783
- return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS703, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS703.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS704, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS704.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS705, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS705.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709.length)) || _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS710, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS710.length))))))));
2256
+ return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS710, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS710.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS711, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS711.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS712, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS712.length)) || _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS713, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS713.length))))))));
2784
2257
  }
2785
2258
  function _M0FP36kazuph5reviw4core23is__ordered__list__item(line) {
2786
2259
  const chars = _M0MPC16string6String9to__array(line);
@@ -2799,15 +2272,15 @@ function _M0FP36kazuph5reviw4core23is__ordered__list__item(line) {
2799
2272
  return i < (chars.length - 1 | 0) && (_M0MPC15array5Array2atGcE(chars, i) === 46 && _M0MPC15array5Array2atGcE(chars, i + 1 | 0) === 32);
2800
2273
  }
2801
2274
  function _M0FP36kazuph5reviw4core16is__block__start(line) {
2802
- return _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS712, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS712.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS713, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS713.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS714, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS714.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS715, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS715.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS716, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS716.length)) || (_M0FP36kazuph5reviw4core23is__ordered__list__item(line) || (_M0FP36kazuph5reviw4core20is__horizontal__rule(line) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS717, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS717.length)) && _M0FP36kazuph5reviw4core22is__html__block__start(line)))))));
2275
+ return _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS715, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS715.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS716, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS716.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS717, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS717.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS718, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS718.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS719, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS719.length)) || (_M0FP36kazuph5reviw4core23is__ordered__list__item(line) || (_M0FP36kazuph5reviw4core20is__horizontal__rule(line) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS720, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS720.length)) && _M0FP36kazuph5reviw4core22is__html__block__start(line)))))));
2803
2276
  }
2804
2277
  function _M0FP36kazuph5reviw4core20is__mermaid__content(text) {
2805
2278
  const t = _M0FP36kazuph5reviw4core4trim(text);
2806
- return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS718, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS718.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS719, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS719.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS720, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS720.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728.length)) || _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS729, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS729.length))))))))))));
2279
+ return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS729, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS729.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS730, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS730.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS731, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS731.length)) || _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS732, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS732.length))))))))))));
2807
2280
  }
2808
2281
  function _M0FP36kazuph5reviw4core20is__table__separator(line) {
2809
2282
  const t = _M0FP36kazuph5reviw4core4trim(line);
2810
- if (!_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS730, 0, _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS730.length)) || !_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS731, 0, _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS731.length))) {
2283
+ if (!_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS733, 0, _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS733.length)) || !_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS734, 0, _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS734.length))) {
2811
2284
  return false;
2812
2285
  }
2813
2286
  const chars = _M0MPC16string6String9to__array(t);
@@ -2862,8 +2335,8 @@ function _M0FP36kazuph5reviw4core18make__heading__key(text, counter) {
2862
2335
  function _M0FP36kazuph5reviw4core17parse__table__row(line) {
2863
2336
  const result = [];
2864
2337
  const t = _M0FP36kazuph5reviw4core4trim(line);
2865
- const inner = _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS753, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS753.length)) && _M0MPC16string6String11has__suffix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS754, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS754.length)) ? _M0FP36kazuph5reviw4core18safe__slice__range(t, 1, t.length - 1 | 0) : _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS755, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS755.length)) ? _M0FP36kazuph5reviw4core11safe__slice(t, 1) : t;
2866
- const _it = _M0MPC16string6String5split(inner, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS752, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS752.length));
2338
+ const inner = _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS756, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS756.length)) && _M0MPC16string6String11has__suffix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS757, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS757.length)) ? _M0FP36kazuph5reviw4core18safe__slice__range(t, 1, t.length - 1 | 0) : _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS758, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS758.length)) ? _M0FP36kazuph5reviw4core11safe__slice(t, 1) : t;
2339
+ const _it = _M0MPC16string6String5split(inner, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS755, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS755.length));
2867
2340
  while (true) {
2868
2341
  const _bind = _M0MPB4Iter4nextGRPC16string10StringViewE(_it);
2869
2342
  if (_bind === undefined) {
@@ -2879,7 +2352,7 @@ function _M0FP36kazuph5reviw4core17parse__table__row(line) {
2879
2352
  }
2880
2353
  function _M0FP36kazuph5reviw4core14is__video__url(url) {
2881
2354
  const lower = _M0MPC16string6String9to__lower(url);
2882
- return _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS756, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS756.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS757, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS757.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS758, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS758.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761.length)) || _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS762, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS762.length)))))));
2355
+ return _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS762, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS762.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS763, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS763.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS764, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS764.length)) || _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS765, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS765.length)))))));
2883
2356
  }
2884
2357
  function _M0FP36kazuph5reviw4core14render__inline(text) {
2885
2358
  const chars = _M0MPC16string6String9to__array(text);
@@ -2978,7 +2451,7 @@ function _M0FP36kazuph5reviw4core14render__inline(text) {
2978
2451
  const link_text = _M0FP36kazuph5reviw4core18safe__slice__range(text, text_start, text_end);
2979
2452
  const link_url = _M0FP36kazuph5reviw4core18safe__slice__range(text, url_start, url_end);
2980
2453
  const lower_url = _M0MPC16string6String9to__lower(link_url);
2981
- if (_M0MPC16string6String11has__prefix(lower_url, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14render__inlineN7_2abindS768, 0, _M0FP36kazuph5reviw4core14render__inlineN7_2abindS768.length))) {
2454
+ if (_M0MPC16string6String11has__prefix(lower_url, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14render__inlineN7_2abindS771, 0, _M0FP36kazuph5reviw4core14render__inlineN7_2abindS771.length))) {
2982
2455
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core12escape__html(link_text));
2983
2456
  } else {
2984
2457
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<a href=\"");
@@ -3175,18 +2648,18 @@ function _M0FP36kazuph5reviw4core17is__allowed__attr(name) {
3175
2648
  }
3176
2649
  function _M0FP36kazuph5reviw4core18is__dangerous__css(value) {
3177
2650
  const lower = _M0MPC16string6String9to__lower(value);
3178
- return _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS781, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS781.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS782, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS782.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS783, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS783.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787.length)) || _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS788, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS788.length))))))));
2651
+ return _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS788, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS788.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS789, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS789.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS790, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS790.length)) || _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS791, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS791.length))))))));
3179
2652
  }
3180
2653
  function _M0FP36kazuph5reviw4core24is__event__handler__attr(name) {
3181
- return _M0MPC16string6String11has__prefix(name, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS789, 0, _M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS789.length));
2654
+ return _M0MPC16string6String11has__prefix(name, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS792, 0, _M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS792.length));
3182
2655
  }
3183
2656
  function _M0FP36kazuph5reviw4core13is__safe__url(url) {
3184
2657
  const lower = _M0MPC16string6String9to__lower(url);
3185
2658
  const trimmed = _M0FP36kazuph5reviw4core4trim(lower);
3186
- if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS790, 0, _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS790.length))) {
2659
+ if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS793, 0, _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS793.length))) {
3187
2660
  return false;
3188
2661
  }
3189
- if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS791, 0, _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS791.length))) {
2662
+ if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS794, 0, _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS794.length))) {
3190
2663
  return false;
3191
2664
  }
3192
2665
  return true;
@@ -3525,7 +2998,7 @@ function _M0FP36kazuph5reviw4core14sanitize__html(input) {
3525
2998
  if (!_M0FP36kazuph5reviw4core16is__allowed__tag(tag_name) && tag_name.length > 0) {
3526
2999
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "&lt;");
3527
3000
  const tag_content = _M0FP36kazuph5reviw4core18safe__slice__range(input, tag_start + 1 | 0, tag_end);
3528
- const trimmed_content = _M0MPC16string6String11has__suffix(tag_content, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS807, 0, _M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS807.length)) ? _M0FP36kazuph5reviw4core18safe__slice__range(tag_content, 0, tag_content.length - 1 | 0) : tag_content;
3001
+ const trimmed_content = _M0MPC16string6String11has__suffix(tag_content, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS810, 0, _M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS810.length)) ? _M0FP36kazuph5reviw4core18safe__slice__range(tag_content, 0, tag_content.length - 1 | 0) : tag_content;
3529
3002
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core12escape__html(trimmed_content));
3530
3003
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "&gt;");
3531
3004
  i = tag_end;
@@ -3569,7 +3042,7 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3569
3042
  i = i + 1 | 0;
3570
3043
  continue;
3571
3044
  }
3572
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS809, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS809.length)) && _M0FP36kazuph5reviw4core22is__html__block__start(line)) {
3045
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS812, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS812.length)) && _M0FP36kazuph5reviw4core22is__html__block__start(line)) {
3573
3046
  const tag_name = _M0FP36kazuph5reviw4core24extract__html__tag__name(line);
3574
3047
  if (tag_name === "details") {
3575
3048
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<details>\n");
@@ -3577,13 +3050,13 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3577
3050
  while (true) {
3578
3051
  if (i < len) {
3579
3052
  const current = _M0FP36kazuph5reviw4core4trim(_M0MPC15array5Array2atGsE(lines, i));
3580
- if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS811, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS811.length))) {
3053
+ if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814.length))) {
3581
3054
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core14sanitize__html(_M0MPC15array5Array2atGsE(lines, i)));
3582
3055
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "\n");
3583
3056
  i = i + 1 | 0;
3584
3057
  break;
3585
3058
  } else {
3586
- if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS812, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS812.length))) {
3059
+ if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS815, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS815.length))) {
3587
3060
  break;
3588
3061
  }
3589
3062
  }
@@ -3598,14 +3071,14 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3598
3071
  while (true) {
3599
3072
  if (i < len && depth > 0) {
3600
3073
  const current = _M0MPC15array5Array2atGsE(lines, i);
3601
- if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814.length))) {
3074
+ if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS817, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS817.length))) {
3602
3075
  depth = depth - 1 | 0;
3603
3076
  if (depth === 0) {
3604
3077
  i = i + 1 | 0;
3605
3078
  break;
3606
3079
  }
3607
3080
  }
3608
- if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS815, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS815.length))) {
3081
+ if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS818, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS818.length))) {
3609
3082
  depth = depth + 1 | 0;
3610
3083
  }
3611
3084
  _M0MPC15array5Array4pushGsE(inner_lines, current);
@@ -3650,7 +3123,7 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3650
3123
  }
3651
3124
  continue;
3652
3125
  }
3653
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS819, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS819.length))) {
3126
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822.length))) {
3654
3127
  const level = _M0FP36kazuph5reviw4core21count__heading__level(line);
3655
3128
  if (level >= 1 && level <= 6) {
3656
3129
  const content = _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(line, level + 1 | 0));
@@ -3676,14 +3149,14 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3676
3149
  i = i + 1 | 0;
3677
3150
  continue;
3678
3151
  }
3679
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS820, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS820.length))) {
3152
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS823, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS823.length))) {
3680
3153
  const lang = _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(line, 3));
3681
3154
  const code_block_start_line = i + 1 | 0;
3682
3155
  i = i + 1 | 0;
3683
3156
  const code_buf = _M0MPB13StringBuilder11new_2einner(0);
3684
3157
  let code_first = true;
3685
3158
  while (true) {
3686
- if (i < len && !_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822.length))) {
3159
+ if (i < len && !_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS825, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS825.length))) {
3687
3160
  if (!code_first) {
3688
3161
  _M0IPB13StringBuilderPB6Logger13write__string(code_buf, "\n");
3689
3162
  }
@@ -3725,10 +3198,10 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3725
3198
  }
3726
3199
  continue;
3727
3200
  }
3728
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS823, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS823.length))) {
3201
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS826, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS826.length))) {
3729
3202
  const quote_lines = [];
3730
3203
  while (true) {
3731
- if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS825, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS825.length))) {
3204
+ if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS828, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS828.length))) {
3732
3205
  const content = _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(_M0MPC15array5Array2atGsE(lines, i), 1));
3733
3206
  _M0MPC15array5Array4pushGsE(quote_lines, content);
3734
3207
  i = i + 1 | 0;
@@ -3756,16 +3229,16 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3756
3229
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</blockquote>\n");
3757
3230
  continue;
3758
3231
  }
3759
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS830, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS830.length)) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS831, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS831.length))) {
3232
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833.length)) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834.length))) {
3760
3233
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<ul>\n");
3761
3234
  while (true) {
3762
- if (i < len && (_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836.length)) || _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS837, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS837.length)))) {
3235
+ if (i < len && (_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS839, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS839.length)) || _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS840, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS840.length)))) {
3763
3236
  const item_text = _M0FP36kazuph5reviw4core11safe__slice(_M0MPC15array5Array2atGsE(lines, i), 2);
3764
- if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833.length))) {
3237
+ if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836.length))) {
3765
3238
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<li class=\"task-list-item\"><input type=\"checkbox\" disabled /> ");
3766
3239
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core14render__inline(_M0FP36kazuph5reviw4core11safe__slice(item_text, 4)));
3767
3240
  } else {
3768
- if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834.length)) || _M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS835, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS835.length))) {
3241
+ if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS837, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS837.length)) || _M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS838, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS838.length))) {
3769
3242
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<li class=\"task-list-item\"><input type=\"checkbox\" checked disabled /> ");
3770
3243
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core14render__inline(_M0FP36kazuph5reviw4core11safe__slice(item_text, 4)));
3771
3244
  } else {
@@ -3822,7 +3295,7 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
3822
3295
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</tr>\n</thead>\n<tbody>\n");
3823
3296
  i = i + 2 | 0;
3824
3297
  while (true) {
3825
- if (i < len && _M0MPC16string6String8contains(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS848, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS848.length))) {
3298
+ if (i < len && _M0MPC16string6String8contains(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS851, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS851.length))) {
3826
3299
  const cells = _M0FP36kazuph5reviw4core17parse__table__row(_M0MPC15array5Array2atGsE(lines, i));
3827
3300
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<tr>\n");
3828
3301
  const _bind$2 = cells.length;
@@ -4086,7 +3559,7 @@ function _M0FP36kazuph5reviw4core26build__page__start_2einner(buf, filename, fil
4086
3559
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github.min.css\" id=\"hljs-theme-light\">");
4087
3560
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<script src=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js\"></script>");
4088
3561
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<style>");
4089
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "/* Dark theme (default) */\n:root {\n color-scheme: dark;\n --bg: #0f172a;\n --bg-gradient: radial-gradient(circle at 20% 20%, #1e293b 0%, #0b1224 35%, #0b1224 60%, #0f172a 100%);\n --panel: #111827;\n --panel-alpha: rgba(15, 23, 42, 0.9);\n --panel-solid: #0b1224;\n --card-bg: rgba(11, 18, 36, 0.95);\n --input-bg: rgba(15, 23, 42, 0.6);\n --border: #1f2937;\n --accent: #60a5fa;\n --accent-2: #f472b6;\n --text: #e5e7eb;\n --text-inverse: #0b1224;\n --muted: #94a3b8;\n --comment: #0f766e;\n --badge: #22c55e;\n --table-bg: rgba(15, 23, 42, 0.7);\n --row-even: rgba(30, 41, 59, 0.4);\n --row-odd: rgba(15, 23, 42, 0.2);\n --selected-bg: rgba(96,165,250,0.15);\n --hover-bg: rgba(96,165,250,0.08);\n --shadow-color: rgba(0,0,0,0.35);\n --code-bg: #1e293b;\n --error: #dc3545;\n}\n/* Light theme */\n[data-theme=\"light\"] {\n color-scheme: light;\n --bg: #f8fafc;\n --bg-gradient: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);\n --panel: #ffffff;\n --panel-alpha: rgba(255, 255, 255, 0.95);\n --panel-solid: #ffffff;\n --card-bg: rgba(255, 255, 255, 0.98);\n --input-bg: #f1f5f9;\n --border: #e2e8f0;\n --accent: #3b82f6;\n --accent-2: #ec4899;\n --text: #1e293b;\n --text-inverse: #ffffff;\n --muted: #64748b;\n --comment: #14b8a6;\n --badge: #22c55e;\n --table-bg: #ffffff;\n --row-even: #f8fafc;\n --row-odd: #ffffff;\n --selected-bg: rgba(59,130,246,0.12);\n --hover-bg: rgba(59,130,246,0.06);\n --shadow-color: rgba(0,0,0,0.1);\n --code-bg: #f1f5f9;\n --error: #dc3545;\n}\n* { box-sizing: border-box; }\nbody {\n margin: 0;\n font-family: \"Inter\", \"Hiragino Sans\", system-ui, -apple-system, sans-serif;\n background: var(--bg-gradient);\n color: var(--text);\n min-height: 100vh;\n transition: background 200ms ease, color 200ms ease;\n}\nheader {\n position: sticky;\n top: 0;\n z-index: 5;\n padding: 12px 16px;\n background: var(--panel-alpha);\n backdrop-filter: blur(8px);\n border-bottom: 1px solid var(--border);\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n transition: background 200ms ease, border-color 200ms ease;\n}\nheader .meta { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }\nheader .actions { display: flex; gap: 8px; align-items: center; }\nheader h1 { display: flex; flex-direction: column; margin: 0; line-height: 1.3; }\nheader h1 .title-path { font-size: 11px; font-weight: 400; color: var(--muted); }\nheader h1 .title-file { font-size: 16px; font-weight: 700; }\nheader .badge {\n background: var(--selected-bg);\n color: var(--text);\n padding: 6px 10px;\n border-radius: 8px;\n font-size: 12px;\n border: 1px solid var(--border);\n}\nheader button {\n background: linear-gradient(135deg, #38bdf8, #6366f1);\n color: var(--text-inverse);\n border: none;\n border-radius: 10px;\n padding: 10px 14px;\n font-weight: 700;\n cursor: pointer;\n box-shadow: 0 10px 30px var(--shadow-color);\n transition: transform 120ms ease, box-shadow 120ms ease;\n}\nheader button:hover { transform: translateY(-1px); box-shadow: 0 16px 36px var(--shadow-color); }\nheader button:active { transform: translateY(0); }\n/* Theme toggle button */\n.theme-toggle {\n background: var(--selected-bg);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 8px 10px;\n font-size: 16px;\n cursor: pointer;\n transition: background 120ms ease, transform 120ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n height: 38px;\n}\n.theme-toggle:hover { background: var(--hover-bg); transform: scale(1.05); }\n\n.wrap { padding: 12px 16px 12px; }\n.toolbar {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n margin: 10px 0 12px;\n color: var(--muted);\n font-size: 13px;\n}\n.toolbar button {\n background: rgba(96,165,250,0.12);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 8px 10px;\n font-size: 13px;\n cursor: pointer;\n}\n.toolbar button:hover { background: rgba(96,165,250,0.2); }\n\n.table-box {\n background: var(--table-bg);\n border: 1px solid var(--border);\n border-radius: 12px;\n overflow: auto;\n max-height: calc(100vh - 110px);\n box-shadow: 0 20px 50px var(--shadow-color);\n transition: background 200ms ease, border-color 200ms ease;\n}\ntable {\n border-collapse: collapse;\n width: 100%;\n min-width: 540px;\n table-layout: fixed;\n}\nthead th {\n position: sticky;\n top: 0;\n z-index: 3;\n background: var(--panel-solid) !important;\n color: var(--muted);\n font-size: 12px;\n text-align: center;\n padding: 0;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n white-space: nowrap;\n transition: background 200ms ease;\n}\nthead th:not(.selected) {\n background: var(--panel-solid) !important;\n}\nthead th:first-child,\ntbody th {\n width: 28px;\n min-width: 28px;\n max-width: 28px;\n}\nthead th .th-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 8px 6px;\n position: relative;\n height: 100%;\n}\nthead th.filtered .th-inner {\n background: linear-gradient(135deg, rgba(96,165,250,0.18), rgba(34,197,94,0.18));\n color: #e5e7eb;\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 rgba(255,255,255,0.05);\n}\nthead th.filtered .th-inner::after {\n content: 'FILTER';\n font-size: 10px;\n color: #c7d2fe;\n background: rgba(99,102,241,0.24);\n border: 1px solid rgba(99,102,241,0.45);\n padding: 1px 6px;\n border-radius: 999px;\n position: absolute;\n bottom: 4px;\n right: 6px;\n}\n.resizer {\n position: absolute;\n right: 2px;\n top: 0;\n width: 6px;\n height: 100%;\n cursor: col-resize;\n user-select: none;\n touch-action: none;\n opacity: 0.6;\n}\n.resizer::after {\n content: '';\n position: absolute;\n top: 10%;\n bottom: 10%;\n left: 2px;\n width: 2px;\n background: rgba(96,165,250,0.6);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 120ms ease;\n}\nthead th:hover .resizer::after { opacity: 1; }\n\n.freeze {\n position: sticky !important;\n background: var(--panel-solid);\n z-index: 4;\n}\n.freeze-row {\n position: sticky !important;\n background: var(--panel-solid);\n}\n.freeze-row.freeze {\n z-index: 6;\n}\nth.freeze-row {\n z-index: 6;\n}\ntbody th {\n position: sticky;\n left: 0;\n z-index: 2;\n background: var(--panel-solid);\n color: var(--muted);\n text-align: right;\n padding: 8px 10px;\n font-size: 12px;\n border-right: 1px solid var(--border);\n border-bottom: 1px solid var(--border);\n transition: background 200ms ease;\n}\ntd {\n padding: 10px 10px;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n background: var(--row-odd);\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n cursor: pointer;\n transition: background 120ms ease, box-shadow 120ms ease;\n position: relative;\n white-space: pre-wrap;\n word-break: break-word;\n max-width: 320px;\n}\ntr:nth-child(even) td:not(.selected):not(.has-comment) { background: var(--row-even); }\ntd:hover:not(.selected) { background: var(--hover-bg); box-shadow: inset 0 0 0 1px rgba(96,165,250,0.25); }\ntd.has-comment { background: rgba(34,197,94,0.12); box-shadow: inset 0 0 0 1px rgba(34,197,94,0.35); }\ntd.selected, tbody th.selected { background: rgba(99,102,241,0.22) !important; box-shadow: inset 0 0 0 1px rgba(99,102,241,0.45); }\n.preview-highlight { background: rgba(167,139,250,0.18) !important; box-shadow: inset 0 0 0 2px rgba(139,92,246,0.35); border-radius: 4px; transition: background 150ms ease, box-shadow 150ms ease; padding-left: 8px; margin-left: -8px; }\nthead th.selected { background: #c7d2fe !important; box-shadow: inset 0 0 0 1px rgba(99,102,241,0.45); }\n[data-theme=\"dark\"] thead th.selected { background: #3730a3 !important; }\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging td, body.dragging tbody th { cursor: crosshair; }\ntbody th { cursor: pointer; }\ntd .dot {\n position: absolute;\n right: 6px;\n top: 6px;\n width: 8px;\n height: 8px;\n border-radius: 99px;\n background: var(--badge);\n box-shadow: 0 0 0 4px rgba(34,197,94,0.15);\n}\n.floating {\n position: fixed;\n z-index: 10;\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 12px;\n padding: 12px;\n width: min(420px, calc(100vw - 32px));\n box-shadow: 0 20px 40px var(--shadow-color);\n display: none;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.card-close-x {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 28px;\n height: 28px;\n padding: 0;\n background: transparent;\n border: none;\n color: var(--muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 120ms ease, color 120ms ease;\n}\n.card-close-x:hover { background: var(--border); color: var(--text);\n}\n.floating header {\n position: static;\n background: transparent;\n backdrop-filter: none;\n border: none;\n padding: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.floating h2 { font-size: 14px; margin: 0; color: var(--text); }\n.floating button {\n margin-left: 8px;\n background: var(--accent);\n color: var(--text-inverse);\n border: 1px solid var(--accent);\n padding: 6px 10px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 120ms ease, opacity 120ms ease;\n}\n.floating button.icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n}\n.floating button:hover { opacity: 0.85; }\n.copy-btn-float {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n background: var(--panel-solid) !important;\n border: 1px solid var(--border) !important;\n color: var(--muted) !important;\n opacity: 0.7;\n}\n.copy-btn-float:hover { opacity: 1 !important; }\n.card-actions-split {\n display: flex;\n justify-content: space-between !important;\n align-items: center;\n margin-top: 8px;\n}\n.danger-text {\n background: transparent !important;\n border: none !important;\n color: #ef4444 !important;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n padding: 4px 8px;\n}\n.danger-text:hover { color: #dc2626 !important; text-decoration: underline; }\n.floating textarea {\n width: 100%;\n min-height: 70px;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n padding: 10px;\n font-size: 13px;\n line-height: 1.4;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.floating textarea:focus {\n outline: none;\n border-color: var(--accent);\n}\n.floating .actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 10px;\n}\n.floating .actions button.primary {\n background: linear-gradient(135deg, #22c55e, #16a34a);\n color: var(--text-inverse);\n border: none;\n font-weight: 700;\n box-shadow: 0 10px 30px rgba(22,163,74,0.35);\n}\n.comment-list {\n position: fixed;\n right: 14px;\n bottom: 14px;\n width: 320px;\n max-height: 60vh;\n overflow: auto;\n border: 1px solid var(--border);\n border-radius: 12px;\n background: var(--card-bg);\n box-shadow: 0 18px 40px var(--shadow-color);\n padding: 12px;\n backdrop-filter: blur(6px);\n transition: opacity 120ms ease, transform 120ms ease, background 200ms ease;\n}\n.comment-list h3 { margin: 0 0 8px 0; font-size: 13px; color: var(--muted); }\n.comment-list ol {\n margin: 0;\n padding-left: 18px;\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n}\n.comment-list li { margin-bottom: 6px; }\n.comment-list .hint { color: var(--muted); font-size: 12px; }\n.pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; background: var(--selected-bg); border: 1px solid var(--border); font-size: 12px; color: var(--text); cursor: pointer; transition: background 150ms ease, border-color 150ms ease; }\n.pill:hover { background: var(--hover-bg); border-color: var(--accent); }\n.pill strong { color: var(--text); font-weight: 700; }\n.comment-list.collapsed {\n opacity: 0;\n pointer-events: none;\n transform: translateY(8px) scale(0.98);\n}\n.md-preview {\n background: var(--input-bg);\n border: 1px solid var(--border);\n border-radius: 12px;\n padding: 14px;\n margin-bottom: 12px;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.md-layout {\n display: flex;\n gap: 16px;\n align-items: stretch;\n margin-top: 8px;\n height: calc(100vh - 80px);\n}\n.md-left {\n flex: 1;\n min-width: 200px;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-left .md-preview {\n max-height: none;\n}\n.md-right {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-right .table-box {\n max-width: none;\n min-width: 0;\n max-height: none;\n overflow: visible;\n}\n/* Ensure thead is opaque in md-right to prevent content showing through */\n.md-right thead th {\n background: var(--panel-solid) !important;\n}\n.md-right thead th.selected {\n background: #c7d2fe !important;\n}\n[data-theme=\"dark\"] .md-right thead th {\n background: var(--panel-solid) !important;\n}\n[data-theme=\"dark\"] .md-right thead th.selected {\n background: #3730a3 !important;\n}\n\n/* === Media Sidebar === */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden {\n display: none;\n}\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar {\n width: 4px;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-track {\n background: transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 4px;\n}\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover {\n border-color: var(--accent);\n transform: scale(1.05);\n box-shadow: 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb.active {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n.media-sidebar-thumb svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg {\n width: 100% !important;\n height: 100% !important;\n max-width: 100%;\n max-height: 100%;\n display: block;\n}\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img {\n max-width: none;\n max-height: none;\n border-radius: 0;\n}\n.media-sidebar-viewer-content video {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 8px;\n background: #000;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap {\n width: 100%;\n overflow: auto;\n display: flex;\n justify-content: center;\n background: var(--panel);\n border-radius: 8px;\n padding: 16px;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap svg {\n width: 100% !important;\n height: auto !important;\n max-height: calc(100vh - 200px);\n}\n\n/* === Sidebar Rich Viewer: Mermaid zoom/pan/minimap === */\n.sidebar-mermaid-controls {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 8px;\n width: 100%;\n box-sizing: border-box;\n}\n.sidebar-mermaid-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 5px;\n padding: 4px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n line-height: 1;\n transition: background 0.15s ease;\n}\n.sidebar-mermaid-controls button:hover { background: var(--hover-bg); }\n.sidebar-mermaid-controls .sidebar-zoom-info {\n font-size: 11px;\n color: var(--muted);\n min-width: 40px;\n text-align: center;\n user-select: none;\n}\n.sidebar-mermaid-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n background: var(--panel);\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.sidebar-mermaid-viewport:active { cursor: grabbing; }\n.sidebar-mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.sidebar-mermaid-wrapper svg {\n display: block;\n}\n.sidebar-minimap {\n position: absolute;\n top: 12px;\n right: 8px;\n bottom: auto;\n left: auto;\n width: 140px;\n height: 100px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0,0,0,0.12);\n z-index: 3;\n}\n.sidebar-minimap-content {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px;\n}\n.sidebar-minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.sidebar-minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n\n/* === Sidebar Rich Viewer: Image zoom/pan === */\n.sidebar-image-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.sidebar-image-viewport.panning { cursor: grabbing; }\n.sidebar-image-viewport img {\n transform-origin: 0 0;\n max-width: none !important;\n max-height: none !important;\n border-radius: 0 !important;\n user-select: none;\n -webkit-user-drag: none;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 10px;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(0, 0, 0, 0.65);\n color: #fff;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n pointer-events: none;\n z-index: 3;\n backdrop-filter: blur(4px);\n transition: opacity 0.3s ease;\n user-select: none;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-image-hint {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n color: var(--muted);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.4s ease;\n text-align: center;\n z-index: 2;\n}\n\n/* === Sidebar Rich Viewer: Video container (timeline uses shared .video-timeline classes) === */\n.sidebar-video-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.sidebar-video-container video {\n width: 100%;\n border-radius: 8px 8px 0 0;\n background: #000;\n max-height: calc(100vh - 260px);\n}\n\n.media-sidebar-viewer-label {\n margin-top: 12px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n word-break: break-all;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 8px;\n left: 8px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 6px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n z-index: 2;\n transition: background 0.15s ease;\n}\n.media-sidebar-viewer-close:hover {\n background: var(--hover-bg);\n}\n.sidebar-viewer-settings-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n background: rgba(0,0,0,0.5);\n border: none;\n border-radius: 8px;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n font-size: 16px;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-viewer-settings-btn:hover {\n background: rgba(0,0,0,0.8);\n}\n.sidebar-viewer-settings-btn + .video-settings-panel {\n position: absolute;\n top: 44px;\n right: 8px;\n}\n\n.media-sidebar-toggle {\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 0.15s ease, border-color 0.15s ease;\n display: none;\n}\n.media-sidebar-toggle.has-media {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.media-sidebar-toggle:hover {\n background: var(--hover-bg);\n border-color: var(--accent);\n}\n.media-sidebar-toggle .toggle-count {\n font-size: 10px;\n font-weight: 700;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 1px 5px;\n border-radius: 8px;\n line-height: 1.4;\n}\n.view-toggle {\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n.view-toggle:hover { background: rgba(96,165,250,0.2); }\n.view-toggle.active { background: var(--accent); color: #fff; }\n@media (max-width: 1200px) {\n .media-sidebar-viewer.open {\n width: 40vw;\n max-width: calc(100vw - 350px);\n }\n}\n@media (max-width: 900px) {\n .media-sidebar-thumbs {\n width: 72px;\n }\n .media-sidebar-thumb {\n width: 56px;\n height: 42px;\n }\n .media-sidebar-viewer.open {\n width: 35vw;\n max-width: calc(100vw - 300px);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .media-sidebar,\n .media-sidebar-viewer,\n .media-sidebar-thumb {\n transition: none !important;\n }\n}\n\n.md-preview h1, .md-preview h2, .md-preview h3, .md-preview h4 {\n margin: 0.4em 0 0.2em;\n}\n/* Heading toggle feature */\n.md-preview .md-heading-toggle {\n margin: 0;\n}\n.md-preview .heading-toggle-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6em;\n transition: transform 150ms ease;\n color: var(--muted);\n flex-shrink: 0;\n cursor: pointer;\n padding: 4px 8px;\n margin: -4px 0 -4px -8px;\n border-radius: 4px;\n}\n.md-preview .heading-toggle-icon:hover {\n background: var(--hover-bg);\n color: var(--accent);\n}\n.md-preview .md-heading-toggle.collapsed .heading-toggle-icon {\n transform: rotate(-90deg);\n}\n.md-preview details.heading-toggle {\n margin: 0.2em 0;\n}\n.md-preview details.heading-toggle > summary {\n list-style: none;\n cursor: default;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.md-preview details.heading-toggle > summary::-webkit-details-marker {\n display: none;\n}\n.md-preview details.heading-toggle > summary > .md-heading-toggle {\n flex: 1;\n}\n.md-preview details.heading-toggle:not([open]) > .toggle-content {\n display: none;\n}\n.md-preview .heading-section-content {\n /* Content wrapper for collapsible sections */\n}\n.md-preview .heading-section-content.hidden {\n display: none;\n}\n.md-preview p { margin: 0.3em 0; line-height: 1.5; }\n.md-preview img { max-width: 100%; height: auto; border-radius: 8px; }\n.md-preview video.video-preview { max-width: 100%; height: auto; border-radius: 8px; background: #000; }\n.md-preview table video.video-preview {\n display: block;\n width: 100%;\n height: auto;\n}\n.md-preview code { background: rgba(255,255,255,0.08); padding: 2px 4px; border-radius: 4px; }\n.md-preview pre {\n background: var(--code-bg);\n padding: 12px 16px;\n border-radius: 8px;\n overflow: auto;\n border: 1px solid var(--border);\n}\n.md-preview pre code {\n background: none;\n padding: 0;\n font-size: 13px;\n line-height: 1.5;\n}\n.md-preview pre code.hljs {\n background: transparent;\n padding: 0;\n}\n/* YAML Frontmatter table */\n.frontmatter-table {\n margin-bottom: 20px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--border);\n background: var(--panel);\n}\n.frontmatter-table table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n}\n.frontmatter-table thead th {\n background: linear-gradient(135deg, rgba(147, 51, 234, 0.15), rgba(96, 165, 250, 0.15));\n color: var(--text);\n font-size: 12px;\n font-weight: 600;\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n}\n.frontmatter-table tbody th {\n background: rgba(147, 51, 234, 0.08);\n color: #c084fc;\n font-weight: 500;\n font-size: 12px;\n padding: 8px 10px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n}\n.frontmatter-table tbody td {\n padding: 8px 14px;\n font-size: 13px;\n border-bottom: 1px solid var(--border);\n word-break: break-word;\n}\n.frontmatter-table tbody tr:last-child th,\n.frontmatter-table tbody tr:last-child td {\n border-bottom: none;\n}\n.frontmatter-table .fm-tag {\n display: inline-block;\n background: rgba(96, 165, 250, 0.15);\n color: var(--accent);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n}\n.frontmatter-table pre {\n margin: 0;\n background: var(--code-bg);\n padding: 8px;\n border-radius: 4px;\n font-size: 11px;\n}\n/* Reviw questions preview cards */\n.reviw-questions-preview {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.reviw-q-card {\n background: var(--code-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 10px 12px;\n}\n.reviw-q-card.resolved {\n border-left: 3px solid #22c55e;\n}\n.reviw-q-card.pending {\n border-left: 3px solid #f59e0b;\n}\n.reviw-q-header {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-q-header strong {\n color: var(--accent);\n}\n.reviw-q-question {\n font-size: 13px;\n color: var(--text);\n margin-bottom: 6px;\n}\n.reviw-q-options {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 6px;\n}\n.reviw-q-answer {\n font-size: 12px;\n color: #22c55e;\n background: rgba(34, 197, 94, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n}\n[data-theme=\"light\"] .frontmatter-table tbody th {\n color: #7c3aed;\n}\n/* Table scroll container and indicator */\n.table-scroll-container {\n position: relative;\n margin: 16px 0;\n}\n.table-scroll-wrapper {\n overflow-x: auto;\n border-radius: 8px;\n}\n.scroll-hint {\n text-align: right;\n font-size: 12px;\n color: var(--accent);\n padding: 4px 8px;\n margin-bottom: 4px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 200ms ease;\n}\n.table-scroll-container.can-scroll .scroll-hint {\n opacity: 0.8;\n visibility: visible;\n}\n.table-scroll-container.scrolled-end .scroll-hint {\n opacity: 0;\n visibility: hidden;\n}\n/* Markdown tables in preview */\n.md-preview table:not(.frontmatter-table table) {\n min-width: 100%;\n width: max-content;\n border-collapse: collapse;\n border: 1px solid var(--border);\n border-radius: 8px;\n}\n.md-preview table:not(.frontmatter-table table) th,\n.md-preview table:not(.frontmatter-table table) td {\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n word-break: break-word;\n overflow-wrap: anywhere;\n width: auto;\n}\n/* Force equal column widths when colgroup is not specified */\n.md-preview table:not(.frontmatter-table table) colgroup ~ * th,\n.md-preview table:not(.frontmatter-table table) colgroup ~ * td {\n width: auto;\n}\n.md-preview table:not(.frontmatter-table table) td:has(video),\n.md-preview table:not(.frontmatter-table table) td:has(img) {\n padding: 4px;\n line-height: 0;\n}\n.md-preview table:not(.frontmatter-table table) td video,\n.md-preview table:not(.frontmatter-table table) td img {\n width: 100%;\n max-width: 100%;\n height: auto;\n}\n.md-preview table:not(.frontmatter-table table) th {\n background: var(--panel);\n font-weight: 600;\n font-size: 13px;\n}\n.md-preview table:not(.frontmatter-table table) td {\n font-size: 13px;\n}\n.md-preview table:not(.frontmatter-table table) tr:last-child td {\n border-bottom: none;\n}\n.md-preview table:not(.frontmatter-table table) tr:hover td {\n background: var(--hover-bg);\n}\n/* Source table (右ペイン) */\n.table-box table {\n table-layout: fixed;\n width: 100%;\n}\n.table-box th,\n.table-box td {\n word-break: break-word;\n min-width: 140px;\n}\n.table-box th:first-child,\n.table-box td:first-child {\n min-width: 320px;\n max-width: 480px;\n}\n/* Image fullscreen overlay */\n.image-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1001;\n display: none;\n flex-direction: column;\n}\n.image-fullscreen-overlay.visible {\n display: flex;\n}\n.image-fs-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.image-fs-content:active { cursor: grabbing; }\n.image-fs-content .image-fs-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.image-fs-content .image-fs-wrapper img {\n display: block;\n}\n/* Video fullscreen overlay */\n.video-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.95);\n z-index: 1001;\n display: none;\n justify-content: center;\n align-items: center;\n}\n.video-fullscreen-overlay.visible {\n display: flex;\n}\n.video-close-btn {\n position: absolute;\n top: 14px;\n right: 14px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-close-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-container {\n width: 90vw;\n height: 90vh;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.video-container video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n}\n/* Video Timeline - shared base styles (used by both fullscreen and sidebar) */\n.video-timeline {\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n overflow-x: auto;\n backdrop-filter: blur(8px);\n height: 80px;\n padding: 8px;\n gap: 4px;\n}\n.video-timeline::-webkit-scrollbar {\n height: 6px;\n}\n.video-timeline::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n}\n/* Fullscreen-specific video timeline positioning */\n.video-container .video-timeline {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 5;\n}\n/* Sidebar-specific video timeline sizing */\n.sidebar-video-container .video-timeline {\n width: 100%;\n height: 72px;\n padding: 6px;\n gap: 3px;\n border-radius: 0 0 8px 8px;\n background: rgba(0, 0, 0, 0.88);\n}\n.sidebar-video-container .video-timeline::-webkit-scrollbar { height: 5px; }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.08); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.25); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.4); }\n.timeline-thumb {\n height: 64px;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: 4px;\n flex-shrink: 0;\n transition: border-color 0.2s, transform 0.15s;\n opacity: 0.85;\n}\n.sidebar-video-container .timeline-thumb {\n height: 52px;\n opacity: 0.8;\n}\n.timeline-thumb:hover {\n border-color: rgba(59, 130, 246, 0.5);\n opacity: 1;\n transform: scale(1.05);\n}\n.timeline-thumb.active {\n border-color: #3b82f6;\n opacity: 1;\n box-shadow: 0 0 12px rgba(59, 130, 246, 0.5);\n}\n.sidebar-video-container .timeline-thumb.active {\n box-shadow: 0 0 8px rgba(59, 130, 246, 0.4);\n}\n.timeline-loading {\n color: rgba(255, 255, 255, 0.6);\n font-size: 12px;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.sidebar-video-container .timeline-loading {\n font-size: 11px;\n padding: 6px 10px;\n gap: 6px;\n color: rgba(255, 255, 255, 0.5);\n}\n.timeline-loading::before {\n content: '';\n width: 14px;\n height: 14px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top-color: #3b82f6;\n border-radius: 50%;\n animation: timeline-spin 0.8s linear infinite;\n}\n.sidebar-video-container .timeline-loading::before {\n width: 12px;\n height: 12px;\n border-width: 2px;\n border-color: rgba(255, 255, 255, 0.25);\n border-top-color: #3b82f6;\n}\n@keyframes timeline-spin {\n to { transform: rotate(360deg); }\n}\n.timeline-time {\n position: absolute;\n bottom: 2px;\n right: 4px;\n font-size: 9px;\n color: #fff;\n background: rgba(0, 0, 0, 0.7);\n padding: 1px 4px;\n border-radius: 2px;\n pointer-events: none;\n}\n.sidebar-video-container .timeline-time {\n font-size: 8px;\n right: 3px;\n padding: 1px 3px;\n}\n.timeline-thumb-wrapper {\n position: relative;\n flex-shrink: 0;\n}\n/* Video threshold settings panel */\n.video-settings-btn {\n position: absolute;\n top: 14px;\n right: 64px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-settings-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-settings-panel {\n position: absolute;\n top: 60px;\n right: 14px;\n background: rgba(0, 0, 0, 0.9);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n padding: 16px;\n z-index: 15;\n min-width: 280px;\n display: none;\n backdrop-filter: blur(8px);\n}\n.video-settings-panel.visible {\n display: block;\n}\n.video-settings-panel h4 {\n margin: 0 0 8px;\n color: #fff;\n font-size: 14px;\n font-weight: 500;\n}\n.video-settings-desc {\n margin: 0 0 12px;\n color: rgba(255, 255, 255, 0.6);\n font-size: 11px;\n line-height: 1.4;\n}\n.video-settings-buttons {\n display: flex;\n gap: 6px;\n margin-bottom: 12px;\n}\n.video-settings-buttons button {\n flex: 1;\n padding: 8px 4px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.8);\n font-size: 11px;\n cursor: pointer;\n transition: all 120ms ease;\n}\n.video-settings-buttons button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n.video-settings-buttons button.selected {\n background: #3b82f6;\n border-color: #3b82f6;\n color: #fff;\n}\n.video-settings-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n.video-settings-actions button {\n flex: 1;\n padding: 8px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n cursor: pointer;\n transition: background 120ms ease;\n}\n.video-settings-actions .reset-btn {\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n}\n.video-settings-actions .reset-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n/* Video Shortcuts Help */\n.video-shortcuts-help {\n opacity: 0.85;\n transition: opacity 0.2s;\n}\n.video-shortcuts-help:hover {\n opacity: 1;\n}\n.video-shortcuts-help .shortcuts-title {\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 10px;\n color: rgba(255, 255, 255, 0.7);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.video-shortcuts-help .shortcuts-title::before {\n content: '\\u2328';\n font-size: 14px;\n}\n.video-shortcuts-help .shortcut-item {\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n.video-shortcuts-help .shortcut-item:last-child {\n margin-bottom: 0;\n}\n.video-shortcuts-help kbd {\n display: inline-block;\n background: rgba(255, 255, 255, 0.15);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n font-weight: 500;\n min-width: 18px;\n text-align: center;\n margin-right: 2px;\n}\n/* Reviw Questions Modal */\n.reviw-questions-overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 1100;\n justify-content: center;\n align-items: center;\n}\n.reviw-questions-overlay.visible {\n display: flex;\n}\n.reviw-questions-modal {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 16px;\n width: 90%;\n max-width: 600px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5);\n}\n.reviw-questions-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-questions-header h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text);\n}\n.reviw-questions-header h2 span {\n font-size: 14px;\n color: var(--text-dim);\n font-weight: 400;\n}\n.reviw-questions-close {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--text-dim);\n font-size: 18px;\n cursor: pointer;\n border-radius: 8px;\n transition: all 150ms ease;\n}\n.reviw-questions-close:hover {\n background: var(--border);\n color: var(--text);\n}\n.reviw-questions-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.reviw-questions-footer {\n padding: 12px 20px;\n border-top: 1px solid var(--border);\n display: flex;\n justify-content: flex-end;\n}\n.reviw-questions-later {\n padding: 8px 16px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text-dim);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-questions-later:hover {\n background: var(--border);\n color: var(--text);\n}\n/* Question Item */\n.reviw-question-item {\n margin-bottom: 20px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-question-item:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom: none;\n}\n.reviw-question-text {\n font-size: 14px;\n color: var(--text);\n margin-bottom: 12px;\n line-height: 1.5;\n}\n.reviw-question-options {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n.reviw-question-option {\n padding: 8px 14px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-question-option:hover {\n border-color: var(--accent);\n background: rgba(96, 165, 250, 0.1);\n}\n.reviw-question-option.selected {\n border-color: var(--accent);\n background: var(--accent);\n color: var(--text-inverse);\n}\n.reviw-question-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n border-radius: 8px;\n font-size: 13px;\n resize: vertical;\n min-height: 60px;\n}\n.reviw-question-input:focus {\n outline: none;\n border-color: var(--accent);\n}\n.reviw-question-input::placeholder {\n color: var(--text-dim);\n}\n.reviw-check-mark {\n color: #22c55e;\n font-weight: bold;\n}\n.reviw-question-item.answered {\n border-color: #22c55e;\n background: rgba(34, 197, 94, 0.05);\n}\n.reviw-question-submit {\n margin-top: 10px;\n padding: 8px 16px;\n border: none;\n background: var(--accent);\n color: var(--text-inverse);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 150ms ease;\n}\n.reviw-question-submit:hover {\n filter: brightness(1.1);\n}\n.reviw-question-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n/* Resolved Section */\n.reviw-resolved-section {\n margin-top: 16px;\n border-top: 1px solid var(--border);\n padding-top: 12px;\n}\n.reviw-resolved-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n color: var(--text-dim);\n font-size: 13px;\n cursor: pointer;\n padding: 4px 0;\n}\n.reviw-resolved-toggle:hover {\n color: var(--text);\n}\n.reviw-resolved-toggle .arrow {\n transition: transform 150ms ease;\n}\n.reviw-resolved-toggle.open .arrow {\n transform: rotate(90deg);\n}\n.reviw-resolved-list {\n display: none;\n margin-top: 12px;\n}\n.reviw-resolved-list.visible {\n display: block;\n}\n.reviw-resolved-item {\n padding: 10px 12px;\n background: var(--input-bg);\n border-radius: 8px;\n margin-bottom: 8px;\n opacity: 0.7;\n}\n.reviw-resolved-item:last-child {\n margin-bottom: 0;\n}\n.reviw-resolved-q {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-resolved-a {\n font-size: 13px;\n color: var(--text);\n}\n/* Notice Bar */\n.reviw-questions-bar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n font-size: 13px;\n z-index: 1050;\n justify-content: center;\n align-items: center;\n gap: 12px;\n}\n.reviw-questions-bar.visible {\n display: flex;\n}\n.reviw-questions-bar button {\n padding: 4px 12px;\n border: 1px solid rgba(255, 255, 255, 0.3);\n background: rgba(255, 255, 255, 0.1);\n color: var(--text-inverse);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n transition: all 150ms ease;\n}\n.reviw-questions-bar button:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n/* Adjust layout when bar is visible */\nbody.has-questions-bar header {\n top: 36px;\n}\nbody.has-questions-bar .toolbar,\nbody.has-questions-bar .table-wrap {\n margin-top: 36px;\n}\n/* Copy notification toast */\n.copy-toast {\n position: fixed;\n bottom: 60px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 1000;\n}\n.copy-toast.visible {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n}\n@media (max-width: 960px) {\n .md-layout { flex-direction: column; }\n .md-left { max-width: 100%; flex: 1 1 0; min-height: 0; }\n .md-right { display: none; }\n .media-sidebar { display: none; }\n .media-sidebar-toggle { display: none !important; }\n}\n.md-layout.preview-only .md-right { display: none; }\n.md-layout.preview-only .md-left { flex: 1 1 0; min-height: 0; max-width: 100%; }\n.filter-menu {\n position: absolute;\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 10px;\n box-shadow: 0 14px 30px var(--shadow-color);\n padding: 8px;\n display: none;\n z-index: 12;\n width: 180px;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.filter-menu button {\n width: 100%;\n display: block;\n margin: 4px 0;\n padding: 8px 10px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n color: var(--text);\n cursor: pointer;\n font-size: 13px;\n text-align: left;\n}\n.filter-menu button:hover { background: var(--hover-bg); }\n.modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0,0,0,0.6);\n display: none;\n align-items: center;\n justify-content: center;\n z-index: 100;\n}\n.modal-overlay.visible { display: flex; }\n/* Submit modal: top-right position, no blocking overlay */\n#submit-modal {\n background: transparent;\n pointer-events: none;\n align-items: flex-start;\n justify-content: flex-end;\n}\n#submit-modal.visible { display: flex; }\n#submit-modal .modal-dialog {\n pointer-events: auto;\n margin: 60px 20px 20px 20px; /* top margin avoids header button overlap */\n}\n.modal-dialog {\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 14px;\n padding: 20px;\n width: 90%;\n max-width: 480px;\n box-shadow: 0 20px 40px var(--shadow-color);\n transition: background 200ms ease, border-color 200ms ease;\n}\n.modal-dialog h3 { margin: 0 0 12px; font-size: 18px; color: var(--accent); }\n.modal-summary { color: var(--muted); font-size: 13px; margin-bottom: 12px; }\n.modal-dialog label { display: block; font-size: 13px; margin-bottom: 6px; color: var(--muted); }\n.modal-dialog textarea {\n width: 100%;\n min-height: 100px;\n background: var(--input-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n color: var(--text);\n padding: 10px;\n font-size: 14px;\n resize: vertical;\n box-sizing: border-box;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.modal-dialog textarea:focus { outline: none; border-color: var(--accent); }\n.modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 16px; }\n.modal-actions button {\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--selected-bg);\n color: var(--text);\n cursor: pointer;\n font-size: 14px;\n}\n.modal-actions button:hover { background: var(--hover-bg); }\n.modal-actions button.primary { background: var(--accent); color: var(--text-inverse); border-color: var(--accent); }\n.image-attach-area { margin: 12px 0; }\n.image-attach-area label { display: block; font-size: 12px; color: var(--muted); margin-bottom: 6px; }\n.image-attach-area.image-attach-small { margin: 8px 0; }\n.image-attach-area.image-attach-small label { font-size: 11px; }\n.image-preview-list { display: flex; flex-wrap: wrap; gap: 8px; min-height: 24px; }\n.image-preview-item { position: relative; }\n.image-preview-item img { max-width: 80px; max-height: 60px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; }\n.image-preview-item .remove-image { position: absolute; top: -6px; right: -6px; width: 18px; height: 18px; border-radius: 50%; background: var(--error, #ef4444); color: #fff; border: none; cursor: pointer; font-size: 12px; line-height: 1; display: flex; align-items: center; justify-content: center; }\n.image-preview-item .remove-image:hover { background: #dc2626; }\n.modal-actions button.primary:hover { background: #7dd3fc; }\n.modal-actions-decision { justify-content: space-between; align-items: center; }\n.kbd-hint { display: inline-block; font-size: 10px; padding: 1px 5px; border-radius: 3px; background: rgba(255,255,255,0.15); margin-left: 6px; font-family: system-ui; opacity: 0.8; }\n[data-theme=\"light\"] .kbd-hint { background: rgba(0,0,0,0.08); }\n.decision-btn { padding: 8px 16px; border-radius: 8px; border: 1px solid var(--border); cursor: pointer; font-size: 14px; font-weight: 600; transition: all 0.15s ease; }\n.decision-approve { background: #166534; color: #bbf7d0; border-color: #22c55e; }\n.decision-approve:hover { background: #15803d; }\n.decision-request-changes { background: #92400e; color: #fef3c7; border-color: #f59e0b; }\n.decision-request-changes:hover { background: #a16207; }\n[data-theme=\"light\"] .decision-approve { background: #dcfce7; color: #166534; border-color: #22c55e; }\n[data-theme=\"light\"] .decision-approve:hover { background: #bbf7d0; }\n[data-theme=\"light\"] .decision-request-changes { background: #fef9c3; color: #92400e; border-color: #f59e0b; }\n[data-theme=\"light\"] .decision-request-changes:hover { background: #fef3c7; }\n.comment-sent-badge { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 6px; vertical-align: middle; }\n.comment-sent-badge.sent { background: #166534; color: #bbf7d0; }\n.comment-sent-badge.failed { background: #7f1d1d; color: #fecaca; }\n[data-theme=\"light\"] .comment-sent-badge.sent { background: #dcfce7; color: #166534; }\n[data-theme=\"light\"] .comment-sent-badge.failed { background: #fee2e2; color: #991b1b; }\n\n/* Send to AI fixed bottom bar */\n.send-to-ai-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 10; background: var(--panel-solid); border-top: 1px solid var(--border); padding: 8px 16px; }\n.send-to-ai-inner { display: flex; align-items: center; gap: 10px; max-width: 1200px; margin: 0 auto; }\n.sse-status { font-size: 12px; flex-shrink: 0; }\n.send-to-ai-input { flex: 1; min-width: 120px; height: 34px; padding: 0 10px; border-radius: 0; border: none; border-bottom: 1px solid var(--border); background: transparent; color: var(--text); font-size: 13px; outline: none; box-sizing: border-box; }\n.send-to-ai-input:focus { border-bottom-color: var(--accent); }\n.send-to-ai-btn.sent { background: #16a34a; pointer-events: none; }\n.send-to-ai-btn.sent:hover { background: #16a34a; }\n.send-to-ai-btn:disabled { opacity: 0.4; cursor: not-allowed; }\n#send-and-exit:disabled { opacity: 0.4; cursor: not-allowed; }\n.send-to-ai-btn { height: 34px; padding: 0 20px; border-radius: 6px; border: none; background: #2563eb; color: #fff; font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.15s ease; flex-shrink: 0; box-sizing: border-box; }\n.send-to-ai-btn:hover { background: #1d4ed8; }\n.send-to-ai-btn:active { background: #1e40af; }\n[data-theme=\"light\"] .send-to-ai-btn { background: #3b82f6; }\n[data-theme=\"light\"] .send-to-ai-btn:hover { background: #2563eb; }\n/* Ensure content is not hidden behind the fixed Send to AI bar */\nbody { padding-bottom: 72px; }\n.md-left, .md-right, .text-view, .diff-view, .table-box { padding-bottom: 72px !important; }\n\n.modal-checkboxes { margin: 12px 0; }\n.modal-checkboxes label {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n color: var(--text);\n margin-bottom: 8px;\n cursor: pointer;\n}\n.modal-checkboxes input[type=\"checkbox\"] {\n margin-top: 2px;\n accent-color: var(--accent);\n}\n\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging .diff-line { cursor: crosshair; }\n@media (max-width: 840px) {\n header { flex-direction: column; align-items: flex-start; }\n .comment-list { width: calc(100% - 24px); right: 12px; }\n}\n/* Mermaid diagram styles */\n.mermaid-container {\n position: relative;\n margin: 16px 0;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 16px;\n overflow: hidden;\n}\n.mermaid-container .mermaid {\n display: flex;\n justify-content: center;\n}\n.mermaid-container .mermaid svg {\n max-width: 100%;\n height: auto;\n cursor: pointer;\n pointer-events: auto;\n}\n.mermaid-error-banner {\n background: #fff3f3;\n color: #c33;\n border: 1px solid #e88;\n border-radius: 4px;\n padding: 6px 10px;\n margin-bottom: 8px;\n font-size: 12px;\n font-weight: 500;\n}\n[data-theme=\"dark\"] .mermaid-error-banner {\n background: #3a1a1a;\n color: #f88;\n border-color: #744;\n}\n.mermaid-fullscreen-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 12px;\n z-index: 2;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.mermaid-fullscreen-btn:hover { background: var(--hover-bg); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1000;\n display: none;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px;\n background: var(--panel-alpha);\n border-bottom: 1px solid var(--border);\n}\n.fullscreen-header h3 { margin: 0; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 8px; align-items: center; }\n.fullscreen-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 12px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n}\n.fullscreen-controls button:hover { background: var(--hover-bg); }\n.fullscreen-controls .zoom-info { font-size: 12px; color: var(--muted); min-width: 50px; text-align: center; }\n.fullscreen-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.fullscreen-content:active { cursor: grabbing; }\n.fullscreen-content .mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n padding: 40px;\n}\n.fullscreen-content .mermaid svg {\n display: block;\n}\n/* Minimap */\n.minimap {\n position: absolute;\n top: 70px;\n right: 20px;\n width: 200px;\n height: 150px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n}\n.minimap-content {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n}\n.minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n/* Error toast */\n.mermaid-error-toast {\n position: fixed;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--error);\n color: white;\n padding: 12px 24px;\n border-radius: 8px;\n font-size: 13px;\n max-width: 80%;\n z-index: 2000;\n display: none;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n white-space: pre-wrap;\n font-family: monospace;\n}\n.mermaid-error-toast.visible { display: block; }\n\n/* History Panel - Push layout */\nbody { transition: margin-right 0.25s ease; }\nbody.history-open { margin-right: 320px; }\nbody.history-open header { right: 320px; }\nheader { transition: right 0.25s ease; right: 0; }\n\n.history-toggle {\n background: var(--selected-bg);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 8px;\n font-size: 14px;\n cursor: pointer;\n width: 34px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.history-toggle:hover { background: var(--border); }\n.history-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 320px;\n height: 100vh;\n background: var(--panel-solid);\n border-left: 1px solid var(--border);\n z-index: 90;\n transform: translateX(100%);\n transition: transform 0.25s ease;\n display: flex;\n flex-direction: column;\n}\n.history-panel.open { transform: translateX(0); }\n.history-panel-header {\n padding: 16px;\n border-bottom: 1px solid var(--border);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.history-panel-header h3 { margin: 0; font-size: 14px; font-weight: 600; }\n.history-panel-close {\n background: transparent;\n border: none;\n color: var(--muted);\n cursor: pointer;\n font-size: 18px;\n padding: 4px;\n}\n.history-panel-close:hover { color: var(--text); }\n.history-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.history-empty {\n color: var(--muted);\n font-size: 13px;\n text-align: center;\n padding: 40px 20px;\n}\n.history-date-group { margin-bottom: 16px; }\n.history-date {\n font-size: 11px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 8px;\n text-transform: uppercase;\n}\n.history-item {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n margin-bottom: 8px;\n overflow: hidden;\n}\n.history-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 10px;\n background: var(--selected-bg);\n cursor: pointer;\n}\n.history-item-header:hover { background: var(--hover-bg); }\n.history-item-file {\n font-size: 12px;\n font-weight: 600;\n color: var(--text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 180px;\n}\n.history-item-time { font-size: 10px; color: var(--muted); }\n.history-item-body {\n display: none;\n padding: 10px;\n font-size: 12px;\n border-top: 1px solid var(--border);\n}\n.history-item.expanded .history-item-body { display: block; }\n.history-summary {\n color: var(--text);\n margin-bottom: 8px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--border);\n}\n.history-summary-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 4px;\n}\n.history-summary-text { white-space: pre-wrap; line-height: 1.4; }\n.history-comments-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 6px;\n}\n.history-comment {\n padding: 6px 0;\n border-bottom: 1px solid var(--border);\n}\n.history-comment:last-child { border-bottom: none; }\n.history-comment-line {\n font-size: 10px;\n color: var(--accent);\n font-weight: 600;\n margin-bottom: 2px;\n}\n.history-comment-quote {\n background: rgba(0, 0, 0, 0.3);\n border-left: 2px solid var(--accent);\n padding: 4px 8px;\n margin: 4px 0;\n font-family: 'SF Mono', Monaco, Consolas, monospace;\n font-size: 11px;\n color: var(--muted);\n white-space: pre-wrap;\n word-break: break-all;\n max-height: 80px;\n overflow-y: auto;\n}\n.history-comment-text {\n color: var(--text);\n line-height: 1.4;\n white-space: pre-wrap;\n}\n.history-badge {\n display: inline-block;\n background: var(--accent);\n color: var(--text-inverse);\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 10px;\n margin-left: 6px;\n}\n/* Table scroll container */\n.table-container {\n overflow-x: auto;\n margin: 16px 0;\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.table-container table {\n margin: 0;\n border: none;\n border-radius: 0;\n}\n.table-container::-webkit-scrollbar {\n height: 6px;\n}\n.table-container::-webkit-scrollbar-track {\n background: var(--bg);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb:hover {\n background: var(--muted);\n}\n/* Media sidebar */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden { display: none; }\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar { width: 4px; }\n.media-sidebar-thumbs::-webkit-scrollbar-track { background: transparent; }\n.media-sidebar-thumbs::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover { border-color: var(--accent); transform: scale(1.05); box-shadow: 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.media-sidebar-thumb svg { width: 100%; height: 100%; display: block; }\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video { width: 100%; height: 100%; object-fit: cover; }\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg { width: 100% !important; height: 100% !important; max-width: 100%; max-height: 100%; display: block; }\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 4px;\n left: 4px;\n z-index: 10;\n background: rgba(0,0,0,0.5);\n border: none;\n color: #fff;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n cursor: pointer;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img { max-width: none; max-height: none; border-radius: 0; }\n.media-sidebar-viewer-content video { max-width: 100%; max-height: 100vh; border-radius: 0; background: #000; }\n.media-sidebar-viewer-label {\n margin-top: 8px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 12px;\n right: 12px;\n background: rgba(0,0,0,0.7);\n color: #fff;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n pointer-events: none;\n transition: opacity 0.3s ease;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-maximize-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-maximize-btn:hover { background: rgba(0,0,0,0.8); }\n.sidebar-mermaid-viewport { overflow: hidden; position: relative; cursor: grab; }\n.sidebar-mermaid-wrapper { position: absolute; left: 0; top: 0; transform-origin: 0 0; }\n.sidebar-video-container { width: 100%; }\n.sidebar-video-container video { width: 100%; max-height: calc(100vh - 200px); border-radius: 8px; background: #000; }\n/* Video timeline */\n.video-timeline {\n display: flex;\n gap: 8px;\n padding: 8px;\n overflow-x: auto;\n background: var(--panel);\n border-radius: 8px;\n margin-top: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.timeline-loading { color: var(--muted); font-size: 12px; padding: 8px; }\n.timeline-thumb-wrapper {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n}\n.timeline-thumb {\n width: 80px;\n height: 60px;\n object-fit: cover;\n border-radius: 4px;\n border: 2px solid transparent;\n transition: border-color 0.2s ease;\n}\n.timeline-thumb.active { border-color: var(--accent); }\n.timeline-thumb:hover { border-color: var(--accent); opacity: 0.8; }\n.timeline-time { font-size: 10px; color: var(--muted); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.9);\n z-index: 1000;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: rgba(0,0,0,0.8);\n border-bottom: 1px solid rgba(255,255,255,0.1);\n}\n.fullscreen-header h3 { margin: 0; color: #fff; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 6px; align-items: center; }\n.fullscreen-controls button {\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n color: #fff;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n}\n.fullscreen-controls button:hover { background: rgba(255,255,255,0.2); }\n.fullscreen-controls .zoom-info { color: #fff; font-size: 12px; min-width: 40px; text-align: center; }\n@media (max-width: 960px) {\n .media-sidebar { display: none !important; }\n .media-sidebar-toggle { display: none !important; }\n}\n.video-overlay-wrapper {\n position: relative;\n display: inline-block;\n}\n.video-fs-overlay-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.video-fs-overlay-btn:hover { background: rgba(0,0,0,0.8); }\n@media (max-width: 600px) {\n .minimap { display: none !important; }\n .fullscreen-header { padding: 8px 12px; }\n .fullscreen-controls { gap: 4px; }\n .fullscreen-controls button { padding: 6px 8px; font-size: 11px; }\n .fullscreen-controls .zoom-info { font-size: 11px; min-width: 32px; }\n .history-panel { width: 100vw; }\n body.history-open header { right: 0; }\n}");
3562
+ _M0IPB13StringBuilderPB6Logger13write__string(buf, "/* Dark theme (default) — warm-modern with copper accent */\n:root {\n color-scheme: dark;\n --bg: #14110f;\n --bg-gradient: radial-gradient(120% 80% at 15% 0%, #26201b 0%, #1a1612 40%, #14110f 80%);\n --panel: #1c1815;\n --panel-alpha: rgba(20, 17, 15, 0.82);\n --panel-solid: #1a1612;\n --card-bg: rgba(28, 24, 21, 0.96);\n --input-bg: rgba(32, 27, 23, 0.75);\n --border: #2e2822;\n --border-strong: #3a322b;\n --accent: #d7a67a;\n --accent-strong: #e7b98b;\n --accent-2: #a8765a;\n --accent-soft: rgba(215, 166, 122, 0.14);\n --text: #f1ebe1;\n --text-inverse: #1a1612;\n --muted: #9f9488;\n --comment: #b78a5a;\n --badge: #6bbf86;\n --table-bg: rgba(28, 24, 21, 0.72);\n --row-even: rgba(46, 40, 34, 0.5);\n --row-odd: rgba(28, 24, 21, 0.25);\n --selected-bg: rgba(215, 166, 122, 0.16);\n --hover-bg: rgba(215, 166, 122, 0.08);\n --shadow-color: rgba(0,0,0,0.45);\n --shadow-soft: 0 10px 30px rgba(0,0,0,0.35);\n --shadow-card: 0 20px 40px rgba(0,0,0,0.4);\n --code-bg: #23201c;\n --error: #e06862;\n --success: #6bbf86;\n --warning: #e8b574;\n --radius-sm: 8px;\n --radius-md: 12px;\n --radius-lg: 16px;\n --radius-pill: 999px;\n --font-display: \"Inter\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Sans\", system-ui, -apple-system, sans-serif;\n}\n/* Light theme — warm beige / tan palette (no blue) */\n[data-theme=\"light\"] {\n color-scheme: light;\n --bg: #f6efe1;\n --bg-gradient: linear-gradient(180deg, #fbf6ea 0%, #efe6d3 100%);\n --panel: #fffaf0;\n --panel-alpha: rgba(255, 250, 240, 0.92);\n --panel-solid: #fffaf0;\n --card-bg: rgba(255, 252, 244, 0.98);\n --input-bg: #f4ead7;\n --border: #e4d6bc;\n --border-strong: #d1bf9e;\n --accent: #a8785a;\n --accent-strong: #8c5f43;\n --accent-2: #c89a70;\n --accent-soft: rgba(168, 120, 90, 0.12);\n --text: #3b2d20;\n --text-inverse: #fffaf0;\n --muted: #87735b;\n --comment: #a8785a;\n --badge: #4d9d63;\n --table-bg: #fffaf0;\n --row-even: #f6ecd8;\n --row-odd: #fffaf0;\n --selected-bg: rgba(168, 120, 90, 0.12);\n --hover-bg: rgba(168, 120, 90, 0.06);\n --shadow-color: rgba(60, 40, 20, 0.08);\n --shadow-soft: 0 6px 18px rgba(60, 40, 20, 0.08);\n --shadow-card: 0 18px 36px rgba(60, 40, 20, 0.12);\n --code-bg: #f4ead7;\n --error: #c9564f;\n --success: #4d9d63;\n --warning: #c58a40;\n}\n* { box-sizing: border-box; }\n:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }\nbody {\n margin: 0;\n font-family: var(--font-display, \"Inter\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Sans\", system-ui, -apple-system, sans-serif);\n background: var(--bg-gradient);\n color: var(--text);\n min-height: 100vh;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n letter-spacing: -0.005em;\n transition: background 240ms ease, color 240ms ease;\n}\nheader {\n position: sticky;\n top: 0;\n z-index: 5;\n padding: 14px 20px;\n background: var(--panel-alpha);\n backdrop-filter: saturate(140%) blur(18px);\n -webkit-backdrop-filter: saturate(140%) blur(18px);\n border-bottom: 1px solid var(--border);\n display: flex;\n gap: 14px;\n align-items: center;\n justify-content: space-between;\n transition: background 240ms ease, border-color 240ms ease;\n}\nheader .meta { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }\nheader .actions { display: flex; gap: 6px; align-items: center; }\nheader h1 { display: flex; flex-direction: column; margin: 0; line-height: 1.3; }\nheader h1 .title-path { font-size: 11px; font-weight: 500; color: var(--muted); letter-spacing: 0.02em; }\nheader h1 .title-file { font-size: 16px; font-weight: 700; letter-spacing: -0.01em; }\nheader .badge {\n background: var(--accent-soft);\n color: var(--accent-strong);\n padding: 5px 12px;\n border-radius: var(--radius-pill);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.02em;\n border: 1px solid transparent;\n}\n/* Default header icon buttons (ghost) */\nheader button {\n background: transparent;\n color: var(--text);\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0 12px;\n height: 34px;\n min-width: 34px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n box-shadow: none;\n transition: background 160ms ease, border-color 160ms ease, transform 120ms ease, color 160ms ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\nheader button:hover { background: var(--hover-bg); border-color: var(--border); transform: none; box-shadow: none; }\nheader button:active { transform: translateY(0); background: var(--selected-bg); }\n/* Primary submit button */\nheader button.submit-exit-btn {\n background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);\n color: var(--text-inverse);\n border: none;\n padding: 0 18px;\n font-weight: 700;\n letter-spacing: 0.01em;\n box-shadow: var(--shadow-soft);\n}\nheader button.submit-exit-btn:hover {\n background: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent) 100%);\n border: none;\n transform: translateY(-1px);\n box-shadow: var(--shadow-card);\n}\nheader button.submit-exit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n/* Theme toggle button */\n.theme-toggle {\n background: transparent;\n color: var(--muted);\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n font-size: 15px;\n cursor: pointer;\n transition: background 160ms ease, transform 160ms ease, color 160ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n}\n.theme-toggle:hover { background: var(--hover-bg); color: var(--text); transform: rotate(-12deg); }\n/* SSE status dot (header) */\n.sse-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n margin-right: 2px;\n border-radius: 50%;\n position: relative;\n cursor: default;\n flex-shrink: 0;\n}\n.sse-dot::before {\n content: \"\";\n display: block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--muted);\n box-shadow: 0 0 0 0 currentColor;\n transition: background 200ms ease;\n}\n.sse-dot-connected::before { background: var(--success); box-shadow: 0 0 8px rgba(107, 191, 134, 0.45); }\n.sse-dot-reconnecting::before { background: var(--error); animation: sseBlink 1.1s ease-in-out infinite; }\n.sse-dot-sending::before { background: var(--warning); animation: sseBlink 0.9s ease-in-out infinite; }\n.sse-dot-label { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }\n@keyframes sseBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }\n\n.wrap { padding: 12px 16px 12px; }\n.toolbar {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n margin: 10px 0 12px;\n color: var(--muted);\n font-size: 13px;\n}\n.toolbar button {\n background: var(--accent-soft);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n padding: 8px 12px;\n font-size: 13px;\n cursor: pointer;\n transition: background 160ms ease, border-color 160ms ease;\n}\n.toolbar button:hover { background: var(--hover-bg); border-color: var(--border-strong); }\n\n.table-box {\n background: var(--table-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n overflow: auto;\n max-height: calc(100vh - 110px);\n box-shadow: var(--shadow-soft);\n transition: background 240ms ease, border-color 240ms ease;\n}\ntable {\n border-collapse: collapse;\n width: 100%;\n min-width: 540px;\n table-layout: fixed;\n}\n.table-box thead th,\n.md-right thead th,\n#csv-table thead th {\n position: sticky;\n top: 0;\n z-index: 3;\n background: var(--panel-solid) !important;\n color: var(--muted);\n font-size: 12px;\n text-align: center;\n padding: 0;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n white-space: nowrap;\n transition: background 200ms ease;\n}\n.table-box thead th:not(.selected),\n.md-right thead th:not(.selected),\n#csv-table thead th:not(.selected) {\n background: var(--panel-solid) !important;\n}\n.md-right thead th:first-child,\n.md-right tbody th {\n width: 28px;\n min-width: 28px;\n max-width: 28px;\n}\nthead th .th-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 8px 6px;\n position: relative;\n height: 100%;\n}\nthead th.filtered .th-inner {\n background: var(--accent-soft);\n color: var(--accent-strong);\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 rgba(255,255,255,0.04);\n}\nthead th.filtered .th-inner::after {\n content: 'FILTER';\n font-size: 10px;\n color: var(--accent-strong);\n background: var(--accent-soft);\n border: 1px solid var(--border-strong);\n padding: 1px 6px;\n border-radius: var(--radius-pill);\n position: absolute;\n bottom: 4px;\n right: 6px;\n}\n.resizer {\n position: absolute;\n right: 2px;\n top: 0;\n width: 6px;\n height: 100%;\n cursor: col-resize;\n user-select: none;\n touch-action: none;\n opacity: 0.6;\n}\n.resizer::after {\n content: '';\n position: absolute;\n top: 10%;\n bottom: 10%;\n left: 2px;\n width: 2px;\n background: var(--accent);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 120ms ease;\n}\nthead th:hover .resizer::after { opacity: 1; }\n\n.freeze {\n position: sticky !important;\n background: var(--panel-solid);\n z-index: 4;\n}\n.freeze-row {\n position: sticky !important;\n background: var(--panel-solid);\n}\n.freeze-row.freeze {\n z-index: 6;\n}\nth.freeze-row {\n z-index: 6;\n}\ntbody th {\n position: sticky;\n left: 0;\n z-index: 2;\n background: var(--panel-solid);\n color: var(--muted);\n text-align: right;\n padding: 8px 10px;\n font-size: 12px;\n border-right: 1px solid var(--border);\n border-bottom: 1px solid var(--border);\n transition: background 200ms ease;\n}\ntd {\n padding: 10px 10px;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n background: var(--row-odd);\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n cursor: pointer;\n transition: background 120ms ease, box-shadow 120ms ease;\n position: relative;\n white-space: pre-wrap;\n word-break: break-word;\n max-width: 320px;\n}\ntr:nth-child(even) td:not(.selected):not(.has-comment) { background: var(--row-even); }\ntd:hover:not(.selected) { background: var(--hover-bg); box-shadow: inset 0 0 0 1px var(--accent-soft); }\ntd.has-comment { background: rgba(77, 157, 99, 0.12); box-shadow: inset 0 0 0 1px rgba(77, 157, 99, 0.32); }\n[data-theme=\"dark\"] td.has-comment { background: rgba(107, 191, 134, 0.14); box-shadow: inset 0 0 0 1px rgba(107, 191, 134, 0.32); }\ntd.selected, tbody th.selected { background: var(--selected-bg) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; }\n.preview-highlight { background: var(--selected-bg) !important; box-shadow: inset 0 0 0 2px var(--accent); border-radius: 4px; transition: background 150ms ease, box-shadow 150ms ease; padding-left: 8px; margin-left: -8px; }\nthead th.selected { background: var(--accent-soft) !important; color: var(--accent-strong); box-shadow: inset 0 0 0 1px var(--accent); }\n[data-theme=\"dark\"] thead th.selected { background: var(--accent-soft) !important; color: var(--accent-strong); }\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging td, body.dragging tbody th { cursor: crosshair; }\ntbody th { cursor: pointer; }\ntd .dot {\n position: absolute;\n right: 6px;\n top: 6px;\n width: 8px;\n height: 8px;\n border-radius: 99px;\n background: var(--badge);\n box-shadow: 0 0 0 4px rgba(77, 157, 99, 0.18);\n}\n.floating {\n position: fixed;\n z-index: 10;\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 16px;\n width: min(440px, calc(100vw - 32px));\n box-shadow: var(--shadow-card);\n backdrop-filter: blur(24px);\n -webkit-backdrop-filter: blur(24px);\n display: none;\n transition: background 240ms ease, border-color 240ms ease;\n}\n.card-close-x {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 28px;\n height: 28px;\n padding: 0;\n background: transparent;\n border: none;\n color: var(--muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 120ms ease, color 120ms ease;\n}\n.card-close-x:hover { background: var(--border); color: var(--text);\n}\n.floating header {\n position: static;\n background: transparent;\n backdrop-filter: none;\n border: none;\n padding: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.floating h2 { font-size: 14px; font-weight: 600; margin: 0; color: var(--text); letter-spacing: -0.005em; }\n.floating button {\n margin-left: 8px;\n background: var(--accent);\n color: var(--text-inverse);\n border: 1px solid var(--accent);\n padding: 7px 12px;\n border-radius: var(--radius-sm);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 160ms ease, opacity 160ms ease, transform 120ms ease;\n}\n.floating button.icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n}\n.floating button:hover { opacity: 0.85; }\n.copy-btn-float {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n background: var(--panel-solid) !important;\n border: 1px solid var(--border) !important;\n color: var(--muted) !important;\n opacity: 0.7;\n}\n.copy-btn-float:hover { opacity: 1 !important; }\n.card-actions-split {\n display: flex;\n justify-content: space-between !important;\n align-items: center;\n margin-top: 8px;\n}\n.danger-text {\n background: transparent !important;\n border: none !important;\n color: #ef4444 !important;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n padding: 4px 8px;\n}\n.danger-text:hover { color: #dc2626 !important; text-decoration: underline; }\n.floating textarea {\n width: 100%;\n min-height: 70px;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n padding: 10px;\n font-size: 13px;\n line-height: 1.4;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.floating textarea:focus {\n outline: none;\n border-color: var(--accent);\n}\n.floating .actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 10px;\n}\n.floating .actions button.primary {\n background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);\n color: var(--text-inverse);\n border: none;\n padding: 8px 18px;\n font-weight: 700;\n letter-spacing: 0.01em;\n box-shadow: var(--shadow-soft);\n}\n.floating .actions button.primary:hover {\n background: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent) 100%);\n box-shadow: var(--shadow-card);\n}\n.comment-list {\n position: fixed;\n right: 14px;\n bottom: 14px;\n width: 320px;\n max-height: 60vh;\n overflow: auto;\n border: 1px solid var(--border);\n border-radius: 12px;\n background: var(--card-bg);\n box-shadow: 0 18px 40px var(--shadow-color);\n padding: 12px;\n backdrop-filter: blur(6px);\n transition: opacity 120ms ease, transform 120ms ease, background 200ms ease;\n}\n.comment-list h3 { margin: 0 0 8px 0; font-size: 13px; color: var(--muted); }\n.comment-list ol {\n margin: 0;\n padding-left: 18px;\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n}\n.comment-list li { margin-bottom: 6px; }\n.comment-list .hint { color: var(--muted); font-size: 12px; }\n.pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: var(--radius-pill); background: var(--accent-soft); border: 1px solid transparent; font-size: 12px; font-weight: 500; color: var(--accent-strong); cursor: pointer; transition: background 160ms ease, border-color 160ms ease, transform 120ms ease; }\n.pill:hover { background: var(--hover-bg); border-color: var(--border-strong); transform: translateY(-1px); }\n.pill strong { color: var(--accent-strong); font-weight: 700; }\n.comment-list.collapsed {\n opacity: 0;\n pointer-events: none;\n transform: translateY(8px) scale(0.98);\n}\n.md-preview {\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 20px 24px;\n margin-bottom: 12px;\n box-shadow: var(--shadow-soft);\n line-height: 1.65;\n transition: background 240ms ease, border-color 240ms ease;\n}\n.md-layout {\n display: flex;\n gap: 16px;\n align-items: stretch;\n margin-top: 8px;\n height: calc(100vh - 80px);\n}\n.md-left {\n flex: 1;\n min-width: 200px;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-left .md-preview {\n max-height: none;\n}\n.md-right {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-right .table-box {\n max-width: none;\n min-width: 0;\n max-height: none;\n overflow: visible;\n}\n/* Ensure thead is opaque in md-right to prevent content showing through */\n.md-right thead th {\n background: var(--panel-solid) !important;\n}\n.md-right thead th.selected {\n background: var(--accent-soft) !important;\n color: var(--accent-strong);\n}\n[data-theme=\"dark\"] .md-right thead th {\n background: var(--panel-solid) !important;\n}\n[data-theme=\"dark\"] .md-right thead th.selected {\n background: var(--accent-soft) !important;\n color: var(--accent-strong);\n}\n\n/* === Media Sidebar === */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden {\n display: none;\n}\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar {\n width: 4px;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-track {\n background: transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 4px;\n}\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover {\n border-color: var(--accent);\n transform: scale(1.05);\n box-shadow: 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb.active {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n.media-sidebar-thumb svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg {\n width: 100% !important;\n height: 100% !important;\n max-width: 100%;\n max-height: 100%;\n display: block;\n}\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img {\n max-width: none;\n max-height: none;\n border-radius: 0;\n}\n.media-sidebar-viewer-content video {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 8px;\n background: #000;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap {\n width: 100%;\n overflow: auto;\n display: flex;\n justify-content: center;\n background: var(--panel);\n border-radius: 8px;\n padding: 16px;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap svg {\n width: 100% !important;\n height: auto !important;\n max-height: calc(100vh - 200px);\n}\n\n/* === Sidebar Rich Viewer: Mermaid zoom/pan/minimap === */\n.sidebar-mermaid-controls {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 8px;\n width: 100%;\n box-sizing: border-box;\n}\n.sidebar-mermaid-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 5px;\n padding: 4px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n line-height: 1;\n transition: background 0.15s ease;\n}\n.sidebar-mermaid-controls button:hover { background: var(--hover-bg); }\n.sidebar-mermaid-controls .sidebar-zoom-info {\n font-size: 11px;\n color: var(--muted);\n min-width: 40px;\n text-align: center;\n user-select: none;\n}\n.sidebar-mermaid-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n background: var(--panel);\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.sidebar-mermaid-viewport:active { cursor: grabbing; }\n.sidebar-mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.sidebar-mermaid-wrapper svg {\n display: block;\n}\n.sidebar-minimap {\n position: absolute;\n top: 12px;\n right: 8px;\n bottom: auto;\n left: auto;\n width: 140px;\n height: 100px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0,0,0,0.12);\n z-index: 3;\n}\n.sidebar-minimap-content {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px;\n}\n.sidebar-minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.sidebar-minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n\n/* === Sidebar Rich Viewer: Image zoom/pan === */\n.sidebar-image-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.sidebar-image-viewport.panning { cursor: grabbing; }\n.sidebar-image-viewport img {\n transform-origin: 0 0;\n max-width: none !important;\n max-height: none !important;\n border-radius: 0 !important;\n user-select: none;\n -webkit-user-drag: none;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 10px;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(0, 0, 0, 0.65);\n color: #fff;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n pointer-events: none;\n z-index: 3;\n backdrop-filter: blur(4px);\n transition: opacity 0.3s ease;\n user-select: none;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-image-hint {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n color: var(--muted);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.4s ease;\n text-align: center;\n z-index: 2;\n}\n\n/* === Sidebar Rich Viewer: Video container (timeline uses shared .video-timeline classes) === */\n.sidebar-video-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.sidebar-video-container video {\n width: 100%;\n border-radius: 8px 8px 0 0;\n background: #000;\n max-height: calc(100vh - 260px);\n}\n\n.media-sidebar-viewer-label {\n margin-top: 12px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n word-break: break-all;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 8px;\n left: 8px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 6px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n z-index: 2;\n transition: background 0.15s ease;\n}\n.media-sidebar-viewer-close:hover {\n background: var(--hover-bg);\n}\n.sidebar-viewer-settings-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n background: rgba(0,0,0,0.5);\n border: none;\n border-radius: 8px;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n font-size: 16px;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-viewer-settings-btn:hover {\n background: rgba(0,0,0,0.8);\n}\n.sidebar-viewer-settings-btn + .video-settings-panel {\n position: absolute;\n top: 44px;\n right: 8px;\n}\n\n.media-sidebar-toggle {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0 10px;\n height: 34px;\n min-width: 34px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 160ms ease, border-color 160ms ease;\n display: none;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n.media-sidebar-toggle.has-media {\n display: inline-flex;\n}\n.media-sidebar-toggle:hover {\n background: var(--hover-bg);\n border-color: var(--border);\n}\n.media-sidebar-toggle .toggle-count {\n font-size: 10px;\n font-weight: 700;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 1px 6px;\n border-radius: var(--radius-pill);\n line-height: 1.4;\n}\n.view-toggle {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0 10px;\n height: 34px;\n min-width: 34px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 160ms ease, border-color 160ms ease, color 160ms ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.view-toggle:hover { background: var(--hover-bg); border-color: var(--border); }\n.view-toggle.active { background: var(--accent-soft); color: var(--accent-strong); border-color: transparent; }\n@media (max-width: 1200px) {\n .media-sidebar-viewer.open {\n width: 40vw;\n max-width: calc(100vw - 350px);\n }\n}\n@media (max-width: 900px) {\n .media-sidebar-thumbs {\n width: 72px;\n }\n .media-sidebar-thumb {\n width: 56px;\n height: 42px;\n }\n .media-sidebar-viewer.open {\n width: 35vw;\n max-width: calc(100vw - 300px);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .media-sidebar,\n .media-sidebar-viewer,\n .media-sidebar-thumb {\n transition: none !important;\n }\n}\n\n.md-preview h1, .md-preview h2, .md-preview h3, .md-preview h4 {\n margin: 0.4em 0 0.2em;\n}\n/* Heading toggle feature */\n.md-preview .md-heading-toggle {\n margin: 0;\n}\n.md-preview .heading-toggle-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6em;\n transition: transform 150ms ease;\n color: var(--muted);\n flex-shrink: 0;\n cursor: pointer;\n padding: 4px 8px;\n margin: -4px 0 -4px -8px;\n border-radius: 4px;\n}\n.md-preview .heading-toggle-icon:hover {\n background: var(--hover-bg);\n color: var(--accent);\n}\n.md-preview .md-heading-toggle.collapsed .heading-toggle-icon {\n transform: rotate(-90deg);\n}\n.md-preview details.heading-toggle {\n margin: 0.2em 0;\n}\n.md-preview details.heading-toggle > summary {\n list-style: none;\n cursor: default;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.md-preview details.heading-toggle > summary::-webkit-details-marker {\n display: none;\n}\n.md-preview details.heading-toggle > summary > .md-heading-toggle {\n flex: 1;\n}\n.md-preview details.heading-toggle:not([open]) > .toggle-content {\n display: none;\n}\n.md-preview .heading-section-content {\n /* Content wrapper for collapsible sections */\n}\n.md-preview .heading-section-content.hidden {\n display: none;\n}\n.md-preview p { margin: 0.3em 0; line-height: 1.5; }\n.md-preview img { max-width: 100%; height: auto; border-radius: 8px; }\n.md-preview video.video-preview { max-width: 100%; height: auto; border-radius: 8px; background: #000; }\n.md-preview table video.video-preview {\n display: block;\n width: 100%;\n height: auto;\n}\n.md-preview code { background: rgba(255,255,255,0.08); padding: 2px 4px; border-radius: 4px; }\n.md-preview pre {\n background: var(--code-bg);\n padding: 12px 16px;\n border-radius: 8px;\n overflow: auto;\n border: 1px solid var(--border);\n}\n.md-preview pre code {\n background: none;\n padding: 0;\n font-size: 13px;\n line-height: 1.5;\n}\n.md-preview pre code.hljs {\n background: transparent;\n padding: 0;\n}\n/* YAML Frontmatter table */\n.frontmatter-table {\n margin-bottom: 20px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--border);\n background: var(--panel);\n}\n.frontmatter-table table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n}\n.frontmatter-table thead th {\n background: linear-gradient(135deg, rgba(147, 51, 234, 0.15), rgba(96, 165, 250, 0.15));\n color: var(--text);\n font-size: 12px;\n font-weight: 600;\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n}\n.frontmatter-table tbody th {\n background: rgba(147, 51, 234, 0.08);\n color: #c084fc;\n font-weight: 500;\n font-size: 12px;\n padding: 8px 10px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n}\n.frontmatter-table tbody td {\n padding: 8px 14px;\n font-size: 13px;\n border-bottom: 1px solid var(--border);\n word-break: break-word;\n}\n.frontmatter-table tbody tr:last-child th,\n.frontmatter-table tbody tr:last-child td {\n border-bottom: none;\n}\n.frontmatter-table .fm-tag {\n display: inline-block;\n background: rgba(96, 165, 250, 0.15);\n color: var(--accent);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n}\n.frontmatter-table pre {\n margin: 0;\n background: var(--code-bg);\n padding: 8px;\n border-radius: 4px;\n font-size: 11px;\n}\n/* Reviw questions preview cards */\n.reviw-questions-preview {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.reviw-q-card {\n background: var(--code-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 10px 12px;\n}\n.reviw-q-card.resolved {\n border-left: 3px solid #22c55e;\n}\n.reviw-q-card.pending {\n border-left: 3px solid #f59e0b;\n}\n.reviw-q-header {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-q-header strong {\n color: var(--accent);\n}\n.reviw-q-question {\n font-size: 13px;\n color: var(--text);\n margin-bottom: 6px;\n}\n.reviw-q-options {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 6px;\n}\n.reviw-q-answer {\n font-size: 12px;\n color: #22c55e;\n background: rgba(34, 197, 94, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n}\n[data-theme=\"light\"] .frontmatter-table tbody th {\n color: #7c3aed;\n}\n/* Table scroll container and indicator */\n.table-scroll-container {\n position: relative;\n margin: 16px 0;\n}\n.table-scroll-wrapper {\n overflow-x: auto;\n border-radius: 8px;\n}\n.scroll-hint {\n text-align: right;\n font-size: 12px;\n color: var(--accent);\n padding: 4px 8px;\n margin-bottom: 4px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 200ms ease;\n}\n.table-scroll-container.can-scroll .scroll-hint {\n opacity: 0.8;\n visibility: visible;\n}\n.table-scroll-container.scrolled-end .scroll-hint {\n opacity: 0;\n visibility: hidden;\n}\n/* Markdown tables in preview — blends with md-preview panel */\n.md-preview table:not(.frontmatter-table table) {\n min-width: 100%;\n width: max-content;\n border-collapse: collapse;\n border: none;\n background: transparent;\n margin: 12px 0 16px;\n}\n.md-preview table:not(.frontmatter-table table) th,\n.md-preview table:not(.frontmatter-table table) td {\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n word-break: break-word;\n overflow-wrap: anywhere;\n width: auto;\n}\n/* Force equal column widths when colgroup is not specified */\n.md-preview table:not(.frontmatter-table table) colgroup ~ * th,\n.md-preview table:not(.frontmatter-table table) colgroup ~ * td {\n width: auto;\n}\n.md-preview table:not(.frontmatter-table table) td:has(video),\n.md-preview table:not(.frontmatter-table table) td:has(img) {\n padding: 4px;\n line-height: 0;\n}\n.md-preview table:not(.frontmatter-table table) td video,\n.md-preview table:not(.frontmatter-table table) td img {\n width: 100%;\n max-width: 100%;\n height: auto;\n}\n.md-preview table:not(.frontmatter-table table) thead th {\n background: transparent;\n color: var(--accent-strong);\n font-weight: 700;\n font-size: 11px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n border-bottom: 2px solid var(--accent);\n padding-top: 8px;\n padding-bottom: 10px;\n}\n.md-preview table:not(.frontmatter-table table) tbody td {\n font-size: 13px;\n color: var(--text);\n}\n.md-preview table:not(.frontmatter-table table) tr:last-child td {\n border-bottom: none;\n}\n.md-preview table:not(.frontmatter-table table) tbody tr:hover td {\n background: var(--hover-bg);\n}\n/* Source table (右ペイン) */\n.table-box table {\n table-layout: fixed;\n width: 100%;\n}\n.table-box th,\n.table-box td {\n word-break: break-word;\n min-width: 140px;\n}\n.table-box th:first-child,\n.table-box td:first-child {\n min-width: 320px;\n max-width: 480px;\n}\n/* Image fullscreen overlay */\n.image-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1001;\n display: none;\n flex-direction: column;\n}\n.image-fullscreen-overlay.visible {\n display: flex;\n}\n.image-fs-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.image-fs-content:active { cursor: grabbing; }\n.image-fs-content .image-fs-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.image-fs-content .image-fs-wrapper img {\n display: block;\n}\n/* Video fullscreen overlay */\n.video-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.95);\n z-index: 1001;\n display: none;\n justify-content: center;\n align-items: center;\n}\n.video-fullscreen-overlay.visible {\n display: flex;\n}\n.video-close-btn {\n position: absolute;\n top: 14px;\n right: 14px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-close-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-container {\n width: 90vw;\n height: 90vh;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.video-container video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n}\n/* Video Timeline - shared base styles (used by both fullscreen and sidebar) */\n.video-timeline {\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n overflow-x: auto;\n backdrop-filter: blur(8px);\n height: 80px;\n padding: 8px;\n gap: 4px;\n}\n.video-timeline::-webkit-scrollbar {\n height: 6px;\n}\n.video-timeline::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n}\n/* Fullscreen-specific video timeline positioning */\n.video-container .video-timeline {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 5;\n}\n/* Sidebar-specific video timeline sizing */\n.sidebar-video-container .video-timeline {\n width: 100%;\n height: 72px;\n padding: 6px;\n gap: 3px;\n border-radius: 0 0 8px 8px;\n background: rgba(0, 0, 0, 0.88);\n}\n.sidebar-video-container .video-timeline::-webkit-scrollbar { height: 5px; }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.08); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.25); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.4); }\n.timeline-thumb {\n height: 64px;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: 4px;\n flex-shrink: 0;\n transition: border-color 0.2s, transform 0.15s;\n opacity: 0.85;\n}\n.sidebar-video-container .timeline-thumb {\n height: 52px;\n opacity: 0.8;\n}\n.timeline-thumb:hover {\n border-color: rgba(59, 130, 246, 0.5);\n opacity: 1;\n transform: scale(1.05);\n}\n.timeline-thumb.active {\n border-color: #3b82f6;\n opacity: 1;\n box-shadow: 0 0 12px rgba(59, 130, 246, 0.5);\n}\n.sidebar-video-container .timeline-thumb.active {\n box-shadow: 0 0 8px rgba(59, 130, 246, 0.4);\n}\n.timeline-loading {\n color: rgba(255, 255, 255, 0.6);\n font-size: 12px;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.sidebar-video-container .timeline-loading {\n font-size: 11px;\n padding: 6px 10px;\n gap: 6px;\n color: rgba(255, 255, 255, 0.5);\n}\n.timeline-loading::before {\n content: '';\n width: 14px;\n height: 14px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top-color: #3b82f6;\n border-radius: 50%;\n animation: timeline-spin 0.8s linear infinite;\n}\n.sidebar-video-container .timeline-loading::before {\n width: 12px;\n height: 12px;\n border-width: 2px;\n border-color: rgba(255, 255, 255, 0.25);\n border-top-color: #3b82f6;\n}\n@keyframes timeline-spin {\n to { transform: rotate(360deg); }\n}\n.timeline-time {\n position: absolute;\n bottom: 2px;\n right: 4px;\n font-size: 9px;\n color: #fff;\n background: rgba(0, 0, 0, 0.7);\n padding: 1px 4px;\n border-radius: 2px;\n pointer-events: none;\n}\n.sidebar-video-container .timeline-time {\n font-size: 8px;\n right: 3px;\n padding: 1px 3px;\n}\n.timeline-thumb-wrapper {\n position: relative;\n flex-shrink: 0;\n}\n/* Video threshold settings panel */\n.video-settings-btn {\n position: absolute;\n top: 14px;\n right: 64px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-settings-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-settings-panel {\n position: absolute;\n top: 60px;\n right: 14px;\n background: rgba(0, 0, 0, 0.9);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n padding: 16px;\n z-index: 15;\n min-width: 280px;\n display: none;\n backdrop-filter: blur(8px);\n}\n.video-settings-panel.visible {\n display: block;\n}\n.video-settings-panel h4 {\n margin: 0 0 8px;\n color: #fff;\n font-size: 14px;\n font-weight: 500;\n}\n.video-settings-desc {\n margin: 0 0 12px;\n color: rgba(255, 255, 255, 0.6);\n font-size: 11px;\n line-height: 1.4;\n}\n.video-settings-buttons {\n display: flex;\n gap: 6px;\n margin-bottom: 12px;\n}\n.video-settings-buttons button {\n flex: 1;\n padding: 8px 4px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.8);\n font-size: 11px;\n cursor: pointer;\n transition: all 120ms ease;\n}\n.video-settings-buttons button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n.video-settings-buttons button.selected {\n background: #3b82f6;\n border-color: #3b82f6;\n color: #fff;\n}\n.video-settings-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n.video-settings-actions button {\n flex: 1;\n padding: 8px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n cursor: pointer;\n transition: background 120ms ease;\n}\n.video-settings-actions .reset-btn {\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n}\n.video-settings-actions .reset-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n/* Video Shortcuts Help */\n.video-shortcuts-help {\n opacity: 0.85;\n transition: opacity 0.2s;\n}\n.video-shortcuts-help:hover {\n opacity: 1;\n}\n.video-shortcuts-help .shortcuts-title {\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 10px;\n color: rgba(255, 255, 255, 0.7);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.video-shortcuts-help .shortcuts-title::before {\n content: '\\u2328';\n font-size: 14px;\n}\n.video-shortcuts-help .shortcut-item {\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n.video-shortcuts-help .shortcut-item:last-child {\n margin-bottom: 0;\n}\n.video-shortcuts-help kbd {\n display: inline-block;\n background: rgba(255, 255, 255, 0.15);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n font-weight: 500;\n min-width: 18px;\n text-align: center;\n margin-right: 2px;\n}\n/* Reviw Questions Modal */\n.reviw-questions-overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 1100;\n justify-content: center;\n align-items: center;\n}\n.reviw-questions-overlay.visible {\n display: flex;\n}\n.reviw-questions-modal {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 16px;\n width: 90%;\n max-width: 600px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5);\n}\n.reviw-questions-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-questions-header h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text);\n}\n.reviw-questions-header h2 span {\n font-size: 14px;\n color: var(--text-dim);\n font-weight: 400;\n}\n.reviw-questions-close {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--text-dim);\n font-size: 18px;\n cursor: pointer;\n border-radius: 8px;\n transition: all 150ms ease;\n}\n.reviw-questions-close:hover {\n background: var(--border);\n color: var(--text);\n}\n.reviw-questions-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.reviw-questions-footer {\n padding: 12px 20px;\n border-top: 1px solid var(--border);\n display: flex;\n justify-content: flex-end;\n}\n.reviw-questions-later {\n padding: 8px 16px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text-dim);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-questions-later:hover {\n background: var(--border);\n color: var(--text);\n}\n/* Question Item */\n.reviw-question-item {\n margin-bottom: 20px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-question-item:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom: none;\n}\n.reviw-question-text {\n font-size: 14px;\n color: var(--text);\n margin-bottom: 12px;\n line-height: 1.5;\n}\n.reviw-question-options {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n.reviw-question-option {\n padding: 8px 14px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-question-option:hover {\n border-color: var(--accent);\n background: rgba(96, 165, 250, 0.1);\n}\n.reviw-question-option.selected {\n border-color: var(--accent);\n background: var(--accent);\n color: var(--text-inverse);\n}\n.reviw-question-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n border-radius: 8px;\n font-size: 13px;\n resize: vertical;\n min-height: 60px;\n}\n.reviw-question-input:focus {\n outline: none;\n border-color: var(--accent);\n}\n.reviw-question-input::placeholder {\n color: var(--text-dim);\n}\n.reviw-check-mark {\n color: #22c55e;\n font-weight: bold;\n}\n.reviw-question-item.answered {\n border-color: #22c55e;\n background: rgba(34, 197, 94, 0.05);\n}\n.reviw-question-submit {\n margin-top: 10px;\n padding: 8px 16px;\n border: none;\n background: var(--accent);\n color: var(--text-inverse);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 150ms ease;\n}\n.reviw-question-submit:hover {\n filter: brightness(1.1);\n}\n.reviw-question-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n/* Resolved Section */\n.reviw-resolved-section {\n margin-top: 16px;\n border-top: 1px solid var(--border);\n padding-top: 12px;\n}\n.reviw-resolved-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n color: var(--text-dim);\n font-size: 13px;\n cursor: pointer;\n padding: 4px 0;\n}\n.reviw-resolved-toggle:hover {\n color: var(--text);\n}\n.reviw-resolved-toggle .arrow {\n transition: transform 150ms ease;\n}\n.reviw-resolved-toggle.open .arrow {\n transform: rotate(90deg);\n}\n.reviw-resolved-list {\n display: none;\n margin-top: 12px;\n}\n.reviw-resolved-list.visible {\n display: block;\n}\n.reviw-resolved-item {\n padding: 10px 12px;\n background: var(--input-bg);\n border-radius: 8px;\n margin-bottom: 8px;\n opacity: 0.7;\n}\n.reviw-resolved-item:last-child {\n margin-bottom: 0;\n}\n.reviw-resolved-q {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-resolved-a {\n font-size: 13px;\n color: var(--text);\n}\n/* Notice Bar */\n.reviw-questions-bar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n font-size: 13px;\n z-index: 1050;\n justify-content: center;\n align-items: center;\n gap: 12px;\n}\n.reviw-questions-bar.visible {\n display: flex;\n}\n.reviw-questions-bar button {\n padding: 4px 12px;\n border: 1px solid rgba(255, 255, 255, 0.3);\n background: rgba(255, 255, 255, 0.1);\n color: var(--text-inverse);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n transition: all 150ms ease;\n}\n.reviw-questions-bar button:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n/* Adjust layout when bar is visible */\nbody.has-questions-bar header {\n top: 36px;\n}\nbody.has-questions-bar .toolbar,\nbody.has-questions-bar .table-wrap {\n margin-top: 36px;\n}\n/* Copy notification toast */\n.copy-toast {\n position: fixed;\n bottom: 60px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 1000;\n}\n.copy-toast.visible {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n}\n@media (max-width: 960px) {\n .md-layout { flex-direction: column; }\n .md-left { max-width: 100%; flex: 1 1 0; min-height: 0; }\n .md-right { display: none; }\n .media-sidebar { display: none; }\n .media-sidebar-toggle { display: none !important; }\n}\n.md-layout.preview-only .md-right { display: none; }\n.md-layout.preview-only .md-left { flex: 1 1 0; min-height: 0; max-width: 100%; }\n.filter-menu {\n position: absolute;\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 10px;\n box-shadow: 0 14px 30px var(--shadow-color);\n padding: 8px;\n display: none;\n z-index: 12;\n width: 180px;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.filter-menu button {\n width: 100%;\n display: block;\n margin: 4px 0;\n padding: 8px 10px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n color: var(--text);\n cursor: pointer;\n font-size: 13px;\n text-align: left;\n}\n.filter-menu button:hover { background: var(--hover-bg); }\n.modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0,0,0,0.6);\n display: none;\n align-items: center;\n justify-content: center;\n z-index: 100;\n}\n.modal-overlay.visible { display: flex; }\n/* Submit modal: top-right position, no blocking overlay */\n#submit-modal {\n background: transparent;\n pointer-events: none;\n align-items: flex-start;\n justify-content: flex-end;\n}\n#submit-modal.visible { display: flex; }\n#submit-modal .modal-dialog {\n pointer-events: auto;\n margin: 60px 20px 20px 20px; /* top margin avoids header button overlap */\n}\n.modal-dialog {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 24px;\n width: 90%;\n max-width: 480px;\n box-shadow: var(--shadow-card);\n backdrop-filter: blur(24px);\n -webkit-backdrop-filter: blur(24px);\n transition: background 240ms ease, border-color 240ms ease;\n}\n.modal-dialog h3 { margin: 0 0 14px; font-size: 18px; font-weight: 700; color: var(--text); letter-spacing: -0.01em; }\n.modal-summary { color: var(--muted); font-size: 13px; margin-bottom: 14px; line-height: 1.5; }\n.modal-dialog label { display: block; font-size: 12px; font-weight: 600; margin-bottom: 8px; color: var(--muted); letter-spacing: 0.02em; text-transform: uppercase; }\n.modal-dialog textarea {\n width: 100%;\n min-height: 100px;\n background: var(--input-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n color: var(--text);\n padding: 12px 14px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n resize: vertical;\n box-sizing: border-box;\n transition: background 200ms ease, border-color 200ms ease, box-shadow 200ms ease;\n}\n.modal-dialog textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }\n.modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 18px; }\n.modal-actions button {\n padding: 9px 16px;\n border-radius: var(--radius-sm);\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text);\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: background 160ms ease, border-color 160ms ease, transform 120ms ease;\n}\n.modal-actions button:hover { background: var(--hover-bg); border-color: var(--border-strong); }\n.modal-actions button.primary { background: var(--accent); color: var(--text-inverse); border-color: var(--accent); }\n.image-attach-area { margin: 12px 0; }\n.image-attach-area label { display: block; font-size: 12px; color: var(--muted); margin-bottom: 6px; }\n.image-attach-area.image-attach-small { margin: 8px 0; }\n.image-attach-area.image-attach-small label { font-size: 11px; }\n.image-preview-list { display: flex; flex-wrap: wrap; gap: 8px; min-height: 24px; }\n.image-preview-item { position: relative; }\n.image-preview-item img { max-width: 80px; max-height: 60px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; }\n.image-preview-item .remove-image { position: absolute; top: -6px; right: -6px; width: 18px; height: 18px; border-radius: 50%; background: var(--error, #ef4444); color: #fff; border: none; cursor: pointer; font-size: 12px; line-height: 1; display: flex; align-items: center; justify-content: center; }\n.image-preview-item .remove-image:hover { background: #dc2626; }\n.modal-actions button.primary:hover { background: #7dd3fc; }\n.modal-actions-decision { justify-content: space-between; align-items: center; }\n.kbd-hint { display: inline-block; font-size: 10px; padding: 1px 5px; border-radius: 3px; background: rgba(255,255,255,0.15); margin-left: 6px; font-family: system-ui; opacity: 0.8; }\n[data-theme=\"light\"] .kbd-hint { background: rgba(0,0,0,0.08); }\n.decision-btn { padding: 9px 16px; border-radius: var(--radius-sm); border: 1px solid var(--border); cursor: pointer; font-size: 13px; font-weight: 700; letter-spacing: 0.01em; transition: background 160ms ease, border-color 160ms ease, transform 120ms ease, box-shadow 160ms ease; }\n.decision-btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-soft); }\n.decision-approve { background: rgba(107, 191, 134, 0.14); color: var(--success); border-color: rgba(107, 191, 134, 0.42); }\n.decision-approve:hover { background: rgba(107, 191, 134, 0.22); border-color: var(--success); }\n.decision-request-changes { background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%); color: var(--text-inverse); border-color: transparent; }\n.decision-request-changes:hover { background: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent) 100%); }\n[data-theme=\"light\"] .decision-approve { background: rgba(77, 157, 99, 0.14); color: var(--success); border-color: rgba(77, 157, 99, 0.38); }\n[data-theme=\"light\"] .decision-approve:hover { background: rgba(77, 157, 99, 0.22); }\n.comment-sent-badge { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 6px; vertical-align: middle; }\n.comment-sent-badge.sent { background: #166534; color: #bbf7d0; }\n.comment-sent-badge.failed { background: #7f1d1d; color: #fecaca; }\n[data-theme=\"light\"] .comment-sent-badge.sent { background: #dcfce7; color: #166534; }\n[data-theme=\"light\"] .comment-sent-badge.failed { background: #fee2e2; color: #991b1b; }\n\n/* Submit & Exit disabled state */\n#send-and-exit:disabled { opacity: 0.4; cursor: not-allowed; }\n\n.modal-checkboxes { margin: 12px 0; }\n.modal-checkboxes label {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n color: var(--text);\n margin-bottom: 8px;\n cursor: pointer;\n}\n.modal-checkboxes input[type=\"checkbox\"] {\n margin-top: 2px;\n accent-color: var(--accent);\n}\n\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging .diff-line { cursor: crosshair; }\n\n/* === Diff viewer === */\n.diff-view {\n margin: 20px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 0;\n box-shadow: var(--shadow-soft);\n overflow: hidden;\n font-family: \"JetBrains Mono\", \"SF Mono\", \"Menlo\", \"Consolas\", ui-monospace, monospace;\n font-size: 13px;\n line-height: 1.55;\n}\n.diff-file-header {\n padding: 12px 20px;\n background: var(--accent-soft);\n color: var(--accent-strong);\n font-weight: 700;\n font-size: 13px;\n border-bottom: 1px solid var(--border);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.diff-file-header:not(:first-child) { border-top: 1px solid var(--border); }\n.diff-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: var(--radius-pill);\n background: var(--accent);\n color: var(--text-inverse);\n}\n.diff-label.new { background: rgba(77, 157, 99, 0.18); color: var(--success); }\n.diff-label.deleted { background: rgba(201, 86, 79, 0.18); color: var(--error); }\n.diff-label.binary { background: var(--accent-soft); color: var(--muted); }\n.diff-hunk-header {\n padding: 6px 20px;\n background: var(--input-bg);\n color: var(--muted);\n font-size: 12px;\n border-bottom: 1px solid var(--border);\n}\n.diff-line {\n display: flex;\n padding: 0 20px;\n white-space: pre;\n min-height: 20px;\n border-left: 3px solid transparent;\n transition: background 120ms ease;\n}\n.diff-line:hover { background: var(--hover-bg); }\n.diff-line.addition {\n background: rgba(77, 157, 99, 0.10);\n border-left-color: var(--success);\n color: var(--text);\n}\n.diff-line.deletion {\n background: rgba(201, 86, 79, 0.10);\n border-left-color: var(--error);\n color: var(--text);\n}\n[data-theme=\"dark\"] .diff-line.addition { background: rgba(107, 191, 134, 0.10); }\n[data-theme=\"dark\"] .diff-line.deletion { background: rgba(224, 104, 98, 0.12); }\n.diff-line .line-num {\n display: inline-block;\n width: 44px;\n min-width: 44px;\n text-align: right;\n padding-right: 10px;\n color: var(--muted);\n font-size: 11px;\n user-select: none;\n}\n.diff-line .line-content {\n flex: 1;\n padding-left: 4px;\n}\n.diff-line.addition .line-content::before { content: \"+ \"; color: var(--success); font-weight: 700; }\n.diff-line.deletion .line-content::before { content: \"- \"; color: var(--error); font-weight: 700; }\n.diff-line:not(.addition):not(.deletion) .line-content::before { content: \" \"; }\n.diff-line.has-comment { outline: 2px dashed var(--accent); outline-offset: -2px; }\n\n/* === Plain text viewer === */\n.text-view {\n margin: 20px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 16px 0;\n box-shadow: var(--shadow-soft);\n font-family: \"JetBrains Mono\", \"SF Mono\", \"Menlo\", \"Consolas\", ui-monospace, monospace;\n font-size: 13px;\n line-height: 1.65;\n}\n.text-line {\n display: flex;\n padding: 0 20px;\n white-space: pre-wrap;\n word-break: break-word;\n transition: background 120ms ease;\n cursor: text;\n}\n.text-line:hover { background: var(--hover-bg); }\n.text-line.has-comment { background: var(--selected-bg); border-left: 3px solid var(--accent); padding-left: 17px; }\n.text-line .line-num {\n display: inline-block;\n width: 44px;\n min-width: 44px;\n text-align: right;\n padding-right: 14px;\n color: var(--muted);\n font-size: 11px;\n user-select: none;\n}\n.text-line .line-content { flex: 1; color: var(--text); }\n\n@media (max-width: 840px) {\n header { flex-direction: column; align-items: flex-start; }\n .comment-list { width: calc(100% - 24px); right: 12px; }\n}\n/* Mermaid diagram styles */\n.mermaid-container {\n position: relative;\n margin: 16px 0;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 16px;\n overflow: hidden;\n}\n.mermaid-container .mermaid {\n display: flex;\n justify-content: center;\n}\n.mermaid-container .mermaid svg {\n max-width: 100%;\n height: auto;\n cursor: pointer;\n pointer-events: auto;\n}\n.mermaid-error-banner {\n background: #fff3f3;\n color: #c33;\n border: 1px solid #e88;\n border-radius: 4px;\n padding: 6px 10px;\n margin-bottom: 8px;\n font-size: 12px;\n font-weight: 500;\n}\n[data-theme=\"dark\"] .mermaid-error-banner {\n background: #3a1a1a;\n color: #f88;\n border-color: #744;\n}\n.mermaid-fullscreen-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 12px;\n z-index: 2;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.mermaid-fullscreen-btn:hover { background: var(--hover-bg); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1000;\n display: none;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px;\n background: var(--panel-alpha);\n border-bottom: 1px solid var(--border);\n}\n.fullscreen-header h3 { margin: 0; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 8px; align-items: center; }\n.fullscreen-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 12px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n}\n.fullscreen-controls button:hover { background: var(--hover-bg); }\n.fullscreen-controls .zoom-info { font-size: 12px; color: var(--muted); min-width: 50px; text-align: center; }\n.fullscreen-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.fullscreen-content:active { cursor: grabbing; }\n.fullscreen-content .mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n padding: 40px;\n}\n.fullscreen-content .mermaid svg {\n display: block;\n}\n/* Minimap */\n.minimap {\n position: absolute;\n top: 70px;\n right: 20px;\n width: 200px;\n height: 150px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n}\n.minimap-content {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n}\n.minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n/* Error toast */\n.mermaid-error-toast {\n position: fixed;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--error);\n color: white;\n padding: 12px 24px;\n border-radius: 8px;\n font-size: 13px;\n max-width: 80%;\n z-index: 2000;\n display: none;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n white-space: pre-wrap;\n font-family: monospace;\n}\n.mermaid-error-toast.visible { display: block; }\n\n/* History Panel - Push layout */\nbody { transition: margin-right 0.28s cubic-bezier(0.2, 0.8, 0.2, 1); }\nbody.history-open { margin-right: 340px; }\nbody.history-open header { right: 340px; }\nheader { transition: right 0.28s cubic-bezier(0.2, 0.8, 0.2, 1); right: 0; }\n\n.history-toggle {\n background: transparent;\n color: var(--text);\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0;\n font-size: 14px;\n cursor: pointer;\n width: 34px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 160ms ease, border-color 160ms ease;\n}\n.history-toggle:hover { background: var(--hover-bg); border-color: var(--border); }\n.history-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 340px;\n height: 100vh;\n background: var(--panel-alpha);\n border-left: 1px solid var(--border);\n backdrop-filter: saturate(140%) blur(24px);\n -webkit-backdrop-filter: saturate(140%) blur(24px);\n box-shadow: -20px 0 40px rgba(0, 0, 0, 0.08);\n z-index: 90;\n transform: translateX(100%);\n transition: transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1);\n display: flex;\n flex-direction: column;\n}\n.history-panel.open { transform: translateX(0); }\n.history-panel-header {\n padding: 16px;\n border-bottom: 1px solid var(--border);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.history-panel-header h3 { margin: 0; font-size: 14px; font-weight: 600; }\n.history-panel-close {\n background: transparent;\n border: none;\n color: var(--muted);\n cursor: pointer;\n font-size: 18px;\n padding: 4px;\n}\n.history-panel-close:hover { color: var(--text); }\n.history-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.history-empty {\n color: var(--muted);\n font-size: 13px;\n text-align: center;\n padding: 40px 20px;\n}\n.history-date-group { margin-bottom: 16px; }\n.history-date {\n font-size: 11px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 8px;\n text-transform: uppercase;\n}\n.history-item {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n margin-bottom: 8px;\n overflow: hidden;\n}\n.history-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 10px;\n background: var(--selected-bg);\n cursor: pointer;\n}\n.history-item-header:hover { background: var(--hover-bg); }\n.history-item-file {\n font-size: 12px;\n font-weight: 600;\n color: var(--text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 180px;\n}\n.history-item-time { font-size: 10px; color: var(--muted); }\n.history-item-body {\n display: none;\n padding: 10px;\n font-size: 12px;\n border-top: 1px solid var(--border);\n}\n.history-item.expanded .history-item-body { display: block; }\n.history-summary {\n color: var(--text);\n margin-bottom: 8px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--border);\n}\n.history-summary-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 4px;\n}\n.history-summary-text { white-space: pre-wrap; line-height: 1.4; }\n.history-comments-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 6px;\n}\n.history-comment {\n padding: 6px 0;\n border-bottom: 1px solid var(--border);\n}\n.history-comment:last-child { border-bottom: none; }\n.history-comment-line {\n font-size: 10px;\n color: var(--accent);\n font-weight: 600;\n margin-bottom: 2px;\n}\n.history-comment-quote {\n background: rgba(0, 0, 0, 0.3);\n border-left: 2px solid var(--accent);\n padding: 4px 8px;\n margin: 4px 0;\n font-family: 'SF Mono', Monaco, Consolas, monospace;\n font-size: 11px;\n color: var(--muted);\n white-space: pre-wrap;\n word-break: break-all;\n max-height: 80px;\n overflow-y: auto;\n}\n.history-comment-text {\n color: var(--text);\n line-height: 1.4;\n white-space: pre-wrap;\n}\n.history-badge {\n display: inline-block;\n background: var(--accent);\n color: var(--text-inverse);\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 10px;\n margin-left: 6px;\n}\n/* Table scroll container */\n.table-container {\n overflow-x: auto;\n margin: 16px 0;\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.table-container table {\n margin: 0;\n border: none;\n border-radius: 0;\n}\n.table-container::-webkit-scrollbar {\n height: 6px;\n}\n.table-container::-webkit-scrollbar-track {\n background: var(--bg);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb:hover {\n background: var(--muted);\n}\n/* Media sidebar */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden { display: none; }\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar { width: 4px; }\n.media-sidebar-thumbs::-webkit-scrollbar-track { background: transparent; }\n.media-sidebar-thumbs::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover { border-color: var(--accent); transform: scale(1.05); box-shadow: 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.media-sidebar-thumb svg { width: 100%; height: 100%; display: block; }\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video { width: 100%; height: 100%; object-fit: cover; }\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg { width: 100% !important; height: 100% !important; max-width: 100%; max-height: 100%; display: block; }\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 4px;\n left: 4px;\n z-index: 10;\n background: rgba(0,0,0,0.5);\n border: none;\n color: #fff;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n cursor: pointer;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img { max-width: none; max-height: none; border-radius: 0; }\n.media-sidebar-viewer-content video { max-width: 100%; max-height: 100vh; border-radius: 0; background: #000; }\n.media-sidebar-viewer-label {\n margin-top: 8px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 12px;\n right: 12px;\n background: rgba(0,0,0,0.7);\n color: #fff;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n pointer-events: none;\n transition: opacity 0.3s ease;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-maximize-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-maximize-btn:hover { background: rgba(0,0,0,0.8); }\n.sidebar-mermaid-viewport { overflow: hidden; position: relative; cursor: grab; }\n.sidebar-mermaid-wrapper { position: absolute; left: 0; top: 0; transform-origin: 0 0; }\n.sidebar-video-container { width: 100%; }\n.sidebar-video-container video { width: 100%; max-height: calc(100vh - 200px); border-radius: 8px; background: #000; }\n/* Video timeline */\n.video-timeline {\n display: flex;\n gap: 8px;\n padding: 8px;\n overflow-x: auto;\n background: var(--panel);\n border-radius: 8px;\n margin-top: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.timeline-loading { color: var(--muted); font-size: 12px; padding: 8px; }\n.timeline-thumb-wrapper {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n}\n.timeline-thumb {\n width: 80px;\n height: 60px;\n object-fit: cover;\n border-radius: 4px;\n border: 2px solid transparent;\n transition: border-color 0.2s ease;\n}\n.timeline-thumb.active { border-color: var(--accent); }\n.timeline-thumb:hover { border-color: var(--accent); opacity: 0.8; }\n.timeline-time { font-size: 10px; color: var(--muted); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.9);\n z-index: 1000;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: rgba(0,0,0,0.8);\n border-bottom: 1px solid rgba(255,255,255,0.1);\n}\n.fullscreen-header h3 { margin: 0; color: #fff; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 6px; align-items: center; }\n.fullscreen-controls button {\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n color: #fff;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n}\n.fullscreen-controls button:hover { background: rgba(255,255,255,0.2); }\n.fullscreen-controls .zoom-info { color: #fff; font-size: 12px; min-width: 40px; text-align: center; }\n@media (max-width: 960px) {\n .media-sidebar { display: none !important; }\n .media-sidebar-toggle { display: none !important; }\n}\n.video-overlay-wrapper {\n position: relative;\n display: inline-block;\n}\n.video-fs-overlay-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.video-fs-overlay-btn:hover { background: rgba(0,0,0,0.8); }\n@media (max-width: 600px) {\n .minimap { display: none !important; }\n .fullscreen-header { padding: 8px 12px; }\n .fullscreen-controls { gap: 4px; }\n .fullscreen-controls button { padding: 6px 8px; font-size: 11px; }\n .fullscreen-controls .zoom-info { font-size: 11px; min-width: 32px; }\n .history-panel { width: 100vw; }\n body.history-open header { right: 0; }\n}");
4090
3563
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</style></head><body>");
4091
3564
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<header><div class=\"meta\">");
4092
3565
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<h1>");
@@ -4110,7 +3583,7 @@ function _M0FP36kazuph5reviw4core26build__page__start_2einner(buf, filename, fil
4110
3583
  }
4111
3584
  const dir_end = last_slash;
4112
3585
  if (dir_end >= 0) {
4113
- const dir_path = _M0MPC16string6String17substring_2einner(file_path, 0, dir_end + 1 | 0);
3586
+ const dir_path = _M0IPC16string10StringViewPB4Show10to__string(_M0MPC16string6String11sub_2einner(file_path, 0, dir_end + 1 | 0));
4114
3587
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"title-path\">");
4115
3588
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core12escape__html(dir_path));
4116
3589
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</span>");
@@ -4122,11 +3595,12 @@ function _M0FP36kazuph5reviw4core26build__page__start_2einner(buf, filename, fil
4122
3595
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"badge\">Click to comment / ESC to cancel</span>");
4123
3596
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"pill\" id=\"pill-comments\" title=\"Toggle comment panel\">Comments <strong id=\"comment-count\">0</strong></button>");
4124
3597
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</div><div class=\"actions\">");
3598
+ _M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"sse-dot sse-dot-connected\" id=\"sse-status\" role=\"status\" aria-live=\"polite\" title=\"Connected\"><span class=\"sse-dot-label\">Connected</span></span>");
4125
3599
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"media-sidebar-toggle\" id=\"media-sidebar-toggle\" title=\"Media Gallery\" aria-label=\"Toggle media gallery\">🖼<span class=\"toggle-count\" id=\"media-toggle-count\"></span></button>");
4126
3600
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"view-toggle\" id=\"view-toggle\" title=\"Hide source panel\">&#128221;</button>");
4127
3601
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"history-toggle\" id=\"history-toggle\" title=\"Review History\">&#9776;</button>");
4128
3602
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"theme-toggle\" id=\"theme-toggle\" title=\"Toggle theme\"><span id=\"theme-icon\">&#127769;</span></button>");
4129
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button id=\"send-and-exit\">Submit &amp; Exit</button>");
3603
+ _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button id=\"send-and-exit\" class=\"submit-exit-btn\">Submit &amp; Exit</button>");
4130
3604
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</div></header>");
4131
3605
  }
4132
3606
  function _M0FP36kazuph5reviw4core23build__questions__modal(buf, questions) {
@@ -4405,14 +3879,6 @@ function _M0FP36kazuph5reviw4core21build__script__footer(buf, port, mode, filena
4405
3879
  _M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core18escape__js__string(filename));
4406
3880
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "\";</script></body></html>");
4407
3881
  }
4408
- function _M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf) {
4409
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"send-to-ai-bar\" id=\"send-to-ai-bar\">");
4410
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"send-to-ai-inner\">");
4411
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"sse-status\" id=\"sse-status\">🟢 Connected</span>");
4412
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "<input type=\"text\" class=\"send-to-ai-input\" id=\"send-to-ai-summary\" placeholder=\"Comment to AI (optional)\" />");
4413
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"send-to-ai-btn\" id=\"send-to-ai-btn\">📤 Send to AI</button>");
4414
- _M0IPB13StringBuilderPB6Logger13write__string(buf, "</div></div>");
4415
- }
4416
3882
  function _M0FP36kazuph5reviw4core20build__submit__modal(buf) {
4417
3883
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"modal-overlay\" id=\"submit-modal\">");
4418
3884
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"modal-dialog\">");
@@ -4602,7 +4068,6 @@ function _M0FP36kazuph5reviw4core29build__markdown__html_2einner(md, filename, p
4602
4068
  _M0FP36kazuph5reviw4core20build__comment__card(buf);
4603
4069
  _M0FP36kazuph5reviw4core27build__comment__list__aside(buf);
4604
4070
  _M0FP36kazuph5reviw4core20build__submit__modal(buf);
4605
- _M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
4606
4071
  _M0FP36kazuph5reviw4core22build__recovery__modal(buf);
4607
4072
  _M0FP36kazuph5reviw4core26build__mermaid__fullscreen(buf);
4608
4073
  _M0FP36kazuph5reviw4core24build__image__fullscreen(buf);
@@ -4748,7 +4213,6 @@ function _M0FP36kazuph5reviw4core16build__csv__html(data, filename, port) {
4748
4213
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</tbody></table></div>");
4749
4214
  _M0FP36kazuph5reviw4core20build__comment__card(buf);
4750
4215
  _M0FP36kazuph5reviw4core20build__submit__modal(buf);
4751
- _M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
4752
4216
  _M0FP36kazuph5reviw4core21build__history__panel(buf);
4753
4217
  _M0FP36kazuph5reviw4core22build__recovery__modal(buf);
4754
4218
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "<script>const DATA = ");
@@ -4885,7 +4349,6 @@ function _M0FP36kazuph5reviw4core17build__diff__html(data, filename, port) {
4885
4349
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</div>");
4886
4350
  _M0FP36kazuph5reviw4core20build__comment__card(buf);
4887
4351
  _M0FP36kazuph5reviw4core20build__submit__modal(buf);
4888
- _M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
4889
4352
  _M0FP36kazuph5reviw4core21build__history__panel(buf);
4890
4353
  _M0FP36kazuph5reviw4core22build__recovery__modal(buf);
4891
4354
  _M0FP36kazuph5reviw4core21build__script__footer(buf, port, "diff", filename);
@@ -4918,7 +4381,6 @@ function _M0FP36kazuph5reviw4core17build__text__html(lines, filename, port) {
4918
4381
  _M0IPB13StringBuilderPB6Logger13write__string(buf, "</div>");
4919
4382
  _M0FP36kazuph5reviw4core20build__comment__card(buf);
4920
4383
  _M0FP36kazuph5reviw4core20build__submit__modal(buf);
4921
- _M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
4922
4384
  _M0FP36kazuph5reviw4core21build__history__panel(buf);
4923
4385
  _M0FP36kazuph5reviw4core22build__recovery__modal(buf);
4924
4386
  _M0FP36kazuph5reviw4core21build__script__footer(buf, port, "text", filename);
@@ -5003,23 +4465,23 @@ function _M0FP36kazuph5reviw4core14collect__hunks(lines, start, len) {
5003
4465
  while (true) {
5004
4466
  if (i < len) {
5005
4467
  const line = _M0MPC15array5Array2atGsE(lines, i);
5006
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS976, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS976.length))) {
4468
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979.length))) {
5007
4469
  const header = _M0FP36kazuph5reviw4core19parse__hunk__header(line);
5008
4470
  const hunk_lines = [];
5009
4471
  i = i + 1 | 0;
5010
4472
  while (true) {
5011
4473
  if (i < len) {
5012
4474
  const l = _M0MPC15array5Array2atGsE(lines, i);
5013
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS978, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS978.length)) || (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979.length)) || _M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS980, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS980.length)))) {
4475
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981.length)) || (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982.length)) || _M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983.length)))) {
5014
4476
  break;
5015
4477
  }
5016
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981.length))) {
4478
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984.length))) {
5017
4479
  _M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(1, _M0FP36kazuph5reviw4core11safe__slice(l, 1)));
5018
4480
  } else {
5019
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982.length))) {
4481
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS985, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS985.length))) {
5020
4482
  _M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(2, _M0FP36kazuph5reviw4core11safe__slice(l, 1)));
5021
4483
  } else {
5022
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983.length))) {
4484
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS986, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS986.length))) {
5023
4485
  _M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(0, _M0FP36kazuph5reviw4core11safe__slice(l, 1)));
5024
4486
  } else {
5025
4487
  _M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(0, l));
@@ -5034,7 +4496,7 @@ function _M0FP36kazuph5reviw4core14collect__hunks(lines, start, len) {
5034
4496
  }
5035
4497
  _M0MPC15array5Array4pushGsE(hunks, new _M0TP36kazuph5reviw4core8DiffHunk(header._0, header._1, header._2, header._3, header._4, hunk_lines));
5036
4498
  } else {
5037
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984.length)) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS985, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS985.length))) {
4499
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS987, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS987.length)) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS988, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS988.length))) {
5038
4500
  break;
5039
4501
  } else {
5040
4502
  i = i + 1 | 0;
@@ -5074,7 +4536,7 @@ function _M0FP36kazuph5reviw4core19extract__git__paths(line) {
5074
4536
  }
5075
4537
  }
5076
4538
  function _M0FP36kazuph5reviw4core19strip__diff__prefix(path) {
5077
- return _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS987, 0, _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS987.length)) || _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS988, 0, _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS988.length)) ? _M0FP36kazuph5reviw4core11safe__slice(path, 2) : path;
4539
+ return _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS990, 0, _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS990.length)) || _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS991, 0, _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS991.length)) ? _M0FP36kazuph5reviw4core11safe__slice(path, 2) : path;
5078
4540
  }
5079
4541
  function _M0FP36kazuph5reviw4core11parse__diff(input) {
5080
4542
  const files = [];
@@ -5084,7 +4546,7 @@ function _M0FP36kazuph5reviw4core11parse__diff(input) {
5084
4546
  while (true) {
5085
4547
  if (i < len) {
5086
4548
  const line = _M0MPC15array5Array2atGsE(lines, i);
5087
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS990, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS990.length))) {
4549
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS993, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS993.length))) {
5088
4550
  const paths = _M0FP36kazuph5reviw4core19extract__git__paths(line);
5089
4551
  let is_new = false;
5090
4552
  let is_deleted = false;
@@ -5093,19 +4555,19 @@ function _M0FP36kazuph5reviw4core11parse__diff(input) {
5093
4555
  while (true) {
5094
4556
  if (i < len) {
5095
4557
  const l = _M0MPC15array5Array2atGsE(lines, i);
5096
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS992, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS992.length))) {
4558
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS995, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS995.length))) {
5097
4559
  is_new = true;
5098
4560
  i = i + 1 | 0;
5099
4561
  } else {
5100
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS993, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS993.length))) {
4562
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS996, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS996.length))) {
5101
4563
  is_deleted = true;
5102
4564
  i = i + 1 | 0;
5103
4565
  } else {
5104
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS994, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS994.length))) {
4566
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS997, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS997.length))) {
5105
4567
  is_binary = true;
5106
4568
  i = i + 1 | 0;
5107
4569
  } else {
5108
- if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS995, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS995.length)) || (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS996, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS996.length)) || _M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS997, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS997.length)))) {
4570
+ if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS998, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS998.length)) || (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS999, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS999.length)) || _M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS1000, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS1000.length)))) {
5109
4571
  i = i + 1 | 0;
5110
4572
  } else {
5111
4573
  break;
@@ -5122,11 +4584,11 @@ function _M0FP36kazuph5reviw4core11parse__diff(input) {
5122
4584
  i = result._1;
5123
4585
  _M0MPC15array5Array4pushGsE(files, new _M0TP36kazuph5reviw4core8DiffFile(paths._0, paths._1, is_new, is_deleted, is_binary, result._0));
5124
4586
  } else {
5125
- if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS998, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS998.length))) {
4587
+ if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS1001, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS1001.length))) {
5126
4588
  const old_path = _M0FP36kazuph5reviw4core19strip__diff__prefix(_M0FP36kazuph5reviw4core11safe__slice(line, 4));
5127
4589
  let new_path = "";
5128
4590
  i = i + 1 | 0;
5129
- if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS999, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS999.length))) {
4591
+ if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS1002, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS1002.length))) {
5130
4592
  new_path = _M0FP36kazuph5reviw4core19strip__diff__prefix(_M0FP36kazuph5reviw4core11safe__slice(_M0MPC15array5Array2atGsE(lines, i), 4));
5131
4593
  i = i + 1 | 0;
5132
4594
  }
@@ -5247,13 +4709,13 @@ function _M0FP36kazuph5reviw4core21csv__data__from__flat(flat) {
5247
4709
  }
5248
4710
  }
5249
4711
  function _M0FP36kazuph5reviw6server10os__tmpdir() {
5250
- return tmpdir$2114();
4712
+ return tmpdir$1945();
5251
4713
  }
5252
4714
  function _M0FP36kazuph5reviw6server10path__join(_tmp, _tmp$2) {
5253
- return join$2117(_tmp, _tmp$2);
4715
+ return join$1948(_tmp, _tmp$2);
5254
4716
  }
5255
4717
  function _M0FP36kazuph5reviw6server17write__file__sync(_tmp, _tmp$2) {
5256
- return writeFileSync$2121(_tmp, _tmp$2);
4718
+ return writeFileSync$1952(_tmp, _tmp$2);
5257
4719
  }
5258
4720
  function _M0FP36kazuph5reviw6server19write__file__secure(path, data) {
5259
4721
  _M0FP36kazuph5reviw6server15try__call__void(() => {
@@ -5268,7 +4730,7 @@ function _M0FP36kazuph5reviw6server15init__live__log() {
5268
4730
  _M0FP36kazuph5reviw6server14console__error(`[REVIW_LIVE] ${path}`);
5269
4731
  }
5270
4732
  function _M0FP36kazuph5reviw6server22fs__append__file__sync(_tmp, _tmp$2) {
5271
- return appendFileSync$2124(_tmp, _tmp$2);
4733
+ return appendFileSync$1955(_tmp, _tmp$2);
5272
4734
  }
5273
4735
  function _M0FP36kazuph5reviw6server17append__live__log(json_line) {
5274
4736
  if (_M0FP36kazuph5reviw6server15live__log__path.val.length > 0) {
@@ -5281,10 +4743,10 @@ function _M0FP36kazuph5reviw6server17append__live__log(json_line) {
5281
4743
  }
5282
4744
  }
5283
4745
  function _M0FP36kazuph5reviw6server12exists__sync(_tmp) {
5284
- return existsSync$2126(_tmp);
4746
+ return existsSync$1957(_tmp);
5285
4747
  }
5286
4748
  function _M0FP36kazuph5reviw6server12unlink__sync(_tmp) {
5287
- return unlinkSync$2128(_tmp);
4749
+ return unlinkSync$1959(_tmp);
5288
4750
  }
5289
4751
  function _M0FP36kazuph5reviw6server18cleanup__live__log() {
5290
4752
  if (_M0FP36kazuph5reviw6server15live__log__path.val.length > 0 && _M0FP36kazuph5reviw6server12exists__sync(_M0FP36kazuph5reviw6server15live__log__path.val)) {
@@ -5297,7 +4759,7 @@ function _M0FP36kazuph5reviw6server18cleanup__live__log() {
5297
4759
  }
5298
4760
  }
5299
4761
  function _M0FP36kazuph5reviw6server16read__file__sync(_tmp, _tmp$2) {
5300
- return readFileSync$2131(_tmp, _tmp$2);
4762
+ return readFileSync$1962(_tmp, _tmp$2);
5301
4763
  }
5302
4764
  function _M0FP36kazuph5reviw6server12load__ui__js() {
5303
4765
  if (_M0FP36kazuph5reviw6server13ui__js__cache.val.length > 0) {
@@ -5315,7 +4777,7 @@ function _M0FP36kazuph5reviw6server12load__ui__js() {
5315
4777
  }
5316
4778
  }
5317
4779
  function _M0FP36kazuph5reviw6server11os__homedir() {
5318
- return homedir$2133();
4780
+ return homedir$1964();
5319
4781
  }
5320
4782
  function _M0FP36kazuph5reviw6server9lock__dir() {
5321
4783
  const override_dir = _M0FP36kazuph5reviw6server13get__env__var("REVIW_LOCK_DIR");
@@ -5326,7 +4788,7 @@ function _M0FP36kazuph5reviw6server10lock__path(port) {
5326
4788
  return _M0FP36kazuph5reviw6server10path__join(dir, `${_M0IP016_24default__implPB4Show10to__stringGiE(port)}.lock`);
5327
4789
  }
5328
4790
  function _M0FP36kazuph5reviw6server11mkdir__sync(_tmp, _tmp$2) {
5329
- return mkdirSync$2136(_tmp, _tmp$2);
4791
+ return mkdirSync$1967(_tmp, _tmp$2);
5330
4792
  }
5331
4793
  function _M0FP36kazuph5reviw6server17ensure__lock__dir() {
5332
4794
  const dir = _M0FP36kazuph5reviw6server9lock__dir();
@@ -5395,7 +4857,7 @@ function _M0FP36kazuph5reviw6server21find__available__port(base) {
5395
4857
  return base;
5396
4858
  }
5397
4859
  function _M0FP36kazuph5reviw6server13path__dirname(_tmp) {
5398
- return dirname$2143(_tmp);
4860
+ return dirname$1974(_tmp);
5399
4861
  }
5400
4862
  function _M0FP36kazuph5reviw6server21get__package__version() {
5401
4863
  let dir = _M0FP36kazuph5reviw6server16get__script__dir();
@@ -5447,7 +4909,7 @@ function _M0FP36kazuph5reviw6server17read__stdin__sync() {
5447
4909
  return _M0FP36kazuph5reviw6server16read__file__sync("/dev/stdin", "utf-8");
5448
4910
  }
5449
4911
  function _M0FP36kazuph5reviw6server13path__extname(_tmp) {
5450
- return extname$2150(_tmp);
4912
+ return extname$1981(_tmp);
5451
4913
  }
5452
4914
  function _M0FP36kazuph5reviw6server12detect__mode(file_path) {
5453
4915
  const ext = _M0FP36kazuph5reviw6server13path__extname(file_path);
@@ -5549,7 +5011,7 @@ function _M0FP36kazuph5reviw6server16detect__encoding(buf) {
5549
5011
  return "utf-8";
5550
5012
  }
5551
5013
  function _M0FP36kazuph5reviw6server18read__file__buffer(_tmp) {
5552
- return readFileSync$2131(_tmp);
5014
+ return readFileSync$1962(_tmp);
5553
5015
  }
5554
5016
  function _M0FP36kazuph5reviw6server12decode__file(path, override_enc) {
5555
5017
  const buf = _M0FP36kazuph5reviw6server18read__file__buffer(path);
@@ -5591,13 +5053,13 @@ function _M0FP36kazuph5reviw6server22load__and__build__html(ctx) {
5591
5053
  return _M0FP36kazuph5reviw4core16build__csv__html(data, ctx.filename, ctx.port);
5592
5054
  }
5593
5055
  function _M0FP36kazuph5reviw6server14path__basename(_tmp) {
5594
- return basename$2160(_tmp);
5056
+ return basename$1991(_tmp);
5595
5057
  }
5596
5058
  function _M0FP36kazuph5reviw6server13path__resolve(_tmp) {
5597
- return resolve$2162(_tmp);
5059
+ return resolve$1993(_tmp);
5598
5060
  }
5599
5061
  function _M0FP36kazuph5reviw6server25http__create__server__raw(_tmp) {
5600
- return createServer$2167(_tmp);
5062
+ return createServer$1998(_tmp);
5601
5063
  }
5602
5064
  function _M0FP36kazuph5reviw6server14create__server(handler) {
5603
5065
  return _M0FP36kazuph5reviw6server25http__create__server__raw(handler);
@@ -5736,7 +5198,7 @@ function _M0FP36kazuph5reviw6server22cancel__pending__close(ctx) {
5736
5198
  }
5737
5199
  }
5738
5200
  function _M0FP36kazuph5reviw6server22write__file__sync__buf(_tmp, _tmp$2) {
5739
- return writeFileSync$2121(_tmp, _tmp$2);
5201
+ return writeFileSync$1952(_tmp, _tmp$2);
5740
5202
  }
5741
5203
  function _M0FP36kazuph5reviw6server16base64__to__file(data, dir, index) {
5742
5204
  const ext = _M0FP36kazuph5reviw6server20extract__base64__ext(data);
@@ -5770,7 +5232,7 @@ function _M0FP36kazuph5reviw6server20ensure__history__dir() {
5770
5232
  }
5771
5233
  }
5772
5234
  function _M0FP36kazuph5reviw6server20crypto__create__hash(_tmp) {
5773
- return createHash$2188(_tmp);
5235
+ return createHash$2019(_tmp);
5774
5236
  }
5775
5237
  function _M0FP36kazuph5reviw6server14crypto__sha256(s) {
5776
5238
  return _M0FP36kazuph5reviw6server27hash__update__digest__hex16(_M0FP36kazuph5reviw6server20crypto__create__hash("sha256"), s);
@@ -5824,7 +5286,7 @@ function _M0FP36kazuph5reviw6server13save__history(file_path, entry_json) {
5824
5286
  _M0FP36kazuph5reviw6server11chmod__sync(hp, 384);
5825
5287
  }
5826
5288
  function _M0FP36kazuph5reviw6server13unwatch__file(_tmp) {
5827
- return unwatchFile$2193(_tmp);
5289
+ return unwatchFile$2024(_tmp);
5828
5290
  }
5829
5291
  function _M0FP36kazuph5reviw6server14handle__submit(ctx, body) {
5830
5292
  if (ctx.finished) {
@@ -5874,7 +5336,22 @@ function _M0FP36kazuph5reviw6server14handle__submit(ctx, body) {
5874
5336
  const action = _M0MP36kazuph5reviw4core12ReviewAction12from__string(action_str);
5875
5337
  const result = new _M0TP36kazuph5reviw4core12ReviewResult(ctx.filename, ctx.mode, comments, summary, answers, mermaid_errors, decision, action);
5876
5338
  _M0MPC15array5Array4pushGsE(_M0FP36kazuph5reviw6server12all__results, result);
5877
- if (comments.length > 0 || (summary.length > 0 || !(decision === undefined))) {
5339
+ _L: {
5340
+ _L$2: {
5341
+ if (comments.length > 0) {
5342
+ break _L$2;
5343
+ } else {
5344
+ if (summary.length > 0) {
5345
+ break _L$2;
5346
+ } else {
5347
+ if (decision === undefined) {
5348
+ } else {
5349
+ break _L$2;
5350
+ }
5351
+ }
5352
+ }
5353
+ break _L;
5354
+ }
5878
5355
  const entry_buf = _M0MPB13StringBuilder11new_2einner(0);
5879
5356
  _M0IPB13StringBuilderPB6Logger13write__string(entry_buf, "{\"timestamp\":\"");
5880
5357
  _M0IPB13StringBuilderPB6Logger13write__string(entry_buf, _M0FP36kazuph5reviw6server8iso__now());
@@ -6038,7 +5515,7 @@ function _M0FP36kazuph5reviw6server21handle__session__open(ctx, body) {
6038
5515
  _M0MPB3Map3setGssE(ctx.active_tab_instances, tab_id, instance_id);
6039
5516
  }
6040
5517
  function _M0FP36kazuph5reviw6server17child__exec__sync(_tmp, _tmp$2) {
6041
- return execSync$2206(_tmp, _tmp$2);
5518
+ return execSync$2039(_tmp, _tmp$2);
6042
5519
  }
6043
5520
  function _M0FP36kazuph5reviw6server15command__exists(cmd) {
6044
5521
  return _M0FP36kazuph5reviw6server15try__call__bool(() => {
@@ -6047,7 +5524,7 @@ function _M0FP36kazuph5reviw6server15command__exists(cmd) {
6047
5524
  });
6048
5525
  }
6049
5526
  function _M0FP36kazuph5reviw6server17fs__mkdtemp__sync(_tmp) {
6050
- return mkdtempSync$2209(_tmp);
5527
+ return mkdtempSync$2042(_tmp);
6051
5528
  }
6052
5529
  function _M0FP36kazuph5reviw6server15make__temp__dir() {
6053
5530
  return _M0FP36kazuph5reviw6server17fs__mkdtemp__sync(`${_M0FP36kazuph5reviw6server10os__tmpdir()}/reviw-`);
@@ -6056,13 +5533,13 @@ function _M0FP36kazuph5reviw6server18read__file__base64(path) {
6056
5533
  return _M0FP36kazuph5reviw6server17try__call__string(() => _M0FP36kazuph5reviw6server15buf__to__base64(_M0FP36kazuph5reviw6server18read__file__buffer(path)), "");
6057
5534
  }
6058
5535
  function _M0FP36kazuph5reviw6server22fs__readdir__sync__raw(_tmp) {
6059
- return readdirSync$2219(_tmp);
5536
+ return readdirSync$2052(_tmp);
6060
5537
  }
6061
5538
  function _M0FP36kazuph5reviw6server13readdir__sync(path) {
6062
5539
  return _M0FP36kazuph5reviw6server24try__call__array__string(() => _M0FP36kazuph5reviw6server22fs__readdir__sync__raw(path));
6063
5540
  }
6064
5541
  function _M0FP36kazuph5reviw6server12fs__rm__sync(_tmp, _tmp$2) {
6065
- return rmSync$2228(_tmp, _tmp$2);
5542
+ return rmSync$2061(_tmp, _tmp$2);
6066
5543
  }
6067
5544
  function _M0FP36kazuph5reviw6server18rm__dir__recursive(path) {
6068
5545
  _M0FP36kazuph5reviw6server15try__call__void(() => {
@@ -6070,13 +5547,13 @@ function _M0FP36kazuph5reviw6server18rm__dir__recursive(path) {
6070
5547
  });
6071
5548
  }
6072
5549
  function _M0FP36kazuph5reviw6server12child__spawn(_tmp, _tmp$2, _tmp$3) {
6073
- return spawn$2234(_tmp, _tmp$2, _tmp$3);
5550
+ return spawn$2067(_tmp, _tmp$2, _tmp$3);
6074
5551
  }
6075
5552
  function _M0FP36kazuph5reviw6server12spawn__async(cmd, args_json) {
6076
5553
  return _M0FP36kazuph5reviw6server12child__spawn(cmd, _M0FP36kazuph5reviw6server15js__parse__json(args_json), _M0FP36kazuph5reviw6server21js__spawn__opts__pipe());
6077
5554
  }
6078
5555
  function _M0FP36kazuph5reviw6server18child__spawn__sync(_tmp, _tmp$2, _tmp$3) {
6079
- return spawnSync$2239(_tmp, _tmp$2, _tmp$3);
5556
+ return spawnSync$2072(_tmp, _tmp$2, _tmp$3);
6080
5557
  }
6081
5558
  function _M0FP36kazuph5reviw6server19spawn__sync__stdout(cmd, args_json) {
6082
5559
  return _M0FP36kazuph5reviw6server17try__call__string(() => _M0FP36kazuph5reviw6server15js__obj__stdout(_M0FP36kazuph5reviw6server18child__spawn__sync(cmd, _M0FP36kazuph5reviw6server15js__parse__json(args_json), _M0FP36kazuph5reviw6server27js__spawn__opts__utf8__pipe())), "");
@@ -6084,7 +5561,7 @@ function _M0FP36kazuph5reviw6server19spawn__sync__stdout(cmd, args_json) {
6084
5561
  function _M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res) {
6085
5562
  const video_path = _M0FP36kazuph5reviw6server19parse__query__param(url, "path");
6086
5563
  const scene_str = _M0FP36kazuph5reviw6server19parse__query__param(url, "scene");
6087
- if (_M0MPC16string6String8contains(video_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS526, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS526.length))) {
5564
+ if (_M0MPC16string6String8contains(video_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530.length))) {
6088
5565
  _M0FP36kazuph5reviw6server16res__write__head(res, 400, "text/plain");
6089
5566
  _M0FP36kazuph5reviw6server8res__end(res, "Invalid path");
6090
5567
  return undefined;
@@ -6092,7 +5569,7 @@ function _M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res) {
6092
5569
  const base_dir = _M0FP36kazuph5reviw6server13path__dirname(ctx.file_path);
6093
5570
  const resolved_video = _M0FP36kazuph5reviw6server13path__resolve(_M0FP36kazuph5reviw6server10path__join(base_dir, video_path));
6094
5571
  const resolved_base = _M0FP36kazuph5reviw6server13path__resolve(base_dir);
6095
- if (!_M0MPC16string6String11has__prefix(resolved_video, new _M0TPC16string10StringView(resolved_base, 0, resolved_base.length))) {
5572
+ if (!_M0FP36kazuph5reviw4core15is__path__under(resolved_base, resolved_video)) {
6096
5573
  _M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
6097
5574
  _M0FP36kazuph5reviw6server8res__end(res, "Forbidden");
6098
5575
  return undefined;
@@ -6129,7 +5606,7 @@ function _M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res) {
6129
5606
  const _ = _tmp;
6130
5607
  if (_ < _bind) {
6131
5608
  const file = files[_];
6132
- if (_M0MPC16string6String11has__prefix(file, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530.length)) && _M0MPC16string6String11has__suffix(file, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS531, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS531.length))) {
5609
+ if (_M0MPC16string6String11has__prefix(file, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS534, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS534.length)) && _M0MPC16string6String11has__suffix(file, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS535, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS535.length))) {
6133
5610
  _M0MPC15array5Array4pushGsE(scene_files, file);
6134
5611
  }
6135
5612
  _tmp = _ + 1 | 0;
@@ -6290,13 +5767,13 @@ function _M0FP36kazuph5reviw6server9index__of(s, target) {
6290
5767
  return -1;
6291
5768
  }
6292
5769
  function _M0FP36kazuph5reviw6server14fs__stat__sync(_tmp) {
6293
- return statSync$2257(_tmp);
5770
+ return statSync$2090(_tmp);
6294
5771
  }
6295
5772
  function _M0FP36kazuph5reviw6server14is__file__sync(path) {
6296
5773
  return _M0FP36kazuph5reviw6server18js__stat__is__file(_M0FP36kazuph5reviw6server14fs__stat__sync(path));
6297
5774
  }
6298
5775
  function _M0FP36kazuph5reviw6server30fs__create__read__stream__opts(_tmp, _tmp$2) {
6299
- return createReadStream$2261(_tmp, _tmp$2);
5776
+ return createReadStream$2094(_tmp, _tmp$2);
6300
5777
  }
6301
5778
  function _M0FP36kazuph5reviw6server17pipe__file__range(file_path, res, content_type, range_header) {
6302
5779
  const stat = _M0FP36kazuph5reviw6server14fs__stat__sync(file_path);
@@ -6311,7 +5788,7 @@ function _M0FP36kazuph5reviw6server17pipe__file__range(file_path, res, content_t
6311
5788
  _M0FP36kazuph5reviw6server8js__pipe(stream, res);
6312
5789
  }
6313
5790
  function _M0FP36kazuph5reviw6server24fs__create__read__stream(_tmp) {
6314
- return createReadStream$2261(_tmp);
5791
+ return createReadStream$2094(_tmp);
6315
5792
  }
6316
5793
  function _M0FP36kazuph5reviw6server24pipe__file__to__response(file_path, res, content_type) {
6317
5794
  const stat = _M0FP36kazuph5reviw6server14fs__stat__sync(file_path);
@@ -6324,8 +5801,8 @@ function _M0FP36kazuph5reviw6server24pipe__file__to__response(file_path, res, co
6324
5801
  function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
6325
5802
  const qmark = _M0FP36kazuph5reviw6server9index__of(url, 63);
6326
5803
  const url_path = qmark >= 0 ? _M0FP36kazuph5reviw4core18safe__slice__range(url, 0, qmark) : url;
6327
- const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS566, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS566.length)) ? _M0FP36kazuph5reviw4core11safe__slice(url_path, 1) : url_path;
6328
- if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS564, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS564.length))) {
5804
+ const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS570, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS570.length)) ? _M0FP36kazuph5reviw4core11safe__slice(url_path, 1) : url_path;
5805
+ if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS568, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS568.length))) {
6329
5806
  _M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
6330
5807
  _M0FP36kazuph5reviw6server8res__end(res, "Forbidden");
6331
5808
  return undefined;
@@ -6334,7 +5811,7 @@ function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
6334
5811
  const static_path = _M0FP36kazuph5reviw6server10path__join(base_dir, relative_path);
6335
5812
  const resolved_static = _M0FP36kazuph5reviw6server13path__resolve(static_path);
6336
5813
  const resolved_base = _M0FP36kazuph5reviw6server13path__resolve(base_dir);
6337
- if (!_M0MPC16string6String11has__prefix(resolved_static, new _M0TPC16string10StringView(resolved_base, 0, resolved_base.length))) {
5814
+ if (!_M0FP36kazuph5reviw4core15is__path__under(resolved_base, resolved_static)) {
6338
5815
  _M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
6339
5816
  _M0FP36kazuph5reviw6server8res__end(res, "Forbidden");
6340
5817
  return undefined;
@@ -6342,7 +5819,7 @@ function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
6342
5819
  if (_M0FP36kazuph5reviw6server12exists__sync(resolved_static) && _M0FP36kazuph5reviw6server14is__file__sync(resolved_static)) {
6343
5820
  const ext = _M0MPC16string6String9to__lower(_M0FP36kazuph5reviw6server13path__extname(resolved_static));
6344
5821
  const content_type = _M0FP36kazuph5reviw6server15get__mime__type(ext);
6345
- const is_video = _M0MPC16string6String11has__prefix(content_type, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS565, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS565.length));
5822
+ const is_video = _M0MPC16string6String11has__prefix(content_type, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS569, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS569.length));
6346
5823
  const range = _M0FP36kazuph5reviw6server18req__range__header(req);
6347
5824
  if (is_video && range.length > 0) {
6348
5825
  _M0FP36kazuph5reviw6server17pipe__file__range(resolved_static, res, content_type, range);
@@ -6360,8 +5837,8 @@ function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
6360
5837
  function _M0FP36kazuph5reviw6server25serve__static__file__head(ctx, url, res) {
6361
5838
  const qmark = _M0FP36kazuph5reviw6server9index__of(url, 63);
6362
5839
  const url_path = qmark >= 0 ? _M0FP36kazuph5reviw4core18safe__slice__range(url, 0, qmark) : url;
6363
- const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS568, 0, _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS568.length)) ? _M0FP36kazuph5reviw4core11safe__slice(url_path, 1) : url_path;
6364
- if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS567, 0, _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS567.length))) {
5840
+ const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS572, 0, _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS572.length)) ? _M0FP36kazuph5reviw4core11safe__slice(url_path, 1) : url_path;
5841
+ if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS571, 0, _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS571.length))) {
6365
5842
  _M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
6366
5843
  _M0FP36kazuph5reviw6server8res__end(res, "");
6367
5844
  return undefined;
@@ -6370,7 +5847,7 @@ function _M0FP36kazuph5reviw6server25serve__static__file__head(ctx, url, res) {
6370
5847
  const static_path = _M0FP36kazuph5reviw6server10path__join(base_dir, relative_path);
6371
5848
  const resolved_static = _M0FP36kazuph5reviw6server13path__resolve(static_path);
6372
5849
  const resolved_base = _M0FP36kazuph5reviw6server13path__resolve(base_dir);
6373
- if (!_M0MPC16string6String11has__prefix(resolved_static, new _M0TPC16string10StringView(resolved_base, 0, resolved_base.length))) {
5850
+ if (!_M0FP36kazuph5reviw4core15is__path__under(resolved_base, resolved_static)) {
6374
5851
  _M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
6375
5852
  _M0FP36kazuph5reviw6server8res__end(res, "");
6376
5853
  return undefined;
@@ -6423,7 +5900,7 @@ function _M0FP36kazuph5reviw6server15handle__request(ctx, req, res) {
6423
5900
  _M0FP36kazuph5reviw6server8res__end(res, history_json);
6424
5901
  return;
6425
5902
  } else {
6426
- if (http_method === "GET" && _M0MPC16string6String11has__prefix(url, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server15handle__requestN7_2abindS569, 0, _M0FP36kazuph5reviw6server15handle__requestN7_2abindS569.length))) {
5903
+ if (http_method === "GET" && _M0MPC16string6String11has__prefix(url, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server15handle__requestN7_2abindS573, 0, _M0FP36kazuph5reviw6server15handle__requestN7_2abindS573.length))) {
6427
5904
  _M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res);
6428
5905
  return;
6429
5906
  } else {
@@ -6521,13 +5998,13 @@ function _M0FP36kazuph5reviw6server28try__activate__existing__tab(url) {
6521
5998
  }
6522
5999
  const chrome_script = `set found to false\ntell application \"System Events\"\n if exists process \"Google Chrome\" then\n tell application \"Google Chrome\"\n set targetUrl to \"${url}\"\n repeat with w in windows\n set tabIndex to 1\n repeat with t in tabs of w\n if URL of t starts with targetUrl then\n set active tab index of w to tabIndex\n set index of w to 1\n activate\n set found to true\n exit repeat\n end if\n set tabIndex to tabIndex + 1\n end repeat\n if found then exit repeat\n end repeat\n end tell\n end if\nend tell\nfound`;
6523
6000
  const chrome_result = _M0FP36kazuph5reviw6server19spawn__sync__result("osascript", `[\"-e\", ${_M0FP36kazuph5reviw6server19json__encode__value(chrome_script)}]`);
6524
- if (_M0MPC16string6String8contains(chrome_result, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS570, 0, _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS570.length))) {
6001
+ if (_M0MPC16string6String8contains(chrome_result, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS574, 0, _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS574.length))) {
6525
6002
  _M0FP36kazuph5reviw6server12console__log(`Activated existing Chrome tab: ${url}`);
6526
6003
  return true;
6527
6004
  }
6528
6005
  const safari_script = `set found to false\ntell application \"System Events\"\n if exists process \"Safari\" then\n tell application \"Safari\"\n set targetUrl to \"${url}\"\n repeat with w in windows\n repeat with t in tabs of w\n if URL of t starts with targetUrl then\n set current tab of w to t\n set index of w to 1\n activate\n set found to true\n exit repeat\n end if\n end repeat\n if found then exit repeat\n end repeat\n end tell\n end if\nend tell\nfound`;
6529
6006
  const safari_result = _M0FP36kazuph5reviw6server19spawn__sync__result("osascript", `[\"-e\", ${_M0FP36kazuph5reviw6server19json__encode__value(safari_script)}]`);
6530
- if (_M0MPC16string6String8contains(safari_result, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS571, 0, _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS571.length))) {
6007
+ if (_M0MPC16string6String8contains(safari_result, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS575, 0, _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS575.length))) {
6531
6008
  _M0FP36kazuph5reviw6server12console__log(`Activated existing Safari tab: ${url}`);
6532
6009
  return true;
6533
6010
  }
@@ -6605,7 +6082,7 @@ function _M0FP36kazuph5reviw6server19start__http__server(ctx, no_open) {
6605
6082
  _M0FP36kazuph5reviw6server11try__listen(ctx, ctx.port, 0, no_open);
6606
6083
  }
6607
6084
  function _M0FP36kazuph5reviw6server11watch__file(_tmp, _tmp$2) {
6608
- return watchFile$2295(_tmp, _tmp$2);
6085
+ return watchFile$2128(_tmp, _tmp$2);
6609
6086
  }
6610
6087
  function _M0FP36kazuph5reviw6server19start__file__server(file_path, port, no_open) {
6611
6088
  const resolved = _M0FP36kazuph5reviw6server13path__resolve(file_path);
@@ -6703,7 +6180,7 @@ function _M0FP36kazuph5reviw6server20start__stdin__server(content, port, no_open
6703
6180
  _M0FP36kazuph5reviw6server18encoding__override.val = _M0MPC15array5Array2atGsE(args, i);
6704
6181
  }
6705
6182
  } else {
6706
- if (!_M0MPC16string6String11has__prefix(arg, new _M0TPC16string10StringView(_M0FP017____moonbit__mainN7_2abindS590, 0, _M0FP017____moonbit__mainN7_2abindS590.length))) {
6183
+ if (!_M0MPC16string6String11has__prefix(arg, new _M0TPC16string10StringView(_M0FP017____moonbit__mainN7_2abindS594, 0, _M0FP017____moonbit__mainN7_2abindS594.length))) {
6707
6184
  _M0MPC15array5Array4pushGsE(files, arg);
6708
6185
  }
6709
6186
  }