<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://kawala.in/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kawalain</id>
	<title>Kawa - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://kawala.in/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kawalain"/>
	<link rel="alternate" type="text/html" href="https://kawala.in/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/Kawalain"/>
	<updated>2026-06-11T00:47:30Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A42&amp;diff=247</id>
		<title>사용자:Kawalain/샌드박스2</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A42&amp;diff=247"/>
		<updated>2026-05-29T01:24:22Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;대나무 숲의 물고기 비행 현상&#039;&#039;&#039;(영어: Flying Fish in Bamboo Forest Phenomenon, 학명: &#039;&#039;Volatus piscium in bambusetum&#039;&#039;)은 전라남도 담양 일대의 고밀도 대나무 군락지 및 아시아 일부 아열대 죽림 지대에서 가을철 환절기에 제한적으로 관찰되는 특이 기상 및 생물학적 복합 현상입니다. &lt;br /&gt;
&lt;br /&gt;
이 현상은 민물고기 일부 어종이 공기 중의 특정 유체역학적 흐름과 대나무 고유의 정전기적 인력에 이끌려, 지상 5미터에서 25미터 높이의 대나무 캐노피(Canopy) 층 사이를 활공하는 형태로 나타납니다. 오랜 기간 동안 지역적인 민담이나 착시 현상으로 치부되었으나, 최근의 가상 유체역학 및 대기생물학 연구를 통해 그 독특한 메커니즘이 규명되기 시작했습니다.&lt;br /&gt;
&lt;br /&gt;
== 발생 메커니즘 ==&lt;br /&gt;
대나무 숲 내에서 물고기가 추진력을 얻고 공중을 비행하는 과정은 물리적 요인과 생물학적 요인의 긴밀한 상호작용으로 설명됩니다.&lt;br /&gt;
&lt;br /&gt;
=== 유체역학적 양력 형성 ===&lt;br /&gt;
대나무 숲은 빽빽하게 들어선 줄기(간엽)들로 인해 외부의 강한 바람이 내부로 유입될 때 독특한 벤투리 효과(Venturi Effect)를 발생시킵니다.&lt;br /&gt;
# &#039;&#039;&#039;수직 상승 기류의 발생:&#039;&#039;&#039; 낮 동안 달구어진 죽림 하부의 토양과 상대적으로 차가운 대나무 상부 잎사귀 사이의 온도차로 인해 초속 3~5m의 안정적인 수직 상승기류가 형성됩니다.&lt;br /&gt;
# &#039;&#039;&#039;대나무 잎의 정렬:&#039;&#039;&#039; 가을철 미풍에 의해 대나무 잎들이 일정한 각도로 눕게 되면, 숲 전체가 하나의 거대한 비행기 날개와 같은 양력 발생 구조를 갖추게 됩니다.&lt;br /&gt;
&lt;br /&gt;
=== 죽림 정전기 인력 이론 ===&lt;br /&gt;
대나무 줄기가 서로 마찰할 때 발생하는 고주파 진동과 마찰 전기는 공기 중의 수증기를 이온화합니다. 이로 인해 대나무 상층부에는 강력한 음전하 층이 형성되며, 인근 수계에서 도약한 물고기의 표피 양전하와 상호 작용하여 중력을 일시적으로 상쇄하는 효과를 낳는 것으로 추정됩니다.&lt;br /&gt;
&lt;br /&gt;
== 역사적 문헌 기록 ==&lt;br /&gt;
이 현상은 현대 과학의 관측 이전에도 여러 고문서와 민간 전승을 통해 꾸준히 기록되어 왔습니다.&lt;br /&gt;
&lt;br /&gt;
=== 고려 및 조선 시대의 기록 ===&lt;br /&gt;
실제 역사적 인물의 문집을 모방한 가상의 고문서인 《죽림잡록(竹林雜錄)》(1452)에 따르면, 당시 담양 부사로 부임했던 인물이 조정에 올린 장계에 다음과 같은 구절이 존재합니다.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;quot;올해 가을은 유독 비가 잦고 바람이 서늘한데, 밤마다 대나무 숲 위로 은빛 비늘을 가진 물고기들이 수십 마리씩 무리를 지어 날아다녔나이다. 그것들이 달빛을 받아 반짝이는 모습이 흡사 하늘의 은하수가 땅으로 내려온 듯하여, 백성들이 이를 신령한 징조로 여겨 제를 지냈나이다.&amp;quot;&lt;br /&gt;
&amp;lt;cite&amp;gt;— 《조선왕조가상실록》 세종 백기 13권&amp;lt;/cite&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 민간 설화와의 연관성 ===&lt;br /&gt;
전라남도 지역의 구전 민담에 등장하는 &#039;대나무 귀신 물고기&#039; 전설은 이 현상을 목격한 옛사람들이 가공해낸 이야기로 해석됩니다. 밤중에 대나무 숲을 지나갈 때 머리 위에서 물방울이 떨어지거나 파닥거리는 소리가 나는 것은 실제 귀신의 소행이 아니라, 활공 중인 붕어나 잉어가 흘린 체액과 지느러미의 진동음이라는 것이 현대 민속학자들의 공통된 견해입니다.&lt;br /&gt;
&lt;br /&gt;
== 비행 형태 및 어종별 분류 ==&lt;br /&gt;
모든 민물고기가 대나무 숲을 날 수 있는 것은 아니며, 신체 구조와 표피의 점막 성분에 따라 비행 거리와 고도가 엄격히 제한됩니다.&lt;br /&gt;
&lt;br /&gt;
; 붕어형 직선 활공(Carassius Type)&lt;br /&gt;
: 가장 보편적인 형태로, 주로 몸길이 15cm 내외의 붕어류가 중심이 됩니다. 대나무 줄기 사이를 최단 거리로 직선 비행하며, 평균 비행 지속 시간은 4.5초 안팎입니다.&lt;br /&gt;
; 미꾸라지형 나선 상승(Misgurnus Type)&lt;br /&gt;
: 신체가 가늘고 유연한 미꾸라지류는 대나무 주위를 감싸 안듯 나선형으로 회오리치며 상승하는 독특한 궤적을 보입니다. 기류가 불안정한 정오 무렵에 주로 관찰됩니다.&lt;br /&gt;
; 은어형 고고도 이행(Plecoglossus Type)&lt;br /&gt;
: 강한 도약력을 가진 은어들은 대나무 숲의 최상층부(지상 20미터 이상)까지 단숨에 뛰어오른 뒤, 바람을 타고 옆 동네의 다른 대나무 숲으로 장거리 이동을 감행하는 가장 장엄한 형태입니다.&lt;br /&gt;
&lt;br /&gt;
== 환경적 요구 조건 ==&lt;br /&gt;
대나무 숲의 물고기 비행 현상이 발현되기 위해서는 기상, 지질, 생물학적 조건이 완벽한 균형을 이루어야 합니다. 아래의 표는 현상 발생 가능성이 가장 높은 최적의 환경 데이터를 요약한 것입니다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%;&amp;quot;&lt;br /&gt;
|+ 물고기 비행 현상 발생 최적 환경 변수&lt;br /&gt;
|-&lt;br /&gt;
! 분류 항목 !! 최적 범위 !! 필수 조건 !! 영향 수치 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;대기 습도&#039;&#039;&#039; || 85% ~ 95% || 안개 또는 이슬비 || 표피 건조 방지 || 습도가 낮으면 비행 중 추락 위험 증가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;풍속 및 풍향&#039;&#039;&#039; || 4.0 ~ 6.5 m/s (북서풍) || 지속적인 미풍 || 양력 유지 강도 || 강풍 발생 시 대나무 파손으로 현상 중단&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;대나무 밀도&#039;&#039;&#039; || 평방미터당 4~6주 || 왕대 및 맹종죽 군락 || 정전기 발생량 || 밀도가 너무 높으면 물리적 충돌 발생&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;인근 수계 거리&#039;&#039;&#039; || 죽림 가장자리 기준 50m 이내 || 유속이 완만한 소(沼) || 초기 진입 어종 수 || 공급 수계의 수질이 상급일수록 활발함&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 조사 및 관측 통계 ==&lt;br /&gt;
지난 수년간 가상의 관측소인 &#039;담양죽림생태연구소&#039;에서 장비를 통해 기록한 연도별 비행 횟수와 어종별 분포 데이터는 이 현상이 특정 기후 변화 주기를 따르고 있음을 보여줍니다.&lt;br /&gt;
&lt;br /&gt;
=== 연도별 관측 추이 ===&lt;br /&gt;
# &#039;&#039;&#039;2021년 관측 기록:&#039;&#039;&#039; 전체 발생 횟수 42회. 예년에 비해 가뭄이 길어져 발생 빈도가 다소 낮았음.&lt;br /&gt;
# &#039;&#039;&#039;2022년 관측 기록:&#039;&#039;&#039; 전체 발생 횟수 118회. 가을철 적절한 강수량과 북서풍의 영향으로 대규모 군집 비행이 3회 이상 포착됨.&lt;br /&gt;
# &#039;&#039;&#039;2023년 관측 기록:&#039;&#039;&#039; 전체 발생 횟수 245회. 태풍 통과 직후 형성된 특이 기류로 인해 관측 이래 최고 고도(28.4m) 관측.&lt;br /&gt;
# &#039;&#039;&#039;2024년 관측 기록:&#039;&#039;&#039; 전체 발생 횟수 160회. 미꾸라지형 나선 상승 비행의 비율이 예년 대비 40% 이상 증가하는 특이 양상을 보임.&lt;br /&gt;
&lt;br /&gt;
=== 월별 발생 빈도 시각화 ===&lt;br /&gt;
통계적으로 현상은 9월 중순에 시작되어 10월 말에 정점을 찍고, 기온이 급격히 떨어지는 11월 중순을 기점으로 완전히 소멸합니다. 이는 대나무의 수액 이동 시기와 물고기의 동면 준비 기간과 일치합니다.&lt;br /&gt;
&lt;br /&gt;
== 학계의 주요 논쟁 ==&lt;br /&gt;
현재 이 현상을 둘러싸고 세계 학계(가상 학계)에서는 두 가지 상반된 이론이 팽팽하게 대립하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
=== 기상학적 착시 및 환각론 ===&lt;br /&gt;
일부 보수적인 대기과학자들은 이를 실제 물고기의 비행이 아닌, 대나무 숲에서 뿜어져 나오는 유기 화합물(피톤치드 및 특정 테르펜류)의 과다 흡입으로 인한 목격자들의 집단적 착시 현상이라고 주장합니다. 대나무 잎에 반사된 햇빛이나 달빛이 바람에 흔들릴 때, 마치 물고기가 날아다니는 것처럼 뇌가 오인한다는 이론입니다.&lt;br /&gt;
&lt;br /&gt;
=== 생물학적 실제 비행론 ===&lt;br /&gt;
반면 현장 조사 중심의 생물학자들은 대나무 가지 사이에 잔존하는 물고기 비늘과 점액질 성분의 DNA 분석 결과를 토대로 실제 비행론을 고수하고 있습니다. 이들은 다음과 같은 물리적 증거를 제시합니다.&lt;br /&gt;
* 대나무 지상 15미터 높이의 가지에서 발견된 민물고기 고유의 특이 점막 흔적&lt;br /&gt;
* 비행 현상 직후 수거된 물고기들의 부레 팽창률이 일반 물고기보다 1.5배 이상 높다는 점&lt;br /&gt;
* 초고속 카메라에 포착된 지느러미의 분당 양력 운동 횟수(약 1,200회)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 생태계에 미치는 영향 ==&lt;br /&gt;
물고기 비행 현상은 담양 지역 죽림 생태계의 먹이사슬 구조에 일시적이지만 중대한 변화를 몰려옵니다.&lt;br /&gt;
&lt;br /&gt;
=== 상공 포식자의 이동 패턴 변화 ===&lt;br /&gt;
평소 강가나 저수지 주변에서 활동하던 왜가리, 백로, 매 등의 조류들이 이 시기가 되면 대나무 숲 상공으로 대거 이동합니다. 나무 꼭대기에 앉아 기다리기만 해도 공중으로 날아오르는 물고기를 쉽게 포획할 수 있기 때문에, 이 시기의 조류 포식률은 평월 대비 300% 이상 급증하는 것으로 조사되었습니다.&lt;br /&gt;
&lt;br /&gt;
=== 토양 영양분 공급의 선순환 ===&lt;br /&gt;
모든 물고기가 활공에 성공하여 수계로 돌아가는 것은 아닙니다. 비행 도중 대나무 가지에 걸리거나 양력을 잃고 바닥으로 추락한 물고기들은 대나무 숲 토양의 훌륭한 천연 유기질 비료가 됩니다. 담양의 대나무가 다른 지역에 비해 유독 푸르고 단단한 이유는 이 가을철 물고기 비행 현상 환경을 통해 공급되는 유기 원소 덕분이라는 설이 지지를 얻고 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[대나무]] - 현상의 주 무대가 되는 외떡잎식물 벼과의 나무 모양 상록성 다년초입니다.&lt;br /&gt;
* [[민물고기]] - 담수 수계에 서식하며 비행 현상의 주체가 되는 어류 유형입니다.&lt;br /&gt;
* [[양력]] - 유체의 흐름 속에서 물체가 수직 방향으로 받는 힘의 원리입니다.&lt;br /&gt;
* [[착시]] - 시각적인 착각으로 인해 사물을 실제와 다르게 인지하는 현상입니다.&lt;br /&gt;
&lt;br /&gt;
== 외부 링크 ==&lt;br /&gt;
* [https://www.damyang.go.kr 담양군청 공식 홈페이지 - 지역 생태 정보]&lt;br /&gt;
* [https://www.weather.go.kr 대한민국 기상청 - 환절기 죽림 특이 기류 분석]&lt;br /&gt;
* [http://example.com/bamboo-fish-study 가상 대기생물학회 온라인 저널 전문]&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=246</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=246"/>
		<updated>2026-05-28T06:20:42Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
:root.gadget-cu:not(.skin-theme-clientpref-day) {&lt;br /&gt;
	--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
	--background-color-neutral-subtle: #080808;&lt;br /&gt;
	--background-color-interactive: #555;&lt;br /&gt;
	--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
	--color-base: #fff;&lt;br /&gt;
	--color-inverted: #000;&lt;br /&gt;
	--color-inverted-fixed: #000;&lt;br /&gt;
	--color-emphasized: #ff0;&lt;br /&gt;
	--color-progressive: #ff0;&lt;br /&gt;
	--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
	--border-color-base: #444;&lt;br /&gt;
	--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
	body {&lt;br /&gt;
		/* TODO: CHANGE ME */&lt;br /&gt;
		background: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
		background-size: cover;&lt;br /&gt;
		background-position: center;&lt;br /&gt;
		background-attachment: fixed;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.vector-header {&lt;br /&gt;
		background: linear-gradient(&lt;br /&gt;
			to top,&lt;br /&gt;
			var(--border-color-base),&lt;br /&gt;
			var(--background-color-neutral-subtle)&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-logo-container {&lt;br /&gt;
		filter: initial !important;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-dropdown-content {&lt;br /&gt;
		backdrop-filter: blur(10px);&lt;br /&gt;
		border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.vector-sticky-pinned-container::after {&lt;br /&gt;
		background: initial;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4&amp;diff=245</id>
		<title>사용자:Kawalain/샌드박스</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4&amp;diff=245"/>
		<updated>2026-05-28T06:17:20Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
{{fullurl:MediaWiki:Gadget-CU.js|action=edit}}&lt;br /&gt;
title = Javascript&lt;br /&gt;
icon = {{#fab:square-js}}&lt;br /&gt;
&lt;br /&gt;
{{fullurl:MediaWiki:Gadget-CU.css|action=edit}}&lt;br /&gt;
title = Stylesheet&lt;br /&gt;
icon = {{#fab:css}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== [[틀:CU/Item|아이템 툴팁]] ===&lt;br /&gt;
&lt;br /&gt;
==== [[CU/data/6.1/EN.json|영어]] ====&lt;br /&gt;
* {{CU/Item|id=armwarmers}}&lt;br /&gt;
* {{CU/Item|id=bellyarmor}}&lt;br /&gt;
* {{CU/Item|id=grapplinghook}}&lt;br /&gt;
* {{CU/Item|id=waterbottle}}&lt;br /&gt;
&lt;br /&gt;
==== [[CU/data/6.1/ko-KR.json|한국어]] ====&lt;br /&gt;
* {{CU/Item|lang=ko-KR|id=medicalsuture}}&lt;br /&gt;
* {{CU/Item|lang=ko-KR|id=shovel}}&lt;br /&gt;
* {{CU/Item&lt;br /&gt;
|lang=ko-KR&lt;br /&gt;
|id=minibarrel&lt;br /&gt;
|liquids=&lt;br /&gt;
  highgradestimulant,110;&lt;br /&gt;
  urine,230;alcohol,24;&lt;br /&gt;
  fentanyl,4550&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
public class Language&lt;br /&gt;
{&lt;br /&gt;
    // Token: 0x060002E6 RID: 742 RVA: 0x0002C128 File Offset: 0x0002A328&lt;br /&gt;
    public Language()&lt;br /&gt;
    {&lt;br /&gt;
        this.main = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.buildings = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.moodles = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.other = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.character = new Dictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;[]&lt;br /&gt;
        {&lt;br /&gt;
            new Dictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;()&lt;br /&gt;
        };&lt;br /&gt;
        this.notes = new List&amp;lt;ValueTuple&amp;lt;string, string, string&amp;gt;&amp;gt;[0];&lt;br /&gt;
        this.pdaNotes = new List&amp;lt;ValueTuple&amp;lt;string, string&amp;gt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{CU}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=244</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=244"/>
		<updated>2026-05-28T06:08:16Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-dark.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: CHANGE ME */&lt;br /&gt;
			background: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: linear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-sticky-pinned-container::after {&lt;br /&gt;
			background: initial;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=243</id>
		<title>미디어위키:Gadget-CU.js</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=243"/>
		<updated>2026-05-27T15:14:48Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;const MW_BASE_URL = globalThis.MW_BASE_URL || &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
async function fetchJSON(title) {&lt;br /&gt;
	const response = await fetch(&lt;br /&gt;
		`${MW_BASE_URL}/rest.php/v1/page/${encodeURIComponent(title)}`,&lt;br /&gt;
	)&lt;br /&gt;
	if (!response.ok) {&lt;br /&gt;
		throw new Error(`Fetch failed with ${response.status}`)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	const payload = await response.json()&lt;br /&gt;
	payload.source = JSON.parse(payload.source)&lt;br /&gt;
	return payload&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchCache(title) {&lt;br /&gt;
	if (!sessionStorage.getItem(title)) {&lt;br /&gt;
		await navigator.locks.request(title, async (lock) =&amp;gt; {&lt;br /&gt;
			const payload = await fetchJSON(title)&lt;br /&gt;
			sessionStorage.setItem(title, JSON.stringify(payload))&lt;br /&gt;
		})&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	try {&lt;br /&gt;
		return JSON.parse(sessionStorage.getItem(title))&lt;br /&gt;
	} catch (e) {&lt;br /&gt;
		sessionStorage.removeItem(title)&lt;br /&gt;
		throw e&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchData(ver, lang) {&lt;br /&gt;
	const prefix = `CU/data/${ver}`&lt;br /&gt;
	const promises = {&lt;br /&gt;
		locale: `${prefix}/${lang}.json`,&lt;br /&gt;
		items: `${prefix}/items.json`,&lt;br /&gt;
		liquids: `${prefix}/liquids.json`,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return Object.fromEntries(&lt;br /&gt;
		await Promise.all(&lt;br /&gt;
			Object.entries(promises).map(async ([k, v]) =&amp;gt; [k, await fetchCache(v)]),&lt;br /&gt;
		),&lt;br /&gt;
	)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const locale = {&lt;br /&gt;
	get: (key, lang = null) =&amp;gt; {&lt;br /&gt;
		const targetLocale =&lt;br /&gt;
			(lang ? locale[lang] : locale[document.documentElement.lang]) || locale.en&lt;br /&gt;
&lt;br /&gt;
		return targetLocale[key] || key&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	en: {&lt;br /&gt;
		toggleRetroFont: &#039;Toggle Retro Font&#039;,&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ko: {&lt;br /&gt;
		toggleRetroFont: &#039;레트로 글꼴 전환&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @type {Object&amp;lt;string, () =&amp;gt; void&amp;gt;}&lt;br /&gt;
 */&lt;br /&gt;
const scripts = {&lt;br /&gt;
	NoRetroFonts: () =&amp;gt; {&lt;br /&gt;
		const dataKey = &#039;noRetroFont&#039;&lt;br /&gt;
		let dataValue = localStorage.getItem(dataKey) == &#039;true&#039;&lt;br /&gt;
&lt;br /&gt;
		const apply = () =&amp;gt; {&lt;br /&gt;
			delete document.documentElement.dataset[dataKey]&lt;br /&gt;
			if (dataValue) {&lt;br /&gt;
				document.documentElement.dataset[dataKey] = &#039;&#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// 네비게이션 요소&lt;br /&gt;
		$(&#039;#p-navigation ul&#039;).append(&lt;br /&gt;
			$(&#039;&amp;lt;li id=&amp;quot;n-noRetroFont&amp;quot; class=&amp;quot;mw-list-item&amp;quot;&amp;gt;&#039;).append(&lt;br /&gt;
				$(&#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.text(locale.get(&#039;toggleRetroFont&#039;))&lt;br /&gt;
					.on(&#039;click&#039;, (e) =&amp;gt; {&lt;br /&gt;
						e.preventDefault()&lt;br /&gt;
						dataValue = !dataValue&lt;br /&gt;
						localStorage.setItem(dataKey, dataValue)&lt;br /&gt;
						apply()&lt;br /&gt;
					}),&lt;br /&gt;
			),&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		apply()&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Tooltip: () =&amp;gt; {&lt;br /&gt;
		const $body = $(&#039;body&#039;)&lt;br /&gt;
		let $tooltip = null&lt;br /&gt;
		let $target = null&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		async function onPointerEnter(e) {&lt;br /&gt;
			const $currentTarget = $(this)&lt;br /&gt;
			const id = $currentTarget.data(&#039;cui&#039;)&lt;br /&gt;
			if (!id || $currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const ver = $currentTarget.data(&#039;cuiVer&#039;) || &#039;6.1&#039;&lt;br /&gt;
			const lang = $currentTarget.data(&#039;cuiLang&#039;) || &#039;EN&#039;&lt;br /&gt;
			const rawLiquids = $currentTarget.data(&#039;cuiLiquids&#039;)&lt;br /&gt;
			const containedLiquids = rawLiquids&lt;br /&gt;
				? rawLiquids.split(&#039;;&#039;).map((v) =&amp;gt; v.split(&#039;,&#039;).map((s) =&amp;gt; s.trim()))&lt;br /&gt;
				: []&lt;br /&gt;
&lt;br /&gt;
			const { locale, items, liquids } = await fetchData(ver, lang)&lt;br /&gt;
&lt;br /&gt;
			// 타겟 요소가 바뀌었으면 넘어가기&lt;br /&gt;
			if (!$currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const item = items.source[id]&lt;br /&gt;
&lt;br /&gt;
			let itemValue = item.value&lt;br /&gt;
			let itemActuallyUsableOnLimb = item.usableOnLimb&lt;br /&gt;
&lt;br /&gt;
			const headTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id] || id),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const footTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const liquidTags = containedLiquids.map(([id, amount]) =&amp;gt; {&lt;br /&gt;
				const liquid = liquids.source[id]&lt;br /&gt;
				if (!liquid) {&lt;br /&gt;
					return&lt;br /&gt;
				} &lt;br /&gt;
&lt;br /&gt;
				itemValue += liquid.valuePerLiter * (amount / 1000)&lt;br /&gt;
				if (liquid.healthUsable) {&lt;br /&gt;
					itemActuallyUsableOnLimb = true&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				return $(&#039;&amp;lt;section class=&amp;quot;cu-liquid&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.css(&lt;br /&gt;
						&#039;color&#039;,&lt;br /&gt;
						`color(srgb ${liquid.color.r} ${liquid.color.g} ${liquid.color.b})`,&lt;br /&gt;
					)&lt;br /&gt;
					.append(&lt;br /&gt;
						$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(&lt;br /&gt;
							`${locale.source.other[liquid.localeName]} (${amount}ml)`,&lt;br /&gt;
						),&lt;br /&gt;
						$(&#039;&amp;lt;p&amp;gt;&#039;).text(locale.source.other[liquid.localeName + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
					)&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			const usableTags = []&lt;br /&gt;
&lt;br /&gt;
			// 액체가 들어있을 수 있는 경우&lt;br /&gt;
			if (item.capacity &amp;gt; 0) {&lt;br /&gt;
				footTags.push($(&#039;&amp;lt;section class=&amp;quot;cu-liquids&amp;quot;&amp;gt;&#039;).append(liquidTags))&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 무게가 있는 경우&lt;br /&gt;
			if (item.weight &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-0&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.weight}: ${item.weight || 0}u`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 손으로만 들 수 있는 경우&lt;br /&gt;
			if (item.onlyHoldInHands) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#ff8787&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemonlyinhands),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (item.usable) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#a6ffaa&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(&lt;br /&gt;
							item.usableWithLMB&lt;br /&gt;
								? locale.source.other.itemusablehand&lt;br /&gt;
								: locale.source.other.itemusableinventory,&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사지에 사용할 수 있는 경우&lt;br /&gt;
			if (itemActuallyUsableOnLimb) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#fffb91&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-12&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusablewound),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (usableTags.length &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#a3a3a3&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-11&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusable)&lt;br /&gt;
						.append(&lt;br /&gt;
							usableTags.reduce(&lt;br /&gt;
								(p, c) =&amp;gt; (p.length &amp;gt; 0 ? [...p, &#039;/&#039;, c] : [c]),&lt;br /&gt;
								[],&lt;br /&gt;
							),&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 가치가 있는 경우&lt;br /&gt;
			if (itemValue &amp;gt; 0) {&lt;br /&gt;
				const displayItemValue = Math.round(Math.min(itemValue, 50))&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#f6ff73&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-9&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.itemvalue}${displayItemValue}`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$tooltip = $(&#039;&amp;lt;div class=&amp;quot;cu-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(headTags))&lt;br /&gt;
				.append(&#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(footTags))&lt;br /&gt;
&lt;br /&gt;
			if (e.shiftKey) {&lt;br /&gt;
				$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$body.append($tooltip)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerLeave(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.remove()&lt;br /&gt;
				$tooltip = null&lt;br /&gt;
				$target = null&lt;br /&gt;
			}&lt;br /&gt;
			$target = null&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerMove(e) {&lt;br /&gt;
			if (!$tooltip || !$target) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			const event = e.type.includes(&#039;touch&#039;) ? e.originalEvent.touches[0] : e&lt;br /&gt;
			const gap = parseInt($tooltip.data(&#039;cuiGap&#039;), 10) || 14&lt;br /&gt;
			const x = event.clientX + gap&lt;br /&gt;
			const y = event.clientY + gap&lt;br /&gt;
&lt;br /&gt;
			requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
				if ($tooltip) {&lt;br /&gt;
					$tooltip.css({&lt;br /&gt;
						left: `${Math.max(0, Math.min(x, window.innerWidth - $tooltip.outerWidth(true)))}px`,&lt;br /&gt;
						top: `${Math.max(0, Math.min(y, window.innerHeight - $tooltip.outerHeight(true)))}px`,&lt;br /&gt;
					})&lt;br /&gt;
				}&lt;br /&gt;
			})&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {KeyboardEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onKey(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.removeAttr(&#039;open&#039;)&lt;br /&gt;
				if (e.shiftKey) {&lt;br /&gt;
					$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$(&#039;[data-cui]&#039;)&lt;br /&gt;
			.on(&#039;pointerenter&#039;, onPointerEnter)&lt;br /&gt;
			.on(&#039;pointerleave&#039;, onPointerLeave)&lt;br /&gt;
			.on(&#039;pointermove&#039;, onPointerMove)&lt;br /&gt;
		$(&#039;body&#039;).on(&#039;keyup keydown&#039;, onKey)&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setup() {&lt;br /&gt;
	$(&#039;html&#039;).addClass(&#039;gadget-cu&#039;)&lt;br /&gt;
&lt;br /&gt;
	for (const [name, func] of Object.entries(scripts)) {&lt;br /&gt;
		try {&lt;br /&gt;
			func(name)&lt;br /&gt;
		} catch (e) {&lt;br /&gt;
			console.error(name, e)&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (globalThis.mw) {&lt;br /&gt;
	mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;], () =&amp;gt; {&lt;br /&gt;
		$(() =&amp;gt; {&lt;br /&gt;
			if (mw.config.get(&#039;wgCategories&#039;).includes(&#039;Casualties: Unknown&#039;)) {&lt;br /&gt;
				setup()&lt;br /&gt;
			}&lt;br /&gt;
		})&lt;br /&gt;
	})&lt;br /&gt;
} else {&lt;br /&gt;
	setup()&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=242</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=242"/>
		<updated>2026-05-27T15:10:40Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: CHANGE ME */&lt;br /&gt;
			background: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: linear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-sticky-pinned-container::after {&lt;br /&gt;
			background: initial;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=241</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=241"/>
		<updated>2026-05-27T15:09:30Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: CHANGE ME */&lt;br /&gt;
			background: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: linear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-sticky-pinned-container {&lt;br /&gt;
			background: initial;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=240</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=240"/>
		<updated>2026-05-27T15:09:11Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: CHANGE ME */&lt;br /&gt;
			background: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: inear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-sticky-pinned-container {&lt;br /&gt;
			background: initial;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=239</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=239"/>
		<updated>2026-05-27T15:05:40Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: CHANGE ME */&lt;br /&gt;
			background: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background:&lt;br /&gt;
				/* TODO: CHANGE ME */&lt;br /&gt;
				url(&#039;https://scavprototype.wiki.gg/images/Site-logo.png&#039;) no-repeat left&lt;br /&gt;
					20% / 10%,&lt;br /&gt;
				linear-gradient(&lt;br /&gt;
					to top,&lt;br /&gt;
					var(--border-color-base),&lt;br /&gt;
					var(--background-color-neutral-subtle)&lt;br /&gt;
				);&lt;br /&gt;
			color: transparent;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-sticky-pinned-container {&lt;br /&gt;
			background: initial;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=238</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=238"/>
		<updated>2026-05-27T14:57:24Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: Change Image */&lt;br /&gt;
			background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: linear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-sticky-pinned-container {&lt;br /&gt;
			background: initial;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body,&lt;br /&gt;
	h1#firstHeading,&lt;br /&gt;
	.vector-sticky-header-context-bar-primary {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=237</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=237"/>
		<updated>2026-05-27T14:50:19Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.8);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: Change Image */&lt;br /&gt;
			background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: linear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-logo-container {&lt;br /&gt;
			filter: initial !important;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(10px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=236</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=236"/>
		<updated>2026-05-27T14:46:28Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os.gadget-cu {&lt;br /&gt;
		--background-color-base: color(srgb 0 0 0 / 0.75);&lt;br /&gt;
		--background-color-neutral-subtle: #080808;&lt;br /&gt;
		--background-color-interactive: #555;&lt;br /&gt;
		--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
		--color-base: #fff;&lt;br /&gt;
		--color-inverted: #000;&lt;br /&gt;
		--color-inverted-fixed: #000;&lt;br /&gt;
		--color-emphasized: #ff0;&lt;br /&gt;
		--color-progressive: #ff0;&lt;br /&gt;
		--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
		--border-color-base: #444;&lt;br /&gt;
		--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
		body {&lt;br /&gt;
			/* TODO: Change Image */&lt;br /&gt;
			background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
			background-size: cover;&lt;br /&gt;
			background-position: center;&lt;br /&gt;
			background-attachment: fixed;&lt;br /&gt;
			background-repeat: no-repeat;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.vector-header {&lt;br /&gt;
			background: linear-gradient(&lt;br /&gt;
				to top,&lt;br /&gt;
				var(--border-color-base),&lt;br /&gt;
				var(--background-color-neutral-subtle)&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.mw-page-container,&lt;br /&gt;
		.vector-dropdown-content {&lt;br /&gt;
			backdrop-filter: blur(20px);&lt;br /&gt;
			border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=235</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=235"/>
		<updated>2026-05-27T14:42:56Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
:root.gadget-cu {&lt;br /&gt;
	--background-color-base: color(srgb 0 0 0 / 0.75);&lt;br /&gt;
	--background-color-neutral-subtle: #080808;&lt;br /&gt;
	--background-color-interactive: #555;&lt;br /&gt;
	--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
	--color-base: #fff;&lt;br /&gt;
	--color-inverted: #000;&lt;br /&gt;
	--color-inverted-fixed: #000;&lt;br /&gt;
	--color-emphasized: #ff0;&lt;br /&gt;
	--color-progressive: #ff0;&lt;br /&gt;
	--color-progressive--hover: #aa0;&lt;br /&gt;
&lt;br /&gt;
	--border-color-base: #444;&lt;br /&gt;
	--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
	body {&lt;br /&gt;
		/* TODO: Change Image */&lt;br /&gt;
		background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
		background-size: cover;&lt;br /&gt;
		background-position: center;&lt;br /&gt;
		background-attachment: fixed;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.vector-header {&lt;br /&gt;
		background: linear-gradient(&lt;br /&gt;
			to top,&lt;br /&gt;
			var(--border-color-base),&lt;br /&gt;
			var(--background-color-neutral-subtle)&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-dropdown-content {&lt;br /&gt;
		backdrop-filter: blur(20px);&lt;br /&gt;
		border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.skin-invert-image img,&lt;br /&gt;
	.skin-invert,&lt;br /&gt;
	.oo-ui-iconElement-icon:not(.oo-ui-image-progressive),&lt;br /&gt;
	.oo-ui-iconElement-icon:not(.oo-ui-image-destructive),&lt;br /&gt;
	.oo-ui-iconElement-icon:not(.oo-ui-checkboxInputWidget-checkIcon),&lt;br /&gt;
	.oo-ui-iconElement-icon:not(.oo-ui-image-invert),&lt;br /&gt;
	.oo-ui-iconElement-icon:not(.mw-no-invert),&lt;br /&gt;
	.oo-ui-indicatorElement-indicator {&lt;br /&gt;
		filter: invert(1) hue-rotate(180deg);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=234</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=234"/>
		<updated>2026-05-27T14:34:58Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
:root.gadget-cu {&lt;br /&gt;
	--background-color-base: color(srgb 0 0 0 / 0.75);&lt;br /&gt;
	--background-color-neutral-subtle: #080808;&lt;br /&gt;
	--background-color-interactive: #555;&lt;br /&gt;
	--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
	--color-base: #FFF;&lt;br /&gt;
	--color-inverted: #000;&lt;br /&gt;
	--color-inverted-fixed: #000;&lt;br /&gt;
	--color-emphasized: #FF0;&lt;br /&gt;
	--color-progressive: #FF0;&lt;br /&gt;
	--color-progressive--hover: #AA0;&lt;br /&gt;
&lt;br /&gt;
	--border-color-base: #444;&lt;br /&gt;
	--border-size: 4px;&lt;br /&gt;
&lt;br /&gt;
	body {&lt;br /&gt;
		/* TODO: Change Image */&lt;br /&gt;
		background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
		background-size: cover;&lt;br /&gt;
		background-position: center;&lt;br /&gt;
		background-attachment: fixed;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.vector-header {&lt;br /&gt;
		background: linear-gradient(to top, var(--border-color-base), var(--background-color-neutral-subtle));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-dropdown-content {&lt;br /&gt;
		backdrop-filter: blur(20px);&lt;br /&gt;
		border: var(--border-size) solid var(--border-color-base);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=233</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=233"/>
		<updated>2026-05-27T13:34:02Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
:root.gadget-cu {&lt;br /&gt;
	--background-color-base: color(srgb 0 0 0 / 0.75);&lt;br /&gt;
	--background-color-neutral-subtle: #080808;&lt;br /&gt;
	--background-color-interactive: #555;&lt;br /&gt;
	--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
	--color-base: #FFF;&lt;br /&gt;
	--color-inverted: #000;&lt;br /&gt;
	--color-inverted-fixed: #000;&lt;br /&gt;
	--color-emphasized: #FF0;&lt;br /&gt;
	--color-progressive: #FF0;&lt;br /&gt;
	--color-progressive--hover: #AA0;&lt;br /&gt;
&lt;br /&gt;
	body {&lt;br /&gt;
		/* TODO: Change Image */&lt;br /&gt;
		background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
		background-size: cover;&lt;br /&gt;
		background-position: center;&lt;br /&gt;
		background-attachment: fixed;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-dropdown-content {&lt;br /&gt;
		backdrop-filter: blur(20px);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=232</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=232"/>
		<updated>2026-05-27T13:30:04Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
:root.gadget-cu {&lt;br /&gt;
	--background-color-base: transparent;&lt;br /&gt;
	--background-color-neutral-subtle: #080808;&lt;br /&gt;
	--background-color-interactive: #555;&lt;br /&gt;
	--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
	--color-base: #FFF;&lt;br /&gt;
	--color-inverted: #000;&lt;br /&gt;
	--color-inverted-fixed: #000;&lt;br /&gt;
	--color-emphasized: #FF0;&lt;br /&gt;
	--color-progressive: #FF0;&lt;br /&gt;
	--color-progressive--hover: #AA0;&lt;br /&gt;
&lt;br /&gt;
	body {&lt;br /&gt;
		/* TODO: Change Image */&lt;br /&gt;
		background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
		background-size: cover;&lt;br /&gt;
		background-position: center;&lt;br /&gt;
		background-attachment: fixed;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-header-container {&lt;br /&gt;
		backdrop-filter: blur(20px);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=231</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=231"/>
		<updated>2026-05-27T13:29:43Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Skin */&lt;br /&gt;
:root.gadget-cu {&lt;br /&gt;
	--background-color-base: #000;&lt;br /&gt;
	--background-color-neutral-subtle: #080808;&lt;br /&gt;
	--background-color-interactive: #555;&lt;br /&gt;
	--background-color-interactive-subtle--hover: #000;&lt;br /&gt;
	--color-base: #FFF;&lt;br /&gt;
	--color-inverted: #000;&lt;br /&gt;
	--color-inverted-fixed: #000;&lt;br /&gt;
	--color-emphasized: #FF0;&lt;br /&gt;
	--color-progressive: #FF0;&lt;br /&gt;
	--color-progressive--hover: #AA0;&lt;br /&gt;
&lt;br /&gt;
	body {&lt;br /&gt;
		/* TODO: Change Image */&lt;br /&gt;
		background-image: url(&#039;https://scavprototype.wiki.gg/images/Background_dark.png&#039;);&lt;br /&gt;
		background-size: cover;&lt;br /&gt;
		background-position: center;&lt;br /&gt;
		background-attachment: fixed;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-header-container {&lt;br /&gt;
		backdrop-filter: blur(20px);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=230</id>
		<title>미디어위키:Gadget-CU.js</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=230"/>
		<updated>2026-05-27T13:08:43Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;const MW_BASE_URL = globalThis.MW_BASE_URL || &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
async function fetchJSON(title) {&lt;br /&gt;
	const response = await fetch(&lt;br /&gt;
		`${MW_BASE_URL}/rest.php/v1/page/${encodeURIComponent(title)}`,&lt;br /&gt;
	)&lt;br /&gt;
	if (!response.ok) {&lt;br /&gt;
		throw new Error(`Fetch failed with ${response.status}`)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	const payload = await response.json()&lt;br /&gt;
	payload.source = JSON.parse(payload.source)&lt;br /&gt;
	return payload&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchCache(title) {&lt;br /&gt;
	if (!sessionStorage.getItem(title)) {&lt;br /&gt;
		await navigator.locks.request(title, async (lock) =&amp;gt; {&lt;br /&gt;
			const payload = await fetchJSON(title)&lt;br /&gt;
			sessionStorage.setItem(title, JSON.stringify(payload))&lt;br /&gt;
		})&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	try {&lt;br /&gt;
		return JSON.parse(sessionStorage.getItem(title))&lt;br /&gt;
	} catch (e) {&lt;br /&gt;
		sessionStorage.removeItem(title)&lt;br /&gt;
		throw e&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchData(ver, lang) {&lt;br /&gt;
	const prefix = `CU/data/${ver}`&lt;br /&gt;
	const promises = {&lt;br /&gt;
		locale: `${prefix}/${lang}.json`,&lt;br /&gt;
		items: `${prefix}/items.json`,&lt;br /&gt;
		liquids: `${prefix}/liquids.json`,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return Object.fromEntries(&lt;br /&gt;
		await Promise.all(&lt;br /&gt;
			Object.entries(promises).map(async ([k, v]) =&amp;gt; [k, await fetchCache(v)]),&lt;br /&gt;
		),&lt;br /&gt;
	)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const locale = {&lt;br /&gt;
	get: (key, lang = null) =&amp;gt; {&lt;br /&gt;
		const targetLocale =&lt;br /&gt;
			(lang ? locale[lang] : locale[document.documentElement.lang]) || locale.en&lt;br /&gt;
&lt;br /&gt;
		return targetLocale[key] || key&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	en: {&lt;br /&gt;
		toggleRetroFont: &#039;Toggle Retro Font&#039;,&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ko: {&lt;br /&gt;
		toggleRetroFont: &#039;레트로 글꼴 전환&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @type {Object&amp;lt;string, () =&amp;gt; void&amp;gt;}&lt;br /&gt;
 */&lt;br /&gt;
const scripts = {&lt;br /&gt;
	NoRetroFonts: () =&amp;gt; {&lt;br /&gt;
		const dataKey = &#039;noRetroFont&#039;&lt;br /&gt;
		let dataValue = localStorage.getItem(dataKey) == &#039;true&#039;&lt;br /&gt;
&lt;br /&gt;
		const apply = () =&amp;gt; {&lt;br /&gt;
			delete document.documentElement.dataset[dataKey]&lt;br /&gt;
			if (dataValue) {&lt;br /&gt;
				document.documentElement.dataset[dataKey] = &#039;&#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// 네비게이션 요소&lt;br /&gt;
		$(&#039;#p-navigation ul&#039;).append(&lt;br /&gt;
			$(&#039;&amp;lt;li id=&amp;quot;n-noRetroFont&amp;quot; class=&amp;quot;mw-list-item&amp;quot;&amp;gt;&#039;).append(&lt;br /&gt;
				$(&#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.text(locale.get(&#039;toggleRetroFont&#039;))&lt;br /&gt;
					.on(&#039;click&#039;, (e) =&amp;gt; {&lt;br /&gt;
						e.preventDefault()&lt;br /&gt;
						dataValue = !dataValue&lt;br /&gt;
						localStorage.setItem(dataKey, dataValue)&lt;br /&gt;
						apply()&lt;br /&gt;
					}),&lt;br /&gt;
			),&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		apply()&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Tooltip: () =&amp;gt; {&lt;br /&gt;
		const $body = $(&#039;body&#039;)&lt;br /&gt;
		let $tooltip = null&lt;br /&gt;
		let $target = null&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		async function onPointerEnter(e) {&lt;br /&gt;
			const $currentTarget = $(this)&lt;br /&gt;
			const id = $currentTarget.data(&#039;cui&#039;)&lt;br /&gt;
			if (!id || $currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const ver = $currentTarget.data(&#039;cuiVer&#039;) || &#039;6.1&#039;&lt;br /&gt;
			const lang = $currentTarget.data(&#039;cuiLang&#039;) || &#039;EN&#039;&lt;br /&gt;
			const rawLiquids = $currentTarget.data(&#039;cuiLiquids&#039;)&lt;br /&gt;
			const containedLiquids = rawLiquids&lt;br /&gt;
				? rawLiquids.split(&#039;;&#039;).map((v) =&amp;gt; v.split(&#039;,&#039;).map((s) =&amp;gt; s.trim()))&lt;br /&gt;
				: []&lt;br /&gt;
&lt;br /&gt;
			const { locale, items, liquids } = await fetchData(ver, lang)&lt;br /&gt;
&lt;br /&gt;
			// 타겟 요소가 바뀌었으면 넘어가기&lt;br /&gt;
			if (!$currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const item = items.source[id]&lt;br /&gt;
&lt;br /&gt;
			let itemValue = item.value&lt;br /&gt;
			let itemActuallyUsableOnLimb = item.usableOnLimb&lt;br /&gt;
&lt;br /&gt;
			const headTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id] || id),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const footTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const liquidTags = containedLiquids.map(([id, amount]) =&amp;gt; {&lt;br /&gt;
				const liquid = liquids.source[id]&lt;br /&gt;
				if (!liquid) {&lt;br /&gt;
					return&lt;br /&gt;
				} &lt;br /&gt;
&lt;br /&gt;
				itemValue += liquid.valuePerLiter * (amount / 1000)&lt;br /&gt;
				if (liquid.healthUsable) {&lt;br /&gt;
					itemActuallyUsableOnLimb = true&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				return $(&#039;&amp;lt;section class=&amp;quot;cu-liquid&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.css(&lt;br /&gt;
						&#039;color&#039;,&lt;br /&gt;
						`color(srgb ${liquid.color.r} ${liquid.color.g} ${liquid.color.b})`,&lt;br /&gt;
					)&lt;br /&gt;
					.append(&lt;br /&gt;
						$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(&lt;br /&gt;
							`${locale.source.other[liquid.localeName]} (${amount}ml)`,&lt;br /&gt;
						),&lt;br /&gt;
						$(&#039;&amp;lt;p&amp;gt;&#039;).text(locale.source.other[liquid.localeName + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
					)&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			const usableTags = []&lt;br /&gt;
&lt;br /&gt;
			// 액체가 들어있을 수 있는 경우&lt;br /&gt;
			if (item.capacity &amp;gt; 0) {&lt;br /&gt;
				footTags.push($(&#039;&amp;lt;section class=&amp;quot;cu-liquids&amp;quot;&amp;gt;&#039;).append(liquidTags))&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 무게가 있는 경우&lt;br /&gt;
			if (item.weight &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-0&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.weight}: ${item.weight || 0}u`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 손으로만 들 수 있는 경우&lt;br /&gt;
			if (item.onlyHoldInHands) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#ff8787&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemonlyinhands),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (item.usable) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#a6ffaa&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(&lt;br /&gt;
							item.usableWithLMB&lt;br /&gt;
								? locale.source.other.itemusablehand&lt;br /&gt;
								: locale.source.other.itemusableinventory,&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사지에 사용할 수 있는 경우&lt;br /&gt;
			if (itemActuallyUsableOnLimb) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#fffb91&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-12&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusablewound),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (usableTags.length &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#a3a3a3&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-11&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusable)&lt;br /&gt;
						.append(&lt;br /&gt;
							usableTags.reduce(&lt;br /&gt;
								(p, c) =&amp;gt; (p.length &amp;gt; 0 ? [...p, &#039;/&#039;, c] : [c]),&lt;br /&gt;
								[],&lt;br /&gt;
							),&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 가치가 있는 경우&lt;br /&gt;
			if (itemValue &amp;gt; 0) {&lt;br /&gt;
				const displayItemValue = Math.round(Math.min(itemValue, 50))&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#f6ff73&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-9&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.itemvalue}${displayItemValue}c`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$tooltip = $(&#039;&amp;lt;div class=&amp;quot;cu-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(headTags))&lt;br /&gt;
				.append(&#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(footTags))&lt;br /&gt;
&lt;br /&gt;
			if (e.shiftKey) {&lt;br /&gt;
				$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$body.append($tooltip)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerLeave(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.remove()&lt;br /&gt;
				$tooltip = null&lt;br /&gt;
				$target = null&lt;br /&gt;
			}&lt;br /&gt;
			$target = null&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerMove(e) {&lt;br /&gt;
			if (!$tooltip || !$target) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			const event = e.type.includes(&#039;touch&#039;) ? e.originalEvent.touches[0] : e&lt;br /&gt;
			const gap = parseInt($tooltip.data(&#039;cuiGap&#039;), 10) || 14&lt;br /&gt;
			const x = event.clientX + gap&lt;br /&gt;
			const y = event.clientY + gap&lt;br /&gt;
&lt;br /&gt;
			requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
				if ($tooltip) {&lt;br /&gt;
					$tooltip.css({&lt;br /&gt;
						left: `${Math.max(0, Math.min(x, window.innerWidth - $tooltip.outerWidth(true)))}px`,&lt;br /&gt;
						top: `${Math.max(0, Math.min(y, window.innerHeight - $tooltip.outerHeight(true)))}px`,&lt;br /&gt;
					})&lt;br /&gt;
				}&lt;br /&gt;
			})&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {KeyboardEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onKey(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.removeAttr(&#039;open&#039;)&lt;br /&gt;
				if (e.shiftKey) {&lt;br /&gt;
					$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$(&#039;[data-cui]&#039;)&lt;br /&gt;
			.on(&#039;pointerenter&#039;, onPointerEnter)&lt;br /&gt;
			.on(&#039;pointerleave&#039;, onPointerLeave)&lt;br /&gt;
			.on(&#039;pointermove&#039;, onPointerMove)&lt;br /&gt;
		$(&#039;body&#039;).on(&#039;keyup keydown&#039;, onKey)&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setup() {&lt;br /&gt;
	$(&#039;html&#039;).addClass(&#039;gadget-cu&#039;)&lt;br /&gt;
&lt;br /&gt;
	for (const [name, func] of Object.entries(scripts)) {&lt;br /&gt;
		try {&lt;br /&gt;
			func(name)&lt;br /&gt;
		} catch (e) {&lt;br /&gt;
			console.error(name, e)&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (globalThis.mw) {&lt;br /&gt;
	mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;], () =&amp;gt; {&lt;br /&gt;
		$(() =&amp;gt; {&lt;br /&gt;
			if (mw.config.get(&#039;wgCategories&#039;).includes(&#039;Casualties: Unknown&#039;)) {&lt;br /&gt;
				setup()&lt;br /&gt;
			}&lt;br /&gt;
		})&lt;br /&gt;
	})&lt;br /&gt;
} else {&lt;br /&gt;
	setup()&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4&amp;diff=229</id>
		<title>사용자:Kawalain/샌드박스</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4&amp;diff=229"/>
		<updated>2026-05-27T13:06:43Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== [[틀:CU/Item|아이템 툴팁]] ===&lt;br /&gt;
&lt;br /&gt;
==== [[CU/data/6.1/EN.json|영어]] ====&lt;br /&gt;
* {{CU/Item|id=armwarmers}}&lt;br /&gt;
* {{CU/Item|id=bellyarmor}}&lt;br /&gt;
* {{CU/Item|id=grapplinghook}}&lt;br /&gt;
* {{CU/Item|id=waterbottle}}&lt;br /&gt;
&lt;br /&gt;
==== [[CU/data/6.1/ko-KR.json|한국어]] ====&lt;br /&gt;
* {{CU/Item|lang=ko-KR|id=medicalsuture}}&lt;br /&gt;
* {{CU/Item|lang=ko-KR|id=shovel}}&lt;br /&gt;
* {{CU/Item&lt;br /&gt;
|lang=ko-KR&lt;br /&gt;
|id=minibarrel&lt;br /&gt;
|liquids=&lt;br /&gt;
  highgradestimulant,110;&lt;br /&gt;
  urine,230;alcohol,24;&lt;br /&gt;
  fentanyl,4550&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
public class Language&lt;br /&gt;
{&lt;br /&gt;
    // Token: 0x060002E6 RID: 742 RVA: 0x0002C128 File Offset: 0x0002A328&lt;br /&gt;
    public Language()&lt;br /&gt;
    {&lt;br /&gt;
        this.main = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.buildings = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.moodles = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.other = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.character = new Dictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;[]&lt;br /&gt;
        {&lt;br /&gt;
            new Dictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;()&lt;br /&gt;
        };&lt;br /&gt;
        this.notes = new List&amp;lt;ValueTuple&amp;lt;string, string, string&amp;gt;&amp;gt;[0];&lt;br /&gt;
        this.pdaNotes = new List&amp;lt;ValueTuple&amp;lt;string, string&amp;gt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{CU}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%ED%8B%80:CU/Item&amp;diff=228</id>
		<title>틀:CU/Item</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%ED%8B%80:CU/Item&amp;diff=228"/>
		<updated>2026-05-27T13:06:14Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:CU/Item|main}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%ED%8B%80:CU/Item&amp;diff=227</id>
		<title>틀:CU/Item</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%ED%8B%80:CU/Item&amp;diff=227"/>
		<updated>2026-05-27T13:06:05Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 내용을 &amp;quot;{{#invoke:CU/Item}}&amp;quot;(으)로 바꿈&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:CU/Item}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU/Item&amp;diff=226</id>
		<title>모듈:CU/Item</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU/Item&amp;diff=226"/>
		<updated>2026-05-27T13:05:41Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Arguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
local CU = require(&#039;Module:CU&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = Arguments.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local id = args[1] or args.id&lt;br /&gt;
	local lang = args[2] or args.lang&lt;br /&gt;
	local ver = args[3] or args.ver&lt;br /&gt;
&lt;br /&gt;
	local function x(keys) return CU.locale({ keys, lang, ver }) end&lt;br /&gt;
&lt;br /&gt;
	local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		:attr(&#039;data-cui&#039;, id)&lt;br /&gt;
		:wikitext(args.text or x(&#039;main.&#039; .. id))&lt;br /&gt;
&lt;br /&gt;
	if lang then span:attr(&#039;data-cui-lang&#039;, lang) end&lt;br /&gt;
	if ver then span:attr(&#039;data-cui-ver&#039;, ver) end&lt;br /&gt;
	if args.liquids then&lt;br /&gt;
		span:attr(&#039;data-cui-liquids&#039;, args.liquids:gsub(&amp;quot;\n&amp;quot;, &#039;;&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(span)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU&amp;diff=225</id>
		<title>모듈:CU</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU&amp;diff=225"/>
		<updated>2026-05-27T13:00:11Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {&lt;br /&gt;
	vers = {&lt;br /&gt;
		latest = &#039;6.1&#039;,&lt;br /&gt;
		[&#039;6.1&#039;] = &#039;6.1&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---@param title string&lt;br /&gt;
---@param keys string&lt;br /&gt;
---@return string?&lt;br /&gt;
local function parse(title, keys)&lt;br /&gt;
	title = mw.text.trim(title or &#039;&#039;)&lt;br /&gt;
	keys = mw.text.trim(keys or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	local page = mw.title.new(title)&lt;br /&gt;
	if not page or not page.exists then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local value = mw.text.jsonDecode(page:getContent())&lt;br /&gt;
	for key in keys:gmatch(&amp;quot;[^.]+&amp;quot;) do&lt;br /&gt;
		if type(value) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			value = value[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param frame table&lt;br /&gt;
---@return string?&lt;br /&gt;
function p.locale(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local keys = args[1] or args.keys&lt;br /&gt;
	local lang = args[2] or args.lang or &#039;EN&#039;&lt;br /&gt;
	local ver = args[3] or args.ver or p.vers.latest&lt;br /&gt;
&lt;br /&gt;
	return parse(&#039;CU/data/&#039; .. ver .. &#039;/&#039; .. lang .. &#039;.json&#039;, keys) or&lt;br /&gt;
		parse(&#039;CU/data/&#039; .. ver .. &#039;/EN.json&#039;, keys)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU/Item&amp;diff=224</id>
		<title>모듈:CU/Item</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU/Item&amp;diff=224"/>
		<updated>2026-05-27T12:59:41Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 새 문서: local Arguments = require(&amp;#039;Module:Arguments&amp;#039;) local CU = require(&amp;#039;Module:CU&amp;#039;)  local p = {}  function p.main(frame) 	local args = Arguments.getArgs(frame)  	local id = args[1] or args.id 	local lang = args[2] or args.lang 	local ver = args[3] or args.ver  	local function x(keys) return CU.locale({ keys, lang, ver }) end  	local span = mw.html.create(&amp;#039;span&amp;#039;) 		:attr(&amp;#039;data-cui&amp;#039;, id) 		:wikitext(args.text or x(&amp;#039;main.&amp;#039; .. id))  	if lang then span:attr(&amp;#039;data-cui-lang&amp;#039;, lang) end 	if...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Arguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
local CU = require(&#039;Module:CU&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = Arguments.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local id = args[1] or args.id&lt;br /&gt;
	local lang = args[2] or args.lang&lt;br /&gt;
	local ver = args[3] or args.ver&lt;br /&gt;
&lt;br /&gt;
	local function x(keys) return CU.locale({ keys, lang, ver }) end&lt;br /&gt;
&lt;br /&gt;
	local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		:attr(&#039;data-cui&#039;, id)&lt;br /&gt;
		:wikitext(args.text or x(&#039;main.&#039; .. id))&lt;br /&gt;
&lt;br /&gt;
	if lang then span:attr(&#039;data-cui-lang&#039;, lang) end&lt;br /&gt;
	if ver then span:attr(&#039;data-cui-ver&#039;, ver) end&lt;br /&gt;
&lt;br /&gt;
	return tostring(span)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Arguments&amp;diff=223</id>
		<title>모듈:Arguments</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Arguments&amp;diff=223"/>
		<updated>2026-05-27T12:54:27Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 새 문서: -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly.  local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local checkType = libraryUtil.checkType  local arguments = {}  -- Generate four different tidyVal functions, so that we don&amp;#039;t have to check the -- options every time we call it.  local function tidyValDefault(key, val) 	if type(val) == &amp;#039;string&amp;#039; then 		v...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU&amp;diff=222</id>
		<title>모듈:CU</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:CU&amp;diff=222"/>
		<updated>2026-05-27T12:53:04Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {&lt;br /&gt;
	vers = {&lt;br /&gt;
		latest = &#039;6.1&#039;,&lt;br /&gt;
		[&#039;6.1&#039;] = &#039;6.1&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---@param title string&lt;br /&gt;
---@param keys string&lt;br /&gt;
---@return string?&lt;br /&gt;
local function parse(title, keys)&lt;br /&gt;
	title = mw.text.trim(title or &#039;&#039;)&lt;br /&gt;
	keys = mw.text.trim(keys or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	local page = mw.title.new(title)&lt;br /&gt;
	if not page or not page.exists then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local value = mw.text.jsonDecode(page:getContent())&lt;br /&gt;
	for key in keys:gmatch(&amp;quot;[^.]+&amp;quot;) do&lt;br /&gt;
		if type(value) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			value = value[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param frame table&lt;br /&gt;
---@return string?&lt;br /&gt;
function p.locale(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local keys = args[1] or args[&#039;keys&#039;]&lt;br /&gt;
	local lang = args[2] or args[&#039;lang&#039;] or &#039;EN&#039;&lt;br /&gt;
	local ver = args[3] or args[&#039;ver&#039;] or p.vers.latest&lt;br /&gt;
&lt;br /&gt;
	return parse(&#039;CU/data/&#039; .. ver .. &#039;/&#039; .. lang .. &#039;.json&#039;, keys) or&lt;br /&gt;
		parse(&#039;CU/data/&#039; .. ver .. &#039;/EN.json&#039;, keys)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=221</id>
		<title>미디어위키:Gadget-CU.js</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=221"/>
		<updated>2026-05-27T11:31:22Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;const MW_BASE_URL = globalThis.MW_BASE_URL || &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
async function fetchJSON(title) {&lt;br /&gt;
	const response = await fetch(&lt;br /&gt;
		`${MW_BASE_URL}/rest.php/v1/page/${encodeURIComponent(title)}`,&lt;br /&gt;
	)&lt;br /&gt;
	if (!response.ok) {&lt;br /&gt;
		throw new Error(`Fetch failed with ${response.status}`)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	const payload = await response.json()&lt;br /&gt;
	payload.source = JSON.parse(payload.source)&lt;br /&gt;
	return payload&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchCache(title) {&lt;br /&gt;
	if (!sessionStorage.getItem(title)) {&lt;br /&gt;
		await navigator.locks.request(title, async (lock) =&amp;gt; {&lt;br /&gt;
			const payload = await fetchJSON(title)&lt;br /&gt;
			sessionStorage.setItem(title, JSON.stringify(payload))&lt;br /&gt;
		})&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	try {&lt;br /&gt;
		return JSON.parse(sessionStorage.getItem(title))&lt;br /&gt;
	} catch (e) {&lt;br /&gt;
		sessionStorage.removeItem(title)&lt;br /&gt;
		throw e&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchData(ver, lang) {&lt;br /&gt;
	const prefix = `CU/data/${ver}`&lt;br /&gt;
	const promises = {&lt;br /&gt;
		locale: `${prefix}/${lang}.json`,&lt;br /&gt;
		items: `${prefix}/items.json`,&lt;br /&gt;
		liquids: `${prefix}/liquids.json`,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return Object.fromEntries(&lt;br /&gt;
		await Promise.all(&lt;br /&gt;
			Object.entries(promises).map(async ([k, v]) =&amp;gt; [k, await fetchCache(v)]),&lt;br /&gt;
		),&lt;br /&gt;
	)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const locale = {&lt;br /&gt;
	get: (key, lang = null) =&amp;gt; {&lt;br /&gt;
		const targetLocale =&lt;br /&gt;
			(lang ? locale[lang] : locale[document.documentElement.lang]) || locale.en&lt;br /&gt;
&lt;br /&gt;
		return targetLocale[key] || key&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	en: {&lt;br /&gt;
		toggleRetroFont: &#039;Toggle Retro Font&#039;,&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ko: {&lt;br /&gt;
		toggleRetroFont: &#039;레트로 글꼴 전환&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @type {Object&amp;lt;string, () =&amp;gt; void&amp;gt;}&lt;br /&gt;
 */&lt;br /&gt;
const scripts = {&lt;br /&gt;
	NoRetroFonts: () =&amp;gt; {&lt;br /&gt;
		const dataKey = &#039;noRetroFont&#039;&lt;br /&gt;
		let dataValue = localStorage.getItem(dataKey) == &#039;true&#039;&lt;br /&gt;
&lt;br /&gt;
		const apply = () =&amp;gt; {&lt;br /&gt;
			delete document.documentElement.dataset[dataKey]&lt;br /&gt;
			if (dataValue) {&lt;br /&gt;
				document.documentElement.dataset[dataKey] = &#039;&#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// 네비게이션 요소&lt;br /&gt;
		$(&#039;#p-navigation ul&#039;).append(&lt;br /&gt;
			$(&#039;&amp;lt;li id=&amp;quot;n-noRetroFont&amp;quot; class=&amp;quot;mw-list-item&amp;quot;&amp;gt;&#039;).append(&lt;br /&gt;
				$(&#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.text(locale.get(&#039;toggleRetroFont&#039;))&lt;br /&gt;
					.on(&#039;click&#039;, (e) =&amp;gt; {&lt;br /&gt;
						e.preventDefault()&lt;br /&gt;
						dataValue = !dataValue&lt;br /&gt;
						localStorage.setItem(dataKey, dataValue)&lt;br /&gt;
						apply()&lt;br /&gt;
					}),&lt;br /&gt;
			),&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		apply()&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Tooltip: () =&amp;gt; {&lt;br /&gt;
		const $body = $(&#039;body&#039;)&lt;br /&gt;
		let $tooltip = null&lt;br /&gt;
		let $target = null&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		async function onPointerEnter(e) {&lt;br /&gt;
			const $currentTarget = $(this)&lt;br /&gt;
			const id = $currentTarget.data(&#039;cui&#039;)&lt;br /&gt;
			if (!id || $currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const ver = $currentTarget.data(&#039;cuiVer&#039;) || &#039;6.1&#039;&lt;br /&gt;
			const lang = $currentTarget.data(&#039;cuiLang&#039;) || &#039;EN&#039;&lt;br /&gt;
			const rawLiquids = $currentTarget.data(&#039;cuiLiquids&#039;)&lt;br /&gt;
			const containedLiquids = rawLiquids&lt;br /&gt;
				? rawLiquids.split(&#039;;&#039;).map((v) =&amp;gt; v.split(&#039;,&#039;).map((s) =&amp;gt; s.trim()))&lt;br /&gt;
				: []&lt;br /&gt;
&lt;br /&gt;
			const { locale, items, liquids } = await fetchData(ver, lang)&lt;br /&gt;
&lt;br /&gt;
			// 타겟 요소가 바뀌었으면 넘어가기&lt;br /&gt;
			if (!$currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const item = items.source[id]&lt;br /&gt;
&lt;br /&gt;
			let itemValue = item.value&lt;br /&gt;
			let itemActuallyUsableOnLimb = item.usableOnLimb&lt;br /&gt;
&lt;br /&gt;
			const headTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id] || id),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const footTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const liquidTags = containedLiquids.map(([id, amount]) =&amp;gt; {&lt;br /&gt;
				const liquid = liquids.source[id]&lt;br /&gt;
&lt;br /&gt;
				itemValue += liquid.valuePerLiter * (amount / 1000)&lt;br /&gt;
				if (liquid.healthUsable) {&lt;br /&gt;
					itemActuallyUsableOnLimb = true&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				return $(&#039;&amp;lt;section class=&amp;quot;cu-liquid&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.css(&lt;br /&gt;
						&#039;color&#039;,&lt;br /&gt;
						`color(srgb ${liquid.color.r} ${liquid.color.g} ${liquid.color.b})`,&lt;br /&gt;
					)&lt;br /&gt;
					.append(&lt;br /&gt;
						$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(&lt;br /&gt;
							`${locale.source.other[liquid.localeName]} (${amount}ml)`,&lt;br /&gt;
						),&lt;br /&gt;
						$(&#039;&amp;lt;p&amp;gt;&#039;).text(locale.source.other[liquid.localeName + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
					)&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			const usableTags = []&lt;br /&gt;
&lt;br /&gt;
			// 액체가 들어있을 수 있는 경우&lt;br /&gt;
			if (item.capacity &amp;gt; 0) {&lt;br /&gt;
				footTags.push($(&#039;&amp;lt;section class=&amp;quot;cu-liquids&amp;quot;&amp;gt;&#039;).append(liquidTags))&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 무게가 있는 경우&lt;br /&gt;
			if (item.weight &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-0&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.weight}: ${item.weight || 0}u`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 손으로만 들 수 있는 경우&lt;br /&gt;
			if (item.onlyHoldInHands) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#ff8787&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemonlyinhands),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (item.usable) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#a6ffaa&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(&lt;br /&gt;
							item.usableWithLMB&lt;br /&gt;
								? locale.source.other.itemusablehand&lt;br /&gt;
								: locale.source.other.itemusableinventory,&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사지에 사용할 수 있는 경우&lt;br /&gt;
			if (itemActuallyUsableOnLimb) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#fffb91&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-12&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusablewound),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (usableTags.length &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#a3a3a3&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-11&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusable)&lt;br /&gt;
						.append(&lt;br /&gt;
							usableTags.reduce(&lt;br /&gt;
								(p, c) =&amp;gt; (p.length &amp;gt; 0 ? [...p, &#039;/&#039;, c] : [c]),&lt;br /&gt;
								[],&lt;br /&gt;
							),&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 가치가 있는 경우&lt;br /&gt;
			if (itemValue &amp;gt; 0) {&lt;br /&gt;
				const displayItemValue = Math.round(Math.min(itemValue, 50))&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#f6ff73&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-9&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.itemvalue}${displayItemValue}c`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$tooltip = $(&#039;&amp;lt;div class=&amp;quot;cu-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(headTags))&lt;br /&gt;
				.append(&#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(footTags))&lt;br /&gt;
&lt;br /&gt;
			if (e.shiftKey) {&lt;br /&gt;
				$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$body.append($tooltip)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerLeave(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.remove()&lt;br /&gt;
				$tooltip = null&lt;br /&gt;
				$target = null&lt;br /&gt;
			}&lt;br /&gt;
			$target = null&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerMove(e) {&lt;br /&gt;
			if (!$tooltip || !$target) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			const event = e.type.includes(&#039;touch&#039;) ? e.originalEvent.touches[0] : e&lt;br /&gt;
			const gap = parseInt($tooltip.data(&#039;cuiGap&#039;), 10) || 14&lt;br /&gt;
			const x = event.clientX + gap&lt;br /&gt;
			const y = event.clientY + gap&lt;br /&gt;
&lt;br /&gt;
			requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
				if ($tooltip) {&lt;br /&gt;
					$tooltip.css({&lt;br /&gt;
						left: `${Math.max(0, Math.min(x, window.innerWidth - $tooltip.outerWidth(true)))}px`,&lt;br /&gt;
						top: `${Math.max(0, Math.min(y, window.innerHeight - $tooltip.outerHeight(true)))}px`,&lt;br /&gt;
					})&lt;br /&gt;
				}&lt;br /&gt;
			})&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {KeyboardEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onKey(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.removeAttr(&#039;open&#039;)&lt;br /&gt;
				if (e.shiftKey) {&lt;br /&gt;
					$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$(&#039;[data-cui]&#039;)&lt;br /&gt;
			.on(&#039;pointerenter&#039;, onPointerEnter)&lt;br /&gt;
			.on(&#039;pointerleave&#039;, onPointerLeave)&lt;br /&gt;
			.on(&#039;pointermove&#039;, onPointerMove)&lt;br /&gt;
		$(&#039;body&#039;).on(&#039;keyup keydown&#039;, onKey)&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setup() {&lt;br /&gt;
	$(&#039;html&#039;).addClass(&#039;gadget-cu&#039;)&lt;br /&gt;
&lt;br /&gt;
	for (const [name, func] of Object.entries(scripts)) {&lt;br /&gt;
		try {&lt;br /&gt;
			func(name)&lt;br /&gt;
		} catch (e) {&lt;br /&gt;
			console.error(name, e)&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (globalThis.mw) {&lt;br /&gt;
	mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;], () =&amp;gt; {&lt;br /&gt;
		$(() =&amp;gt; {&lt;br /&gt;
			if (mw.config.get(&#039;wgCategories&#039;).includes(&#039;Casualties: Unknown&#039;)) {&lt;br /&gt;
				setup()&lt;br /&gt;
			}&lt;br /&gt;
		})&lt;br /&gt;
	})&lt;br /&gt;
} else {&lt;br /&gt;
	setup()&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4&amp;diff=219</id>
		<title>사용자:Kawalain/샌드박스</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4&amp;diff=219"/>
		<updated>2026-05-27T11:30:07Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== [[틀:CU/Item|아이템 툴팁]] ===&lt;br /&gt;
&lt;br /&gt;
==== [[CU/data/6.1/EN.json|영어]] ====&lt;br /&gt;
* {{CU/Item|id=armwarmers}}&lt;br /&gt;
* {{CU/Item|id=bellyarmor}}&lt;br /&gt;
* {{CU/Item|id=grapplinghook}}&lt;br /&gt;
&lt;br /&gt;
==== [[CU/data/6.1/ko-KR.json|한국어]] ====&lt;br /&gt;
* {{CU/Item|lang=ko-KR|id=medicalsuture}}&lt;br /&gt;
* {{CU/Item|lang=ko-KR|id=shovel}}&lt;br /&gt;
* {{CU/Item&lt;br /&gt;
|lang=ko-KR&lt;br /&gt;
|id=minibarrel&lt;br /&gt;
|liquids=&lt;br /&gt;
  highgradestimulant,110;&lt;br /&gt;
  urine,230;alcohol,24;&lt;br /&gt;
  fentanyl,4550&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
public class Language&lt;br /&gt;
{&lt;br /&gt;
    // Token: 0x060002E6 RID: 742 RVA: 0x0002C128 File Offset: 0x0002A328&lt;br /&gt;
    public Language()&lt;br /&gt;
    {&lt;br /&gt;
        this.main = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.buildings = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.moodles = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.other = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;
        this.character = new Dictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;[]&lt;br /&gt;
        {&lt;br /&gt;
            new Dictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;()&lt;br /&gt;
        };&lt;br /&gt;
        this.notes = new List&amp;lt;ValueTuple&amp;lt;string, string, string&amp;gt;&amp;gt;[0];&lt;br /&gt;
        this.pdaNotes = new List&amp;lt;ValueTuple&amp;lt;string, string&amp;gt;&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{CU}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=218</id>
		<title>미디어위키:Gadget-CU.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.css&amp;diff=218"/>
		<updated>2026-05-27T11:22:45Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 새 문서: /* Common */ i.cu-icon { 	display: inline-block; 	width: 1em; 	height: 1em; 	background-color: currentColor; 	mask-image: url(&amp;#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIw...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Common */&lt;br /&gt;
i.cu-icon {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	mask-image: url(&#039;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEX////v4n//yQBDry3/AAAAAAD////v4n//yQBDry3/AAB6sOsvAAAABnRSTlMAAAAAAABupgeRAAACB0lEQVRIx92Sv27bQAzGaRTmbA2G1z6CgKsHZSoQZcnkIL2dE/dOfoMiuybtmfSU/UieZNVSoyFAh9I663T3u49/jkQsRMrkZnMMFbIfkXD5GwHMWViE8WYWxYNNJVY7isPsuDgnvsgOqLKaNPZFheEBa5Cw4zit4gBAO68wi0rEBMn+oWhqqkXNAdssAGQ9SPN4U2DLIwD7nqUZLj1yVywb5a1U6sB6qwt5YgWIQmFfo4CmYokx0xikA5a4cEQRBeKQLf4NiED5puBlnQGuMHfhKRUXpod9ngAPMj5KPZT+ULhPcxo6LvhbKS7HW4Gp+lkdogd0pCUy+UV2ewZURZikAOzjzQPcna5VSHiwAUTzvInd8BU2OrELovFymL46cAIAiUNpzGhTd2ErAHYmUB12JpBa60ovIWQkira7ngBYnMpf2pYCKGmaK2xfHaipboa2Hb43XaRbrCpGiVI/vD8PbdPVXt4FkJr+YRjeU9MlnjpnBnSp774Nw2MPi06/A/qmT+0E0AoAgefJBS1duMCHQXYAkCaAtJLmAVmk1g0TmtkszQmoPw1suvg88A9i+H/rcNwC8oaL4xaQ88cujltAXgf2F4yqejGB1RiwSvnlmE1gTWGf57YC5A1g/3egXhFYKuyXwHkEzisCmV5T/tE+4UkpX5YCmfI559aeV0wui/28kLy330oeUZO6Wg+OAAAAAElFTkSuQmCC&#039;);&lt;br /&gt;
	mask-size: 8em 8em;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
	image-rendering: pixelated;&lt;br /&gt;
	image-rendering: crisp-edges;&lt;br /&gt;
	transform: translateY(0.1em);&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.c-0 {&lt;br /&gt;
		mask-position: calc(-1em * 0) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-6 {&lt;br /&gt;
		mask-position: calc(-1em * 6) calc(-1em * 0);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-9 {&lt;br /&gt;
		mask-position: calc(-1em * 1) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-11 {&lt;br /&gt;
		mask-position: calc(-1em * 3) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-12 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
	&amp;amp;.c-26 {&lt;br /&gt;
		mask-position: calc(-1em * 4) calc(-1em * 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* NoRetroFont */&lt;br /&gt;
:root:not([data-no-retro-font]) {&lt;br /&gt;
	body {&lt;br /&gt;
		font-family:&lt;br /&gt;
			&#039;TemplateStyles_RetroGaming&#039;, &#039;TemplateStyles_NeoDunggeunmoPro&#039;,&lt;br /&gt;
			sans-serif;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pre {&lt;br /&gt;
		font-family: &#039;TemplateStyles_NeoDunggeunmoMono&#039;, monospace;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CUI */&lt;br /&gt;
.cu-tooltip {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
	max-width: 500px;&lt;br /&gt;
	font-family: var(--cu-font);&lt;br /&gt;
	color: white;&lt;br /&gt;
&lt;br /&gt;
	.cu-liquids {&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.cu-liquid {&lt;br /&gt;
		p:last-child {&lt;br /&gt;
			margin-bottom: 1em;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; section {&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		padding: 0.25em;&lt;br /&gt;
		background-color: color(srgb 0 0 0 / 0.9);&lt;br /&gt;
&lt;br /&gt;
		p {&lt;br /&gt;
			margin: 0;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:first-child {&lt;br /&gt;
				color: color-mix(in srgb, currentColor 50%, white);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:not([open]) {&lt;br /&gt;
		p:not(.essential) {&lt;br /&gt;
			display: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		.cu-liquid {&lt;br /&gt;
			display: inline-block;&lt;br /&gt;
&lt;br /&gt;
			/* 닫힌 상태일 때 다음 요소가 있으면 쉼표 붙이기 */&lt;br /&gt;
			&amp;amp;:has(+ section) p:first-child::after {&lt;br /&gt;
				content: &#039;,\a0&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=217</id>
		<title>미디어위키:Gadget-CU.js</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CU.js&amp;diff=217"/>
		<updated>2026-05-27T11:22:12Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 새 문서: const MW_BASE_URL = globalThis.MW_BASE_URL || &amp;#039;&amp;#039;  async function fetchJSON(title) { 	const response = await fetch( 		`${MW_BASE_URL}/rest.php/v1/page/${encodeURIComponent(title)}`, 	) 	if (!response.ok) { 		throw new Error(`Fetch failed with ${response.status}`) 	}  	const payload = await response.json() 	payload.source = JSON.parse(payload.source) 	return payload }  async function fetchCache(title) { 	if (!sessionStorage.getItem(title)) { 		await navigator.locks.request(title,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;const MW_BASE_URL = globalThis.MW_BASE_URL || &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
async function fetchJSON(title) {&lt;br /&gt;
	const response = await fetch(&lt;br /&gt;
		`${MW_BASE_URL}/rest.php/v1/page/${encodeURIComponent(title)}`,&lt;br /&gt;
	)&lt;br /&gt;
	if (!response.ok) {&lt;br /&gt;
		throw new Error(`Fetch failed with ${response.status}`)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	const payload = await response.json()&lt;br /&gt;
	payload.source = JSON.parse(payload.source)&lt;br /&gt;
	return payload&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchCache(title) {&lt;br /&gt;
	if (!sessionStorage.getItem(title)) {&lt;br /&gt;
		await navigator.locks.request(title, async (lock) =&amp;gt; {&lt;br /&gt;
			const payload = await fetchJSON(title)&lt;br /&gt;
			sessionStorage.setItem(title, JSON.stringify(payload))&lt;br /&gt;
		})&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	try {&lt;br /&gt;
		return JSON.parse(sessionStorage.getItem(title))&lt;br /&gt;
	} catch (e) {&lt;br /&gt;
		sessionStorage.removeItem(title)&lt;br /&gt;
		throw e&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function fetchData(ver, lang) {&lt;br /&gt;
	const prefix = `CU/data/${ver}`&lt;br /&gt;
	const promises = {&lt;br /&gt;
		locale: `${prefix}/${lang}.json`,&lt;br /&gt;
		items: `${prefix}/items.json`,&lt;br /&gt;
		liquids: `${prefix}/liquids.json`,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return Object.fromEntries(&lt;br /&gt;
		await Promise.all(&lt;br /&gt;
			Object.entries(promises).map(async ([k, v]) =&amp;gt; [k, await fetchCache(v)]),&lt;br /&gt;
		),&lt;br /&gt;
	)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const locale = {&lt;br /&gt;
	get: (key, lang = null) =&amp;gt; {&lt;br /&gt;
		const targetLocale =&lt;br /&gt;
			(lang ? locale[lang] : locale[document.documentElement.lang]) || locale.en&lt;br /&gt;
&lt;br /&gt;
		return targetLocale[key] || key&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	en: {&lt;br /&gt;
		toggleRetroFont: &#039;Toggle Retro Font&#039;,&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ko: {&lt;br /&gt;
		toggleRetroFont: &#039;레트로 글꼴 전환&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @type {Object&amp;lt;string, () =&amp;gt; void&amp;gt;}&lt;br /&gt;
 */&lt;br /&gt;
const scripts = {&lt;br /&gt;
	NoRetroFonts: () =&amp;gt; {&lt;br /&gt;
		const dataKey = &#039;noRetroFont&#039;&lt;br /&gt;
		let dataValue = localStorage.getItem(dataKey) == &#039;true&#039;&lt;br /&gt;
&lt;br /&gt;
		const apply = () =&amp;gt; {&lt;br /&gt;
			delete document.documentElement.dataset[dataKey]&lt;br /&gt;
			if (dataValue) {&lt;br /&gt;
				document.documentElement.dataset[dataKey] = &#039;&#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// 네비게이션 요소&lt;br /&gt;
		$(&#039;#p-navigation ul&#039;).append(&lt;br /&gt;
			$(&#039;&amp;lt;li id=&amp;quot;n-noRetroFont&amp;quot; class=&amp;quot;mw-list-item&amp;quot;&amp;gt;&#039;).append(&lt;br /&gt;
				$(&#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.text(locale.get(&#039;toggleRetroFont&#039;))&lt;br /&gt;
					.on(&#039;click&#039;, (e) =&amp;gt; {&lt;br /&gt;
						e.preventDefault()&lt;br /&gt;
						dataValue = !dataValue&lt;br /&gt;
						localStorage.setItem(dataKey, dataValue)&lt;br /&gt;
						apply()&lt;br /&gt;
					}),&lt;br /&gt;
			),&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		apply()&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Tooltip: () =&amp;gt; {&lt;br /&gt;
		const $body = $(&#039;body&#039;)&lt;br /&gt;
		let $tooltip = null&lt;br /&gt;
		let $target = null&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		async function onPointerEnter(e) {&lt;br /&gt;
			const $currentTarget = $(this)&lt;br /&gt;
			const id = $currentTarget.data(&#039;cui&#039;)&lt;br /&gt;
			if (!id || $currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const ver = $currentTarget.data(&#039;cuiVer&#039;) || &#039;6.1&#039;&lt;br /&gt;
			const lang = $currentTarget.data(&#039;cuiLang&#039;) || &#039;EN&#039;&lt;br /&gt;
			const rawLiquids = $currentTarget.data(&#039;cuiLiquids&#039;)&lt;br /&gt;
			const containedLiquids = rawLiquids&lt;br /&gt;
				? rawLiquids.split(&#039;;&#039;).map((v) =&amp;gt; v.split(&#039;,&#039;))&lt;br /&gt;
				: []&lt;br /&gt;
&lt;br /&gt;
			const { locale, items, liquids } = await fetchData(ver, lang)&lt;br /&gt;
&lt;br /&gt;
			// 타겟 요소가 바뀌었으면 넘어가기&lt;br /&gt;
			if (!$currentTarget.is($target)) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$target = $currentTarget&lt;br /&gt;
&lt;br /&gt;
			const item = items.source[id]&lt;br /&gt;
&lt;br /&gt;
			let itemValue = item.value&lt;br /&gt;
			let itemActuallyUsableOnLimb = item.usableOnLimb&lt;br /&gt;
&lt;br /&gt;
			const headTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id] || id),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const footTags = [&lt;br /&gt;
				$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(locale.source.main[id + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
			]&lt;br /&gt;
&lt;br /&gt;
			const liquidTags = containedLiquids.map(([id, amount]) =&amp;gt; {&lt;br /&gt;
				const liquid = liquids.source[id]&lt;br /&gt;
&lt;br /&gt;
				itemValue += liquid.valuePerLiter * (amount / 1000)&lt;br /&gt;
				if (liquid.healthUsable) {&lt;br /&gt;
					itemActuallyUsableOnLimb = true&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				return $(&#039;&amp;lt;section class=&amp;quot;cu-liquid&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
					.css(&lt;br /&gt;
						&#039;color&#039;,&lt;br /&gt;
						`color(srgb ${liquid.color.r} ${liquid.color.g} ${liquid.color.b})`,&lt;br /&gt;
					)&lt;br /&gt;
					.append(&lt;br /&gt;
						$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;).text(&lt;br /&gt;
							`${locale.source.other[liquid.localeName]} (${amount}ml)`,&lt;br /&gt;
						),&lt;br /&gt;
						$(&#039;&amp;lt;p&amp;gt;&#039;).text(locale.source.other[liquid.localeName + &#039;dsc&#039;] || &#039;&#039;),&lt;br /&gt;
					)&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			const usableTags = []&lt;br /&gt;
&lt;br /&gt;
			// 액체가 들어있을 수 있는 경우&lt;br /&gt;
			if (item.capacity &amp;gt; 0) {&lt;br /&gt;
				footTags.push($(&#039;&amp;lt;section class=&amp;quot;cu-liquids&amp;quot;&amp;gt;&#039;).append(liquidTags))&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 무게가 있는 경우&lt;br /&gt;
			if (item.weight &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p class=&amp;quot;essential&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-0&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.weight}: ${item.weight || 0}u`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 손으로만 들 수 있는 경우&lt;br /&gt;
			if (item.onlyHoldInHands) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#ff8787&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemonlyinhands),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (item.usable) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#a6ffaa&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-6&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(&lt;br /&gt;
							item.usableWithLMB&lt;br /&gt;
								? locale.source.other.itemusablehand&lt;br /&gt;
								: locale.source.other.itemusableinventory,&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사지에 사용할 수 있는 경우&lt;br /&gt;
			if (itemActuallyUsableOnLimb) {&lt;br /&gt;
				usableTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;span style=&amp;quot;color:#fffb91&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-12&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusablewound),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 사용할 수 있는 경우&lt;br /&gt;
			if (usableTags.length &amp;gt; 0) {&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#a3a3a3&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-11&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(locale.source.other.itemusable)&lt;br /&gt;
						.append(&lt;br /&gt;
							usableTags.reduce(&lt;br /&gt;
								(p, c) =&amp;gt; (p.length &amp;gt; 0 ? [...p, &#039;/&#039;, c] : [c]),&lt;br /&gt;
								[],&lt;br /&gt;
							),&lt;br /&gt;
						),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// 가치가 있는 경우&lt;br /&gt;
			if (itemValue &amp;gt; 0) {&lt;br /&gt;
				const displayItemValue = Math.round(Math.min(itemValue, 50))&lt;br /&gt;
				footTags.push(&lt;br /&gt;
					$(&#039;&amp;lt;p style=&amp;quot;color:#f6ff73&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
						.append(&#039;&amp;lt;i class=&amp;quot;cu-icon c-9&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
						.append(`${locale.source.other.itemvalue}${displayItemValue}c`),&lt;br /&gt;
				)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$tooltip = $(&#039;&amp;lt;div class=&amp;quot;cu-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(headTags))&lt;br /&gt;
				.append(&#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
				.append($(&#039;&amp;lt;section&amp;gt;&#039;).append(footTags))&lt;br /&gt;
&lt;br /&gt;
			if (e.shiftKey) {&lt;br /&gt;
				$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$body.append($tooltip)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerLeave(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.remove()&lt;br /&gt;
				$tooltip = null&lt;br /&gt;
				$target = null&lt;br /&gt;
			}&lt;br /&gt;
			$target = null&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {PointerEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onPointerMove(e) {&lt;br /&gt;
			if (!$tooltip || !$target) {&lt;br /&gt;
				return&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			const event = e.type.includes(&#039;touch&#039;) ? e.originalEvent.touches[0] : e&lt;br /&gt;
			const gap = parseInt($tooltip.data(&#039;cuiGap&#039;), 10) || 14&lt;br /&gt;
			const x = event.clientX + gap&lt;br /&gt;
			const y = event.clientY + gap&lt;br /&gt;
&lt;br /&gt;
			requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
				if ($tooltip) {&lt;br /&gt;
					$tooltip.css({&lt;br /&gt;
						left: `${Math.max(0, Math.min(x, window.innerWidth - $tooltip.outerWidth(true)))}px`,&lt;br /&gt;
						top: `${Math.max(0, Math.min(y, window.innerHeight - $tooltip.outerHeight(true)))}px`,&lt;br /&gt;
					})&lt;br /&gt;
				}&lt;br /&gt;
			})&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {KeyboardEvent} e&lt;br /&gt;
		 * @returns&lt;br /&gt;
		 */&lt;br /&gt;
		function onKey(e) {&lt;br /&gt;
			if ($tooltip) {&lt;br /&gt;
				$tooltip.removeAttr(&#039;open&#039;)&lt;br /&gt;
				if (e.shiftKey) {&lt;br /&gt;
					$tooltip.attr(&#039;open&#039;, &#039;&#039;)&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$(&#039;[data-cui]&#039;)&lt;br /&gt;
			.on(&#039;pointerenter&#039;, onPointerEnter)&lt;br /&gt;
			.on(&#039;pointerleave&#039;, onPointerLeave)&lt;br /&gt;
			.on(&#039;pointermove&#039;, onPointerMove)&lt;br /&gt;
		$(&#039;body&#039;).on(&#039;keyup keydown&#039;, onKey)&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setup() {&lt;br /&gt;
	$(&#039;html&#039;).addClass(&#039;gadget-cu&#039;)&lt;br /&gt;
&lt;br /&gt;
	for (const [name, func] of Object.entries(scripts)) {&lt;br /&gt;
		try {&lt;br /&gt;
			func(name)&lt;br /&gt;
		} catch (e) {&lt;br /&gt;
			console.error(name, e)&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (globalThis.mw) {&lt;br /&gt;
	mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;], () =&amp;gt; {&lt;br /&gt;
		$(() =&amp;gt; {&lt;br /&gt;
			if (mw.config.get(&#039;wgCategories&#039;).includes(&#039;Casualties: Unknown&#039;)) {&lt;br /&gt;
				setup()&lt;br /&gt;
			}&lt;br /&gt;
		})&lt;br /&gt;
	})&lt;br /&gt;
} else {&lt;br /&gt;
	setup()&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=215</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=215"/>
		<updated>2026-05-27T10:39:02Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#css:&lt;br /&gt;
  .mw-body-header {&lt;br /&gt;
     display: none;&lt;br /&gt;
  }&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Fonts/Mulmaro.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:5% 0; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;randomimagebycategory categories=&amp;quot;CU/Expie&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;big style=&amp;quot;font-family:&#039;TemplateStyles_Mulmaro&#039;&amp;quot;&amp;gt;bi-bipolar&#039;s hideout&amp;lt;/big&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://discord.com/users/763014844793225246&lt;br /&gt;
icon = {{#fab:discord}}&lt;br /&gt;
title = Discord&lt;br /&gt;
&lt;br /&gt;
https://steamcommunity.com/id/kawalain&lt;br /&gt;
icon = {{#fab:steam}}&lt;br /&gt;
title = Steam&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
https://vmm.pw&lt;br /&gt;
icon = {{#fas:folder-tree}}&lt;br /&gt;
title = Files&lt;br /&gt;
&lt;br /&gt;
https://git.vmm.pw&lt;br /&gt;
icon = {{#fab:git}}&lt;br /&gt;
title = Git&lt;br /&gt;
&lt;br /&gt;
https://vod.vmm.pw &lt;br /&gt;
icon = {{#fas:tv}}&lt;br /&gt;
title = Videos&lt;br /&gt;
&lt;br /&gt;
https://book.vmm.pw &lt;br /&gt;
icon = {{#fas:book-skull}}&lt;br /&gt;
title = Books&lt;br /&gt;
&lt;br /&gt;
https://ai.vmm.pw &lt;br /&gt;
icon = {{#fas:robot}}&lt;br /&gt;
title = AIs&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=212</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=212"/>
		<updated>2026-05-27T01:50:26Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;i.kawa {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentcolor;&lt;br /&gt;
	mask-size: contain;&lt;br /&gt;
	mask-position: center;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.kawa-namuwiki { mask-image: url(&amp;quot;data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgIDxwYXRoIGQ9Im0xMTAsMGMtNjAuNzUsMCAtMTEwLDQ5LjI0IC0xMTAsMTEwYzAsNjAuNzUgNDkuMjUsMTEwIDExMCwxMTBjNjAuNzYsMCAxMTAsLTQ5LjI1IDExMCwtMTEwYzAsLTYwLjc2IC00OS4yNCwtMTEwIC0xMTAsLTExMHptNzEuODIsMTI5LjEyYy01LjU1LDAuMDQgLTEwLjU1LC0yLjMyIC0xNC4wNywtNi4wOGwtMzMuMTIsMTQuMDFsNC41NSwxMC43NmE1LjA4LDUuMDggMCAwIDEgLTIuNjksNi42NmE1LjA4LDUuMDggMCAwIDEgLTYuNjYsLTIuNzFsLTExLjI4LC0yNi42NWwtNDQuNzYsMTguOTRjMC4xLDAuNzcgMC4xOCwxLjU2IDAuMTgsMi4zNGMwLjA4LDEwLjUyIC04LjQxLDE5LjEzIC0xOC45MiwxOS4yMmMtMTAuNSwwLjA3IC0xOS4xMiwtOC40MSAtMTkuMiwtMTguOTJjLTAuMDgsLTEwLjUxIDguNDEsLTE5LjEyIDE4LjkyLC0xOS4yMWM2LjA5LC0wLjA1IDExLjUzLDIuNzkgMTUuMDUsNy4yM2w4LjI5LC0zLjVsLTE2LjQ3LC0zOC45MWMtMC42MSwwLjA2IC0xLjIzLDAuMTEgLTEuODUsMC4xMWMtMTAuNTEsMC4wOCAtMTkuMTMsLTguNDEgLTE5LjIxLC0xOC45MmMtMC4wOCwtMTAuNTEgOC40MSwtMTkuMTMgMTguOTIsLTE5LjIxYzEwLjUxLC0wLjA3IDE5LjEyLDguNDEgMTkuMiwxOC45MmMwLjA1LDYuMjcgLTIuOTYsMTEuODUgLTcuNjIsMTUuMzZsMTYuMzgsMzguNjhsMjcuMTMsLTExLjQ4bC0zLjUzLC04LjMzYy0wLjg0LDAuMTIgLTEuNywwLjIxIC0yLjU4LDAuMjJjLTEwLjUxLDAuMDggLTE5LjEyLC04LjQxIC0xOS4yMSwtMTguOTFjLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMyw4LjQxIDE5LjIxLDE4LjkxYzAuMDQsNi4wMSAtMi43MSwxMS4zOSAtNy4wNCwxNC45MWwxMC4zMSwyNC4zNWwzMi4zNiwtMTMuN2ExOS4xLDE5LjEgMCAwIDEgLTAuNDEsLTMuNzljLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMiw4LjQxIDE5LjIsMTguOTFjMC4wOCwxMC41MiAtOC40MSwxOS4xNCAtMTguOTIsMTkuMjF6Ii8+CiAgIDxwYXRoIGQ9Im02Ny41Myw3My4yOWMtMC4wNCwtNC4zNSAtMy42LC03Ljg3IC03Ljk0LC03LjgzYy00LjM2LDAuMDMgLTcuODcsMy42IC03LjgzLDcuOTRjMC4wMyw0LjM2IDMuNTksNy44NyA3Ljk0LDcuODNjNC4zNSwtMC4wMyA3Ljg2LC0zLjU5IDcuODMsLTcuOTR6Ii8+CiAgIDxwYXRoIGQ9Im01NC44NSwxMzguNjVjLTQuMzUsMC4wNCAtNy44NiwzLjYgLTcuODMsNy45NGE3Ljg5LDcuODkgMCAwIDAgNy45NSw3Ljg0YzQuMzQsLTAuMDMgNy44NiwtMy42MSA3LjgzLC03Ljk1Yy0wLjA0LC00LjM0IC0zLjYsLTcuODYgLTcuOTUsLTcuODRsMCwwLjAxeiIvPgogICA8cGF0aCBkPSJtMTE2LjIyLDg4LjUzYy0wLjAzLC00LjM1IC0zLjYsLTcuODYgLTcuOTQsLTcuODNjLTQuMzYsMC4wMyAtNy44NiwzLjYgLTcuODMsNy45NWMwLjAzLDQuMzUgMy42LDcuODUgNy45NCw3LjgyYzQuMzYsLTAuMDMgNy44NywtMy41OSA3LjgzLC03Ljk0eiIvPgogICA8cGF0aCBkPSJtMTgxLjYyLDEwMi4xN2MtNC4zNSwwLjAzIC03Ljg2LDMuNiAtNy44Myw3Ljk1YzAuMDMsNC4zNSAzLjYsNy44NSA3Ljk1LDcuODNjNC4zNSwtMC4wNCA3Ljg2LC0zLjYgNy44MywtNy45NWMtMC4wNCwtNC4zNSAtMy42MSwtNy44NiAtNy45NSwtNy44M3oiLz4KPC9zdmc+&amp;quot;) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************&lt;br /&gt;
 * Module:Deck&lt;br /&gt;
 *******************************/&lt;br /&gt;
:root {&lt;br /&gt;
	--kawa-deck-gap: 1.25em;&lt;br /&gt;
	--kawa-deck-speed: 0.25s;&lt;br /&gt;
	--kawa-deck-timing: cubic-bezier(0.16, 1, 0.3, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck,&lt;br /&gt;
.kawa-deck * {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: var(--kawa-deck-gap);&lt;br /&gt;
	gap: var(--kawa-deck-gap);&lt;br /&gt;
	container-type: inline-size;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		aspect-ratio: 1 / 1;&lt;br /&gt;
		flex: 1 1;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		border-radius: 12px;&lt;br /&gt;
		outline: currentcolor solid 2px;&lt;br /&gt;
		background: initial;&lt;br /&gt;
		transition:&lt;br /&gt;
			outline var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span {&lt;br /&gt;
			position: absolute;&lt;br /&gt;
			top: 0;&lt;br /&gt;
			left: 0;&lt;br /&gt;
			width: 100%;&lt;br /&gt;
			height: 100%;&lt;br /&gt;
			display: flex;&lt;br /&gt;
			align-items: center;&lt;br /&gt;
			justify-content: center;&lt;br /&gt;
			pointer-events: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
			opacity: 1;&lt;br /&gt;
			transition:&lt;br /&gt;
				font-size var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; img {&lt;br /&gt;
				max-width: 40px;&lt;br /&gt;
				max-height: 40px;&lt;br /&gt;
				object-fit: contain;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
			text-align: center;&lt;br /&gt;
			opacity: 0;&lt;br /&gt;
			transform: scale(1.15);&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:hover,&lt;br /&gt;
		&amp;amp;:focus-visible {&lt;br /&gt;
			outline-width: 8px;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
				opacity: 0;&lt;br /&gt;
				transform: scale(0.7);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
				opacity: 1;&lt;br /&gt;
				transform: scale(1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:has(+ .kawa-deck) {&lt;br /&gt;
		padding-bottom: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 0px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (2 * var(--kawa-deck-gap))) / 3);&lt;br /&gt;
			max-height: calc((100cqw - (2 * var(--kawa-deck-gap))) / 3);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 1em; }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 320px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 2em; }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 480px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] { &lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 3em; }&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 768px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (3 * var(--kawa-deck-gap))) / 4);&lt;br /&gt;
			max-height: calc((100cqw - (3 * var(--kawa-deck-gap))) / 4);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 1024px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (5 * var(--kawa-deck-gap))) / 6);&lt;br /&gt;
			max-height: calc((100cqw - (5 * var(--kawa-deck-gap))) / 6);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 1280px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (6 * var(--kawa-deck-gap))) / 7);&lt;br /&gt;
			max-height: calc((100cqw - (6 * var(--kawa-deck-gap))) / 7);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=211</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=211"/>
		<updated>2026-05-27T01:47:35Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#css:&lt;br /&gt;
  .mw-body-header {&lt;br /&gt;
     display: none;&lt;br /&gt;
  }&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Fonts/Mulmaro.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:15% 0; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;randomimagebycategory categories=&amp;quot;CU/Expie&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;big style=&amp;quot;font-family:&#039;TemplateStyles_Mulmaro&#039;&amp;quot;&amp;gt;bi-bipolar&#039;s hideout&amp;lt;/big&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://discord.com/users/763014844793225246&lt;br /&gt;
icon = {{#fab:discord}}&lt;br /&gt;
title = Discord&lt;br /&gt;
&lt;br /&gt;
https://steamcommunity.com/id/kawalain&lt;br /&gt;
icon = {{#fab:steam}}&lt;br /&gt;
title = Steam&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
https://vmm.pwa&lt;br /&gt;
icon = {{#fas:folder-tree}}&lt;br /&gt;
title = Files&lt;br /&gt;
&lt;br /&gt;
https://git.vmm.pw&lt;br /&gt;
icon = {{#fab:git}}&lt;br /&gt;
title = Git&lt;br /&gt;
&lt;br /&gt;
https://vod.vmm.pw &lt;br /&gt;
icon = {{#fas:tv}}&lt;br /&gt;
title = Videos&lt;br /&gt;
&lt;br /&gt;
https://book.vmm.pw &lt;br /&gt;
icon = {{#fas:book-skull}}&lt;br /&gt;
title = Books&lt;br /&gt;
&lt;br /&gt;
https://ai.vmm.pw &lt;br /&gt;
icon = {{#fas:robot}}&lt;br /&gt;
title = AIs&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=210</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=210"/>
		<updated>2026-05-27T01:46:54Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#css:&lt;br /&gt;
  .mw-body-header {&lt;br /&gt;
     display: none;&lt;br /&gt;
  }&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Fonts/Mulmaro.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:5% 0; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;randomimagebycategory categories=&amp;quot;CU/Expie&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;big style=&amp;quot;font-family:&#039;TemplateStyles_Mulmaro&#039;&amp;quot;&amp;gt;bi-bipolar&#039;s hideout&amp;lt;/big&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://discord.com/users/763014844793225246&lt;br /&gt;
icon = {{#fab:discord}}&lt;br /&gt;
title = Discord&lt;br /&gt;
&lt;br /&gt;
https://steamcommunity.com/id/kawalain&lt;br /&gt;
icon = {{#fab:steam}}&lt;br /&gt;
title = Steam&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
https://vmm.pwa&lt;br /&gt;
icon = {{#fas:folder-tree}}&lt;br /&gt;
title = Files&lt;br /&gt;
&lt;br /&gt;
https://git.vmm.pw&lt;br /&gt;
icon = {{#fab:git}}&lt;br /&gt;
title = Git&lt;br /&gt;
&lt;br /&gt;
https://vod.vmm.pw &lt;br /&gt;
icon = {{#fas:tv}}&lt;br /&gt;
title = Videos&lt;br /&gt;
&lt;br /&gt;
https://book.vmm.pw &lt;br /&gt;
icon = {{#fas:book-skull}}&lt;br /&gt;
title = Books&lt;br /&gt;
&lt;br /&gt;
https://ai.vmm.pw &lt;br /&gt;
icon = {{#fas:robot}}&lt;br /&gt;
title = AIs&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=209</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=209"/>
		<updated>2026-05-27T01:46:49Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;i.kawa {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentcolor;&lt;br /&gt;
	mask-size: contain;&lt;br /&gt;
	mask-position: center;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.kawa-namuwiki { mask-image: url(&amp;quot;data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgIDxwYXRoIGQ9Im0xMTAsMGMtNjAuNzUsMCAtMTEwLDQ5LjI0IC0xMTAsMTEwYzAsNjAuNzUgNDkuMjUsMTEwIDExMCwxMTBjNjAuNzYsMCAxMTAsLTQ5LjI1IDExMCwtMTEwYzAsLTYwLjc2IC00OS4yNCwtMTEwIC0xMTAsLTExMHptNzEuODIsMTI5LjEyYy01LjU1LDAuMDQgLTEwLjU1LC0yLjMyIC0xNC4wNywtNi4wOGwtMzMuMTIsMTQuMDFsNC41NSwxMC43NmE1LjA4LDUuMDggMCAwIDEgLTIuNjksNi42NmE1LjA4LDUuMDggMCAwIDEgLTYuNjYsLTIuNzFsLTExLjI4LC0yNi42NWwtNDQuNzYsMTguOTRjMC4xLDAuNzcgMC4xOCwxLjU2IDAuMTgsMi4zNGMwLjA4LDEwLjUyIC04LjQxLDE5LjEzIC0xOC45MiwxOS4yMmMtMTAuNSwwLjA3IC0xOS4xMiwtOC40MSAtMTkuMiwtMTguOTJjLTAuMDgsLTEwLjUxIDguNDEsLTE5LjEyIDE4LjkyLC0xOS4yMWM2LjA5LC0wLjA1IDExLjUzLDIuNzkgMTUuMDUsNy4yM2w4LjI5LC0zLjVsLTE2LjQ3LC0zOC45MWMtMC42MSwwLjA2IC0xLjIzLDAuMTEgLTEuODUsMC4xMWMtMTAuNTEsMC4wOCAtMTkuMTMsLTguNDEgLTE5LjIxLC0xOC45MmMtMC4wOCwtMTAuNTEgOC40MSwtMTkuMTMgMTguOTIsLTE5LjIxYzEwLjUxLC0wLjA3IDE5LjEyLDguNDEgMTkuMiwxOC45MmMwLjA1LDYuMjcgLTIuOTYsMTEuODUgLTcuNjIsMTUuMzZsMTYuMzgsMzguNjhsMjcuMTMsLTExLjQ4bC0zLjUzLC04LjMzYy0wLjg0LDAuMTIgLTEuNywwLjIxIC0yLjU4LDAuMjJjLTEwLjUxLDAuMDggLTE5LjEyLC04LjQxIC0xOS4yMSwtMTguOTFjLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMyw4LjQxIDE5LjIxLDE4LjkxYzAuMDQsNi4wMSAtMi43MSwxMS4zOSAtNy4wNCwxNC45MWwxMC4zMSwyNC4zNWwzMi4zNiwtMTMuN2ExOS4xLDE5LjEgMCAwIDEgLTAuNDEsLTMuNzljLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMiw4LjQxIDE5LjIsMTguOTFjMC4wOCwxMC41MiAtOC40MSwxOS4xNCAtMTguOTIsMTkuMjF6Ii8+CiAgIDxwYXRoIGQ9Im02Ny41Myw3My4yOWMtMC4wNCwtNC4zNSAtMy42LC03Ljg3IC03Ljk0LC03LjgzYy00LjM2LDAuMDMgLTcuODcsMy42IC03LjgzLDcuOTRjMC4wMyw0LjM2IDMuNTksNy44NyA3Ljk0LDcuODNjNC4zNSwtMC4wMyA3Ljg2LC0zLjU5IDcuODMsLTcuOTR6Ii8+CiAgIDxwYXRoIGQ9Im01NC44NSwxMzguNjVjLTQuMzUsMC4wNCAtNy44NiwzLjYgLTcuODMsNy45NGE3Ljg5LDcuODkgMCAwIDAgNy45NSw3Ljg0YzQuMzQsLTAuMDMgNy44NiwtMy42MSA3LjgzLC03Ljk1Yy0wLjA0LC00LjM0IC0zLjYsLTcuODYgLTcuOTUsLTcuODRsMCwwLjAxeiIvPgogICA8cGF0aCBkPSJtMTE2LjIyLDg4LjUzYy0wLjAzLC00LjM1IC0zLjYsLTcuODYgLTcuOTQsLTcuODNjLTQuMzYsMC4wMyAtNy44NiwzLjYgLTcuODMsNy45NWMwLjAzLDQuMzUgMy42LDcuODUgNy45NCw3LjgyYzQuMzYsLTAuMDMgNy44NywtMy41OSA3LjgzLC03Ljk0eiIvPgogICA8cGF0aCBkPSJtMTgxLjYyLDEwMi4xN2MtNC4zNSwwLjAzIC03Ljg2LDMuNiAtNy44Myw3Ljk1YzAuMDMsNC4zNSAzLjYsNy44NSA3Ljk1LDcuODNjNC4zNSwtMC4wNCA3Ljg2LC0zLjYgNy44MywtNy45NWMtMC4wNCwtNC4zNSAtMy42MSwtNy44NiAtNy45NSwtNy44M3oiLz4KPC9zdmc+&amp;quot;) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************&lt;br /&gt;
 * Module:Deck&lt;br /&gt;
 *******************************/&lt;br /&gt;
:root {&lt;br /&gt;
	--kawa-deck-gap: 1.25em;&lt;br /&gt;
	--kawa-deck-speed: 0.25s;&lt;br /&gt;
	--kawa-deck-timing: cubic-bezier(0.16, 1, 0.3, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck,&lt;br /&gt;
.kawa-deck * {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: var(--kawa-deck-gap);&lt;br /&gt;
	gap: var(--kawa-deck-gap);&lt;br /&gt;
	container-type: inline-size;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		aspect-ratio: 1 / 1;&lt;br /&gt;
		flex: 1 1;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		border-radius: 12px;&lt;br /&gt;
		outline: currentcolor solid 2px;&lt;br /&gt;
		background: initial;&lt;br /&gt;
		transition:&lt;br /&gt;
			outline var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span {&lt;br /&gt;
			position: absolute;&lt;br /&gt;
			top: 0;&lt;br /&gt;
			left: 0;&lt;br /&gt;
			width: 100%;&lt;br /&gt;
			height: 100%;&lt;br /&gt;
			display: flex;&lt;br /&gt;
			align-items: center;&lt;br /&gt;
			justify-content: center;&lt;br /&gt;
			pointer-events: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
			opacity: 1;&lt;br /&gt;
			transition:&lt;br /&gt;
				font-size var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; img {&lt;br /&gt;
				max-width: 40px;&lt;br /&gt;
				max-height: 40px;&lt;br /&gt;
				object-fit: contain;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
			opacity: 0;&lt;br /&gt;
			transform: scale(1.15);&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:hover,&lt;br /&gt;
		&amp;amp;:focus-visible {&lt;br /&gt;
			outline-width: 8px;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
				opacity: 0;&lt;br /&gt;
				transform: scale(0.7);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
				opacity: 1;&lt;br /&gt;
				transform: scale(1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:has(+ .kawa-deck) {&lt;br /&gt;
		padding-bottom: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 0px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (2 * var(--kawa-deck-gap))) / 3);&lt;br /&gt;
			max-height: calc((100cqw - (2 * var(--kawa-deck-gap))) / 3);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 1em; }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 320px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 2em; }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 480px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] { &lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 3em; }&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 768px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (3 * var(--kawa-deck-gap))) / 4);&lt;br /&gt;
			max-height: calc((100cqw - (3 * var(--kawa-deck-gap))) / 4);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 1024px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (5 * var(--kawa-deck-gap))) / 6);&lt;br /&gt;
			max-height: calc((100cqw - (5 * var(--kawa-deck-gap))) / 6);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 1280px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (6 * var(--kawa-deck-gap))) / 7);&lt;br /&gt;
			max-height: calc((100cqw - (6 * var(--kawa-deck-gap))) / 7);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=208</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=208"/>
		<updated>2026-05-27T01:38:59Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;i.kawa {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentcolor;&lt;br /&gt;
	mask-size: contain;&lt;br /&gt;
	mask-position: center;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.kawa-namuwiki { mask-image: url(&amp;quot;data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgIDxwYXRoIGQ9Im0xMTAsMGMtNjAuNzUsMCAtMTEwLDQ5LjI0IC0xMTAsMTEwYzAsNjAuNzUgNDkuMjUsMTEwIDExMCwxMTBjNjAuNzYsMCAxMTAsLTQ5LjI1IDExMCwtMTEwYzAsLTYwLjc2IC00OS4yNCwtMTEwIC0xMTAsLTExMHptNzEuODIsMTI5LjEyYy01LjU1LDAuMDQgLTEwLjU1LC0yLjMyIC0xNC4wNywtNi4wOGwtMzMuMTIsMTQuMDFsNC41NSwxMC43NmE1LjA4LDUuMDggMCAwIDEgLTIuNjksNi42NmE1LjA4LDUuMDggMCAwIDEgLTYuNjYsLTIuNzFsLTExLjI4LC0yNi42NWwtNDQuNzYsMTguOTRjMC4xLDAuNzcgMC4xOCwxLjU2IDAuMTgsMi4zNGMwLjA4LDEwLjUyIC04LjQxLDE5LjEzIC0xOC45MiwxOS4yMmMtMTAuNSwwLjA3IC0xOS4xMiwtOC40MSAtMTkuMiwtMTguOTJjLTAuMDgsLTEwLjUxIDguNDEsLTE5LjEyIDE4LjkyLC0xOS4yMWM2LjA5LC0wLjA1IDExLjUzLDIuNzkgMTUuMDUsNy4yM2w4LjI5LC0zLjVsLTE2LjQ3LC0zOC45MWMtMC42MSwwLjA2IC0xLjIzLDAuMTEgLTEuODUsMC4xMWMtMTAuNTEsMC4wOCAtMTkuMTMsLTguNDEgLTE5LjIxLC0xOC45MmMtMC4wOCwtMTAuNTEgOC40MSwtMTkuMTMgMTguOTIsLTE5LjIxYzEwLjUxLC0wLjA3IDE5LjEyLDguNDEgMTkuMiwxOC45MmMwLjA1LDYuMjcgLTIuOTYsMTEuODUgLTcuNjIsMTUuMzZsMTYuMzgsMzguNjhsMjcuMTMsLTExLjQ4bC0zLjUzLC04LjMzYy0wLjg0LDAuMTIgLTEuNywwLjIxIC0yLjU4LDAuMjJjLTEwLjUxLDAuMDggLTE5LjEyLC04LjQxIC0xOS4yMSwtMTguOTFjLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMyw4LjQxIDE5LjIxLDE4LjkxYzAuMDQsNi4wMSAtMi43MSwxMS4zOSAtNy4wNCwxNC45MWwxMC4zMSwyNC4zNWwzMi4zNiwtMTMuN2ExOS4xLDE5LjEgMCAwIDEgLTAuNDEsLTMuNzljLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMiw4LjQxIDE5LjIsMTguOTFjMC4wOCwxMC41MiAtOC40MSwxOS4xNCAtMTguOTIsMTkuMjF6Ii8+CiAgIDxwYXRoIGQ9Im02Ny41Myw3My4yOWMtMC4wNCwtNC4zNSAtMy42LC03Ljg3IC03Ljk0LC03LjgzYy00LjM2LDAuMDMgLTcuODcsMy42IC03LjgzLDcuOTRjMC4wMyw0LjM2IDMuNTksNy44NyA3Ljk0LDcuODNjNC4zNSwtMC4wMyA3Ljg2LC0zLjU5IDcuODMsLTcuOTR6Ii8+CiAgIDxwYXRoIGQ9Im01NC44NSwxMzguNjVjLTQuMzUsMC4wNCAtNy44NiwzLjYgLTcuODMsNy45NGE3Ljg5LDcuODkgMCAwIDAgNy45NSw3Ljg0YzQuMzQsLTAuMDMgNy44NiwtMy42MSA3LjgzLC03Ljk1Yy0wLjA0LC00LjM0IC0zLjYsLTcuODYgLTcuOTUsLTcuODRsMCwwLjAxeiIvPgogICA8cGF0aCBkPSJtMTE2LjIyLDg4LjUzYy0wLjAzLC00LjM1IC0zLjYsLTcuODYgLTcuOTQsLTcuODNjLTQuMzYsMC4wMyAtNy44NiwzLjYgLTcuODMsNy45NWMwLjAzLDQuMzUgMy42LDcuODUgNy45NCw3LjgyYzQuMzYsLTAuMDMgNy44NywtMy41OSA3LjgzLC03Ljk0eiIvPgogICA8cGF0aCBkPSJtMTgxLjYyLDEwMi4xN2MtNC4zNSwwLjAzIC03Ljg2LDMuNiAtNy44Myw3Ljk1YzAuMDMsNC4zNSAzLjYsNy44NSA3Ljk1LDcuODNjNC4zNSwtMC4wNCA3Ljg2LC0zLjYgNy44MywtNy45NWMtMC4wNCwtNC4zNSAtMy42MSwtNy44NiAtNy45NSwtNy44M3oiLz4KPC9zdmc+&amp;quot;) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************&lt;br /&gt;
 * Module:Deck&lt;br /&gt;
 *******************************/&lt;br /&gt;
:root {&lt;br /&gt;
	--kawa-deck-gap: 1.25em;&lt;br /&gt;
	--kawa-deck-speed: 0.25s;&lt;br /&gt;
	--kawa-deck-timing: cubic-bezier(0.16, 1, 0.3, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck,&lt;br /&gt;
.kawa-deck * {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: var(--kawa-deck-gap);&lt;br /&gt;
	gap: var(--kawa-deck-gap);&lt;br /&gt;
	container-type: inline-size;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		aspect-ratio: 1 / 1;&lt;br /&gt;
		flex: 1 1;&lt;br /&gt;
		flex-basis: calc((100% - (2 * var(--kawa-deck-gap))) / 3);&lt;br /&gt;
		max-height: calc((100cqw - var(--kawa-deck-gap)) / 3);&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		border-radius: 12px;&lt;br /&gt;
		outline: currentcolor solid 2px;&lt;br /&gt;
		background: initial;&lt;br /&gt;
		transition:&lt;br /&gt;
			outline var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span {&lt;br /&gt;
			position: absolute;&lt;br /&gt;
			top: 0;&lt;br /&gt;
			left: 0;&lt;br /&gt;
			width: 100%;&lt;br /&gt;
			height: 100%;&lt;br /&gt;
			display: flex;&lt;br /&gt;
			align-items: center;&lt;br /&gt;
			justify-content: center;&lt;br /&gt;
			pointer-events: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
			font-size: 1.5em;&lt;br /&gt;
			opacity: 1;&lt;br /&gt;
			transition:&lt;br /&gt;
				font-size var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; img {&lt;br /&gt;
				max-width: 40px;&lt;br /&gt;
				max-height: 40px;&lt;br /&gt;
				object-fit: contain;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
			opacity: 0;&lt;br /&gt;
			transform: scale(1.15);&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:hover,&lt;br /&gt;
		&amp;amp;:focus-visible {&lt;br /&gt;
			outline-width: 8px;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
				opacity: 0;&lt;br /&gt;
				transform: scale(0.7);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
				opacity: 1;&lt;br /&gt;
				transform: scale(1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;:has(+ .kawa-deck) {&lt;br /&gt;
		margin-bottom: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 480px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] { &lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 3em; }&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @container (min-width: 768px) {&lt;br /&gt;
        &amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (3 * var(--kawa-deck-gap))) / 4);&lt;br /&gt;
			max-height: calc((100cqw - var(--kawa-deck-gap)) / 4);&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @container (min-width: 1024px) {&lt;br /&gt;
        &amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (5 * var(--kawa-deck-gap))) / 6);&lt;br /&gt;
			max-height: calc((100cqw - var(--kawa-deck-gap)) / 6);&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=207</id>
		<title>모듈:Deck</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=207"/>
		<updated>2026-05-27T01:34:46Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.render(f)&lt;br /&gt;
	local args = f:getParent().args&lt;br /&gt;
	if args[&#039;items&#039;] == nil then&lt;br /&gt;
		args = f.args&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lines = (args[&#039;items&#039;] or &#039;&#039;):gmatch(&amp;quot;([^\n]+)&amp;quot;)&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for line in lines do&lt;br /&gt;
		line = mw.text.trim(line)&lt;br /&gt;
&lt;br /&gt;
		if line ~= &#039;&#039; then&lt;br /&gt;
			local key, value = line:match(&#039;^([%w%s]+)=(.+)$&#039;)&lt;br /&gt;
			if key and value then&lt;br /&gt;
				key = mw.text.trim(key):lower()&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				if key ~= &#039;&#039; then&lt;br /&gt;
					items[#items][key] = value&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(items, {&lt;br /&gt;
					url = line&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- HTML&lt;br /&gt;
	local decks = {&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local url = item.url or &#039;#&#039;&lt;br /&gt;
		if url:match(&#039;^-+$&#039;) then&lt;br /&gt;
			decks[#decks + 1] = &#039;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			local icon = item.icon or &#039;&#039;&lt;br /&gt;
			local title = mw.text.trim(item.title or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
			local wikitext = &#039;&amp;lt;span&amp;gt;&#039; .. icon .. &#039;&amp;lt;/span&amp;gt;&#039; .. &#039;&amp;lt;span&amp;gt;&#039; .. title .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
			decks[#decks] = decks[#decks] .. &#039;[&#039; .. url .. &#039; &#039; .. wikitext .. &#039;]&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = &#039;&#039;&lt;br /&gt;
	for _, deck in ipairs(decks) do&lt;br /&gt;
		html = html .. &#039;&amp;lt;div class=&amp;quot;kawa-deck&amp;quot;&amp;gt;&#039; .. deck .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return f:preprocess(html)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=206</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=206"/>
		<updated>2026-05-27T01:33:04Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;i.kawa {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentcolor;&lt;br /&gt;
	mask-size: contain;&lt;br /&gt;
	mask-position: center;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.kawa-namuwiki { mask-image: url(&amp;quot;data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgIDxwYXRoIGQ9Im0xMTAsMGMtNjAuNzUsMCAtMTEwLDQ5LjI0IC0xMTAsMTEwYzAsNjAuNzUgNDkuMjUsMTEwIDExMCwxMTBjNjAuNzYsMCAxMTAsLTQ5LjI1IDExMCwtMTEwYzAsLTYwLjc2IC00OS4yNCwtMTEwIC0xMTAsLTExMHptNzEuODIsMTI5LjEyYy01LjU1LDAuMDQgLTEwLjU1LC0yLjMyIC0xNC4wNywtNi4wOGwtMzMuMTIsMTQuMDFsNC41NSwxMC43NmE1LjA4LDUuMDggMCAwIDEgLTIuNjksNi42NmE1LjA4LDUuMDggMCAwIDEgLTYuNjYsLTIuNzFsLTExLjI4LC0yNi42NWwtNDQuNzYsMTguOTRjMC4xLDAuNzcgMC4xOCwxLjU2IDAuMTgsMi4zNGMwLjA4LDEwLjUyIC04LjQxLDE5LjEzIC0xOC45MiwxOS4yMmMtMTAuNSwwLjA3IC0xOS4xMiwtOC40MSAtMTkuMiwtMTguOTJjLTAuMDgsLTEwLjUxIDguNDEsLTE5LjEyIDE4LjkyLC0xOS4yMWM2LjA5LC0wLjA1IDExLjUzLDIuNzkgMTUuMDUsNy4yM2w4LjI5LC0zLjVsLTE2LjQ3LC0zOC45MWMtMC42MSwwLjA2IC0xLjIzLDAuMTEgLTEuODUsMC4xMWMtMTAuNTEsMC4wOCAtMTkuMTMsLTguNDEgLTE5LjIxLC0xOC45MmMtMC4wOCwtMTAuNTEgOC40MSwtMTkuMTMgMTguOTIsLTE5LjIxYzEwLjUxLC0wLjA3IDE5LjEyLDguNDEgMTkuMiwxOC45MmMwLjA1LDYuMjcgLTIuOTYsMTEuODUgLTcuNjIsMTUuMzZsMTYuMzgsMzguNjhsMjcuMTMsLTExLjQ4bC0zLjUzLC04LjMzYy0wLjg0LDAuMTIgLTEuNywwLjIxIC0yLjU4LDAuMjJjLTEwLjUxLDAuMDggLTE5LjEyLC04LjQxIC0xOS4yMSwtMTguOTFjLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMyw4LjQxIDE5LjIxLDE4LjkxYzAuMDQsNi4wMSAtMi43MSwxMS4zOSAtNy4wNCwxNC45MWwxMC4zMSwyNC4zNWwzMi4zNiwtMTMuN2ExOS4xLDE5LjEgMCAwIDEgLTAuNDEsLTMuNzljLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMiw4LjQxIDE5LjIsMTguOTFjMC4wOCwxMC41MiAtOC40MSwxOS4xNCAtMTguOTIsMTkuMjF6Ii8+CiAgIDxwYXRoIGQ9Im02Ny41Myw3My4yOWMtMC4wNCwtNC4zNSAtMy42LC03Ljg3IC03Ljk0LC03LjgzYy00LjM2LDAuMDMgLTcuODcsMy42IC03LjgzLDcuOTRjMC4wMyw0LjM2IDMuNTksNy44NyA3Ljk0LDcuODNjNC4zNSwtMC4wMyA3Ljg2LC0zLjU5IDcuODMsLTcuOTR6Ii8+CiAgIDxwYXRoIGQ9Im01NC44NSwxMzguNjVjLTQuMzUsMC4wNCAtNy44NiwzLjYgLTcuODMsNy45NGE3Ljg5LDcuODkgMCAwIDAgNy45NSw3Ljg0YzQuMzQsLTAuMDMgNy44NiwtMy42MSA3LjgzLC03Ljk1Yy0wLjA0LC00LjM0IC0zLjYsLTcuODYgLTcuOTUsLTcuODRsMCwwLjAxeiIvPgogICA8cGF0aCBkPSJtMTE2LjIyLDg4LjUzYy0wLjAzLC00LjM1IC0zLjYsLTcuODYgLTcuOTQsLTcuODNjLTQuMzYsMC4wMyAtNy44NiwzLjYgLTcuODMsNy45NWMwLjAzLDQuMzUgMy42LDcuODUgNy45NCw3LjgyYzQuMzYsLTAuMDMgNy44NywtMy41OSA3LjgzLC03Ljk0eiIvPgogICA8cGF0aCBkPSJtMTgxLjYyLDEwMi4xN2MtNC4zNSwwLjAzIC03Ljg2LDMuNiAtNy44Myw3Ljk1YzAuMDMsNC4zNSAzLjYsNy44NSA3Ljk1LDcuODNjNC4zNSwtMC4wNCA3Ljg2LC0zLjYgNy44MywtNy45NWMtMC4wNCwtNC4zNSAtMy42MSwtNy44NiAtNy45NSwtNy44M3oiLz4KPC9zdmc+&amp;quot;) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************&lt;br /&gt;
 * Module:Deck&lt;br /&gt;
 *******************************/&lt;br /&gt;
:root {&lt;br /&gt;
	--kawa-deck-gap: 1.25em;&lt;br /&gt;
	--kawa-deck-speed: 0.25s;&lt;br /&gt;
	--kawa-deck-timing: cubic-bezier(0.16, 1, 0.3, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck,&lt;br /&gt;
.kawa-deck * {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: var(--kawa-deck-gap);&lt;br /&gt;
	gap: var(--kawa-deck-gap);&lt;br /&gt;
	container-type: inline-size;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		flex: 1 1;&lt;br /&gt;
		flex-basis: calc((100% - (2 * var(--kawa-deck-gap))) / 3); &lt;br /&gt;
		aspect-ratio: 1 / 1;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		border-radius: 12px;&lt;br /&gt;
		outline: currentcolor solid 2px;&lt;br /&gt;
		background: initial;&lt;br /&gt;
		transition:&lt;br /&gt;
			outline var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span {&lt;br /&gt;
			position: absolute;&lt;br /&gt;
			top: 0;&lt;br /&gt;
			left: 0;&lt;br /&gt;
			width: 100%;&lt;br /&gt;
			height: 100%;&lt;br /&gt;
			display: flex;&lt;br /&gt;
			align-items: center;&lt;br /&gt;
			justify-content: center;&lt;br /&gt;
			pointer-events: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
			font-size: 1.5em;&lt;br /&gt;
			opacity: 1;&lt;br /&gt;
			transition:&lt;br /&gt;
				font-size var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; img {&lt;br /&gt;
				max-width: 40px;&lt;br /&gt;
				max-height: 40px;&lt;br /&gt;
				object-fit: contain;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
			opacity: 0;&lt;br /&gt;
			transform: scale(1.15);&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:hover,&lt;br /&gt;
		&amp;amp;:focus-visible {&lt;br /&gt;
			outline-width: 8px;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
				opacity: 0;&lt;br /&gt;
				transform: scale(0.7);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
				opacity: 1;&lt;br /&gt;
				transform: scale(1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 480px) {&lt;br /&gt;
		&amp;amp; &amp;gt; a[href] { &lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child { font-size: 3em; }&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @container (min-width: 768px) {&lt;br /&gt;
        &amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (3 * var(--kawa-deck-gap))) / 4);&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @container (min-width: 1024px) {&lt;br /&gt;
        &amp;amp; &amp;gt; a[href] {&lt;br /&gt;
			flex-basis: calc((100% - (5 * var(--kawa-deck-gap))) / 6);&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=205</id>
		<title>모듈:Deck</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=205"/>
		<updated>2026-05-27T01:32:33Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.render(f)&lt;br /&gt;
	local args = f:getParent().args&lt;br /&gt;
	if args[&#039;items&#039;] == nil then&lt;br /&gt;
		args = f.args&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lines = (args[&#039;items&#039;] or &#039;&#039;):gmatch(&amp;quot;([^\n]+)&amp;quot;)&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for line in lines do&lt;br /&gt;
		line = mw.text.trim(line)&lt;br /&gt;
&lt;br /&gt;
		if line ~= &#039;&#039; then&lt;br /&gt;
			local key, value = line:match(&#039;^([%w%s]+)=(.+)$&#039;)&lt;br /&gt;
			if key and value then&lt;br /&gt;
				key = mw.text.trim(key):lower()&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				if key ~= &#039;&#039; then&lt;br /&gt;
					items[#items][key] = value&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(items, {&lt;br /&gt;
					url = line&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- HTML&lt;br /&gt;
	local decks = {&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local url = item.url or &#039;#&#039;&lt;br /&gt;
		if url:match(&#039;^-{3,}$&#039;) then&lt;br /&gt;
			decks[#decks + 1] = &#039;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			local icon = item.icon or &#039;&#039;&lt;br /&gt;
			local title = mw.text.trim(item.title or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
			local wikitext = &#039;&amp;lt;span&amp;gt;&#039; .. icon .. &#039;&amp;lt;/span&amp;gt;&#039; .. &#039;&amp;lt;span&amp;gt;&#039; .. title .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
			decks[#decks] = decks[#decks] .. &#039;[&#039; .. url .. &#039; &#039; .. wikitext .. &#039;]&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = &#039;&#039;&lt;br /&gt;
	for _, deck in ipairs(decks) do&lt;br /&gt;
		html = html .. &#039;&amp;lt;div class=&amp;quot;kawa-deck&amp;quot;&amp;gt;&#039; .. deck .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return f:preprocess(html)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=204</id>
		<title>모듈:Deck</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=204"/>
		<updated>2026-05-27T00:41:28Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.render(f)&lt;br /&gt;
	local args = f:getParent().args&lt;br /&gt;
	if args[&#039;items&#039;] == nil then&lt;br /&gt;
		args = f.args&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local deck = mw.html.create(&#039;div&#039;):addClass(&#039;kawa-deck&#039;)&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;gap&#039;] then&lt;br /&gt;
		deck:css(&#039;gap&#039;, mw.text.trim(args[&#039;gap&#039;]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lines = (args[&#039;items&#039;] or &#039;&#039;):gmatch(&amp;quot;([^\n]+)&amp;quot;)&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for line in lines do&lt;br /&gt;
		line = mw.text.trim(line)&lt;br /&gt;
&lt;br /&gt;
		if line ~= &#039;&#039; then&lt;br /&gt;
			local key, value = line:match(&#039;^([%w%s]+)=(.+)$&#039;)&lt;br /&gt;
			if key and value then&lt;br /&gt;
				key = mw.text.trim(key):lower()&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				if key ~= &#039;&#039; then&lt;br /&gt;
					items[#items][key] = value&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(items, {&lt;br /&gt;
					url = line&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- HTML&lt;br /&gt;
	local html = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local url = item.url or &#039;#&#039;&lt;br /&gt;
		local icon = item.icon or &#039;&#039;&lt;br /&gt;
		local title = mw.text.trim(item.title or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		html = html .. &#039;[&#039; .. url .. &#039; &#039; .. tostring(mw.html.create(&#039;span&#039;):wikitext(icon)) ..&lt;br /&gt;
			tostring(mw.html.create(&#039;span&#039;):wikitext(title)) .. &#039;]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	deck:wikitext(html)&lt;br /&gt;
&lt;br /&gt;
	return f:preprocess(tostring(deck))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=203</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=203"/>
		<updated>2026-05-26T13:16:17Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#css:&lt;br /&gt;
  .mw-body-header {&lt;br /&gt;
     display: none;&lt;br /&gt;
  }&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Fonts/Mulmaro.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:5% 0; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;randomimagebycategory categories=&amp;quot;CU/Expie&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;big style=&amp;quot;font-family:&#039;TemplateStyles_Mulmaro&#039;&amp;quot;&amp;gt;bi-bipolar&#039;s hideout&amp;lt;/big&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://discord.com/users/763014844793225246&lt;br /&gt;
icon = {{#fab:discord}}&lt;br /&gt;
title = Discord&lt;br /&gt;
&lt;br /&gt;
https://steamcommunity.com/id/kawalain&lt;br /&gt;
icon = {{#fab:steam}}&lt;br /&gt;
title = Steam&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://vmm.pw&lt;br /&gt;
icon = {{#fas:folder-tree}}&lt;br /&gt;
title = Files&lt;br /&gt;
&lt;br /&gt;
https://git.vmm.pw&lt;br /&gt;
icon = {{#fab:git}}&lt;br /&gt;
title = Git&lt;br /&gt;
&lt;br /&gt;
https://vod.vmm.pw &lt;br /&gt;
icon = {{#fas:tv}}&lt;br /&gt;
title = Videos&lt;br /&gt;
&lt;br /&gt;
https://book.vmm.pw &lt;br /&gt;
icon = {{#fas:book-skull}}&lt;br /&gt;
title = Books&lt;br /&gt;
&lt;br /&gt;
https://ai.vmm.pw &lt;br /&gt;
icon = {{#fas:robot}}&lt;br /&gt;
title = AIs&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=202</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=202"/>
		<updated>2026-05-26T13:15:57Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#css:&lt;br /&gt;
  .mw-body-header {&lt;br /&gt;
     display: none;&lt;br /&gt;
  }&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Fonts/Mulmaro.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:5% 0; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;randomimagebycategory categories=&amp;quot;CU/Expie&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;big style=&amp;quot;font-family:&#039;TemplateStyles_Mulmaro&#039;&amp;quot;&amp;gt;bi-bipolar&#039;s hideout&amp;lt;/big&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://discord.com/users/763014844793225246&lt;br /&gt;
icon = {{#fab:discord}}&lt;br /&gt;
title = Discord&lt;br /&gt;
&lt;br /&gt;
https://steamcommunity.com/id/kawalain&lt;br /&gt;
icon = {{#fab:steam}}&lt;br /&gt;
title = Steam&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://vmm.pw&lt;br /&gt;
icon = {{#fas:folder-tree}}&lt;br /&gt;
title = Files&lt;br /&gt;
&lt;br /&gt;
https://git.vmm.pw&lt;br /&gt;
icon = {{#fab:git}}&lt;br /&gt;
title = Git&lt;br /&gt;
&lt;br /&gt;
https://vod.vmm.pw &lt;br /&gt;
icon = {{#fas:tv}}&lt;br /&gt;
title = Videos&lt;br /&gt;
&lt;br /&gt;
https://book.vmm.pw &lt;br /&gt;
icon = {{#fas:book-skull}}&lt;br /&gt;
title = Books&lt;br /&gt;
&lt;br /&gt;
https://ai.vmm.pw &lt;br /&gt;
icon = {{#fas:robot}}&lt;br /&gt;
title = AIs&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Noarticletext-nopermission&amp;diff=201</id>
		<title>미디어위키:Noarticletext-nopermission</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Noarticletext-nopermission&amp;diff=201"/>
		<updated>2026-05-26T13:08:20Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 새 문서: {{Deck|items=  https://namu.wiki/w/{{FULLPAGENAMEE}} icon = &amp;lt;i class=&amp;quot;kawa kawa-namuwiki&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; title = 나무위키  https://ko.wikipedia.org/wiki/{{FULLPAGENAMEE}} icon = {{#fab:wikipedia-w}} title = 위키백과  {{fullurl:{{#Special:Search}}|search={{FULLPAGENAMEE}}}} icon = {{#fas:magnifying-glass}} title = 검색  {{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} icon = {{#fas:clock-rotate-left}} title = 기록  }}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://namu.wiki/w/{{FULLPAGENAMEE}}&lt;br /&gt;
icon = &amp;lt;i class=&amp;quot;kawa kawa-namuwiki&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
title = 나무위키&lt;br /&gt;
&lt;br /&gt;
https://ko.wikipedia.org/wiki/{{FULLPAGENAMEE}}&lt;br /&gt;
icon = {{#fab:wikipedia-w}}&lt;br /&gt;
title = 위키백과&lt;br /&gt;
&lt;br /&gt;
{{fullurl:{{#Special:Search}}|search={{FULLPAGENAMEE}}}}&lt;br /&gt;
icon = {{#fas:magnifying-glass}}&lt;br /&gt;
title = 검색&lt;br /&gt;
&lt;br /&gt;
{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}&lt;br /&gt;
icon = {{#fas:clock-rotate-left}}&lt;br /&gt;
title = 기록&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Noarticletext&amp;diff=200</id>
		<title>미디어위키:Noarticletext</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Noarticletext&amp;diff=200"/>
		<updated>2026-05-26T13:07:40Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: 새 문서: {{Deck|items=  https://namu.wiki/w/{{FULLPAGENAMEE}} icon = &amp;lt;i class=&amp;quot;kawa kawa-namuwiki&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; title = 나무위키  https://ko.wikipedia.org/wiki/{{FULLPAGENAMEE}} icon = {{#fab:wikipedia-w}} title = 위키백과  {{fullurl:{{#Special:Search}}|search={{FULLPAGENAMEE}}}} icon = {{#fas:magnifying-glass}} title = 검색  {{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} icon = {{#fas:clock-rotate-left}} title = 기록   {{fullurl:{{FULLPAGENAME}}|action=edit}} icon = {{#fas:file...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://namu.wiki/w/{{FULLPAGENAMEE}}&lt;br /&gt;
icon = &amp;lt;i class=&amp;quot;kawa kawa-namuwiki&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
title = 나무위키&lt;br /&gt;
&lt;br /&gt;
https://ko.wikipedia.org/wiki/{{FULLPAGENAMEE}}&lt;br /&gt;
icon = {{#fab:wikipedia-w}}&lt;br /&gt;
title = 위키백과&lt;br /&gt;
&lt;br /&gt;
{{fullurl:{{#Special:Search}}|search={{FULLPAGENAMEE}}}}&lt;br /&gt;
icon = {{#fas:magnifying-glass}}&lt;br /&gt;
title = 검색&lt;br /&gt;
&lt;br /&gt;
{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}&lt;br /&gt;
icon = {{#fas:clock-rotate-left}}&lt;br /&gt;
title = 기록 &lt;br /&gt;
&lt;br /&gt;
{{fullurl:{{FULLPAGENAME}}|action=edit}}&lt;br /&gt;
icon = {{#fas:file-circle-plus}}&lt;br /&gt;
title = 새 문서&amp;lt;br&amp;gt;만들기&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=199</id>
		<title>모듈:Deck</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=199"/>
		<updated>2026-05-26T13:01:18Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {&lt;br /&gt;
	keys = {&lt;br /&gt;
		&#039;&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.render(f)&lt;br /&gt;
    local args = f:getParent().args&lt;br /&gt;
    if args[&#039;items&#039;] == nil then&lt;br /&gt;
        args = f.args&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	local lines = (args[&#039;items&#039;] or &#039;&#039;):gmatch(&amp;quot;([^\n]+)&amp;quot;)&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for line in lines do&lt;br /&gt;
		line = mw.text.trim(line)&lt;br /&gt;
		&lt;br /&gt;
		if line ~= &#039;&#039; then&lt;br /&gt;
			local key, value = line:match(&#039;^([%w%s]+)=(.+)$&#039;)&lt;br /&gt;
			if key and value then&lt;br /&gt;
				key = mw.text.trim(key):lower()&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				if key ~= &#039;&#039; then&lt;br /&gt;
					items[#items][key] = value&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(items, {url = line})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- HTML&lt;br /&gt;
	local html = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local url = item.url or &#039;#&#039;&lt;br /&gt;
		local icon = item.icon or &#039;&#039;&lt;br /&gt;
		local title = mw.text.trim(item.title or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		local iconSpan = mw.html.create(&#039;span&#039;):wikitext(icon)&lt;br /&gt;
		local contentSpan = mw.html.create(&#039;span&#039;):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
		html = html ..&#039;[&#039; .. url .. &#039; &#039; .. tostring(iconSpan) .. tostring(contentSpan) .. &#039;]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return f:preprocess(&#039;&amp;lt;div class=&amp;quot;kawa-deck&amp;quot;&amp;gt;&#039; .. html .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=198</id>
		<title>모듈:Deck</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AA%A8%EB%93%88:Deck&amp;diff=198"/>
		<updated>2026-05-26T12:48:02Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.render(f)&lt;br /&gt;
    local args = f:getParent().args&lt;br /&gt;
    if args[&#039;items&#039;] == nil then&lt;br /&gt;
        args = f.args&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	local lines = (args[&#039;items&#039;] or &#039;&#039;):gmatch(&amp;quot;([^\n]+)&amp;quot;)&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for line in lines do&lt;br /&gt;
		line = mw.text.trim(line)&lt;br /&gt;
		&lt;br /&gt;
		if line ~= &#039;&#039; then&lt;br /&gt;
			local key, value = line:match(&#039;^([^=]+)=(.+)$&#039;)&lt;br /&gt;
			if key and value then&lt;br /&gt;
				key = mw.text.trim(key):lower()&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				if key ~= &#039;&#039; then&lt;br /&gt;
					items[#items][key] = value&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(items, {url = line})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- HTML&lt;br /&gt;
	local html = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local url = item.url or &#039;#&#039;&lt;br /&gt;
		local icon = item.icon or &#039;&#039;&lt;br /&gt;
		local title = mw.text.trim(item.title or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		local iconSpan = mw.html.create(&#039;span&#039;):wikitext(icon)&lt;br /&gt;
		local contentSpan = mw.html.create(&#039;span&#039;):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
		html = html ..&#039;[&#039; .. url .. &#039; &#039; .. tostring(iconSpan) .. tostring(contentSpan) .. &#039;]&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return f:preprocess(&#039;&amp;lt;div class=&amp;quot;kawa-deck&amp;quot;&amp;gt;&#039; .. html .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A42&amp;diff=197</id>
		<title>사용자:Kawalain/샌드박스2</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A42&amp;diff=197"/>
		<updated>2026-05-26T12:31:42Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://namu.wiki&lt;br /&gt;
icon = &amp;lt;i class=&amp;quot;kawa kawa-namuwiki&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
title = 나무위키&lt;br /&gt;
&lt;br /&gt;
https://ko.wikipedia.org&lt;br /&gt;
icon = {{#fab:wikipedia-w}}&lt;br /&gt;
title = 위키백과&lt;br /&gt;
&lt;br /&gt;
https://google.com&lt;br /&gt;
icon = {{#fab:google}}&lt;br /&gt;
title = 구글&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=196</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=196"/>
		<updated>2026-05-26T12:31:06Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
i.kawa {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 1em;&lt;br /&gt;
	height: 1em;&lt;br /&gt;
	background-color: currentcolor;&lt;br /&gt;
	mask-size: contain;&lt;br /&gt;
	mask-position: center;&lt;br /&gt;
	mask-repeat: no-repeat;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp;.kawa-namuwiki { mask-image: url(&amp;quot;data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgIDxwYXRoIGQ9Im0xMTAsMGMtNjAuNzUsMCAtMTEwLDQ5LjI0IC0xMTAsMTEwYzAsNjAuNzUgNDkuMjUsMTEwIDExMCwxMTBjNjAuNzYsMCAxMTAsLTQ5LjI1IDExMCwtMTEwYzAsLTYwLjc2IC00OS4yNCwtMTEwIC0xMTAsLTExMHptNzEuODIsMTI5LjEyYy01LjU1LDAuMDQgLTEwLjU1LC0yLjMyIC0xNC4wNywtNi4wOGwtMzMuMTIsMTQuMDFsNC41NSwxMC43NmE1LjA4LDUuMDggMCAwIDEgLTIuNjksNi42NmE1LjA4LDUuMDggMCAwIDEgLTYuNjYsLTIuNzFsLTExLjI4LC0yNi42NWwtNDQuNzYsMTguOTRjMC4xLDAuNzcgMC4xOCwxLjU2IDAuMTgsMi4zNGMwLjA4LDEwLjUyIC04LjQxLDE5LjEzIC0xOC45MiwxOS4yMmMtMTAuNSwwLjA3IC0xOS4xMiwtOC40MSAtMTkuMiwtMTguOTJjLTAuMDgsLTEwLjUxIDguNDEsLTE5LjEyIDE4LjkyLC0xOS4yMWM2LjA5LC0wLjA1IDExLjUzLDIuNzkgMTUuMDUsNy4yM2w4LjI5LC0zLjVsLTE2LjQ3LC0zOC45MWMtMC42MSwwLjA2IC0xLjIzLDAuMTEgLTEuODUsMC4xMWMtMTAuNTEsMC4wOCAtMTkuMTMsLTguNDEgLTE5LjIxLC0xOC45MmMtMC4wOCwtMTAuNTEgOC40MSwtMTkuMTMgMTguOTIsLTE5LjIxYzEwLjUxLC0wLjA3IDE5LjEyLDguNDEgMTkuMiwxOC45MmMwLjA1LDYuMjcgLTIuOTYsMTEuODUgLTcuNjIsMTUuMzZsMTYuMzgsMzguNjhsMjcuMTMsLTExLjQ4bC0zLjUzLC04LjMzYy0wLjg0LDAuMTIgLTEuNywwLjIxIC0yLjU4LDAuMjJjLTEwLjUxLDAuMDggLTE5LjEyLC04LjQxIC0xOS4yMSwtMTguOTFjLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMyw4LjQxIDE5LjIxLDE4LjkxYzAuMDQsNi4wMSAtMi43MSwxMS4zOSAtNy4wNCwxNC45MWwxMC4zMSwyNC4zNWwzMi4zNiwtMTMuN2ExOS4xLDE5LjEgMCAwIDEgLTAuNDEsLTMuNzljLTAuMDgsLTEwLjUyIDguNDEsLTE5LjEzIDE4LjkyLC0xOS4yMWMxMC41MSwtMC4wOCAxOS4xMiw4LjQxIDE5LjIsMTguOTFjMC4wOCwxMC41MiAtOC40MSwxOS4xNCAtMTguOTIsMTkuMjF6Ii8+CiAgIDxwYXRoIGQ9Im02Ny41Myw3My4yOWMtMC4wNCwtNC4zNSAtMy42LC03Ljg3IC03Ljk0LC03LjgzYy00LjM2LDAuMDMgLTcuODcsMy42IC03LjgzLDcuOTRjMC4wMyw0LjM2IDMuNTksNy44NyA3Ljk0LDcuODNjNC4zNSwtMC4wMyA3Ljg2LC0zLjU5IDcuODMsLTcuOTR6Ii8+CiAgIDxwYXRoIGQ9Im01NC44NSwxMzguNjVjLTQuMzUsMC4wNCAtNy44NiwzLjYgLTcuODMsNy45NGE3Ljg5LDcuODkgMCAwIDAgNy45NSw3Ljg0YzQuMzQsLTAuMDMgNy44NiwtMy42MSA3LjgzLC03Ljk1Yy0wLjA0LC00LjM0IC0zLjYsLTcuODYgLTcuOTUsLTcuODRsMCwwLjAxeiIvPgogICA8cGF0aCBkPSJtMTE2LjIyLDg4LjUzYy0wLjAzLC00LjM1IC0zLjYsLTcuODYgLTcuOTQsLTcuODNjLTQuMzYsMC4wMyAtNy44NiwzLjYgLTcuODMsNy45NWMwLjAzLDQuMzUgMy42LDcuODUgNy45NCw3LjgyYzQuMzYsLTAuMDMgNy44NywtMy41OSA3LjgzLC03Ljk0eiIvPgogICA8cGF0aCBkPSJtMTgxLjYyLDEwMi4xN2MtNC4zNSwwLjAzIC03Ljg2LDMuNiAtNy44Myw3Ljk1YzAuMDMsNC4zNSAzLjYsNy44NSA3Ljk1LDcuODNjNC4zNSwtMC4wNCA3Ljg2LC0zLjYgNy44MywtNy45NWMtMC4wNCwtNC4zNSAtMy42MSwtNy44NiAtNy45NSwtNy44M3oiLz4KPC9zdmc+&amp;quot;) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************&lt;br /&gt;
 * Module:Deck&lt;br /&gt;
 *******************************/&lt;br /&gt;
:root {&lt;br /&gt;
	--kawa-deck-text: currentColor;&lt;br /&gt;
	--kawa-deck-icon: currentColor;&lt;br /&gt;
	--kawa-deck-border: rgba(0, 0, 0, 0.5);&lt;br /&gt;
	--kawa-deck-border-hover: rgba(0, 0, 0, 0.4);&lt;br /&gt;
	--kawa-deck-hover-bg: rgba(0, 0, 0, 0.04);&lt;br /&gt;
	--kawa-deck-speed: 0.25s;&lt;br /&gt;
	--kawa-deck-timing: cubic-bezier(0.16, 1, 0.3, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck,&lt;br /&gt;
.kawa-deck * {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 1.25em;&lt;br /&gt;
	gap: 1.25em;&lt;br /&gt;
	container-type: inline-size;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		flex: 0 0 100%;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		border: 1px solid var(--kawa-deck-border);&lt;br /&gt;
		border-radius: 12px;&lt;br /&gt;
		background: initial;&lt;br /&gt;
		transition:&lt;br /&gt;
			background-color var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
			border-color var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:last-child {&lt;br /&gt;
			flex-grow: 1;&lt;br /&gt;
			aspect-ratio: auto;&lt;br /&gt;
			min-height: 140px;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span {&lt;br /&gt;
			position: absolute;&lt;br /&gt;
			top: 0;&lt;br /&gt;
			left: 0;&lt;br /&gt;
			width: 100%;&lt;br /&gt;
			height: 100%;&lt;br /&gt;
			display: flex;&lt;br /&gt;
			align-items: center;&lt;br /&gt;
			justify-content: center;&lt;br /&gt;
			pointer-events: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
			font-size: 2em;&lt;br /&gt;
			opacity: 1;&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; img {&lt;br /&gt;
				max-width: 40px;&lt;br /&gt;
				max-height: 40px;&lt;br /&gt;
				object-fit: contain;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
			opacity: 0;&lt;br /&gt;
			transform: scale(1.15);&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:hover,&lt;br /&gt;
		&amp;amp;:focus-visible {&lt;br /&gt;
			background-color: var(--kawa-deck-hover-bg);&lt;br /&gt;
			border-color: var(--kawa-deck-border-hover);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
				opacity: 0;&lt;br /&gt;
				transform: scale(0.7);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
				opacity: 1;&lt;br /&gt;
				transform: scale(1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 300px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 1.25rem) / 2);&lt;br /&gt;
			max-width: calc((100% - 1.25rem) / 2);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 1.25rem) / 2);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 460px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 2.5rem) / 3);&lt;br /&gt;
			max-width: calc((100% - 2.5rem) / 3);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 2.5rem) / 3);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 620px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 3.75rem) / 4);&lt;br /&gt;
			max-width: calc((100% - 3.75rem) / 4);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 3.75rem) / 4);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 780px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 5rem) / 5);&lt;br /&gt;
			max-width: calc((100% - 5rem) / 5);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 5rem) / 5);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=195</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=195"/>
		<updated>2026-05-26T12:15:39Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*******************************&lt;br /&gt;
 * Module:Deck&lt;br /&gt;
 *******************************/&lt;br /&gt;
:root {&lt;br /&gt;
	--kawa-deck-text: currentColor;&lt;br /&gt;
	--kawa-deck-icon: currentColor;&lt;br /&gt;
	--kawa-deck-border: rgba(0, 0, 0, 0.5);&lt;br /&gt;
	--kawa-deck-border-hover: rgba(0, 0, 0, 0.4);&lt;br /&gt;
	--kawa-deck-hover-bg: rgba(0, 0, 0, 0.04);&lt;br /&gt;
	--kawa-deck-speed: 0.25s;&lt;br /&gt;
	--kawa-deck-timing: cubic-bezier(0.16, 1, 0.3, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck,&lt;br /&gt;
.kawa-deck * {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.kawa-deck {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 1.25em;&lt;br /&gt;
	gap: 1.25em;&lt;br /&gt;
	container-type: inline-size;&lt;br /&gt;
&lt;br /&gt;
	&amp;amp; &amp;gt; a[href] {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		flex: 0 0 100%;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		border: 1px solid var(--kawa-deck-border);&lt;br /&gt;
		border-radius: 12px;&lt;br /&gt;
		background: initial;&lt;br /&gt;
		transition:&lt;br /&gt;
			background-color var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
			border-color var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:last-child {&lt;br /&gt;
			flex-grow: 1;&lt;br /&gt;
			aspect-ratio: auto;&lt;br /&gt;
			min-height: 140px;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span {&lt;br /&gt;
			position: absolute;&lt;br /&gt;
			top: 0;&lt;br /&gt;
			left: 0;&lt;br /&gt;
			width: 100%;&lt;br /&gt;
			height: 100%;&lt;br /&gt;
			display: flex;&lt;br /&gt;
			align-items: center;&lt;br /&gt;
			justify-content: center;&lt;br /&gt;
			pointer-events: none;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
			font-size: 2em;&lt;br /&gt;
			opacity: 1;&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; img {&lt;br /&gt;
				max-width: 40px;&lt;br /&gt;
				max-height: 40px;&lt;br /&gt;
				object-fit: contain;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
			opacity: 0;&lt;br /&gt;
			transform: scale(1.15);&lt;br /&gt;
			transition:&lt;br /&gt;
				opacity var(--kawa-deck-speed) var(--kawa-deck-timing),&lt;br /&gt;
				transform var(--kawa-deck-speed) var(--kawa-deck-timing);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		&amp;amp;:hover,&lt;br /&gt;
		&amp;amp;:focus-visible {&lt;br /&gt;
			background-color: var(--kawa-deck-hover-bg);&lt;br /&gt;
			border-color: var(--kawa-deck-border-hover);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:first-child {&lt;br /&gt;
				opacity: 0;&lt;br /&gt;
				transform: scale(0.7);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&amp;amp; &amp;gt; span:last-child {&lt;br /&gt;
				opacity: 1;&lt;br /&gt;
				transform: scale(1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 300px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 1.25rem) / 2);&lt;br /&gt;
			max-width: calc((100% - 1.25rem) / 2);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 1.25rem) / 2);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 460px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 2.5rem) / 3);&lt;br /&gt;
			max-width: calc((100% - 2.5rem) / 3);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 2.5rem) / 3);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 620px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 3.75rem) / 4);&lt;br /&gt;
			max-width: calc((100% - 3.75rem) / 4);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 3.75rem) / 4);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@container (min-width: 780px) {&lt;br /&gt;
		a[href] {&lt;br /&gt;
			flex: 0 0 calc((100% - 5rem) / 5);&lt;br /&gt;
			max-width: calc((100% - 5rem) / 5);&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;:last-child {&lt;br /&gt;
				max-width: 100%;&lt;br /&gt;
				min-height: calc((100cqw - 5rem) / 5);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
	<entry>
		<id>https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A42&amp;diff=194</id>
		<title>사용자:Kawalain/샌드박스2</title>
		<link rel="alternate" type="text/html" href="https://kawala.in/index.php?title=%EC%82%AC%EC%9A%A9%EC%9E%90:Kawalain/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A42&amp;diff=194"/>
		<updated>2026-05-26T12:15:08Z</updated>

		<summary type="html">&lt;p&gt;Kawalain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deck|items=&lt;br /&gt;
&lt;br /&gt;
https://namu.wiki&lt;br /&gt;
icon = [[파일:Namuwiki.svg]]&lt;br /&gt;
title = 나무위키&lt;br /&gt;
&lt;br /&gt;
https://ko.wikipedia.org&lt;br /&gt;
icon = {{#fab:wikipedia-w}}&lt;br /&gt;
title = 위키백과&lt;br /&gt;
&lt;br /&gt;
https://google.com&lt;br /&gt;
icon = {{#fab:google}}&lt;br /&gt;
title = 구글&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kawalain</name></author>
	</entry>
</feed>