:root{--bg:#0a0d13;--card:#151a23;--line:#2b3341;--text:#f7f8fb;--muted:#9ba6b7;--yellow:#ffd43b;--green:#46dc92;--red:#ff6978;--linegreen:#06c755}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#182031 0,#0a0d13 42%);color:var(--text);font-family:system-ui,-apple-system,"Noto Sans TC","Segoe UI",sans-serif;min-height:100vh}
.wrap{max-width:540px;margin:auto;padding:22px 16px 50px}.brand{font-size:12px;letter-spacing:.18em;color:#8e99aa;margin:5px 0 14px}
.card{background:rgba(21,26,35,.96);border:1px solid var(--line);border-radius:24px;padding:20px;margin-bottom:14px;box-shadow:0 18px 50px rgba(0,0,0,.22)}
h1{margin:0 0 8px;font-size:28px}h2{margin:0 0 12px}.muted,.hint{color:var(--muted)}.hint{font-size:12px;text-align:center}
label{display:block;color:var(--muted);font-size:13px;margin:13px 0 7px}
input,textarea{width:100%;background:#0d1118;color:white;border:1px solid var(--line);border-radius:14px;padding:14px;font-size:16px;outline:none;font-family:inherit}
textarea{min-height:130px;resize:vertical;line-height:1.6}
input:focus,textarea:focus{border-color:#596579;box-shadow:0 0 0 3px rgba(255,255,255,.03)}
textarea::placeholder,input::placeholder{color:#6f7a8c}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}button,.button{display:block;width:100%;padding:15px;border:0;border-radius:15px;font-size:16px;font-weight:850;text-align:center;text-decoration:none;cursor:pointer;margin-top:15px}
.primary{background:var(--yellow);color:#171717}.secondary{background:#222a36;color:white;border:1px solid var(--line)}.danger{background:#331b22;color:#ff9aa5;border:1px solid #67303d}.linebtn{background:var(--linegreen);color:white}
.hero{text-align:center;padding:27px 20px}.bag-wrap{position:relative;width:140px;height:120px;margin:10px auto}.bag-icon{font-size:92px;animation:floatBag 2.2s ease-in-out infinite}.spark{position:absolute;color:#ffe582;animation:twinkle 1.6s infinite}.s1{left:4px;top:18px}.s2{right:4px;top:10px}.s3{right:15px;bottom:5px}
.prize{font-size:18px;font-weight:900}.remain{color:var(--muted);margin-top:10px}.remain b{color:var(--yellow);font-size:22px}.big{font-size:72px}.result{text-align:center;padding:34px 20px}.win{color:var(--green)}
.event{display:flex;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid var(--line);color:white;text-decoration:none}.event:last-child{border-bottom:0}.event small,.record small{display:block;color:var(--muted);margin-top:3px}
.stat,.record{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line)}.record:last-child,.stat:last-child{border-bottom:0}.record b{color:#b9c2d2}.record b.win{color:var(--green)}
.copybox{background:#0d1118;border:1px dashed #485264;padding:12px;border-radius:13px;word-break:break-all;font-size:13px}.pill{display:inline-block;background:#2a3140;border-radius:999px;padding:6px 10px;color:#bac4d4;font-size:12px;margin-bottom:12px}.back{display:block;text-align:center;color:#aab5c5;text-decoration:none;margin:18px}.identity{background:#102419;border:1px solid #245e3b;padding:12px;border-radius:13px;color:#bdf4d2}
.topbar{display:flex;justify-content:space-between;margin-bottom:12px}.tiny-link{font-size:13px;color:#aab5c5;text-decoration:none}.login-card{margin-top:70px}.error{margin-top:10px;color:#ff9aa5;background:#321a22;border:1px solid #6b3341;padding:10px 12px;border-radius:12px}
.opening-overlay{position:fixed;inset:0;background:rgba(5,8,13,.88);display:flex;align-items:center;justify-content:center;z-index:999}.hidden{display:none}.opening-box{text-align:center}.opening-bag{font-size:110px;animation:shakeBag .18s infinite alternate}.opening-text{font-size:20px;font-weight:900;margin-top:10px}.reveal{animation:fadeUp .45s ease}.pop{animation:pop .5s ease}.confetti{font-size:34px;color:#ffe582;letter-spacing:12px;animation:twinkle 1.2s infinite}
@keyframes floatBag{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes twinkle{0%,100%{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}@keyframes shakeBag{from{transform:rotate(-7deg) scale(1)}to{transform:rotate(7deg) scale(1.05)}}@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.2);opacity:0}70%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}

.hidden-field{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
