reviw 1.2.0 → 1.2.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.
@@ -4073,7 +4073,7 @@ function _M0FP36kazuph5reviw4core26build__page__start_2einner(buf, filename, fil
4073
4073
  _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string(buf, "<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github.min.css\" id=\"hljs-theme-light\">");
4074
4074
  _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string(buf, "<script src=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js\"></script>");
4075
4075
  _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string(buf, "<style>");
4076
- _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__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: 16px;\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-top: 32px;\n}\n.media-sidebar-viewer-content img {\n max-width: 100%;\n max-height: calc(100vh - 170px);\n object-fit: contain;\n border-radius: 8px;\n}\n.media-sidebar-viewer-content video {\n max-width: 100%;\n max-height: calc(100vh - 170px);\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 right: 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: 8px;\n right: 44px;\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.sidebar-viewer-settings-btn:hover {\n background: var(--hover-bg);\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\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: 16px;\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: 8px;\n right: 8px;\n z-index: 2;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n color: var(--text);\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}\n.media-sidebar-viewer-content img { max-width: 100%; max-height: calc(100vh - 140px); object-fit: contain; border-radius: 8px; }\n.media-sidebar-viewer-content video { max-width: 100%; max-height: calc(100vh - 140px); border-radius: 8px; 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-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}");
4076
+ _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__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: 8px;\n right: 44px;\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.sidebar-viewer-settings-btn:hover {\n background: var(--hover-bg);\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\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}");
4077
4077
  _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string(buf, "</style></head><body>");
4078
4078
  _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string(buf, "<header><div class=\"meta\">");
4079
4079
  _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string(buf, "<h1>");
package/dist/ui/ui.js CHANGED
@@ -149,10 +149,17 @@ const _M0FP36kazuph5reviw2ui18replace__all__text = (text, search, replacement) =
149
149
  const _M0FP36kazuph5reviw2ui15clear__children = (el) => { if (el) el.innerHTML = ''; };
150
150
  const _M0FP36kazuph5reviw2ui10event__key = (e) => e.key || "";
151
151
  const _M0FP36kazuph5reviw2ui21event__property__name = (e) => e.propertyName || "";
152
+ const _M0FP36kazuph5reviw2ui19get__client__height = (el) => el?.clientHeight || 0;
152
153
  const _M0FP36kazuph5reviw2ui18get__client__width = (el) => el?.clientWidth || 0;
153
154
  const _M0FP36kazuph5reviw2ui20get__natural__height = (el) => el?.naturalHeight || 0;
154
155
  const _M0FP36kazuph5reviw2ui19get__natural__width = (el) => el?.naturalWidth || 0;
156
+ const _M0FP36kazuph5reviw2ui2on = (el, event, handler) => el?.addEventListener(event, handler);
157
+ const _M0FP36kazuph5reviw2ui5query = (s) => document.querySelector(s);
155
158
  const _M0FP36kazuph5reviw2ui14set__draggable = (el, v) => { if (el) el.draggable = v; };
159
+ const _M0FP36kazuph5reviw2ui16set__inner__html = (el, html) => { if (el) el.innerHTML = html; };
160
+ const _M0FP36kazuph5reviw2ui25request__animation__frame = (cb) => requestAnimationFrame(cb);
161
+ const _M0FP36kazuph5reviw2ui15set__visibility = (el, v) => { if (el) el.style.visibility = v ? 'visible' : 'hidden'; };
162
+ const _M0FP36kazuph5reviw2ui13show__overlay = (el) => { if (el) el.classList.add('visible'); };
156
163
  const _M0FP36kazuph5reviw2ui23get__svg__natural__size = (svg) => {
157
164
  if (!svg) return [800, 600];
158
165
  var vb = svg.getAttribute('viewBox');
@@ -163,7 +170,6 @@ const _M0FP36kazuph5reviw2ui23get__svg__natural__size = (svg) => {
163
170
  return [parseFloat(svg.getAttribute('width')) || svg.getBoundingClientRect().width || 800,
164
171
  parseFloat(svg.getAttribute('height')) || svg.getBoundingClientRect().height || 600];
165
172
  };
166
- const _M0FP36kazuph5reviw2ui5query = (s) => document.querySelector(s);
167
173
  const _M0FP36kazuph5reviw2ui17video__is__paused = (el) => el?.paused !== false;
168
174
  const _M0FP36kazuph5reviw2ui12video__pause = (el) => { if (el) el.pause(); };
169
175
  const _M0FP36kazuph5reviw2ui11video__play = (el) => { if (el) el.play(); };
@@ -202,10 +208,8 @@ const _M0FP36kazuph5reviw2ui29setup__intersection__observer = (target, callback,
202
208
  const _M0FP36kazuph5reviw2ui18scroll__into__view = (el) => { if (el) el.scrollIntoView({ behavior: 'smooth', block: 'center' }); };
203
209
  const _M0FP36kazuph5reviw2ui10query__all = (s) => [...document.querySelectorAll(s)];
204
210
  const _M0FP36kazuph5reviw2ui9get__attr = (el, name) => el?.getAttribute(name) || "";
205
- const _M0FP36kazuph5reviw2ui16set__inner__html = (el, html) => { if (el) el.innerHTML = html; };
206
211
  const _M0FP36kazuph5reviw2ui10get__value = (el) => el?.value || "";
207
212
  const _M0FP36kazuph5reviw2ui10set__value = (el, val) => { if (el) el.value = val; };
208
- const _M0FP36kazuph5reviw2ui2on = (el, event, handler) => el?.addEventListener(event, handler);
209
213
  const _M0FP36kazuph5reviw2ui7on__doc = (event, handler) => document.addEventListener(event, handler);
210
214
  const _M0FP36kazuph5reviw2ui21window__inner__height = () => window.innerHeight;
211
215
  const _M0FP36kazuph5reviw2ui10get__theme = () => document.documentElement.getAttribute("data-theme") || "dark";
@@ -287,8 +291,6 @@ const _M0FP36kazuph5reviw2ui16location__reload = () => location.reload();
287
291
  const _M0FP36kazuph5reviw2ui16get__scroll__top = (el) => el?.scrollTop || 0;
288
292
  const _M0FP36kazuph5reviw2ui16set__scroll__top = (el, val) => { if (el) el.scrollTop = val; };
289
293
  const _M0FP36kazuph5reviw2ui19get__scroll__height = (el) => el?.scrollHeight || 0;
290
- const _M0FP36kazuph5reviw2ui19get__client__height = (el) => el?.clientHeight || 0;
291
- const _M0FP36kazuph5reviw2ui25request__animation__frame = (cb) => requestAnimationFrame(cb);
292
294
  const _M0FP36kazuph5reviw2ui24cancel__animation__frame = (id) => cancelAnimationFrame(id);
293
295
  const _M0FP36kazuph5reviw2ui9date__now = () => Date.now();
294
296
  const _M0FP36kazuph5reviw2ui10on__window = (event, handler) => window.addEventListener(event, handler);
@@ -342,9 +344,7 @@ const _M0FP36kazuph5reviw2ui22create__video__element = (src) => {
342
344
  return v;
343
345
  };
344
346
  const _M0FP36kazuph5reviw2ui8elem__eq = (a, b) => a === b;
345
- const _M0FP36kazuph5reviw2ui15set__visibility = (el, v) => { if (el) el.style.visibility = v ? 'visible' : 'hidden'; };
346
347
  const _M0FP36kazuph5reviw2ui19has__class__visible = (el) => el?.classList.contains('visible') || false;
347
- const _M0FP36kazuph5reviw2ui13show__overlay = (el) => { if (el) el.classList.add('visible'); };
348
348
  const _M0FP36kazuph5reviw2ui13hide__overlay = (el) => { if (el) el.classList.remove('visible'); };
349
349
  const _M0FP36kazuph5reviw2ui20get__computed__style = (el, prop) => { if (!el) return ''; return el.style[prop] || getComputedStyle(el)[prop] || ''; };
350
350
  const _M0FP36kazuph5reviw2ui23collect__reviw__answers = () => {
@@ -476,32 +476,32 @@ const _M0FP36kazuph5reviw2ui33log__mermaid__errors__to__console = () => {
476
476
  }
477
477
  };
478
478
  const _M0FP095_40moonbitlang_2fcore_2fbuiltin_2eStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger = { method_0: _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string, method_1: _M0IP016_24default__implP311moonbitlang4core7builtin6Logger16write__substringGRP311moonbitlang4core7builtin13StringBuilderE, method_2: _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger11write__view, method_3: _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger11write__char };
479
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1765 = ".mp4";
480
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1766 = ".mov";
481
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1767 = ".webm";
482
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1768 = ".avi";
483
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1769 = ".mkv";
484
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1770 = ".m4v";
485
- const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1771 = ".ogv";
486
- const _M0FP36kazuph5reviw2ui41collect__toggle__content_2e_2abind_7c1805 = "H";
479
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1798 = ".mp4";
480
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1799 = ".mov";
481
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1800 = ".webm";
482
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1801 = ".avi";
483
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1802 = ".mkv";
484
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1803 = ".m4v";
485
+ const _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1804 = ".ogv";
486
+ const _M0FP36kazuph5reviw2ui41collect__toggle__content_2e_2abind_7c1843 = "H";
487
487
  const _M0FP36kazuph5reviw2ui14submit__images = [];
488
- const _M0FP36kazuph5reviw2ui43get__heading__source__line_2e_2abind_7c1893 = "#";
489
- const _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1921 = "visible";
490
- const _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1920 = "visible";
491
- const _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1923 = "```";
492
- const _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1925 = "```";
493
- const _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1939 = "|";
494
- const _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1938 = "|";
495
- const _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1937 = "|";
496
- const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1946 = "|";
497
- const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1947 = "|";
498
- const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1950 = "|";
499
- const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1951 = "|";
500
- const _M0FP36kazuph5reviw2ui40setup__preview__mouseup_2e_2abind_7c1959 = "\n";
501
- const _M0FP36kazuph5reviw2ui40build__heading__anchors_2e_2abind_7c1972 = "#";
488
+ const _M0FP36kazuph5reviw2ui43get__heading__source__line_2e_2abind_7c1931 = "#";
489
+ const _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1959 = "visible";
490
+ const _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1958 = "visible";
491
+ const _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1961 = "```";
492
+ const _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1963 = "```";
493
+ const _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1977 = "|";
494
+ const _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1976 = "|";
495
+ const _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1975 = "|";
496
+ const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1984 = "|";
497
+ const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1985 = "|";
498
+ const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1988 = "|";
499
+ const _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1989 = "|";
500
+ const _M0FP36kazuph5reviw2ui40setup__preview__mouseup_2e_2abind_7c1997 = "\n";
501
+ const _M0FP36kazuph5reviw2ui40build__heading__anchors_2e_2abind_7c2010 = "#";
502
502
  const _M0FP36kazuph5reviw2ui23heading__anchors__cache = [];
503
- const _M0FP36kazuph5reviw2ui39toggle__history__panel_2e_2abind_7c2006 = "open";
504
- const _M0FP36kazuph5reviw2ui39default__toggle__config_2erecord_2f1119 = { start_level: 1, end_level: 6, initially_open: true, animate: true };
503
+ const _M0FP36kazuph5reviw2ui39toggle__history__panel_2e_2abind_7c2044 = "open";
504
+ const _M0FP36kazuph5reviw2ui39default__toggle__config_2erecord_2f1165 = { start_level: 1, end_level: 6, initially_open: true, animate: true };
505
505
  const _M0FP36kazuph5reviw2ui14fs__image__zpv = _M0MP311moonbitlang4core3ref3Ref3newGORP36kazuph5reviw2ui8ZPVStateE(undefined);
506
506
  const _M0FP36kazuph5reviw2ui21current__image__index = _M0MP311moonbitlang4core3ref3Ref3newGiE(-1);
507
507
  const _M0FP311moonbitlang4core7builtin33brute__force__find_2econstr_2f264 = 0;
@@ -520,16 +520,16 @@ const _M0FP36kazuph5reviw2ui19fs__video__timeline = _M0MP311moonbitlang4core3ref
520
520
  const _M0FP36kazuph5reviw2ui25current__scene__threshold = _M0MP311moonbitlang4core3ref3Ref3newGdE(0.01);
521
521
  const _M0FP36kazuph5reviw2ui24current__stab__threshold = _M0MP311moonbitlang4core3ref3Ref3newGdE(0.1);
522
522
  const _M0FP36kazuph5reviw2ui15active__toggles = _M0MP311moonbitlang4core3ref3Ref3newGRP311moonbitlang4core7builtin5ArrayGRP36kazuph5reviw2ui13HeadingToggleEE([]);
523
- const _M0FP36kazuph5reviw2ui35render__video__viewer_2etuple_2f998 = { _0: "少なめ", _1: 0.3 };
524
- const _M0FP36kazuph5reviw2ui35render__video__viewer_2etuple_2f999 = { _0: "やや少", _1: 0.1 };
525
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1000 = { _0: "標準", _1: 0.01 };
526
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1001 = { _0: "やや多", _1: 0.005 };
527
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1002 = { _0: "多め", _1: 0.001 };
528
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1003 = { _0: "弱め", _1: 0.5 };
529
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1004 = { _0: "やや弱", _1: 0.2 };
530
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1005 = { _0: "標準", _1: 0.1 };
531
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1006 = { _0: "やや強", _1: 0.05 };
532
- const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1007 = { _0: "強め", _1: 0.02 };
523
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1044 = { _0: "少なめ", _1: 0.3 };
524
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1045 = { _0: "やや少", _1: 0.1 };
525
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1046 = { _0: "標準", _1: 0.01 };
526
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1047 = { _0: "やや多", _1: 0.005 };
527
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1048 = { _0: "多め", _1: 0.001 };
528
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1049 = { _0: "弱め", _1: 0.5 };
529
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1050 = { _0: "やや弱", _1: 0.2 };
530
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1051 = { _0: "標準", _1: 0.1 };
531
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1052 = { _0: "やや強", _1: 0.05 };
532
+ const _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1053 = { _0: "強め", _1: 0.02 };
533
533
  const _M0FP36kazuph5reviw2ui15global__sidebar = _M0MP311moonbitlang4core3ref3Ref3newGORP36kazuph5reviw2ui17MediaSidebarStateE(undefined);
534
534
  const _M0FP36kazuph5reviw2ui23heading__anchors__built = _M0MP311moonbitlang4core3ref3Ref3newGbE(false);
535
535
  const _M0FP36kazuph5reviw2ui12is__dragging = _M0MP311moonbitlang4core3ref3Ref3newGbE(false);
@@ -540,9 +540,9 @@ const _M0FP36kazuph5reviw2ui18page__instance__id = _M0MP311moonbitlang4core3ref3
540
540
  const _M0FP36kazuph5reviw2ui15review__tab__id = _M0MP311moonbitlang4core3ref3Ref3newGsE("");
541
541
  const _M0FP36kazuph5reviw2ui18submit__in__flight = _M0MP311moonbitlang4core3ref3Ref3newGbE(false);
542
542
  const _M0FP36kazuph5reviw2ui19close__report__sent = _M0MP311moonbitlang4core3ref3Ref3newGbE(false);
543
- const _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1789 = { _0: -1, _1: -1 };
544
- const _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1790 = { _0: -1, _1: -1 };
545
- const _M0FP36kazuph5reviw2ui39find__code__block__range_2etuple_2f1717 = { _0: -1, _1: -1 };
543
+ const _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1818 = { _0: -1, _1: -1 };
544
+ const _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1819 = { _0: -1, _1: -1 };
545
+ const _M0FP36kazuph5reviw2ui39find__code__block__range_2etuple_2f1746 = { _0: -1, _1: -1 };
546
546
  function _M0FP311moonbitlang4core5abort5abortGsE(msg) {
547
547
  return $panic();
548
548
  }
@@ -3070,7 +3070,7 @@ function _M0FP36kazuph5reviw2ui21collect__media__items(preview) {
3070
3070
  } else {
3071
3071
  if (_p$4 === "VIDEO" && _p$5) {
3072
3072
  const _p$6 = _M0FP36kazuph5reviw2ui14get__attribute(_p$3, "src");
3073
- const _p$7 = _M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1765, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1765.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1766, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1766.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1767, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1767.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1768, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1768.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1769, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1769.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1770, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1770.length }) || _M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1771, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1771.length }))))));
3073
+ const _p$7 = _M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1798, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1798.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1799, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1799.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1800, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1800.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1801, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1801.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1802, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1802.length }) || (_M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1803, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1803.length }) || _M0MP311moonbitlang4core6string6String11has__suffix(_M0MP311moonbitlang4core6string6String9to__lower(_p$6), { str: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1804, start: 0, end: _M0FP36kazuph5reviw2ui38collect__media__items_2e_2abind_7c1804.length }))))));
3074
3074
  if (_p$7) {
3075
3075
  video_count.val = video_count.val + 1 | 0;
3076
3076
  const _p$8 = _M0FP36kazuph5reviw2ui14get__attribute(_p$3, "title");
@@ -3172,21 +3172,14 @@ function _M0FP36kazuph5reviw2ui15is__video__type(type_) {
3172
3172
  return false;
3173
3173
  }
3174
3174
  }
