:root{
	--zibll-nyl-top: 110px;
	--zibll-nyl-gap: 18px;
	--zibll-nyl-scale: 1;
	--zibll-nyl-z: 9999;
}

#zibll-newyear-lanterns{
	position: fixed;
	top: var(--zibll-nyl-top);
	left: 0;
	right: 0;
	z-index: var(--zibll-nyl-z);
	pointer-events: none;
}

/* 宫廷灯主体 */
.zibll-nyl-lantern{
	position: absolute;
	top: 0;
	width: calc(130px * var(--zibll-nyl-scale));
	height: calc(280px * var(--zibll-nyl-scale));
	transform-origin: 50% 0%;
	filter: drop-shadow(0 28px 46px rgba(0,0,0,.32));
	animation: zibll-nyl-swing 4.8s ease-in-out infinite;
	transition: opacity .25s ease, transform .25s ease;
}
.zibll-nyl-lantern.is-left{ left: var(--zibll-nyl-gap); }
.zibll-nyl-lantern.is-right{ right: var(--zibll-nyl-gap); animation-direction: reverse; }

.zibll-nyl-rope{
	position: absolute;
	top: -86px;
	left: 50%;
	width: 3px;
	height: 90px;
	background: linear-gradient(180deg, rgba(140,70,30,.85), rgba(70,28,12,.9));
	border-radius: 2px;
	transform: translateX(-50%);
	box-shadow: 0 14px 18px rgba(0,0,0,.35);
}

