/* Liwa Lucky Wheel v1.1 — frontend */
:root{--llw-p:#1b74c4;--llw-s:#0e2a5c;--llw-a:#ff7a1a;--llw-rim:#fff;--llw-hub:#fff;--llw-r:32px;--llw-size:340px;--llw-font:Lexend,Poppins,sans-serif}
@keyframes llwIn{from{opacity:0;transform:translateY(34px) scale(.92)}to{opacity:1;transform:none}}
@keyframes llwFade{from{opacity:0}to{opacity:1}}
@keyframes llwPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,122,26,.55),0 12px 26px -8px rgba(14,42,92,.6)}70%{box-shadow:0 0 0 18px rgba(255,122,26,0),0 12px 26px -8px rgba(14,42,92,.6)}}
@keyframes llwGlow{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes llwPop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
@keyframes llwShine{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes llwBubble{0%{transform:translateY(0) scale(.6);opacity:0}20%{opacity:.5}100%{transform:translateY(-140px) scale(1.1);opacity:0}}
@keyframes llwTease{0%,100%{transform:rotate(0)}30%{transform:rotate(-7deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-2deg)}}
@keyframes llwTick{0%{transform:translateX(-50%) rotate(0)}40%{transform:translateX(-50%) rotate(-22deg)}100%{transform:translateX(-50%) rotate(0)}}
@keyframes llwSpinSlow{to{transform:rotate(360deg)}}
@keyframes llwRise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
/* launcher */
.llw-launcher{position:fixed;bottom:18px;z-index:2147483000;display:inline-flex;align-items:center;gap:10px;padding:8px 18px 8px 8px;border-radius:50px;background:linear-gradient(135deg,var(--llw-s),var(--llw-p));color:#fff;font:700 13px var(--llw-font);box-shadow:0 14px 30px -10px rgba(14,42,92,.6);cursor:pointer;border:0;animation:llwIn .5s cubic-bezier(.34,1.56,.64,1) both;}
.llw-launcher.left{left:18px}.llw-launcher.right{right:18px}
.llw-launcher svg{width:36px;height:36px;animation:llwSpinSlow 7s linear infinite;}
body.lw-has-bnav .llw-launcher{bottom:calc(84px + env(safe-area-inset-bottom));}
/* overlay */
.llw-ov{position:fixed;inset:0;z-index:2147483100;background:radial-gradient(900px 600px at 50% 20%,rgba(27,116,196,.4),rgba(4,14,34,.94));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;padding:14px;animation:llwFade .4s both;font-family:var(--llw-font);-webkit-font-smoothing:antialiased;}
.llw-ov *{box-sizing:border-box;}
.llw-box{position:relative;width:min(100%,540px);max-height:calc(100vh - 28px);max-height:calc(100dvh - 28px);overflow:auto;background:#fff;border-radius:var(--llw-r);box-shadow:0 60px 120px -40px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.18);animation:llwIn .6s cubic-bezier(.34,1.56,.64,1) both;text-align:center;scrollbar-width:none;}
.llw-box::-webkit-scrollbar{display:none}
.llw-head{position:relative;padding:32px 28px 112px;color:#fff;background:linear-gradient(160deg,var(--llw-s) 0%,var(--llw-p) 75%,color-mix(in srgb,var(--llw-p) 55%,#fff) 140%);overflow:hidden;}
.llw-head::before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='60' viewBox='0 0 240 60'%3E%3Cpath d='M0 30 Q30 10 60 30 T120 30 T180 30 T240 30' fill='none' stroke='%23ffffff' stroke-width='1.2'/%3E%3C/svg%3E");background-size:240px 60px;opacity:.13;pointer-events:none;}
.llw-head .b{position:absolute;bottom:0;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.55),rgba(255,255,255,.05));animation:llwBubble 6s linear infinite;pointer-events:none;}
.llw-eyebrow{position:relative;display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:50px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);font:600 11px var(--llw-font);letter-spacing:.14em;text-transform:uppercase;margin-bottom:12px;}
.llw-eyebrow i{width:8px;height:8px;border-radius:50%;background:#27b765;box-shadow:0 0 0 3px rgba(39,183,101,.25);animation:llwGlow 1.6s infinite;}
.llw-title{position:relative;margin:0!important;padding:0!important;font:700 27px/1.15 var(--llw-font)!important;letter-spacing:-.01em;color:#fff!important;text-shadow:0 2px 14px rgba(0,0,0,.22)!important;text-transform:none!important;}
.llw-sub{position:relative;margin:10px auto 0!important;max-width:400px;font:400 14px/1.6 Poppins,var(--llw-font)!important;color:rgba(255,255,255,.85)!important;text-shadow:none!important;}
.llw-title::before,.llw-title::after,.llw-sub::before,.llw-sub::after{display:none!important;content:none!important;}
.llw-x{position:absolute;top:14px;right:14px;width:38px;height:38px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.3s;z-index:3;}
.llw-x svg{width:16px;height:16px}
.llw-ov[dir=rtl] .llw-x{right:auto;left:14px;}
.llw-x:hover{background:#fff;color:var(--llw-s);transform:rotate(90deg);}
/* stage */
.llw-stage{position:relative;margin:-72px auto 0;width:var(--llw-size);height:var(--llw-size);}
.llw-halo{position:absolute;inset:-26px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.9) 55%,rgba(255,255,255,0) 72%);pointer-events:none;}
.llw-rim{position:absolute;inset:-14px;border-radius:50%;background:linear-gradient(145deg,color-mix(in srgb,var(--llw-s) 85%,#000),var(--llw-p) 60%,color-mix(in srgb,var(--llw-p) 60%,#fff));box-shadow:0 34px 60px -20px rgba(14,42,92,.75),inset 0 0 0 7px var(--llw-rim),inset 0 0 0 9px rgba(0,0,0,.08);}
.llw-rim i{position:absolute;width:9px;height:9px;border-radius:50%;background:#fff;box-shadow:0 0 6px #fff,0 0 12px rgba(255,255,255,.7);animation:llwGlow 1.1s infinite;}
.llw-rim i:nth-child(odd){animation-delay:.55s;}
.llw-wheel{position:absolute;inset:0;border-radius:50%;overflow:hidden;will-change:transform;box-shadow:inset 0 0 0 3px rgba(255,255,255,.95),inset 0 0 40px rgba(0,0,0,.18);}
.llw-wheel.tease{animation:llwTease 2.4s ease-in-out infinite;}
.llw-wheel canvas{width:100%;height:100%;display:block;}
.llw-gloss{position:absolute;inset:0;border-radius:50%;pointer-events:none;background:radial-gradient(ellipse at 30% 20%,rgba(255,255,255,.28),rgba(255,255,255,0) 55%);}
.llw-ptr{position:absolute;left:50%;top:-22px;transform:translateX(-50%);width:44px;height:56px;z-index:4;transform-origin:50% 22px;filter:drop-shadow(0 10px 12px rgba(0,0,0,.4));}
.llw-ptr.tick{animation:llwTick .12s ease-out;}
.llw-ptr svg{width:100%;height:100%;display:block;}
.llw-spin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(var(--llw-size) * .27);height:calc(var(--llw-size) * .27);border-radius:50%;border:0;background:radial-gradient(circle at 35% 28%,#fff 0,#fff 30%,color-mix(in srgb,var(--llw-hub) 85%,#dfe9f2) 100%);color:var(--llw-s);font:800 calc(var(--llw-size) * .048) var(--llw-font);letter-spacing:.08em;cursor:pointer;z-index:5;box-shadow:0 12px 26px -8px rgba(14,42,92,.6),inset 0 -4px 0 rgba(14,42,92,.14);transition:transform .3s;animation:llwPulse 1.8s infinite;display:flex;align-items:center;justify-content:center;}
.llw-spin::before{content:"";position:absolute;inset:-7px;border-radius:50%;border:3px solid var(--llw-a);}
.llw-spin::after{content:"";position:absolute;inset:-16px;border-radius:50%;border:1px dashed rgba(255,255,255,.7);animation:llwSpinSlow 12s linear infinite;}
.llw-spin:hover{transform:translate(-50%,-50%) scale(1.06);}
.llw-spin[disabled]{animation:none;cursor:default;font-size:calc(var(--llw-size) * .036);letter-spacing:.02em;}
.llw-foot{padding:16px 28px 26px;}
.llw-hint{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin:8px 0 0;font:500 12px Poppins,var(--llw-font);color:#62768c;}
.llw-hint span{display:inline-flex;align-items:center;gap:6px;}
.llw-hint svg{width:14px;height:14px;color:#27b765;}
.llw-later{display:inline-block;margin-top:14px;font:600 13px Poppins,var(--llw-font);color:#8a9bb0;background:none;border:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.llw-later:hover{color:var(--llw-p);}
/* result */
.llw-res{display:none;padding:0 28px 32px;}
.llw-box.won .llw-stage,.llw-box.won .llw-foot,.llw-box.lost .llw-stage,.llw-box.lost .llw-foot{display:none;}
.llw-box.won .llw-res,.llw-box.lost .llw-res{display:block;}
.llw-box.won .llw-head,.llw-box.lost .llw-head{padding-bottom:70px;}
.llw-badge{width:104px;height:104px;margin:-52px auto 16px;border-radius:34px;background:linear-gradient(135deg,color-mix(in srgb,var(--llw-a) 70%,#fff),var(--llw-a));display:flex;align-items:center;justify-content:center;box-shadow:0 20px 40px -14px rgba(255,122,26,.75),0 0 0 8px #fff;animation:llwPop .6s .1s cubic-bezier(.34,1.56,.64,1) both;position:relative;color:#fff;}
.llw-badge svg{width:52px;height:52px;}
.llw-box.lost .llw-badge{background:linear-gradient(135deg,color-mix(in srgb,var(--llw-p) 55%,#fff),var(--llw-p));box-shadow:0 20px 40px -14px rgba(27,116,196,.7),0 0 0 8px #fff;}
.llw-res h3{margin:0;font:600 12px Poppins,var(--llw-font);letter-spacing:.14em;text-transform:uppercase;color:#8a9bb0;animation:llwRise .5s .25s both;}
.llw-prize{margin:6px 0 4px;font:800 32px/1.1 var(--llw-font);color:var(--llw-s);background:linear-gradient(90deg,var(--llw-s),var(--llw-p),var(--llw-s));background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:llwShine 3s linear infinite,llwRise .5s .3s both;}
.llw-lose-sub{font:400 13.5px Poppins,var(--llw-font);color:#62768c;margin:4px 0 0;animation:llwRise .5s .35s both;}
.llw-applied{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:8px 14px;border-radius:50px;background:#ecf9f1;color:#1f6b3f;font:600 12.5px Poppins,var(--llw-font);animation:llwRise .5s .4s both;}
.llw-applied svg{width:16px;height:16px;color:#27b765;}
.llw-code{margin:16px auto 0;max-width:320px;border:2px dashed #cfdceb;border-radius:16px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fbfdff;animation:llwRise .5s .5s both;}
.llw-code small{display:block;font:500 11px Poppins,var(--llw-font);color:#8a9bb0;text-align:left;}
.llw-ov[dir=rtl] .llw-code small{text-align:right;}
.llw-code b{font:800 18px var(--llw-font);color:var(--llw-s);letter-spacing:.06em;}
.llw-code button{border:0;background:#eef7fd;color:var(--llw-p);font:600 12px Poppins,var(--llw-font);padding:8px 12px;border-radius:50px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}
.llw-code button svg{width:13px;height:13px;}
.llw-go{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:320px;height:54px;margin-top:18px;border-radius:50px;background:linear-gradient(135deg,color-mix(in srgb,var(--llw-a) 70%,#fff),var(--llw-a));color:#fff!important;font:700 15px var(--llw-font);text-decoration:none!important;box-shadow:0 14px 28px -10px rgba(255,122,26,.7);position:relative;overflow:hidden;transition:transform .3s;animation:llwRise .5s .6s both;}
.llw-go::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.3) 50%,transparent 70%);background-size:250% 100%;animation:llwShine 2.6s linear infinite;}
.llw-go svg{width:16px;height:16px;}
.llw-go:hover{transform:translateY(-3px);}
.llw-box.lost .llw-go{background:linear-gradient(135deg,var(--llw-p),var(--llw-s));box-shadow:0 14px 28px -10px rgba(27,116,196,.6);}
.llw-confetti{position:absolute;inset:0;pointer-events:none;z-index:6;}
@media (max-width:600px){:root{--llw-size:var(--llw-size-m,280px);}.llw-box{border-radius:calc(var(--llw-r) * .8);}.llw-head{padding:24px 18px 96px;}.llw-stage{margin-top:-58px;}.llw-sub{max-width:300px;}.llw-title{font-size:22px!important;}.llw-sub{font-size:13px!important;}.llw-prize{font-size:26px;}.llw-res{padding:0 18px 26px;}.llw-foot{padding:14px 18px 22px;}}
@media (max-height:680px){:root{--llw-size:250px;}.llw-head{padding-top:22px;}}
/* admin preview */
.llw-preview-wrap{position:relative;min-height:520px;border-radius:18px;overflow:hidden;background:#0b1e3f;}
.llw-preview-wrap .llw-ov{position:absolute;padding:20px;}
