diff --git a/css/style.css b/css/style.css
index be7f439..8e889bb 100644
--- a/css/style.css
+++ b/css/style.css
@@ -1244,6 +1244,96 @@ footer.footer-modern a:hover {
border-left: 3px solid var(--accent);
}
+/* ========================================
+ IMAGE CAROUSEL (```carousel fences)
+ ======================================== */
+.carousel {
+ position: relative;
+ margin: var(--space-md) 0;
+ border-radius: var(--radius-md);
+ overflow: hidden;
+ background: var(--bg-subtle);
+ border: 1px solid var(--border-color);
+}
+
+.carousel-track {
+ position: relative;
+}
+
+.carousel-slide {
+ display: none;
+}
+
+.carousel-slide.is-active {
+ display: block;
+}
+
+.carousel-slide img {
+ width: 100%;
+ height: auto;
+ display: block;
+ cursor: zoom-in;
+}
+
+.carousel-caption {
+ margin: 0;
+ padding: 0.5rem 1rem;
+ font-size: var(--font-size-sm);
+ color: var(--text-secondary);
+ text-align: center;
+ background: var(--bg-subtle);
+}
+
+.carousel-arrow {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 10;
+ background: rgba(0, 0, 0, 0.45);
+ color: #ffffff;
+ border: none;
+ width: 38px;
+ height: 38px;
+ border-radius: 50%;
+ font-size: 1.6rem;
+ line-height: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ transition: background 0.15s ease;
+}
+
+.carousel-arrow:hover {
+ background: rgba(0, 0, 0, 0.72);
+}
+
+.carousel-prev { left: 10px; }
+.carousel-next { right: 10px; }
+
+.carousel-dots {
+ display: flex;
+ justify-content: center;
+ gap: 6px;
+ padding: 8px;
+}
+
+.carousel-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: var(--border-color);
+ border: none;
+ padding: 0;
+ cursor: pointer;
+ transition: background 0.15s ease, transform 0.15s ease;
+}
+
+.carousel-dot.is-active {
+ background: var(--accent);
+ transform: scale(1.3);
+}
+
/* ========================================
LIGHTBOX
======================================== */
diff --git a/index.php b/index.php
index 67ec2d3..f27cf20 100644
--- a/index.php
+++ b/index.php
@@ -348,11 +348,11 @@
var pre = code.parentNode;
var raw = code.textContent;
- // Split on [Tab Name] header lines
+ // Split on "=== Tab Name" header lines (avoids Parsedown link-ref conflicts)
var tabs = [];
var current = null;
raw.split('\n').forEach(function (line) {
- var m = line.match(/^\[(.+)\]\s*$/);
+ var m = line.match(/^===\s+(.+?)\s*$/);
if (m) {
current = { name: m[1], lines: [] };
tabs.push(current);
@@ -414,6 +414,99 @@
})();
+
+
+