:root{--primary:#094718;--primary-hover:#10732b;--primary-light:#e6f0e9;--primary-glow:#0947181f;--bg:#f8fafc;--card:#fff;--text:#1e293b;--text-muted:#64748b;--border:#e2e8f0;--info:#0369a1;--purple:#7c3aed;--orange:#ea580c;--danger:#ef4444;--danger-light:#fef2f2;--danger-dark:#dc2626;--album-cover:linear-gradient(145deg, #094718 0%, #0b5a1f 40%, #10732b 100%);--album-page:#fffdf9;--album-page-alt:#faf8f3;--sticker-empty:#f1f5f9;--sticker-border:#09471826;--sticker-shadow:0 2px 8px #09471814;--page-shadow:0 4px 24px #0000001f;--shadow-sm:0 1px 3px #0947180f;--shadow-md:0 8px 32px #09471814;--shadow-lg:0 14px 32px #09471826;--shadow-btn:0 8px 24px #09471840;--shadow-btn-h:0 14px 32px #09471859;--z-header:100;--z-modal:1000;--z-toast:10001;--ease-out:cubic-bezier(.4, 0, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;overflow-x:hidden}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);font-family:Poppins,sans-serif;overflow-x:hidden}#app{width:100%;max-width:100vw;overflow-x:hidden}img{max-width:100%;display:block}button{cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border:none;outline:none;font-family:Poppins,sans-serif}input{appearance:none;border-radius:0;outline:none;font-family:Poppins,sans-serif;font-size:16px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}.container{max-width:1100px;margin:0 auto;padding:0 24px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes slideUpFade{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes float{0%,to{transform:translateY(0)rotateX(8deg)rotateY(-5deg)}50%{transform:translateY(-12px)rotateX(8deg)rotateY(-5deg)}}@keyframes floatShadow{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.15;transform:scale(.9)}}@keyframes pulse{0%,to{box-shadow:0 8px 24px #09471840}50%{box-shadow:0 8px 32px #09471866}}@keyframes stickerStamp{0%{opacity:0;transform:scale(1.4)rotate(-5deg)}50%{opacity:1;transform:scale(.95)rotate(1deg)}70%{transform:scale(1.05)rotate(-.5deg)}to{transform:scale(1)rotate(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes celebrate{0%{transform:scale(1)}15%{transform:scale(1.03)}30%{transform:scale(.98)}45%{transform:scale(1.01)}60%{transform:scale(1)}}@keyframes sparkle{0%{opacity:0;transform:scale(0)rotate(0)}50%{opacity:1;transform:scale(1)rotate(180deg)}to{opacity:0;transform:scale(0)rotate(360deg)}}@keyframes confettiDrop{0%{opacity:1;transform:translateY(-100vh)rotate(0)}to{opacity:0;transform:translateY(100vh)rotate(720deg)}}@keyframes progressFill{0%{width:0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.animate-in{animation:slideUpFade .5s var(--ease-out) backwards}.animate-in-delayed{animation:slideUpFade .5s var(--ease-out) .1s backwards}.animate-float{animation:3s ease-in-out infinite float}.animate-pulse{animation:2s ease-in-out infinite pulse}.animate-shimmer{background:linear-gradient(90deg, var(--sticker-empty) 25%, #e2e8f0 50%, var(--sticker-empty) 75%);background-size:200% 100%;animation:1.5s linear infinite shimmer}.landing{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.hero{flex-direction:column;flex:1;justify-content:center;align-items:center;padding:40px 24px 32px;display:flex;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;background:radial-gradient(#0947180f 0%,#0000 60%);width:140%;height:100%;position:absolute;top:-50%;left:-20%}.hero-particles{pointer-events:none;position:absolute;inset:0;overflow:hidden}.particle{background:var(--primary);opacity:.12;border-radius:50%;width:6px;height:6px;animation:linear infinite floatParticle;position:absolute}@keyframes floatParticle{0%{opacity:0;transform:translateY(100vh)scale(0)}10%{opacity:.12}90%{opacity:.12}to{opacity:0;transform:translateY(-20vh)scale(1)}}.hero-album{perspective:800px;z-index:2;margin-bottom:32px;position:relative}.hero-album-inner{background:var(--album-cover);border-radius:8px 20px 20px 8px;flex-direction:column;justify-content:center;align-items:center;gap:10px;width:160px;height:210px;animation:3s ease-in-out infinite float;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 60px #09471840,inset 0 0 0 1px #ffffff1a,inset -4px 0 8px #00000026}.hero-album-inner:before{content:"";background:linear-gradient(90deg,#0003,#0000);border-radius:8px 0 0 8px;width:12px;position:absolute;top:0;bottom:0;left:0}.hero-album-inner:after{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#0000,#0000 20px,#ffffff05 20px 40px);position:absolute;inset:0}.hero-album-badge{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff26;border:2px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.hero-album-badge svg{stroke:#fff;fill:none;stroke-width:1.5px;width:22px;height:22px}.hero-album-title{color:#fff;text-transform:uppercase;letter-spacing:1.5px;text-align:center;text-shadow:0 1px 4px #0003;padding:0 14px;font-size:.62em;font-weight:700}.hero-album-subtitle{color:#ffffffb3;letter-spacing:.5px;font-size:.55em;font-weight:400}.hero-album-shadow{background:radial-gradient(#09471826,#0000);border-radius:50%;width:120px;height:16px;margin-top:-6px;animation:3s ease-in-out infinite floatShadow}.hero-content{text-align:center;z-index:2;max-width:440px;position:relative}.hero-tag{background:var(--primary-light);color:var(--primary);animation:slideUpFade .5s var(--ease-out) .2s backwards;border-radius:20px;align-items:center;gap:6px;margin-bottom:14px;padding:4px 14px;font-size:.72em;font-weight:600;display:inline-flex}.hero-tag svg{width:14px;height:14px}.hero h1{color:var(--primary);animation:slideUpFade .5s var(--ease-out) .3s backwards;margin-bottom:10px;font-size:1.4em;font-weight:700;line-height:1.3}.hero p{color:var(--text-muted);animation:slideUpFade .5s var(--ease-out) .4s backwards;margin-bottom:28px;font-size:.85em;line-height:1.6}.entry-form{width:100%;max-width:340px;animation:slideUpFade .5s var(--ease-out) .5s backwards;flex-direction:column;align-items:center;gap:12px;margin:0 auto;display:flex}.entry-input{background:var(--card);border:2px solid var(--border);width:100%;color:var(--text);transition:all .3s var(--ease-out);text-align:center;border-radius:12px;padding:14px 18px;font-size:.9em}.entry-input:focus{border-color:var(--primary);box-shadow:0 0 0 4px #09471814}.entry-input::placeholder{color:var(--text-muted)}.entry-btn{background:var(--primary);color:#fff;width:100%;box-shadow:var(--shadow-btn);transition:all .3s var(--ease-out);border-radius:12px;padding:14px 28px;font-size:.88em;font-weight:600}.entry-btn:hover{background:var(--primary-hover);box-shadow:var(--shadow-btn-h);transform:translateY(-1px)}.entry-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.entry-btn:active{transform:translateY(0)}.ranking-section{background:var(--card);border-top:1px solid var(--border);padding:40px 24px 48px}.ranking-header{text-align:center;margin-bottom:24px}.ranking-header h2{color:var(--text);margin-bottom:4px;font-size:1.05em;font-weight:700}.ranking-header p{color:var(--text-muted);font-size:.82em}.ranking-list{flex-direction:column;gap:6px;max-width:420px;margin:0 auto;display:flex}.ranking-item{background:var(--bg);border:1px solid var(--border);animation:slideUpFade .4s var(--ease-out) backwards;border-radius:12px;align-items:center;gap:12px;padding:12px 16px;transition:border-color .15s;display:flex}.ranking-item:hover{border-color:#09471833}.ranking-item.top-1{background:linear-gradient(135deg,#fef9c3,#fef3c7);border-color:#f59e0b}.ranking-item.top-2{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border-color:#94a3b8}.ranking-item.top-3{background:linear-gradient(135deg,#fef2f2,#fed7aa);border-color:#ea580c}.ranking-position{background:var(--primary-light);width:28px;height:28px;color:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.72em;font-weight:700;display:flex}.ranking-item.top-1 .ranking-position{color:#fff;background:#f59e0b}.ranking-item.top-2 .ranking-position{color:#fff;background:#94a3b8}.ranking-item.top-3 .ranking-position{color:#fff;background:#ea580c}.ranking-name{color:var(--text);flex:1;font-size:.88em;font-weight:500}.ranking-score{color:var(--primary);align-items:center;gap:6px;font-size:.78em;font-weight:600;display:flex}.ranking-bar{background:var(--border);border-radius:3px;width:60px;height:6px;overflow:hidden}.ranking-bar-fill{background:var(--primary);height:100%;transition:width .6s var(--ease-out);border-radius:3px}.ranking-empty{text-align:center;color:var(--text-muted);padding:32px 16px;font-size:.85em}.admin-link{text-align:center;padding:24px}.admin-link button{color:var(--text-muted);opacity:.5;background:0 0;padding:8px 16px;font-size:.72em;transition:color .2s}.admin-link button:hover{color:var(--primary);opacity:1}@media (width>=768px){.hero{flex-direction:row;gap:60px;min-height:70vh;padding:60px 48px}.hero-album{margin-bottom:0}.hero-album-inner{width:200px;height:260px}.hero-album-badge{width:56px;height:56px}.hero-album-badge svg{width:26px;height:26px}.hero-album-title{font-size:.68em}.hero-album-shadow{width:150px;height:20px}.hero-content{text-align:left;max-width:480px}.hero-content .hero-tag{margin-left:0}.hero h1{font-size:2em}.hero p{font-size:.9em}.entry-form{align-items:stretch;max-width:360px}.entry-input{text-align:left}.ranking-section{padding:48px}}@media (width<=600px){.hero{padding:32px 16px 24px}.hero-album-inner{width:140px;height:185px}.hero h1{font-size:1.2em}.hero p{font-size:.82em}}.album-page{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.album-topbar{border-bottom:1px solid var(--border);z-index:var(--z-header);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff2;justify-content:space-between;align-items:center;padding:14px 20px;display:flex;position:sticky;top:0}.album-topbar-left{align-items:center;gap:12px;display:flex}.album-back-btn{background:var(--bg);border:1px solid var(--border);width:34px;height:34px;color:var(--text-muted);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s;display:flex}.album-back-btn:hover{border-color:var(--primary);color:var(--primary)}.album-topbar-info h2{color:var(--text);font-size:.88em;font-weight:700;line-height:1.2}.album-topbar-info span{color:var(--text-muted);font-size:.68em}.album-progress-pill{background:var(--primary-light);border-radius:20px;align-items:center;gap:8px;padding:6px 14px;display:flex}.album-progress-text{color:var(--primary);white-space:nowrap;font-size:.72em;font-weight:600}.album-progress-bar-mini{background:#0947181f;border-radius:2px;width:48px;height:4px;overflow:hidden}.album-progress-bar-mini-fill{background:var(--primary);height:100%;transition:width .6s var(--ease-out);border-radius:2px}.album-container{flex-direction:column;flex:1;justify-content:flex-start;align-items:center;padding:20px 16px;display:flex;overflow-x:hidden}.book-scene{perspective:1800px;width:100%;max-width:400px;margin:0 auto}.book{aspect-ratio:3/4;width:100%;transform-style:preserve-3d;position:relative}@supports not (aspect-ratio:3/4){.book{padding-top:133.33%}.book>*{position:absolute}}.book-page{transform-style:preserve-3d;transform-origin:0;backface-visibility:hidden;background:var(--album-page);will-change:transform;visibility:hidden;pointer-events:none;border:1px solid #0000000f;border-radius:4px 16px 16px 4px;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.book-page.current{visibility:visible;pointer-events:auto;z-index:3;box-shadow:2px 0 6px #0000000f,4px 0 16px #0000000a}.book-page.next-ready,.book-page.prev-ready{visibility:visible;pointer-events:none;z-index:1;box-shadow:none}.book-page.flip-forward{visibility:visible;pointer-events:none;z-index:5;animation:.7s cubic-bezier(.645,.045,.355,1) forwards flipForward}@keyframes flipForward{0%{transform:rotateY(0);box-shadow:2px 0 6px #0000000f,4px 0 16px #0000000a}30%{box-shadow:8px 0 24px #00000026}to{transform:rotateY(-180deg);box-shadow:-2px 0 6px #00000005}}.book-page.flip-backward{visibility:visible;pointer-events:none;z-index:5;animation:.7s cubic-bezier(.645,.045,.355,1) forwards flipBackward}@keyframes flipBackward{0%{transform:rotateY(-180deg);box-shadow:-2px 0 6px #00000005}30%{box-shadow:8px 0 24px #00000026}to{transform:rotateY(0);box-shadow:2px 0 6px #0000000f,4px 0 16px #0000000a}}.book-page:before{content:"";pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg,#0000,#0000 39px,#09471806 39px 40px);position:absolute;inset:0}.book-page:after{content:"";pointer-events:none;z-index:1;background:linear-gradient(90deg,#0000000f,#0000);width:20px;position:absolute;top:0;bottom:0;left:0}.book-cover{background:var(--album-page-alt);border:1px solid #00000014;border-radius:4px 16px 16px 4px;position:absolute;inset:0;box-shadow:inset 2px 0 8px #0000000a}.book-edges{z-index:0;flex-direction:column;justify-content:stretch;gap:0;width:6px;display:flex;position:absolute;top:4px;bottom:4px;right:-3px}.book-edge{background:#f0ede8;border-right:1px solid #0000000f;flex:1}.book-edge:nth-child(2){background:#ece9e4;transform:translate(1px)}.book-edge:nth-child(3){background:#e8e5e0;transform:translate(2px)}.album-page-header{z-index:2;flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 18px 6px;display:flex;position:relative}.album-page-title{text-transform:uppercase;letter-spacing:1px;color:var(--primary);opacity:.5;font-size:.65em;font-weight:600}.album-page-number{color:var(--text-muted);font-size:.6em;font-weight:500}.sticker-grid{z-index:2;flex:1;grid-template-columns:repeat(2,1fr);align-content:start;gap:10px;padding:6px 16px 16px;display:grid;position:relative}.sticker-slot{aspect-ratio:4/5;cursor:pointer;transition:all .3s var(--ease-out);border-radius:12px;position:relative;overflow:hidden}.sticker-slot.empty{background:var(--sticker-empty);border:2px dashed var(--border);flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.sticker-slot.empty:hover{border-color:var(--primary);background:var(--primary-light);box-shadow:var(--sticker-shadow);transform:translateY(-2px)}.sticker-slot-number{color:var(--border);font-size:1.3em;font-weight:700;line-height:1;transition:color .2s}.sticker-slot.empty:hover .sticker-slot-number{color:#0947184d}.sticker-slot-icon{width:20px;height:20px;color:var(--text-muted);opacity:.4;transition:opacity .2s}.sticker-slot.empty:hover .sticker-slot-icon{opacity:.7;color:var(--primary)}.sticker-slot.filled{background:var(--card);box-shadow:var(--sticker-shadow);border:2px solid #0947181f}.sticker-slot.filled:hover{transform:translateY(-3px);box-shadow:0 8px 24px #0947181f}.sticker-slot.filled.just-placed{animation:stickerStamp .4s var(--ease-spring)}.sticker-image{object-fit:cover;width:100%;height:100%}.sticker-number-badge{background:var(--primary);color:#fff;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;font-size:.55em;font-weight:700;display:flex;position:absolute;bottom:4px;right:4px;box-shadow:0 2px 6px #0947184d}.album-nav{flex-shrink:0;justify-content:center;align-items:center;gap:16px;padding:12px;display:flex}.album-nav-btn{background:var(--card);border:1px solid var(--border);width:44px;height:44px;color:var(--text-muted);box-shadow:var(--shadow-sm);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s;display:flex}.album-nav-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.album-nav-btn:disabled{opacity:.3;cursor:not-allowed}.album-nav-dots{gap:6px;display:flex}.album-nav-dot{background:var(--border);cursor:pointer;border:none;border-radius:50%;width:8px;height:8px;padding:0;transition:all .2s}.album-nav-dot.active{background:var(--primary);border-radius:4px;width:20px}.album-full-progress{flex-shrink:0;width:100%;max-width:400px;margin:0 auto;padding:8px 16px 16px}.album-full-progress-bar{background:var(--border);border-radius:3px;height:6px;margin-bottom:4px;overflow:hidden}.album-full-progress-fill{background:linear-gradient(90deg,var(--primary),var(--primary-hover));height:100%;transition:width .8s var(--ease-out);border-radius:3px}.album-full-progress-label{color:var(--text-muted);justify-content:space-between;font-size:.68em;display:flex}.album-full-progress-label strong{color:var(--primary);font-weight:600}.flip-hint{text-align:center;color:var(--text-muted);opacity:.4;flex-shrink:0;padding:2px 0;font-size:.65em}@media (width>=768px){.album-container{padding:28px 24px}.book-scene{perspective:2200px;max-width:460px}.sticker-grid{gap:14px;padding:8px 24px 24px}.album-full-progress{max-width:460px}.sticker-slot-number{font-size:1.5em}}@media (width<=600px){.album-page{min-height:100dvh}.album-topbar{padding:10px 12px}.album-topbar-info h2{font-size:.78em}.album-topbar-info span{font-size:.6em}.album-container{padding:12px 10px 8px}.book-scene{max-width:100%}.sticker-grid{gap:8px;padding:4px 10px 10px}.album-progress-pill{gap:6px;padding:4px 8px}.album-progress-text{font-size:.62em}.album-progress-bar-mini{width:40px}.album-page-header{padding:8px 12px 4px}.album-page-title{letter-spacing:.5px;font-size:.58em}.album-page-number{font-size:.55em}.album-nav{gap:12px;padding:8px}.album-nav-btn{border-radius:10px;width:38px;height:38px}.album-full-progress{padding:4px 12px 12px}.flip-hint{font-size:.58em}.sticker-slot-number{font-size:1.1em}.sticker-slot-icon{width:16px;height:16px}.sticker-number-badge{width:18px;height:18px;font-size:.5em;bottom:3px;right:3px}}@media (width<=360px){.album-topbar{padding:8px 10px}.album-topbar-info h2{font-size:.72em}.album-container{padding:8px 6px 4px}.sticker-grid{gap:6px;padding:4px 8px 8px}.album-nav-btn{width:34px;height:34px}}.upload-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal);opacity:0;visibility:hidden;background:#0006;justify-content:center;align-items:center;padding:16px;transition:all .25s;display:flex;position:fixed;inset:0}.upload-overlay.show{opacity:1;visibility:visible}.upload-box{width:100%;max-width:400px;transition:transform .3s var(--ease-spring);background:#fff;border-radius:20px;padding:32px;position:relative;transform:scale(.9)translateY(20px);box-shadow:0 24px 48px #00000026}.upload-overlay.show .upload-box{transform:scale(1)translateY(0)}.upload-close{background:var(--bg);width:32px;height:32px;color:var(--text-muted);border:1px solid var(--border);z-index:10;border-radius:8px;justify-content:center;align-items:center;transition:all .2s;display:flex;position:absolute;top:12px;right:12px}.upload-close:hover{color:var(--danger);border-color:var(--danger)}.upload-box-inner{padding-top:4px;position:relative}.upload-title{color:var(--text);text-align:center;margin-bottom:4px;font-size:1.05em;font-weight:600}.upload-subtitle{color:var(--text-muted);text-align:center;margin-bottom:24px;font-size:.82em}.upload-sticker-num{background:var(--primary-light);color:var(--primary);border-radius:20px;padding:2px 10px;font-size:.85em;font-weight:700;display:inline-flex}.upload-dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;background:var(--bg);border-radius:16px;margin-bottom:20px;padding:32px 16px;transition:all .3s}.upload-dropzone:hover,.upload-dropzone.dragover{border-color:var(--primary);background:var(--primary-light)}.upload-dropzone-icon{width:40px;height:40px;color:var(--text-muted);opacity:.5;margin:0 auto 12px}.upload-dropzone:hover .upload-dropzone-icon{color:var(--primary);opacity:.8}.upload-dropzone-text{color:var(--text-muted);margin-bottom:4px;font-size:.82em}.upload-dropzone-hint{color:var(--text-muted);opacity:.6;font-size:.7em}.upload-file-input{display:none}.upload-preview{margin-bottom:20px;display:none}.upload-preview.show{display:block}.upload-preview-img{aspect-ratio:4/5;object-fit:cover;border:2px solid var(--border);border-radius:12px;width:100%;margin-bottom:12px}.upload-preview-change{color:var(--primary);text-underline-offset:2px;background:0 0;margin:0 auto;padding:4px;font-size:.78em;font-weight:500;text-decoration:underline;display:block}.upload-preview-change:hover{color:var(--primary-hover)}.upload-submit{background:var(--primary);color:#fff;width:100%;box-shadow:var(--shadow-btn);transition:all .3s var(--ease-out);border-radius:12px;padding:14px 28px;font-size:.88em;font-weight:600}.upload-submit:hover{background:var(--primary-hover);box-shadow:var(--shadow-btn-h);transform:translateY(-1px)}.upload-submit:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.preview-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:var(--z-modal);opacity:0;visibility:hidden;cursor:pointer;background:#0009;justify-content:center;align-items:center;padding:16px;transition:all .25s;display:flex;position:fixed;inset:0}.preview-overlay.show{opacity:1;visibility:visible}.preview-content{width:100%;max-width:500px;animation:scaleIn .3s var(--ease-spring)}.preview-image{border-radius:16px;width:100%;box-shadow:0 24px 48px #0000004d}.preview-number{text-align:center;color:#fff;margin-top:12px;font-size:.82em;font-weight:600}.admin-page{background:var(--bg);min-height:100vh}.admin-topbar{border-bottom:1px solid var(--border);z-index:var(--z-header);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff2;justify-content:space-between;align-items:center;padding:18px 28px;display:flex;position:sticky;top:0}.admin-topbar h1{color:var(--primary);font-size:1.1em;font-weight:700}.admin-topbar h1 span{color:var(--text-muted);font-size:.85em;font-weight:400}.admin-content{max-width:1000px;margin:0 auto;padding:24px}.admin-stats{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:32px;display:grid}.admin-stat{text-align:center;background:var(--card);box-shadow:var(--shadow-sm);border:1px solid #09471814;border-radius:16px;padding:20px 16px}.admin-stat .num{margin-bottom:4px;font-size:1.8em;font-weight:700;line-height:1}.admin-stat .num.green{color:var(--primary)}.admin-stat .num.blue{color:var(--info)}.admin-stat .num.purple{color:var(--purple)}.admin-stat .num.orange{color:var(--orange)}.admin-stat .lbl{color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;font-size:.68em}.admin-section{background:var(--card);box-shadow:var(--shadow-sm);border:1px solid #09471814;border-radius:20px;margin-bottom:20px;padding:24px}.admin-section h3{color:var(--text);margin-bottom:16px;font-size:.95em;font-weight:700}.admin-album-list{flex-direction:column;gap:6px;display:flex}.admin-album-item{background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;padding:12px 16px;transition:border-color .15s;display:flex}.admin-album-item:hover{border-color:#09471833}.admin-album-item-left{align-items:center;gap:12px;display:flex}.admin-album-item-name{color:var(--text);font-size:.88em;font-weight:500}.admin-album-item-score{color:var(--text-muted);font-size:.78em}.admin-album-item-tag{background:var(--primary-light);color:var(--primary);border-radius:20px;padding:3px 10px;font-size:.72em;font-weight:600;display:inline-flex}.admin-detail-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.admin-detail-sticker{aspect-ratio:4/5;border:1px solid var(--border);background:var(--bg);border-radius:12px;justify-content:center;align-items:center;display:flex;overflow:hidden}.admin-detail-sticker img{object-fit:cover;width:100%;height:100%}.admin-detail-sticker.empty-slot{color:var(--text-muted);opacity:.4;font-size:.82em;font-weight:600}.admin-password{text-align:center;max-width:360px;margin:80px auto}.admin-password h2{color:var(--text);margin-bottom:8px;font-size:1.1em;font-weight:700}.admin-password p{color:var(--text-muted);margin-bottom:24px;font-size:.82em}.admin-password input{background:var(--card);border:2px solid var(--border);width:100%;color:var(--text);text-align:center;border-radius:12px;margin-bottom:12px;padding:14px 18px;font-size:.9em;transition:all .3s}.admin-password input:focus{border-color:var(--primary);box-shadow:0 0 0 4px #09471814}.toast{background:var(--primary);color:#fff;opacity:0;visibility:hidden;z-index:var(--z-toast);white-space:nowrap;border-radius:12px;padding:12px 24px;font-size:.85em;font-weight:500;transition:all .3s;position:fixed;bottom:30px;left:50%;transform:translate(-50%)translateY(20px);box-shadow:0 8px 24px #0947184d}.toast.show{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.admin-back-text{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin-bottom:16px;padding:8px 0;font-size:.82em;font-weight:500;transition:color .2s;display:flex}.admin-back-text:hover{color:var(--primary)}.admin-back-text svg{width:16px;height:16px}.confetti-container{pointer-events:none;z-index:9999;position:fixed;inset:0;overflow:hidden}.confetti-piece{width:10px;height:10px;animation:2s linear forwards confettiDrop;position:absolute;top:-10px}@media (width<=600px){.upload-box{border-radius:16px;padding:24px 18px}.admin-topbar{padding:14px 16px}.admin-topbar h1{font-size:1em}.admin-content{padding:16px 12px}.admin-stats{grid-template-columns:repeat(2,1fr)}}
