/* 抽奖三玩法（星空抽人 / 幸运老虎机）样式 —— 从 lottery-preview.html 抽取，与现有 styles.css 隔离，避免类冲突
   仅在 .lottery-app 容器内生效；--c1/--c2 由各玩法容器行内设置 */
.lottery-app{
  --tur-a:#FF8A5B; --tur-b:#FF5E62;
  --star-a:#5B8CFF; --star-b:#8A5CFF;
  --slot-a:#C264FF; --slot-b:#FF5CA8;
  --ink:#1c1430; --sub:#6b6480; --line:#ece8f5; --bg:#f6f4fb;
}

  .lx-title{font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:34px; text-align:center; margin:6px 0 2px; letter-spacing:1px}
  .lx-sub{text-align:center; color:var(--sub); font-size:14px; margin-bottom:26px}

  .lx-view{max-width:960px; margin:0 auto}
  .hidden{display:none!important}

  /* ===== 玩法选择卡 ===== */
  .lx-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px}
  @media(max-width:760px){.lx-grid{grid-template-columns:1fr}}
  .lx-pick{
    position:relative; border:none; cursor:pointer; text-align:left;
    border-radius:22px; padding:2px; background:linear-gradient(135deg,var(--c1),var(--c2));
    transition:transform .18s ease, box-shadow .18s ease; color:#fff;
    box-shadow:0 10px 28px -12px var(--c2);
  }
  .lx-pick:hover{transform:translateY(-6px); box-shadow:0 20px 40px -14px var(--c2)}
  .lx-pick .inner{background:#fff; border-radius:20px; padding:26px 22px 24px; color:var(--ink)}
  .lx-pick .ix{width:64px;height:64px; display:block; margin-bottom:14px}
  .lx-pick h3{font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:23px; margin:0 0 6px}
  .lx-pick p{margin:0; font-size:13px; color:var(--sub); line-height:1.6}
  .lx-pick .go{margin-top:16px; font-weight:700; font-size:13px; color:var(--c2); display:inline-flex; align-items:center; gap:6px}

  /* ===== 设置页 ===== */
  .lx-back{display:inline-flex; align-items:center; gap:8px; cursor:pointer; border:none; background:none;
    font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:17px; color:var(--sub); margin-bottom:14px}
  .lx-back:hover{color:var(--ink)}
  .lx-head{display:flex; align-items:center; gap:16px; margin-bottom:22px}
  .lx-head .ix{width:60px;height:60px; flex:0 0 60px}
  .lx-head h2{font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:28px; margin:0}
  .lx-head .tag{display:inline-block; font-size:12px; color:#fff; background:linear-gradient(135deg,var(--c1),var(--c2));
    padding:3px 10px; border-radius:999px; margin-left:8px; vertical-align:middle}
  /* B端落地页：标题/标签居中 */
  .lx-head.center,.join-hero.center{flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:6px}
  .lx-head.center .tag,.join-hero.center .tag{margin-left:0}
  /* A端预览专用返回（B端扫码页不渲染此元素） */
  .admin-back{display:block; margin:20px auto 0; opacity:.5; font-size:12px; padding:8px 18px}
  .admin-back:hover{opacity:1}

  /* ===== 幸运星空抽人：电影级光球 + 头像螺旋汇入 + 爆发光效 ===== */
  .star-sky{position:relative; width:100%; height:540px; border-radius:18px; overflow:hidden; margin:10px 0 4px;
    background:
      radial-gradient(120% 90% at 50% -18%, rgba(70,104,224,.20), transparent 52%),
      radial-gradient(85% 70% at 86% 108%, rgba(140,84,236,.20), transparent 60%),
      radial-gradient(78% 66% at 8% 100%, rgba(28,150,224,.16), transparent 60%),
      radial-gradient(60% 50% at 24% 12%, rgba(214,96,176,.10), transparent 60%),
      linear-gradient(180deg, #01020a 0%, #03061a 42%, #06041e 78%, #04030f 100%);
    box-shadow:inset 0 0 160px rgba(0,0,0,.9), inset 0 0 60px rgba(20,30,80,.55)}
  /* 银河星云带（多层弥散，增强深邃感） */
  .star-sky::before{content:''; position:absolute; left:-25%; right:-25%; top:8%; height:72%;
    background:
      radial-gradient(40% 60% at 30% 42%, rgba(90,120,255,.16), transparent 70%),
      radial-gradient(45% 55% at 72% 60%, rgba(170,110,255,.14), transparent 70%),
      linear-gradient(105deg, transparent 0%, rgba(120,150,255,.10) 38%, rgba(180,140,255,.13) 50%, rgba(120,180,255,.07) 64%, transparent 100%);
    filter:blur(34px); transform:rotate(-12deg); pointer-events:none; z-index:0}
  /* 中心环境光晕（光球背后一团蓝光，背景更深让它更突出） */
  .star-sky::after{content:''; position:absolute; left:50%; top:46%; width:600px; height:600px;
    transform:translate(-50%,-50%); border-radius:50%; pointer-events:none; z-index:0;
    background:radial-gradient(circle, rgba(130,175,255,.22) 0%, rgba(100,140,255,.10) 40%, rgba(80,110,255,.04) 60%, transparent 76%)}
  /* 从光球发散、贯穿全屏的放射光束 */
  .star-rays{position:absolute; left:50%; top:46%; width:260%; padding-top:260%; transform:translate(-50%,-50%);
    background:repeating-conic-gradient(from 0deg, rgba(150,188,255,.34) 0deg .55deg, rgba(190,150,255,.16) .55deg 1.1deg, transparent 1.1deg 4.5deg);
    -webkit-mask-image:radial-gradient(circle, rgba(0,0,0,1) 5%, rgba(0,0,0,.55) 34%, rgba(0,0,0,.22) 66%, transparent 90%);
    mask-image:radial-gradient(circle, rgba(0,0,0,1) 5%, rgba(0,0,0,.55) 34%, rgba(0,0,0,.22) 66%, transparent 90%);
    animation:raysSpin 46s linear infinite; pointer-events:none; z-index:1}
  @keyframes raysSpin{to{transform:translate(-50%,-50%) rotate(360deg)}}
  .star-sky .star-dot{position:absolute; width:2px; height:2px; border-radius:50%; background:#fff;
    box-shadow:0 0 4px 1px rgba(185,212,255,.85); opacity:.7; animation:twinkle 2.4s infinite ease-in-out; z-index:1}
  .star-sky .star-big{position:absolute; width:5px; height:5px; border-radius:50%;
    background:radial-gradient(circle,#fff,#bcd4ff 60%,transparent); box-shadow:0 0 9px 2px rgba(195,220,255,.95);
    z-index:1; animation:twinkle 3.4s infinite ease-in-out}
  .star-sky .star-big::before,.star-sky .star-big::after{content:''; position:absolute; left:50%; top:50%;
    width:20px; height:1px; background:linear-gradient(90deg,transparent,rgba(205,225,255,.9),transparent);
    transform:translate(-50%,-50%)}
  .star-sky .star-big::after{transform:translate(-50%,-50%) rotate(90deg)}
  @keyframes twinkle{0%,100%{opacity:.12; transform:scale(.5)}50%{opacity:1; transform:scale(1.4)}}

  /* 头像不再环绕：改为各自向中心光球循环汇聚（见 .star-av 的 converge 动画） */

  /* 参与用户头像（发光气泡圈 + 各自独立发光 + 持续向中心光球汇聚吸入，抽人时定格） */
  .star-av{position:absolute; left:50%; top:46%; width:54px; height:54px; margin:-27px 0 0 -27px; border-radius:50%; display:flex; align-items:center;
    justify-content:center; color:#fff; font-weight:bold; font-size:19px;
    font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif;
    border:3px solid rgba(205,230,255,.95);
    box-shadow:0 0 0 4px rgba(135,180,255,.38), 0 0 18px rgba(150,195,255,.9), 0 0 42px rgba(85,145,255,.55), inset 0 0 10px rgba(255,255,255,.6);
    animation:avGlow var(--gdur,2.6s) ease-in-out infinite, converge var(--dur,8s) linear infinite;
    animation-delay:var(--gdelay,0s), var(--cdelay,0s);
    will-change:transform,opacity; z-index:2}
  @keyframes avGlow{0%,100%{box-shadow:0 0 0 4px rgba(135,180,255,.3), 0 0 14px rgba(150,195,255,.75), 0 0 30px rgba(85,145,255,.4), inset 0 0 10px rgba(255,255,255,.5)}
    50%{box-shadow:0 0 0 5px rgba(165,208,255,.6), 0 0 26px rgba(180,218,255,1), 0 0 56px rgba(105,165,255,.85), inset 0 0 14px rgba(255,255,255,.9)}}
  /* 向中心光球循环汇聚：从外圈出生 → 螺旋缩小吸入光球 → 淡出后循环 */
  @keyframes converge{
    0%{transform:translate(var(--x0,0px),var(--y0,0px)) scale(1) rotate(0deg); opacity:0}
    14%{opacity:1}
    82%{opacity:1}
    100%{transform:translate(var(--x1,0px),var(--y1,0px)) scale(.16) rotate(var(--spin,180deg)); opacity:0}
  }

  /* 中心光球 + 能量环 */
  .star-orb{position:absolute; left:50%; top:46%; width:152px; height:152px; margin:-76px 0 0 -76px; border-radius:50%; z-index:4;
    background:radial-gradient(circle at 42% 34%, #ffffff 0%, #ffffff 16%, #e2efff 34%, #a5c8ff 56%, #4f7fe8 79%, #1c40aa 95%, #0d2160 100%);
    box-shadow:0 0 46px 12px rgba(200,224,255,.98), 0 0 130px 46px rgba(96,142,255,.62), 0 0 250px 115px rgba(52,92,230,.35), inset 0 0 40px rgba(255,255,255,1);
    transition:filter .3s; animation:orbCore 4.2s ease-in-out infinite}
  @keyframes orbCore{0%,100%{box-shadow:0 0 46px 12px rgba(200,224,255,.95), 0 0 130px 44px rgba(96,142,255,.58), 0 0 250px 112px rgba(52,92,230,.32), inset 0 0 40px rgba(255,255,255,.95)}
    50%{box-shadow:0 0 66px 20px rgba(220,236,255,1), 0 0 185px 66px rgba(120,164,255,.7), 0 0 315px 148px rgba(64,106,240,.42), inset 0 0 48px rgba(255,255,255,1)}}
  /* 光球内部能量纹理（流动光斑 + 刺白亮芯） */
  .star-orb::after{content:''; position:absolute; inset:6px; border-radius:50%; pointer-events:none; filter:blur(3px);
    background:
      radial-gradient(circle at 50% 44%, rgba(255,255,255,.95) 0%, rgba(255,255,255,.4) 26%, transparent 46%),
      radial-gradient(circle at 66% 62%, rgba(255,255,255,.55) 0%, transparent 22%),
      radial-gradient(circle at 28% 66%, rgba(255,255,255,.45) 0%, transparent 19%),
      radial-gradient(circle at 58% 24%, rgba(255,255,255,.4) 0%, transparent 17%);
    animation:orbTex 5s ease-in-out infinite alternate}
  @keyframes orbTex{from{transform:scale(1) rotate(0deg)}to{transform:scale(1.1) rotate(10deg)}}
  .star-orb::before{content:''; position:absolute; inset:-12px; border-radius:50%;
    background:radial-gradient(circle, rgba(205,228,255,.55) 28%, rgba(110,160,255,.22) 55%, transparent 72%);
    filter:blur(5px); animation:haloPulse 3s ease-in-out infinite; pointer-events:none}
  @keyframes haloPulse{0%,100%{transform:scale(1); opacity:.75}50%{transform:scale(1.25); opacity:1}}
  .orb-rings{position:absolute; inset:0; z-index:3; pointer-events:none}
  .orb-ring{position:absolute; left:50%; top:50%; border:1.6px solid rgba(150,200,255,.55); border-radius:50%;
    box-shadow:0 0 12px rgba(120,170,255,.55); transform:scaleY(.4)}
  @keyframes ringSpin{to{transform:scaleY(.4) rotate(360deg)}}
  .orb-ring.r1{width:200px; height:200px; margin:-100px 0 0 -100px; animation:ringSpin 9s linear infinite}
  .orb-ring.r2{width:252px; height:252px; margin:-126px 0 0 -126px; border-color:rgba(170,150,255,.45); animation:ringSpin 14s linear infinite reverse}
  .orb-ring.r3{width:306px; height:306px; margin:-153px 0 0 -153px; border-color:rgba(120,200,255,.35); animation:ringSpin 20s linear infinite}
  .orb-inner{position:absolute; inset:0; border-radius:50%; overflow:hidden; display:flex; align-items:center; justify-content:center}

  .star-sky.clickable .star-orb{cursor:pointer}
  .star-sky.clickable .star-orb:hover{filter:brightness(1.12)}

  /* 冲击波光环（爆发时由 JS 生成多个） */
  .star-shock{position:absolute; left:50%; top:46%; width:152px; height:152px; margin:-76px 0 0 -76px; border-radius:50%;
    border:2px solid rgba(200,228,255,.95); box-shadow:0 0 22px rgba(150,200,255,.95); opacity:0; pointer-events:none; z-index:6}
  /* 金色粒子层 */
  .star-particles{position:absolute; left:50%; top:46%; width:0; height:0; z-index:6; pointer-events:none}
  .sp{position:absolute; width:7px; height:7px; border-radius:50%;
    background:radial-gradient(circle, #fff 0%, rgba(255,212,120,.95) 58%, transparent 100%);
    box-shadow:0 0 9px rgba(255,220,140,.95); transform:translate(-50%,-50%); opacity:0; will-change:transform,opacity}
  /* 镜头光晕横扫 */
  .star-lens{position:absolute; left:50%; top:46%; width:130%; height:9px; transform:translate(-50%,-50%) rotate(-16deg);
    background:linear-gradient(90deg, transparent, rgba(255,255,255,.95) 45%, rgba(185,220,255,.7) 50%, rgba(255,255,255,.95) 55%, transparent);
    filter:blur(2px); opacity:0; pointer-events:none; z-index:7}
  .star-lens.show{animation:lensAnim 1s ease-out}
  @keyframes lensAnim{0%{opacity:0; transform:translate(-50%,-50%) rotate(-16deg) scaleX(.2)}
    30%{opacity:1}100%{opacity:0; transform:translate(-50%,-50%) rotate(-16deg) scaleX(1.5)}}
  /* 全屏爆发白光 */
  .star-flash{position:absolute; inset:0; z-index:8; pointer-events:none; opacity:0;
    background:radial-gradient(circle at 50% 46%, rgba(255,255,255,.98) 0%, rgba(200,222,255,.82) 16%, rgba(120,165,255,.4) 40%, transparent 70%)}
  .star-flash.show{animation:flashAnim .9s ease-out}
  @keyframes flashAnim{0%{opacity:0}18%{opacity:1}100%{opacity:0}}

  /* 中奖者头像定格在光球中心 */
  .orb-winner{position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    opacity:0; pointer-events:none; z-index:5}
  .orb-winner.show{opacity:1}
  .orb-winner .ow-av{width:88px; height:88px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    color:#fff; font-weight:bold; font-size:34px; font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif;
    border:3px solid #FFD45B; box-shadow:0 0 26px rgba(255,212,91,.95), 0 0 64px rgba(255,190,60,.55), inset 0 0 14px rgba(255,255,255,.5);
    animation:winnerPop .6s cubic-bezier(.3,1.6,.5,1)}
  @keyframes winnerPop{0%{transform:scale(0)}70%{transform:scale(1.15)}100%{transform:scale(1)}}
  .star-name{position:absolute; top:14px; left:0; right:0; text-align:center; color:#FFD45B;
    font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:24px; letter-spacing:3px;
    opacity:0; transition:opacity .4s; z-index:7; text-shadow:0 0 14px rgba(255,190,60,.6)}
  .star-name.show{opacity:1}
  .star-hint{margin-top:14px; color:#9bb6ff; font-size:15px; letter-spacing:1px; animation:twinkle 2.6s infinite ease-in-out}
  .star-reward{margin-top:10px; color:#cdd6ff; font-size:14px; line-height:1.7}
  .star-wait{margin-top:8px; color:#FFD45B; font-size:16px; letter-spacing:1px; animation:twinkle 2.4s infinite ease-in-out}
  .b-note{text-align:center; color:var(--sub); font-size:12px; margin:12px 0 0}

  .lx-card{background:#fff; border:1px solid var(--line); border-radius:18px; padding:22px 22px 24px; margin-bottom:18px;
    box-shadow:0 12px 30px -22px rgba(40,20,80,.5)}
  .lx-card h4{font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:18px; margin:0 0 16px; display:flex; align-items:center; gap:8px}
  .lx-card h4 .dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2))}

  .field{margin-bottom:18px}
  .field:last-child{margin-bottom:0}
  .field label{display:block; font-size:13px; font-weight:700; color:var(--ink); margin-bottom:7px}
  .field label .req{color:#ff5e62; margin-left:3px}
  .field .hint{font-weight:400; color:var(--sub); font-size:12px; margin-left:6px}
  .input,textarea,.num{
    width:100%; border:1.5px solid var(--line); border-radius:12px; padding:12px 14px;
    font-family:inherit; font-size:14px; color:var(--ink); background:#fcfbff; transition:border .15s, box-shadow .15s}
  .input:focus,textarea:focus,.num:focus{outline:none; border-color:var(--c2); box-shadow:0 0 0 4px color-mix(in srgb,var(--c2) 18%,transparent)}
  textarea{resize:vertical; min-height:84px}
  .row2{display:grid; grid-template-columns:1fr 1fr; gap:16px}
  @media(max-width:620px){.row2{grid-template-columns:1fr}}

  /* 奖品可增删列表 */
  .prize-list{display:flex; flex-direction:column; gap:14px}
  .prize-item{border:1px solid #ececf3; border-radius:14px; padding:12px; background:#fafaff; position:relative}
  .pi-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:10px}
  .pi-idx{font-size:13px; font-weight:700; color:var(--c2)}
  .pi-del{border:none; background:#fff0f2; color:#ff5e62; border-radius:10px; height:30px; width:30px; cursor:pointer; font-size:16px; line-height:1}
  .pi-del:hover{background:#ffe0e4}
  .prize-grid{display:grid; grid-template-columns:1fr 1fr 110px; gap:10px}
  .pg-col{display:flex; flex-direction:column; gap:5px}
  .pg-lab{font-size:11px; color:var(--sub); font-weight:500; padding-left:2px}
  .prize-grid .input{width:100%}
  .pi-add{margin-top:10px; width:100%; border:1.5px dashed var(--c2); background:color-mix(in srgb,var(--c2) 8%,#fff);
    color:var(--c2); border-radius:12px; padding:9px; cursor:pointer; font-weight:700; font-family:inherit; font-size:13px}
  .pi-add:hover{background:color-mix(in srgb,var(--c2) 16%,#fff)}

  /* 底部操作 */
  .lx-actions{display:flex; gap:14px; justify-content:flex-end; margin-top:8px}

  /* 参与二维码 */
  .qr-tip{font-size:13px; color:var(--sub); margin:0 0 14px; line-height:1.6}
  .qr-stage{display:flex; align-items:center; justify-content:center; min-height:160px; background:#faf8ff;
    border:1.5px dashed var(--line); border-radius:14px; margin-bottom:12px}
  .qr-empty{color:var(--sub); font-size:14px}
  .qr-link{display:flex; gap:10px}
  .qr-link .input{flex:1; font-size:12px; color:var(--sub)}

  /* 二维码 + 背景图合成（生成后自动居中叠加） */
  .qr-stage{position:relative; min-height:240px; display:flex; align-items:center; justify-content:center;
    background:#faf8ff; border:1.5px dashed var(--line); border-radius:14px; margin-bottom:12px; overflow:hidden}
  .qr-empty{color:var(--sub); font-size:14px; text-align:center; padding:20px}
  .qr-composite{position:relative; width:100%; min-height:240px; display:block; background:#f3f0fb; border-radius:14px}
  .qr-bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:14px}
  .qr-center{position:absolute; z-index:2; left:50%; top:50%; transform:translate(-50%,-50%);
    width:150px; height:150px; background:#fff; padding:8px; border-radius:12px;
    box-shadow:0 10px 26px -8px rgba(0,0,0,.5)}
  .qr-center img{width:100%; height:100%; image-rendering:pixelated; display:block}
  /* 二维码位置选择器（有背景图时显示） */
  .qr-pos{display:none; align-items:center; gap:8px; flex-wrap:wrap; margin-top:12px}
  .qr-pos-label{font-size:12px; color:var(--sub)}
  .qp{border:1.5px solid var(--line); background:#fff; color:var(--sub); border-radius:10px; padding:6px 12px;
    cursor:pointer; font-family:inherit; font-size:12px; font-weight:700; transition:.15s}
  .qp:hover{border-color:var(--c2)}
  .qp.active{background:var(--c2); color:#fff; border-color:var(--c2)}
  .qr-ocr-tip{font-size:12px; color:var(--sub); margin-top:6px}
  .qr-bgupload{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:4px}
  .qr-bg-hint{font-size:12px; color:var(--sub)}

  /* 参与落地页 join 预览（= 二维码打开的页面） */
  .join-hero{display:flex; align-items:center; gap:16px; margin-bottom:22px}
  .join-hero .ix{width:60px; height:60px; flex:0 0 60px}
  .join-hero h2{font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:28px; margin:0}
  .join-intro{font-size:14px; color:var(--ink); line-height:1.7; margin:0 0 14px}
  .join-meta{display:grid; grid-template-columns:1fr 1fr; gap:12px}
  .join-meta>div{background:#faf8ff; border:1px solid var(--line); border-radius:12px; padding:10px 14px}
  .lm-k{display:block; font-size:12px; color:var(--sub)}
  .lm-v{font-weight:700; font-size:15px}
  .join-prizes{display:flex; flex-wrap:wrap; gap:10px}
  .jp{background:color-mix(in srgb,var(--c2) 10%,#fff); border:1px solid color-mix(in srgb,var(--c2) 30%,#fff);
    color:var(--ink); border-radius:999px; padding:7px 14px; font-size:13px; font-weight:600}
  .join-count{font-size:13px; color:var(--sub); font-weight:400}
  .join-avatars{display:flex; flex-wrap:wrap; gap:10px}
  .av{width:44px; height:44px; border-radius:50%; color:#fff; display:flex; align-items:center; justify-content:center;
    font-weight:700; font-size:16px; box-shadow:0 6px 14px -8px rgba(0,0,0,.4)}
  .join-play{width:100%; margin-top:6px; font-size:16px; padding:15px}
  .join-note{text-align:center; color:var(--sub); font-size:12px; margin-top:10px}
  .btn-ghost{border:1.5px solid var(--line); background:#fff; color:var(--sub); border-radius:14px; padding:13px 22px;
    font-family:inherit; font-weight:700; cursor:pointer; font-size:14px}
  .btn-ghost:hover{border-color:var(--c2); color:var(--c2)}
  .btn-primary{border:none; cursor:pointer; color:#fff; font-family:inherit; font-weight:700; font-size:15px;
    border-radius:14px; padding:13px 28px; background:linear-gradient(135deg,var(--c1),var(--c2));
    box-shadow:0 12px 26px -12px var(--c2)}
  .btn-primary:hover{filter:brightness(1.05)}

  /* 发布成功提示 */
  .lx-toast{position:fixed; left:50%; top:28px; transform:translateX(-50%) translateY(-20px); opacity:0;
    background:linear-gradient(135deg,var(--c1),var(--c2)); color:#fff; padding:12px 22px; border-radius:14px;
    font-weight:700; box-shadow:0 16px 36px -16px var(--c2); transition:.3s; pointer-events:none; z-index:50}
  .lx-toast.show{opacity:1; transform:translateX(-50%) translateY(0)}

  .wheel-result{margin-top:16px; font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:21px;
    color:var(--tur-b); min-height:28px; opacity:0; transition:.3s}
  .wheel-result.show{opacity:1}

  /* ===== 幸运老虎机预览（分层 PNG 素材：滚轮→机柜→拉杆→按钮，按素材包 README 合成） ===== */
  .slot-stage{position:relative; width:min(100%,560px); aspect-ratio:1672/941; margin:14px auto 6px;
    filter:drop-shadow(0 24px 30px rgba(20,0,40,.5)); user-select:none; -webkit-user-select:none}
  .slot-layer{position:absolute; pointer-events:none}
  .slot-layer img{width:100%; height:100%; display:block}
  /* 滚轮层（最底层）：按“窗口矩形”裁切（overflow:hidden 等效机柜遮罩），
     整条符号带 repeat-y 平铺 + translateY 循环滚动 */
  .slot-reel{position:absolute; z-index:1; pointer-events:none; overflow:hidden;
    border-radius:.45em; background:rgba(30,12,4,.18)}
  .slot-stripart{position:absolute; left:0; top:0; width:100%; will-change:transform;
    background-repeat:repeat-y; background-size:100% auto}
  .slot-stage.spinning .slot-stripart{filter:blur(2.6px) brightness(1.06)}
  /* 机柜（遮罩层） */
  .slot-cabinet{z-index:2}
  /* 拉杆（素材层，绕底座 36.99%/77.24% 旋转，压下 24° 弹回） */
  .slot-lever{z-index:3; pointer-events:auto; cursor:pointer; transform-origin:36.99% 77.24%; touch-action:none}
  .slot-lever.disabled{opacity:.4; pointer-events:none; filter:grayscale(.5)}
  /* 「开始抽奖」按钮（素材层，按压缩放+提亮，空闲呼吸发光） */
  .slot-goart{z-index:4; pointer-events:auto; cursor:pointer}
  .slot-goart img{animation:artGlow 2.4s ease-in-out infinite}
  .slot-goart:active img{filter:brightness(1.22)}
  .slot-goart.disabled{pointer-events:none}
  .slot-goart.disabled img{filter:grayscale(.6) brightness(.82); animation:none}
  @keyframes artGlow{0%,100%{filter:drop-shadow(0 0 6px rgba(255,120,60,.35))}
    50%{filter:drop-shadow(0 0 16px rgba(255,150,70,.75)) brightness(1.08)}}
  /* 三格奖品铭牌（窗口下沿：旋转时滚动奖品名，每列停住即锁定，三格同名） */
  .slot-plate{position:absolute; z-index:6; display:flex; align-items:center; justify-content:center;
    background:linear-gradient(180deg,#c01616 0%, #8f0d0d 100%); border:.1em solid #f7d488; border-radius:.5em;
    box-shadow:0 0 .45em rgba(255,120,50,.55), inset 0 .08em .2em rgba(255,255,255,.3);
    font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-weight:900; color:#ffe9b0;
    text-shadow:0 .07em 0 rgba(80,0,0,.75); overflow:hidden; white-space:nowrap; pointer-events:none}
  .slot-plate.locked{border-color:#ffe9a0; box-shadow:0 0 .9em rgba(255,180,60,.95), inset 0 .08em .2em rgba(255,255,255,.35);
    animation:platePop .4s ease}
  @keyframes platePop{0%{transform:scale(.85)}60%{transform:scale(1.08)}100%{transform:scale(1)}}
  .slot-hint{text-align:center; color:#5a6b9a; font-size:13px; margin-top:10px}
  .slot-wait{text-align:center; color:#fff; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.3);
    border-radius:12px; padding:14px; font-size:14px; font-weight:700; text-shadow:0 1px 3px rgba(0,0,40,.4)}
  .slot-result{margin-top:14px; font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif; font-size:22px; font-weight:800;
    color:#ffd873; min-height:30px; opacity:0; transition:.3s; text-align:center; text-shadow:0 0 14px rgba(255,180,60,.7), 0 2px 0 rgba(90,40,0,.6)}
  .slot-result.show{opacity:1; animation:slotPop .5s ease}
  @keyframes slotPop{0%{transform:scale(.6); opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1); opacity:1}}
  .slot-reward{margin-top:10px; text-align:center; font-size:14px; font-weight:700; color:#7a4c10; background:rgba(255,244,214,.95);
    border:1px solid rgba(255,216,115,.8); border-radius:12px; padding:10px 14px; box-shadow:0 8px 20px -10px rgba(0,0,30,.5)}

  /* 三玩法切换 tab + A/B端切换（仅 .lottery-app 内） */
  .lx-tabs{display:flex; gap:10px; margin:0 0 14px; flex-wrap:wrap}
  .lx-tab{border:1.5px solid var(--line); background:#fff; color:var(--sub); border-radius:14px; padding:11px 20px;
    font-family:inherit; font-weight:700; cursor:pointer; font-size:15px; transition:.15s}
  .lx-tab:hover{border-color:var(--slot-a)}
  .lx-tab.active{background:linear-gradient(135deg,var(--slot-a),var(--slot-b)); color:#fff; border-color:transparent;
    box-shadow:0 10px 22px -12px var(--slot-b)}
  .lx-side-toggle{display:flex; align-items:center; gap:10px; margin-bottom:16px; flex-wrap:wrap; font-size:13px; color:var(--sub)}
  .lx-side{border:1.5px solid var(--line); background:#fff; color:var(--sub); border-radius:12px; padding:8px 16px;
    font-family:inherit; font-weight:700; cursor:pointer; font-size:13px; transition:.15s}
  .lx-side:hover{border-color:var(--star-a)}
  .lx-side.active{background:linear-gradient(135deg,var(--star-a),var(--star-b)); color:#fff; border-color:transparent}
  .lx-panel{margin-top:6px}
