/* 有球说 · 今日运势转盘 */
.zp-wrap{max-width:640px;margin:0 auto}
#zp{position:relative;min-height:200px}
#zp *{box-sizing:border-box}
.zp-stage{border-radius:16px;overflow:hidden;position:relative;box-shadow:0 10px 30px rgba(0,0,0,.18);background:#062615}
.zp-stage svg{display:block;width:100%;height:auto}
.zp-stage::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.55);opacity:0;transition:opacity .4s;pointer-events:none}
.zp-stage.dim::after{opacity:1}
.zp-ctrl{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:14px;flex-wrap:wrap}
.zp-btn{border:0;cursor:pointer;font:inherit;font-weight:900;font-size:18px;padding:13px 30px;border-radius:999px;color:#0b3d20;background:linear-gradient(#ffe48a,#f6b500);box-shadow:0 4px 0 #a86a00,0 6px 16px rgba(246,195,67,.4)}
.zp-btn:active{transform:translateY(3px);box-shadow:0 1px 0 #a86a00}
.zp-btn[disabled]{filter:grayscale(.5);opacity:.75;cursor:default}
.zp-mute{background:none;border:1px dashed var(--muted,#7a8a80);color:var(--muted,#7a8a80);border-radius:999px;padding:6px 12px;font:inherit;font-size:13px;cursor:pointer}
.zp-res{min-height:24px;text-align:center;margin:12px 0 0;font-size:14px;color:var(--muted,#6b7a72)}

/* 灯泡：平时交替闪，转动时跑马灯，开出结果后快闪 */
#zp .bulb{animation:zpBlink 1s steps(1,end) infinite}
#zp .bulb.b{animation-delay:.5s}
@keyframes zpBlink{0%{fill:#fff8d0;filter:url(#zpGlow)}50%{fill:#6b5200;filter:none}}
#zp .spinning .bulb{animation:zpChase .6s linear infinite;animation-delay:calc(var(--i) * -.025s)}
@keyframes zpChase{0%,30%{fill:#fff8d0;filter:url(#zpGlow)}31%,100%{fill:#6b5200;filter:none}}
#zp .won .bulb{animation:zpBlink .25s steps(1,end) infinite}
#zp .wheel{transition:transform 5s cubic-bezier(.12,.75,.15,1)}

/* 球仔 */
#zp .ch .arm{transition:transform .45s cubic-bezier(.3,1.4,.5,1)}
#zp .ch .upper{animation:zpBreathe 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
@keyframes zpBreathe{50%{transform:translateY(2px)}}
#zp .ch .pose{opacity:0}
#zp .ch.good .arm,#zp .ch.mid .arm,#zp .ch.bad .arm{opacity:0}
#zp .ch.good .pose.good,#zp .ch.mid .pose.mid,#zp .ch.bad .pose.bad{opacity:1}
#zp .ch.good .upper{animation:zpJump .55s ease-in-out infinite}
@keyframes zpJump{50%{transform:translateY(-16px)}}
#zp .ch.mid .upper{animation:zpSway 1s ease-in-out infinite}
@keyframes zpSway{25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}
#zp .ch.bad .upper{animation:zpShake .5s ease-in-out infinite}
@keyframes zpShake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
#zp .ch .face-sad,#zp .ch .face-o{opacity:0}
#zp .ch.bad .face-sad{opacity:1}#zp .ch.bad .face-happy{opacity:0}
#zp .ch.reach .face-o{opacity:1}#zp .ch.reach .face-happy{opacity:0}
#zp .fx{opacity:0}#zp .ch.good .fx{opacity:1;animation:zpTwinkle .6s steps(2) infinite}
@keyframes zpTwinkle{50%{opacity:.3}}
.zp-coin{position:absolute;top:-30px;width:20px;height:20px;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 35% 35%,#fff,#e6e6e6 55%,#9a9a9a);box-shadow:inset 0 0 0 2px #333;animation:zpFall linear forwards}
.zp-coin::after{content:"";position:absolute;left:6px;top:6px;width:8px;height:8px;background:#222;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%)}
@keyframes zpFall{to{transform:translateY(600px) rotate(540deg)}}

/* 卷轴 */
.zp-zone{position:absolute;left:0;right:0;z-index:20;display:flex;justify-content:center;pointer-events:none}
.zp-zone .qscroll{pointer-events:auto}
.qscroll{width:min(360px,94%);position:relative;filter:drop-shadow(0 10px 18px rgba(0,0,0,.35));transform-origin:50% 0}
.qclose{position:absolute;right:-6px;top:-14px;z-index:4;width:34px;height:34px;border-radius:50%;border:2px solid #ffd76a;background:#c8102e;color:#fff;font-size:20px;line-height:28px;cursor:pointer;opacity:0;transition:opacity .3s .9s;padding:0}
.opened .qclose{opacity:1}
.rod{height:20px;border-radius:10px;background:linear-gradient(#ffe9a0,#d99a00 55%,#8a5600);position:relative;z-index:2;border:2px solid #5a3a00}
.rod::before,.rod::after{content:"";position:absolute;top:-4px;width:16px;height:24px;border-radius:6px;background:linear-gradient(#c8102e,#7a0010);border:2px solid #4a0008}
.rod::before{left:-12px}.rod::after{right:-12px}
.paper{height:0;overflow:hidden;margin:0 10px;background:linear-gradient(90deg,#efe0bb,#fbf3dc 18%,#fff8e6 50%,#fbf3dc 82%,#efe0bb);transition:height 1.1s cubic-bezier(.4,0,.2,1)}
.seal{position:absolute;left:50%;top:6px;transform:translateX(-50%);z-index:3;background:#c8102e;color:#ffd76a;font-weight:900;font-size:14px;padding:3px 8px;border-radius:4px;border:2px solid #ffd76a;transition:opacity .3s}
.opened .seal{opacity:0}
.paper-in{margin:10px;border:2px solid #c8102e;outline:1px solid #c8102e;outline-offset:3px;padding:16px 14px 14px;text-align:center;color:#3a1a00;font-size:14px;line-height:1.7}
.paper-in>*{opacity:0;transform:translateY(6px);transition:.4s}
.opened .paper-in>*{opacity:1;transform:none}
.qhead{position:relative;height:28px;display:flex;align-items:center;justify-content:center}
.qlogo{position:absolute;left:0;top:0;height:26px;width:auto;background:#0f5132;border-radius:6px;padding:3px 6px}
.qtitle{font-weight:900;font-size:16px;color:#b8000f;letter-spacing:4px}
.qdate{font-size:12px;color:#8a5a20;letter-spacing:1px;margin-top:2px}
.qlv{display:inline-block;margin:8px 0 2px;padding:2px 14px;border-radius:4px;background:#c8102e;color:#ffd76a;font-weight:900;font-size:15px;letter-spacing:3px}
.qname{font-family:'Noto Serif SC','Songti SC','SimSun',serif;font-weight:900;font-size:36px;color:#b8000f;letter-spacing:6px;line-height:1.3}
.qpoem{font-family:'Noto Serif SC','Songti SC','SimSun',serif;font-size:18px;font-weight:700;margin:10px 0 4px;letter-spacing:4px;line-height:1.75}
.qjie{font-size:14px;color:#6a4a20;margin:4px 0 10px}
.qyj{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0;text-align:left}
.qyj div{background:rgba(200,16,46,.06);border-radius:8px;padding:6px 10px;font-size:13px}
.qyj b{display:inline-block;width:22px;height:22px;line-height:22px;text-align:center;border-radius:50%;color:#fff;margin-right:6px;font-size:12px}
.qyj .y b{background:#0f7a3a}.qyj .j b{background:#c8102e}
.qfocus{display:block;text-decoration:none!important;background:#0f5132;color:#fff!important;border-radius:10px;padding:9px 10px;font-size:13px;margin:6px 0 12px}
.qfocus b{color:#ffd76a}
.qshare-t{font-weight:900;color:#b8000f;font-size:15px;margin-bottom:6px}
.qshare{display:flex;gap:8px;justify-content:center}
.qshare button{flex:1;border:0;border-radius:10px;padding:10px 4px;font:inherit;font-size:14px;font-weight:700;color:#fff;cursor:pointer}
.qshare .wx{background:#07c160}.qshare .tg{background:#229ed9}.qshare .cp{background:#6b5a40}
.qfoot{font-size:11px;color:#9a8460;margin-top:10px}
.zp-toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:rgba(0,0,0,.85);color:#fff;padding:10px 16px;border-radius:10px;font-size:14px;z-index:10000;max-width:90%}

/* 微信结果图 */
.zp-modal{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;padding:16px}
.zp-modal-in{position:relative;background:#fff;border-radius:14px;padding:14px;max-width:420px;width:100%;max-height:92vh;overflow:auto;text-align:center}
.zp-modal-in img{display:block;width:100%;height:auto;border-radius:8px}
.zp-modal-t{margin:4px 0 10px;font-weight:800;color:#0f5132}
.zp-modal-x{position:absolute;right:8px;top:6px;border:0;background:none;font-size:26px;cursor:pointer;color:#333}
.zp-dl{display:inline-block;margin-top:10px;background:#07c160;color:#fff!important;font-weight:800;padding:9px 20px;border-radius:999px;text-decoration:none!important}

/* 说明文字 */
.zp-info{max-width:640px;margin:34px auto 0}
.zp-tiers{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;padding:0;list-style:none;margin:12px 0 18px}
.zp-tiers li{background:var(--surface,#fff);border:1px solid var(--line,rgba(0,0,0,.08));border-radius:10px;padding:8px 10px;font-size:14px}
.zp-tiers li span{display:inline-block;margin-left:6px;font-size:12px;color:#fff;background:#0f7a3a;border-radius:4px;padding:0 6px}
.zp-tiers li.mid span{background:#b58a00}.zp-tiers li.bad span{background:#c8102e}

@media (prefers-reduced-motion:reduce){#zp .bulb,#zp .ch .upper{animation:none!important}#zp .wheel{transition-duration:.01s}}
