:root{--cream: #f9e9c2;--magenta: #ff00ff;--pink: #eb008b;--purple: #5e1c71;--ink: #16051d;--panel: rgba(42, 11, 54, .82);--panel-solid: #2a0b36;--line: rgba(249, 233, 194, .22);--gold: linear-gradient(180deg, #fff6d8 0%, #f3d690 45%, #c9953f 100%);--ok: #5ee6a8;--warn: #ffcf5c;--err: #ff6b8b;--radius: 18px;--ease-out: cubic-bezier(.22, 1, .36, 1);font-family:Kanit,system-ui,sans-serif;color:var(--cream);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}img{max-width:100%;height:auto}html{background:var(--ink)}body{margin:0;min-height:100dvh;background:linear-gradient(180deg,rgba(22,5,29,.15) 0%,rgba(22,5,29,.75) 380px,var(--ink) 720px),url(/assets/bg-curtain.webp) top center / 100% auto no-repeat,var(--ink);font-weight:300;line-height:1.55}a{color:var(--cream)}.wrap{width:100%;max-width:560px;margin:0 auto;padding:20px 16px 48px}.logo-wrap{position:relative;width:min(64%,300px);margin:8px auto 4px;animation:float-in .9s var(--ease-out) both;will-change:transform,opacity;cursor:pointer}.logo-wrap.sm{width:min(44%,200px);margin-top:0}.logo-wrap .logo{display:block;width:100%;height:auto;filter:drop-shadow(0 6px 24px rgba(0,0,0,.6));animation:breathe 7s 1s ease-in-out infinite}.logo-wrap:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 38%,rgba(255,250,230,.9) 50%,transparent 62%) no-repeat;background-size:300% 100%;-webkit-mask:url(/assets/logo.webp) center / contain no-repeat;mask:url(/assets/logo.webp) center / contain no-repeat;mix-blend-mode:screen;animation:glint 5s 1.2s ease-in-out infinite,breathe 7s 1s ease-in-out infinite}.twinkle{position:absolute;width:var(--s, 14px);aspect-ratio:1;background:#fff6d8;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);filter:drop-shadow(0 0 6px #f3d690);opacity:0;pointer-events:none;animation:twinkle var(--d, 3s) var(--delay, 0s) ease-in-out infinite}.script{font-family:Great Vibes,cursive;font-weight:400;font-size:2.2rem;line-height:1.2;background:var(--gold);-webkit-background-clip:text;background-clip:text;color:transparent;text-align:center;margin:0;animation:float-in .9s .15s var(--ease-out) both}h1,h2,h3{font-weight:600;line-height:1.3;margin:0 0 8px}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.05rem}.gold-text{background:var(--gold);-webkit-background-clip:text;background-clip:text;color:transparent}.hl{color:#fff;font-weight:600;background:linear-gradient(transparent 62%,#ff00ff8c 62%);padding:0 2px}.center{text-align:center}.muted{opacity:.72}.small{font-size:.875rem}.hidden{display:none!important}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin:16px 0;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 10px 30px #00000059}.preview-badge{position:fixed;top:10px;left:50%;transform:translate(-50%);z-index:40;background:var(--warn);color:var(--ink);font-weight:600;font-size:.75rem;letter-spacing:.08em;padding:3px 12px;border-radius:999px;text-decoration:none}label{display:block;font-weight:400;margin:0 0 8px}input[type=search],input[type=text],input[type=tel],input[type=email],input[type=password],input[type=number],input:not([type]){width:100%;font:inherit;font-size:1.1rem;font-weight:400;color:#fff;background:#00000059;border:1px solid var(--line);border-radius:12px;padding:12px 14px;outline:none;transition:border-color .2s,box-shadow .2s}input:focus{border-color:var(--magenta);box-shadow:0 0 0 3px #ff00ff40}input::placeholder{color:#f9e9c266}.otp-input{text-align:center;letter-spacing:.5em;font-size:1.6rem!important;font-weight:600!important}.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;font:inherit;font-weight:600;font-size:1.05rem;color:#fff;background:linear-gradient(135deg,var(--magenta),var(--pink));border:0;border-radius:999px;padding:13px 20px;margin-top:14px;cursor:pointer;box-shadow:0 6px 20px #eb008b73,inset 0 1px #ffffff59;transition:transform .12s var(--ease-out),opacity .2s,box-shadow .2s}.btn:active{transform:scale(.96);box-shadow:0 2px 10px #eb008b73}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{background:#ffffff0a;border:1px solid var(--line);box-shadow:none;color:var(--cream);font-weight:400}.btn.danger{background:linear-gradient(135deg,#ff4f7a,#c0213f);box-shadow:0 6px 20px #c0213f66}.btn.small{width:auto;padding:6px 14px;font-size:.9rem;margin:0}.linklike{background:none;border:0;color:var(--cream);text-decoration:underline;font:inherit;font-size:.9rem;cursor:pointer;padding:4px}.msg{margin:10px 0 0;font-size:.95rem}.msg:empty{display:none}.msg.err{color:var(--err);animation:shake .35s}.msg.ok{color:var(--ok)}.teambar{display:flex;align-items:center;justify-content:space-between;gap:12px}.teambar .no{font-size:.85rem;opacity:.75;letter-spacing:.04em}.teambar h2{margin:0;overflow-wrap:anywhere}.topbar{position:sticky;top:0;z-index:30;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));transition:background .3s,box-shadow .3s,backdrop-filter .3s}.topbar.scrolled{background:#16051dc7;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 24px #00000073}.topbar-inner{max-width:560px;margin:0 auto;display:flex;align-items:center;justify-content:flex-end;gap:12px}.tb-team{flex:1;min-width:0;line-height:1.25;opacity:0;transform:translateY(-6px);transition:opacity .3s,transform .3s var(--ease-out)}.topbar.scrolled .tb-team{opacity:1;transform:none}.tb-team .no{display:block;font-size:.72rem;opacity:.7}.tb-team b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-wrap{position:relative;flex:none}.menu{position:absolute;right:0;top:calc(100% + 10px);min-width:220px;background:var(--panel-solid);border:1px solid var(--line);border-radius:16px;padding:6px;box-shadow:0 16px 40px #0000008c;transform-origin:top right;animation:menu-in .22s var(--ease-out)}.menu-head{padding:8px 12px 10px;border-bottom:1px solid var(--line);margin-bottom:4px;line-height:1.3}.menu-head .no{display:block;font-size:.75rem;opacity:.7}.menu button{display:block;width:100%;text-align:left;font:inherit;font-size:.95rem;color:var(--cream);background:none;border:0;border-radius:10px;padding:10px 12px;cursor:pointer}.menu button:active{background:#ff00ff26}.menu button[data-act=remove]{color:var(--err)}.avatar-btn{position:relative;flex:none;width:52px;height:52px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer;transition:transform .15s var(--ease-out)}.avatar-btn:active{transform:scale(.92)}.avatar-btn .ring{position:absolute;inset:0;border-radius:50%;padding:3px;background:conic-gradient(var(--magenta) var(--p, 100%),rgba(249,233,194,.25) 0)}.avatar-btn .face{position:absolute;inset:3px;border-radius:50%;overflow:hidden;background:var(--purple);display:grid;place-items:center;border:2px solid var(--ink)}.avatar-btn .face img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.avatar-btn .face svg{width:58%;height:auto;opacity:.75}.avatar-btn .cam{position:absolute;right:-3px;bottom:-3px;width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,var(--magenta),var(--pink));display:grid;place-items:center;border:2px solid var(--ink);box-shadow:0 2px 8px #0006}.avatar-btn .cam svg{width:12px;height:12px}.avatar-btn.empty .ring{animation:glow 2.2s ease-in-out infinite}.avatar-btn.busy .face img{opacity:.5}.guide{width:100%;font:inherit;color:var(--cream);text-align:left;cursor:pointer;display:flex;gap:10px;align-items:center;font-size:.9rem;border:1px dashed rgba(255,0,255,.5);border-radius:14px;padding:10px 12px;margin-top:14px;background:#ff00ff14}.guide .arrow{font-size:1.2rem;animation:nudge 1.4s ease-in-out infinite}.banner{border-radius:14px;padding:12px 14px;background:#ffcf5c1f;border:1px solid rgba(255,207,92,.45);color:var(--warn);margin:12px 0}.mission h3{display:flex;gap:10px;align-items:baseline}.mission .num{flex:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--magenta),var(--pink));color:#fff;font-size:.9rem;font-weight:600;transition:background .3s}.mission.done .num{background:var(--ok);color:var(--ink)}.mission .desc{margin:0 0 12px;white-space:pre-line}.mission .status{font-size:.85rem;margin-bottom:10px}.mission.done{border-color:#5ee6a880}.mission.just-done{animation:celebrate 1s var(--ease-out)}.mprogress{margin:-2px 0 12px}.mprogress .label{font-size:.8rem;display:flex;justify-content:space-between;margin-bottom:4px}.mprogress .track{height:8px;border-radius:4px;background:#ffffff1f;overflow:hidden}.mprogress .fill{height:100%;width:0;border-radius:4px;background:linear-gradient(90deg,var(--pink),var(--magenta),var(--pink));background-size:200% 100%;animation:shimmer 1.2s linear infinite;transition:width .25s var(--ease-out)}.mprogress.complete .fill{background:var(--ok);animation:none}.mprogress.has-error .label{color:var(--err)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tile{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;background:#00000059;border:1px solid var(--line);animation:pop-in .35s var(--ease-out) both}.tile img{width:100%;height:100%;object-fit:cover;display:block}.tile.add{display:grid;place-items:center;cursor:pointer;border:1px dashed rgba(255,0,255,.6);color:var(--cream);text-align:center;font-size:.8rem;transition:transform .12s var(--ease-out),background .2s}.tile.add:active{transform:scale(.94);background:#ff00ff1f}.tile.add .plus{font-size:1.8rem;line-height:1;display:block}.tile.add input{display:none}.tile .del{position:absolute;top:4px;right:4px;width:30px;height:30px;border-radius:50%;border:0;background:#000000b3;color:#fff;font-size:1.1rem;line-height:1;cursor:pointer;z-index:2;transition:transform .12s}.tile .del:active{transform:scale(.85)}.tile .overlay{position:absolute;inset:0;display:grid;place-items:center;background:#16051d99;font-size:.78rem;text-align:center;padding:6px}.tile .bar{position:absolute;left:8px;right:8px;bottom:8px;height:5px;border-radius:3px;background:#fff3;overflow:hidden}.tile .bar i{display:block;height:100%;background:var(--magenta);width:0;transition:width .2s}.tile.failed{border-color:var(--err)}.tile.failed .bar{display:none}.tile .retry{background:var(--pink);border:0;color:#fff;border-radius:999px;padding:4px 10px;font:inherit;font-size:.8rem;margin-top:4px;cursor:pointer}.tile.removing{animation:pop-out .25s ease-in both}dialog.modal{width:min(92vw,380px);border:1px solid var(--line);border-radius:20px;padding:22px 20px 18px;background:var(--panel-solid);color:var(--cream);box-shadow:0 20px 60px #0009}dialog.modal[open]{animation:modal-in .25s var(--ease-out)}dialog.modal::backdrop{background:#0a020eb3;backdrop-filter:blur(3px)}dialog.modal h3{margin-bottom:6px}dialog.modal p{margin:0 0 6px}dialog.modal .preview{width:120px;height:120px;object-fit:cover;border-radius:12px;display:block;margin:8px auto 4px}dialog.modal .preview.round{border-radius:50%}dialog.modal .actions .btn{margin-top:10px}.summary-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}.summary-head b{font-size:1.3rem;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}.summary .track{height:12px;border-radius:6px;background:#ffffff1f;overflow:hidden}.summary .fill{height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,var(--pink),var(--magenta),#f3d690);transition:width .8s var(--ease-out)}.summary.complete{border-color:#5ee6a899}.summary.complete .fill{background:linear-gradient(90deg,var(--ok),#f3d690)}.tc2{border-color:#ff00ff8c}.tc2 [data-tc2-text]{opacity:.85}.tc2 .btn:disabled{filter:grayscale(.6)}.tc2.submitted{border-color:#f3d690;background:linear-gradient(160deg,#f3d6902e,#2a0b36d9)}.tc2.submitted [data-tc2-text]{color:#fff6d8;opacity:1;font-size:.95rem}dialog.modal .preview.contain{object-fit:contain;background:#fff;padding:6px}dialog.modal .credit-text{text-align:center;margin:6px 0 0;white-space:pre-line}dialog.modal h3.center{text-align:center}a.btn{text-decoration:none}.ac{position:relative}.ac-list{list-style:none;margin:6px 0 0;padding:6px;max-height:320px;overflow-y:auto;background:var(--panel-solid);border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px #0000008c;animation:menu-in .18s var(--ease-out);transform-origin:top center}.ac-list li{border-radius:10px;padding:6px 8px;cursor:pointer}.ac-list li.active,.ac-list li:active{background:#ff00ff2e}.ac-list li.empty{cursor:default;font-size:.9rem;opacity:.7;padding:10px}.team-chip-inner{display:flex;align-items:center;gap:12px;min-width:0}.team-chip-inner .av{flex:none;width:44px;height:44px;border-radius:50%;object-fit:cover;background:var(--purple);display:grid;place-items:center;font-weight:600;border:2px solid var(--line)}.team-chip-inner .tx{min-width:0;line-height:1.3}.team-chip-inner .tx b{display:block;font-weight:500;overflow-wrap:anywhere}.team-chip-inner .tx small{opacity:.65}.rights{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 16px}.rights .dots{display:flex;flex-wrap:wrap;gap:6px}.rights .dots i{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,0,255,.6);transition:background .25s,transform .25s var(--ease-out)}.rights .dots i.on{background:linear-gradient(135deg,var(--magenta),#f3d690);border-color:transparent;transform:scale(1.1)}.alloc{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}.alloc li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:14px;background:#ff00ff1a;border:1px solid rgba(255,0,255,.45)}.stepper{display:flex;align-items:center;gap:10px;flex:none}.stepper b{min-width:1.4em;text-align:center;font-size:1.15rem;color:#fff;font-variant-numeric:tabular-nums}.stepper button{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:#ffffff0f;color:#fff;font:inherit;font-size:1.2rem;line-height:1;cursor:pointer;transition:transform .12s var(--ease-out)}.stepper button:active{transform:scale(.88)}.stepper button:disabled{opacity:.3}dialog.modal [data-text]{white-space:pre-line}dialog.modal .modal-input{margin:8px 0 2px}.podium{display:grid;gap:16px;margin-top:8px}.podium .winner{text-align:center;padding:22px 16px 18px;border-radius:20px;background:#00000040;border:1px solid var(--line)}.podium .winner.r1{background:linear-gradient(160deg,#f3d69052,#c9953f1f);border-color:#f3d690}.podium .winner.r2{background:#dcdceb1f;border-color:#dcdceb80}.podium .medal{font-size:2.4rem;line-height:1}.podium .place{font-size:.85rem;letter-spacing:.08em;opacity:.8;margin:4px 0 12px}.podium .photo{width:132px;height:132px;border-radius:50%;object-fit:cover;display:grid;place-items:center;margin:0 auto 12px;background:var(--purple);border:3px solid rgba(243,214,144,.8);box-shadow:0 8px 26px #00000073;font-size:2rem;font-weight:600}.podium .winner.r2 .photo{width:104px;height:104px;border-color:#dcdcebb3;font-size:1.6rem}.podium .photo.name-only{font-size:1.25rem;line-height:1.25;padding:16px;text-align:center;overflow-wrap:anywhere;overflow:hidden;color:#fff6d8}.podium .winner.r2 .photo.name-only{font-size:1.02rem;padding:12px}.podium .tname{font-size:1.35rem;font-weight:600;color:#fff;overflow-wrap:anywhere}.podium .winner.r2 .tname{font-size:1.15rem}.podium .votes{margin-top:4px;opacity:.8}dialog.viewer{max-width:100vw;max-height:100dvh;width:100vw;height:100dvh;margin:0;padding:16px;border:0;background:transparent;display:grid;place-items:center}dialog.viewer:not([open]){display:none}dialog.viewer::backdrop{background:#08010ceb}dialog.viewer img{max-width:100%;max-height:calc(100dvh - 32px);width:auto;height:auto;border-radius:10px;box-shadow:0 20px 60px #0009;animation:zoom-in .3s var(--ease-out)}.viewer-close{position:fixed;top:max(12px,env(safe-area-inset-top));right:12px;width:40px;height:40px;border-radius:50%;border:0;background:#ffffff26;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer}.tile.viewable{cursor:zoom-in}.countdown{display:flex;justify-content:center;gap:10px;margin:18px 0 6px}.countdown div{min-width:68px;padding:10px 6px;border-radius:14px;background:#00000059;border:1px solid var(--line);text-align:center}.countdown b{display:block;font-size:1.7rem;font-weight:600;color:#fff;line-height:1.1;font-variant-numeric:tabular-nums}.countdown span{font-size:.75rem;opacity:.75}.board{list-style:none;padding:0;margin:0}.board li{display:grid;grid-template-columns:40px 52px 1fr auto;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:#00000040;margin-bottom:8px}.board .rank{font-size:1.3rem;font-weight:600;text-align:center}.board .avatar svg{width:60%;height:auto;opacity:.75}.board .avatar{width:52px;height:52px;border-radius:50%;object-fit:cover;background:var(--purple);display:grid;place-items:center;font-weight:600;border:2px solid var(--line)}.board .name{font-weight:500;line-height:1.3;overflow-wrap:anywhere}.board .name small{display:block;opacity:.65;font-weight:300}.board .pts{font-size:1.25rem;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}.board li.top1{background:linear-gradient(135deg,#f3d69059,#c9953f33);border:1px solid #f3d690}.board li.top2{background:#dcdceb29;border:1px solid rgba(220,220,235,.5)}.board li.top3{background:#cd7f322e;border:1px solid rgba(205,127,50,.6)}footer.foot{margin-top:36px;font-size:.8rem}footer.foot .credits{display:flex;justify-content:center;gap:36px;flex-wrap:wrap}footer.foot .credit{display:flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;color:var(--cream);transition:transform .15s var(--ease-out)}footer.foot .credit span{opacity:.8}footer.foot a.credit:active{transform:scale(.94)}footer.foot .round{width:62px;height:62px;border-radius:50%;object-fit:cover;border:2px solid rgba(243,214,144,.7);background:#fff;box-shadow:0 4px 14px #0006}footer.foot .round.contain{object-fit:contain;padding:2px}#recaptcha{display:none}.reveal{opacity:0;transform:translateY(48px) scale(.94);transition:opacity .7s var(--ease-out),transform .8s var(--ease-out);transition-delay:var(--rd, 0s)}.reveal.in{opacity:1;transform:none}.reveal:not(.in) .tile,.reveal:not(.in) .num{opacity:0;animation:none}.reveal.in .tile{animation:pop-in .45s calc(var(--rd, 0s) + .25s + var(--i, 0) * 70ms) var(--ease-out) both}.reveal.in .num{animation:badge-in .6s calc(var(--rd, 0s) + .2s) var(--ease-out) both}.reveal.in h3>span:last-child,.reveal.in h2{animation:slide-in .6s calc(var(--rd, 0s) + .12s) var(--ease-out) both}.step-in{animation:step-in .45s var(--ease-out) both}.ripple{position:absolute;border-radius:50%;background:#ffffff73;transform:scale(0);animation:ripple .6s ease-out forwards;pointer-events:none}.sparkle{position:fixed;width:8px;height:8px;border-radius:50%;pointer-events:none;z-index:60;animation:sparkle .9s var(--ease-out) forwards}@keyframes ripple{to{transform:scale(2.6);opacity:0}}@keyframes breathe{50%{transform:scale(1.025)}}@keyframes glint{0%{background-position:130% 0}45%,to{background-position:-30% 0}}@keyframes twinkle{0%,to{opacity:0;transform:scale(.2) rotate(0)}50%{opacity:1;transform:scale(1) rotate(90deg)}}@keyframes menu-in{0%{opacity:0;transform:scale(.85) translateY(-6px)}}@keyframes zoom-in{0%{opacity:0;transform:scale(.9)}}@keyframes badge-in{0%{opacity:0;transform:scale(0) rotate(-180deg)}70%{transform:scale(1.2) rotate(10deg)}to{opacity:1;transform:none}}@keyframes slide-in{0%{opacity:0;transform:translate(-16px)}}@keyframes step-in{0%{opacity:0;transform:translate(30px)}}@keyframes float-in{0%{opacity:0;transform:translateY(-12px) scale(.97)}}@keyframes pop-in{0%{opacity:0;transform:scale(.8)}}@keyframes pop-out{to{opacity:0;transform:scale(.7)}}@keyframes modal-in{0%{opacity:0;transform:translateY(16px) scale(.96)}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes nudge{50%{transform:translate(3px,-3px)}}@keyframes glow{50%{box-shadow:0 0 0 6px #ff00ff40}}@keyframes sparkle{to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}@keyframes celebrate{0%{box-shadow:0 0 #5ee6a8b3;transform:scale(1)}30%{transform:scale(1.02)}to{box-shadow:0 0 0 18px #5ee6a800;transform:scale(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}@media(min-width:480px){.grid{grid-template-columns:repeat(4,1fr)}}