.zibll-nyl-top{
	position: absolute;
	top: -4px;
	left: 50%;
	width: 54px;
	height: 30px;
	transform: translateX(-50%);
	background:
		radial-gradient(circle at 35% 25%, rgba(255,255,255,.38), rgba(255,255,255,0) 58%),
		linear-gradient(180deg, #ffe6ad, #c78a26 60%, #8a5613);
	border-radius: 12px 12px 14px 14px;
	box-shadow:
		0 2px 0 rgba(0,0,0,.24),
		inset 0 -2px 0 rgba(0,0,0,.18);
}
.zibll-nyl-top::before,
.zibll-nyl-top::after{
	content:"";
	position:absolute;
	left: 50%;
	width: 86px;
	height: 12px;
	transform: translateX(-50%);
	border-radius: 20px;
	background: linear-gradient(180deg, #fadd8a, #c5821f);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}
.zibll-nyl-top::before{ top: -12px; }
.zibll-nyl-top::after{ bottom: -10px; height: 9px; }

.zibll-nyl-crown{
	position: absolute;
	top: 24px;
	left: 50%;
	width: 150px;
	height: 32px;
	transform: translateX(-50%);
	background:
		linear-gradient(180deg, #f62634, #ba0e1c 65%, #7c0811);
	border-radius: 55% 55% 35% 35%;
	box-shadow:
		inset 0 2px 0 rgba(255,255,255,.2),
		0 15px 22px rgba(0,0,0,.25);
}
.zibll-nyl-crown::before,
.zibll-nyl-crown::after{
	content:"";
	position:absolute;
	top: 2px;
	width: 36px;
	height: 28px;
	background:
		radial-gradient(circle at 50% 30%, rgba(255,255,255,.35), rgba(255,255,255,0) 70%),
		linear-gradient(180deg, #ff9138, #d21a22 65%, #830712);
	clip-path: polygon(0% 10%, 65% 10%, 100% 50%, 65% 90%, 0% 90%, 20% 50%);
}
.zibll-nyl-crown::before{ left: 6px; }
.zibll-nyl-crown::after{ right: 6px; transform: scaleX(-1); }

.zibll-nyl-body{
	position: absolute;
	top: 38px;
	left: 50%;
	width: 120px;
	height: 176px;
	transform: translateX(-50%);
	border-radius: 12px;
	background:
		radial-gradient(circle at 35% 20%, rgba(255,255,255,.28), rgba(255,255,255,0) 62%),
		linear-gradient(180deg, #ff2e39, #c90f1b 60%, #911017);
	box-shadow:
		inset 0 0 0 2px rgba(210,15,25,.75),
		inset 0 -30px 40px rgba(0,0,0,.25),
		0 0 46px rgba(255,84,75,.28);
	overflow: hidden;
}
.zibll-nyl-body::before{
	content:"";
	position:absolute;
	inset: -50% -20%;
	background:
		radial-gradient(circle at 50% 50%, rgba(255,236,165,.58), rgba(255,236,165,0) 60%),
		conic-gradient(from 0deg, rgba(255,215,0,0), rgba(255,215,0,.35), rgba(255,215,0,0), rgba(255,215,0,.45), rgba(255,215,0,0));
	opacity: .75;
	animation: zibll-nyl-rotate 9s linear infinite;
	mix-blend-mode: screen;
}
.zibll-nyl-body::after{
	content:"";
	position:absolute;
	inset: 12px;
	border-radius: 6px;
	border: 2px solid rgba(255,220,150,.45);
	box-shadow:
		inset 0 0 0 6px rgba(255,200,120,.08),
		0 0 0 6px rgba(120,0,0,.2);
	pointer-events:none;
}

.zibll-nyl-band{
	position: absolute;
	left: 50%;
	width: 134px;
	height: 16px;
	transform: translateX(-50%);
	border-radius: 12px;
	background: linear-gradient(180deg, #ffe098, #c59128 65%, #7a4c12);
	box-shadow:
		inset 0 2px 0 rgba(255,255,255,.32),
		inset 0 -2px 0 rgba(0,0,0,.28),
		0 6px 12px rgba(0,0,0,.25);
	opacity: .95;
	z-index: 3;
}
.zibll-nyl-band{ top: 18px; }
.zibll-nyl-band.is-bottom{ top: auto; bottom: 20px; }

.zibll-nyl-window{
	position:absolute;
	top: 26px;
	left: 50%;
	width: 86px;
	height: 110px;
	transform: translateX(-50%);
	background:
		repeating-linear-gradient(90deg, rgba(255,235,200,.08) 0 8px, rgba(255,235,200,0) 8px 16px),
		linear-gradient(180deg, #ff5b4f, #c01416 70%);
	border-radius: 12px;
	box-shadow:
		inset 0 0 0 2px rgba(255,220,150,.65),
		0 0 35px rgba(255,110,80,.45);
	text-align: center;
	padding-top: 18px;
	color: #5a120d;
	font-family: "STKaiti","KaiTi","Noto Serif SC",serif;
}
.zibll-nyl-window::before,
.zibll-nyl-window::after{
	content:"";
	position:absolute;
	left: 50%;
	width: 64px;
	height: 12px;
	transform: translateX(-50%);
	background:
		radial-gradient(circle at 50% 20%, rgba(255,255,255,.4), rgba(255,255,255,0) 70%),
		linear-gradient(180deg, #fddf9c, #c7882a 65%, #8a4d17);
	border-radius: 12px;
}
.zibll-nyl-window::before{ top: -10px; }
.zibll-nyl-window::after{ bottom: -10px; }

.zibll-nyl-word{
	display:block;
	font-size: 32px;
	font-weight: 800;
	text-shadow:
		0 2px 0 rgba(255,255,255,.55),
		0 -2px 12px rgba(255,210,120,.8);
}
.zibll-nyl-blessing{
	display:block;
	margin-top: 8px;
	font-size: 13px;
	letter-spacing: 2px;
	color: #ffe2a0;
	text-shadow: 0 0 8px rgba(255,185,85,.8);
}

.zibll-nyl-scroll{
	position:absolute;
	top: 34px;
	width: 26px;
	height: 118px;
	background:
		linear-gradient(180deg, #c7111a, #890612 70%);
	border: 2px solid rgba(255,200,150,.35);
	border-radius: 16px;
	color: #ffe6c8;
	font-size: 13px;
	writing-mode: vertical-rl;
	text-align: center;
	letter-spacing: 4px;
	font-family: "STKaiti","KaiTi","Noto Serif SC",serif;
	box-shadow: 0 12px 22px rgba(0,0,0,.28);
}
.zibll-nyl-scroll::before{
	content:"";
	position:absolute;
	top: -10px;
	left: 50%;
	width: 14px;
	height: 14px;
	transform: translateX(-50%);
	background: radial-gradient(circle, #ffe9ba 30%, #c58525 80%);
	border-radius: 50%;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.4);
}
.zibll-nyl-scroll::after{
	content:"";
	position:absolute;
	bottom: -10px;
	left: 50%;
	width: 14px;
	height: 14px;
	transform: translateX(-50%);
	background: radial-gradient(circle, #ffe9ba 30%, #c58525 80%);
	border-radius: 50%;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.4);
}
.zibll-nyl-scroll.is-left{ left: -2px; }
.zibll-nyl-scroll.is-right{ right: -2px; }

.zibll-nyl-light{
	position:absolute;
	inset: -12% -45%;
	background:
		repeating-linear-gradient(
			90deg,
			rgba(255,215,0,0) 0 18px,
			rgba(255,235,160,.45) 18px 28px,
			rgba(255,215,0,0) 28px 56px
		);
	opacity: .8;
	animation: zibll-nyl-marquee 6.2s linear infinite;
	mix-blend-mode: screen;
	filter: blur(.3px);
}

.zibll-nyl-lights{
	position:absolute;
	top: 46px;
	left: 50%;
	width: 180px;
	height: 180px;
	transform: translateX(-50%);
	pointer-events:none;
}
.zibll-nyl-lights span{
	position:absolute;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: #ffd74d;
	box-shadow: 0 0 12px currentColor, 0 0 18px currentColor;
	animation: zibll-nyl-twinkle 1.8s ease-in-out infinite;
}
.zibll-nyl-lights span:nth-child(odd){ animation-duration: 2.4s; }
.zibll-nyl-lights span:nth-child(1){ top: 4px; left: 50%; margin-left: -5px; color: #ffab4d; }
.zibll-nyl-lights span:nth-child(2){ top: 32px; left: 6px; color: #ffed74; }
.zibll-nyl-lights span:nth-child(3){ top: 64px; left: -10px; color: #ff5d7a; }
.zibll-nyl-lights span:nth-child(4){ top: 98px; left: -12px; color: #68f0ff; }
.zibll-nyl-lights span:nth-child(5){ top: 134px; left: 4px; color: #ff9cf0; }
.zibll-nyl-lights span:nth-child(6){ top: 162px; left: 34px; color: #ffdf64; }
.zibll-nyl-lights span:nth-child(7){ top: 32px; right: 6px; color: #64f3c7; }
.zibll-nyl-lights span:nth-child(8){ top: 64px; right: -10px; color: #ffa06f; }
.zibll-nyl-lights span:nth-child(9){ top: 98px; right: -12px; color: #fffb96; }
.zibll-nyl-lights span:nth-child(10){ top: 134px; right: 4px; color: #6df1ff; }
.zibll-nyl-lights span:nth-child(11){ top: 162px; right: 34px; color: #ff6f98; }
.zibll-nyl-lights span:nth-child(12){ top: 178px; left: 50%; margin-left:-5px; color: #ffe04d; }

.zibll-nyl-bottom{
	position: absolute;
	top: 188px;
	left: 50%;
	width: 80px;
	height: 30px;
	transform: translateX(-50%);
	background:
		radial-gradient(circle at 30% 25%, rgba(255,255,255,.35), rgba(255,255,255,0) 60%),
		linear-gradient(180deg, #fddf9c, #b8741d 70%);
	border-radius: 24px;
	box-shadow:
		inset 0 2px 0 rgba(255,255,255,.35),
		0 6px 12px rgba(0,0,0,.25);
}
.zibll-nyl-bottom::after{
	content:"";
	position:absolute;
	left: 50%;
	top: -10px;
	width: 110px;
	height: 20px;
	transform: translateX(-50%);
	background:
		radial-gradient(circle at 50% 30%, rgba(255,255,255,.45), rgba(255,255,255,0) 58%),
		linear-gradient(180deg, #f52c38, #940813 70%);
	border-radius: 18px;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.18);
}

.zibll-nyl-glow{
	position:absolute;
	top: 220px;
	left: 50%;
	width: 70px;
	height: 70px;
	transform: translateX(-50%);
	background: radial-gradient(circle, rgba(255,255,255,.9), rgba(255,200,120,.45), rgba(255,80,50,.0));
	filter: blur(2px);
	opacity: .85;
	animation: zibll-nyl-glow 2.8s ease-in-out infinite;
}

.zibll-nyl-tassel{
	position:absolute;
	display:flex;
	gap: 8px;
}
.zibll-nyl-tassel span{
	display:block;
	width: 8px;
	height: 96px;
	border-radius: 10px;
	background: linear-gradient(180deg, #ff2f3b, #b60c15 60%, #6c030a);
	box-shadow: inset 0 0 0 1px rgba(255,215,150,.4);
	animation: zibll-nyl-tassel 1.9s ease-in-out infinite;
	transform-origin: 50% 0%;
}
.zibll-nyl-tassel span::after{
	content:"";
	display:block;
	width: 100%;
	height: 16px;
	margin-top: 6px;
	background: repeating-linear-gradient(180deg, rgba(255,255,255,.35) 0 2px, rgba(255,255,255,0) 2px 4px);
	opacity: .4;
}
.zibll-nyl-tassel.is-main{
	top: 226px;
	left: 50%;
	transform: translateX(-50%);
}
.zibll-nyl-tassel.is-main::before{
	content:"";
	position:absolute;
	top: -24px;
	left: 50%;
	width: 20px;
	height: 20px;
	transform: translateX(-50%);
	border-radius: 50%;
	background:
		radial-gradient(circle at 35% 30%, rgba(255,255,255,.45), rgba(255,255,255,0) 60%),
		linear-gradient(180deg, #1ec59e, #0d544c);
	box-shadow:
		0 0 12px rgba(30,197,158,.6),
		inset 0 1px 0 rgba(255,255,255,.5);
}
@keyframes zibll-nyl-swing{
	0%,100%{ transform: rotate(-5deg); }
	50%{ transform: rotate(5deg); }
}
@keyframes zibll-nyl-marquee{
	0%{ transform: translateX(-12%); }
	100%{ transform: translateX(12%); }
}
@keyframes zibll-nyl-rotate{
	0%{ transform: rotate(0deg); }
	100%{ transform: rotate(360deg); }
}
@keyframes zibll-nyl-tassel{
	0%,100%{ transform: rotate(6deg); }
	50%{ transform: rotate(-6deg); }
}
@keyframes zibll-nyl-twinkle{
	0%,100%{ opacity: .4; transform: scale(.9); }
	50%{ opacity: 1; transform: scale(1.3); }
}
@keyframes zibll-nyl-glow{
	0%,100%{ opacity: .55; transform: translateX(-50%) scale(.95); }
	50%{ opacity: .95; transform: translateX(-50%) scale(1.1); }
}

@media (max-width: 1200px){
	#zibll-newyear-lanterns{ display:none; }
}

@media (prefers-reduced-motion: reduce){
	.zibll-nyl-lantern,
	.zibll-nyl-light,
	.zibll-nyl-body::before,
	.zibll-nyl-tassel span,
	.zibll-nyl-lights span,
	.zibll-nyl-glow{ animation: none !important; }
}
