/* 九流页面美化特效 - 前台样式 */
.xjpe-layer,
.xjpe-canvas,
.xjpe-lantern-wrap,
.xjpe-cursor-layer,
.xjpe-ribbon-layer,
.xjpe-welcome,
.xjpe-music-btn,
.xjpe-context-menu {
  box-sizing: border-box;
}
.xjpe-layer,
.xjpe-canvas,
.xjpe-lantern-wrap,
.xjpe-cursor-layer,
.xjpe-ribbon-layer {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: hidden;
}
.xjpe-canvas {
  display: block;
}
.xjpe-petal,
.xjpe-snowflake,
.xjpe-star-trail,
.xjpe-ribbon-shape {
  position: fixed;
  left: 0;
  top: 0;
  user-select: none;
  pointer-events: none;
  will-change: transform, opacity;
}
.xjpe-petal {
  color: #ff9abb;
  text-shadow: 0 0 8px rgba(255, 135, 180, .35);
}
.xjpe-snowflake {
  color: #fff;
  text-shadow: 0 0 8px rgba(120, 180, 255, .6);
}
.xjpe-lantern {
  position: fixed;
  top: -8px;
  width: var(--xjpe-lantern-size, 82px);
  height: calc(var(--xjpe-lantern-size, 82px) * 1.28);
  pointer-events: none;
  transform-origin: top center;
  animation: xjpe-lantern-swing 3.8s ease-in-out infinite;
}
.xjpe-lantern-line {
  width: 2px;
  height: 28px;
  margin: 0 auto;
  background: linear-gradient(#ad6a00, #f6c96a);
}
.xjpe-lantern-body {
  position: relative;
  height: calc(var(--xjpe-lantern-size, 82px) * .82);
  border-radius: 48% 48% 42% 42%;
  background: radial-gradient(circle at 35% 28%, #ffd27a 0 10%, #ff5555 28%, #d61818 72%, #8e0909 100%);
  border: 3px solid #ffd37a;
  box-shadow: 0 0 22px rgba(255, 80, 40, .35);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffe8a6;
  font-size: calc(var(--xjpe-lantern-size, 82px) * .32);
  font-weight: 700;
}
.xjpe-lantern-body::before,
.xjpe-lantern-body::after {
  content: '';
  position: absolute;
  left: 14%;
  right: 14%;
  height: 5px;
  background: #f7c35d;
  border-radius: 99px;
}
.xjpe-lantern-body::before { top: 8px; }
.xjpe-lantern-body::after { bottom: 8px; }
.xjpe-lantern-tail {
  width: 20%;
  height: calc(var(--xjpe-lantern-size, 82px) * .28);
  margin: 0 auto;
  background: repeating-linear-gradient(90deg, #ffd36a 0 2px, #b51313 2px 5px);
  border-radius: 0 0 10px 10px;
}
@keyframes xjpe-lantern-swing {
  0%,100% { transform: rotate(-4deg); }
  50% { transform: rotate(4deg); }
}
.xjpe-grayscale {
  filter: grayscale(var(--xjpe-grayscale, 100%)) !important;
}
.xjpe-context-menu {
  position: fixed;
  min-width: 190px;
  padding: 8px;
  border-radius: 14px;
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 14px 40px rgba(0,0,0,.18);
  backdrop-filter: blur(12px);
  z-index: 2147483000;
  display: none;
  font-size: 14px;
  color: #222;
}
.xjpe-context-title {
  padding: 8px 10px;
  color: #888;
  font-size: 12px;
  border-bottom: 1px solid rgba(0,0,0,.06);
  margin-bottom: 5px;
}
.xjpe-context-menu button,
.xjpe-context-menu a {
  display: block;
  width: 100%;
  padding: 9px 10px;
  border: 0;
  background: transparent;
  color: inherit;
  text-decoration: none;
  border-radius: 10px;
  text-align: left;
  cursor: pointer;
  font: inherit;
}
.xjpe-context-menu button:hover,
.xjpe-context-menu a:hover {
  background: rgba(0,0,0,.06);
}
.xjpe-toast {
  position: fixed;
  left: 50%;
  top: 18px;
  transform: translateX(-50%);
  padding: 10px 16px;
  border-radius: 999px;
  background: rgba(25,25,25,.86);
  color: #fff;
  z-index: 2147483000;
  font-size: 14px;
  box-shadow: 0 10px 30px rgba(0,0,0,.2);
}
.xjpe-music-btn {
  position: fixed;
  right: 18px;
  bottom: 18px;
  min-width: 46px;
  height: 46px;
  padding: 0 14px;
  border-radius: 999px;
  border: 0;
  background: rgba(30,30,30,.82);
  color: #fff;
  z-index: 999999;
  cursor: pointer;
  box-shadow: 0 10px 30px rgba(0,0,0,.22);
  backdrop-filter: blur(10px);
}
.xjpe-music-btn.is-playing {
  animation: xjpe-spin 3.5s linear infinite;
}
@keyframes xjpe-spin { to { transform: rotate(360deg); } }
.xjpe-welcome-mask {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.34);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2147482999;
  padding: 20px;
}
.xjpe-welcome-box {
  width: min(92vw, 430px);
  background: rgba(255,255,255,.96);
  border-radius: 22px;
  padding: 26px 24px 22px;
  box-shadow: 0 24px 90px rgba(0,0,0,.28);
  text-align: center;
  animation: xjpe-pop .25s ease-out;
}
.xjpe-welcome-box h3 {
  margin: 0 0 10px;
  font-size: 22px;
}
.xjpe-welcome-box p {
  margin: 0 0 18px;
  color: #555;
  line-height: 1.7;
}
.xjpe-welcome-box button {
  border: 0;
  border-radius: 999px;
  padding: 10px 22px;
  color: #fff;
  background: #2271b1;
  cursor: pointer;
}
@keyframes xjpe-pop {
  from { transform: translateY(12px) scale(.96); opacity: 0; }
  to { transform: translateY(0) scale(1); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .xjpe-respect-motion * { animation: none !important; transition: none !important; }
}
