risum 모듈 — RISU modules[] — 기능 확장
Speaker Tooltip을 대체하며 |name| 대사 툴팁, Telescope 호환 Spacetime 카드, Hidden Spoiler 접기/스타일을 제공한다. CSS는 backgroundEmbedding에서 한 번만 주입한다.
{
"name": "Mythos Display",
"description": "Speaker Tooltip을 대체하며 |name| 대사 툴팁, Telescope 호환 Spacetime 카드, Hidden Spoiler 접기/스타일을 제공한다. CSS는 backgroundEmbedding에서 한 번만 주입한다.",
"id": "6e6d7d45-60c3-43a8-b2d6-e71fa6c72d73",
"namespace": "mythos-display",
"lorebook": [],
"regex": [
{
"comment": "Speaker Tag Wrapper (with delivery)",
"in": "(?<=^|\\n)[ \\t]*\\|[ \\t]*([^|/\\n]+?)[ \\t]*/[ \\t]*([^|\\n]+?)[ \\t]*\\|[ \\t]*(?::[ \\t]*)?((?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:“(?:\\\\.|[^”\\\\])*”)|(?:「(?:\\\\.|[^」\\\\])*」)|(?:『(?:\\\\.|[^』\\\\])*』))(?![^\\n]*\\|)",
"out": "<span class=\"speaker-dialogue\" data-speaker=\"$1 ($2)\">$3</span>",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
},
{
"comment": "Speaker Tag Wrapper (name only)",
"in": "(?<=^|\\n)[ \\t]*\\|[ \\t]*([^|/\\n]+?)[ \\t]*\\|[ \\t]*(?::[ \\t]*)?((?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:“(?:\\\\.|[^”\\\\])*”)|(?:「(?:\\\\.|[^」\\\\])*」)|(?:『(?:\\\\.|[^』\\\\])*』))(?![^\\n]*\\|)",
"out": "<span class=\"speaker-dialogue\" data-speaker=\"$1\">$2</span>",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
},
{
"comment": "Mythos Spacetime Card",
"in": "^[ \\t]*┣[ \\t]*Spacetime:[ \\t]*([^|\\r\\n┫]+?)[ \\t]*\\|[ \\t]*Date[ \\t]*=[ \\t]*([^|\\r\\n┫]+?)[ \\t]*\\|[ \\t]*Time[ \\t]*=[ \\t]*([^|┫\\r\\n]+?)[ \\t]*┫[ \\t]*\\r?$",
"out": "<div class=\"mythos-spacetime\" data-mythos-kind=\"spacetime\"><span class=\"mythos-spacetime-location\"><span class=\"mythos-spacetime-icon\">⌖</span><span class=\"mythos-spacetime-place\">$1</span></span><span class=\"mythos-spacetime-meta\"><time class=\"mythos-spacetime-date\" datetime=\"$2\">$2</time><time class=\"mythos-spacetime-time\" datetime=\"$3\">$3</time></span></div>",
"type": "editdisplay",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "Hidden Spoiler Raw Fallback",
"in": "@Hidden Spoiler@\\s*([\\s\\S]*?)\\s*@END@",
"out": "<details class=\"mythos-hidden-spoiler\"><summary><span class=\"mythos-hidden-summary\">🫥 Hidden Spoiler</span></summary><div class=\"mythos-hidden-body\">$1</div></details>",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
},
{
"comment": "Hidden Spoiler Legacy Fold Enhancer",
"in": "<details>\\s*<summary>\\s*🫥\\s*Hidden Spoiler\\s*</summary>\\s*([\\s\\S]*?)\\s*</details>",
"out": "<details class=\"mythos-hidden-spoiler\"><summary><span class=\"mythos-hidden-summary\">🫥 Hidden Spoiler</span></summary><div class=\"mythos-hidden-body\">$1</div></details>",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
}
],
"trigger": [],
"cjs": "",
"assets": [],
"hideIcon": false,
"lowLevelAccess": false,
"backgroundEmbedding": "<style>\n.speaker-dialogue {\n position: relative;\n cursor: help;\n text-decoration: underline dotted color-mix(in srgb, var(--risu-theme-borderc) 55%, transparent);\n text-underline-offset: 0.18em;\n}\n\n.speaker-dialogue::before {\n content: attr(data-speaker);\n position: absolute;\n bottom: calc(100% + 0.55rem);\n left: 50%;\n z-index: 100;\n transform: translate(-50%, 0.2rem);\n padding: 0.28rem 0.58rem;\n color: var(--risu-theme-textcolor);\n background: color-mix(in srgb, var(--risu-theme-darkbg) 92%, transparent);\n border: 1px solid color-mix(in srgb, var(--risu-theme-borderc) 65%, transparent);\n border-radius: 0.4rem;\n box-shadow: 0 0.35rem 1rem rgba(0, 0, 0, 0.34);\n font-family: var(--risu-font-family), sans-serif;\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.035em;\n line-height: 1.2;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: opacity 140ms ease, transform 140ms ease, visibility 0s linear 140ms;\n}\n\n.speaker-dialogue::after {\n content: '';\n position: absolute;\n bottom: calc(100% + 0.28rem);\n left: 50%;\n z-index: 99;\n transform: translateX(-50%);\n border-right: 0.28rem solid transparent;\n border-left: 0.28rem solid transparent;\n border-top: 0.28rem solid color-mix(in srgb, var(--risu-theme-borderc) 65%, transparent);\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: opacity 140ms ease, visibility 0s linear 140ms;\n}\n\n.speaker-dialogue:hover::before,\n.speaker-dialogue:hover::after {\n opacity: 1;\n visibility: visible;\n transition-delay: 0s;\n}\n\n.speaker-dialogue:hover::before {\n transform: translate(-50%, 0);\n}\n\n.mythos-spacetime {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n margin: 0.9em 0 0.18em;\n padding: 0.56rem 0.72rem;\n color: var(--risu-theme-textcolor);\n background:\n linear-gradient(135deg, color-mix(in srgb, var(--risu-theme-selected) 78%, transparent), color-mix(in srgb, var(--risu-theme-darkbg) 92%, transparent));\n border: 1px solid color-mix(in srgb, var(--risu-theme-borderc) 58%, transparent);\n border-left: 0.18rem solid color-mix(in srgb, var(--risu-theme-primary-400) 78%, #70c7d4);\n border-radius: 0.55rem;\n box-shadow: 0 0.35rem 1.1rem rgba(0, 0, 0, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.035);\n font-family: var(--risu-font-family), sans-serif;\n font-size: 0.78em;\n line-height: 1.3;\n backdrop-filter: blur(8px);\n}\n\n.mythos-spacetime-location {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 0.48rem;\n font-weight: 650;\n}\n\n.mythos-spacetime-icon {\n flex: 0 0 auto;\n color: color-mix(in srgb, var(--risu-theme-primary-300) 82%, #88d7df);\n font-size: 1.1em;\n text-shadow: 0 0 0.55rem color-mix(in srgb, var(--risu-theme-primary-400) 55%, transparent);\n}\n\n.mythos-spacetime-place {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.mythos-spacetime-meta {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n gap: 0.38rem;\n}\n\n.mythos-spacetime-date,\n.mythos-spacetime-time {\n padding: 0.18rem 0.42rem;\n color: var(--risu-theme-textcolor2);\n background: color-mix(in srgb, var(--risu-theme-darkbg) 65%, transparent);\n border: 1px solid color-mix(in srgb, var(--risu-theme-borderc) 38%, transparent);\n border-radius: 999px;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n.mythos-hidden-spoiler {\n margin: 0.85em 0 0.2em;\n overflow: hidden;\n color: var(--risu-theme-textcolor);\n background: color-mix(in srgb, var(--risu-theme-darkbg) 86%, transparent);\n border: 1px solid color-mix(in srgb, var(--risu-theme-secondary-500) 48%, var(--risu-theme-borderc));\n border-radius: 0.55rem;\n box-shadow: 0 0.3rem 1rem rgba(0, 0, 0, 0.2);\n}\n\n.mythos-hidden-spoiler summary {\n display: flex;\n align-items: center;\n gap: 0.46rem;\n padding: 0.52rem 0.7rem;\n cursor: pointer;\n list-style: none;\n color: color-mix(in srgb, var(--risu-theme-secondary-300) 82%, var(--risu-theme-textcolor));\n font-size: 0.76em;\n font-weight: 650;\n letter-spacing: 0.025em;\n}\n\n.mythos-hidden-spoiler summary::-webkit-details-marker {\n display: none;\n}\n\n.mythos-hidden-spoiler summary::before {\n content: '◇';\n color: var(--risu-theme-secondary-400);\n transition: transform 150ms ease;\n}\n\n.mythos-hidden-spoiler[open] summary::before {\n transform: rotate(45deg);\n}\n\n.mythos-hidden-body {\n padding: 0.65rem 0.75rem 0.72rem;\n color: var(--risu-theme-textcolor2);\n border-top: 1px solid color-mix(in srgb, var(--risu-theme-borderc) 35%, transparent);\n font-size: 0.78em;\n line-height: 1.55;\n white-space: pre-wrap;\n}\n\n@media (max-width: 640px) {\n .mythos-spacetime {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.48rem;\n }\n\n .mythos-spacetime-meta {\n width: 100%;\n }\n}\n</style>",
"customModuleToggle": "",
"mcp": {}
}