@import"https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@400;600;700;800&display=swap";:root{--c-blue: #58b2e5;--c-blue-deep: #2f9ad3;--c-blue-light: #dff3fc;--c-yellow: #FCD34D;--c-yellow-deep: #FBBF24;--c-pink: #F472B6;--c-green: #4ADE80;--c-red: #F87171;--c-orange: #FB923C;--c-bg: #F0F9FF;--c-surface: #FFFFFF;--c-text: #1E293B;--c-text-2: #64748B;--c-border: #E0E7FF;--c-muted: #F1F5F9;--font-d: "Fredoka", system-ui, -apple-system, sans-serif;--font-b: "Nunito", system-ui, -apple-system, sans-serif;--radius: 12px;--radius-sm: 8px;--radius-full: 9999px;--shadow-btn: 0 2px 8px rgba(88, 178, 229, .08);--shadow-card: 0 2px 12px rgba(88, 178, 229, .08);--shadow-press: 0 1px 4px rgba(88, 178, 229, .08);--shadow-lg: 0 8px 32px rgba(88, 178, 229, .16);--ease: cubic-bezier(.16, 1, .3, 1);--bounce: cubic-bezier(.68, -.55, .265, 1.55)}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:var(--font-b);background:var(--c-bg);color:var(--c-text)}h1,h2,h3{font-family:var(--font-d);font-weight:700}#puzzle-container{width:100%;height:100vh;height:100dvh;background:var(--c-bg);margin:0 auto;max-width:1200px;touch-action:none;overflow:hidden;position:relative}#ui-bar{display:none;gap:6px;padding:8px 16px;align-items:center;flex-wrap:wrap;justify-content:center;background:var(--c-surface);box-shadow:var(--shadow-sm)}#ui-bar #timer{font-family:var(--font-d);font-weight:600;font-size:18px;color:var(--c-blue);background:var(--c-muted);padding:6px 16px;border-radius:var(--radius-full);font-variant-numeric:tabular-nums;letter-spacing:1px}#ui-bar>button:not(.difficulty){font-family:var(--font-b);font-weight:700;font-size:14px;padding:8px 16px;border-radius:var(--radius-sm);border:2px solid var(--c-border);background:var(--c-surface);color:var(--c-text-2);cursor:pointer;transition:transform .15s var(--ease),border-color .15s,color .15s}#ui-bar>button:not(.difficulty):hover{border-color:var(--c-blue);color:var(--c-blue);transform:translateY(-2px)}#ui-bar>button:not(.difficulty):active{transform:translateY(0)}button.difficulty{border:none;border-radius:var(--radius-sm);padding:10px 20px;font-weight:700;cursor:pointer;transition:transform .15s var(--ease),filter .15s}button.difficulty:hover{filter:brightness(.95);transform:translateY(-2px)}button.difficulty:active{transform:translateY(0)}button.difficulty[data-difficulty=EASY]{background:var(--c-green);color:#fff}button.difficulty[data-difficulty=MEDIUM]{background:var(--c-orange);color:#78350f}button.difficulty[data-difficulty=HARD]{background:var(--c-red);color:#fff}#scale-controls{display:flex;align-items:center;gap:6px;font-size:12px;padding:0 8px;border-left:1px solid var(--c-border);border-right:1px solid var(--c-border)}.scale-label{color:var(--c-text-2)}#scale-select{padding:4px 8px;font-size:12px;border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface);cursor:pointer}#go-gallery-mobile,.tb-timer-pause,#fab-trigger,#fs-floating,#lb-puzzle-trigger{display:none}#go-gallery-mobile{position:fixed;top:calc(8px + env(safe-area-inset-top,0px));left:calc(8px + env(safe-area-inset-left,0px));z-index:101;padding:8px 16px;border-radius:var(--radius-full);border:2px solid var(--c-border);background:var(--c-surface);color:var(--c-blue);font-family:var(--font-b);font-weight:700;font-size:14px;cursor:pointer;box-shadow:var(--shadow-card);transition:transform .15s}#go-gallery-mobile:hover{transform:scale(1.04)}.tb-timer-pause{position:fixed;top:calc(8px + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%);z-index:101;display:none;align-items:center;background:var(--c-muted);border-radius:var(--radius-full);padding:4px;height:36px}.tb-timer-pause #timer-display{font-family:var(--font-d);font-weight:600;font-size:16px;color:var(--c-blue);padding:0 12px;font-variant-numeric:tabular-nums}#fab-trigger{position:fixed;bottom:24px;right:84px;z-index:90;width:48px;height:48px;border-radius:var(--radius-full);border:none;background:var(--c-yellow);color:#78350f;font-size:20px;cursor:pointer;box-shadow:var(--shadow-card);display:none;align-items:center;justify-content:center;transition:transform .2s var(--bounce)}#fab-trigger:hover{transform:scale(1.08)}#fab-trigger:active{transform:scale(.9)}#fs-floating{position:fixed;bottom:24px;right:24px;z-index:80;width:48px;height:48px;border-radius:var(--radius-full);border:none;background:var(--c-blue);color:#fff;cursor:pointer;box-shadow:var(--shadow-card);display:none;align-items:center;justify-content:center;padding:0;transition:transform .15s,background .15s}#fs-floating svg,#fab-trigger svg,#lb-puzzle-trigger svg{width:24px;height:24px;display:block}#fs-floating:hover{transform:scale(1.08);background:var(--c-blue-deep)}#lb-puzzle-trigger{position:fixed;bottom:24px;right:144px;z-index:90;width:48px;height:48px;border-radius:var(--radius-full);border:none;background:var(--c-surface);color:var(--c-blue);font-size:20px;cursor:pointer;box-shadow:var(--shadow-card);display:none;align-items:center;justify-content:center;transition:transform .15s}#lb-puzzle-trigger:hover{transform:scale(1.08)}#lb-puzzle-trigger:active{transform:scale(.92)}@media (max-width: 1024px){body.puzzle-page #go-gallery-mobile,body.puzzle-page .tb-timer-pause,body.puzzle-page #fab-trigger,body.puzzle-page #fs-floating,body.puzzle-page #lb-puzzle-trigger{display:flex}body.puzzle-page #ui-bar{display:flex;position:fixed;top:0;left:0;right:0;background:var(--c-surface);border-bottom:1px solid var(--c-border);flex-wrap:wrap;padding:8px;padding-top:calc(8px + env(safe-area-inset-top,0px));gap:8px;transform:translateY(-100%);transition:transform .3s ease;z-index:100;box-shadow:var(--shadow-card);max-height:calc(100vh - env(safe-area-inset-top,0px));overflow-y:auto;-webkit-overflow-scrolling:touch}body.puzzle-page #ui-bar.expanded{transform:translateY(0)}body.puzzle-page #ui-bar.expanded>button,body.puzzle-page #ui-bar.expanded button.difficulty{min-height:44px;padding:10px 18px;font-size:15px}body.puzzle-page #ui-bar.expanded #scale-select{min-height:40px;padding:8px 12px;font-size:14px}body.puzzle-page #ui-bar.expanded~#go-gallery-mobile,body.puzzle-page.expanded-ui #go-gallery-mobile,body.puzzle-page #ui-bar.expanded~.tb-timer-pause,body.puzzle-page.expanded-ui .tb-timer-pause{display:none!important}body.puzzle-page .puzzle-main{height:100vh;height:100dvh;min-height:0}#puzzle-info{display:none;text-align:center;padding:10px 16px 2px;flex-shrink:0}body.puzzle-page #puzzle-info.visible{display:block}#puzzle-title{font-family:var(--font-d);font-size:17px;color:var(--c-text)}#puzzle-desc{font-size:13px;color:var(--c-text-2);margin-top:1px}body.puzzle-page #puzzle-container{width:100%;height:100vh;height:100dvh;max-width:100%;border:none;display:flex;align-items:center;justify-content:center}body.puzzle-page{height:100vh;height:100dvh;overflow:hidden;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}}#lb-puzzle-side{display:none}@media (min-width: 1025px){body.puzzle-page #ui-bar{display:flex}body.puzzle-page{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;padding-bottom:24px}body.puzzle-page .puzzle-main{flex:1;display:flex;min-height:0}body.puzzle-page #puzzle-container{flex:1;height:auto;min-height:0;max-width:none;display:flex;align-items:center;justify-content:center}body.puzzle-page #lb-puzzle-side{display:block;width:280px;flex-shrink:0;margin-right:16px;background:var(--c-surface);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-card);overflow-y:auto}}#gallery-layout{display:none;gap:24px;padding:24px 16px;align-items:flex-start}#site-header{display:none;align-items:center;gap:14px;padding:8px 0 0;max-width:560px;margin:0 auto}body.gallery-page #site-header{display:flex}#site-logo{width:48px;height:48px;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--c-muted)}#site-logo[src=""]{display:none}#site-header h1{font-family:var(--font-d);font-size:22px;color:var(--c-text);line-height:1.25}#site-header p{font-size:14px;color:var(--c-text-2);margin-top:2px}#gallery{flex:1;min-width:0;display:block;column-count:3;column-gap:14px}#gallery.zoom-2{column-count:2}#gallery.zoom-3{column-count:1;max-width:720px}.gallery-item{cursor:pointer;border-radius:var(--radius);overflow:hidden;transition:transform .25s var(--bounce);background:#0f172a;box-shadow:var(--shadow-card);align-self:start;position:relative;break-inside:avoid;margin:0 0 14px}.gallery-item:hover{transform:translateY(-4px) scale(1.02)}.gallery-item:active{transform:scale(.96)}.gallery-item img{width:100%;height:auto;aspect-ratio:var(--photo-ratio, auto);object-fit:contain;display:block;background:#0f172a}.gallery-item-name{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:30px 14px 8px;font-size:15px;font-weight:800;color:#fff;text-align:left;background:linear-gradient(to top,#0000009e,#00000057 58%,#0000);text-shadow:0 1px 3px rgba(0,0,0,.65);pointer-events:none}.gallery-item-title{min-width:0;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-preview-btn{flex:0 0 auto;width:1em;height:1em;line-height:1;padding:0;border:none;border-radius:0;background:transparent;color:currentColor;cursor:pointer;pointer-events:auto;box-shadow:none;display:inline-flex;align-items:center;justify-content:center}.gallery-preview-btn svg{width:1em;height:1em;filter:drop-shadow(0 1px 3px rgba(0,0,0,.65))}.gallery-preview-btn:active{transform:scale(.96)}#lb-sidebar{width:280px;flex-shrink:0;background:var(--c-surface);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-card);position:sticky;top:24px}.lb-sidebar-head h2{font-size:18px;color:var(--c-blue-deep);margin-bottom:12px}#lb-tabs-wrap{display:flex;align-items:center;gap:4px;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--c-border)}#lb-tabs{display:flex;gap:6px;overflow-x:hidden;flex:1;min-width:0;scroll-behavior:smooth}.lb-tab-nav{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-blue);font-size:18px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;transition:all .15s var(--ease)}.lb-tab-nav:hover{background:var(--c-blue);color:#fff;border-color:var(--c-blue)}.lb-tab-nav:active{transform:scale(.92)}.lb-tab{flex-shrink:0;padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text-2);font-family:var(--font-b);font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;transition:all .15s var(--ease)}.lb-tab.active{background:var(--c-blue);color:#fff;border-color:var(--c-blue)}.lb-tab:hover{border-color:var(--c-blue);color:var(--c-blue)}.lb-tab.active:hover{background:var(--c-blue-deep);color:#fff;border-color:var(--c-blue-deep)}#lb-tab-content{min-height:240px}.lb-diff-group{margin-bottom:10px}.lb-diff-label{font-size:11px;font-weight:700;margin:6px 0 4px;letter-spacing:.5px}.lb-diff-label[data-diff=EASY]{color:var(--c-green)}.lb-diff-label[data-diff=MEDIUM]{color:var(--c-orange)}.lb-diff-label[data-diff=HARD]{color:var(--c-red)}.lb-list{list-style:none;padding:0;margin:0}.lb-list li{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px solid var(--c-border);font-size:13px}.lb-list li:last-child{border-bottom:none}.lb-rank{width:24px;height:24px;border-radius:50%;flex-shrink:0;background:var(--c-muted);color:var(--c-blue);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12px}.lb-list li:nth-child(1) .lb-rank{background:var(--c-yellow);color:#78350f}.lb-list li:nth-child(2) .lb-rank{background:#e5e7eb;color:#4b5563}.lb-list li:nth-child(3) .lb-rank{background:#fed7aa;color:#9a3412}.lb-info{flex:1;min-width:0;overflow:hidden}.lb-name{font-weight:700;color:var(--c-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-meta{font-size:11px;color:var(--c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-time{font-family:var(--font-d);font-weight:600;color:var(--c-blue);font-variant-numeric:tabular-nums;flex-shrink:0}.lb-empty{text-align:center;color:var(--c-text-2);padding:24px 0;font-size:13px;line-height:1.6}.lb-more{width:100%;margin-top:12px;padding:10px;background:var(--c-blue);color:#fff;border:none;border-radius:var(--radius-sm);font-weight:700;font-size:14px;cursor:pointer;transition:background .15s var(--ease)}.lb-more:hover{background:var(--c-blue-deep)}@media (max-width: 1024px){html,body{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar,body::-webkit-scrollbar,#gallery::-webkit-scrollbar,#lb-tabs::-webkit-scrollbar,.lb-list-full::-webkit-scrollbar{display:none}#lb-tabs{overflow-x:auto;overscroll-behavior-x:contain}#gallery-layout{flex-direction:column;gap:18px;padding:10px 0 24px;overflow:visible}#gallery{order:1;width:100%;display:flex!important;grid-template-columns:none;gap:10px;overflow-x:auto;overflow-y:hidden;align-items:flex-start;height:var(--gallery-current-height, auto);transition:height .22s var(--ease);scroll-snap-type:x mandatory;scroll-padding:10px;padding:0 10px;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}#gallery.zoom-2,#gallery.zoom-3{display:flex!important;grid-template-columns:none;max-width:none}#gallery .gallery-item{flex:0 0 min(calc(100vw - 20px),720px);height:var(--gallery-current-height, auto);margin:0;display:flex;align-items:center;justify-content:center;scroll-snap-align:center;scroll-snap-stop:always;border-radius:14px;box-shadow:var(--shadow-lg);background:#0f172a}#gallery .gallery-item:hover,#gallery .gallery-item:active{transform:none}#gallery .gallery-item img{aspect-ratio:var(--photo-ratio, auto);width:100%;height:100%;max-height:none;object-fit:contain}#gallery .gallery-item.is-portrait img{width:auto;max-width:100%;height:100%;margin:0 auto}#gallery .gallery-item-name{padding:50px 20px 10px;font-size:20px}#lb-sidebar{width:calc(100% - 36px);margin:0 18px;position:static;order:2}#lb-sidebar{padding:16px 14px}.lb-sidebar-head h2{font-size:16px;margin-bottom:8px}.lb-tab{padding:10px 14px;font-size:13px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}.lb-tab-nav{display:none}.lb-more{min-height:44px;padding:12px;font-size:15px}.lb-list li{padding:10px 4px}.lb-rank{width:28px;height:28px;font-size:13px}.lb-list-full li{min-height:40px;padding:10px 4px}}@media (orientation: landscape) and (max-width: 1024px){body.gallery-page{height:100vh;height:100dvh;overflow:hidden}body.gallery-page #gallery-layout{flex-direction:row;align-items:stretch;gap:12px;height:100vh;height:100dvh;padding:10px 12px;overflow:hidden}body.gallery-page #gallery{flex:1 1 auto;width:auto;height:var(--gallery-current-height, calc(100dvh - 20px) );padding:0;scroll-padding:0;align-items:center}body.gallery-page #gallery .gallery-item{flex-basis:min(58vw,720px);height:var(--gallery-current-height, calc(100dvh - 20px) )}body.gallery-page #lb-sidebar{order:2;width:min(38vw,380px);height:calc(100vh - 20px);height:calc(100dvh - 20px);margin:0;padding:14px;display:flex;flex-direction:column;overflow:hidden}body.gallery-page #lb-tab-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}body.gallery-page .lb-more{flex-shrink:0}}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#081423b8;backdrop-filter:blur(14px) saturate(.8);-webkit-backdrop-filter:blur(14px) saturate(.8);display:flex;align-items:center;justify-content:center;z-index:1000}body.modal-open{overflow:hidden;overscroll-behavior:contain}body.modal-open .modal{overscroll-behavior:contain}body.game-modal-open #puzzle-container{filter:blur(12px) saturate(.65)}.modal-card{background:var(--c-surface);padding:32px 28px;border-radius:var(--radius);text-align:center;max-width:340px;width:100%;box-shadow:var(--shadow-lg);animation:popIn .4s var(--bounce)}@keyframes popIn{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.modal-card h2{font-family:var(--font-d);font-size:24px;margin-bottom:12px}.modal-card p{margin:8px 0;font-size:16px;color:var(--c-text-2)}.modal-card #final-time{font-weight:700;color:var(--c-text);font-size:20px;font-variant-numeric:tabular-nums}.modal-card button{margin-top:8px;font-family:var(--font-b);font-weight:700;font-size:15px;padding:12px 28px;border-radius:var(--radius-sm);border:none;cursor:pointer;transition:transform .15s var(--ease),background .15s;display:inline-flex;align-items:center}#replay{background:var(--c-blue);color:#fff;box-shadow:var(--shadow-btn)}#replay:hover{background:var(--c-blue-deep);transform:translateY(-2px)}#replay:active{transform:translateY(0)}#back-to-gallery{background:var(--c-surface);color:var(--c-text-2);border:2px solid var(--c-border);margin-left:8px}#back-to-gallery:hover{border-color:var(--c-blue);color:var(--c-blue)}#back-to-gallery:active{transform:scale(.97)}#complete-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;align-items:center;justify-content:center;padding:calc(8px + env(safe-area-inset-top,0px)) calc(8px + env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) calc(8px + env(safe-area-inset-left,0px));background:#081423c7;backdrop-filter:blur(16px) saturate(.85);-webkit-backdrop-filter:blur(16px) saturate(.85)}#complete-modal.visible{display:flex!important}.complete-card{width:min(98vw,1100px);height:min(94vh,820px);display:flex;flex-direction:column;gap:10px;animation:completeFloatIn .48s var(--bounce)}@keyframes completeFloatIn{0%{transform:translateY(28px) scale(.82);opacity:0;filter:saturate(.75)}to{transform:translateY(0) scale(1);opacity:1;filter:saturate(1)}}.complete-image-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--radius);background:#061527;box-shadow:0 24px 80px #00000061;touch-action:none}#complete-image{max-width:100%;max-height:100%;object-fit:contain;transform:scale(var(--complete-zoom, 1));transition:transform .18s var(--ease);-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.complete-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.complete-actions button{min-height:52px;margin:0;border:none;border-radius:var(--radius-sm);font-family:var(--font-b);font-size:16px;font-weight:800;cursor:pointer;box-shadow:var(--shadow-btn);display:flex;align-items:center;justify-content:center;transition:transform .15s var(--ease),background .15s,border-color .15s,color .15s}.complete-actions button:active{transform:scale(.97)}.complete-actions #replay{background:var(--c-blue);color:#fff;border:none;margin:0}.complete-actions #replay:hover{background:var(--c-blue-deep);color:#fff;border:none}.complete-actions #increase-difficulty{background:var(--c-yellow);color:#78350f}.complete-actions #increase-difficulty:hover{background:var(--c-yellow-deep);color:#78350f}.complete-actions #increase-difficulty:disabled{opacity:.58;cursor:default;transform:none;box-shadow:none}.complete-actions #back-to-gallery{background:var(--c-green);color:#fff;border:none;margin:0}.complete-actions #back-to-gallery:hover{background:#22c55e;color:#fff;border:none}.score-rank-summary{padding:10px 12px;margin-bottom:8px;border-radius:var(--radius-sm);background:var(--c-muted);color:var(--c-blue-deep);font-weight:800;text-align:center}@media (max-width: 1024px){.complete-card{width:min(98vw,860px);height:min(94vh,680px);gap:8px}.complete-actions{gap:8px}.complete-actions button{min-height:48px;font-size:15px;padding:0 8px}}@media (max-width: 560px){.complete-actions{grid-template-columns:1fr}.complete-card{height:min(90vh,760px)}}#pause-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#081423d1;backdrop-filter:blur(16px) saturate(.75);-webkit-backdrop-filter:blur(16px) saturate(.75);z-index:50;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s var(--ease)}#pause-overlay.visible{display:flex;opacity:1;pointer-events:auto}#pause-overlay:after{content:"暂停";color:var(--c-surface);font-family:var(--font-d);font-size:36px;font-weight:700;opacity:.7;pointer-events:none}body.paused #ui-bar{position:relative;z-index:3000}body.puzzle-page.paused #ui-bar{transform:translateY(0)}#leaderboard-modal,#resume-modal,#lb-puzzle-modal,#score-result-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#081423bd;backdrop-filter:blur(14px) saturate(.8);-webkit-backdrop-filter:blur(14px) saturate(.8);z-index:1001;align-items:center;justify-content:center;padding:calc(8px + env(safe-area-inset-top,0px)) calc(8px + env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) calc(8px + env(safe-area-inset-left,0px));overflow-y:auto;-webkit-overflow-scrolling:touch}#leaderboard-modal.visible,#resume-modal.visible,#lb-puzzle-modal.visible,#score-result-modal.visible{display:flex}.lb-card{background:var(--c-surface);padding:24px;border-radius:var(--radius);text-align:center;width:100%;max-width:360px;max-height:86vh;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-lg);animation:popIn .3s var(--bounce)}.lb-card h2{font-size:22px;margin-bottom:12px}.lb-card p{font-size:14px;color:var(--c-text-2);margin-bottom:12px}.lb-card input{width:100%;padding:12px;font-size:16px;border:2px solid var(--c-border);border-radius:var(--radius-sm);margin:8px 0 12px;background:var(--c-surface);color:var(--c-text)}.lb-card input:focus{border-color:var(--c-blue);outline:none;box-shadow:0 0 0 3px #58b2e52e}.lb-card-actions{display:flex;flex-direction:column;gap:8px;margin-top:4px}.lb-card-actions button{width:100%;min-height:44px;padding:12px 24px;border:none;border-radius:var(--radius-sm);font-family:var(--font-b);font-weight:700;font-size:15px;cursor:pointer;transition:transform .15s var(--ease),background .15s}.lb-card-primary{background:var(--c-blue);color:#fff;box-shadow:var(--shadow-btn)}.lb-card-primary:hover{background:var(--c-blue-deep)}.lb-card-primary:active{transform:scale(.97)}.lb-card-primary.is-disabled,.lb-card-primary[aria-disabled=true]{opacity:.5;cursor:not-allowed}.lb-card-primary.is-disabled:hover{background:var(--c-blue)}#player-name.input-error{border-color:var(--c-red);box-shadow:0 0 0 3px #ef44442e}.lb-card-secondary{background:var(--c-muted);color:var(--c-text-2)}.lb-card-secondary:hover{background:var(--c-border)}.lb-card-secondary:active{transform:scale(.97)}#lb-full-modal,#lb-puzzle-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#081423bd;backdrop-filter:blur(14px) saturate(.8);-webkit-backdrop-filter:blur(14px) saturate(.8);z-index:1001;align-items:center;justify-content:center;padding:calc(8px + env(safe-area-inset-top,0px)) calc(8px + env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) calc(8px + env(safe-area-inset-left,0px))}#lb-full-modal.visible,#lb-puzzle-modal.visible{display:flex}.lb-full-card{background:var(--c-surface);border-radius:var(--radius);padding:20px;width:100%;max-width:480px;max-height:86vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:popIn .3s var(--bounce)}.lb-full-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.lb-full-head h2{font-size:20px;color:var(--c-blue-deep);margin-right:auto}.lb-full-tabs{display:flex;gap:4px}.lb-ftab{padding:5px 14px;border-radius:var(--radius-full);border:none;background:var(--c-muted);color:var(--c-text-2);font-family:var(--font-b);font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,color .15s}.lb-ftab:hover{background:var(--c-border)}.lb-ftab.active{background:var(--c-blue);color:#fff}.lb-close-btn{width:40px;height:40px;min-width:40px;border-radius:50%;border:none;background:var(--c-muted);color:var(--c-text-2);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s var(--ease)}.lb-close-btn:hover{background:var(--c-border)}.lb-close-btn:active{transform:scale(.92)}.lb-list-full{overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch;padding-right:4px}.lb-list-full li{padding:10px 4px;font-size:14px}#fs-viewer{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a;z-index:150;align-items:center;justify-content:center;overflow:hidden;touch-action:pan-x pinch-zoom}#fs-viewer.visible{display:flex}#fs-track{width:100vw;height:100vh;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding:0;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none;touch-action:pan-x pinch-zoom}#fs-track::-webkit-scrollbar{display:none}.fs-item{flex:0 0 100vw;height:100vh;display:flex;align-items:center;justify-content:center;scroll-snap-align:center;scroll-snap-stop:always}.fs-item img{max-width:90vw;max-height:80vh;object-fit:contain;border-radius:8px;transform:scale(var(--fs-zoom, 1));transition:transform .25s var(--ease);-webkit-user-select:none;user-select:none;-webkit-user-drag:none}#fs-bar{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:16px;padding:24px 16px calc(24px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#0009)}#fs-prev,#fs-next{width:44px;height:44px;border-radius:var(--radius-full);border:none;background:#fff3;color:#fff;font-size:20px;cursor:pointer}#fs-prev:hover,#fs-next:hover{background:#ffffff59;transform:scale(1.08)}#fs-play{padding:12px 32px;border-radius:var(--radius-sm);border:none;background:var(--c-yellow);color:#78350f;font-weight:800;font-size:16px;cursor:pointer}#fs-close{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:var(--radius-full);border:none;background:#fff3;color:#fff;font-size:18px;cursor:pointer}#puzzle-container.hint-on:before{content:"";position:absolute;top:50%;left:50%;width:calc(var(--hint-w, 50%) * .96);aspect-ratio:var(--img-ratio, 4/3);height:auto;transform:translate(-50%,-50%) scale(var(--puzzle-user-scale, 1));background:transparent var(--hint-image, url(/alex/puzzle/images/sample.jpg)) center / 100% 100% no-repeat;opacity:0;pointer-events:none;z-index:0;transition:opacity .3s var(--ease)}#puzzle-container.hint-on:before{opacity:.35}@keyframes firework-burst{0%{transform:translate(0) scale(.6);opacity:1}60%{opacity:1}to{transform:translate(var(--tx, 0),var(--ty, 0)) scale(.2);opacity:0}}@keyframes ribbon-burst{0%{transform:translate(0) rotate(var(--rot, 0deg)) scaleY(.35);opacity:1}55%{opacity:1}to{transform:translate(var(--tx, 0),var(--ty, 0)) rotate(calc(var(--rot, 0deg) + var(--spin, 240deg))) scaleY(1);opacity:0}}.fireworks-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2500;overflow:hidden}.firework-dot,.firework-ribbon{position:absolute;will-change:transform,opacity}.firework-dot{width:8px;height:8px;border-radius:50%;animation:firework-burst var(--dur, 1.2s) cubic-bezier(.2,.7,.3,1) forwards}.firework-ribbon{width:8px;height:30px;border-radius:999px;animation:ribbon-burst var(--dur, 1.35s) cubic-bezier(.18,.72,.3,1) forwards}.upload-success{position:fixed;top:80px;left:50%;transform:translate(-50%);background:var(--c-green);color:#fff;padding:12px 24px;border-radius:var(--radius-sm);font-weight:700;z-index:300;animation:fadeInOut 2s var(--ease) forwards}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%) translateY(-10px)}15%{opacity:1;transform:translate(-50%) translateY(0)}85%{opacity:1}to{opacity:0}}#admin-login .modal-card{max-width:320px}#pin-input{width:100%;padding:12px;font-size:24px;text-align:center;letter-spacing:8px;border:2px solid var(--c-border);border-radius:var(--radius-sm);margin:8px 0;background:var(--c-surface);color:var(--c-text)}#login-btn{width:auto;padding:12px 48px;margin-top:16px}#upload-btn{width:auto;padding:12px 48px;margin-top:8px}.upload-form{margin-bottom:24px;max-width:500px}.upload-form input[type=file]{margin:8px 0;font-size:14px}.upload-form input[type=text]{width:100%;padding:12px 16px;border:2px solid var(--c-border);border-radius:var(--radius-sm);margin:8px 0;font-size:15px;font-family:var(--font-b);background:var(--c-surface);color:var(--c-text)}.upload-form input[type=text]:focus{border-color:var(--c-blue);box-shadow:0 0 0 4px #58b2e51f;outline:none}#image-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-top:24px}.image-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:12px;text-align:center;box-shadow:var(--shadow-card);transition:transform .2s var(--ease),box-shadow .15s var(--ease),opacity .15s var(--ease)}.image-card:hover{transform:translateY(-2px)}.image-card[draggable=true]{cursor:grab}.image-card.dragging{opacity:.4;cursor:grabbing;transform:none}.image-card.drag-over-before{box-shadow:-3px 0 0 0 var(--c-blue),0 4px 12px #00000014}.image-card.drag-over-after{box-shadow:3px 0 0 0 var(--c-blue),0 4px 12px #00000014}.image-card img{width:100%;height:140px;object-fit:cover;border-radius:var(--radius-sm);cursor:pointer}.image-card span{display:block;margin:8px 0 6px;font-size:14px;font-weight:700;color:var(--c-text)}.image-card .img-actions{display:flex;gap:6px;justify-content:center}.delete-btn{padding:6px 14px;background:var(--c-red);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:700}.rename-btn{padding:6px 14px;background:var(--c-green);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:700}.order-btn{padding:6px 10px;background:var(--c-blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:700}.order-btn:disabled{opacity:.45;cursor:not-allowed}.rename-input{width:100%;padding:6px;border:2px solid var(--c-blue);border-radius:var(--radius-sm);font-size:14px;margin-bottom:6px}.error-msg{color:var(--c-red);font-size:14px;min-height:20px}#admin-panel h2{font-family:var(--font-d);font-size:22px;color:var(--c-blue-deep);margin-bottom:16px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.orientation-hint-toast{position:fixed;top:28%;left:50%;transform:translate(-50%) scale(.9);background:#081423e6;color:#fff;padding:12px 18px 12px 22px;border-radius:999px;font-family:var(--font-b);font-weight:700;font-size:15px;display:flex;align-items:center;gap:12px;box-shadow:0 12px 32px #00000047;z-index:1500;opacity:0;pointer-events:none;transition:opacity .3s var(--ease),transform .3s var(--ease)}.orientation-hint-toast.visible{opacity:1;transform:translate(-50%) scale(1)}.orientation-hint-toast.flying{transform:translate(calc(-50% + var(--fly-dx, 0px)),var(--fly-dy, 0px)) scale(.2);opacity:0;transition:transform .42s var(--ease),opacity .42s}.orientation-hint-close{background:transparent;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0;line-height:1;opacity:.7;pointer-events:auto;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.orientation-hint-close:hover{opacity:1}#fs-floating.pulse{animation:fsPulse .7s var(--ease)}@keyframes fsPulse{0%{box-shadow:var(--shadow-card),0 0 #58b2e58c}60%{box-shadow:var(--shadow-card),0 0 0 16px #58b2e500}to{box-shadow:var(--shadow-card),0 0 #58b2e500}}@media (max-width: 1024px){.modal-card{max-width:min(92vw,360px);padding:24px 20px}.modal-card button{width:100%;min-height:44px;margin-top:8px;padding:12px 20px;font-size:15px;justify-content:center}#back-to-gallery{margin-left:0;margin-top:8px}.lb-full-card{max-width:min(94vw,480px);max-height:88vh;padding:16px}.lb-close-btn{width:44px;height:44px;min-width:44px}.lb-card{padding:20px 18px;max-height:88vh}.lb-list-full li{min-height:40px;padding:10px 4px}}@media (max-width: 1024px) and (max-height: 420px){.lb-card{max-height:100vh;padding:12px 14px}.lb-card h2{font-size:18px;margin-bottom:6px}.lb-card p{font-size:13px;margin-bottom:6px}.lb-card input{margin:4px 0 6px;padding:10px}.lb-card-actions button{min-height:40px;padding:10px 16px;font-size:14px}}@media (max-width: 1024px){#gallery .gallery-preview-btn{width:1em;height:1em}}
