.task-celebration{position:fixed;z-index:90;left:50%;bottom:calc(94px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;width:min(330px,calc(100vw - 40px));padding:11px 14px;border:1px solid rgba(255,255,255,.16);border-radius:18px;background:#242329;color:#fff;box-shadow:0 16px 38px rgba(12,10,14,.28);transform:translate(-50%,18px) scale(.96);opacity:0;pointer-events:none;transition:opacity .22s ease,transform .3s cubic-bezier(.2,.9,.25,1.35)}
.task-celebration.show{opacity:1;transform:translate(-50%,0) scale(1)}
.task-celebration-check{display:grid;place-items:center;flex:0 0 31px;width:31px;height:31px;border-radius:50%;background:linear-gradient(135deg,#ffd34f,#ef9d2d);color:#28242a;font-weight:800;font-size:18px;box-shadow:0 5px 13px rgba(238,159,44,.3)}
.task-celebration small,.task-celebration strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-celebration small{margin-bottom:1px;color:#c9c6cc;font:500 10px/1.2 'Plus Jakarta Sans',sans-serif;text-transform:uppercase;letter-spacing:.06em}.task-celebration strong{max-width:235px;font:600 12px/1.25 'Sora',sans-serif}
.rank-celebration{position:fixed;z-index:110;inset:0;display:grid;place-items:center;padding:24px;background:rgba(8,8,11,.62);backdrop-filter:blur(8px);opacity:0;transition:opacity .25s ease}.rank-celebration.show{opacity:1}.rank-celebration-card{position:relative;z-index:2;width:min(360px,100%);padding:31px 27px 25px;border:1px solid rgba(255,207,105,.4);border-radius:28px;background:radial-gradient(circle at 50% 0,#5d4a2c 0,#29272d 45%,#18171c 100%);color:#fff;text-align:center;box-shadow:0 25px 80px rgba(0,0,0,.48);transform:translateY(20px) scale(.88);transition:transform .48s cubic-bezier(.16,.9,.2,1.18)}.rank-celebration.show .rank-celebration-card{transform:translateY(0) scale(1)}
.rank-celebration-kicker{display:block;color:#ffe08b;font:600 10px/1 'Plus Jakarta Sans',sans-serif;letter-spacing:.14em;text-transform:uppercase}.rank-celebration-art{display:block;width:190px;max-width:78%;height:98px;object-fit:contain;margin:16px auto 9px;filter:drop-shadow(0 12px 12px rgba(0,0,0,.38));animation:rankFloat 2.8s ease-in-out infinite}.rank-celebration h2{margin:0;font:700 25px/1.15 'Sora',sans-serif}.rank-celebration p{margin:8px 0 22px;color:#d1ced4;font:400 13px/1.5 'Plus Jakarta Sans',sans-serif}.rank-celebration-continue{width:100%;min-height:46px;border:0;border-radius:14px;background:#f6eee4;color:#1d1c21;font:700 13px 'Sora',sans-serif}.rank-celebration-close{position:absolute;top:12px;right:15px;width:31px;height:31px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;transition:background .15s ease}.rank-celebration-close:hover{background:rgba(255,255,255,.24)}.rank-celebration-close svg{width:14px;height:14px;display:block}
.rank-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.rank-confetti i{position:absolute;top:-12px;left:var(--x);width:7px;height:12px;border-radius:2px;background:#ffd66b;opacity:0;transform:rotate(var(--turn));animation:confettiFall 1.8s ease-out var(--delay) forwards}.rank-confetti i:nth-child(3n){background:#e5a1c2}.rank-confetti i:nth-child(4n){background:#a6c9ff}
@keyframes rankFloat{50%{transform:translateY(-5px)}}@keyframes confettiFall{12%{opacity:1}100%{top:104%;opacity:0;transform:translateX(24px) rotate(260deg)}}
:root[data-theme="dark"] .task-celebration{background:#17171d;border-color:#393840;box-shadow:0 16px 38px rgba(0,0,0,.55)}
@media (prefers-reduced-motion:reduce){.task-celebration,.rank-celebration,.rank-celebration-card{transition:none}.rank-celebration-art,.rank-confetti i{animation:none}}
