:root{color-scheme:dark;font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:#fff;background:#241346;--gold:#ffe151;--violet:#403080}
*{box-sizing:border-box}body{margin:0;min-width:300px;min-height:100dvh;overflow:hidden}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait}button:focus-visible,input:focus-visible{outline:5px solid #fff16c;outline-offset:5px}button{touch-action:manipulation}p,h1,h2{margin:0}[hidden]{display:none!important}
#viewport{position:relative;overflow:hidden;width:100vw;height:100dvh;display:flex;align-items:center;justify-content:center}#stage{position:absolute;width:1920px;height:1080px;transform-origin:center center;flex-shrink:0;overflow:hidden}.screen{position:absolute;inset:0;background-size:1920px 1080px;background-repeat:no-repeat}.home-screen{background-image:url('assets/home-bg.png')}.game-screen{background-image:url('assets/game-bg.png')}.result-screen{background-image:url('assets/result-bg.png')}
.home-title{position:absolute;left:506px;top:171px;width:908px;height:158px}.entry-form{position:absolute;left:450px;top:406px;width:1020px;text-align:center}.entry-form h1{font-size:43px;font-weight:800;letter-spacing:2px}.entry-description{font-size:25px;color:#e3ccff;margin-top:16px}.name-label{display:block;font-size:23px;text-align:left;width:520px;margin:33px auto 12px}.entry-form input{display:block;margin:auto;width:520px;height:78px;padding:0 24px;border:2px solid #b09ae5;border-radius:9px;background:#fff;color:#403080;font-size:29px;box-shadow:0 8px 24px #2d145e35}.entry-form input::placeholder{color:#9484ad}.entry-error{height:39px;padding-top:9px;font-size:20px;color:#ffdfa2}.gold-button{min-width:486px;height:79px;padding:0 65px;background:var(--gold);clip-path:polygon(5% 0,95% 0,100% 50%,95% 100%,5% 100%,0 50%);border:0;color:var(--violet);font-size:34px;font-weight:900;letter-spacing:2px;transition:filter .2s,transform .2s}.gold-button:hover{filter:brightness(1.08);transform:translateY(-2px)}.gold-button:disabled{opacity:.7}.rules-link{background:none;border:0;color:#fff;font-size:21px;padding:5px 12px;text-decoration:underline;text-underline-offset:6px}.home-rules{position:absolute;top:966px;left:820px;width:280px;font-size:22px}
.game-header{position:absolute;left:70px;top:32px;width:1273px;height:102px;background:url('assets/info-bar.png') no-repeat}.countdown{position:absolute;left:70px;top:9px;color:#443184;font-family:Consolas,"Courier New",monospace;font-size:75px;font-weight:900;letter-spacing:-6px;line-height:92px;font-variant-numeric:tabular-nums}.countdown.urgent{color:#b83554;animation:clock-alert 1s ease-in-out infinite}.game-name{position:absolute;left:705px;top:7px;width:280px;height:88px;line-height:88px;font-size:53px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;color:#3c2a83;font-weight:900}.game-guidance{position:absolute;left:93px;top:146px;width:1240px;display:flex;align-items:center;gap:26px;color:#f1eaff;font-size:22px}.game-guidance strong{color:#ffe66c;font-size:25px}.top-board{position:absolute;left:85px;top:190px;width:1266px;height:623px;background:url('assets/board-frame.png') no-repeat;background-size:100% 100%}.card{position:absolute;border:0;padding:0;background:transparent;isolation:isolate;overflow:visible;cursor:pointer}.card-top{width:141px;height:162px}.card-bottom{width:129px;height:129px}.card-shape{position:absolute;inset:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);transition:background .22s,filter .22s;overflow:hidden}.card-bottom .card-shape{clip-path:polygon(14% 0,86% 0,100% 14%,100% 86%,86% 100%,14% 100%,0 86%,0 14%)}.card[data-state="hidden"] .card-shape{background:#7151ca19}.card[data-state="hidden"]:hover .card-shape{background:#b89aff55;box-shadow:inset 0 0 30px #fff8}.card[data-state="face"],.card[data-state="consumed"]{cursor:default}.card:disabled{cursor:default}.card img.hero-art{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.card[data-state="consumed"] .card-shape{background:#777;filter:grayscale(1)}.card[data-state="consumed"] .hero-art{opacity:.62;filter:grayscale(1) brightness(.9)}.card[data-state="consumed"] .card-shape:after{content:"";position:absolute;inset:0;background:rgba(32,32,32,.18);pointer-events:none}.card-stars{position:absolute;z-index:4;left:50%;top:-23px;transform:translateX(-50%);height:auto;width:139px;pointer-events:none}.card-stars.three{width:158px;top:-29px;filter:drop-shadow(0 0 8px #ffe87399)}.card-bottom .card-stars{width:91px;top:-10px}.card-bottom .card-stars.three{width:105px;top:-17px}.card.is-flipping .card-shape{animation:flip-card .34s ease-out}.card.is-merging{animation:merge-pulse .9s ease-out;z-index:10}.card.is-merging .card-shape{filter:drop-shadow(0 0 18px #fff0ad)}.bottom-board{position:absolute;left:68px;top:820px;width:1300px;height:200.44px;background:url('assets/bottom-tray.png') no-repeat;background-size:100% 100%}.bottom-board .card-bottom{width:122px;height:122px;top:37.82px}.leaderboard{position:absolute;left:1415px;top:32px;width:443px;height:929px;background:url('assets/leaderboard.png') no-repeat}.rank-list{list-style:none;margin:0;position:absolute;top:203px;left:38px;right:31px;padding:0}.rank-row{height:56px;display:flex;align-items:center;gap:12px;font-size:23px;color:#f3eaff;font-weight:700}.rank-number{font-size:39px;font-style:italic;font-weight:900;width:40px;text-align:center;flex-shrink:0}.rank-avatar{width:47px;height:48px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);object-fit:cover;background:#cbb9fa;display:flex;align-items:center;justify-content:center;color:#533d91;font-size:26px;flex-shrink:0}.rank-info{height:42px;min-width:0;flex:1;display:flex;align-items:center;gap:5px;padding:0 10px;background:url('assets/rank-name.png') no-repeat;background-size:100% 100%;font-size:22px}.rank-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.rank-time{font-family:Consolas,monospace;white-space:nowrap;font-size:21px}.rank-empty{position:absolute;left:0;right:0;top:430px;text-align:center;color:#efdefd;font-size:29px;line-height:1.9}.rank-empty strong{font-size:39px;font-weight:800}.game-effects{position:absolute;inset:0;pointer-events:none;z-index:15}.merge-particle{position:absolute;object-fit:contain;filter:drop-shadow(0 0 12px #ffea78);pointer-events:none}
.result-name{position:absolute;left:490px;top:397px;width:940px;color:white;text-align:center;font-size:79px;font-weight:900;line-height:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-time{position:absolute;left:600px;top:615px;width:720px;text-align:center;font-family:Consolas,monospace;font-size:77px;font-weight:900;letter-spacing:-4px}.result-status{position:absolute;left:0;top:710px;width:100%;text-align:center;font-size:27px;color:#ecdcff;letter-spacing:5px}.result-banner{position:absolute;left:420px;top:777px;width:1080px;min-height:115px;padding:20px 40px;background:#ffe14f;color:#3c287b;clip-path:polygon(2.5% 0,97.5% 0,100% 50%,97.5% 100%,2.5% 100%,0 50%);text-align:center}.result-banner #result-summary{font-size:34px;font-weight:900;line-height:46px}.result-banner #result-detail{font-size:23px;line-height:32px}.result-return{position:absolute;left:790px;top:941px;width:340px;background:none;border:1px solid #d9caff;border-radius:7px;color:white;font-size:26px;padding:12px}.result-return:hover{background:#ffffff19}.connection-status{position:absolute;bottom:52px;left:50%;transform:translateX(-50%);max-width:1400px;background:#281746eb;border:1px solid #c5aaff;color:#fff;padding:14px 28px;border-radius:8px;font-size:25px;z-index:30}.toast{position:fixed;z-index:60;left:50%;bottom:25px;transform:translateX(-50%);max-width:min(580px,90vw);padding:15px 22px;border:1px solid #dec7ff;border-radius:10px;background:#281746f5;color:white;font-size:16px;box-shadow:0 8px 40px #0005}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.rotate-hint{display:none}.rules-dialog{border:1px solid #b09ae5;border-radius:14px;background:#3b246c;color:white;width:min(650px,92vw);padding:32px;max-height:88dvh;line-height:1.8;box-shadow:0 20px 80px #0008}.rules-dialog::backdrop{background:#150b2bd9;backdrop-filter:blur(6px)}.rules-dialog h2{font-size:26px;margin:0 0 16px}.rules-dialog ol{padding-left:24px}.rules-dialog li{margin-bottom:12px}.dialog-close{position:absolute;right:12px;top:5px;font-size:32px;border:0;color:white;background:none}.rules-footnote{color:#e3cef9;font-size:14px}.dialog-button{margin-top:18px;width:100%;border:0;border-radius:5px;background:#ffe151;color:#403080;padding:12px;font-weight:700}
@keyframes flip-card{0%{transform:rotateY(90deg);filter:brightness(1.8)}100%{transform:rotateY(0);filter:brightness(1)}}@keyframes merge-pulse{0%{transform:scale(1)}45%{transform:scale(1.2);filter:brightness(1.7)}100%{transform:scale(1);filter:brightness(1)}}@keyframes clock-alert{50%{opacity:.6}}
@media(orientation:portrait) and (max-width:800px){.rotate-hint{display:block;position:fixed;top:20%;width:100%;text-align:center;color:#e4d4ff;font-size:14px;z-index:40}body{background:#34205b}.rules-dialog{font-size:14px;padding:26px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.returning-player .entry-description{margin-bottom:108px}.entry-form h1{max-width:880px;margin-left:auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.entry-form #entry-heading,.entry-form #entry-description{min-height:1lh}.entry-form:not(.returning-player) #entry-heading,.entry-form:not(.returning-player) #entry-description{visibility:hidden}
.game-guidance{top:138px;line-height:26px;font-size:19px}.game-guidance strong{font-size:22px}
.clear-data{position:absolute;right:64px;bottom:52px;border:1px solid #c6b4ee;border-radius:6px;padding:9px 18px;background:#3a22688c;color:#eee4ff;font-size:22px;z-index:20}.clear-data:hover{background:#4f328d}.clear-data:disabled{opacity:.5}.clear-actions{display:flex;gap:14px;margin-top:12px}.clear-actions .dialog-button{flex:1}.cancel-clear{background:transparent;color:#eee4ff;border:1px solid #b09ae5}
.wechat-login{position:absolute;left:650px;top:380px;width:620px;text-align:center}.wechat-title{font-size:30px;line-height:38px;font-weight:700;color:#f9f5ff;letter-spacing:2px}.wechat-qr-wrap{position:relative;width:358px;height:358px;margin:11px auto 0;padding:20px;background:#fff}.wechat-qr-wrap #wechat-qrcode,.wechat-qr-wrap canvas,.wechat-qr-wrap img{width:318px;height:318px;display:block}.wechat-qr-cover{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffef;color:#403080;font-size:29px;font-weight:700;padding:25px}.wechat-status{margin-top:9px;font-size:22px;line-height:32px;color:#e9ddff;min-height:32px}.wechat-refresh{border:0;border-bottom:1px solid #d9c6ff;background:none;color:#fff;font-size:21px;line-height:30px;padding:0 8px;margin-top:12px}.wechat-refresh:hover{color:#ffe75f}.wechat-refresh:disabled{opacity:.5}.wechat-unavailable{top:560px}.wechat-unavailable .wechat-title{font-size:38px;line-height:54px}.wechat-unavailable .wechat-status{font-size:27px;margin-top:25px}
.rank-avatar img{display:block;width:47px;height:48px;object-fit:cover}
.game-screen.is-win-hold .game-name{color:#53308c;text-shadow:0 1px 0 #ffe77c}.game-screen.is-win-hold #collection-progress{color:#fff2a8;text-shadow:0 0 12px #ffe76a88}.game-screen.is-win-hold #collection-progress strong{color:#fff4ac}.game-screen.is-win-hold .card[data-state="face"] .hero-art{filter:brightness(1.14)}
.win-dialog{width:min(560px,90vw);max-height:90dvh;margin:auto;padding:40px 32px 34px;border:1px solid #e4cd82;border-radius:20px;background:linear-gradient(155deg,#563397,#34205e);color:#fff;text-align:center;box-shadow:0 22px 80px #180c4266,0 0 0 6px #c69cfa18}.win-dialog::backdrop{background:#1c103652}.win-check{position:relative;width:70px;height:70px;margin:0 auto 24px;border:2px solid #ffe38b;border-radius:50%;background:#f0ce5814;box-shadow:0 0 28px #f5d57216}.win-check::after{content:"";position:absolute;left:22px;top:15px;width:18px;height:30px;border-right:4px solid #ffe38b;border-bottom:4px solid #ffe38b;transform:rotate(45deg)}.win-dialog h2{font-size:29px;line-height:1.45;letter-spacing:.5px;color:#fff4cd}.win-dialog p{margin-top:13px;font-size:17px;line-height:1.7;color:#e2d5f7}.win-result-button{display:block;width:100%;max-width:320px;margin:30px auto 0;padding:13px 24px;border:1px solid #ffe791;border-radius:9px;background:linear-gradient(110deg,#ffe685,#f5cd52);color:#42266d;font-size:19px;font-weight:800;line-height:1.5;box-shadow:0 5px 18px #22113e30}.win-result-button:hover{filter:brightness(1.05)}.win-result-button:disabled{opacity:.55;cursor:wait}.win-dialog:focus-visible{outline:none}@media(max-width:480px){.win-dialog{padding:32px 22px 27px}.win-dialog h2{font-size:23px}.win-dialog p{font-size:15px}.win-check{margin-bottom:19px}.win-result-button{margin-top:25px}}
.audio-toggle{position:absolute;left:1435px;bottom:52px;z-index:20;border:1px solid #c6b4ee;border-radius:6px;padding:9px 18px;background:#3a22688c;color:#eee4ff;font-size:22px}.audio-toggle:hover{background:#4f328d}
