:root{--cny-red: #C41E3A;--cny-gold: #FFD700;--cny-dark-red: #8B0000;--cny-cream: #FFFDD0;--cny-light-gold: #FFF9E6}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Noto Sans TC,sans-serif;background:url(/lucky-wheel/cny_bg_s3.jpg) no-repeat center center fixed;background-size:cover;min-height:100vh;color:#333}.app-container{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}.event-period{color:var(--cny-gold);font-size:18px;font-weight:700;text-align:center;margin-bottom:15px;text-shadow:2px 2px 4px rgba(0,0,0,.5);letter-spacing:2px}.game-title{color:#dfc99a;font-size:32px;font-weight:700;text-align:center;margin-bottom:35px;text-shadow:2px 2px 4px rgba(0,0,0,.5);letter-spacing:3px}.wheel-instructions{color:#dfc99a;font-size:14px;text-align:center;margin-top:15px;line-height:1.8}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;color:var(--cny-gold)}.loading-spinner{width:60px;height:60px;border:4px solid rgba(255,215,0,.3);border-top-color:var(--cny-gold);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-size:18px;font-weight:500}.wheel-container{position:relative;width:320px;height:320px;margin:15px auto}.wheel{width:100%;height:100%;border-radius:50%;border:8px solid #ebc992;box-shadow:0 0 30px #ebc99280,inset 0 0 30px #0003;position:relative;overflow:hidden}.wheel.wheel-waiting{animation:continuousSpin .8s linear infinite}.wheel.wheel-landing{transition:transform 5s cubic-bezier(.17,.67,.12,.99)}@keyframes continuousSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.wheel-labels{position:absolute;top:50%;left:50%;width:0;height:0}.wheel-label{position:absolute;font-size:15px;font-weight:700;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.3);pointer-events:none;line-height:1.2;display:flex;flex-direction:column;align-items:center;white-space:nowrap}.wheel-pointer{position:absolute;top:-20px;left:50%;transform:translate(-50%);width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;border-top:40px solid var(--cny-gold);z-index:10;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.wheel-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:80px;height:80px;background:#ebc992;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:var(--cny-dark-red);cursor:pointer;box-shadow:0 4px 15px #0000004d;z-index:5;transition:transform .2s}.wheel-center:hover:not(:disabled){transform:translate(-50%,-50%) scale(1.05)}.wheel-center:disabled{opacity:.7;cursor:not-allowed}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.prize-modal{background:#fff;border-radius:20px;padding:0 0 20px;max-width:340px;width:100%;text-align:center;box-shadow:0 10px 40px #0000004d;border:2px solid #ccc;animation:modalSlideIn .3s ease-out;overflow:hidden}@keyframes modalSlideIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.prize-modal h2{background:#ac313e;color:#edcc4b;font-size:28px;margin:0 0 15px;padding:20px}.prize-name{font-size:22px;font-weight:700;color:#000;margin-bottom:8px;padding:0 20px}.prize-description{color:#000;font-size:14px;margin-bottom:20px;padding:0 20px}.coupon-code-box{background:var(--cny-light-gold);border-radius:12px;padding:15px;margin:0 20px 15px}.coupon-code-label{font-size:12px;color:#888;margin-bottom:5px}.coupon-code{font-size:28px;font-weight:700;color:var(--cny-red);letter-spacing:2px}.expiry-text{font-size:12px;color:#888;margin-bottom:10px}.minimum-order{color:#e53935;font-size:14px;font-weight:600;text-align:center;margin-bottom:15px}.share-button{background:var(--cny-red);color:#fff;border:none;padding:14px 30px;border-radius:30px;font-size:16px;font-weight:600;cursor:pointer;width:calc(100% - 40px);margin:0 20px;transition:background .2s}.share-button:hover{background:var(--cny-dark-red)}.close-button{background:#ccc;color:#333;border:none;padding:12px 30px;border-radius:30px;font-size:14px;cursor:pointer;margin:10px 20px 0;width:calc(100% - 40px)}.already-spun{background:#fff;border-radius:20px;padding:0 0 20px;max-width:340px;text-align:center;box-shadow:0 10px 40px #0000004d;border:2px solid #ccc;overflow:hidden}.already-spun h2{background:#ac313e;color:#edcc4b;padding:20px;margin:0 0 15px}.error-screen{background:var(--cny-cream);border-radius:20px;padding:30px 20px;max-width:340px;text-align:center;box-shadow:0 10px 40px #0000004d}.error-screen h2{color:var(--cny-red);margin-bottom:10px}.error-screen p{color:#666}.vivaia-logo{width:200px;height:auto;margin-bottom:35px}.page-title{color:var(--cny-gold);font-size:28px;text-align:center;margin-bottom:10px;text-shadow:2px 2px 4px rgba(0,0,0,.3)}.confetti{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:200}.confetti-piece{position:absolute;width:10px;height:10px;background:var(--cny-gold);animation:confettiFall 3s ease-out forwards}@keyframes confettiFall{0%{transform:translateY(-100vh) rotate(0);opacity:1}to{transform:translateY(100vh) rotate(720deg);opacity:0}}.instructions{color:#fffc;font-size:12px;text-align:center;margin-top:20px;padding:0 20px}
