:root{--motion-ease:cubic-bezier(.22,.8,.28,1)}
@keyframes taskbridge-fade-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes taskbridge-fade-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
@keyframes taskbridge-pulse{0%,100%{box-shadow:0 0 0 0 rgba(22,138,119,0)}50%{box-shadow:0 0 0 5px rgba(22,138,119,.12)}}
@keyframes taskbridge-number-pop{0%{transform:scale(1)}45%{transform:scale(1.06);color:var(--brand,#168a77)}100%{transform:scale(1)}}
@keyframes taskbridge-slogan-glow{0%,100%{background-position:0% 50%;opacity:.86}50%{background-position:100% 50%;opacity:1}}
.user-content>*,.admin-workspace>.page>*{animation:taskbridge-fade-up .45s var(--motion-ease) both}
.user-content> :nth-child(2),.admin-workspace>.page> :nth-child(2){animation-delay:60ms}
.user-content> :nth-child(3),.admin-workspace>.page> :nth-child(3){animation-delay:120ms}
.taskbridge-logo{animation:taskbridge-fade-in .55s var(--motion-ease) both}
.user-task-card,.claim-task-group,.wallet-income-item,.wallet-ledger-row{transition:transform .2s var(--motion-ease),box-shadow .2s var(--motion-ease),border-color .2s ease}
.user-task-card:hover,.claim-task-group:hover,.wallet-income-item:hover,.wallet-ledger-row:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(23,50,77,.08)}
.claim-countdown.urgent{animation:taskbridge-pulse 1.8s ease-in-out infinite}
.claim-countdown.expired{animation:none}
.upload-dialog[open],.withdraw-modal[open],.module-dialog[open],.asset-detail-dialog[open],.task-progress-dialog[open]{animation:taskbridge-fade-in .25s var(--motion-ease) both}
.upload-dialog progress{transition:value .25s linear}
.motion-value-changed{animation:taskbridge-number-pop .55s ease both}
.motion-item{animation:taskbridge-fade-up .4s var(--motion-ease) both;animation-delay:calc(var(--motion-index,0)*45ms)}
.brand-slogan{display:inline-block;margin:4px 0 14px;font-weight:800;letter-spacing:.04em;background:linear-gradient(100deg,#168a77,#2a6f9f,#168a77);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:taskbridge-slogan-glow 3.6s ease-in-out infinite}
.user-brand,.admin-brand{flex-direction:column;gap:0!important}
.brand-tagline{display:block;margin-top:8px;color:rgba(255,255,255,.68);font-size:11px;letter-spacing:.12em;text-align:center;white-space:nowrap}
.workspace-slogan{margin:2px 0 0;color:#168a77;font-size:11px;letter-spacing:.04em;font-weight:700;animation:taskbridge-slogan-glow 3.6s ease-in-out infinite}
.live-dot{display:inline-block;width:7px;height:7px;margin:0 6px 1px 0;border-radius:50%;background:#2bb89d;box-shadow:0 0 0 0 rgba(43,184,157,.45);animation:taskbridge-live 2s ease-out infinite;vertical-align:middle}
@keyframes taskbridge-live{0%{box-shadow:0 0 0 0 rgba(43,184,157,.45)}70%{box-shadow:0 0 0 7px rgba(43,184,157,0)}100%{box-shadow:0 0 0 0 rgba(43,184,157,0)}}
.user-hero,.hall-referral-strip{position:relative;overflow:hidden}
.user-hero::after,.hall-referral-strip::after{content:"";position:absolute;inset:-60% auto -60% -30%;width:28%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.32),transparent);transform:rotate(16deg);animation:taskbridge-sheen 5.5s ease-in-out infinite;pointer-events:none}
@keyframes taskbridge-sheen{0%,65%{left:-35%}100%{left:120%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media(max-width:780px){.workspace-slogan{display:none}.brand-tagline{font-size:10px;margin-top:5px;letter-spacing:.06em}}