3175
- function _M0FP36kazuph5reviw2ui40render__image__viewer_2einit__zpv_7c1463(_env) {
3176
- const img = _env._5;
3177
- const viewport = _env._4;
3178
- const zpv_ref = _env._3;
3179
- const wrapper = _env._2;
3180
- const zoom_info = _env._1;
3181
- const state = _env._0;
3182
- const nw = _M0FP36kazuph5reviw2ui19get__natural__width(img);
3183
- const nh = _M0FP36kazuph5reviw2ui20get__natural__height(img);
3184
- if (nw <= 0 || nh <= 0) {
3175
+ function _M0FP36kazuph5reviw2ui32show__image__fullscreen__moonbit(images, index, overlay, fs_content, fs_wrapper, fs_zoom_info, fs_counter) {
3176
+ if (index < 0 || index >= images.length) {
3185
3177
  return undefined;
3186
3178
  }
3187
- const _p = zpv_ref.val;
3179
+ _M0FP36kazuph5reviw2ui21current__image__index.val = index;
3180
+ const _p = _M0FP36kazuph5reviw2ui14fs__image__zpv.val;
3188
3181
  if (!(_p === undefined)) {
3189
- const _p$2 = zpv_ref.val;
3182
+ const _p$2 = _M0FP36kazuph5reviw2ui14fs__image__zpv.val;
3190
3183
  let _tmp;
3191
3184
  if (_p$2 === undefined) {
3192
3185
  _tmp = $panic();
@@ -3195,20 +3188,94 @@ function _M0FP36kazuph5reviw2ui40render__image__viewer_2einit__zpv_7c1463(_env)
3195
3188
  _tmp = _p$3;
3196
3189
  }
3197
3190
  _M0FP36kazuph5reviw2ui26destroy__zoom__pan__viewer(_tmp);
3191
+ _M0FP36kazuph5reviw2ui14fs__image__zpv.val = undefined;
3192
+ }
3193
+ _M0FP36kazuph5reviw2ui15clear__children(fs_wrapper);
3194
+ const img = _M0MP311moonbitlang4core5array5Array2atGRP36kazuph5reviw2ui7ElementE(images, index);
3195
+ const cloned = _M0FP36kazuph5reviw2ui17clone__node__deep(img);
3196
+ _M0FP36kazuph5reviw2ui10set__style(cloned, "maxWidth", "none");
3197
+ _M0FP36kazuph5reviw2ui10set__style(cloned, "maxHeight", "none");
3198
+ _M0FP36kazuph5reviw2ui10set__style(cloned, "cursor", "");
3199
+ _M0FP36kazuph5reviw2ui10set__style(cloned, "display", "block");
3200
+ _M0FP36kazuph5reviw2ui14set__draggable(cloned, false);
3201
+ const nw = _M0FP36kazuph5reviw2ui19get__natural__width(img);
3202
+ const nh = _M0FP36kazuph5reviw2ui20get__natural__height(img);
3203
+ const nat_w = nw > 0 ? nw : 800;
3204
+ const nat_h = nh > 0 ? nh : 600;
3205
+ _M0FP36kazuph5reviw2ui10set__style(cloned, "width", `${_M0MP311moonbitlang4core6double6Double10to__string(nat_w)}px`);
3206
+ _M0FP36kazuph5reviw2ui10set__style(cloned, "height", `${_M0MP311moonbitlang4core6double6Double10to__string(nat_h)}px`);
3207
+ _M0FP36kazuph5reviw2ui13append__child(fs_wrapper, cloned);
3208
+ if (!_M0FP36kazuph5reviw2ui8is__null(fs_counter)) {
3209
+ _M0FP36kazuph5reviw2ui18set__text__content(fs_counter, `${_M0MP311moonbitlang4core3int3Int18to__string_2einner(index + 1 | 0, 10)} / ${_M0MP311moonbitlang4core3int3Int18to__string_2einner(images.length, 10)}`);
3210
+ }
3211
+ _M0FP36kazuph5reviw2ui15set__visibility(fs_wrapper, false);
3212
+ const img_minimap_content = _M0FP36kazuph5reviw2ui5query("#image-fs-minimap-content");
3213
+ const img_minimap_viewport = _M0FP36kazuph5reviw2ui5query("#image-fs-minimap-viewport");
3214
+ if (!_M0FP36kazuph5reviw2ui8is__null(img_minimap_content)) {
3215
+ _M0FP36kazuph5reviw2ui15clear__children(img_minimap_content);
3216
+ const minimap_img = _M0FP36kazuph5reviw2ui17clone__node__deep(cloned);
3217
+ _M0FP36kazuph5reviw2ui10set__style(minimap_img, "width", "100%");
3218
+ _M0FP36kazuph5reviw2ui10set__style(minimap_img, "height", "100%");
3219
+ _M0FP36kazuph5reviw2ui10set__style(minimap_img, "objectFit", "contain");
3220
+ _M0FP36kazuph5reviw2ui13append__child(img_minimap_content, minimap_img);
3198
3221
  }
3199
- _M0FP36kazuph5reviw2ui10set__style(img, "width", `${_M0MP311moonbitlang4core6double6Double10to__string(nw)}px`);
3200
- _M0FP36kazuph5reviw2ui10set__style(img, "height", `${_M0MP311moonbitlang4core6double6Double10to__string(nh)}px`);
3201
- const zpv = _M0FP36kazuph5reviw2ui34create__zoom__pan__viewer__moonbit(viewport, wrapper, nw, nh, zoom_info, false, _M0FP36kazuph5reviw2ui13null__element(), 184, 134, 8, 0.1, 20, true);
3202
- zpv_ref.val = zpv;
3203
- state.current_zpv = zpv_ref.val;
3204
- _M0FP36kazuph5reviw2ui39request__fit__to__viewport__when__ready(zpv, () => {
3205
- _M0FP36kazuph5reviw2ui10set__style(wrapper, "visibility", "visible");
3222
+ const zpv = _M0FP36kazuph5reviw2ui34create__zoom__pan__viewer__moonbit(fs_content, fs_wrapper, nat_w, nat_h, fs_zoom_info, true, img_minimap_viewport, 184, 134, 8, 0.1, 20, true);
3223
+ _M0FP36kazuph5reviw2ui14fs__image__zpv.val = zpv;
3224
+ _M0FP36kazuph5reviw2ui13show__overlay(overlay);
3225
+ _M0FP36kazuph5reviw2ui25request__animation__frame(() => {
3226
+ _M0FP36kazuph5reviw2ui17fit__to__viewport(zpv);
3227
+ _M0FP36kazuph5reviw2ui15set__visibility(fs_wrapper, true);
3206
3228
  });
3207
3229
  }
3230
+ function _M0FP36kazuph5reviw2ui45render__image__viewer_2eschedule__init_7c1490(_env) {
3231
+ const img = _env._6;
3232
+ const viewport = _env._5;
3233
+ const zpv_ref = _env._4;
3234
+ const content = _env._3;
3235
+ const wrapper = _env._2;
3236
+ const zoom_info = _env._1;
3237
+ const state = _env._0;
3238
+ _M0FP36kazuph5reviw2ui12set__timeout(() => {
3239
+ const nw = _M0FP36kazuph5reviw2ui19get__natural__width(img);
3240
+ const nh = _M0FP36kazuph5reviw2ui20get__natural__height(img);
3241
+ if (nw <= 0 || nh <= 0) {
3242
+ return;
3243
+ }
3244
+ const _p = zpv_ref.val;
3245
+ if (!(_p === undefined)) {
3246
+ const _p$2 = zpv_ref.val;
3247
+ let _tmp;
3248
+ if (_p$2 === undefined) {
3249
+ _tmp = $panic();
3250
+ } else {
3251
+ const _p$3 = _p$2;
3252
+ _tmp = _p$3;
3253
+ }
3254
+ _M0FP36kazuph5reviw2ui26destroy__zoom__pan__viewer(_tmp);
3255
+ }
3256
+ _M0FP36kazuph5reviw2ui10set__style(img, "width", `${_M0MP311moonbitlang4core6double6Double10to__string(nw)}px`);
3257
+ _M0FP36kazuph5reviw2ui10set__style(img, "height", `${_M0MP311moonbitlang4core6double6Double10to__string(nh)}px`);
3258
+ const vp_w = _M0FP36kazuph5reviw2ui18get__client__width(viewport);
3259
+ if (vp_w > 0) {
3260
+ const scale = vp_w / nw;
3261
+ const fitted_h = nh * scale;
3262
+ const max_h = _M0FP36kazuph5reviw2ui19get__client__height(content);
3263
+ const target_h = fitted_h < max_h ? fitted_h : max_h;
3264
+ _M0FP36kazuph5reviw2ui10set__style(viewport, "height", `${_M0MP311moonbitlang4core6double6Double10to__string(target_h)}px`);
3265
+ _M0FP36kazuph5reviw2ui10set__style(viewport, "flex", "none");
3266
+ }
3267
+ const zpv = _M0FP36kazuph5reviw2ui34create__zoom__pan__viewer__moonbit(viewport, wrapper, nw, nh, zoom_info, false, _M0FP36kazuph5reviw2ui13null__element(), 184, 134, 8, 0.1, 20, true);
3268
+ zpv_ref.val = zpv;
3269
+ state.current_zpv = zpv_ref.val;
3270
+ _M0FP36kazuph5reviw2ui39request__fit__to__viewport__when__ready(zpv, () => {
3271
+ _M0FP36kazuph5reviw2ui10set__style(wrapper, "visibility", "visible");
3272
+ });
3273
+ }, 400);
3274
+ }
3208
3275
  function _M0FP36kazuph5reviw2ui21render__image__viewer(state, content, item) {
3209
3276
  const viewport = _M0FP36kazuph5reviw2ui15create__element("div");
3210
3277
  _M0FP36kazuph5reviw2ui10set__style(viewport, "width", "100%");
3211
- _M0FP36kazuph5reviw2ui10set__style(viewport, "height", "calc(100vh - 140px)");
3278
+ _M0FP36kazuph5reviw2ui10set__style(viewport, "flex", "1");
3212
3279
  _M0FP36kazuph5reviw2ui10set__style(viewport, "overflow", "hidden");
3213
3280
  _M0FP36kazuph5reviw2ui10set__style(viewport, "position", "relative");
3214
3281
  _M0FP36kazuph5reviw2ui10set__style(viewport, "cursor", "grab");
@@ -3227,26 +3294,95 @@ function _M0FP36kazuph5reviw2ui21render__image__viewer(state, content, item) {
3227
3294
  _M0FP36kazuph5reviw2ui16set__class__name(zoom_info, "sidebar-zoom-indicator");
3228
3295
  _M0FP36kazuph5reviw2ui18set__text__content(zoom_info, "100%");
3229
3296
  _M0FP36kazuph5reviw2ui13append__child(viewport, zoom_info);
3297
+ const fs_btn = _M0FP36kazuph5reviw2ui15create__element("button");
3298
+ _M0FP36kazuph5reviw2ui16set__class__name(fs_btn, "sidebar-maximize-btn");
3299
+ _M0FP36kazuph5reviw2ui16set__inner__html(fs_btn, "&#9974;");
3300
+ _M0FP36kazuph5reviw2ui14set__attribute(fs_btn, "title", "Fullscreen");
3301
+ _M0FP36kazuph5reviw2ui2on(fs_btn, "click", (e) => {
3302
+ _M0FP36kazuph5reviw2ui16prevent__default(e);
3303
+ _M0FP36kazuph5reviw2ui17stop__propagation(e);
3304
+ const preview = _M0FP36kazuph5reviw2ui5query("#md-preview");
3305
+ if (_M0FP36kazuph5reviw2ui8is__null(preview)) {
3306
+ return undefined;
3307
+ }
3308
+ const all_images = _M0FP36kazuph5reviw2ui14query__all__in(preview, "img");
3309
+ const images = [];
3310
+ const _len = all_images.length;
3311
+ let _tmp = 0;
3312
+ while (true) {
3313
+ const _i = _tmp;
3314
+ if (_i < _len) {
3315
+ const im = all_images[_i];
3316
+ if (_M0FP36kazuph5reviw2ui8is__null(_M0FP36kazuph5reviw2ui7closest(im, ".mermaid-container"))) {
3317
+ _M0MP311moonbitlang4core5array5Array4pushGRP36kazuph5reviw2ui7ElementE(images, im);
3318
+ }
3319
+ _tmp = _i + 1 | 0;
3320
+ continue;
3321
+ } else {
3322
+ break;
3323
+ }
3324
+ }
3325
+ const target_src = item.src;
3326
+ let idx = -1;
3327
+ const _len$2 = images.length;
3328
+ let _tmp$2 = 0;
3329
+ while (true) {
3330
+ const _i = _tmp$2;
3331
+ if (_i < _len$2) {
3332
+ const im = images[_i];
3333
+ let _tmp$3;
3334
+ if (_M0FP36kazuph5reviw2ui8get__src(im) === target_src) {
3335
+ _tmp$3 = true;
3336
+ } else {
3337
+ let _tmp$4;
3338
+ if (_M0MP311moonbitlang4core6string6String11has__suffix(_M0FP36kazuph5reviw2ui8get__src(im), { str: target_src, start: 0, end: target_src.length })) {
3339
+ _tmp$4 = true;
3340
+ } else {
3341
+ const _bind$2 = _M0FP36kazuph5reviw2ui8get__src(im);
3342
+ _tmp$4 = _M0MP311moonbitlang4core6string6String11has__suffix(target_src, { str: _bind$2, start: 0, end: _bind$2.length });
3343
+ }
3344
+ _tmp$3 = _tmp$4;
3345
+ }
3346
+ if (_tmp$3) {
3347
+ idx = _i;
3348
+ break;
3349
+ }
3350
+ _tmp$2 = _i + 1 | 0;
3351
+ continue;
3352
+ } else {
3353
+ break;
3354
+ }
3355
+ }
3356
+ if (idx < 0 && images.length > 0) {
3357
+ idx = 0;
3358
+ }
3359
+ if (idx >= 0) {
3360
+ const overlay = _M0FP36kazuph5reviw2ui5query("#image-fullscreen");
3361
+ const fs_content = _M0FP36kazuph5reviw2ui5query("#image-fs-content");
3362
+ const fs_wrapper = _M0FP36kazuph5reviw2ui5query("#image-fs-wrapper");
3363
+ const fs_zoom_info = _M0FP36kazuph5reviw2ui5query("#img-fs-zoom-info");
3364
+ const fs_counter = _M0FP36kazuph5reviw2ui5query("#img-fs-counter");
3365
+ if (!_M0FP36kazuph5reviw2ui8is__null(overlay) && (!_M0FP36kazuph5reviw2ui8is__null(fs_content) && !_M0FP36kazuph5reviw2ui8is__null(fs_wrapper))) {
3366
+ _M0FP36kazuph5reviw2ui32show__image__fullscreen__moonbit(images, idx, overlay, fs_content, fs_wrapper, fs_zoom_info, fs_counter);
3367
+ return;
3368
+ } else {
3369
+ return;
3370
+ }
3371
+ } else {
3372
+ return;
3373
+ }
3374
+ });
3375
+ _M0FP36kazuph5reviw2ui13append__child(viewport, fs_btn);
3230
3376
  _M0FP36kazuph5reviw2ui13append__child(content, viewport);
3231
3377
  _M0FP36kazuph5reviw2ui10set__style(wrapper, "visibility", "hidden");
3232
3378
  const zpv_ref = { val: undefined };
3233
- const _env = { _0: state, _1: zoom_info, _2: wrapper, _3: zpv_ref, _4: viewport, _5: img };
3379
+ const _env = { _0: state, _1: zoom_info, _2: wrapper, _3: content, _4: zpv_ref, _5: viewport, _6: img };
3234
3380
  const h = _M0FP36kazuph5reviw2ui24on__with__handle_2einner(img, "load", (e) => {
3235
- if (_M0FP36kazuph5reviw2ui18get__client__width(viewport) > 100) {
3236
- _M0FP36kazuph5reviw2ui40render__image__viewer_2einit__zpv_7c1463(_env);
3237
- return;
3238
- } else {
3239
- _M0FP36kazuph5reviw2ui12set__timeout(() => {
3240
- _M0FP36kazuph5reviw2ui40render__image__viewer_2einit__zpv_7c1463(_env);
3241
- }, 500);
3242
- return;
3243
- }
3381
+ _M0FP36kazuph5reviw2ui45render__image__viewer_2eschedule__init_7c1490(_env);
3244
3382
  }, false, true);
3245
3383
  _M0MP311moonbitlang4core5array5Array4pushGRP36kazuph5reviw2ui14ListenerHandleE(state.handles, h);
3246
3384
  if (_M0FP36kazuph5reviw2ui19get__natural__width(img) > 0) {
3247
- _M0FP36kazuph5reviw2ui12set__timeout(() => {
3248
- _M0FP36kazuph5reviw2ui40render__image__viewer_2einit__zpv_7c1463(_env);
3249
- }, 500);
3385
+ _M0FP36kazuph5reviw2ui45render__image__viewer_2eschedule__init_7c1490(_env);
3250
3386
  }
3251
3387
  state.current_cleanup = () => {
3252
3388
  const _p = zpv_ref.val;
@@ -3464,8 +3600,8 @@ function _M0FP36kazuph5reviw2ui21render__video__viewer(state, content, item) {
3464
3600
  const scene_title = _M0FP36kazuph5reviw2ui15create__element("h4");
3465
3601
  _M0FP36kazuph5reviw2ui18set__text__content(scene_title, "Scene Sensitivity");
3466
3602
  _M0FP36kazuph5reviw2ui13append__child(settings_panel, scene_title);
3467
- const scene_levels = [_M0FP36kazuph5reviw2ui35render__video__viewer_2etuple_2f998, _M0FP36kazuph5reviw2ui35render__video__viewer_2etuple_2f999, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1000, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1001, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1002];
3468
- const stab_levels = [_M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1003, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1004, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1005, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1006, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1007];
3603
+ const scene_levels = [_M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1044, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1045, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1046, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1047, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1048];
3604
+ const stab_levels = [_M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1049, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1050, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1051, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1052, _M0FP36kazuph5reviw2ui36render__video__viewer_2etuple_2f1053];
3469
3605
  const cur_scene = { val: 0.01 };
3470
3606
  const cur_stab = { val: 0.1 };
3471
3607
  const on_scene_change = (new_val) => {
@@ -3973,7 +4109,7 @@ function _M0FP36kazuph5reviw2ui24collect__toggle__content(heading, level) {
3973
4109
  while (true) {
3974
4110
  if (!_M0FP36kazuph5reviw2ui8is__null(current)) {
3975
4111
  const tag = _M0FP36kazuph5reviw2ui14get__tag__name(current);
3976
- if (_M0MP311moonbitlang4core6string6String11has__prefix(tag, { str: _M0FP36kazuph5reviw2ui41collect__toggle__content_2e_2abind_7c1805, start: 0, end: _M0FP36kazuph5reviw2ui41collect__toggle__content_2e_2abind_7c1805.length }) && tag.length === 2) {
4112
+ if (_M0MP311moonbitlang4core6string6String11has__prefix(tag, { str: _M0FP36kazuph5reviw2ui41collect__toggle__content_2e_2abind_7c1843, start: 0, end: _M0FP36kazuph5reviw2ui41collect__toggle__content_2e_2abind_7c1843.length }) && tag.length === 2) {
3977
4113
  const h_level = _M0FP36kazuph5reviw4core16parse__int__safe(_M0MP311moonbitlang4core6string6String17substring_2einner(tag, 1, undefined));
3978
4114
  if (h_level <= level) {
3979
4115
  break;
@@ -4159,7 +4295,7 @@ function _M0FP36kazuph5reviw2ui24setup__heading__observer() {
4159
4295
  function _M0FP36kazuph5reviw2ui22init__heading__toggles(config) {
4160
4296
  let cfg;
4161
4297
  if (config === undefined) {
4162
- cfg = _M0FP36kazuph5reviw2ui39default__toggle__config_2erecord_2f1119;
4298
+ cfg = _M0FP36kazuph5reviw2ui39default__toggle__config_2erecord_2f1165;
4163
4299
  } else {
4164
4300
  const _Some = config;
4165
4301
  cfg = _Some;
@@ -5411,7 +5547,7 @@ function _M0FP36kazuph5reviw2ui26get__heading__source__line(heading_el) {
5411
5547
  const row = data[_i];
5412
5548
  if (row.length > 0) {
5413
5549
  const src_line = _M0MP311moonbitlang4core5array5Array2atGsE(row, 0);
5414
- if (_M0MP311moonbitlang4core6string6String11has__prefix(src_line, { str: _M0FP36kazuph5reviw2ui43get__heading__source__line_2e_2abind_7c1893, start: 0, end: _M0FP36kazuph5reviw2ui43get__heading__source__line_2e_2abind_7c1893.length })) {
5550
+ if (_M0MP311moonbitlang4core6string6String11has__prefix(src_line, { str: _M0FP36kazuph5reviw2ui43get__heading__source__line_2e_2abind_7c1931, start: 0, end: _M0FP36kazuph5reviw2ui43get__heading__source__line_2e_2abind_7c1931.length })) {
5415
5551
  const stripped_src = _M0FP36kazuph5reviw2ui15strip__markdown(src_line);
5416
5552
  if (stripped_src === cleaned) {
5417
5553
  return _i;
@@ -5566,61 +5702,6 @@ function _M0FP36kazuph5reviw2ui33close__image__fullscreen__moonbit(overlay) {
5566
5702
  return;
5567
5703
  }
5568
5704
  }
5569
- function _M0FP36kazuph5reviw2ui32show__image__fullscreen__moonbit(images, index, overlay, fs_content, fs_wrapper, fs_zoom_info, fs_counter) {
5570
- if (index < 0 || index >= images.length) {
5571
- return undefined;
5572
- }
5573
- _M0FP36kazuph5reviw2ui21current__image__index.val = index;
5574
- const _p = _M0FP36kazuph5reviw2ui14fs__image__zpv.val;
5575
- if (!(_p === undefined)) {
5576
- const _p$2 = _M0FP36kazuph5reviw2ui14fs__image__zpv.val;
5577
- let _tmp;
5578
- if (_p$2 === undefined) {
5579
- _tmp = $panic();
5580
- } else {
5581
- const _p$3 = _p$2;
5582
- _tmp = _p$3;
5583
- }
5584
- _M0FP36kazuph5reviw2ui26destroy__zoom__pan__viewer(_tmp);
5585
- _M0FP36kazuph5reviw2ui14fs__image__zpv.val = undefined;
5586
- }
5587
- _M0FP36kazuph5reviw2ui15clear__children(fs_wrapper);
5588
- const img = _M0MP311moonbitlang4core5array5Array2atGRP36kazuph5reviw2ui7ElementE(images, index);
5589
- const cloned = _M0FP36kazuph5reviw2ui17clone__node__deep(img);
5590
- _M0FP36kazuph5reviw2ui10set__style(cloned, "maxWidth", "none");
5591
- _M0FP36kazuph5reviw2ui10set__style(cloned, "maxHeight", "none");
5592
- _M0FP36kazuph5reviw2ui10set__style(cloned, "cursor", "");
5593
- _M0FP36kazuph5reviw2ui10set__style(cloned, "display", "block");
5594
- _M0FP36kazuph5reviw2ui14set__draggable(cloned, false);
5595
- const nw = _M0FP36kazuph5reviw2ui19get__natural__width(img);
5596
- const nh = _M0FP36kazuph5reviw2ui20get__natural__height(img);
5597
- const nat_w = nw > 0 ? nw : 800;
5598
- const nat_h = nh > 0 ? nh : 600;
5599
- _M0FP36kazuph5reviw2ui10set__style(cloned, "width", `${_M0MP311moonbitlang4core6double6Double10to__string(nat_w)}px`);
5600
- _M0FP36kazuph5reviw2ui10set__style(cloned, "height", `${_M0MP311moonbitlang4core6double6Double10to__string(nat_h)}px`);
5601
- _M0FP36kazuph5reviw2ui13append__child(fs_wrapper, cloned);
5602
- if (!_M0FP36kazuph5reviw2ui8is__null(fs_counter)) {
5603
- _M0FP36kazuph5reviw2ui18set__text__content(fs_counter, `${_M0MP311moonbitlang4core3int3Int18to__string_2einner(index + 1 | 0, 10)} / ${_M0MP311moonbitlang4core3int3Int18to__string_2einner(images.length, 10)}`);
5604
- }
5605
- _M0FP36kazuph5reviw2ui15set__visibility(fs_wrapper, false);
5606
- const img_minimap_content = _M0FP36kazuph5reviw2ui5query("#image-fs-minimap-content");
5607
- const img_minimap_viewport = _M0FP36kazuph5reviw2ui5query("#image-fs-minimap-viewport");
5608
- if (!_M0FP36kazuph5reviw2ui8is__null(img_minimap_content)) {
5609
- _M0FP36kazuph5reviw2ui15clear__children(img_minimap_content);
5610
- const minimap_img = _M0FP36kazuph5reviw2ui17clone__node__deep(cloned);
5611
- _M0FP36kazuph5reviw2ui10set__style(minimap_img, "width", "100%");
5612
- _M0FP36kazuph5reviw2ui10set__style(minimap_img, "height", "100%");
5613
- _M0FP36kazuph5reviw2ui10set__style(minimap_img, "objectFit", "contain");
5614
- _M0FP36kazuph5reviw2ui13append__child(img_minimap_content, minimap_img);
5615
- }
5616
- const zpv = _M0FP36kazuph5reviw2ui34create__zoom__pan__viewer__moonbit(fs_content, fs_wrapper, nat_w, nat_h, fs_zoom_info, true, img_minimap_viewport, 184, 134, 8, 0.1, 20, true);
5617
- _M0FP36kazuph5reviw2ui14fs__image__zpv.val = zpv;
5618
- _M0FP36kazuph5reviw2ui13show__overlay(overlay);
5619
- _M0FP36kazuph5reviw2ui25request__animation__frame(() => {
5620
- _M0FP36kazuph5reviw2ui17fit__to__viewport(zpv);
5621
- _M0FP36kazuph5reviw2ui15set__visibility(fs_wrapper, true);
5622
- });
5623
- }
5624
5705
  function _M0FP36kazuph5reviw2ui36navigate__image__fullscreen__moonbit(direction, overlay, fs_content, fs_wrapper, fs_zoom_info, fs_counter) {
5625
5706
  const images = _M0FP36kazuph5reviw2ui24collect__preview__images();
5626
5707
  if (images.length === 0) {
@@ -6036,7 +6117,7 @@ function _M0FP36kazuph5reviw2ui21setup__paste__handler() {
6036
6117
  let submit_visible;
6037
6118
  if (!_M0FP36kazuph5reviw2ui8is__null(submit_modal)) {
6038
6119
  let _tmp;
6039
- if (_M0MP311moonbitlang4core6string6String8contains(_M0FP36kazuph5reviw2ui9get__attr(submit_modal, "class"), { str: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1921, start: 0, end: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1921.length })) {
6120
+ if (_M0MP311moonbitlang4core6string6String8contains(_M0FP36kazuph5reviw2ui9get__attr(submit_modal, "class"), { str: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1959, start: 0, end: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1959.length })) {
6040
6121
  _tmp = true;
6041
6122
  } else {
6042
6123
  const _p = _M0FP36kazuph5reviw2ui20get__computed__style(submit_modal, "display");
@@ -6050,7 +6131,7 @@ function _M0FP36kazuph5reviw2ui21setup__paste__handler() {
6050
6131
  let comment_visible;
6051
6132
  if (!_M0FP36kazuph5reviw2ui8is__null(comment_card)) {
6052
6133
  let _tmp;
6053
- if (_M0MP311moonbitlang4core6string6String8contains(_M0FP36kazuph5reviw2ui9get__attr(comment_card, "class"), { str: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1920, start: 0, end: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1920.length })) {
6134
+ if (_M0MP311moonbitlang4core6string6String8contains(_M0FP36kazuph5reviw2ui9get__attr(comment_card, "class"), { str: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1958, start: 0, end: _M0FP36kazuph5reviw2ui38setup__paste__handler_2e_2abind_7c1958.length })) {
6054
6135
  _tmp = true;
6055
6136
  } else {
6056
6137
  const _p = _M0FP36kazuph5reviw2ui20get__computed__style(comment_card, "display");
@@ -6090,13 +6171,13 @@ function _M0FP36kazuph5reviw2ui24find__code__block__range(code_text) {
6090
6171
  let i = 0;
6091
6172
  while (true) {
6092
6173
  if (i < data.length) {
6093
- if (_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i).length > 0 && _M0MP311moonbitlang4core6string6String11has__prefix(_M0MP311moonbitlang4core5array5Array2atGsE(_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i), 0), { str: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1923, start: 0, end: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1923.length })) {
6174
+ if (_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i).length > 0 && _M0MP311moonbitlang4core6string6String11has__prefix(_M0MP311moonbitlang4core5array5Array2atGsE(_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i), 0), { str: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1961, start: 0, end: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1961.length })) {
6094
6175
  const block_start = i;
6095
6176
  i = i + 1 | 0;
6096
6177
  const code_buf = _M0MP311moonbitlang4core7builtin13StringBuilder11new_2einner(0);
6097
6178
  while (true) {
6098
6179
  if (i < data.length) {
6099
- if (_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i).length > 0 && _M0MP311moonbitlang4core6string6String11has__prefix(_M0MP311moonbitlang4core5array5Array2atGsE(_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i), 0), { str: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1925, start: 0, end: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1925.length })) {
6180
+ if (_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i).length > 0 && _M0MP311moonbitlang4core6string6String11has__prefix(_M0MP311moonbitlang4core5array5Array2atGsE(_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i), 0), { str: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1963, start: 0, end: _M0FP36kazuph5reviw2ui41find__code__block__range_2e_2abind_7c1963.length })) {
6100
6181
  break;
6101
6182
  }
6102
6183
  if (code_buf.val.length > 0) {
@@ -6125,7 +6206,7 @@ function _M0FP36kazuph5reviw2ui24find__code__block__range(code_text) {
6125
6206
  break;
6126
6207
  }
6127
6208
  }
6128
- return _M0FP36kazuph5reviw2ui39find__code__block__range_2etuple_2f1717;
6209
+ return _M0FP36kazuph5reviw2ui39find__code__block__range_2etuple_2f1746;
6129
6210
  }
6130
6211
  function _M0FP36kazuph5reviw2ui36find__media__source__line__in__block(block, start_from) {
6131
6212
  if (_M0FP36kazuph5reviw2ui8is__null(block)) {
@@ -6215,9 +6296,9 @@ function _M0FP36kazuph5reviw2ui18find__source__line(text, _element, start_from)
6215
6296
  function _M0FP36kazuph5reviw2ui19split__table__cells(line) {
6216
6297
  const cells = [];
6217
6298
  const normalized = _M0FP36kazuph5reviw2ui15normalize__text(line);
6218
- const inner = _M0MP311moonbitlang4core6string6String11has__prefix(normalized, { str: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1939, start: 0, end: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1939.length }) ? _M0FP36kazuph5reviw4core11safe__slice(normalized, 1) : normalized;
6219
- const trimmed = _M0MP311moonbitlang4core6string6String11has__suffix(inner, { str: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1938, start: 0, end: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1938.length }) ? _M0FP36kazuph5reviw4core18safe__slice__range(inner, 0, inner.length - 1 | 0) : inner;
6220
- const _it = _M0MP311moonbitlang4core6string6String5split(trimmed, { str: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1937, start: 0, end: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1937.length });
6299
+ const inner = _M0MP311moonbitlang4core6string6String11has__prefix(normalized, { str: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1977, start: 0, end: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1977.length }) ? _M0FP36kazuph5reviw4core11safe__slice(normalized, 1) : normalized;
6300
+ const trimmed = _M0MP311moonbitlang4core6string6String11has__suffix(inner, { str: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1976, start: 0, end: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1976.length }) ? _M0FP36kazuph5reviw4core18safe__slice__range(inner, 0, inner.length - 1 | 0) : inner;
6301
+ const _it = _M0MP311moonbitlang4core6string6String5split(trimmed, { str: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1975, start: 0, end: _M0FP36kazuph5reviw2ui36split__table__cells_2e_2abind_7c1975.length });
6221
6302
  while (true) {
6222
6303
  const _bind$2 = _M0MP311moonbitlang4core7builtin4Iter4nextGRP311moonbitlang4core6string10StringViewE(_it);
6223
6304
  if (_bind$2 === undefined) {
@@ -6294,10 +6375,10 @@ function _M0FP36kazuph5reviw2ui25find__table__source__line(text, start_from) {
6294
6375
  if (i < data.length) {
6295
6376
  if (_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i).length > 0) {
6296
6377
  const src = _M0MP311moonbitlang4core5array5Array2atGsE(_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i), 0);
6297
- if (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1946, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1946.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, false)) {
6378
+ if (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1984, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1984.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, false)) {
6298
6379
  return i + 1 | 0;
6299
6380
  }
6300
- if (allow_contains && (fuzzy_match < 0 && (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1947, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1947.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, true)))) {
6381
+ if (allow_contains && (fuzzy_match < 0 && (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1985, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1985.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, true)))) {
6301
6382
  fuzzy_match = i + 1 | 0;
6302
6383
  }
6303
6384
  }
@@ -6314,10 +6395,10 @@ function _M0FP36kazuph5reviw2ui25find__table__source__line(text, start_from) {
6314
6395
  if (i < start) {
6315
6396
  if (_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i).length > 0) {
6316
6397
  const src = _M0MP311moonbitlang4core5array5Array2atGsE(_M0MP311moonbitlang4core5array5Array2atGRP311moonbitlang4core7builtin5ArrayGsEE(data, i), 0);
6317
- if (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1950, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1950.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, false)) {
6398
+ if (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1988, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1988.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, false)) {
6318
6399
  return i + 1 | 0;
6319
6400
  }
6320
- if (allow_contains && (fuzzy_match < 0 && (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1951, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1951.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, true)))) {
6401
+ if (allow_contains && (fuzzy_match < 0 && (_M0MP311moonbitlang4core6string6String8contains(src, { str: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1989, start: 0, end: _M0FP36kazuph5reviw2ui42find__table__source__line_2e_2abind_7c1989.length }) && _M0FP36kazuph5reviw2ui29preview__table__line__matches(src, search, true)))) {
6321
6402
  fuzzy_match = i + 1 | 0;
6322
6403
  }
6323
6404
  }
@@ -6333,7 +6414,7 @@ function _M0FP36kazuph5reviw2ui25find__table__source__line(text, start_from) {
6333
6414
  function _M0FP36kazuph5reviw2ui27get__mermaid__source__range(target) {
6334
6415
  const container = _M0FP36kazuph5reviw2ui7closest(target, ".mermaid-container");
6335
6416
  if (_M0FP36kazuph5reviw2ui8is__null(container)) {
6336
- return _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1789;
6417
+ return _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1818;
6337
6418
  }
6338
6419
  const start_line = _M0FP36kazuph5reviw2ui12str__to__int(_M0FP36kazuph5reviw2ui9get__attr(container, "data-source-start-line"));
6339
6420
  const end_line = _M0FP36kazuph5reviw2ui12str__to__int(_M0FP36kazuph5reviw2ui9get__attr(container, "data-source-end-line"));
@@ -6341,7 +6422,7 @@ function _M0FP36kazuph5reviw2ui27get__mermaid__source__range(target) {
6341
6422
  const actual_end = end_line >= start_line ? end_line : start_line;
6342
6423
  return { _0: start_line, _1: actual_end };
6343
6424
  } else {
6344
- return _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1790;
6425
+ return _M0FP36kazuph5reviw2ui42get__mermaid__source__range_2etuple_2f1819;
6345
6426
  }
6346
6427
  }
6347
6428
  function _M0FP36kazuph5reviw2ui29resolve__preview__block__text(block) {
@@ -6506,7 +6587,7 @@ function _M0FP36kazuph5reviw2ui23setup__preview__mouseup() {
6506
6587
  const heading = _M0FP36kazuph5reviw2ui29find__closest__heading__above(meaningful_container);
6507
6588
  const h_line = _M0FP36kazuph5reviw2ui26get__heading__source__line(heading);
6508
6589
  const lines_arr = [];
6509
- const _it = _M0MP311moonbitlang4core6string6String5split(text, { str: _M0FP36kazuph5reviw2ui40setup__preview__mouseup_2e_2abind_7c1959, start: 0, end: _M0FP36kazuph5reviw2ui40setup__preview__mouseup_2e_2abind_7c1959.length });
6590
+ const _it = _M0MP311moonbitlang4core6string6String5split(text, { str: _M0FP36kazuph5reviw2ui40setup__preview__mouseup_2e_2abind_7c1997, start: 0, end: _M0FP36kazuph5reviw2ui40setup__preview__mouseup_2e_2abind_7c1997.length });
6510
6591
  while (true) {
6511
6592
  const _bind$2 = _M0MP311moonbitlang4core7builtin4Iter4nextGRP311moonbitlang4core6string10StringViewE(_it);
6512
6593
  if (_bind$2 === undefined) {
@@ -6760,7 +6841,7 @@ function _M0FP36kazuph5reviw2ui23build__heading__anchors() {
6760
6841
  const row = data[_i$2];
6761
6842
  if (row.length > 0) {
6762
6843
  const src = _M0MP311moonbitlang4core5array5Array2atGsE(row, 0);
6763
- if (_M0MP311moonbitlang4core6string6String11has__prefix(src, { str: _M0FP36kazuph5reviw2ui40build__heading__anchors_2e_2abind_7c1972, start: 0, end: _M0FP36kazuph5reviw2ui40build__heading__anchors_2e_2abind_7c1972.length })) {
6844
+ if (_M0MP311moonbitlang4core6string6String11has__prefix(src, { str: _M0FP36kazuph5reviw2ui40build__heading__anchors_2e_2abind_7c2010, start: 0, end: _M0FP36kazuph5reviw2ui40build__heading__anchors_2e_2abind_7c2010.length })) {
6764
6845
  const src_stripped = _M0FP36kazuph5reviw2ui15strip__markdown(src);
6765
6846
  if (src_stripped === stripped) {
6766
6847
  _M0MP311moonbitlang4core5array5Array4pushGRP36kazuph5reviw2ui13HeadingAnchorE(anchors, { line: _i$2, preview_el: h });
@@ -7630,7 +7711,7 @@ function _M0FP36kazuph5reviw2ui22toggle__history__panel() {
7630
7711
  return undefined;
7631
7712
  }
7632
7713
  const body = _M0FP36kazuph5reviw2ui5query("body");
7633
- const is_open = _M0MP311moonbitlang4core6string6String8contains(_M0FP36kazuph5reviw2ui9get__attr(panel, "class"), { str: _M0FP36kazuph5reviw2ui39toggle__history__panel_2e_2abind_7c2006, start: 0, end: _M0FP36kazuph5reviw2ui39toggle__history__panel_2e_2abind_7c2006.length });
7714
+ const is_open = _M0MP311moonbitlang4core6string6String8contains(_M0FP36kazuph5reviw2ui9get__attr(panel, "class"), { str: _M0FP36kazuph5reviw2ui39toggle__history__panel_2e_2abind_7c2044, start: 0, end: _M0FP36kazuph5reviw2ui39toggle__history__panel_2e_2abind_7c2044.length });
7634
7715
  if (is_open) {
7635
7716
  _M0FP36kazuph5reviw2ui13remove__class(panel, "open");
7636
7717
  if (!_M0FP36kazuph5reviw2ui8is__null(body)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviw",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Lightweight file reviewer with in-browser comments for CSV, TSV, Markdown, and Git diffs.",
5
5
  "type": "module",
6
6
  "bin": {