*{box-sizing:border-box}html{width:100%;min-width:0;background:#87c98a}body{margin:0;width:100%;min-width:0;color:#12301e;background:#87c98a;font-family:Microsoft YaHei,PingFang SC,Helvetica Neue,sans-serif}button,input{font:inherit}button{border:0;cursor:pointer}#app{width:100%}.page{width:100%;min-height:100dvh;overflow-x:hidden;background:radial-gradient(circle at 20% 18%,rgba(255,255,255,.26),transparent 19rem),radial-gradient(circle at 82% 4%,rgba(255,230,106,.2),transparent 15rem),linear-gradient(135deg,rgba(255,255,255,.08) 25%,transparent 25%) 0 0 / 18px 18px,linear-gradient(180deg,#bce99c,#69b66c 43%,#2d6e3d)}.campaign-shell{position:relative;width:100%;max-width:430px;min-height:100dvh;margin:0 auto;padding:0 18px 22px;overflow:hidden;background:linear-gradient(180deg,#07412305,#062a1833),linear-gradient(180deg,#bff0a3,#6fc173 46%,#357c45);box-shadow:0 0 30px #0631232e}.hero-photo{width:calc(100% + 36px);margin:0 -18px;padding:0;background:#66cdf6}.hero-photo img{display:block;width:100%;height:auto;aspect-ratio:1200 / 768;object-fit:contain}.side-tabs{position:fixed;top:30%;right:max(6px,calc((100vw - 430px)/2 + 6px));z-index:12;display:flex;flex-direction:column;gap:8px}.side-tabs button{width:38px;min-height:96px;padding:9px 6px;color:#315439;font-size:13px;font-weight:800;line-height:1.25;writing-mode:vertical-rl;letter-spacing:1px;background:#e4f7d9d6;border:2px solid rgba(49,98,54,.24);border-radius:10px 0 0 10px;box-shadow:0 8px 18px #002d162e}.title-board{position:relative;z-index:2;margin:-4px 0 14px;padding:17px 18px 19px;background:#ffffffeb;border:3px solid rgba(255,255,255,.95);border-radius:16px;box-shadow:0 12px #2d713147,0 20px 34px #0948232e}.title-board span,.section-kicker{color:#e94835;font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.title-board h1{margin:7px 0 9px;color:#08305d;font-size:clamp(25px,7vw,34px);line-height:1.08;letter-spacing:0}.title-board p{margin:0;color:#315675;font-size:14px;line-height:1.8}.join-card,.match-arena,.history-sheet,.winner-detail,.record-detail-card{border:3px solid rgba(255,255,255,.88);border-radius:16px;background:#ffffffeb;box-shadow:0 14px 28px #073d212e}.join-card{padding:14px}.user-panel{display:grid;grid-template-columns:58px 1fr 74px;align-items:center;gap:12px}.wechat-avatar,.wechat-login span{display:grid;place-items:center;width:54px;height:54px;flex:0 0 54px;color:#fff;font-size:28px;font-weight:900;border-radius:14px;background:linear-gradient(135deg,#1eb44b,#67cf73);box-shadow:inset 0 -4px #005c232e}.user-panel small,.login-panel small{display:block;color:#557184;font-size:12px}.user-panel strong{display:block;margin-top:2px;color:#082b52;font-size:22px;line-height:1.1}.user-panel p{margin:5px 0 0;color:#6c7e88;font-size:13px}.user-panel button,.gold-wide,.modal-confirm{color:#fff;font-weight:900;background:linear-gradient(135deg,#ff5d48,#ffb12c);box-shadow:0 7px #bf551638}.user-panel button{height:46px;border-radius:13px}.wechat-login{display:flex;width:100%;align-items:center;gap:13px;min-height:82px;padding:15px;text-align:left;color:#fff;border:2px solid rgba(255,255,255,.58);border-radius:18px;background:radial-gradient(circle at 92% 12%,rgba(255,255,255,.24),transparent 4.2rem),linear-gradient(135deg,#1a9847,#43bb5d);box-shadow:inset 0 -5px #0056222e,0 10px 18px #095b2b2e}.wechat-login strong{display:block;font-size:17px}.wechat-login small{margin-top:4px;color:#ffffffd6}.date-picker input{width:100%;min-width:0;height:46px;padding:0 13px;color:#0b2c53;border:2px solid #d9e7ed;border-radius:11px;outline:none;background:#fff}.date-picker input:focus{border-color:#f7c748}.match-arena{position:relative;margin-top:18px;padding:17px 14px;background:linear-gradient(90deg,#ffffffe6,#ffffffc7),radial-gradient(circle at 50% -30%,rgba(255,224,80,.4),transparent 12rem)}.match-arena h2{margin:3px 0 14px;color:#07315e;font-size:27px;line-height:1}.date-picker{margin:2px 0 14px}.date-picker label{position:relative;display:block;padding:13px 14px 14px 54px;overflow:hidden;background:linear-gradient(180deg,#fffffff5,#f5fcf6eb),#f7fbff;border:2px solid rgba(242,199,58,.78);border-radius:18px;box-shadow:inset 0 0 0 2px #ffffffb8,0 8px #18672f1f,0 14px 22px #0a3e211a}.date-picker label:before{content:"";position:absolute;left:14px;top:50%;width:28px;height:30px;transform:translateY(-50%);border-radius:9px;background:linear-gradient(#e94c36 0 7px,transparent 7px),linear-gradient(180deg,#fff3bd,#ffd75a);box-shadow:inset 0 0 0 2px #704b001f,0 4px #b874162e}.date-picker label span{display:block;margin-bottom:8px;color:#547066;font-size:12px;font-weight:900}.date-picker input{display:block;width:100%;min-width:0;box-sizing:border-box;height:36px;padding:0;color:#09335e;font-size:20px;font-weight:900;border:0;border-radius:0;background:transparent;box-shadow:none}.date-picker input:focus{border-color:transparent}.date-tabs{display:flex;gap:8px;margin:2px -3px 15px;padding:3px;overflow-x:auto;scrollbar-width:none}.date-tabs::-webkit-scrollbar{display:none}.date-tabs button{flex:0 0 auto;min-width:96px;height:42px;color:#45616f;font-size:14px;font-weight:900;border:2px solid #dbe9ef;border-radius:999px;background:#fff}.date-tabs button.active{color:#543700;border-color:#f2c73a;background:linear-gradient(180deg,#ffe777,#f5c13d)}.match-arena h3{margin:0 0 12px;color:#143b27;font-size:18px}.empty-panel{padding:15px;color:#657884;font-size:14px;line-height:1.6;border:2px dashed rgba(32,91,48,.18);border-radius:13px;background:#ffffffb8}.match-ticket{position:relative;margin:14px 0 0;padding:13px;overflow:hidden;border:4px solid #f2c93f;border-radius:22px 22px 30px 30px;background:linear-gradient(90deg,#fffffffa 0,#fffffffa 50%,#f9f9f7fa 50%,#f9f9f7fa),#fff;box-shadow:0 10px #b684152e}.match-ticket:after{content:"";position:absolute;left:50%;bottom:-35px;width:54%;height:72px;transform:translate(-50%) rotate(45deg);background:#fff;border-right:4px solid #f2c93f;border-bottom:4px solid #f2c93f}.ticket-head,.match-foot{position:relative;z-index:1;display:flex;justify-content:space-between;gap:10px;align-items:center}.ticket-head small{display:block;color:#64757a;font-size:12px}.ticket-head strong{display:block;margin-top:3px;color:#111;font-size:25px}.ticket-head>span{padding:7px 12px;color:#02739a;font-size:13px;font-weight:900;border-radius:999px;background:#dff7ff}.ticket-head>span.finished{color:#557524;background:#e9f7d7}.coupon-strip{position:relative;z-index:1;display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:7px;margin:12px 0;padding:10px 12px;color:#7a4b00;border-radius:12px;background:#fff1c7}.coupon-strip strong{color:#e7432c;font-size:20px}.coupon-strip small{justify-self:end;color:#e7432c;font-size:12px;font-weight:900}.versus{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) 74px minmax(0,1fr);gap:7px;align-items:center}.team-pick,.draw-pick{display:grid;justify-items:center;min-width:0;min-height:164px;padding:12px 8px 10px;color:#0b2c53;border:2px solid #ddeaf0;border-radius:15px;background:#fff}.team-pick.active{border-color:#f2c63d;background:#fff8d7;box-shadow:inset 0 0 0 3px #f6c3382e}.draw-pick{align-content:center;color:#543700;border-color:#f2c63d;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.62),transparent 2.5rem),linear-gradient(180deg,#fff0a4,#ffd24a)}.draw-pick.active{color:#fff;border-color:#e94835;background:linear-gradient(180deg,#ff6a4f,#f5a22b);box-shadow:inset 0 0 0 3px #ffffff38}.draw-pick strong{font-size:34px;line-height:1}.draw-pick small{margin-top:10px;color:currentColor;font-size:12px;font-weight:900;line-height:1.25}.flag-box{display:grid;place-items:center;width:58px;height:58px;margin-bottom:8px;overflow:hidden;border-radius:14px;background:linear-gradient(135deg,#ff624d,#ffae30)}.flag-box img{width:100%;height:100%;object-fit:cover}.flag-box b{color:#fff;font-size:23px}.team-pick strong{width:100%;min-width:0;color:#081f3f;font-size:16px;line-height:1.25;text-align:center;word-break:break-word}.team-pick small{display:block;min-height:18px;margin-top:6px;color:#e94532;font-size:12px;font-weight:900;text-align:center}.team-pick em{display:grid;place-items:center;width:64px;height:34px;margin-top:10px;color:#fff;font-style:normal;font-weight:900;border-radius:999px;background:linear-gradient(180deg,#ffd95d,#f2a91d);box-shadow:0 4px #c58417}.match-foot{z-index:2;margin-top:13px;color:#153b5d;font-size:14px;font-weight:900}.match-foot strong{color:#e7432c;font-size:13px}.bottom-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin:20px 0 4px}.bottom-actions button{position:relative;min-height:104px;padding:15px 12px 14px;overflow:hidden;color:#4b3500;text-align:left;border:3px solid rgba(255,244,172,.9);border-radius:20px;background:radial-gradient(circle at 82% 18%,rgba(255,255,255,.72),transparent 2.8rem),linear-gradient(180deg,#ffe870,#ffc438 58%,#f0a51e);box-shadow:inset 0 2px #ffffffb8,0 8px #b97819,0 15px 22px #073d2133}.bottom-actions button:after{content:"";position:absolute;right:-18px;bottom:-24px;width:72px;height:72px;border-radius:50%;background:#ffffff38}.bottom-actions span{position:relative;z-index:1;display:block;color:#6f4b00;font-size:15px;font-weight:900}.bottom-actions strong{position:relative;z-index:1;display:block;margin:7px 0 8px;color:#0d3f27;font-size:32px;line-height:1}.bottom-actions small{position:relative;z-index:1;display:block;color:#4b3500bd;font-size:12px;font-weight:900;line-height:1.35}.coupon-card{display:grid;grid-template-columns:minmax(0,1fr) 70px;gap:12px;align-items:center;margin-top:12px;padding:15px;border-radius:17px;background:radial-gradient(circle at left center,transparent 0 10px,#fff3ca 11px),linear-gradient(135deg,#fff7d9,#ffe29d);box-shadow:0 8px #b77e1833}.coupon-card span{color:#df3e2c;font-size:12px;font-weight:900}.coupon-card strong{display:block;margin-top:5px;color:#12325c;font-size:22px;word-break:break-word}.coupon-card p{margin:6px 0 0;color:#6d5e3e;font-size:12px;line-height:1.45}.coupon-card em{display:grid;place-items:center;width:62px;height:62px;color:#fff;font-style:normal;font-weight:900;border-radius:50%;background:#e74832}.coupon-card em.redeemed{background:#75828c}.prize-sheet{background:radial-gradient(circle at 85% 8%,rgba(255,218,82,.32),transparent 8rem),#f7fbff}.prize-empty{margin-top:14px;padding:22px 16px;text-align:center;border:2px dashed rgba(232,72,53,.25);border-radius:16px;background:#fff6dad1}.prize-empty strong{display:block;color:#0b2d56;font-size:19px}.prize-empty p{margin:8px 0 0;color:#667781;font-size:13px;line-height:1.6}.gift-floor{display:flex;align-items:end;justify-content:center;gap:8px;height:74px;margin:18px -18px -22px;padding:0 14px 12px;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,.93) 70%)}.gift-floor i{display:block;width:42px;height:34px;border:3px solid rgba(35,49,66,.35);border-radius:8px 8px 3px 3px}.gift-floor i:nth-child(1){background:#8e66cf;transform:rotate(-8deg)}.gift-floor i:nth-child(2){background:#ffcc52;height:46px}.gift-floor i:nth-child(3){background:#64c1f1;transform:rotate(7deg)}.gift-floor i:nth-child(4){background:#ff8a8a;height:40px}.gift-floor i:nth-child(5){background:#8bd96f;transform:rotate(-5deg)}.gift-floor span{margin-left:8px;color:#172323;font-size:15px;font-weight:900}.modal-mask,.sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:18px;background:#041d10ad}.blue-modal{position:relative;width:min(92vw,410px);max-height:82dvh;overflow-y:auto;padding:25px 20px 20px;color:#fff;border:5px solid #fff;border-radius:22px;background:radial-gradient(circle at 20% 10%,rgba(255,255,255,.18),transparent 8rem),linear-gradient(135deg,rgba(255,255,255,.06) 25%,transparent 25%) 0 0 / 12px 12px,#2b83bd;box-shadow:0 22px 40px #0000003d}.blue-modal h2{margin:0 0 18px;color:#ffe34c;font-size:29px;text-align:center;text-shadow:0 2px 0 rgba(56,72,97,.5)}.modal-content{display:grid;gap:10px;color:#fffffff0;font-size:15px;line-height:1.7}.modal-content p{margin:0}.modal-content strong{color:#ffe34c}.modal-close{position:absolute;right:10px;top:8px;width:34px;height:34px;color:#fff;font-size:28px;line-height:1;background:transparent}.modal-confirm{display:block;width:70%;height:48px;margin:22px auto 0;border-radius:999px;background:linear-gradient(180deg,#ffe45a,#f3bd2c);color:#fff;font-size:20px;text-shadow:0 2px 0 rgba(142,93,0,.28)}.modal-empty{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.22)}.history-item em,.detail-status span{padding:5px 8px;color:#855f00;font-size:12px;font-style:normal;font-weight:900;border-radius:999px;background:#fff1ba}.history-item em.hit,.detail-status span.hit{color:#0a6f34;background:#ddffd8}.history-item em.miss,.detail-status span.miss{color:#a4372c;background:#ffe3df}.history-item em.redeemed,.detail-status span.redeemed{color:#55606b;background:#eef1f4}.history-sheet{width:min(94vw,430px);max-height:84dvh;overflow-y:auto;padding:16px;background:#f7fbff}.sheet-head{display:grid;grid-template-columns:52px 1fr 52px;gap:10px;align-items:center;text-align:center}.sheet-head span{color:#e94835;font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.sheet-head h2{margin:2px 0 0;color:#07315e;font-size:22px}.sheet-link,.sheet-close{height:34px;color:#315675;font-size:13px;font-weight:900;background:transparent}.refresh-strip{width:100%;height:42px;margin:14px 0;color:#fff;font-weight:900;border-radius:999px;background:#0c365a}.history-list{display:grid;gap:10px}.history-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px;text-align:left;border:2px solid #dce9f0;border-radius:14px;background:#fff}.history-item span,.history-item small{color:#637988;font-size:12px}.history-item strong{display:block;margin:5px 0;color:#0a315d;font-size:15px}.record-detail-card{margin-top:8px;padding:14px;box-shadow:none}.detail-status{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.detail-status strong{color:#0a315d;font-size:20px}.record-detail-card dl,.winner-detail{display:grid;gap:10px}.record-detail-card dl{margin:0}.record-detail-card dl div,.winner-detail div{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px;padding-bottom:9px;border-bottom:1px solid #e2edf2}.record-detail-card dt,.winner-detail span{color:#667b87;font-size:13px}.record-detail-card dd,.winner-detail strong{margin:0;color:#0b2d56;font-size:14px;font-weight:900;word-break:break-word}.status-note{margin:14px 0;color:#516c78;font-size:13px;line-height:1.6;text-align:center}.winner-page{width:min(100%,480px);min-height:100dvh;margin:0 auto;padding:18px;background:radial-gradient(circle at 50% 5%,rgba(255,232,92,.35),transparent 13rem),linear-gradient(180deg,#b9e798,#62ad68 48%,#2a6d39)}.plain-back{height:40px;padding:0 14px;color:#fff;font-weight:900;border-radius:999px;background:#0e45246b}.winner-ticket{position:relative;margin:18px 0;padding:28px 18px 26px;color:#553800;text-align:center;border-radius:24px;background:radial-gradient(circle at left center,transparent 0 13px,#ffe58b 14px),radial-gradient(circle at right center,transparent 0 13px,#ffe58b 14px),linear-gradient(135deg,#fff8d9,#ffd665);box-shadow:0 14px #99670e2e,0 22px 35px #00391d38}.ticket-ribbon{display:inline-grid;place-items:center;min-width:116px;height:38px;color:#fff;font-weight:900;border-radius:999px;background:#e94835}.ticket-status{position:absolute;right:14px;top:14px;padding:6px 10px;color:#0c783b;font-weight:900;border-radius:999px;background:#e2ffd7}.ticket-status.redeemed{color:#596571;background:#eef1f4}.winner-ticket p{margin:22px 0 8px;color:#76530c;font-size:13px}.winner-ticket h1{margin:0;color:#082c59;font-size:clamp(30px,9vw,44px);line-height:1;word-break:break-word}.ticket-line{margin:20px 0;border-top:2px dashed rgba(111,78,9,.34)}.winner-ticket strong{display:block;color:#e84632;font-size:24px}.winner-ticket>span{display:block;margin-top:8px;color:#5e5d4b;font-size:14px}.winner-detail{padding:15px}.gold-wide,.green-wide{width:100%;height:50px;margin-top:10px;border-radius:999px;font-size:16px}.green-wide{color:#fff;font-weight:900;background:#0d7141;box-shadow:0 7px #043f213d}.toast,.loading{position:fixed;left:50%;z-index:50;transform:translate(-50%);border-radius:999px;color:#fff;font-size:14px;font-weight:900;box-shadow:0 12px 24px #0000002e}.toast{bottom:24px;max-width:min(86vw,380px);padding:12px 18px;background:#071f36eb}.loading{top:18px;padding:10px 16px;background:#0b4025d1}@media(max-width:430px){.campaign-shell{padding-inline:12px}.hero-photo{width:calc(100% + 24px);margin-inline:-12px}.title-board h1{font-size:25px}.bottom-actions{gap:7px}.bottom-actions button{min-height:94px;padding-inline:10px}.match-ticket{padding:10px;border-width:3px}.coupon-strip{grid-template-columns:auto auto;gap:2px 7px;padding:9px 10px}.coupon-strip small{grid-column:1 / -1;justify-self:start}.versus{grid-template-columns:minmax(0,1fr) 58px minmax(0,1fr);gap:5px}.team-pick,.draw-pick{min-height:142px;padding-inline:5px}.flag-box{width:48px;height:48px;border-radius:12px}.team-pick strong{font-size:14px}.team-pick em{width:54px;height:30px}.draw-pick strong{font-size:28px}.draw-pick small{font-size:11px}.side-tabs{right:2px}.side-tabs button{width:34px;min-height:86px;font-size:12px}}@media(min-width:720px){.campaign-shell,.winner-page{max-width:430px}}
