*{margin:0;padding:0;box-sizing:border-box}body{font-family:Noto Sans TC,Microsoft JhengHei,sans-serif;background:linear-gradient(135deg,#0a0a2e,#1a1a4e,#0a0a2e);min-height:100vh;color:#fff}#root{min-height:100vh}.app{max-width:1200px;margin:0 auto;padding:20px}.header{text-align:center;padding:30px 0 20px}.header h1{font-size:2.5rem;background:linear-gradient(90deg,gold,#fa0,gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}.header p{color:#aaa;font-size:.95rem}.upload-section{text-align:center;margin:30px 0}.upload-label{display:inline-block;padding:14px 40px;background:linear-gradient(135deg,#2a2a6e,#3a3a8e);border:2px dashed #5555aa;border-radius:12px;color:#ccc;font-size:1rem;cursor:pointer;transition:all .3s}.upload-label:hover{border-color:gold;color:gold}.upload-label input[type=file]{display:none}.file-info{margin-top:12px;color:#8c8;font-size:.9rem}.prize-tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:20px 0}.prize-tab{padding:10px 16px;border-radius:8px;border:1px solid #444;background:#ffffff0d;color:#aaa;cursor:pointer;font-size:.85rem;transition:all .3s;position:relative}.prize-tab:hover{border-color:gold;color:gold}.prize-tab.active{border-color:gold;background:#ffd70026;color:gold;font-weight:700}.prize-tab.completed{border-color:#4a4;background:#44aa4426;color:#4a4}.prize-tab .badge{position:absolute;top:-8px;right:-8px;background:gold;color:#000;font-size:.7rem;padding:2px 6px;border-radius:10px;font-weight:700}.prize-tab.completed .badge{background:#4a4;color:#fff}.prize-info{text-align:center;padding:20px;background:#ffd7000d;border:1px solid rgba(255,215,0,.2);border-radius:12px;margin:20px 0}.prize-info h2{color:gold;font-size:1.3rem;margin-bottom:6px}.prize-detail{color:#ccc;font-size:.95rem;margin-bottom:4px}.eligible-count{color:#8af;font-size:.85rem}.controls{display:flex;justify-content:center;gap:12px;margin:20px 0;flex-wrap:wrap}.btn{padding:12px 36px;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s;font-family:inherit}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-start{background:linear-gradient(135deg,gold,#fa0);color:#000}.btn-start:hover:not(:disabled){transform:scale(1.05);box-shadow:0 0 20px #ffd70066}.btn-stop{background:linear-gradient(135deg,#f44,#c22);color:#fff}.btn-stop:hover:not(:disabled){transform:scale(1.05)}.btn-reset{background:linear-gradient(135deg,#555,#333);color:#fff}.btn-download{background:linear-gradient(135deg,#4a4,#383);color:#fff}.btn-download:hover:not(:disabled){transform:scale(1.05);box-shadow:0 0 20px #4a46}.slot-display{text-align:center;padding:30px;margin:20px 0;background:#0000004d;border-radius:16px;border:2px solid rgba(255,215,0,.3);min-height:140px;display:flex;flex-direction:column;align-items:center;justify-content:center}.slot-name{font-size:3rem;font-weight:700;color:gold;min-height:60px;display:flex;align-items:center}.slot-name.winner{animation:glow 1s ease-in-out infinite alternate}@keyframes glow{0%{text-shadow:0 0 10px rgba(255,215,0,.3)}to{text-shadow:0 0 30px rgba(255,215,0,.8),0 0 60px rgba(255,215,0,.4)}}.slot-phone{font-size:1.2rem;color:#aaa;margin-top:8px}.slot-display.rolling .slot-name{animation:roll .08s linear infinite;color:#8af}@keyframes roll{0%{opacity:1;transform:translateY(0)}50%{opacity:.5;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.progress-bar{margin:15px 0;text-align:center}.progress-bar .bar{width:100%;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-bar .fill{height:100%;background:linear-gradient(90deg,gold,#fa0);border-radius:4px;transition:width .3s}.progress-text{color:#888;font-size:.85rem}.winners-section{margin-top:20px}.winners-section h3{color:gold;margin-bottom:12px;font-size:1.1rem}.winners-table-wrapper{overflow-x:auto}.winners-table{width:100%;border-collapse:collapse;font-size:.9rem}.winners-table th{background:#ffd70026;color:gold;padding:10px 12px;text-align:left;border-bottom:2px solid rgba(255,215,0,.3);white-space:nowrap}.winners-table td{padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.05);color:#ccc}.winners-table tr:nth-child(2n){background:#ffffff05}.winners-table tr.new-winner{animation:highlight 1.5s ease-out}@keyframes highlight{0%{background:#ffd7004d}to{background:transparent}}.download-section{text-align:center;margin:30px 0;padding:20px;background:#44aa441a;border:1px solid rgba(68,170,68,.3);border-radius:12px}.download-section h3{color:#4a4;margin-bottom:12px}.download-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.no-data{text-align:center;color:#666;padding:40px;font-size:1.1rem}.mask-phone{letter-spacing:1px}
