跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
450
条目
805
文件
22
用户
9141
编辑
Blockland Wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
打开/关闭外观设置菜单
无法加载外观设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁MediaWiki:KuranokaPageTransition.css”︁的源代码
MediaWiki界面页面
查看
阅读
查看源代码
查看历史
相关页面
系统消息
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
Cargo数据
←
MediaWiki:KuranokaPageTransition.css
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此CSS页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* Kuranoka Page Transition V18 — vivid V2 fire, lower-overhead ambience / scoped crimson night Load only on /wiki/Kuranoka and /wiki/Kuronata. No Citizen.css / Common.css changes. */ #kkpt-toggle { --kkpt-tone: #a7e7ff; --kkpt-panel: rgba(7,28,49,.87); position: fixed; z-index: 2147483000; right: clamp(12px,2.3vw,34px); bottom: clamp(14px,3.4vh,34px); display: flex; align-items: center; gap: 10px; max-width: calc(100vw - 24px); box-sizing: border-box; padding: 12px 17px; border: 1px solid color-mix(in srgb,var(--kkpt-tone) 60%,transparent); border-radius: 999px; background: var(--kkpt-panel); box-shadow: 0 8px 35px #0007,0 0 20px color-mix(in srgb,var(--kkpt-tone) 25%,transparent); color: #f1fcff !important; font: 650 13px/1.3 system-ui,sans-serif; letter-spacing: .045em; text-decoration: none !important; cursor: pointer; backdrop-filter: blur(18px) saturate(145%); -webkit-backdrop-filter: blur(18px) saturate(145%); transition: transform .22s,box-shadow .22s,opacity .22s; } /* Easter egg mode: no floating button unless SHOW_FLOATING_BUTTON=true. */ #kkpt-toggle[hidden] {display:none !important} #kkpt-toggle.kkpt-dark { --kkpt-tone: #ff6b7e; --kkpt-panel: rgba(41,4,14,.88); color: #fff1f1 !important; } #kkpt-toggle:hover,#kkpt-toggle:focus-visible { transform: translateY(-3px); box-shadow: 0 9px 38px #0008,0 0 32px var(--kkpt-tone); } #kkpt-toggle:focus-visible {outline: 2px solid var(--kkpt-tone);outline-offset: 4px} #kkpt-toggle .kkpt-icon {font-size: 23px;color: var(--kkpt-tone);text-shadow: 0 0 13px var(--kkpt-tone)} #kkpt-toggle .kkpt-text {display: flex;flex-direction: column;gap: 2px} #kkpt-toggle .kkpt-sub {font-size: 10px;opacity: .74} #kkpt-toggle.kkpt-busy {pointer-events: none} #kkpt-toggle.kkpt-quiet {opacity: 0;pointer-events: none} /* Real interactive Wiki page, retained after the transition finishes. */ #kkpt-preview { position: fixed !important; z-index: 2147481000 !important; inset: 0 !important; display: block !important; box-sizing: border-box !important; width: 100vw !important; height: 100vh !important; padding: 0 !important; margin: 0 !important; border: 0 !important; border-radius: 0 !important; overflow: hidden !important; clip-path: inset(0 0 0 100%); pointer-events: none !important; background: #1f0710; transform: translateZ(0); will-change: clip-path; } body.page-Kuronata #kkpt-preview {background: #c0eafe} #kkpt-preview.kkpt-active {pointer-events: auto !important;clip-path: inset(0)} /* Atmosphere remains independent of the flame: drifting smoke, scattered pages, shockwaves, and blue-white leaves from V14. */ #kkpt-atmosphere { position: fixed !important; z-index: 2147482000 !important; inset: 0 !important; display: block !important; width: 100vw !important; height: 100vh !important; pointer-events: none !important; transition: opacity 160ms linear; } /* V2's incandescent curtain sits ABOVE the dark smoke bank. */ #kkpt-vfx { position: fixed !important; z-index: 2147482100 !important; inset: 0 !important; display: block !important; width: 100vw !important; height: 100vh !important; pointer-events: none !important; transition: opacity 150ms linear; } /* MediaWiki portal links are normal links until hovered/focused. */ #mw-content-text a.kkpt-portal-link, .mw-parser-output a.kkpt-portal-link { --kkpt-fringe: #ff4662; --kkpt-halo: rgba(244,19,51,.30); /* Never change inline flow, line breaks or Infobox link dimensions. */ position: relative; isolation: isolate; cursor: pointer; text-decoration-thickness: 1px; text-underline-offset: 3px; transition: color .13s, text-shadow .13s, filter .13s; } #mw-content-text a.kkpt-portal-blue, .mw-parser-output a.kkpt-portal-blue { --kkpt-fringe: #55e5ff; --kkpt-halo: rgba(23,183,255,.35); } #mw-content-text a.kkpt-portal-link:is(:hover,:focus-visible), .mw-parser-output a.kkpt-portal-link:is(:hover,:focus-visible) { color: var(--kkpt-fringe) !important; text-shadow: -2px 0 var(--kkpt-halo),2px 0 rgba(108,219,255,.42), 0 0 11px var(--kkpt-halo); animation: kkpt-hover-jitter 800ms steps(1,end) infinite; } #mw-content-text a.kkpt-portal-link::before, #mw-content-text a.kkpt-portal-link::after, .mw-parser-output a.kkpt-portal-link::before, .mw-parser-output a.kkpt-portal-link::after { position: absolute; inset: 0; z-index: 1; display: block; opacity: 0; content: attr(data-kkpt-text); color: var(--kkpt-fringe); line-height: inherit; font: inherit; font-weight: inherit; letter-spacing: inherit; text-decoration: none; pointer-events: none; white-space: nowrap; overflow: hidden; } #mw-content-text a.kkpt-portal-link:is(:hover,:focus-visible)::before, .mw-parser-output a.kkpt-portal-link:is(:hover,:focus-visible)::before { opacity: .90; text-shadow: -2px 0 #fa345c; animation: kkpt-slice-a 680ms steps(1,end) infinite; } #mw-content-text a.kkpt-portal-link:is(:hover,:focus-visible)::after, .mw-parser-output a.kkpt-portal-link:is(:hover,:focus-visible)::after { opacity: .80; color: #8af5ff; text-shadow: 2px 0 #39a7ff; animation: kkpt-slice-b 580ms steps(1,end) infinite; } @keyframes kkpt-hover-jitter { 0%,12%,40%,72%,100% {transform:translate(0)} 13% {transform:translate(1px,-1px)} 15% {transform:translate(-1px,0)} 42% {transform:translate(2px,0)} 44% {transform:translate(0)} 73% {transform:translate(-1px,1px)} 75% {transform:translate(0)} } @keyframes kkpt-slice-a { 0%,100% {clip-path:inset(0 0 91% 0);transform:translate(0)} 15% {clip-path:inset(9% 0 70% 0);transform:translate(-3px,1px)} 26% {clip-path:inset(40% 0 38% 0);transform:translate(4px,-1px)} 42% {clip-path:inset(76% 0 9% 0);transform:translate(-2px,0)} 59% {clip-path:inset(22% 0 59% 0);transform:translate(3px,1px)} 84% {clip-path:inset(56% 0 22% 0);transform:translate(-4px,-1px)} } @keyframes kkpt-slice-b { 0%,100% {clip-path:inset(78% 0 7% 0);transform:translate(0)} 14% {clip-path:inset(46% 0 29% 0);transform:translate(2px,-1px)} 37% {clip-path:inset(11% 0 80% 0);transform:translate(-4px,1px)} 61% {clip-path:inset(65% 0 20% 0);transform:translate(4px,0)} 83% {clip-path:inset(28% 0 49% 0);transform:translate(-2px,-1px)} } /* Pure overlay: NO styles or markup changes to native Infobox/caption. */ .kkpt-fate-gear { --kkpt-gear-ink: #f2feff; --kkpt-gear-halo: rgba(58,175,220,.42); position: absolute !important; z-index: 2147481100; box-sizing: border-box; top: 0; left: 0; width: 42px; height: 42px; display: grid !important; place-items: center; padding: 7px; border-radius: 50%; border: 1px solid rgba(255,255,255,.57); background: rgba(15,91,142,.15); box-shadow: inset 0 0 9px rgba(255,255,255,.18), 0 0 11px var(--kkpt-gear-halo); color: var(--kkpt-gear-ink) !important; text-decoration: none !important; cursor: pointer; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); transition: background .25s,box-shadow .25s,border-color .25s; } .kkpt-fate-gear[hidden] {display:none !important} body.kkpt-other-active > .kkpt-fate-gear { visibility: hidden !important; pointer-events: none !important; } body.page-Kuronata .kkpt-fate-gear { --kkpt-gear-ink: #ffe7ec; --kkpt-gear-halo: rgba(245,58,82,.43); background: rgba(87,11,28,.38); } .kkpt-fate-gear:hover, .kkpt-fate-gear:focus-visible { border-color: #fff; background: rgba(255,255,255,.15); box-shadow: inset 0 0 10px rgba(255,255,255,.22), 0 0 24px var(--kkpt-gear-halo); } .kkpt-fate-gear:focus-visible {outline: 2px solid #fff;outline-offset: 3px} .kkpt-fate-gear .kkpt-fate-gear-svg { display: block; width: 100%; height: 100%; overflow: visible; filter: drop-shadow(0 0 4px var(--kkpt-gear-halo)); transform-origin: center; } .kkpt-fate-gear-svg path {fill: currentColor} .kkpt-fate-gear-svg circle:first-of-type { fill: rgba(20,71,111,.45); stroke: currentColor; stroke-width: 1.2; } .kkpt-fate-gear-svg circle:last-of-type {fill:currentColor} .kkpt-fate-gear-turning .kkpt-fate-gear-svg { animation: kkpt-fate-rotation 3.85s cubic-bezier(.19,.69,.25,1) both; } .kkpt-fate-gear::after { position: absolute; inset: -8px; border: 1px dashed var(--kkpt-gear-ink); border-radius: 50%; content: ''; opacity: 0; pointer-events: none; transform: scale(.72); } .kkpt-fate-gear-turning::after { animation: kkpt-fate-ripple 1.15s ease-out both; } @keyframes kkpt-fate-rotation { 0% {transform:rotate(0deg)} 18% {transform:rotate(108deg)} 57% {transform:rotate(594deg)} 100% {transform:rotate(1080deg)} } @keyframes kkpt-fate-ripple { 0% {opacity:0;transform:scale(.75) rotate(0deg)} 20% {opacity:.85} 100% {opacity:0;transform:scale(1.7) rotate(100deg)} } /* ================================================================== In-article FORM SWITCH: plain [[Kuronata|...]] / [[Kuranoka|...]]. Place beside or inside an Infobox; no loader changes or inline JS. ================================================================== */ .mw-parser-output .kkpt-form-switch, #mw-content-text .kkpt-form-switch { --kkpt-switch-tone: #58cfff; --kkpt-switch-ink: #e9faff; --kkpt-switch-background: rgba(9,36,61,.91); display: table; width: max-content; max-width: min(100%,320px); margin: .65em 0 1em; border-radius: 14px; isolation: isolate; } /* Respect any old in-article switch wikitext: never hide user content. Delete its wikitext manually if you prefer only the fate gear. */ /* After a right-floated Infobox, the switch floats alongside it when space allows; otherwise it falls below the box on narrow screens. */ .mw-parser-output .kkpt-form-switch--beside, #mw-content-text .kkpt-form-switch--beside { float: right; clear: none; margin: .35em .8em 1em .5em; } .mw-parser-output .kkpt-form-switch--under, #mw-content-text .kkpt-form-switch--under { float: right; clear: right; } body.page-Kuronata .kkpt-form-switch { --kkpt-switch-tone: #ff6279; --kkpt-switch-ink: #fff1f0; --kkpt-switch-background: rgba(47,7,19,.94); } #mw-content-text .kkpt-form-switch a.kkpt-portal-link, .mw-parser-output .kkpt-form-switch a.kkpt-portal-link, .mw-parser-output .kkpt-form-switch > a, #mw-content-text .kkpt-form-switch > a { position: relative; box-sizing: border-box; display: flex; align-items: center; justify-content: center; min-height: 47px; width: 100%; max-width: 320px; padding: 11px 19px; border: 1px solid color-mix(in srgb,var(--kkpt-switch-tone) 73%,transparent); border-radius: 14px; background: linear-gradient(135deg, color-mix(in srgb,var(--kkpt-switch-tone) 15%,transparent), transparent 50%),var(--kkpt-switch-background); box-shadow: 0 4px 18px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.12), 0 0 16px color-mix(in srgb,var(--kkpt-switch-tone) 20%,transparent); color: var(--kkpt-switch-ink) !important; text-align: center; font: 700 12.5px/1.45 system-ui,sans-serif; letter-spacing: .075em; text-decoration: none !important; overflow: hidden; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); transition: transform .22s,box-shadow .22s,border-color .22s; } #mw-content-text .kkpt-form-switch a.kkpt-portal-link:is(:hover,:focus-visible), .mw-parser-output .kkpt-form-switch a.kkpt-portal-link:is(:hover,:focus-visible) { color: #fff !important; transform: translateY(-2px); border-color: #f5ffff; box-shadow: 0 6px 24px rgba(0,0,0,.42), 0 0 22px color-mix(in srgb,var(--kkpt-switch-tone) 55%,transparent); } /* Keep the hidden second copy of the text inside the button's padding, so the hover glitch doesn't spill past the rounded silhouette. */ #mw-content-text .kkpt-form-switch a.kkpt-portal-link::before, #mw-content-text .kkpt-form-switch a.kkpt-portal-link::after, .mw-parser-output .kkpt-form-switch a.kkpt-portal-link::before, .mw-parser-output .kkpt-form-switch a.kkpt-portal-link::after { inset: 11px 19px; text-align: center; } @media (max-width: 670px) { .mw-parser-output .kkpt-form-switch--beside, #mw-content-text .kkpt-form-switch--beside { float: none; clear: both; margin: .75em 0; } } @media (max-width: 600px) { #kkpt-toggle {padding: 10px 13px;gap: 8px} #kkpt-toggle .kkpt-sub {display:none} } @media (prefers-reduced-motion: reduce) { #kkpt-toggle {transition:none !important} #kkpt-vfx,#kkpt-atmosphere {display:none !important} #mw-content-text a.kkpt-portal-link, .mw-parser-output a.kkpt-portal-link {animation:none !important} #mw-content-text a.kkpt-portal-link::before, #mw-content-text a.kkpt-portal-link::after, .mw-parser-output a.kkpt-portal-link::before, .mw-parser-output a.kkpt-portal-link::after {animation:none !important;opacity:0 !important} .kkpt-fate-gear-turning .kkpt-fate-gear-svg, .kkpt-fate-gear-turning::after {animation:none !important} } /* ============================================================== KURONATA ONLY — Crimson Night Never targets Kuranoka or any other article. Keep native layout. JS opts just the Kuronata document into Citizen's night palette; these scoped values also cover a preview iframe before JS runs. ============================================================== */ html.kkpt-kuronata-dark, body.page-Kuronata { color-scheme: dark; --color-base: #f1e8eb; --color-emphasized: #fff4f5; --color-subtle: #d5b7c0; --color-link: #ffb8c4; --color-progressive-oklch__h: 19; --color-progressive-hsl__h: 351; --color-surface-1: rgba(28, 15, 20, .94); --color-surface-2: rgba(42, 20, 28, .90); --color-surface-3: rgba(63, 26, 37, .90); --color-surface-4: rgba(84, 29, 45, .90); } /* Preserve the storm background and glass, only recolor the foreground. */ body.page-Kuronata, body.page-Kuronata .citizen-page-container, body.page-Kuronata .citizen-body-container, body.page-Kuronata .mw-parser-output, body.page-Kuronata #mw-content-text { color: #f1e8eb !important; } body.page-Kuronata :is( .mw-page-title-main, .mw-headline, .citizen-page-heading, .citizen-page-title, .mw-parser-output h1, .mw-parser-output h2, .mw-parser-output h3, .mw-parser-output h4, .mw-parser-output h5, .mw-parser-output h6 ) { color: #fff3f4 !important; } /* Blue hyperlinks break the blood-red theme. Retain recognizable links. */ body.page-Kuronata :is( #mw-content-text, .mw-parser-output, .citizen-toc, .citizen-page-header ) a[href]:not(.new):not(.kkpt-fate-gear) { color: #ffb6c2 !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) a.new { color: #ff849b !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) a[href]:hover { color: #ffe0e5 !important; } body.page-Kuronata a.kkpt-portal-blue { --kkpt-fringe: #ffcad5; --kkpt-halo: rgba(255, 77, 115, .42); } /* Infobox: leave all rows/columns exactly as the template generated them. Correct only the old light-mode backgrounds and black foreground text. */ body.page-Kuronata :is(#mw-content-text,.mw-parser-output) table.infobox { background-color: rgba(24, 13, 19, .94) !important; color: #fff0f2 !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) table.infobox :is(caption,th,td) { color: #fff0f2 !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) table.infobox td { background-color: rgba(27, 18, 24, .88) !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) table.infobox th:not([colspan]) { background-color: rgba(73, 31, 43, .93) !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) table.infobox :is(th[colspan],.infobox-header) { color: #fff3f4 !important; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) table.infobox a[href] { color: #ffc1ca !important; } body.page-Kuronata ::selection { background: rgba(202, 47, 77, .64); color: #fff9fa; } /* Kuronata spoilers / 黑幕: the original white-on-white censor becomes soot black, with the text revealed only on hover or keyboard focus. */ body.page-Kuronata :is(#mw-content-text,.mw-parser-output) .heimu, body.page-Kuronata :is(#mw-content-text,.mw-parser-output) .heimu a { background-color: #08080b !important; color: #08080b !important; text-shadow: none; -webkit-text-fill-color: #08080b !important; box-shadow: inset 0 0 0 1px rgba(112,32,48,.65); border-radius: 2px; } body.page-Kuronata :is(#mw-content-text,.mw-parser-output) .heimu:is(:hover,:focus,:focus-within), body.page-Kuronata :is(#mw-content-text,.mw-parser-output) .heimu:is(:hover,:focus,:focus-within) a { background-color: #2d111c !important; color: #ffe3e8 !important; -webkit-text-fill-color: #ffe3e8 !important; } /* Kuronata 黑幕:直接让 span 本身出现彩色信号撕裂。 无须 data 属性或 JS 注入,因此即使文章通过 AJAX 更新也生效。 */ body.page-Kuronata span.heimu { cursor: crosshair; } body.page-Kuronata span.heimu:is(:hover,:focus-visible,:focus-within) { color: #ffe3e8 !important; -webkit-text-fill-color: #ffe3e8 !important; background-color: #2d111c !important; animation: kkpt-heimu-interference 440ms steps(1,end) infinite !important; } @keyframes kkpt-heimu-interference { 0%,8%,55%,100% { filter: none; text-shadow: -1px 0 #c93856,1px 0 #5dcfff; box-shadow: inset 0 0 0 1px #752738; } 9%,15% { filter: contrast(1.65) brightness(1.22); text-shadow: -3px 0 #ff234f,3px 0 #52ecff, 0 2px #111; box-shadow: inset 0 -3px 0 #ff275b, inset 0 2px 0 #66dfff; } 27%,33% { filter: brightness(1.7); text-shadow: 3px 0 #ed2b70,-3px 0 #35dcff; box-shadow: inset 0 2px 0 #eb356b, inset 0 -1px 0 #89f6ff; } 65%,71% { filter: contrast(2) brightness(.83); text-shadow: -2px 0 #ff2851,4px 0 #5cf7ff; box-shadow: inset 0 -2px 0 #7f2840; } 83%,87% { filter: brightness(1.45); text-shadow: 2px 0 #f35a8a,-2px 0 #49deee; box-shadow: inset 0 1px 0 #fff; } } @media (prefers-reduced-motion: reduce) { body.page-Kuronata span.heimu:is(:hover,:focus-visible,:focus-within) { animation: none !important; } } @media print { #kkpt-toggle,#kkpt-preview,#kkpt-vfx,#kkpt-atmosphere, .kkpt-form-switch {display:none !important} } /* =============================================================== V19: Kuronata spoiler fade + sliced text displacement. The existing native .heimu markup and Infobox remain untouched. =============================================================== */ body.page-Kuronata :is(#mw-content-text,.mw-parser-output) span.heimu, body.page-Kuronata :is(#mw-content-text,.mw-parser-output) span.heimu a { transition: background-color .29s ease, color .29s ease, -webkit-text-fill-color .29s ease !important; } body.page-Kuronata span.heimu[data-kkpt-glitch] { position: relative; isolation: isolate; } body.page-Kuronata span.heimu[data-kkpt-glitch]::before, body.page-Kuronata span.heimu[data-kkpt-glitch]::after { content: attr(data-kkpt-glitch); position: absolute; inset: 0; z-index: 2; display: inline; width: 100%; height: 100%; overflow: hidden; pointer-events: none; user-select: none; white-space: nowrap; font: inherit; font-weight: inherit; line-height: inherit; letter-spacing: inherit; opacity: 0; transition: opacity .24s ease; } body.page-Kuronata span.heimu[data-kkpt-glitch]::before { color: #ff385e; -webkit-text-fill-color: #ff385e; text-shadow: -2px 0 #ff385e; } body.page-Kuronata span.heimu[data-kkpt-glitch]::after { color: #6be9ff; -webkit-text-fill-color: #6be9ff; text-shadow: 2px 0 #6be9ff; } body.page-Kuronata span.heimu[data-kkpt-glitch]:is(:hover,:focus-visible,:focus-within)::before { opacity: .84; animation: kkpt-slice-a 570ms steps(1,end) infinite; } body.page-Kuronata span.heimu[data-kkpt-glitch]:is(:hover,:focus-visible,:focus-within)::after { opacity: .79; animation: kkpt-slice-b 490ms steps(1,end) infinite; } /* Always-on aftermath: a small number of GPU-composited smoke/ash sprites, without a second persistent requestAnimationFrame loop. */ body.page-Kuronata #kkpt-afterglow { position: fixed; inset: 0; z-index: 2147480950; overflow: hidden; pointer-events: none; user-select: none; contain: layout style paint; } body.page-Kuronata #kkpt-afterglow .kkpt-soot-cell, body.page-Kuronata #kkpt-afterglow .kkpt-ash-cell { position: absolute; display: block; pointer-events: none; will-change: transform, opacity; animation-delay: var(--delay); animation-duration: var(--duration); animation-iteration-count: infinite; animation-timing-function: linear; } body.page-Kuronata #kkpt-afterglow .kkpt-soot-cell { /* Wide, feathered side-banks built from asymmetric elliptical lobes. No border-radius or single radial disk: no floating grey circles. */ width: calc(var(--size) * 1.75); height: calc(var(--size) * .82); border-radius: 0; background: radial-gradient(ellipse 37% 53% at 12% 62%, rgba(128,124,137,.20) 0%, rgba(77,71,83,.15) 45%, transparent 100%), radial-gradient(ellipse 48% 60% at 42% 42%, rgba(113,111,128,.29) 0%, rgba(71,65,83,.17) 44%, transparent 100%), radial-gradient(ellipse 43% 58% at 79% 52%, rgba(139,99,109,.17) 0%, rgba(83,71,83,.12) 51%, transparent 100%), radial-gradient(ellipse 31% 45% at 57% 82%, rgba(103,95,108,.18) 0%, transparent 100%); opacity: 0; animation-name: kkpt-soot-rise; } body.page-Kuronata #kkpt-afterglow .kkpt-ash-cell { width: var(--size); height: calc(var(--size) * 2.6); border-radius: 50%; background: radial-gradient(ellipse, rgba(255,251,202,.87) 0%, rgba(248,98,28,.70) 28%, rgba(124,24,11,.32) 64%, transparent 83%); box-shadow: 0 0 5px rgba(238,61,19,.28); opacity: 0; animation-name: kkpt-ash-float; } @keyframes kkpt-soot-rise { 0% {opacity:0;transform:translate3d(0,45px,0) scale(.85,.76)} 24% {opacity:.76} 59% {opacity:.57} 83% {opacity:.32} 100% {opacity:0;transform:translate3d(var(--wind),-215px,0) scale(1.10,1.24)} } @keyframes kkpt-ash-float { 0% { opacity: 0; transform: translate3d(0,18px,0) rotate(0deg); } 18% { opacity: .78; } 65% { opacity: .56; } 100% { opacity: 0; transform: translate3d(var(--wind),-210px,0) rotate(92deg); } } html.kkpt-world-suspended body.page-Kuronata #kkpt-afterglow { visibility: hidden; } html.kkpt-frame-inactive body.page-Kuronata #kkpt-afterglow *, html.kkpt-world-suspended body.page-Kuronata #kkpt-afterglow * { animation-play-state: paused !important; } /* Infrequent, sharp spatial corruption: no full-screen strobe. Different text layers lurch by distinct offsets. */ html.kkpt-rift body.page-Kuronata #mw-content-text { animation: kkpt-rift-content 360ms steps(1,end) both !important; } html.kkpt-rift body.page-Kuronata :is(.mw-page-title-main,.mw-headline) { animation: kkpt-rift-heading 360ms steps(1,end) both !important; } html.kkpt-rift body.page-Kuronata #kkpt-afterglow::after { content: ""; position: absolute; left: 0; right: 0; top: var(--kkpt-rift-y,42%); height: 3px; opacity: .58; background: linear-gradient(90deg,transparent 0%,rgba(255,62,105,.35) 21%, rgba(111,220,255,.67) 49%,rgba(255,62,105,.22) 84%,transparent); box-shadow: 0 9px 0 rgba(13,3,11,.47),0 -7px 0 rgba(250,37,64,.17); transform: translateX(-9px); animation: kkpt-rift-scan 360ms steps(1,end) both; } @keyframes kkpt-rift-content { 0%,14%,100% { transform: translateX(0) skewX(0); text-shadow: none; } 15%,23% { transform: translateX(-6px) skewX(-.42deg); text-shadow: -3px 0 #ef2257,3px 0 #26b5c9; } 24%,38% { transform: translateX(4px) skewX(.22deg); text-shadow: 2px 0 #e62256,-2px 0 #54bbdf; } 39%,59% { transform: translateX(0); text-shadow: none; } 60%,68% { transform: translateX(7px) skewX(-.26deg); text-shadow: -3px 0 #ff2968,3px 0 #42aabf; } 69%,89% { transform: translateX(-2px); text-shadow: none; } } @keyframes kkpt-rift-heading { 0%,10%,100% { transform: translateX(0); text-shadow: none; } 11%,33% { transform: translateX(7px); text-shadow: -5px 0 #d82454,4px 0 #46c5df; } 34%,63% { transform: translateX(-4px); text-shadow: 4px 0 #d82454,-3px 0 #46c5df; } 64%,85% { transform: translateX(2px); text-shadow: none; } } @keyframes kkpt-rift-scan { 0%,100% { opacity: 0; transform: translateX(0); } 17%,25% { opacity: .62; transform: translateX(9px); } 49%,62% { opacity: .37; transform: translateX(-12px); } } @media (prefers-reduced-motion: reduce) { body.page-Kuronata #kkpt-afterglow, body.page-Kuronata span.heimu[data-kkpt-glitch]::before, body.page-Kuronata span.heimu[data-kkpt-glitch]::after { display: none !important; } html.kkpt-rift body.page-Kuronata #mw-content-text, html.kkpt-rift body.page-Kuronata :is(.mw-page-title-main,.mw-headline) { animation: none !important; } } @media print { #kkpt-afterglow { display: none !important; } } /* Scroll cost: the gear is now absolute, not a sticky glass layer. */ @media (max-width:760px) { .kkpt-fate-gear { backdrop-filter:none !important; -webkit-backdrop-filter:none !important; } } /* ============================================================= V19 — corrections made against the actual rendered Infobox HTML and multiline screenshot. No original page layout is rewritten. ============================================================= */ /* Actual Infobox caption: the gear is a real descendant, not a document-level follower. Caption sizing/text centering is unchanged. */ .infobox caption.kkpt-fate-host, .infobox th.kkpt-fate-host { position: relative !important; } .kkpt-fate-host > .kkpt-fate-gear { position: absolute !important; left: auto !important; right: 5px !important; top: 50% !important; transform: translateY(-50%) !important; } body.kkpt-other-active .kkpt-fate-gear { visibility: hidden !important; pointer-events: none !important; } /* A multiline inline span must not repeat its entire text at line 1. Instead render per-line chromatic slices from DOM Range metrics. */ body.page-Kuronata span.heimu[data-kkpt-multiline]::before, body.page-Kuronata span.heimu[data-kkpt-multiline]::after { display: none !important; content: none !important; } body.page-Kuronata .kkpt-heimu-fault { position: fixed; inset: 0; z-index: 2147480955; pointer-events: none; user-select: none; contain: layout style paint; opacity: 1; transition: opacity 190ms ease-out; } body.page-Kuronata .kkpt-heimu-fault.kkpt-fault-away { opacity: 0; } body.page-Kuronata .kkpt-heimu-fault-line { display: block; position: fixed; pointer-events: none; white-space: pre; color: transparent; overflow: visible; padding: 0; margin: 0; } body.page-Kuronata .kkpt-heimu-fault-line::before, body.page-Kuronata .kkpt-heimu-fault-line::after { content: attr(data-copy); position: absolute; top: 0; left: 0; white-space: pre; display: block; font: inherit; line-height: inherit; letter-spacing: inherit; pointer-events: none; } body.page-Kuronata .kkpt-heimu-fault-line::before { color: #ff3967; -webkit-text-fill-color: #ff3967; text-shadow: -2px 0 rgba(255,37,69,.85); animation: kkpt-slice-a 610ms steps(1,end) infinite; } body.page-Kuronata .kkpt-heimu-fault-line::after { color: #73ebff; -webkit-text-fill-color: #73ebff; text-shadow: 2px 0 rgba(43,196,255,.8); animation: kkpt-slice-b 490ms steps(1,end) infinite; } /* The afterglow must be a visible, restrained foreground film. This is above Citizen's article glass but behind the live iframe. */ body.page-Kuronata #kkpt-afterglow .kkpt-soot-cell { opacity: 0; } @media (max-width:760px) { /* Mobile: avoid expensive glow/blur composite work. */ body.page-Kuronata #kkpt-afterglow .kkpt-soot-cell { box-shadow: none !important; filter: none !important; } } @media (prefers-reduced-motion: reduce) { body.page-Kuronata .kkpt-heimu-fault { display: none !important; } } /* =========================================================== V20 · Fate wheel / fog banks / Kuronata hyperlink faults =========================================================== */ /* Inline beside the first-line Infobox TITLE, not on the far right of the table. Also works beside the article heading as fallback. */ .kkpt-fate-host > a.kkpt-fate-gear { display: inline-grid !important; position: relative !important; left: auto !important; right: auto !important; top: auto !important; bottom: auto !important; vertical-align: middle !important; transform: translateY(-2px) !important; width: 31px !important; height: 31px !important; padding: 5px !important; margin: 0 0 0 8px !important; flex: none !important; float: none !important; line-height: 1 !important; border-color: rgba(255,255,255,.45); } .kkpt-fate-host > a.kkpt-fate-gear::before { content: ''; position: absolute; inset: -6px; border-radius: 50%; pointer-events: none; background: conic-gradient( from 12deg, transparent 0deg 27deg, var(--kkpt-gear-ink) 29deg 36deg, transparent 39deg 110deg, var(--kkpt-gear-ink) 115deg 122deg, transparent 126deg 210deg, var(--kkpt-gear-ink) 213deg 221deg, transparent 226deg 320deg, var(--kkpt-gear-ink) 323deg 332deg, transparent 337deg 360deg); -webkit-mask: radial-gradient(circle, transparent 56%, #000 62%, #000 65%, transparent 74%); mask: radial-gradient(circle, transparent 56%, #000 62%, #000 65%, transparent 74%); opacity: .34; animation: kkpt-destiny-orbit 9s linear infinite; } .kkpt-fate-host > a.kkpt-fate-gear:is(:hover,:focus-visible)::before { opacity: .88; animation-duration: 2.4s; } .kkpt-fate-host > a.kkpt-fate-gear.kkpt-fate-gear-turning::before { opacity: 1; animation-duration: .65s; } .kkpt-fate-host > a.kkpt-fate-gear.kkpt-fate-gear-turning { animation: kkpt-destiny-awaken 1.5s ease-out; } .kkpt-fate-host > a.kkpt-fate-gear .kkpt-fate-gear-svg { filter: drop-shadow(0 0 5px var(--kkpt-gear-halo)); } @keyframes kkpt-destiny-orbit { to {transform:rotate(360deg)} } @keyframes kkpt-destiny-awaken { 0%,100% {box-shadow:0 0 11px var(--kkpt-gear-halo)} 21% {box-shadow:0 0 13px 4px var(--kkpt-gear-halo),0 0 32px 9px var(--kkpt-gear-halo)} 48% {box-shadow:0 0 18px 2px var(--kkpt-gear-halo)} } /* Every text link in the darker world has an unstable signal. Ordinary links jitter subtly; the way back to Kuranoka tears apart harder. The original link palette is preserved. */ body.page-Kuronata #mw-content-text a.kkpt-link-glitch { position: relative; transition: text-shadow .15s ease-out; } body.page-Kuronata #mw-content-text a.kkpt-link-glitch:is(:hover,:focus-visible) { animation: kkpt-link-interference 580ms steps(1,end) infinite; } body.page-Kuronata #mw-content-text a.kkpt-link-origin:is(:hover,:focus-visible) { animation: kkpt-link-origin-tear 420ms steps(1,end) infinite; } @keyframes kkpt-link-interference { 0%,14%,47%,75%,100% {left:0;text-shadow:none} 15%,24% {left:-1px;text-shadow:-2px 0 #ff4369,2px 0 #71c9e9} 25%,46% {left:1px;text-shadow:1px 0 #ff4369,-2px 0 #71c9e9} 48%,55% {left:2px;text-shadow:-2px 0 #ff4369,2px 0 #71c9e9} 56%,74% {left:0;text-shadow:0 0 3px rgba(240,56,83,.55)} 76%,82% {left:-2px;text-shadow:2px 0 #ff4369,-2px 0 #71c9e9} } @keyframes kkpt-link-origin-tear { 0%,12%,42%,70%,100% {left:0;text-shadow:0 0 3px rgba(249,43,73,.25)} 13%,23% {left:-4px;text-shadow:-5px 0 #ff1457,5px 0 #1fd8ff} 24%,41% {left:3px;text-shadow:5px 0 #ff3069,-4px 0 #45e8ff} 43%,51% {left:-2px;text-shadow:-4px 0 #ff3e55,6px 0 #47a5ee} 52%,69% {left:4px;text-shadow:3px 0 #ff174e,-6px 0 #49ddff} 71%,80% {left:-3px;text-shadow:-6px 0 #ff174e,4px 0 #49ddff} } body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link) { isolation: isolate; } body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link)::before, body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link)::after { content: attr(data-kkpt-link-copy); position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; white-space: nowrap; overflow: hidden; pointer-events: none; user-select: none; font: inherit; letter-spacing: inherit; opacity: 0; } body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link)::before { color: #ff315f; -webkit-text-fill-color: #ff315f; } body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link)::after { color: #68e8ff; -webkit-text-fill-color: #68e8ff; } body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link):is(:hover,:focus-visible)::before { opacity: .95; animation: kkpt-slice-a 360ms steps(1,end) infinite; } body.page-Kuronata #mw-content-text a.kkpt-link-origin[data-kkpt-link-copy]:not(.kkpt-portal-link):is(:hover,:focus-visible)::after { opacity: .89; animation: kkpt-slice-b 310ms steps(1,end) infinite; } @media (prefers-reduced-motion: reduce) { body.page-Kuronata #mw-content-text a.kkpt-link-glitch:is(:hover,:focus-visible), .kkpt-fate-host > a.kkpt-fate-gear::before, .kkpt-fate-host > a.kkpt-fate-gear.kkpt-fate-gear-turning { animation: none !important; } } /* ============================================================== V21 — Title stays centered; pearl-toned fate gear floats next to the FIRST title line without affecting any text flow. Only wheel placement/appearance changes. Other FX untouched. ============================================================== */ .kkpt-fate-host { position: relative !important; } .kkpt-fate-host > a.kkpt-fate-gear { display: grid !important; position: absolute !important; left: var(--kkpt-gear-left, calc(50% + 75px)) !important; top: var(--kkpt-gear-top, 17px) !important; right: auto !important; bottom: auto !important; transform: translateY(-50%) !important; margin: 0 !important; float: none !important; vertical-align: baseline !important; width: 27px !important; height: 27px !important; padding: 4px !important; --kkpt-gear-ink: rgba(248, 253, 255, .87); --kkpt-gear-halo: rgba(220, 241, 250, .18); background: rgba(243, 253, 255, .055) !important; color: var(--kkpt-gear-ink) !important; border-color: rgba(250, 255, 255, .26) !important; box-shadow: inset 0 0 5px rgba(255,255,255,.06), 0 0 7px rgba(216,240,250,.08); backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } .kkpt-fate-host > a.kkpt-fate-gear::before { opacity: .15; } .kkpt-fate-host > a.kkpt-fate-gear:is(:hover,:focus-visible) { background: rgba(240, 253, 255, .15) !important; border-color: rgba(255, 255, 255, .62) !important; box-shadow: 0 0 13px var(--kkpt-gear-halo); } .kkpt-fate-host > a.kkpt-fate-gear:is(:hover,:focus-visible)::before { opacity: .75; } .kkpt-fate-host > a.kkpt-fate-gear .kkpt-fate-gear-svg { filter: drop-shadow(0 0 2px var(--kkpt-gear-halo)); } .kkpt-fate-host > a.kkpt-fate-gear .kkpt-fate-gear-svg circle:first-of-type { fill: rgba(176, 212, 228, .14) !important; stroke: var(--kkpt-gear-ink); } body.page-Kuronata .kkpt-fate-host > a.kkpt-fate-gear { --kkpt-gear-ink: rgba(255, 233, 239, .84); --kkpt-gear-halo: rgba(255, 201, 213, .20); background: rgba(255, 231, 237, .05) !important; border-color: rgba(255, 221, 230, .22) !important; }
返回
MediaWiki:KuranokaPageTransition.css
。
查看“︁MediaWiki:KuranokaPageTransition.css”︁的源代码
MediaWiki界面页面