
:root{--sky:#fbf8f1;--ink:#453124;--muted:#8e6449;--blue:#2e529e;--line:#f4ebd9;--gold:#fec047;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}body{margin:0;background:var(--sky);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-size:var(--fs-md);-webkit-font-smoothing:antialiased;min-height:100svh}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline:3px solid #bda684;outline-offset:4px}button{touch-action:manipulation}button[hidden],[hidden]{display:none!important}
body:before,body:after{content:"";position:fixed;z-index:-1;pointer-events:none}body:before{inset:0;background:radial-gradient(ellipse at 52% 40%,#fff7dd 0%,transparent 52%),radial-gradient(ellipse at 100% 0%,#f5edde 0%,transparent 42%)}body:after{right:0;bottom:0;width:46vw;height:42vh;background:linear-gradient(145deg,#f8f3e8,#f5edde);clip-path:polygon(100% 0,100% 100%,0 100%);opacity:.72}
.shell{max-width:1190px;margin:auto;padding:0 42px}.topbar{height:110px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #f3ead780}.brand{display:flex;align-items:center;gap:13px}.brand-icon{width:48px;height:48px;display:grid;place-items:center;background:#ffeaaf;border:1px solid #ffe5a4;border-radius:16px}.brand-icon svg{width:29px;height:29px}.brand-title{font-size:var(--fs-xl);font-weight:var(--fw-3);letter-spacing:1px}.brand-subtitle{font-size:var(--fs-xs);letter-spacing:1px;color:var(--muted);margin-top:4px}.top-actions{display:flex;align-items:center;gap:20px}.preview-label{display:flex;align-items:center;gap:7px;font-size:var(--fs-xs);color:var(--t-3)}.preview-label:before{content:"";width:6px;height:6px;border-radius:50%;background:#cebea5}.replay{display:flex;align-items:center;gap:7px;border:0;background:none;color:var(--t-link);font-size:var(--fs-sm);padding:10px 0;white-space:nowrap}.replay svg{width:15px;height:15px}.replay:hover{color:var(--blue)}
.scene{display:grid;grid-template-columns:minmax(0,570px) minmax(0,340px);gap:72px;align-items:center;justify-content:center;padding:44px 0 35px;min-height:655px}.board{position:relative;background:#ffffffc9;border:1px solid #f4ebda;border-radius:28px;padding:25px 27px 18px;box-shadow:0 16px 54px #77553d09,inset 0 1px 0 #fff;isolation:isolate}.board:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse,#ffeeb555,transparent 66%);pointer-events:none}.board-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.board-top h2{font-size:var(--fs-lg);letter-spacing:.5px;margin:0;font-weight:var(--fw-3)}.board-tag{font-size:var(--fs-xs);color:var(--t-3);border:1px solid #f4ebda;border-radius:7px;padding:5px 8px;background:#fcfaf6}.board-tag.playing{color:var(--t-link);background:#faf6ed;border-color:#f1e6d0}.floor-line{display:flex;align-items:center;gap:14px;margin:18px 0 21px}.floor-text{color:var(--t-3);font-size:var(--fs-xs);white-space:nowrap}.floors{display:flex;align-items:center;justify-content:space-between;flex:1;position:relative}.floors:before{content:"";height:1px;position:absolute;top:50%;left:4px;right:4px;background:#f5eddd;z-index:-1}.floor-dot{width:9px;height:9px;background:#f3ead7;border:2px solid #fff;border-radius:50%;transition:background .3s,box-shadow .3s}.floor-dot.current{background:var(--blue);box-shadow:0 0 0 4px #f8f2e6}.floor-dot.done{background:#c7b498}.box-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.chest-cell{position:relative;aspect-ratio:1.17;border:1px solid #f5edde;border-radius:15px;background:linear-gradient(145deg,#fdfbf8,#faf6ed);padding:0;overflow:visible;transition:border-color .4s,background .4s,box-shadow .4s;isolation:isolate;cursor:default}.chest-cell:disabled{color:inherit;opacity:1}.chest-cell:after{content:"";position:absolute;inset:-10px;background:radial-gradient(ellipse,#ffd56244,transparent 70%);opacity:0;transition:opacity .6s;pointer-events:none;z-index:-1}.cell-number{position:absolute;top:11px;left:13px;font-size:var(--fs-sm);font-weight:var(--fw-2);color:var(--t-3);transition:color .4s}.cell-status{position:absolute;bottom:7px;left:0;width:100%;font-size:var(--fs-xs);letter-spacing:.4px;color:var(--t-gold);opacity:0;transition:opacity .4s}.chest-art{width:174px;height:138px;position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);pointer-events:none}.mascot-art{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 5px 5px #ab7e2712)}.mascot-character{transform-origin:120px 163px}.mascot-lid{transform-origin:64px 79px;transition:transform .45s var(--ease)}.mascot-arm-left{transform-origin:58px 115px}.mascot-arm-right{transform-origin:182px 115px}.mascot-eyes{transform-origin:120px 119px}.mascot-feet,.mascot-arm,.mascot-eyes,.mascot-smile,.mascot-cheek{opacity:0;transition:opacity .3s}.mascot-star,.mascot-glasses,.mascot-book,.mascot-twinkles{opacity:0}.mascot-star{transform-origin:120px 74px}.mascot-shadow{transform-origin:121px 171px}.chest-cell.hop .mascot-character{animation:hello-hop .62s var(--ease) both}.chest-cell.hop .mascot-shadow{animation:shadow-hop .62s var(--ease) both}.chest-cell.hop{border-color:#f0e3ca}.chest-cell.anticipating .mascot-character{animation:tiny-shake .38s ease-in-out both}.chest-cell.winner{z-index:2;background:linear-gradient(150deg,#fffae0,#ffecb8);border-color:#f4c464;box-shadow:0 6px 24px #e0ab3020}.chest-cell.winner:after{opacity:1}.winner .cell-number{color:var(--t-gold)}.winner .cell-status{opacity:1}.winner .mascot-feet,.winner .mascot-arm,.winner .mascot-eyes,.winner .mascot-smile,.winner .mascot-cheek{opacity:1}.winner .mascot-lid{transform:translateY(-19px) rotate(-10deg)}.winner .mascot-star{opacity:1;transform:translateY(-19px) scale(.82)}.winner .mascot-twinkles{opacity:.7}.winner.reveal .mascot-character{animation:happy-pop .7s var(--ease) both}.winner.reveal .mascot-lid{animation:lid-pop .72s var(--ease) both}.winner.reveal .mascot-star{animation:star-pop .8s var(--ease) both}.winner.reveal .mascot-arm-right{animation:wave .95s ease-in-out .22s both}.winner.reveal .mascot-arm-left{animation:left-hello .85s ease-in-out .22s both}.winner.reveal .mascot-eyes{animation:happy-blink .7s ease-in-out .7s both}
.burst{position:absolute;inset:0;pointer-events:none}.burst i{position:absolute;left:50%;top:42%;height:7px;width:7px;border-radius:1px;background:#fdc24e;opacity:0}.winner.reveal .burst i{animation:confetti .92s var(--ease) .1s both}.burst i:nth-child(2n){background:#ccba9f;width:5px;height:5px}.burst i:nth-child(3n){border-radius:50%;background:#ffd482}
.board-foot{height:29px;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:6px;color:var(--t-3);font-size:var(--fs-xs)}.board-foot svg{width:13px;height:13px}.side{padding:10px 0;position:relative;min-width:0}.eyebrow{color:var(--t-gold);font-size:var(--fs-xs);letter-spacing:3px;display:flex;align-items:center;gap:8px;margin-bottom:15px}.eyebrow:before{content:"";display:block;width:23px;height:1px;background:#cba766}.welcome-title{font-size:39px;font-weight:var(--fw-3);line-height:1.42;letter-spacing:1px;margin:0;transition:font-size .35s var(--ease)}.greeting-slot{height:78px;display:flex;align-items:center}.greeting{font-size:var(--fs-sm);line-height:1.75;color:var(--t-3);margin:0;transition:color .3s,transform .4s}.greeting.celebrate{color:var(--t-gold);animation:say-hello .5s var(--ease) both}.greeting.celebrate:before{content:"✦";font-size:12px;color:#e2b042;margin-right:7px}.entry-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.button{min-height:49px;padding:12px 16px;border:1px solid transparent;border-radius:12px;font-size:var(--fs-sm);font-weight:var(--fw-2);display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;transition:transform .18s,box-shadow .2s,background .2s}.button:hover{transform:translateY(-2px)}.button:active{transform:translateY(1px)}.button svg{width:16px;height:16px}.button.primary{background:var(--blue);color:white;box-shadow:0 6px 14px #2e529e1a}.button.primary:hover{background:#2a4a90;box-shadow:0 8px 20px #2e529e24}.button.secondary{border-color:#efe2c8;color:var(--t-link);background:#ffffffbe}.entry-note{font-size:var(--fs-xs);line-height:1.9;color:var(--t-3);margin:15px 0 0;text-wrap:pretty}.entry-note strong{font-weight:var(--fw-2);color:var(--t-3)}.side .mini-divider{height:1px;background:linear-gradient(90deg,#f3e9d4,transparent);margin:26px 0 18px}.signin-switch{border:0;background:transparent;padding:5px 0;color:var(--t-3);font-size:var(--fs-xs)}.signin-switch:hover{color:var(--blue)}.login-panel{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .45s var(--ease),opacity .32s,visibility .32s}.login-panel>.login-inner{overflow:hidden}.side.form-open .login-panel{grid-template-rows:1fr;opacity:1;visibility:visible}.side.form-open .welcome-title{font-size:29px}.side.form-open .greeting-slot{height:40px}.side.form-open .entry-buttons,.side.form-open .entry-note,.side.form-open .mini-divider,.side.form-open .signin-switch{display:none}.login-form{padding:13px 0 0}.field{display:block;font-size:var(--fs-xs);color:var(--t-3);margin-bottom:15px}.field input{width:100%;margin-top:7px;padding:13px 15px;border:1px solid #f0e4cc;border-radius:11px;background:#ffffffbd;color:var(--t-1);min-height:46px;font-size:var(--fs-md)}.field input::placeholder{color:var(--t-3);font-size:var(--fs-sm)}.field input[readonly]{color:var(--t-3);background:#fcfaf5}.login-form .button{width:100%;margin-top:21px}.form-fineprint{font-size:var(--fs-xs);color:var(--t-3);margin:11px 0;text-align:center}.form-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.text-btn{border:0;background:transparent;color:var(--t-3);padding:8px 0;font-size:var(--fs-xs)}.text-btn:hover{color:var(--blue)}.form-busy{opacity:.7;pointer-events:none}
.play-panel{animation:arrive .45s var(--ease) both}.player-name{font-size:var(--fs-xs);color:var(--t-3);margin:10px 0 20px}.play-title{font-size:var(--fs-title);line-height:1.4;margin:0;letter-spacing:.5px}.play-lead{color:var(--t-3);font-size:var(--fs-sm);line-height:1.8;margin:13px 0 22px}.suggestion{padding:0 0 14px;margin:0;display:flex;align-items:baseline;gap:9px;min-height:37px}.suggestion span{font-size:var(--fs-sm);font-weight:var(--fw-2);color:var(--t-3)}.suggestion b{font-size:var(--fs-xl);font-weight:var(--fw-3);color:var(--t-link);white-space:nowrap}.suggestion.completed span,.suggestion.completed b{color:var(--t-gold)}.suggestion.recorded b{font-size:var(--fs-sm)}.play-note{font-size:var(--fs-xs);line-height:1.9;padding:12px 14px;background:#fff1d0;border:1px solid #efddb3;border-radius:11px;color:var(--t-gold);margin-bottom:22px}.play-controls{display:flex;gap:10px}.play-controls .button{flex:1}.play-foot{font-size:var(--fs-xs);color:var(--t-3);margin-top:18px;line-height:1.8}.chest-cell.playable{cursor:pointer}.chest-cell.playable:not(.opened):hover{border-color:#cdbca3;background:#f8f3e8;box-shadow:0 3px 14px #406bc713}.chest-cell.opened:not(.winner){background:#faf6ee;border-color:#f5edde}.chest-cell.opened:not(.winner) .mascot-art{opacity:.5}.chest-cell.opened:not(.winner) .mascot-lid{transform:translateY(-9px) rotate(-5deg)}.chest-cell.opened:not(.winner) .cell-status{opacity:1;color:var(--t-3)}.chest-cell.suggested,.chest-cell.suggested.playable:not(.opened):hover{border-color:#f1e6d0;background:linear-gradient(145deg,#fdfbf8,#faf6ed);box-shadow:none}.chest-cell.suggested .cell-number{color:var(--t-link);font-weight:var(--fw-3)}.chest-cell.suggested:before{content:"";position:absolute;left:17%;width:66%;height:13%;bottom:18%;border:1px solid #cebea580;border-radius:50%;background:radial-gradient(ellipse,#e4daccb3 8%,#f0e4cc66 58%,#f8f3e822 78%);box-shadow:0 0 12px 3px #dcd0bf4d;pointer-events:none;z-index:0}.chest-cell.suggested:after{inset:0;background:radial-gradient(ellipse at 50% 66%,#f2e8d466,transparent 66%);opacity:1}.chest-cell.suggested .chest-art{transform:translate(-50%,calc(-50% - 12px));z-index:1}.chest-cell.suggested .mascot-shadow{opacity:0}.chest-cell.suggested .cell-status{opacity:1;color:#fff;background:linear-gradient(110deg,#274586,#25417f);font-size:var(--fs-sm);font-weight:var(--fw-3);letter-spacing:.6px;bottom:0;left:0;width:100%;height:28px;display:flex;align-items:center;justify-content:center;gap:5px;line-height:1;border-radius:0 0 14px 14px;z-index:2;box-shadow:0 -1px 0 #ffffff80}.chest-cell.suggested .cell-status:before{content:"↑";font-size:16px;line-height:1;font-weight:700}.chest-art{transition:transform .35s var(--ease)}.transitioning .board{animation:scene-settle .6s var(--ease) both}
.footer{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #f4ead7;padding:20px 0 25px;color:var(--t-3);font-size:var(--fs-xs);letter-spacing:.15px}.footer a{color:inherit;text-decoration:none}.modal-backdrop{position:fixed;inset:0;background:#46312438;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(4px)}.modal{background:#fff;border:1px solid #f2e8d3;box-shadow:0 20px 90px #182a5220;border-radius:22px;padding:27px;width:min(100%,350px);animation:arrive .23s var(--ease) both}.modal h3{font-size:var(--fs-lg);margin:0 0 10px}.modal p{font-size:var(--fs-sm);color:var(--t-3);line-height:1.7;margin:0 0 22px}.modal .button{width:100%;margin-top:10px}.modal .text-btn{display:block;margin:8px auto 0}
.chest-cell.winner:not(.opened) .cell-status{opacity:0}
@keyframes hello-hop{0%,100%{transform:translateY(0) scale(1)}17%{transform:translateY(2px) scale(1.06,.92)}42%{transform:translateY(-20px) scale(.98,1.04)}68%{transform:translateY(2px) scale(1.05,.94)}86%{transform:translateY(-2px)}}
@keyframes shadow-hop{0%,100%{transform:scale(1);opacity:.19}42%{transform:scale(.72);opacity:.1}}
@keyframes tiny-shake{0%,100%{transform:rotate(0)}20%{transform:rotate(-4deg)}40%{transform:rotate(4deg)}60%{transform:rotate(-3deg)}80%{transform:rotate(2deg)}}
@keyframes happy-pop{0%{transform:translateY(0) scale(.98)}35%{transform:translateY(-7px) scale(1.06)}65%{transform:translateY(1px) scale(1)}100%{transform:none}}
@keyframes lid-pop{0%{transform:none}45%{transform:translateY(-27px) rotate(-15deg)}72%{transform:translateY(-15px) rotate(-8deg)}100%{transform:translateY(-19px) rotate(-10deg)}}
@keyframes star-pop{0%{opacity:0;transform:translateY(16px) scale(.2)}50%{opacity:1;transform:translateY(-31px) scale(.95) rotate(10deg)}100%{opacity:1;transform:translateY(-19px) scale(.82)}}
@keyframes wave{0%,100%{transform:rotate(-8deg)}25%,65%{transform:rotate(-35deg)}45%,85%{transform:rotate(8deg)}}
@keyframes left-hello{0%,100%{transform:rotate(0)}35%,70%{transform:rotate(17deg)}}
@keyframes happy-blink{0%,100%{transform:scaleY(1)}40%,60%{transform:scaleY(.12)}}
@keyframes confetti{0%{opacity:0;transform:translate(0,0) rotate(0)}15%{opacity:1}85%{opacity:.6}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--dr))}}
@keyframes say-hello{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes arrive{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes scene-settle{0%{opacity:.88;transform:scale(.986)}100%{opacity:1;transform:none}}
@media(min-width:1450px){.scene{padding-top:70px;padding-bottom:65px;min-height:730px}}
@media(max-width:1000px){.shell{padding:0 28px}.scene{grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr);gap:38px;min-height:610px}.board{padding:22px 20px 14px}.chest-art{width:157px;height:125px}.welcome-title{font-size:33px}.entry-buttons{grid-template-columns:1fr}.greeting-slot{height:64px}.topbar{height:94px}.box-grid{gap:9px}}
@media(max-width:720px){.shell{padding:0 19px;max-width:470px}.topbar{height:79px;gap:8px}.brand{gap:9px}.brand-icon{width:39px;height:39px;border-radius:13px}.brand-icon svg{width:24px;height:24px}.brand-title{font-size:var(--fs-lg)}.brand-subtitle{font-size:var(--fs-xs);letter-spacing:.6px}.top-actions{gap:0}.preview-label{display:none}.replay{font-size:var(--fs-xs);gap:5px}.replay svg{width:13px;height:13px}.scene{display:flex;flex-direction:column;gap:0;padding:23px 0 22px;min-height:0}.board{width:100%;padding:18px 17px 10px;border-radius:23px}.board-top h2{font-size:var(--fs-md)}.board-tag{font-size:var(--fs-xs);padding:4px 7px}.floor-line{margin:15px 0 18px;gap:15px}.floor-text{font-size:var(--fs-xs)}.box-grid{gap:8px}.chest-cell{aspect-ratio:1.08;border-radius:12px}.chest-art{width:137px;height:109px;top:52%}.cell-number{font-size:var(--fs-xs);top:8px;left:10px}.cell-status{font-size:var(--fs-xs);bottom:4px}.board-foot{font-size:var(--fs-xs);height:24px;margin-top:8px}.side{width:100%;padding:24px 3px 0}.eyebrow{display:none}.welcome-title{font-size:var(--fs-xl);font-weight:var(--fw-2);line-height:1.5;letter-spacing:.3px}.welcome-title br{display:none}.greeting-slot{height:37px;margin-bottom:11px}.greeting{font-size:var(--fs-xs)}.entry-buttons{grid-template-columns:1fr 1fr;gap:10px}.button{min-height:47px;font-size:var(--fs-sm);border-radius:11px}.entry-note{font-size:var(--fs-xs);margin-top:11px;line-height:1.8}.side .mini-divider,.side .signin-switch{display:none}.footer{font-size:var(--fs-xs);padding:16px 0 22px;gap:10px;align-items:flex-start;line-height:1.7}.footer span:last-child{white-space:nowrap}.side.form-open .welcome-title{font-size:var(--fs-xl)}.side.form-open .greeting-slot{height:30px;margin:0}.field input{font-size:var(--fs-md)}.login-form{padding-top:10px}.play-title{font-size:var(--fs-xl)}.player-name{margin:7px 0 12px}.play-lead{margin:8px 0 14px}.suggestion{padding:0 0 12px;min-height:32px}.suggestion span{font-size:var(--fs-sm)}.suggestion b{font-size:var(--fs-xl)}.chest-cell.playable{aspect-ratio:.92}.chest-cell.suggested .chest-art{transform:translate(-50%,calc(-50% - 12px)) scale(.94)}.chest-cell.suggested .cell-number{left:7px}.chest-cell.suggested .cell-status{font-size:var(--fs-xs);bottom:0;height:26px;border-radius:0 0 11px 11px;letter-spacing:.5px}.chest-cell.suggested:before{bottom:19%;height:12%}.play-note{margin-bottom:14px}.play-foot{margin-top:12px}.play-panel .eyebrow{display:flex;margin-bottom:8px;font-size:var(--fs-xs)}}
@media(max-width:360px){.shell{padding:0 13px}.board{padding:15px 13px 8px}.chest-art{width:120px;height:95px}.box-grid{gap:7px}.welcome-title{font-size:var(--fs-lg)}.side{padding-top:20px}.entry-note{font-size:var(--fs-xs)}.brand-title{font-size:var(--fs-md)}.brand-subtitle{font-size:var(--fs-xs)}.brand-icon{width:35px;height:35px}.topbar{height:72px}.scene{padding-top:19px}.board-foot{font-size:var(--fs-xs)}.board-top h2{font-size:var(--fs-md)}.chest-cell.suggested .chest-art{transform:translate(-50%,calc(-50% - 13px)) scale(.88)}.chest-cell.suggested .cell-number{left:5px}.chest-cell.suggested .cell-status{font-size:var(--fs-xs);bottom:0;height:24px;gap:3px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
