From da4ceecbd1feeac8ddb058d096040004b3347010 Mon Sep 17 00:00:00 2001 From: lccsw <805383944@qq.com> Date: Mon, 5 Dec 2022 17:41:23 +0800 Subject: [PATCH] add-sylive-2 --- .../libraries/market/Sylive2_data_entity.php | 125 ++++ common/libraries/market/Sylive2_entity.php | 167 ++++++ home/controllers/h5/market/sylive2/Act.php | 439 ++++++++++++++ home/controllers/h5/market/sylive2/Biz.php | 77 +++ home/controllers/h5/market/sylive2/Common.php | 281 +++++++++ home/controllers/h5/market/sylive2/Login.php | 159 ++++++ home/controllers/h5/market/sylive2/Stic.php | 537 ++++++++++++++++++ .../controllers/h5/market/sylive2/Ucenter.php | 210 +++++++ .../controllers/h5/market/sylive2/Welcome.php | 53 ++ home/views/h5/market/sylive2/act/index.php | 249 ++++++++ home/views/h5/market/sylive2/act/item.php | 223 ++++++++ home/views/h5/market/sylive2/act/share.php | 153 +++++ home/views/h5/market/sylive2/act/test.php | 75 +++ home/views/h5/market/sylive2/biz/index.php | 96 ++++ home/views/h5/market/sylive2/footer.php | 1 + home/views/h5/market/sylive2/header.php | 18 + .../h5/market/sylive2/hidden_wx_share.php | 18 + home/views/h5/market/sylive2/index.php | 45 ++ .../h5/market/sylive2/item/agreement.php | 20 + home/views/h5/market/sylive2/item/detail.php | 520 +++++++++++++++++ home/views/h5/market/sylive2/login.php | 160 ++++++ home/views/h5/market/sylive2/nav.php | 4 + home/views/h5/market/sylive2/nav_my.php | 4 + home/views/h5/market/sylive2/share_script.php | 60 ++ home/views/h5/market/sylive2/stic/index.php | 365 ++++++++++++ home/views/h5/market/sylive2/stic/rank.php | 109 ++++ home/views/h5/market/sylive2/stic/ranking.php | 392 +++++++++++++ home/views/h5/market/sylive2/stic/users.php | 169 ++++++ .../h5/market/sylive2/ucenter/detail.php | 234 ++++++++ .../views/h5/market/sylive2/ucenter/index.php | 73 +++ .../h5/market/sylive2/ucenter/orders.php | 78 +++ home/views/h5/market/sylive2/ucenter/win.php | 104 ++++ home/views/h5/market/sylive2/user/index.php | 320 +++++++++++ home/views/h5/market/sylive2/user/team.php | 319 +++++++++++ www/home/css/h5/market/sylive/h5.css | 2 +- 35 files changed, 5858 insertions(+), 1 deletion(-) create mode 100644 common/libraries/market/Sylive2_data_entity.php create mode 100644 common/libraries/market/Sylive2_entity.php create mode 100644 home/controllers/h5/market/sylive2/Act.php create mode 100644 home/controllers/h5/market/sylive2/Biz.php create mode 100644 home/controllers/h5/market/sylive2/Common.php create mode 100644 home/controllers/h5/market/sylive2/Login.php create mode 100644 home/controllers/h5/market/sylive2/Stic.php create mode 100644 home/controllers/h5/market/sylive2/Ucenter.php create mode 100644 home/controllers/h5/market/sylive2/Welcome.php create mode 100644 home/views/h5/market/sylive2/act/index.php create mode 100644 home/views/h5/market/sylive2/act/item.php create mode 100644 home/views/h5/market/sylive2/act/share.php create mode 100644 home/views/h5/market/sylive2/act/test.php create mode 100644 home/views/h5/market/sylive2/biz/index.php create mode 100644 home/views/h5/market/sylive2/footer.php create mode 100644 home/views/h5/market/sylive2/header.php create mode 100644 home/views/h5/market/sylive2/hidden_wx_share.php create mode 100644 home/views/h5/market/sylive2/index.php create mode 100644 home/views/h5/market/sylive2/item/agreement.php create mode 100644 home/views/h5/market/sylive2/item/detail.php create mode 100644 home/views/h5/market/sylive2/login.php create mode 100644 home/views/h5/market/sylive2/nav.php create mode 100644 home/views/h5/market/sylive2/nav_my.php create mode 100644 home/views/h5/market/sylive2/share_script.php create mode 100644 home/views/h5/market/sylive2/stic/index.php create mode 100644 home/views/h5/market/sylive2/stic/rank.php create mode 100644 home/views/h5/market/sylive2/stic/ranking.php create mode 100644 home/views/h5/market/sylive2/stic/users.php create mode 100644 home/views/h5/market/sylive2/ucenter/detail.php create mode 100644 home/views/h5/market/sylive2/ucenter/index.php create mode 100644 home/views/h5/market/sylive2/ucenter/orders.php create mode 100644 home/views/h5/market/sylive2/ucenter/win.php create mode 100644 home/views/h5/market/sylive2/user/index.php create mode 100644 home/views/h5/market/sylive2/user/team.php diff --git a/common/libraries/market/Sylive2_data_entity.php b/common/libraries/market/Sylive2_data_entity.php new file mode 100644 index 00000000..9e98efbb --- /dev/null +++ b/common/libraries/market/Sylive2_data_entity.php @@ -0,0 +1,125 @@ + 'browse', 'subscribe' => 'subscribe', 'order' => 'orderTotal','watch' => 'watch' + ]; + + public function __construct(){ + $this->ci = &get_instance(); + $this->ci->load->model('market/market_sylive_user_model', 'user_model'); + $this->ci->load->model('market/market_sylive_activity_user_model', 'act_user_model'); + $this->ci->load->model('market/market_sylive_activity_model'); + $this->ci->load->model('market/market_sylive_activity_biz_model','mdSytActivityBiz'); + $this->ci->load->model('market/market_sylive_activity_team_model','mdSytActivityTeam'); + $this->ci->load->model('market/market_sylive_activity_kpidata_model','mdSytActivityKpiData'); + $this->ci->load->model('market/market_sylive_organization_model'); + $this->ci->load->model('market/market_sylive_activity_orders_model','mdSytActivityOrders'); + $this->ci->load->model('market/market_sylive_viewlog_model'); + $this->load->model('market/market_sylive_groups_model', 'groups_model'); + $this->load->model('market/market_sylive_groups_user_model', 'groups_user_model'); + } + + /** + * @return void + */ + public function top_kpidata($groupby,$where,$order,$page=1,$page_size=20,$select='',$tagId=0){ + $total = $this->ci->mdSytActivityKpiData->count($where,$groupby); + $lists = []; + if($total){ + $rows = $this->ci->mdSytActivityKpiData->select_groupby($groupby, $where, $order, $page, $page_size, $select); + $biz_rows = $org_rows = []; + if($groupby=='cfUserId'){//顾问 + $user_ids = implode(',',array_column($rows,'cfUserId')); + if($user_ids){ + $org_rows = $this->ci->user_model->map('userId','',["userId in ($user_ids)"=>null],'','','','userId,uname as name,headimg'); + } + } + if($groupby=='bizId'){ + $biz_ids = implode(',',array_column($rows,'bizId')); + $biz_ids && $biz_rows = $this->ci->groups_model->map('groupsId','',["groupsId in ($biz_ids)"=>null],'','','','groupsId,groupsName'); + } + $num_tip = $where['kpi'] == 'order' ? '单' : '人'; + $start = $page>1 ? ($page-1)*$page_size : 0; + foreach ($rows as $key=>$val) { + $name = $tip = $headimg = $biz_name = ''; + if($groupby=='cfUserId'){ + $org = $org_rows[$val['cfUserId']] ? $org_rows[$val['cfUserId']][0] : []; + $tip = $tagId==$val['cfUserId'] ? '本人' : ''; + $name = $org['name']; + $headimg = $org['headimg']; + } + if($groupby=='bizId'){ + $biz = $biz_rows[$val['bizId']][0]; + $name = $biz['groupsName']; + $tip = $tagId==$val['bizId'] ? '本店' : ''; + } + $lists[] = [ + 'ranking' => $start+$key+1, + 'name' => $name, + 'num' => $val['t'].$num_tip, + 'headimg' => $headimg, + 'tip' => $tip, + ]; + } + } + $data = [ + 'total' => $total, + 'lists' => $lists + ]; + return $data; + } + /** + * @return void + */ + public function top_groups_user($groupby,$where,$order,$page=1,$page_size=20,$select='',$kpi,$tagId=0){ + $total = $this->ci->groups_user_model->count($where,$groupby); + $lists = []; + if($total){ + $rows = $this->ci->groups_user_model->select_groupby($groupby, $where, $order, $page, $page_size, $select); + $biz_rows = []; + if($groupby=='bizId'){ + $biz_ids = implode(',',array_column($rows,'bizId')); + $biz_ids && $biz_rows = $this->ci->groups_model->map('groupsId','',["groupsId in ($biz_ids)"=>null],'','','','groupsId,groupsName'); + } + + $start = $page>1 ? ($page-1)*$page_size : 0; + $num_tip = $kpi == 'order' ? '单' : '人'; + foreach ($rows as $key=>$val) { + $tip = $headimg = $name = ''; + if($groupby=='bizId'){ + $biz = $biz_rows[$val['bizId']][0]; + $name = $biz['groupsName']; + $tip = $tagId==$val['bizId'] ? '本店' : ''; + } + $lists[] = [ + 'ranking' => $start+$key+1, + 'name' => $name, + 'num' => $val['t'].$num_tip, + 'headimg' => $headimg, + 'tip' => $tip, + ]; + } + } + $data = [ + 'total' => $total, + 'lists' => $lists + ]; + return $data; + } + public function __get($name) + { + if ('_model' === substr($name, -6)) { + return $this->ci->$name; + } elseif ('load' == $name) { + return $this->ci->load; + } + return null; + } +} \ No newline at end of file diff --git a/common/libraries/market/Sylive2_entity.php b/common/libraries/market/Sylive2_entity.php new file mode 100644 index 00000000..b506dc17 --- /dev/null +++ b/common/libraries/market/Sylive2_entity.php @@ -0,0 +1,167 @@ + 'browse', 'subscribe' => 'subscribe', 'order' => 'orderTotal','watch' => 'watch' + ]; + + public function __construct(){ + $this->ci = &get_instance(); + $this->ci->load->model('market/market_sylive_user_model', 'user_model'); + $this->ci->load->model('market/market_sylive_activity_user_model', 'act_user_model'); + $this->ci->load->model('market/market_sylive_groups_model', 'groups_model'); + $this->ci->load->model('market/market_sylive_groups_user_model', 'groups_user_model'); + $this->ci->load->model('market/market_sys_dictionary_data_model'); + } + + /** + * 获取等级数据 + * @param $groupsId + * @param $data + * @return int + */ + public function get_group_lists($groupsId,$a_id,$data=[]){ + $row = $this->ci->groups_model->get(['groupsId'=>$groupsId,'activityId'=>$a_id],'groupsId,parentId,groupsName'); + if(!$row){ + return $data; + }else{ + array_unshift($data,$row); + if($row['parentId']){ + return $this->get_group_lists($row['parentId'],$a_id,$data); + }else{ + return $data; + } + } + } + + /** + * 添加kpi记录 + * @param $params + * @return array + */ + public function kpi_log($params) + { + if ($params['a_id'] && $params['uid'] && $params['cf_uid']) { + $user = $this->user_model->get(['userId'=>$params['cf_uid']]); + $act_user = $this->act_user_model->get(['activityId'=>$params['a_id'],'userId'=>$params['cf_uid']]); + if(!$user || !$act_user){ + return array('code' => 0, 'msg' => '顾问不存在'); + } + if(!in_array($params['kpi'],['order'])){ //订单可添加多条kpi + $re_kpi = $this->ci->mdSytActivityKpiData->get(array("activityId" => $params['a_id'], 'userId' => $params['uid'], 'kpi' => $params['kpi'])); + if ($re_kpi) {//已添加过活动kpi(访活动只记录一次用户kpi记录) + return array('code' => 0, 'msg' => '已添加过' . $params['kpi'] . '记录'); + } + } + //增加记录 + $addData = [ + 'activityId' => $params['a_id'], + 'userId' => $user['userId'], + 'cfUserId' => $act_user['userId'], + 'kpi' => $params['kpi'], + 'createTime' => time(), + 'day' => date('Y-m-d') + ]; + $act_user['bizId'] && $addData['bizId'] = $act_user['bizId']; + $act_user['levelId1'] && $addData['levelId1'] = $act_user['levelId1']; + $act_user['levelId2'] && $addData['levelId2'] = $act_user['levelId2']; + $act_user['levelId3'] && $addData['levelId3'] = $act_user['levelId3']; + $params['tagId'] && $addData['tagId'] = $params['tagId']; + $params['itemId'] && $addData['itemId'] = $params['itemId']; + $jsondata = $params['jsondata'] ? $params['jsondata'] : []; + $jsondata && $addData['jsondata'] = json_encode($jsondata, JSON_UNESCAPED_UNICODE); + $id = $this->ci->mdSytActivityKpiData->add($addData); + if (!$id) { + return array('code' => 0, 'msg' => '添加记录失败'); + } + $this->kpi_count($params['a_id'],$params['kpi'],$params['cf_uid']); + return array('code' => 1, 'msg' => '添加记录成功'); + } else { + return array('code' => 0, 'msg' => '参数错误'); + } + } + + /** + * 更新统计数据 + * @param $a_id + * @param $kpi + * @param $cf_uid + * @return array + */ + public function kpi_count($a_id,$kpi,$cf_uid){ + if($this->map_kpi_biz[$kpi] && $cf_uid && $a_id){ + $up_key = $this->map_kpi_biz[$kpi]; + $total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'cfUserId'=>$cf_uid,'kpi'=>$kpi]); + $update = [ + $up_key => $total + ]; + //更新活动用户表统计数据 + $this->ci->act_user_model->update($update,['activityId'=>$a_id,'userId'=>$cf_uid]); + //更新分组用户统计 + $this->ci->groups_user_model->update($update,['activityId'=>$a_id,'userId'=>$cf_uid]); + //更新分组统计 + $group_user = $this->groups_user_model->get(['activityId'=>$a_id,'userId'=>$cf_uid]); + if($group_user['levelId1']){ + $total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'levelId1'=>$group_user['levelId1'],'kpi'=>$kpi]); + $update = [ + $up_key => $total + ]; + $this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['levelId1']]); + } + if($group_user['levelId2']){ + $total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'levelId2'=>$group_user['levelId2'],'kpi'=>$kpi]); + $update = [ + $up_key => $total + ]; + $this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['levelId2']]); + } + if($group_user['levelId3']){ + $total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'levelId3'=>$group_user['levelId3'],'kpi'=>$kpi]); + $update = [ + $up_key => $total + ]; + $this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['levelId3']]); + } + //更新门店 + if($group_user['bizId']){ + $total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'bizId'=>$group_user['bizId'],'kpi'=>$kpi]); + $update = [ + $up_key => $total + ]; + $this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['bizId']]); + } + return ['code'=>1,'msg'=>'更新成功']; + }else{ + return ['code'=>0,'msg'=>'参数错误']; + } + } + + /** + * 获取等级字典 + * @param $a_id + * @return array + */ + public function level_disk($a_id){ + $top_group = $this->ci->groups_model->get(['activityId'=>$a_id,'parentId'=>0],'statisticsType'); + $disk = []; + if($top_group['statisticsType']){ + $where = ['dictId'=>$top_group['statisticsType']]; + $disk = $this->ci->market_sys_dictionary_data_model->map('dictDataCode','dictDataName',$where,'','','','dictDataName,dictDataCode'); + } + return $disk; + } + + public function __get($name) + { + if ('_model' === substr($name, -6)) { + return $this->ci->$name; + } elseif ('load' == $name) { + return $this->ci->load; + } + return null; + } +} diff --git a/home/controllers/h5/market/sylive2/Act.php b/home/controllers/h5/market/sylive2/Act.php new file mode 100644 index 00000000..27d5abf2 --- /dev/null +++ b/home/controllers/h5/market/sylive2/Act.php @@ -0,0 +1,439 @@ +load->model('market/market_sylive_organization_model'); + $this->load->model('market/market_sylive_activity_model'); + $this->load->model('market/market_sylive_activity_biz_model','mdSytActivityBiz'); + $this->load->model('market/market_sylive_subscribemsg_model','mdSytSubscribemsg'); + $this->load->model('market/market_sylive_activity_kpidata_model','mdSytActivityKpiData'); + $this->load->model('market/market_sylive_order_model'); + $this->load->library('market/sylive_entity'); + $this->load->library('market/sylive2_entity'); + $this->load->library('qiniu'); + $this->skey = $this->input->get('skey'); + $param = $this->myencryption->base64url_decode($this->skey); + $this->a_id = intval($param['a_id']);//活动id + } + + public function index(){ + $alert_code = $this->input->get('alert_code'); + if (!$this->a_id) { + throw new Hd_exception("参数错误", 400); + } + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $user = $this->user_model->get(['userId'=>$this->uid],'unionid,nickname,headimg'); + $timeStart = strtotime($row['timeStart']); + $info['s_time'] = time() < $timeStart ? $timeStart-time() : 0; + $info['bg'] = $row['bgImg'] ? build_qiniu_image_url($row['bgImg']) : ''; + $info['content'] = $row['introduction']; + $act_user = $this->act_user_model->get(['userId'=>$this->uid,'activityId'=>$this->a_id]); + //一次性订阅 + $re_s = $this->mdSytSubscribemsg->get(array('activityId' => $this->a_id, 'userId' => $this->uid)); + $is_show_code = false; //是否显示二维码 + if ($re_s) { + $subscribemsg = '已订阅直播'; + $p_user = []; + $act_user['channelId'] && $p_user = $this->user_model->get(['userId'=>$act_user['channelId']]); + $p_user['teamId'] && $is_show_code = true; + } else { + if(!$user['nickname'] && !$user['headimg']){ + $subscribemsg = http_host_com('home')."/h5/market/sylive2/act/userinfo?skey={$this->skey}&type=sub"; + }else{ + $this->load->config('wechat'); + $config = $this->config->item('hdy'); + $sub_redirect_url = urlencode(http_host_com('home') . '/h5/market/sylive2/act/subscribemsg?skey=' . $this->skey + . '&s_time=' . $row['timeStart']); + $subscribemsg = "https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid={$config['appid']}&scene=0&template_id={$this->template_id}&redirect_url={$sub_redirect_url}&reserved=test#wechat_redirect"; + } + } + //浏览 + $params = array('a_id' => $this->a_id, 'uid' => $this->uid,'cf_uid' => $act_user['channelId'], 'kpi' => 'browse'); + $this->sylive2_entity->kpi_log($params); + $live_status = 0; //直播未开始 + if(time()>strtotime($row['timeStart']) && time()<=strtotime($row['timeEnd'])){ //直播期间人数 + $row['liveStatus']!=1 && $this->market_sylive_activity_model->update(['liveStatus'=>1],['activityId'=>$this->a_id]); //更新直播间状态 + $live_status = 1; //直播中 + } + if(time()>strtotime($row['timeEnd'])){ //直播结束 + $row['liveStatus']!=2 && $this->market_sylive_activity_model->update(['liveStatus'=>2],['activityId'=>$this->a_id]); //更新直播间状态 + $live_status = 2; //直播结束 + } + $share_skey = "a_id=" . $this->a_id . "&cf_uid=" . $this->uid; + $info['live_status'] = $live_status; + $info['skey'] = $this->myencryption->base64url_encode($share_skey); + $info['a_id'] = $this->a_id; + $info['subscribemsg'] = $subscribemsg; + $info['statisticsurl'] = $info['shareurl'] = $info['code'] = ''; + if($act_user['groupsId']){ + $info['shareurl'] = '/h5/market/sylive2/act/share?skey='.$info['skey']; + $info['statisticsurl'] = "/h5/market/sylive2/stic?a_id={$this->a_id}"; + $info['rankingurl'] = "/h5/market/sylive2/stic/ranking?a_id={$this->a_id}"; + } + + $info['channelImg'] = build_qiniu_image_url($row['channelImg']); + $userid = $user['unionid'] ? $user['unionid'] : $this->uid; + $ts = time()*1000; + $sign = md5($this->secretkey.$userid.$this->secretkey.$ts); + if(!$user['nickname'] && !$user['headimg']){ + $info['live_url'] = http_host_com('home').'/h5/market/sylive2/act/userinfo?skey='.$this->skey; + }else{ + $info['live_url'] = "https://live.haodian.cn/watch/{$row['channelId']}?userid={$userid}&ts={$ts}&sign={$sign}"; + } + $info['my_url'] = http_host_com('home')."/h5/market/sylive2/act/userinfo?skey={$this->skey}&type=my"; + //微信分享 + $wx_info = $this->share_info($row); + $info['show_code'] = $is_show_code ? 1 : 0; + $info['alert_code'] = $alert_code ? 1 : 0; + $this->data['info'] = $info; + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->data['_title'] = $row['title']; + $this->data['skey'] = $info['skey']; + $this->show_view('h5/market/sylive2/act/index'); + } + + //获取最新订阅用户 + public function subscribemsg_lists(){ + $map_kpi_name = [ + 'browse' => '进入了直播间', 'subscribe' => '预约了直播通知' + ]; + $a_id = $this->input->get('a_id'); + $live_status = $this->input->get('live_status'); + $field = 'userId,createTime,kpi'; + $lists = []; + $where = [ + 'activityId' => $a_id, + 'kpi' => 'subscribe' + ]; + if($live_status){ + $where['kpi'] = 'browse'; + } + $rows = $this->mdSytActivityKpiData->select($where,'id desc',1,30,$field); + if($rows){ + $users = []; + $uids = implode(',',array_unique(array_column($rows,'userId'))); + if($uids){ + $where = [ + "userId in ($uids)" => null, + ]; + $users = $this->user_model->map('userId','nickname',$where,'','','','userId,nickname'); + } + foreach ($rows as $item) { + $nickname = $users[$item['userId']] ? $users[$item['userId']] : "用户{$item['userId']}"; + $lists[] = [ + 'name' => $nickname, + 'tip' => $map_kpi_name[$item['kpi']], + ]; + } + } + $data['lists'] = $lists; + $this->show_json($data,200); + } + + /** + * Notes:获取授权发送一次性订阅接口 + * Created on: 2020/11/26 17:11 + * Created by: dengbw + */ + public function subscribemsg() + { + $skey = $this->input->get('skey'); + $s_time = $this->input->get('s_time');//直播时间 + $param = $this->myencryption->base64url_decode($skey); + $a_id = intval($param['a_id']);//活动id + $action = $this->input->get('action'); + $show_code = 0; + if ($s_time && $action == "confirm") { + $add_data['activityId'] = $a_id; + $add_data['openId'] = $this->input->get('openid'); + $add_data['scene'] = $this->input->get('scene'); + $re_s = $this->mdSytSubscribemsg->get($add_data); + if (!$re_s) { + $add_data['userId'] = $this->uid; + $add_data['templateId'] = $this->input->get('template_id'); + $add_data['url'] = http_host_com('home') . "/h5/market/sylive2/act?skey=" . $this->myencryption->base64url_encode("a_id=" . $a_id);; + $add_data['timeStart'] = $s_time; + $add_data['createTime'] = time(); + $add_data['status'] = 0; + $id = $this->mdSytSubscribemsg->add($add_data); + if ($id) { + $act_user = $this->act_user_model->get(['userId'=>$this->uid,'activityId'=>$a_id]); + //订阅用户加统计 + $params = array('a_id' => $a_id, 'uid' => $this->uid,'cf_uid' => $act_user['channelId'], 'kpi' => 'subscribe'); + $this->sylive2_entity->kpi_log($params); + $p_user = []; + $act_user['channelId'] && $p_user = $this->user_model->get(['userId'=>$act_user['channelId']]); + $p_user['teamId'] && $show_code = 1; + } + } + } + $url = http_host_com('home') . "/h5/market/sylive2/act?skey={$skey}&alert_code={$show_code}"; + redirect($url); + } + + public function share(){ + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $shareImg = json_decode($row['shareImg'],true); + $shareTitle = $row['shareTitle'] ? json_decode($row['shareTitle'],true) : []; + $lists = []; + if($shareImg){ + $share_skey = "a_id=" . $this->a_id . "&cf_uid=" . $this->uid; + $share_url = http_host_com('home') . "/h5/market/sylive2/act?skey=" . $this->myencryption->base64url_encode($share_skey); + $errorCorrectionLevel = 'L'; //容错级别 + $matrixPointSize = 5; //生成图片大小 + //生成二维码图片 + $file_name = md5($share_url).'.png'; + $file_path = "temp/{$file_name}"; + if (!file_exists(FCPATH.'temp/')) { + $oldumask = umask(0); + mkdir(FCPATH.'temp/', 0777, true); + umask($oldumask); + } + QRcode::png($share_url, FCPATH.$file_path, $errorCorrectionLevel, $matrixPointSize, 1); + $res = $this->qiniu->save($file_name, file_get_contents(FCPATH.$file_path)); + if($res['url']){ + @unlink(FCPATH.$file_path); + $qr_code = build_qiniu_image_url($res['url']); + }else{ + $qr_code = '/h5/market/sylive2/myqrcode/get?url=' . $share_url; + } + foreach ($shareImg as $item) { + $img_url = build_qiniu_image_url($item); + $img_info = file_get_contents($img_url.'?imageInfo'); + if($img_info){ + $img_info = json_decode($img_info,true); + } + $lists[] = [ + "img" => $img_url, + "code" => $qr_code, + 'width' => $img_info['width'] ? $img_info['width'] : 750, + 'height' => $img_info['height'] ? $img_info['height'] : 1130, + ]; + } + } + $user = $this->user_model->get(['userId'=>$this->uid],'uname,nickname'); + $act_row = $this->act_user_model->get(['id'=>$this->act_uid],'groupsId'); + if($act_row['groupsId']){ + $group_lists = $this->sylive2_entity->get_group_lists($act_row['groupsId'],$this->a_id); + $this->data['posterTip'] = "{$group_lists[0]['groupsName']}{$user['uname']}诚挚邀请您参与"; + }else{ + $this->data['posterTip'] = "{$user['nickname']}诚挚邀请您参与"; + } + $this->data['lists'] = $lists; + $this->data['shareTitle'] = $shareTitle; + //微信分享 + $wx_info = $this->share_info($row); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->show_view('h5/market/sylive2/act/share'); + } + + public function item(){ + $skey = $this->input->get('skey'); + $param = $this->myencryption->base64url_decode($skey); + $a_id = intval($param['a_id']);//活动id + $row = $this->market_sylive_activity_model->get(['activityId'=>$a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $jsondata = json_decode($row['jsondata'],true); + $item = $jsondata['item'] ? $jsondata['item'] : []; + $is_pay = $this->market_sylive_order_model->count(['itemId'=>$a_id,'status'=>1,'userId'=>$this->uid,'type'=>0]); + if($is_pay){ + $url = http_host_com('home').'/h5/market/sylive2/ucenter/mygift?skey='.$skey; + redirect($url);exit; + } + $e_time = time() < strtotime($row['timeEnd']) ? strtotime($row['timeEnd']) - time() : 0; + $banner = $this->item_banner; + $validity = ''; + if($item['useTimeStart'] || $item['useTimeEnd']){ + $useTimeStart = date('Y-m-d',strtotime($item['useTimeStart'])); + $useTimeEnd = date('Y-m-d',strtotime($item['useTimeEnd'])); + $validity = "有效期 {$useTimeStart} - {$useTimeEnd}"; + } + $info = [ + 'title' => $item['title'] ? $item['title'] : '', + 'e_time' => $e_time, + 'price' => $item['price'] ? $item['price'] : '', + 'content' => $item['introduction'] ? $item['introduction'] : '', + 'banner' => $banner, + 'stock' => $row['stock'], + 'skey' => $skey, + 'validity' => $validity, + 'introTitle' => '权益说明', + ]; + $this->data['info'] = $info; + $this->data['_title'] = $row['title']; + //微信分享 + $wx_info = $this->share_info($row); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->show_view('h5/market/sylive2/act/item'); + } + + //支付 + public function post_pay(){ + $redis = load_cache('redis'); + $redis_obj = $redis->redis(); + $skey = $this->input->post('skey'); + $name = $this->input->post('name'); + $mobile = $this->input->post('telPhone'); + $param = $this->myencryption->base64url_decode($skey); + $a_id = intval($param['a_id']);//活动id + $row = $this->market_sylive_activity_model->get(['activityId'=>$a_id]); + if(!$row){ + $this->show_json('',400,'参数错误'); + } + $mb_key = 'SYLIVE_ITEM_AID_'.$a_id; + if(!mobile_valid($mobile)){ + $this->show_json('',400,'请输入正确手机号'); + } + $jsondata = json_decode($row['jsondata'],true); + $item = $jsondata['item'] ? $jsondata['item'] : []; + //判断是否已支付 + $o_row = $this->market_sylive_order_model->get(['itemId'=>$a_id,'status'=>1,'userId'=>$this->uid,'type'=>0]); + if($o_row){ + $this->show_json('',400,'已支付,请勿重复支付'); + } + $pay_price = $item['price']; + if($pay_price<=0){ + $this->show_json('',400,'无需支付'); + } + if($row['stock']<=0){ + $this->show_json('',400,'已售罄'); + } + $unpay = $this->market_sylive_order_model->get(['itemId'=>$a_id,'status'=>0,'userId'=>$this->uid,'expireTime>'=>time(),'type'=>0]); + if(!$unpay){ + $mb_count = $redis_obj->sCard($mb_key); //获取集合中用户数量 + if($mb_count && $mb_count>$row['stock']+10){ + $mb = $redis_obj->sMembers($mb_key); + $this->show_json('',400,'已售罄:'.json_encode($mb,JSON_UNESCAPED_UNICODE)); + } + try { + $act_user = $this->act_user_model->get(['userId'=>$this->uid,'activityId'=>$a_id]); + $p_user = []; + $act_user['channelId'] && $p_user = $this->user_model->get(['userId'=>$act_user['channelId']]); + $this->market_sylive_order_model->db->trans_begin(); + //限购一件 + $u_row = $this->market_sylive_order_model->get(['itemId'=>$a_id,'status>='=>0,'userId'=>$this->uid]); + if($u_row){ + throw new Exception('限购一件'); + } + $this->load->helper('order'); + $unpay = [ + 'sid' => create_order_no('350200','market'), + 'userId' => $this->uid, + 'itemId' => $a_id, + 'itemTitle' => $item['title'], + 'totalPrice' => $pay_price, + 'expireTime' => time()+5*60,//订单过期时间 + 'createTime' => date('Y-m-d H:i:s') + ]; + $name && $unpay['uname'] = $name; + $mobile && $unpay['mobile'] = $mobile; + $p_user['teamId'] && $unpay['cfrom'] = 1; + $oid = $this->market_sylive_order_model->add($unpay); + if(!is_numeric($oid)){ + $this->market_sylive_order_model->db->trans_rollback(); + throw new Exception('创建订单失败'); + } + $this->market_sylive_activity_model->update(['stock = stock-1' =>null],['activityId'=>$a_id,'stock>'=>0]); + $res = $this->market_sylive_activity_model->db->affected_rows(); + if(!$res){ + throw new Exception('已售罄'); + } + $this->market_sylive_order_model->db->trans_commit(); + $redis_obj->sRem($mb_key,$this->uid); //删除集合 + }catch (Exception $e){ + $redis_obj->sRem($mb_key,$this->uid); //删除集合 + $this->market_sylive_order_model->db->trans_rollback(); + $this->show_json('',400,$e->getMessage()); + } + } + $user = $this->user_model->get(['userId'=>$this->uid]); + $notify_url = http_host_com('home').'/h5/market/sylive2/notify'; + $other_data = []; + $pay_config = $this->market_sylive_activity_model->pay_config($row['mchId']); + $pay_config && $other_data['pay_config'] = $pay_config; + $result = $this->unorder($unpay['sid'],$unpay['totalPrice'],$user['openid'],$unpay['itemTitle'],$notify_url,$unpay['expireTime'],$other_data); + if(!$result['code']){ + $this->show_json('',400,$result['msg']); + } + $this->show_json($result['data'],200,'操作成功'); + } + + //获取微信用户信息 + public function userinfo(){ + $ret = $this->set_auth('',1); + if($ret){ + $update = [ + "sex" => $ret['sex'] ? 1 : 0, + ]; + $ret['nickname'] && $update['nickname'] = strval($ret['nickname']); + $ret['headimgurl'] && $update['headimg'] = strval($ret['headimgurl']); + $ret['unionid'] && $update['unionid'] = $ret['unionid']; + $this->user_model->update($update,['userId'=>$this->uid]); + } + $skey = $this->input->get('skey'); + $type = $this->input->get('type'); + if (!$skey) { + throw new Hd_exception("参数错误", 400); + } + $param = $this->myencryption->base64url_decode($skey); + $a_id = intval($param['a_id']);//活动id + if (!$a_id) { + throw new Hd_exception("参数错误", 400); + } + $row = $this->market_sylive_activity_model->get(['activityId'=>$a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + if($type=='sub'){ //订阅跳转 + $this->load->config('wechat'); + $config = $this->config->item('hdy'); + $sub_redirect_url = urlencode(http_host_com('home') . '/h5/market/sylive2/act/subscribemsg?skey=' . $skey + . '&s_time=' . $row['timeStart']); + $subscribemsg = "https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid={$config['appid']}&scene=0&template_id={$this->template_id}&redirect_url={$sub_redirect_url}&reserved=test#wechat_redirect"; + redirect($subscribemsg); + }elseif($type=='my'){ //跳转我的 + $my_url = http_host_com('home')."/h5/market/sylive2/ucenter?skey={$skey}"; + redirect($my_url); + }else{ + $user = $this->user_model->get(['userId'=>$this->uid],'unionid,nickname,headimg'); + $userid = $user['unionid'] ? $user['unionid'] : $this->uid; + $ts = time()*1000; + $sign = md5($this->secretkey.$userid.$this->secretkey.$ts); + $live_url = "https://live.haodian.cn/watch/{$row['channelId']}?userid={$userid}&ts={$ts}&sign={$sign}"; + redirect($live_url); + } + } + //进入直播间统计 + public function golive(){ + $params = $this->input->get(); + $a_id = $params['a_id']; + $row = $this->market_sylive_activity_model->get(['activityId'=>$a_id]); + if($row && time()>strtotime($row['timeStart']) && time()<=strtotime($row['timeEnd'])){ + $act_user = $this->act_user_model->get(['userId'=>$this->uid,'activityId'=>$a_id]); + $this->sylive2_entity->kpi_log(['a_id' => $a_id, 'uid' => $this->uid,'cf_uid' => $act_user['channelId'], 'kpi' => 'watch']); + $this->show_json([],200,'操作成功'); + }else{ + $this->show_json([],400,'参数错误'); + } + } +} diff --git a/home/controllers/h5/market/sylive2/Biz.php b/home/controllers/h5/market/sylive2/Biz.php new file mode 100644 index 00000000..3264055d --- /dev/null +++ b/home/controllers/h5/market/sylive2/Biz.php @@ -0,0 +1,77 @@ +data['multi_org'] = $_SESSION[self::SESSION_KEY]['multi_org'] ? 1 : 0; + $this->show_view('h5/market/sylive2/biz/index'); + } + + public function act_list(){ + $page = $this->input->get('page'); + $size = $this->input->get('size'); + !$page && $page = 1; + !$size && $size = 20; + $where = [ + 'userId' => $this->uid, + 'status' => 0, + ]; + $total = $this->groups_user_model->count($where); + $rows = $this->groups_user_model->select($where,'activityId desc',$page,$size); + $lists = []; + if($rows){ + $act_ids = implode(',',array_unique(array_column($rows,'activityId'))); + $act_rows = []; + if($act_ids){ + $where = [ + "activityId in ({$act_ids})" => null, + ]; + } + $act_ids && $act_rows = $this->market_sylive_activity_model->map('activityId','',$where,'','','','activityId,title,timeStart,timeEnd,jsondata'); + foreach ($rows as $item) { + $act = $act_rows[$item['activityId']] ? $act_rows[$item['activityId']][0] : []; + if($act){ + $jsondata = json_decode($act['jsondata'],true); + $banner = $jsondata['banner'] ? build_qiniu_image_url($jsondata['banner']) : ''; + $lists[] = [ + 'title' => $act['title'], + 'img' => $banner, + 'time' => date('Y-m-d H:i',strtotime($act['timeStart'])).'-'.date('Y-m-d H:i',strtotime($act['timeEnd'])), + 'url' => "/h5/market/sylive2/biz/userinfo?a_id={$item['activityId']}" + ]; + } + } + } + $data = [ + 'list' => $lists, + 'total' => $total + ]; + $this->show_json($data,200); + } + + //获取微信用户信息 + public function userinfo(){ + if(!$_SESSION[self::SESSION_KEY]['all_info']){ + $ret = $this->set_auth('',1); + if($ret){ + $update = [ + "sex" => $ret['sex'] ? 1 : 0, + ]; + $ret['nickname'] && $update['nickname'] = strval($ret['nickname']); + $ret['headimgurl'] && $update['headimg'] = strval($ret['headimgurl']); + $ret['unionid'] && $update['unionid'] = $ret['unionid']; + $this->user_model->update($update,['userId'=>$this->uid]); + } + $_SESSION[self::SESSION_KEY]['all_info'] =1; + } + $a_id = $this->input->get('a_id'); + $my_url = http_host_com('home')."/h5/market/sylive2/stic?a_id={$a_id}"; + redirect($my_url); + } +} \ No newline at end of file diff --git a/home/controllers/h5/market/sylive2/Common.php b/home/controllers/h5/market/sylive2/Common.php new file mode 100644 index 00000000..11a503e9 --- /dev/null +++ b/home/controllers/h5/market/sylive2/Common.php @@ -0,0 +1,281 @@ +load->model('market/market_sylive_user_model', 'user_model'); + $this->load->model('market/market_sylive_activity_user_model', 'act_user_model'); + $this->load->model('market/market_sylive_groups_model', 'groups_model'); + $this->load->model('market/market_sylive_groups_user_model', 'groups_user_model'); + $this->load->model('market/market_sylive_activity_model'); + + $this->load->library('hd_exception'); + $this->load->library('MyEncryption'); + session_start(); + if ($_SESSION[self::SESSION_KEY]) { + $this->session = $_SESSION[self::SESSION_KEY]; + $this->uid = $this->session['userId']; + $this->act_uid = $this->session['act_uid']; + } + } + + /** + * @param $view + */ + protected function show_view($view){ + $this->load->view('h5/market/sylive2/header',$this->data); + $this->load->view($view); + $this->load->view('h5/market/sylive2/footer'); + } + + /** + * @param $data + * @param int $code + * @param string $msg + * @param string $url + */ + protected function show_json($data, $code = 200, $msg = 'success', $url = '') + { + if(!isset($data['code'])){ + $data = array('data' => $data, 'code' => $code, 'msg' => $msg, 'url' => $url); + } + + exit(json_encode($data)); + } + + /** + * @param $url 回调url地址 + * @param $auth 是否信息授权 + * @return void + * @throws Hd_exception + */ + protected function set_auth($url='',$auth=0){ + $this->load->helper('url'); + $this->load->config('wechat'); + $config = $this->config->item('hdy'); + $code = $this->input->get('code'); + !$url && $url = http_host_com('home').$_SERVER['REQUEST_URI']; + $auth && $url = $_SERVER['QUERY_STRING'] ? $url."&auth={$auth}" : $url."?auth={$auth}"; + if ($code) {//授权码获取微信信息 + $auth_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$config['appid']}&secret={$config['appSecret']}&code={$code}&grant_type=authorization_code"; + $res = file_get_contents($auth_url); + $ret = json_decode($res, true); + $access_token = $ret['access_token']; + $openid = $ret['openid']; + $unionid = $ret['unionid']; + if($this->input->get('auth') && $access_token){ + $u_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN"; + $u_ret = file_get_contents($u_info_url); + $ret = json_decode($u_ret,true); + } + if(!$openid){ + debug_log("[error]# " . $res, __FUNCTION__, $this->log_dir); + throw new Hd_exception('获取用户信息失败', 400); + } + return $ret; + } elseif ($auth) {//信息授权获取用户微信昵称/头像 + $redirect_uri = urlencode($url); + $auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$config['appid']}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect&forcePopup=true"; + redirect($auth_url); + } else{//静默授权获取用户openid + $redirect_uri = urlencode($url); + $auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$config['appid']}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"; + redirect($auth_url); + } + } + //微信分享信息 + protected function share_info($act_row=[]){ + $a_id = $act_row['activityId']; + $share_skey = "a_id=" . $a_id . "&cf_uid=" . $this->uid; + $this->load->library('Jssdk'); + $jssdk = new Jssdk('liche'); + $sign_package = $jssdk->getSignPackage(); + $share = []; + if($act_row){ + //微信分享 + $share_url = http_host_com('home') . "/h5/market/sylive2/act?skey=" . $this->myencryption->base64url_encode($share_skey); + $shareTitle = $act_row['shareTitle'] ? json_decode($act_row['shareTitle'],true) : []; + $share = array( + 'title' => $act_row['title'], + "img" => $act_row['sharePhoto'] ? build_qiniu_image_url($act_row['sharePhoto']) : '', + "desc" => $shareTitle[array_rand($shareTitle)], + "url" => $share_url + ); + } + return ['sign_package' => $sign_package ,'share' => $share]; + } + + /** + * 微信下单 + * @param $trade_no + * @param $price + * @param $openid + * @param $body + * @param $notify_url + * @param $expire_time + * @param $attach + * @param $wx_type + * @param $other_data + * @return array|false + * @throws WxPayException + */ + protected function unorder($trade_no,$price,$openid,$body,$notify_url,$expire_time,$other_data=[]){ + if(!$body){return false;} + require_once APPPATH."../api/third_party/WXpay/WxPay.Api.php"; + if($other_data['pay_config'] && file_exists($other_data['pay_config'])){ + require_once $other_data['pay_config']; + }else{ + require_once APPPATH."../api/third_party/WXconfig/hdy_WxPay.Config.php"; + } + $config = new WxPayConfig(); + $wxpay = new WxPayUnifiedOrder(); + $wxpay->SetVersion('1.0'); + $wxpay->SetBody($body); //简单描述 + $other_data['attach'] && $wxpay->SetAttach($other_data['attach']); //附加信息 + $wxpay->SetNotify_url($notify_url); + $wxpay->SetOut_trade_no($trade_no); //订单号 + $wxpay->SetTotal_fee($price * 100); //支付价格 + $wxpay->SetTime_start(date("YmdHis")); //交易起始时间 + $wxpay->SetTime_expire(date('YmdHis',$expire_time)); //交易结束时间 + $wxpay->SetTrade_type("JSAPI"); //设置交易类型 + $wxpay->SetOpenid($openid); //openid + $return = WxPayApi::unifiedOrder($config, $wxpay); //统一支付 + if($return['result_code'] == 'SUCCESS') { + $wxpay_api = new WxPayJsApiPay(); + $jsApiParameters = WxPayApi::GetJsApiParameters($return, $config, $wxpay_api); + $jsApiParameters = json_decode($jsApiParameters, true); + return ['code'=>1,'data'=>$jsApiParameters,'msg'=>'下单成功']; + }else{ + $msg = $return['return_msg'] ? $return['return_msg'].$return['err_code_des'] : $return['return_msg']; + return ['code'=>0,'data'=>[],'msg'=>$msg]; + } + } +} + +class Admin extends Common{ + const WX_SESSION = "market_wx_info"; + public function __construct(){ + parent::__construct(); + } + + public function _remap($method){ + try{ + $this->session = $_SESSION[self::SESSION_KEY]; + $this->mobile = $this->session['mobile']; + if(!in_array($method,$this->white_login_method) && !$_SESSION[self::SESSION_KEY]['mobile'] && !$this->uid){ + $ret = $this->set_auth(); + $openid = $ret['openid']; + $row_wechat = $this->user_model->get(['openid' => $openid,'status'=>0,'organizationId>'=>0]); + if(!$row_wechat){ + $_SESSION[self::WX_SESSION] = $ret; + header('Location:/h5/market/sylive2/login');exit; + } + $_SESSION[self::SESSION_KEY]['mobile'] = $row_wechat['mobile']; + $org_url = http_host_com('home')."/h5/market/sylive2"; + redirect($org_url); + } + return $this->$method(); + } catch(Hd_exception $e){//处理异常 + $msg = $e->getMessage(); + $data = array('heading' => 'Warning', 'message' => $msg); + return $this->load->view('errors/html/error_404',$data); + } + } + +} + +class Wx extends Common{ + public function __construct(){ + parent::__construct(); + } + + public function _remap($method){ + try{ + if(!$this->act_uid){ + $this->session = $this->uid = ''; + } + if(!in_array($method,$this->white_login_method) && !$this->uid){ + $ret = $this->set_auth(); + $openid = $ret['openid']; + $skey = $this->input->get('skey'); + $param = $this->myencryption->base64url_decode($skey); + //找管理员角色 + $where = [ + 'activityId' => $param['a_id'], + 'status' => 0, + "userId in (select `userId` from lc_market_sylive_user where openid='{$openid}')" => null + ]; + $row_wechat = $this->groups_user_model->get($where); + if(!$row_wechat){ + $row_wechat = $this->user_model->get(['status'=>0,'openid'=>$openid]);//普通用户角色 + } + if(!$row_wechat){ //创建用户 + $add = array( + "openid" => $openid, + "sex" => $ret['sex'] ? 1 : 0, + "createTime" => date('Y-m-d H:i:s') + ); + $ret['nickname'] && $add['nickname'] = strval($ret['nickname']); + $ret['headimgurl'] && $add['headimg'] = strval($ret['headimgurl']); + $ret['unionid'] && $add['unionid'] = $ret['unionid']; + $this->uid = $this->user_model->add($add); + if (!$this->uid) { + debug_log("[error]# " . $this->mdWeixinUsers->db->last_query(), __FUNCTION__, $this->log_dir); + } + }else{ + $this->uid = $row_wechat['userId']; + } + $act_user = $this->act_user_model->get(['activityId'=>$param['a_id'],'userId'=>$this->uid]); + if(!$act_user && $param['a_id']){ + $act_data = [ + 'activityId' => $param['a_id'], + 'userId' => $this->uid, + "createTime" => date('Y-m-d H:i:s') + ]; + $row_wechat['bizId'] && $act_data['bizId'] = $row_wechat['bizId']; + $row_wechat['groupsId'] && $act_data['groupsId'] = $row_wechat['groupsId']; + $row_wechat['levelId1'] && $act_data['levelId1'] = $row_wechat['levelId1']; + $row_wechat['levelId2'] && $act_data['levelId2'] = $row_wechat['levelId2']; + $row_wechat['levelId3'] && $act_data['levelId3'] = $row_wechat['levelId3']; + if($param['cf_uid']){ + $p_act_user = $this->act_user_model->get(['userId'=>$param['cf_uid']],'userId,channelId'); + if($p_act_user['channelId']){ + $act_data['channelId'] = $p_act_user['channelId']; + }else{ + $p_act_user['groupsId'] && $act_data['channelId'] = $p_act_user['userId']; + } + $act_data['pid'] = $p_act_user['userId']; + } + $row_wechat['groupsId'] && $act_data['channelId'] = $this->uid;//管理员自己归属到自己 + $act_user['id'] = $this->act_user_model->add($act_data); + } + $_SESSION[self::SESSION_KEY]['userId'] = $this->uid; + $_SESSION[self::SESSION_KEY]['act_uid'] = $act_user['id']; + echo ("");exit; + } + return $this->$method(); + } catch(Hd_exception $e){//处理异常 + $msg = $e->getMessage(); + $data = array('heading' => 'Warning', 'message' => $msg); + return $this->load->view('errors/html/error_404',$data); + } + } +} diff --git a/home/controllers/h5/market/sylive2/Login.php b/home/controllers/h5/market/sylive2/Login.php new file mode 100644 index 00000000..f837eb0a --- /dev/null +++ b/home/controllers/h5/market/sylive2/Login.php @@ -0,0 +1,159 @@ +load->model('market/market_sylive_user_model', 'user_model'); + $this->load->library('hd_exception'); + } + + public function index(){ + if($this->input->is_ajax_request()){ + $redis = &load_cache('redis'); + $code = $this->input->post('code'); + $mobile = $this->input->post('mobile'); + $key = "sylive_login_code_".$mobile; + if(!$code || $code!=$redis->get($key)){ + $this->show_json('',400,'请输入正确的验证码'); + } + $user=$this->user_model->get(['mobile' => $mobile,'status'=>0,'organizationId>'=>0]); + if(!$user){ + $this->show_json('',400,'用户不存在'); + } + $_SESSION[self::SESSION_KEY] = ['mobile' => $user['mobile']]; + $redis->delete($key); + $this->show_json('',200,'登录成功'); + }else{ + $wx_info = $_SESSION[self::WX_SESSION]; + if($wx_info['nickname'] || $wx_info['headimgurl']){ + $data['auth_userinfo'] = true; + } + //微信分享 + $this->load->library('Jssdk'); + $jssdk = new Jssdk('liche'); + $sign_package = $jssdk->getSignPackage(); + $data['sign_package'] = $sign_package; + $this->load->view('h5/market/sylive2/login',$data); + } + } + //绑定微信openid + private function bind_openid($mobile){ + $wx_info = $_SESSION[self::WX_SESSION]; + if(!$wx_info['openid']){ + return ['code' => 0,'msg' => '不存在公众号信息,无需绑定']; + } + if(!$mobile){ + return ['code' => 0,'msg' => '参数错误']; + } + $is_bind = $this->user_model->count(["openid!=''"=>null,'status'=>0,'mobile'=>$mobile,'organizationId>'=>0]); //已被绑定 + if($is_bind){ + $row = $this->user_model->get(['mobile'=>$mobile,"openid!=''"=>null,'status'=>0]); + if($row['openid']!=$wx_info['openid']){ + return ['code' => 0,'msg' => '该公众号已存在绑定账号']; + } + } + $update = [ + 'openid' => $wx_info['openid'] + ]; + $wx_info['nickname'] && $update['nickname'] = strval($wx_info['nickname']); + $wx_info['headimgurl'] && $update['headimg'] = strval($wx_info['headimgurl']); + $wx_info['unionid'] && $update['unionid'] = $wx_info['unionid']; + $this->user_model->update($update,['mobile'=>$mobile,'status'=>0,'organizationId>'=>0]); + return ['code' => 1,'msg' => '绑定成功']; + } + //获取验证码 + public function get_code(){ + $mobile = $this->input->post('mobile'); + if(!mobile_valid($mobile)){ + $this->show_json('',400,'请输入正确的手机号码'); + } + $user=$this->user_model->get(array('mobile' => $mobile, 'status' => 0,'organizationId>=' => 0)); + + if(!$user){ + $this->show_json('',400,'用户不存在'); + } + $redis = &load_cache('redis'); + $key = "sylive_login_code_".$mobile; + $code = $redis->get($key); + if(!$code){ + $this->load->helper('string'); + $code = random_string('numeric', 4); + $redis->save($key, $code, 60*5); + } + $content = "【好店云】您的验证码为: {$code},五分钟之内有效,请勿泄露于他人,!"; + b2m_send_sms($mobile,$content); + $this->show_json('',200, '验证码已发送'); + } + + private function show_json($data, $code = 200, $msg = 'success', $url = ''){ + if(!isset($data['code'])){ + $data = array('data' => $data, 'code' => $code, 'msg' => $msg, 'url' => $url); + } + + exit(json_encode($data)); + } + + //获取微信用户信息 + public function userinfo(){ + $ret = $this->set_auth('',1); + if($ret){ + $_SESSION[self::WX_SESSION] = $ret; + $mobile = $_SESSION[self::SESSION_KEY]['mobile']; + $this->bind_openid($mobile); + $url = http_host_com('home').'/h5/market/sylive2'; + redirect($url); + } + } + public function logout(){ + $_SESSION[self::SESSION_KEY] = ''; + $this->show_json('',200, '退出成功'); + } + + /** + * @param $url 回调url地址 + * @param $auth 是否信息授权 + * @return void + * @throws Hd_exception + */ + protected function set_auth($url='',$auth=0){ + $this->load->helper('url'); + $this->load->config('wechat'); + $config = $this->config->item('hdy'); + $code = $this->input->get('code'); + !$url && $url = http_host_com('home').$_SERVER['REQUEST_URI']; + $auth && $url = $_SERVER['QUERY_STRING'] ? $url."&auth={$auth}" : $url."?auth={$auth}"; + if ($code) {//授权码获取微信信息 + $auth_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$config['appid']}&secret={$config['appSecret']}&code={$code}&grant_type=authorization_code"; + $res = file_get_contents($auth_url); + $ret = json_decode($res, true); + $access_token = $ret['access_token']; + $openid = $ret['openid']; + $unionid = $ret['unionid']; + if($this->input->get('auth') && $access_token){ + $u_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN"; + $u_ret = file_get_contents($u_info_url); + $ret = json_decode($u_ret,true); + } + if(!$openid){ + debug_log("[error]# " . $res, __FUNCTION__, $this->log_dir); + throw new Hd_exception('获取用户信息失败', 400); + } + return $ret; + } elseif ($auth) {//信息授权获取用户微信昵称/头像 + $redirect_uri = urlencode($url); + $auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$config['appid']}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect&forcePopup=true"; + redirect($auth_url); + } elseif (!$this->session) {//静默授权获取用户openid + $redirect_uri = urlencode($url); + $auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$config['appid']}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"; + redirect($auth_url); + } + } +} diff --git a/home/controllers/h5/market/sylive2/Stic.php b/home/controllers/h5/market/sylive2/Stic.php new file mode 100644 index 00000000..39236960 --- /dev/null +++ b/home/controllers/h5/market/sylive2/Stic.php @@ -0,0 +1,537 @@ +load->model('market/market_sylive_activity_kpidata_model','mdSytActivityKpiData'); + $this->load->model('market/market_sylive_items_model'); + $this->load->model('market/market_sylive_order_model'); + $this->load->model('live/Live_polyv_session_model', 'mdPolyvSession'); + $this->load->library('market/sylive_entity'); + $this->load->library('market/sylive2_entity'); + $this->load->library('market/sylive2_data_entity'); + $this->a_id = $this->input->get('a_id'); + $this->a_id && $_SESSION[self::SESSION_KEY]['a_id'] = $this->a_id; + !$this->a_id && $this->a_id = $_SESSION[self::SESSION_KEY]['a_id']; + $skey = $this->myencryption->base64url_encode("a_id=" . $this->a_id); + $this->data['act_url'] = "/h5/market/sylive2/act?skey={$skey}"; + } + + public function index(){ + $groupsId = $this->input->get('groupsId'); + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $user = $this->user_model->get(['userId'=>$this->uid],'nickname,headimg'); + $jsondata = json_decode($row['jsondata'],true); + $info['banner'] = $jsondata['banner'] ? build_qiniu_image_url($jsondata['banner']) : Sylive_entity::DF_BANNER; + $info['nickname'] = $user['nickname']; + $info['headimg'] = $user['headimg']; + $group_user = $this->groups_user_model->get(['activityId'=>$this->a_id,'userId'=>$this->uid]); + $group_lists = $this->sylive2_entity->get_group_lists($group_user['groupsId'],$this->a_id); + $info['group_name'] = implode(' ',array_column($group_lists,'groupsName')); + $info['groupsId'] = $groupsId ? $groupsId : $group_user['groupsId']; + $info['is_biz'] = $group_user['bizId'] ? 1 : 0; + $info['tab'] = time()>=strtotime($row['timeStart']) ? 2 : 1; + $this->data['info'] = $info; + //微信分享 + $wx_info = $this->share_info($row); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->show_view('h5/market/sylive2/stic/index'); + } + //预约阶段数据 + public function lists_ready(){ + $groupsId = $this->input->get('groupsId'); + $group_user = $this->groups_user_model->get(['activityId'=>$this->a_id,'userId'=>$this->uid]); + !$groupsId && $groupsId = $group_user['groupsId']; + $group_row = $this->groups_model->get(['groupsId'=>$groupsId,'activityId'=>$this->a_id]); + $disk = $this->sylive2_entity->level_disk($this->a_id); + if(!$group_user['bizId']){ + $i = $group_row['groupsLevel']+1; + for($i;$i<4;$i++){ + $where = [ + 'activityId' => $this->a_id, + 'groupsLevel' => $i + ]; + $level_total = $this->groups_model->count($where); + $title = $disk[$i] ? $disk[$i] : "{$i}级"; + $h_lists[] = ['title'=> '参与'.$title,'num'=>"{$level_total}个"]; + } + } + $where = [ + 'activityId' => $this->a_id, + 'status' => 0, + 'ifBiz>' => 0 + ]; + $biz_total = $this->groups_model->count($where); + $where = [ + 'activityId' => $this->a_id, + 'status' => 0, + 'bizId>' => 0 + ]; + $gw_total = $this->groups_user_model->count($where); + $where["userId in (select cfUserId from lc_market_sylive_activity_kpidata where activityId={$this->a_id})"] = null; + $kgw_total = $this->groups_user_model->count($where); + $h_lists[] = ['title'=>'参与门店','num'=>"{$biz_total}个"]; + $h_lists[] = ['title'=>'参与顾问','num'=>"{$gw_total}个"]; + $h_lists[] = ['title'=>'开工顾问','num'=>"{$kgw_total}个"]; + $h_lists[] = ['title'=>'开工率','num'=>$gw_total ? round($kgw_total/$gw_total*100,2)."%" : 0]; + //我的 + $where = [ + 'activityId' => $this->a_id, + 'kpi' => 'browse', + 'cfUserId' => $this->uid, + ]; + $owner_browse_count = $this->mdSytActivityKpiData->count($where); //浏览数据 + $where['kpi'] = 'subscribe'; + $owner_subscribe_count = $this->mdSytActivityKpiData->count($where); //订阅数据 + $mine = [ + ['title'=>'访问用户','num'=>"{$owner_browse_count}人",'url'=>'/h5/market/sylive2/stic/users?type=owner&kpi=browse'], + ['title'=>'预约用户','num'=>"{$owner_subscribe_count}人",'url'=>'/h5/market/sylive2/stic/users?type=owner&kpi=subscribe'], + ['title'=>'预约率','num'=>$owner_browse_count ? round($owner_subscribe_count/$owner_browse_count*100,2)."%" : 0], + ]; + $sub_lists = [ + ['title'=>'我的','lists'=>$mine], + ]; + if($group_user['bizId']){ + $where = [ + 'activityId' => $this->a_id, + 'kpi' => 'browse', + 'bizId' => $group_user['bizId'], + ]; + $biz_browse_count = $this->mdSytActivityKpiData->count($where); //浏览数据 + $where['kpi'] = 'subscribe'; + $biz_subscribe_count = $this->mdSytActivityKpiData->count($where); //订阅数据 + $biz = [ + ['title'=>'访问用户','num'=>"{$biz_browse_count}人",'url' => "/h5/market/sylive2/stic/users?type=biz&type_id={$group_user['bizId']}&kpi=browse"], + ['title'=>'预约用户','num'=>"{$biz_subscribe_count}人",'url' => "/h5/market/sylive2/stic/users?type=biz&type_id={$group_user['bizId']}&kpi=subscribe"], + ['title'=>'预约率','num'=>$biz_browse_count ? round($biz_subscribe_count/$biz_browse_count*100,2)."%" : 0], + ]; + $sub_lists[] = ['title'=>'本店','lists'=>$biz]; + } + if(!$group_row['ifBiz']){ //当前等级 + if(!$group_row['groupsLevel']){//顶级 + $b_sum = $this->groups_model->sum('browse',['groupsLevel'=>1,'activityId'=>$this->a_id]); + $sub_sum = $this->groups_model->sum('subscribe',['groupsLevel'=>1,'activityId'=>$this->a_id]); + $browse_count = $b_sum['browse'];//浏览数据 + $subscribe_count = $sub_sum['subscribe'];//订阅数据 + }else{ + $browse_count = $group_row['browse'];//浏览数据 + $subscribe_count = $group_row['subscribe'];//订阅数据 + } + $biz = [ + ['title'=>'访问用户','num'=>"{$browse_count}人"], + ['title'=>'预约用户','num'=>"{$subscribe_count}人"], + ['title'=>'预约率','num'=>$browse_count ? round($subscribe_count/$browse_count*100,2)."%" : 0], + ]; + $sub_lists[] = ['title'=>"所有大区",'lists'=>$biz]; + } + $data = [ + 'h_lists' => $h_lists, + 'sub_lists' => $sub_lists, + ]; + $this->show_json($data,200); + } + + //直播统计数据 + public function lists_live(){ + $groupsId = $this->input->get('groupsId'); + $group_user = $this->groups_user_model->get(['activityId'=>$this->a_id,'userId'=>$this->uid]); + !$groupsId && $groupsId = $group_user['groupsId']; + $group_row = $this->groups_model->get(['groupsId'=>$groupsId,'activityId'=>$this->a_id]); + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + //我的 + $where = [ + 'activityId' => $this->a_id, + 'kpi' => 'watch', + 'cfUserId' => $this->uid, + ]; + $owner_browse_count = $this->mdSytActivityKpiData->count($where); //浏览数据 + $where['kpi'] = 'order'; + $owner_subscribe_count = $this->mdSytActivityKpiData->count($where); //订阅数据 + $mine = [ + ['title'=>'观看用户','num'=>"{$owner_browse_count}人",'url'=>'/h5/market/sylive2/stic/users?type=owner&kpi=watch'], + ['title'=>'下单数','num'=>"{$owner_subscribe_count}人",'url'=>'/h5/market/sylive2/stic/users?type=owner&kpi=order'], + ['title'=>'转化率','num'=>$owner_browse_count ? round($owner_subscribe_count/$owner_browse_count*100,2)."%" : 0], + ]; + $sub_lists = [ + ['title'=>'我的','lists'=>$mine], + ]; + $total_play = $this->mdPolyvSession->sum('totalPlayDuration',['channelId'=>$row['channelId']]); + $duration = $this->mdPolyvSession->sum('duration',['channelId'=>$row['channelId']]); + $pv = $this->mdPolyvSession->sum('livePV',['channelId'=>$row['channelId']]); + $uv = $this->mdPolyvSession->sum('liveUV',['channelId'=>$row['channelId']]); + $duration = $duration['duration'] ? intval($duration['duration']/60) : "0"; + $livePV = $pv['livePV'] ? $pv['livePV'] : 0; + $avg_UV_time = $uv['liveUV'] ? intval($total_play['totalPlayDuration']/$uv['liveUV']) : 0; + $avg_UV_time = intval($avg_UV_time/60); + $h_lists = [ + ['title' => '直播时长', 'num' => "{$duration}分钟"], + ['title' => '人均观看', 'num' => "{$avg_UV_time}分钟"], + ['title' => '观看次数', 'num' => "{$livePV}次"], + ]; + if($group_user['bizId']){ //门店和顾问 + $biz_id = $group_user['bizId']; + $where = [ + 'activityId' => $this->a_id, + 'kpi' => 'watch', + 'bizId' => $biz_id, + ]; + $biz_browse_count = $this->mdSytActivityKpiData->count($where); //观看数据 + $where['kpi'] = 'order'; + $biz_subscribe_count = $this->mdSytActivityKpiData->count($where); //下单数据 + $biz = [ + ['title'=>'观看用户','num'=>"{$biz_browse_count}人",'url' => "/h5/market/sylive2/stic/users?type=biz&type_id={$biz_id}&kpi=watch"], + ['title'=>'下单数','num'=>"{$biz_subscribe_count}人",'url' => "/h5/market/sylive2/stic/users?type=biz&type_id={$biz_id}&kpi=order"], + ['title'=>'转化率','num'=>$biz_browse_count ? round($biz_subscribe_count/$biz_browse_count*100,2)."%" : 0], + ]; + $sub_lists[] = ['title'=>'本店','lists'=>$biz]; + } + if(!$group_row['ifBiz']){ //当前等级 + if(!$group_row['groupsLevel']){//顶级 + $b_sum = $this->groups_model->sum('watch',['groupsLevel'=>1,'activityId'=>$this->a_id]); + $sub_sum = $this->groups_model->sum('orderTotal',['groupsLevel'=>1,'activityId'=>$this->a_id]); + $browse_count = $b_sum['watch'];//观看数据 + $subscribe_count = $sub_sum['orderTotal'];//下单数据 + }else{ + $browse_count = $group_row['watch'];//观看数据 + $subscribe_count = $group_row['orderTotal'];//下单数据 + } + $biz = [ + ['title'=>'观看用户','num'=>"{$browse_count}人"], + ['title'=>'下单数','num'=>"{$subscribe_count}人"], + ['title'=>'转化率','num'=>$browse_count ? round($subscribe_count/$browse_count*100,2)."%" : 0], + ]; + $sub_lists[] = ['title'=>"所有大区",'lists'=>$biz]; + } + $data = [ + 'h_lists' => $h_lists, + 'sub_lists' => $sub_lists, + ]; + $this->show_json($data,200); + } + + public function event(){ + $map_kpi_name = [ + 'browse' => '浏览了活动页', 'subscribe' => '订阅了直播通知', 'order' => '直播间下单','watch' => '进入了直播间' + ]; + $page = $this->input->get('page'); + $type = $this->input->get('type'); + !$page && $page=1; + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + $group_user = $this->groups_user_model->get(['activityId'=>$this->a_id,'userId'=>$this->uid]); + $where = [ + 'activityId'=>$this->a_id, + 'bizId'=>$group_user['bizId'], + ]; + if($type==1){ //预热 + $where['createTime<='] = strtotime($row['timeStart']); + }else{ //开始 + $where['createTime>='] = strtotime($row['timeStart']); + } + $total = $this->mdSytActivityKpiData->count($where); + $lists = []; + if($total){ + $rows = $this->mdSytActivityKpiData->select($where,'id desc',$page,10,'userId,kpi,createTime'); + $users = []; + $uids = implode(',',array_unique(array_column($rows,'userId'))); + if($uids){ + $where = [ + "userId in ($uids)" => null, + ]; + $users = $this->user_model->map('userId','nickname',$where,'','','','userId,nickname'); + } + foreach ($rows as $key => $val) { + $nickname = $users[$val['userId']] ? $users[$val['userId']] : "用户{$val['userId']}"; + $lists[] = [ + 'nickname' => $nickname, + 'action' => $map_kpi_name[$val['kpi']], + 'time' => friendly_date($val['createTime']), + ]; + } + } + $data = [ + 'lists' => $lists, + 'total' => $total + ]; + $this->show_json($data,200); + } + + public function users(){ + $map_kpi_name = [ + 'browse' => '访问用户', 'subscribe' => '预约用户', 'order' => '下单数','watch' => '观看用户' + ]; + $params = $this->input->get(); + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $title = $map_kpi_name[$params['kpi']]; + $tab = [ + ['id'=>1,'title'=>'客户列表'] + ]; + if($params['type']=='biz' && $params['type_id']){ //显示顾问数据 + $tab[] = ['id'=>2,'title'=>'顾问数据']; + } + $goods = []; + if($params['kpi']=='order'){ + $where = [ + 'activityId' => $this->a_id, + 'status' => 0 + ]; + $goods = $this->market_sylive_items_model->select($where,'sort desc,itemId desc',0,0,'itemId,title'); + } + $this->data['title'] = $title; + $this->data['tab'] = $tab; + $this->data['params'] = $params; + $this->data['goods'] = $goods; + //微信分享 + $wx_info = $this->share_info($row); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->show_view('h5/market/sylive2/stic/users'); + } + + public function user_lists(){ + $params = $this->input->get(); + if($params['tabid']==2){ //顾问数据 + $this->gw_lists(); + } + $page = $params['page'] ? intval($params['page']) : 1; + $where = [ + 'type' => 0, + 'activityId' => $this->a_id, + 'kpi' => $params['kpi'], + ]; + if($params['type']=='biz'){ + $where['bizId'] = $params['type_id']; + }else{ + $where['cfUserId'] = $this->uid; + } + if($params['kpi']=='order' && $params['itemId']){ + $where["tagId in (select id from lc_market_sylive_order where itemId={$params['itemId']} and activityId={$this->a_id})"] = null; + } + $total = $this->mdSytActivityKpiData->count($where); + $lists = []; + if($total){ + $rows = $this->mdSytActivityKpiData->select($where,'id desc',$page,20,'userId,cfUserId,createTime,jsondata'); + $uids_arr = array_column($rows,'userId'); + if($params['type']=='biz'){ + $gw_uids_arr = array_column($rows,'cfUserId'); + $uids_arr = array_merge($uids_arr,$gw_uids_arr); + } + $uids = implode(',',array_unique($uids_arr)); + $users = []; + if($uids){ + $where = [ + "userId in ($uids)" => null, + ]; + $users = $this->user_model->map('userId','',$where,'','','','userId,uname,nickname,headimg'); + } + foreach ($rows as $key => $item) { + $jsondata = json_decode($item['jsondata'],true); + $user = $users[$item['userId']] ? $users[$item['userId']][0] : []; + $nickname = $user['nickname'] ? $user['nickname'] : '用户'.$user['userId']; + $headimg = $user['headimg'] ? $user['headimg'] : 'https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM483tlYWFg5RWQ1Xat94ib82prnDSicm2GHuxI49swU08N2I1aHb7B1gmicyxXF8R1BsVWahU9SiaPEzA/132'; + $cf_uname = ''; + if($params['type']=='biz'){ //店长 + $cf_user = $users[$item['cfUserId']] ? $users[$item['cfUserId']][0] : []; + $cf_uname = $cf_user['uname'] ? $cf_user['uname'] : ""; + } + $mobile = $name = ''; + if($params['kpi']=='order' && $jsondata['order_id']){ + $order = $this->market_sylive_order_model->get(['id'=>$jsondata['order_id']],'uname,mobile'); + $name = $order['uname'] ? $order['uname'] : ''; + $mobile = $order['mobile'] ? $order['mobile'] : ''; + } + $lists[] = [ + 'nickname' => $nickname, + 'name' => $name, + 'mobile' => $mobile, + 'headimg' => $headimg, + 'cf_uname' => $cf_uname, + 'time' => friendly_date($item['createTime'],'normal',1) + ]; + } + } + $data = [ + 'total' => $total, + 'lists' => $lists + ]; + $this->show_json($data,200); + } + + public function gw_lists(){ + $params = $this->input->get(); + $page = $params['page'] ? $params['page'] : 1; + $size = $params['size'] ? $params['size'] : 20; + $where = [ + 'activityId' => $this->a_id, + 'kpi' => $params['kpi'] + ]; + if($params['type']=='biz' && $params['type_id']){ + $biz_id = $params['type_id']; + $where['bizId'] = $biz_id; + } + $params['itemId'] && $where['itemId'] = $params['itemId']; + $groupby = 'cfUserId'; + $teamId = $this->uid; + $select = 'bizId as teamId2,cfUserId,count(id) as t'; + $order = 't desc,id desc'; + $res = $this->sylive2_data_entity->top_kpidata($groupby,$where,$order,$page,$size,$select,$teamId); + $lists = []; + if($res['lists']){ + foreach ($res['lists'] as $item) { + $lists[] = [ + 'nickname' => $item['name'], + 'headimg' => $item['headimg'], + 'time' => $item['num'] + ]; + } + } + $data = [ + 'total' => $res['total'], + 'lists' => $lists + ]; + $this->show_json($data,200); + } + + //分组列表 + public function group_lists(){ + $params = $this->input->get(); + $page = $params['page'] ? $params['page'] : 1; + $size = 20; + + $disk = $this->sylive2_entity->level_disk($this->a_id); + $where = [ + 'activityId' => $this->a_id, + 'parentId' => $params['groupsId'], + 'status' => 0 + ]; + $total = $this->groups_model->count($where); + $rows = $this->groups_model->select($where,'sortNumber desc',$page,$size); + $lists = []; + if($rows){ + foreach ($rows as $item) { + $count = $this->groups_model->count(['activityId'=>$this->a_id,'status'=>0,'parentId'=>$item['groupsId']]); + $lists[] = [ + 'title' => $item['groupsName'], + 'note' => $disk[$item['groupsLevel']+1] ? $disk[$item['groupsLevel']+1]:'下一级组员', + 'num' => $count, + 'url' => $item['groupsLevel']<3 ? "/h5/market/sylive2/stic?groupsId={$item['groupsId']}" : '', + ]; + } + } + $data = [ + 'total' => $total, + 'list' => $lists + ]; + $this->show_json($data,200); + } + + public function ranking(){ + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $jsondata = json_decode($row['jsondata'],true); + $info['banner'] = $jsondata['banner'] ? build_qiniu_image_url($jsondata['banner']) : Sylive_entity::DF_BANNER; + $this->data['info'] = $info; + $day_list = ['全部']; + $timeEnd = strtotime($row['timeEnd']);//直播结束往前七天 + for($i=0;$i<8;$i++){ + $day_list[] = date('Y-m-d',$timeEnd - $i*24*60*60); + } + $this->data['day_list'] = $day_list; + $groups = [ + ['value'=>0,'title'=>'选择分组'], + ]; + $group_rows = $this->groups_model->select(['activityId'=>$this->a_id,'groupsLevel'=>1,'status'=>0],'','','','groupsId,groupsName'); + if($group_rows){ + foreach ($group_rows as $item) { + $groups[] = [ + 'value' => $item['groupsId'], + 'title' => $item['groupsName'] + ]; + } + } + $this->data['groups'] = $groups; + //微信分享 + $wx_info = $this->share_info($row); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->show_view('h5/market/sylive2/stic/ranking'); + } + + public function ajax_rank(){ + $map_kpi_biz = [ + 'browse' => 'browse', 'subscribe' => 'subscribe', 'order' => 'orderTotal','watch' => 'watch' + ]; + $params = $this->input->get(); +// $title = $params['gtype']=='gw' ? '顾问' : '门店'; + $title = ''; + $title_arr = [ + 'browse' => $title.'浏览排行', + 'subscribe' => $title.'预约排行', + 'watch' => $title.'观看排行', + 'order' => $title.'订单排行' + ]; + $group_user = $this->groups_user_model->get(['activityId'=>$this->a_id,'userId'=>$this->uid]); + $page = $params['page'] ? intval($params['page']) : 1; + $size = 20; + if(strtotime($params['day'])){//根据日期排行 + $kpi = $params['kpi']; + $select = "bizId,count(id) as t"; + $where = [ + 'activityId' => $this->a_id, + 'bizId>' => 0, + 'status' => 0, + 'day' => date('Y-m-d',strtotime($params['day'])), + 'kpi' => $kpi + ]; + $params['groupIds'] && $where['levelId1'] = $params['groupIds']; + $data = $this->sylive2_data_entity->top_kpidata('bizId',$where,'t desc,id desc',$page,$size,$select,$group_user['bizId']); + }else{ + $kpi = $map_kpi_biz[$params['kpi']]; + $select = "bizId,sum({$kpi}) as t"; + $where = [ + 'activityId' => $this->a_id, + 'bizId>' => 0, + 'status' => 0 + ]; + $params['groupIds'] && $where['levelId1'] = $params['groupIds']; + $data = $this->sylive2_data_entity->top_groups_user('bizId',$where,'t desc,groupsUserId desc',$page,$size,$select,$params['kpi'],$group_user['bizId']); + } + $data['title'] = $title_arr[$params['kpi']]; + $data['url'] = "/h5/market/sylive2/stic/rank?type={$params['kpi']}&day={$params['day']}>ype={$params['gtype']}&show_day=1"; + $this->show_json($data,200); + } + + public function rank(){ + $params = $this->input->get(); + !$params['day'] && $params['day'] = '全部'; + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $day_list = ['全部']; + $timeEnd = strtotime($row['timeEnd']);//直播结束往前七天 + for($i=0;$i<8;$i++){ + $day_list[] = date('Y-m-d',$timeEnd - $i*24*60*60); + } + $this->data['day_list'] = $day_list; + $this->data['params'] = $params; + //微信分享 + $wx_info = $this->share_info($row); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->data['share'] = $wx_info['share']; + $this->show_view('h5/market/sylive2/stic/rank'); + } +} \ No newline at end of file diff --git a/home/controllers/h5/market/sylive2/Ucenter.php b/home/controllers/h5/market/sylive2/Ucenter.php new file mode 100644 index 00000000..f6fd7783 --- /dev/null +++ b/home/controllers/h5/market/sylive2/Ucenter.php @@ -0,0 +1,210 @@ +load->model('market/market_sylive_items_model'); + $this->load->model('market/market_sylive_order_model'); + $this->load->model('market/market_sylive_activity_model'); + $this->load->library('market/sylive_entity'); + $this->skey = $this->input->get('skey'); + $param = $this->myencryption->base64url_decode($this->skey); + $this->a_id = intval($param['a_id']);//活动id + $this->data['skey'] = $this->skey; + } + + public function index(){ + $params = $this->input->get(); + $row = $this->market_sylive_activity_model->get(['activityId'=>$this->a_id]); + if(!$row){ + throw new Hd_exception('参数错误',400); + } + $jsondata = json_decode($row['jsondata'],true); + $lists = []; + + $lists[] = ['title'=>'我的权益','url'=>"/h5/market/sylive2/ucenter/orders?skey={$params['skey']}"]; + $lists[] = ['title'=>'我的抽奖','url'=>"/h5/market/sylive2/ucenter/win?skey={$params['skey']}"]; + $jsondata['serviceLink'] && $lists[] = ['title'=>'联系客服','url'=>$jsondata['serviceLink']]; + + $user = $this->user_model->get(['userId'=>$this->uid],'unionid,nickname,headimg'); + $info = [ + 'title' => $user['nickname'], + 'logo' => $user['headimg'], + 'list' => $lists + ]; + $this->data['info'] = $info; + $this->data['params'] = $params; + $this->show_view('h5/market/sylive2/ucenter/index'); + } + + //我的抽奖 + public function win(){ + $this->show_view('h5/market/sylive2/ucenter/win'); + } + + public function ajax_win(){ + $params = $this->input->get(); + $page = $params['page'] ? $params['page'] : 1; + $size = $params['size'] ? $params['size'] : 20; + $where = [ + 'activityId' => $this->a_id, + 'userId' => $this->uid, + 'win' => 1 + ]; + $total = $this->market_sylive_order_model->count($where);; + $lists = []; + if($total){ + $rows = $this->market_sylive_order_model->select($where,'id desc',$page,$size,'id,sid,winType'); + foreach ($rows as $key => $val) { + $winType = $this->market_sylive_order_model->winTypeAry($this->a_id,$val['winType']); + $lists[] = [ + 'id' => $val['id'], + 'img' => $winType['img'], + 'title' => $winType['tag'], + 'goods' => $winType['title'] + ]; + } + } + $data = [ + 'total' => $total, + 'lists' => $lists + ]; + $this->show_json($data,200); + } + //我的订单 + public function orders(){ + $this->show_view('h5/market/sylive2/ucenter/orders'); + } + + //订单详情 + public function detail(){ + $oid = $this->input->get('id'); + $order = $this->market_sylive_order_model->get(['id'=>$oid,'userId' => $this->uid]); + if(!$order){ + throw new Hd_exception('参数错误',400); + } + $item = $this->market_sylive_items_model->get(['itemId'=>$order['itemId']]); + $validity = ''; + if($item['useStart'] || $item['useEnd']){ + $useTimeStart = date('Y-m-d',strtotime($item['useStart'])); + $useTimeEnd = date('Y-m-d',strtotime($item['useEnd'])); + $validity = "有效期 {$useTimeStart} - {$useTimeEnd}"; + } + $order_jsondata = json_decode($order['jsondata'],true); + $order = [ + 'id' => $order['id'], + 'uname' => $order['uname'] ? $order['uname'] : '', + 'utel' => $order['mobile'] ? $order['mobile'] : '', + 'slogan' => '尊享您的直播好礼', + 'valid_time' => $validity, + 'sid' => $order['sid'], + 'c_time' => date('Y-m-d H:i:s'), + 'region' => $order_jsondata['address']['region'] ? $order_jsondata['address']['region'] : '', + 'detail' => $order_jsondata['address']['detail'] ? $order_jsondata['address']['detail'] : '' + ]; + $if_pid = 0; + $ac_user = $this->act_user_model->get(['userId'=>$this->uid,'activityId'=>$this->a_id],'channelId'); + $ac_user['channelId'] && $pid_user = $this->user_model->get(['userId'=>$ac_user['channelId']],'uname,organizationId,mobile,headimg'); + $logo = $gw_tel = $gw_slogan = $gw_title = ''; + if($ac_user['channelId'] && $pid_user['organizationId']>0){ + $group_id = $this->sylive_entity->get_level($pid_user['organizationId']); + if($group_id==3){ //顾问 + $if_pid = 1; + $where = [ + "organizationId in (select parentId from lc_market_sylive_organization where organizationId={$pid_user['organizationId']})" => null + ]; + $org = $this->market_sylive_organization_model->get($where); + }elseif($group_id==2){ //店长 + $if_pid = 1; + $where = [ + "organizationId" => $pid_user['organizationId'] + ]; + $org = $this->market_sylive_organization_model->get($where); + } + $gw_title = $pid_user['uname']; + $gw_slogan = $org['organizationName']; + $gw_tel = $pid_user['mobile']; + $logo = $pid_user['headimg']; + } + $info = [ + 'bg' => "https://qs.haodian.cn/web/images/project/H5-ShiYu/mine-bg.jpg", + 'logo' => $logo, + 'if_pid' => $if_pid, + 'title' => $gw_title, + 'slogan' => $gw_slogan, + 'cust_tel' => $gw_tel, + 'introTitle' => '权益说明', + 'content' => $item['descrip'] ? $item['descrip'] : '', + 'order' => $order, + 'skey' => $this->data['skey'], + 'ifAddress' => $item['ifAddress'] + ]; + $this->data['info'] = $info; + $this->show_view('h5/market/sylive2/ucenter/detail'); + } + + public function ajax_order(){ + $params = $this->input->get(); + $page = $params['page'] ? $params['page'] : 1; + $size = $params['size'] ? $params['size'] : 20; + $where = [ + 'activityId' => $this->a_id, + 'userId' => $this->uid, + 'type' => 0, + 'status' => 1 + ]; + $total = $this->market_sylive_order_model->count($where); + $lists = []; + if($total){ + $rows = $this->market_sylive_order_model->select($where,'id desc',$page,$size); + $item_ids = implode(',',array_unique(array_column($rows,'itemId'))); + $item_rows = []; + if($item_ids){ + $item_rows = $this->market_sylive_items_model->map('itemId','',["itemId in ({$item_ids})"],'',0,0,'itemId,imgs'); + } + foreach ($rows as $val) { + $item = $item_rows[$val['itemId']] ? $item_rows[$val['itemId']][0] : []; + $imgs = json_decode($item['imgs'],true); + $img = $imgs['banner'][0] ? build_qiniu_image_url($imgs['banner'][0]) : ''; + $lists[] = [ + 'sid' => $val['sid'], + 'img' => $img, + 'title' => $val['itemTitle'], + 'time' => date('Y.m.d H:i:s',strtotime($val['createTime'])), + 'price' => $val['totalPrice'], + 'url' => "/h5/market/sylive2/ucenter/detail?skey={$this->skey}&id={$val['id']}" + ]; + } + } + $data = [ + 'total' => $total, + 'lists' => $lists + ]; + $this->show_json($data,200); + } + + //修改地址 + public function edit_address(){ + $params = $this->input->post(); + if(!$params['region']||!$params['address']){ + $this->show_json([],400,'参数错误'); + } + $order = $this->market_sylive_order_model->get(['userId'=>$this->uid,'status'=>1,'id'=>$params['id']]); + if(!$order){ + $this->show_json([],400,'订单不存在'); + } + $jsondata = json_decode($order['jsondata'],true); + $jsondata['address']['region'] = $params['region']; + $jsondata['address']['detail'] = $params['address']; + $update = [ + 'jsondata' => json_encode($jsondata,JSON_UNESCAPED_UNICODE) + ]; + $this->market_sylive_order_model->update($update,['id'=>$order['id']]); + $this->show_json([],200,'保存成功'); + } +} diff --git a/home/controllers/h5/market/sylive2/Welcome.php b/home/controllers/h5/market/sylive2/Welcome.php new file mode 100644 index 00000000..614f14dc --- /dev/null +++ b/home/controllers/h5/market/sylive2/Welcome.php @@ -0,0 +1,53 @@ +load->model('market/market_sylive_organization_model'); + $this->load->library('market/sylive_entity'); + } + + public function index(){ + $where = [ + 'mobile' => $this->mobile, + 'organizationId>' => 0, + 'status' => 0 + ]; + $gu_rows = $this->user_model->select($where,'userId desc','','','userId,mobile,organizationId'); + if(count($gu_rows)>1){ //多个机构 + $org_lists = []; + foreach ($gu_rows as $key => $val) { + $levl_rows = $this->sylive_entity->get_level_lists($val['organizationId']); + $levl_top = $levl_rows[0]; + $temp = [ + 'logo' => $levl_top['logo'] ? build_qiniu_image_url($levl_top['logo']) : '', + 'url' => "/h5/market/sylive2/welcome/org?org_id={$levl_top['organizationId']}&userId={$val['userId']}" + ]; + + $org_lists[$temp['organizationId']] = $temp; + } + $_SESSION[self::SESSION_KEY]['multi_org'] = 1; + $this->data['org_lists'] = $org_lists; + //微信分享 + $wx_info = $this->share_info(); + $this->data['sign_package'] = $wx_info['sign_package']; + $this->show_view('h5/market/sylive2/index'); + }else{ //只存在一个机构 + $levl_rows = $this->sylive_entity->get_level_lists($gu_rows[0]['organizationId']); + $levl_top = $levl_rows[0]; + $org_url = http_host_com('home')."/h5/market/sylive2/welcome/org?org_id={$levl_top['organizationId']}&userId={$gu_rows[0]['userId']}"; + redirect($org_url); + } + } + //登录机构 + public function org(){ + $this->session['org_id'] = $this->input->get('org_id'); + $this->session['userId'] = $this->input->get('userId'); + $_SESSION[self::SESSION_KEY] = $this->session; + $org_url = http_host_com('home')."/h5/market/sylive2/biz"; + redirect($org_url); + } +} diff --git a/home/views/h5/market/sylive2/act/index.php b/home/views/h5/market/sylive2/act/index.php new file mode 100644 index 00000000..7bba1c18 --- /dev/null +++ b/home/views/h5/market/sylive2/act/index.php @@ -0,0 +1,249 @@ + +
+
+
+ +
+ +
+
+ + # +
{{item.title}}
+
+
+ # +
{{item.title}}
+
+ + + + +
+
+
+ + # +
我的
+
+ +
+ + +
+
+ + +
+
+
+ {{item.name}} + {{item.tip}} +
+
+ {{item.name}} + {{item.tip}} +
+
+ +
+ +
+
+
+
+
+
+
+ 看直播,好礼享不停! +
+
添加【东风EV官方企微号】
+
+ 了解更多惊喜内幕! +
+
+
+ +
+
+ # + 长按识别二维码添加 +
+
+ + +
+
+
+ +
+ + +load->view('h5/market/sylive/share_script')?> + diff --git a/home/views/h5/market/sylive2/act/item.php b/home/views/h5/market/sylive2/act/item.php new file mode 100644 index 00000000..66f46d8e --- /dev/null +++ b/home/views/h5/market/sylive2/act/item.php @@ -0,0 +1,223 @@ + +
+
+ +
+
+
+
+ # +
+
+
+
+
+
#
+ +
+
+
{{info.title}}
+
{{info.validity}}
+
+ ¥ + {{info.price}} +
+
+
+
{{info.introTitle}}
+
+
+
+ +
+ +
活动已结束
+
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+ +
+
+ + +
+
+
+
+ + +load->view('h5/market/sylive/share_script')?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/act/share.php b/home/views/h5/market/sylive2/act/share.php new file mode 100644 index 00000000..dc47623f --- /dev/null +++ b/home/views/h5/market/sylive2/act/share.php @@ -0,0 +1,153 @@ + + + +
+
+
+
+
+
+
+ +
{{posterTip}}
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ + 长按图片保存到手机发送给好友 +
+
+
+
+ +
+ +load->view('h5/market/sylive/share_script')?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/act/test.php b/home/views/h5/market/sylive2/act/test.php new file mode 100644 index 00000000..90ccaea3 --- /dev/null +++ b/home/views/h5/market/sylive2/act/test.php @@ -0,0 +1,75 @@ + +
+
+
+ + + + +
+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/biz/index.php b/home/views/h5/market/sylive2/biz/index.php new file mode 100644 index 00000000..069beb9e --- /dev/null +++ b/home/views/h5/market/sylive2/biz/index.php @@ -0,0 +1,96 @@ + +
+
+
+ +
+ + # +
{{item.title}}
+
{{item.time}}
+
+ +
暂无数据
+
请稍等...
+
我们是有底线的
+
+
+
+
+ + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/footer.php b/home/views/h5/market/sylive2/footer.php new file mode 100644 index 00000000..62d09b82 --- /dev/null +++ b/home/views/h5/market/sylive2/footer.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/header.php b/home/views/h5/market/sylive2/header.php new file mode 100644 index 00000000..76dbb404 --- /dev/null +++ b/home/views/h5/market/sylive2/header.php @@ -0,0 +1,18 @@ + + + + + + + + <?=$_title?> + + + + + + + + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/hidden_wx_share.php b/home/views/h5/market/sylive2/hidden_wx_share.php new file mode 100644 index 00000000..98e8144b --- /dev/null +++ b/home/views/h5/market/sylive2/hidden_wx_share.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/index.php b/home/views/h5/market/sylive2/index.php new file mode 100644 index 00000000..e97f7181 --- /dev/null +++ b/home/views/h5/market/sylive2/index.php @@ -0,0 +1,45 @@ + +
+
+
+
请选择机构登录
+
您的账号存在多个机构
+
+
+
+ + + +
+
+ + +load->view('h5/market/sylive2/hidden_wx_share')?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/item/agreement.php b/home/views/h5/market/sylive2/item/agreement.php new file mode 100644 index 00000000..2ea0ef2c --- /dev/null +++ b/home/views/h5/market/sylive2/item/agreement.php @@ -0,0 +1,20 @@ + +
+
+
+
+
+
+
+
+ +
+
+
+ + + +
返回
+
+
+ \ No newline at end of file diff --git a/home/views/h5/market/sylive2/item/detail.php b/home/views/h5/market/sylive2/item/detail.php new file mode 100644 index 00000000..fa956b08 --- /dev/null +++ b/home/views/h5/market/sylive2/item/detail.php @@ -0,0 +1,520 @@ + + + + + +
+
+ +
+
+
+
+ # +
+
+
+
+
+
#
+ +
+
+
{{info.title}}
+
{{info.validity}}
+
+ ¥ + {{info.price}} +
+
+
+
+
+ {{info.introTitle}} +
+
+
+
+
+ +
+ + +
活动已结束
+
+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+ {{codeTx}} +
+
+ + + +
+
+ + 《{{info.protocolTitle}}》 +
+
+ +
+
+
+
+
+
+
+
+
支付成功
+
请输入您的收货地址
+
+ + +
+
+ +
+
+
+ 确认 +
+ +
+
+
+
+ + +load->view('h5/market/sylive/share_script')?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/login.php b/home/views/h5/market/sylive2/login.php new file mode 100644 index 00000000..6511b360 --- /dev/null +++ b/home/views/h5/market/sylive2/login.php @@ -0,0 +1,160 @@ + + + + + + + + <?=$_title?> + + + + + + + + + +
+
+
+
+
+
手机号登录
+
欢迎使用好店云-私域直播系统
+
+
+
+ +
+
+ +
{{codeTx}}
+
+ + +
+
+
+
powered by haodian.cn
+
+
+
+ + +load->view('h5/market/sylive2/hidden_wx_share')?> + + + diff --git a/home/views/h5/market/sylive2/nav.php b/home/views/h5/market/sylive2/nav.php new file mode 100644 index 00000000..b67dbf01 --- /dev/null +++ b/home/views/h5/market/sylive2/nav.php @@ -0,0 +1,4 @@ + + +
首页
+
\ No newline at end of file diff --git a/home/views/h5/market/sylive2/nav_my.php b/home/views/h5/market/sylive2/nav_my.php new file mode 100644 index 00000000..e60e0aff --- /dev/null +++ b/home/views/h5/market/sylive2/nav_my.php @@ -0,0 +1,4 @@ + + +
我的
+
\ No newline at end of file diff --git a/home/views/h5/market/sylive2/share_script.php b/home/views/h5/market/sylive2/share_script.php new file mode 100644 index 00000000..d87850a6 --- /dev/null +++ b/home/views/h5/market/sylive2/share_script.php @@ -0,0 +1,60 @@ + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/stic/index.php b/home/views/h5/market/sylive2/stic/index.php new file mode 100644 index 00000000..df8c0180 --- /dev/null +++ b/home/views/h5/market/sylive2/stic/index.php @@ -0,0 +1,365 @@ + +
+
+
+
+
+
+ +
+
{{info.nickname}}·{{info.group}}
+
+ +
+ + + 活动 + +
+ +
+
+
+
+ +
+
+ + +
+ + +
+ + +
+ +
直播结算后6小时同步数据
+ + + +
+ +
+
+ + +
+
+ +
{{item.title}}
+
+ {{item.note}} + {{item.num}} + +
+
+
+ +
暂无数据
+
请稍等...
+
我们是有底线的
+
+
+ + +
+
+ +
+
+
+
+ {{item.nickname}} + {{item.action}} +
+
{{item.time}}
+
+
+ +
暂无数据
+
请稍等...
+
我们是有底线的
+
+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/stic/rank.php b/home/views/h5/market/sylive2/stic/rank.php new file mode 100644 index 00000000..b6800913 --- /dev/null +++ b/home/views/h5/market/sylive2/stic/rank.php @@ -0,0 +1,109 @@ + +
+
+
+
+ + + + +
+
+
+
+ # + {{item.ranking}} + {{item.name}} + {{item.tip}} +
+
{{item.num}}
+
+
+ +
暂无数据
+
请稍等...
+
我们是有底线的
+
+
+
+
+ + +load->view('h5/market/sylive/share_script')?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/stic/ranking.php b/home/views/h5/market/sylive2/stic/ranking.php new file mode 100644 index 00000000..d6ab112c --- /dev/null +++ b/home/views/h5/market/sylive2/stic/ranking.php @@ -0,0 +1,392 @@ + +
+
+
+ +
+
+
+
+ +
+
+ + +
+
+
+ +
+ + +
+
+ +
暂时无数据
+
+ +
+
+ +
+ + +
+
+ +
暂时无数据
+
+ +
+ + +
+ +
+
+ +
+ + +
+
+ +
暂时无数据
+
+ +
+
+ +
+ + +
+
+ +
暂时无数据
+
+
+ +
+ + + +
+
+ + + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/stic/users.php b/home/views/h5/market/sylive2/stic/users.php new file mode 100644 index 00000000..2a7c2ca2 --- /dev/null +++ b/home/views/h5/market/sylive2/stic/users.php @@ -0,0 +1,169 @@ + +
+
+
+ + + +
+
+
+ # + {{item.nickname}} +
+
{{item.cf_uname}}
+
+
+
+ {{item.name}} {{item.mobile}} +
+
{{item.time}}
+
+
+ +
+
+ # + {{item.nickname}} +
+
{{item.cf_uname}} {{item.time}}
+
+ + +
暂无数据
+
请稍等...
+
我们是有底线的
+
+
+
+ load->view('h5/market/sylive2/nav');?> +
+ + +load->view('h5/market/sylive/share_script')?> + diff --git a/home/views/h5/market/sylive2/ucenter/detail.php b/home/views/h5/market/sylive2/ucenter/detail.php new file mode 100644 index 00000000..e93730f4 --- /dev/null +++ b/home/views/h5/market/sylive2/ucenter/detail.php @@ -0,0 +1,234 @@ + + + + + +
+
+
+
+
订单号 {{info.order.sid}}
+
{{info.order.c_time}}
+
+
+
{{info.order.uname}}·{{info.order.utel}}
+ +
+ +
+
{{info.order.slogan}}
+
{{info.order.valid_time}}
+
+
+
+ +
+ {{info.title}} + 专属顾问 +
+
{{info.slogan}}
+ + 拨打电话 + +
+
+
{{info.introTitle}}
+
+
+
+ load->view('h5/market/sylive2/nav_my') ?> + +
+
+
+
+
+
请输入您的收货地址
+
+ + +
+
+ +
+
+
+ 确认 +
+ +
+
+
+ +
+ +load->view('h5/market/sylive2/share_script')?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/ucenter/index.php b/home/views/h5/market/sylive2/ucenter/index.php new file mode 100644 index 00000000..0ab247c2 --- /dev/null +++ b/home/views/h5/market/sylive2/ucenter/index.php @@ -0,0 +1,73 @@ + +
+
+
+
+ # +
{{info.title}}
+
尊享您的直播好礼
+
+ +
+ + +
首页
+
+
+ + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/ucenter/orders.php b/home/views/h5/market/sylive2/ucenter/orders.php new file mode 100644 index 00000000..746357e5 --- /dev/null +++ b/home/views/h5/market/sylive2/ucenter/orders.php @@ -0,0 +1,78 @@ + +
+
+
+ +
+ load->view('h5/market/sylive2/nav_my') ?> +
+ + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/ucenter/win.php b/home/views/h5/market/sylive2/ucenter/win.php new file mode 100644 index 00000000..69ef89d5 --- /dev/null +++ b/home/views/h5/market/sylive2/ucenter/win.php @@ -0,0 +1,104 @@ + +
+
+
+
+ +
+
{{item.title}}
+ # +
+
{{item.goods}}
+
*抽奖礼品需提车后才能享受
+
+ +
暂无数据
+
请稍等...
+
我们是有底线的
+
+
+
+ load->view('h5/market/sylive2/nav_my') ?> + + + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/user/index.php b/home/views/h5/market/sylive2/user/index.php new file mode 100644 index 00000000..5de15778 --- /dev/null +++ b/home/views/h5/market/sylive2/user/index.php @@ -0,0 +1,320 @@ + +
+
+
+
+
+ # + {{info.title}} +
+
+
+
+ +
+
+
+
+ +
+
+
{{item.uname}}·{{item.mobile}}
+
+ # + {{item.wxuname}} +
+
暂未绑定微信
+
+
+ 修改 + | + 删除 + | + 启用 + 禁用 +
+
+ +
+ +
暂无数据
+
请稍等... +
+
我们是有底线的
+
+
+
+ +
+
+ + 绑定微信后,信息无法修改 +
+ 新增顾问 +
+ load->view('h5/market/sylive/nav') ?> +
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+
确认删除{{list[delIndex].uname}}"吗?"
+
+ 确定 + 取消 +
+
+
+
+ +
+
+
+
+
+ {{list[ableIndex].status==1?'确认启用':'确认禁用'}}{{list[ableIndex].uname}}"吗?" +
+
+ 确定 + 取消 +
+
+
+
+ +
+ + +load->view('h5/market/sylive/hidden_wx_share') ?> + \ No newline at end of file diff --git a/home/views/h5/market/sylive2/user/team.php b/home/views/h5/market/sylive2/user/team.php new file mode 100644 index 00000000..09a1e09e --- /dev/null +++ b/home/views/h5/market/sylive2/user/team.php @@ -0,0 +1,319 @@ + +
+
+
+
+
+ # + {{info.title}} +
+
+
+
+ +
+
+
+
+ +
+
+
{{item.uname}}·{{item.mobile}}
+
+ # + {{item.wxuname}} +
+
暂未绑定微信
+
+
+ 修改 + | + 删除 + | + 启用 + 禁用 +
+
+ +
+ +
暂无数据
+
请稍等... +
+
我们是有底线的
+
+
+
+ load->view('h5/market/sylive/nav') ?> +
+
+ + 绑定微信后,信息无法修改 +
+ 新增团员 +
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+
确认删除{{list[delIndex].uname}}"吗?"
+
+ 确定 + 取消 +
+
+
+
+ +
+
+
+
+
+ {{list[ableIndex].status==1?'确认启用':'确认禁用'}}{{list[ableIndex].uname}}"吗?" +
+
+ 确定 + 取消 +
+
+
+
+ +
+ + +load->view('h5/market/sylive/hidden_wx_share') ?> + \ No newline at end of file diff --git a/www/home/css/h5/market/sylive/h5.css b/www/home/css/h5/market/sylive/h5.css index 86526c90..96817b64 100644 --- a/www/home/css/h5/market/sylive/h5.css +++ b/www/home/css/h5/market/sylive/h5.css @@ -4,4 +4,4 @@ * Licensed under the MIT license - http://opensource.org/licenses/MIT * * Copyright (c) 2019 Daniel Eden - */@-webkit-keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}@keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;transform-origin:center bottom}@-webkit-keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}@keyframes pulse{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scale3d(1,1,1)}}@keyframes rubberBand{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}@keyframes shake{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}@keyframes headShake{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}.swing{transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}@keyframes tada{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}@keyframes wobble{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{11.1%,from,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{11.1%,from,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;transform-origin:center}@-webkit-keyframes heartBeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}@keyframes heartBeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}.heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}@keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInDown{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInDownBig{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInLeftBig{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInRight{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInRightBig{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInUp{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInUpBig{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:.2;transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:.2;transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}@keyframes flipInX{from{transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}@keyframes flipInY{from{transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}@keyframes lightSpeedIn{from{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateIn{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInDownLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInDownRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInUpLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInUpRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{from{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}@keyframes jackInTheBox{from{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes rollIn{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInUp{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (print),(prefers-reduced-motion:reduce){.animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}}.bds-1-ddd{border:#ddd 1px solid}.bds-4-ddd{border:#ddd .533vw solid}.bds-1-fff{border:#fff 1px solid}.bds-1-f6f6f6{border:#f6f6f6 1px solid}.bts-1-ddd{border-top:#ddd 1px solid}.bls-1-ddd{border-left:#ddd 1px solid}.brs-1-ddd{border-right:#ddd 1px solid}.bbs-1-ddd{border-bottom:#ddd 1px solid}.bds-1-eee{border:#eee 1px solid}.bds-1-eee{border:#eee 1px solid}.bts-1-eee{border-top:#eee 1px solid}.bls-1-eee{border-left:#eee 1px solid}.brs-1-eee{border-right:#eee 1px solid}.bbs-1-eee{border-bottom:#eee 1px solid}.brs-1-999{border-right:#999 1px solid}.bds-2-ff9393{border:#ff9393 .267vw solid}.bbs-1-aaa{border-bottom:#aaa 1px solid}.bbs-1-e4bc93{border-bottom:#e4bc93 1px solid}.bds-1-2fff{border:#2fff 1px solid}.bds-1-bbb{border:#bbb 1px solid}.bts-3-d2daff{border-top:#d2daff .4vw solid}.bls-1-c9c9c9{border-left:#c9c9c9 1px solid}.bts-20-f9f9f9{border-top:#f9f9f9 2.667vw solid}.bbs-1-fff{border-bottom:#fff 1px solid}.bbs-1-f8f4df{border-bottom:#f8f4df 1px solid}.bts-20-f2f2f2{border-top:#f2f2f2 2.667vw solid}.bds-1-ffe3af{border:#ffe3af 1px solid}.bts-1-f6b37f{border-top:#f6b37f 1px solid}.bds-1-f6b07d{border:#f6b07d 1px solid}.last-b-none:last-child{border-bottom:none}.border-none{border:none}.inner5{padding:.667vw}.inner10{padding:1.333vw}.inner20{padding:2.667vw}.inner30{padding:4vw}.inner40{padding:5.333vw}.inner50{padding:6.667vw}.ulib-r0{border-radius:0!important}.ulib-r5{border-radius:.667vw}.ulib-r10{border-radius:1.333vw}.ulib-rt20{border-top-left-radius:2.667vw;border-top-right-radius:2.667vw}.ulib-r20{border-radius:2.667vw}.ulib-rb20{border-bottom-left-radius:2.667vw;border-bottom-right-radius:2.667vw}.ulib-r750{border-radius:100vw}.ulib-rl750{border-top-left-radius:100vw;border-bottom-left-radius:100vw}.ml0{margin-left:0}.mt0{margin-top:0}.mr0{margin-right:0}.mb0{margin-bottom:0}.pl0{padding-left:0}.pt0{padding-top:0}.pr0{padding-right:0}.pb0{padding-bottom:0}.ml5{margin-left:.667vw}.mt5{margin-top:.667vw}.mr5{margin-right:.667vw}.mb5{margin-bottom:.667vw}.pl5{padding-left:.667vw}.pt5{padding-top:.667vw}.pr5{padding-right:.667vw}.pb5{padding-bottom:.667vw}.ml10{margin-left:1.333vw}.mt10{margin-top:1.333vw}.mr10{margin-right:1.333vw}.mb10{margin-bottom:1.333vw}.pl10{padding-left:1.333vw}.pt10{padding-top:1.333vw}.pr10{padding-right:1.333vw}.pb10{padding-bottom:1.333vw}.ml15{margin-left:2vw}.mt15{margin-top:2vw}.mr15{margin-right:2vw}.mb15{margin-bottom:2vw}.pl15{padding-left:2vw}.pt15{padding-top:2vw}.pr15{padding-right:2vw}.pb15{padding-bottom:2vw}.ml20{margin-left:2.667vw}.mt20{margin-top:2.667vw}.mr20{margin-right:2.667vw}.mb20{margin-bottom:2.667vw}.pl20{padding-left:2.667vw}.pt20{padding-top:2.667vw}.pr20{padding-right:2.667vw}.pb20{padding-bottom:2.667vw}.ml25{margin-left:3.333vw}.mt25{margin-top:3.333vw}.mr25{margin-right:3.333vw}.mb25{margin-bottom:3.333vw}.pl25{padding-left:3.333vw}.pt25{padding-top:3.333vw}.pr25{padding-right:3.333vw}.pb25{padding-bottom:3.333vw}.ml30{margin-left:4vw}.mt30{margin-top:4vw}.mr30{margin-right:4vw}.mb30{margin-bottom:4vw}.pl30{padding-left:4vw}.pt30{padding-top:4vw}.pr30{padding-right:4vw}.pb30{padding-bottom:4vw}.ml35{margin-left:4.667vw}.mt35{margin-top:4.667vw}.mr35{margin-right:4.667vw}.mb35{margin-bottom:4.667vw}.pl35{padding-left:4.667vw}.pt35{padding-top:4.667vw}.pr35{padding-right:4.667vw}.pb35{padding-bottom:4.667vw}.ml40{margin-left:5.333vw}.mt40{margin-top:5.333vw}.mr40{margin-right:5.333vw}.mb40{margin-bottom:5.333vw}.pl40{padding-left:5.333vw}.pt40{padding-top:5.333vw}.pr40{padding-right:5.333vw}.pb40{padding-bottom:5.333vw}.ml45{margin-left:6vw}.mt45{margin-top:6vw}.mr45{margin-right:6vw}.mb45{margin-bottom:6vw}.pl45{padding-left:6vw}.pt45{padding-top:6vw}.pr45{padding-right:6vw}.pb45{padding-bottom:6vw}.ml50{margin-left:6.667vw}.mt50{margin-top:6.667vw}.mr50{margin-right:6.667vw}.mb50{margin-bottom:6.667vw}.pl50{padding-left:6.667vw}.pt50{padding-top:6.667vw}.pr50{padding-right:6.667vw}.pb50{padding-bottom:6.667vw}.ml55{margin-left:7.333vw}.mt55{margin-top:7.333vw}.mr55{margin-right:7.333vw}.mb55{margin-bottom:7.333vw}.pl55{padding-left:7.333vw}.pt55{padding-top:7.333vw}.pr55{padding-right:7.333vw}.pb55{padding-bottom:7.333vw}.ml60{margin-left:8vw}.mt60{margin-top:8vw}.mr60{margin-right:8vw}.mb60{margin-bottom:8vw}.pl60{padding-left:8vw}.pt60{padding-top:8vw}.pr60{padding-right:8vw}.pb60{padding-bottom:8vw}.ml65{margin-left:8.667vw}.mt65{margin-top:8.667vw}.mr65{margin-right:8.667vw}.mb65{margin-bottom:8.667vw}.pl65{padding-left:8.667vw}.pt65{padding-top:8.667vw}.pr65{padding-right:8.667vw}.pb65{padding-bottom:8.667vw}.ml70{margin-left:9.333vw}.mt70{margin-top:9.333vw}.mr70{margin-right:9.333vw}.mb70{margin-bottom:9.333vw}.pl70{padding-left:9.333vw}.pt70{padding-top:9.333vw}.pr70{padding-right:9.333vw}.pb70{padding-bottom:9.333vw}.pl80{padding-left:10.667vw}.pt80{padding-top:10.667vw}.pr80{padding-right:10.667vw}.pb80{padding-bottom:10.667vw}.pl90{padding-left:12vw}.pt90{padding-top:12vw}.pr90{padding-right:12vw}.pb90{padding-bottom:12vw}.pl100{padding-left:13.333vw}.pt100{padding-top:13.333vw}.pr100{padding-right:13.333vw}.pb100{padding-bottom:13.333vw}.pl110{padding-left:14.667vw}.pt110{padding-top:14.667vw}.pr110{padding-right:14.667vw}.pb110{padding-bottom:14.667vw}.pl120{padding-left:16vw}.pt120{padding-top:16vw}.pr120{padding-right:16vw}.pb120{padding-bottom:16vw}.pl130{padding-left:17.333vw}.pt130{padding-top:17.333vw}.pr130{padding-right:17.333vw}.pb130{padding-bottom:17.333vw}.pl140{padding-left:18.667vw}.pt140{padding-top:18.667vw}.pr140{padding-right:18.667vw}.pb140{padding-bottom:18.667vw}.pl150{padding-left:20vw}.pt150{padding-top:20vw}.pr150{padding-right:20vw}.pb150{padding-bottom:20vw}.pl200{padding-left:26.667vw}.pt200{padding-top:26.667vw}.pr200{padding-right:26.667vw}.pb200{padding-bottom:26.667vw}.pl210{padding-left:28vw}.pt210{padding-top:28vw}.pr210{padding-right:28vw}.pb210{padding-bottom:28vw}.pl220{padding-left:29.333vw}.pt220{padding-top:29.333vw}.pr220{padding-right:29.333vw}.pb220{padding-bottom:29.333vw}.ml1{margin-left:1px}.mt1{margin-top:1px}.mr1{margin-right:1px}.mb1{margin-bottom:1px}.ml130{margin-left:17.333vw}.mt130{margin-top:17.333vw}.mr130{margin-right:17.333vw}.mb130{margin-bottom:17.333vw}.ml70{margin-left:9.333vw}.mt70{margin-top:9.333vw}.mr70{margin-right:9.333vw}.mb70{margin-bottom:9.333vw}.ml75{margin-left:10vw}.mt75{margin-top:10vw}.mr75{margin-right:10vw}.mb75{margin-bottom:10vw}.ml80{margin-left:10.667vw}.mt80{margin-top:10.667vw}.mr80{margin-right:10.667vw}.mb80{margin-bottom:10.667vw}.ml90{margin-left:12vw}.mt90{margin-top:12vw}.mr90{margin-right:12vw}.mb90{margin-bottom:12vw}.ml95{margin-left:12.667vw}.mt95{margin-top:12.667vw}.mr95{margin-right:12.667vw}.mb95{margin-bottom:12.667vw}.ml100{margin-left:13.333vw}.mt100{margin-top:13.333vw}.mr100{margin-right:13.333vw}.mb100{margin-bottom:13.333vw}.ml110{margin-left:14.667vw}.mt110{margin-top:14.667vw}.mr110{margin-right:14.667vw}.mb110{margin-bottom:14.667vw}.ml140{margin-left:18.667vw}.mt140{margin-top:18.667vw}.mr140{margin-right:18.667vw}.mb140{margin-bottom:18.667vw}.ml160{margin-left:21.333vw}.mt160{margin-top:21.333vw}.mr160{margin-right:21.333vw}.mb160{margin-bottom:21.333vw}.ml170{margin-left:22.667vw}.mt170{margin-top:22.667vw}.mr170{margin-right:22.667vw}.mb170{margin-bottom:22.667vw}.ml180{margin-left:24vw}.mt180{margin-top:24vw}.mr180{margin-right:24vw}.mb180{margin-bottom:24vw}.ml200{margin-left:26.667vw}.mt200{margin-top:26.667vw}.mr200{margin-right:26.667vw}.mb200{margin-bottom:26.667vw}.ml210{margin-left:28vw}.mt210{margin-top:28vw}.mr210{margin-right:28vw}.mb210{margin-bottom:28vw}.ml230{margin-left:30.667vw}.mt230{margin-top:30.667vw}.mr230{margin-right:30.667vw}.mb230{margin-bottom:30.667vw}.ml260{margin-left:34.667vw}.mt260{margin-top:34.667vw}.mr260{margin-right:34.667vw}.mb260{margin-bottom:34.667vw}.ml280{margin-left:37.333vw}.mt280{margin-top:37.333vw}.mr280{margin-right:37.333vw}.mb280{margin-bottom:37.333vw}.ml310{margin-left:41.333vw}.mt310{margin-top:41.333vw}.mr310{margin-right:41.333vw}.mb310{margin-bottom:41.333vw}.ml180{margin-left:24vw}.mt180{margin-top:24vw}.mr180{margin-right:24vw}.mb180{margin-bottom:24vw}.ml430{margin-left:57.333vw}.mt430{margin-top:57.333vw}.mr430{margin-right:57.333vw}.mb430{margin-bottom:57.333vw}.btn{display:inline-block;font-size:2vw;text-align:center;border:none;vertical-align:middle;cursor:pointer;transition:all .15s ease 0s}.btn:active{box-shadow:inset 0 .4vw .667vw rgba(0,0,0,.125)}.bg-fff-op30{background-color:rgba(255,255,255,.3)}.bg-fff-op95{background-color:rgba(255,255,255,.95)}.bg-000-op10{background-color:rgba(0,0,0,.1)}.bg-000-op50{background-color:rgba(0,0,0,.5)}.bg-000-op60{background-color:rgba(0,0,0,.6)}.bg-000-op80{background-color:rgba(0,0,0,.8)}.bg-fa{background-color:#fafafa}.bg-f5{background-color:#f5f5f5}.bg-f6{background-color:#f6f6f6}.bg-f7{background-color:#f7f7f7}.bg-f8{background-color:#f8f8f8}.bg-f9{background-color:#f9f9f9}.color-000{color:#000}.bg-000{background-color:#000}.color-333{color:#333}.bg-333{background-color:#333}.color-555{color:#555}.bg-555{background-color:#555}.color-666{color:#666}.bg-666{background-color:#666}.color-aaa{color:#aaa}.bg-aaa{background-color:#aaa}.color-888{color:#888}.bg-888{background-color:#888}.color-999{color:#999}.bg-999{background-color:#999}.color-1a1a1a{color:#1a1a1a}.bg-1a1a1a{background-color:#1a1a1a}.color-aaa{color:#aaa}.bg-aaa{background-color:#aaa}.color-bbb{color:#bbb}.bg-bbb{background-color:#bbb}.color-ccc{color:#ccc}.bg-ccc{background-color:#ccc}.color-ddd{color:#ddd}.bg-ddd{background-color:#ddd}.color-eee{color:#eee}.bg-eee{background-color:#eee}.color-fff{color:#fff}.bg-fff{background-color:#fff}.color-ff0000{color:red}.bg-ff0000{background-color:red}.color-fe9538{color:#fe9538}.bg-fe9538{background-color:#fe9538}.color-ff5a5a{color:#ff5a5a}.bg-ff5a5a{background-color:#ff5a5a}.color-fccba0{color:#fccba0}.bg-fccba0{background-color:#fccba0}.color-fff5ec{color:#fff5ec}.bg-fff5ec{background-color:#fff5ec}.color-ad4635{color:#ad4635}.bg-ad4635{background-color:#ad4635}.color-00a2ff{color:#00a2ff}.bg-00a2ff{background-color:#00a2ff}.color-c4302c{color:#c4302c}.bg-c4302c{background-color:#c4302c}.color-dfb48a{color:#dfb48a}.bg-dfb48a{background-color:#dfb48a}.color-e4bc93{color:#e4bc93}.bg-e4bc93{background-color:#e4bc93}.color-ffa85a{color:#ffa85a}.bg-ffa85a{background-color:#ffa85a}.clear:after,.clear:before{content:"";display:table}.clear:after{clear:both}.clear{zoom:1}.fl{float:left}.fr{float:right}.fn-clear:after,.fn-clear:before{content:"";display:table}.fn-clear:after{clear:both}.fn-clear{zoom:1}.fn-fl{float:left}.fn-fr{float:right}.fn-flex{display:flex;flex-flow:row;align-items:stretch}.fn-flex-item{display:block;flex:1}.fn-flex-item[flexsize="2"]{flex:2}.fn-flex-item[flexsize="3"]{flex:3}.fn-flex-item[flexsize="4"]{flex:4}.fn-flex-item[flexsize="5"]{flex:5}.fn-flex-item[flexsize="6"]{flex:6}.fn-flex-item[flexsize="7"]{flex:7}.fn-flex-item[flexsize="8"]{flex:8}.fn-flex-item[flexsize="9"]{flex:9}.fn-flex-itemfixed{flex:0 0 auto}.fn-flex-between{justify-content:space-between}.fn-flex-wrap{flex-wrap:wrap}.fn-flex-around{justify-content:space-around}.fn-flex-middle{align-items:center}.fn-flex-center{justify-content:center}.block{display:block}.inline-block{display:inline-block}.fn-hide{display:none}.overflowhidden{overflow:hidden}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.top-0{top:0}.left-0{left:0}.bottom-0{bottom:0}.right-0{right:0}.z-index--1{z-index:-1!important}.z-index-0{z-index:0}.z-index-1{z-index:1}.z-index-2{z-index:2}.z-index-3{z-index:3}.z-index-4{z-index:4}.z-index-10{z-index:10}.box-center-middle{top:50%;left:50%;transform:translate(-50%,-50%)}.box-middle{top:50%;transform:translate(0,-50%)}.box-center{left:50%;transform:translate(-50%,0)}.box-border{box-sizing:border-box}.wp20{width:20%;box-sizing:border-box}.wp25{width:25%;box-sizing:border-box}.wp33{width:33%;box-sizing:border-box}.wp40{width:40%;box-sizing:border-box}.wp45{width:45%;box-sizing:border-box}.wp48{width:48%;box-sizing:border-box}.wp49{width:49%;box-sizing:border-box}.wp50{width:50%;box-sizing:border-box}.wp60{width:60%!important;box-sizing:border-box}.wp65{width:65%!important;box-sizing:border-box}.wp70{width:70%!important;box-sizing:border-box}.wp80{width:80%!important;box-sizing:border-box}.wp90{width:90%;box-sizing:border-box}.wp100{width:100%;box-sizing:border-box}.w100vw{width:100vw}.h100vh{height:100vh}.transition-all{transition:all ease .2s}.op90{opacity:.9}.op70{opacity:.7}.op30{opacity:.3}.op20{opacity:.2}.op0{opacity:0}.bg-size-contain{background-size:contain}.bg-size-cover{background-size:cover}.bg-size-fullwidth{background-size:100% auto}.bg-size-fullheight{background-size:auto 100%}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-pos-top{background-position:top center}.bg-pos-bottom{background-position:bottom center}.bg-pos-center{background-position:center}.box-shadow-darkGray{box-shadow:0 0 1.333vw rgba(0,0,0,.15)}.box-shadow-lightGray{box-shadow:0 0 2.667vw rgba(0,0,0,.08)}.box-shadow-green{box-shadow:0 0 2.667vw rgba(55,190,77,.15)}.box-shadow-darkGreen{box-shadow:0 0 2.667vw rgba(55,190,77,.25)}.line-height-11{line-height:1.1}.line-height-13{line-height:1.3}.line-height-15{line-height:1.5}.line-height-17{line-height:1.7}.line-height-18{line-height:1.8}.line-height-20{line-height:2}.icon-jiazai{display:inline-block;-webkit-animation:rotate linear 1.2s infinite;animation:rotate linear 1.2s infinite}@-webkit-keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.text-nowrap{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-underline{text-decoration:underline}.text-through{text-decoration:line-through}.text-middle{vertical-align:middle}.text-lighter{font-weight:400}.text-bold{font-weight:600}.text-normal{font-weight:400}.text-break{word-break:break-all;word-wrap:break-word}.space-nowrap{white-space:nowrap}.space-normal{white-space:normal}.space-pre-line{white-space:pre-line}.text-italic{font-style:italic}.letter-spacing-5{letter-spacing:.667vw}.line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.font-12{font-size:1.6vw}.font-14{font-size:1.867vw}.font-16{font-size:2.133vw}.font-18{font-size:2.4vw}.font-20{font-size:2.667vw}.font-22{font-size:2.933vw}.font-24{font-size:3.2vw}.font-26{font-size:3.467vw}.font-28{font-size:3.733vw}.font-30{font-size:4vw}.font-32{font-size:4.267vw}.font-34{font-size:4.533vw}.font-36{font-size:4.8vw}.font-38{font-size:5.067vw}.font-40{font-size:5.333vw}.font-42{font-size:5.6vw}.font-44{font-size:5.867vw}.font-46{font-size:6.133vw}.font-48{font-size:6.4vw}.font-50{font-size:6.667vw}.font-52{font-size:6.933vw}.font-54{font-size:7.2vw}.font-56{font-size:7.467vw}.font-58{font-size:7.733vw}.font-60{font-size:8vw}.font-62{font-size:8.267vw}.font-64{font-size:8.533vw}.font-66{font-size:8.8vw}.font-68{font-size:9.067vw}.font-70{font-size:9.333vw}.font-72{font-size:9.6vw}.font-74{font-size:9.867vw}.font-76{font-size:10.133vw}.font-78{font-size:10.4vw}.font-80{font-size:10.667vw}.font-70{font-size:9.333vw}.font-80{font-size:10.667vw}.font-100{font-size:13.333vw}@font-face{font-family:iconfont;src:url(https://qs.haodian.cn/web/images/project/H5-ShiYu/iconfont/iconfont.woff2?t=1667356005021) format("woff2"),url(https://qs.haodian.cn/web/images/project/H5-ShiYu/iconfont/iconfont.woff?t=1667356005501) format("woff"),url(https://qs.haodian.cn/web/images/project/H5-ShiYu/iconfont/iconfont.ttf?t=16673560055024) format("truetype")}.iconfont{font-family:iconfont!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-dizhi:before{content:"\e610"}.icon-zengjia:before{content:"\e8c8"}.icon-guanli:before{content:"\e6bd"}.icon-sousuo:before{content:"\e6be"}.icon-xinxi:before{content:"\e600"}.icon-tuichu:before{content:"\e66a"}.icon-084tuichu:before{content:"\e659"}.icon-time:before{content:"\e6bc"}.icon-shouye:before{content:"\e750"}.icon-zhibo:before{content:"\e633"}.icon-quyu:before{content:"\e67c"}.icon-dingdan:before{content:"\e639"}.icon-gengduo:before{content:"\e60c"}.icon-jiazai:before{content:"\eb7b"}.icon-wode:before{content:"\e6b8"}.icon-qiehuan:before{content:"\e6b9"}.icon-shuju:before{content:"\e6ba"}.icon-fenxiang:before{content:"\e6bb"}.icon-huodong:before{content:"\e6b6"}.icon-mendian:before{content:"\e6b7"}.imgsize-18X18{width:2.4vw;height:2.4vw}.imgsize-24X24{width:3.2vw;height:3.2vw}.imgsize-30X30{width:4vw;height:4vw}.imgsize-32X32{width:4.267vw;height:4.267vw}.imgsize-35X35{width:4.667vw;height:4.667vw}.imgsize-40X40{width:5.333vw;height:5.333vw}.imgsize-42X42{width:5.6vw;height:5.6vw}.imgsize-60X60{width:8vw;height:8vw}.imgsize-90X20{width:12vw;height:2.667vw}.imgsize-90X90{width:12vw;height:12vw}.imgsize-120X120{width:16vw;height:16vw}.imgsize-130X30{width:17.333vw;height:4vw}.imgsize-130X130{width:17.333vw;height:17.333vw}.imgsize-160X160{width:21.333vw;height:21.333vw}.imgsize-180X180{width:24vw;height:24vw}.imgsize-185X170{width:24.667vw;height:22.667vw}.imgsize-290X255{width:38.667vw;height:34vw}.imgsize-360X360{width:48vw;height:48vw}.imgsize-630X180{width:84vw;height:24vw}.imgsize-630X340{width:84vw;height:45.333vw}.imgsize-750X680{width:100vw;height:90.667vw}@-webkit-keyframes mDialogFadeIn{from{opacity:0}to{opacity:1}}@keyframes mDialogFadeIn{from{opacity:0}to{opacity:1}}.mDialogFadeIn{-webkit-animation-name:mDialogFadeIn;animation-name:mDialogFadeIn}@-webkit-keyframes mDialogFadeOut{from{opacity:1}to{opacity:0}}@keyframes mDialogFadeOut{from{opacity:1}to{opacity:0}}.mDialogFadeOut{-webkit-animation-name:mDialogFadeOut;animation-name:mDialogFadeOut}@-webkit-keyframes mDialogZoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes mDialogZoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.mDialogZoomIn{-webkit-animation-name:mDialogZoomIn;animation-name:mDialogZoomIn}@-webkit-keyframes mDialogZoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes mDialogZoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.mDialogZoomOut{-webkit-animation-name:mDialogZoomOut;animation-name:mDialogZoomOut}@-webkit-keyframes mDialogBigIn{0%{opacity:0;transform:scale(1.2,1.2)}100%{opacity:1;transform:scale(1,1)}}@keyframes mDialogBigIn{0%{opacity:0;transform:scale(1.2,1.2)}100%{opacity:1;transform:scale(1,1)}}.mDialogBigIn{-webkit-animation-name:mDialogBigIn;animation-name:mDialogBigIn}@-webkit-keyframes mDialogBigOut{0%{opacity:1}100%{opacity:0;transform:scale(1.2,1.2)}}@keyframes mDialogBigOut{0%{opacity:1}100%{opacity:0;transform:scale(1.2,1.2)}}.mDialogBigOut{-webkit-animation-name:mDialogBigOut;animation-name:mDialogBigOut}.mDialog-layer-container{visibility:hidden;position:fixed;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;box-sizing:border-box}.mDialog-layer-container *{box-sizing:border-box}.mDialog-layer-container.mDialog-layer-container-full>.mDialog-layer-title{border-radius:0}.mDialog-layer-container.mDialog-layer-container-full>.mDialog-layer-main{border-radius:0}.mDialog-layer-container.mDialog-layer-container-full>.mDialog-layer-btns{border-radius:0}.mDialog-layer-title{border-radius:2.6667vw 2.6667vw 0 0;background:#f5f5f5;clear:both;border-bottom:1px solid #d5d5d5;padding:2.6667vw;overflow:hidden;font-size:4.8vw}.mDialog-layer-main{word-break:break-all;word-wrap:break-word;overflow:hidden;font-size:4.2667vw}.mDialog-layer-main:after{content:"";display:table;clear:both}.mDialog-layer-main.mDialog-layer-main-full>div{height:100%;overflow:hidden}.mDialog-layer-main>div{position:relative}.mDialog-layer-btns{clear:both;border-top:1px solid #e8e8e8;background:#fff;border-radius:0 0 2.6667vw 2.6667vw;display:flex}.mDialog-layer-btns>.mDialog-btn{flex:1;display:block;text-align:center;position:relative;color:#007aff;font-size:4.8vw;padding:2.6667vw 0}.mDialog-layer-btns>.mDialog-btn:after{content:"";position:absolute;left:0;top:0;width:1px;height:100%;border-left:1px solid #d5d5d5;color:#d5d5d5}.mDialog-layer-btns>.mDialog-btn:active{background-color:rgba(0,0,0,.05)}.mDialog-layer-btns>.mDialog-btn:first-child:after{border-left:0}.mDialog-close{position:absolute;width:8.667vw;height:8.667vw;overflow:hidden;right:0;top:0;margin-top:-4.3333vw;margin-right:-4.3333vw;border-radius:100%;background-color:#000}.mDialog-close:before{transform:rotate(45deg);content:"";position:absolute;top:50%;left:1.3333vw;right:1.3333vw;background:#fff;height:.8vw;margin-top:-.4vw;border-radius:1.0667vw}.mDialog-close:after{transform:rotate(-45deg);content:"";position:absolute;top:50%;left:1.3333vw;right:1.3333vw;background:#fff;height:.8vw;margin-top:-.4vw;border-radius:1.0667vw}.mDialog-shade{position:fixed;left:0;top:0;right:0;bottom:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}.mDialog-shade.in{-webkit-animation-name:mDialogFadeIn;animation-name:mDialogFadeIn}.mDialog-shade.out{-webkit-animation-name:mDialogFadeOut;animation-name:mDialogFadeOut}.mDialog-default-section{background:#fff;font-size:4.2667vw;padding:2.6667vw}.mDialog-msg-section{background-color:rgba(0,0,0,.9);border-radius:2.6667vw;padding:4vw;color:#fff}@-webkit-keyframes line-spin-fade-loader{50%{opacity:.3}100%{opacity:1}}@keyframes line-spin-fade-loader{50%{opacity:.3}100%{opacity:1}}.mDialog-loading-section{background-color:rgba(0,0,0,.7);border-radius:2vw;padding:4vw 8vw;overflow:hidden}.mDialog-loading-section .loading-txt{font-size:4.2667vw;color:#fff;text-align:center;margin-top:2.6667vw;white-space:nowrap}.mDialog-loading-section .loading-icon{position:relative;width:16.533vw;height:16.533vw;margin:0 auto}.mDialog-loading-section .loading-icon>div{background-color:#fff;border-radius:.5333vw;-webkit-animation-fill-mode:both;animation-fill-mode:both;position:absolute;width:1.0667vw;height:4.8vw;margin-left:-.5333vw}.mDialog-loading-section .loading-icon>div:nth-child(1){top:11.733vw;left:50%;-webkit-animation:line-spin-fade-loader 1.2s .12s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .12s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(2){top:10.7173vw;left:10.7173vw;transform:rotate(-45deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .24s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .24s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(3){top:8.533vw;left:11.733vw;transform-origin:top center;transform:rotate(-90deg);-webkit-animation:line-spin-fade-loader 1.2s .36s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .36s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(4){top:5.816vw;left:11.733vw;transform:rotate(-135deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .48s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .48s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(5){top:0;left:50%;-webkit-animation:line-spin-fade-loader 1.2s .6s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .6s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(6){top:5.816vw;left:5.816vw;transform-origin:top center;transform:rotate(135deg);-webkit-animation:line-spin-fade-loader 1.2s .72s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .72s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(7){top:8.2667vw;left:4.8vw;margin-left:-.5333vw;transform:rotate(90deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .84s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .84s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(8){top:10.7173vw;left:5.816vw;margin-left:-.5333vw;transform:rotate(45deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .96s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .96s infinite ease-in-out}.mDialog-loading-section.loading-notext{padding:8vw}.mDialog-confirm-section{background:#fff;padding:5.333vw 4vw;border-radius:2.6667vw 2.6667vw 0 0}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}.clearfix:after{content:"";display:table;clear:both}input:focus,select:focus,textarea:focus{outline:0}em{font-style:normal}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}a{text-decoration:none;color:#333}body,button,select,textarea{font-family:"微软雅黑",Tahoma,Arial,Helvetica,sans-serif}html{width:100%;background-color:#fff;height:100%;overflow:hidden}body{background-color:#fff;height:100%;overflow:hidden}img{max-width:100%}#app{position:relative;z-index:1;height:100%;overflow:scroll}.container{width:100%;min-height:100vh}.login input.checkbox-input{width:4.267vw;height:4.267vw;vertical-align:-.267vw}.orderTip{position:absolute;top:-.267vw;right:-9.6vw;width:26.667vw;height:8.667vw;padding-top:2.4vw;line-height:6.667vw;transform:rotate(45deg)}.orderTip2{position:absolute;top:-1.467vw;right:-9.2vw;width:26.667vw;height:11.733vw;padding-top:3.067vw;line-height:9.333vw;transform:rotate(45deg)}.player{width:100vw;height:56.667vw}.winInfo-swiper,.winInfo-swiper .swiper-slide{height:7.467vw;line-height:7.467vw}.tab-menu{padding:1.333vw 2vw;color:#666}.tab-menu.active{color:#1a1a1a}.glider{position:absolute;bottom:0;width:10.667vw;height:.533vw;background:#1a1a1a;z-index:0;transition:.25s ease-out;border-radius:750rpx}.glider-0{transform:translatex(120%)}.glider-1{transform:translatex(450%)}.w-50{width:6.667vw}.top--60{top:-8vw}.h-63{height:8.4vw}.h-260{height:34.667vw}.h-290{height:38.667vw}.h-750{height:100vw}.line-height-63{line-height:8.4vw}.bottom-opt{position:fixed;right:5.333vw;bottom:26.667vw;width:12.8vw;height:12.8vw;z-index:3}.goods-banner .swiper-pagination-fraction{top:69.333vw;right:0;left:auto;width:20vw}.goods-banner .swiper-pagination-fraction .swiper-pagination-current{font-size:4.8vw}.goods-con{top:-12vw}.rich-text-img img{max-width:100%;height:auto!important}.uinfo{top:18vw}.uinfoadd{padding:.8vw .8vw .8vw 1.333vw;background-image:linear-gradient(90deg,#edc9a3,#d9ac80)}.odslogan{top:64.667vw}.notice-shadow{position:absolute;left:0;right:0;bottom:-8vw;height:8vw;background-color:#fff;z-index:2}.notice{position:absolute;left:4vw;bottom:-8vw;-webkit-animation-name:noticeac;animation-name:noticeac;-webkit-animation-duration:4s;animation-duration:4s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-play-state:running;animation-play-state:running;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.introTitle::after{content:"";position:absolute;left:0;bottom:0;right:0;height:50%;background-color:#d1d1d1;z-index:0}.tx-shadow-e5::after{content:"";position:absolute;left:0;bottom:0;right:0;height:50%;background-color:#e5e5e5;z-index:0}.con-180{width:24vw}.con-250{width:33.333vw}.con-270{width:36vw}.con-290{width:38.667vw}.con-340{width:45.333vw}.height-60{height:8vw}.height-70{height:9.333vw}.height-350{height:46.667vw}.height-500{height:66.667vw}.height-710{height:94.667vw}.height-1200{height:160vw}.select-more{padding:.4vw;border:#ddd 1px solid;background-color:#fff;color:#666}.actitle{max-width:78%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vertical10{vertical-align:1.333vw}.coupon1-con{background-repeat:repeat-y;background-size:100% auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAADCAIAAADEEUtaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrs1FEVABAQAEEnFZX0oZJWqHHvmYmwHxtntsKvYmwRIKe7elUBICeDBkjqCTAAq8cE0XkA84IAAAAASUVORK5CYII=)}.coupon1-con::after,.coupon1-con::before{content:" ";display:block;position:absolute;left:0;right:0;height:2.667vw;background-repeat:no-repeat;background-size:100% 100%}.coupon1-con::before{top:-2.4vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAAUCAYAAABVoO4uAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA6BJREFUeNrs3V1IU2EcBvDnnW1+57dmuYwyLVFv1HKlkiZGFgWx7MtIJVIqgryqiwgyCLo0k6BPMPoAwYIiIuiiCKHRTRcJUUJooFBGFIUarv87D0Vo2XI7O8bzg8cjjTX4K+/j2XbeKa/XC395O1w2ORRLKiWFkmxJhiRGYgfR74VLRv29k9rf4//vqeeCA56LIxw5EQXImOSzZEDyUvJM8lDikTVq3O91zZ8CluLVJXtQUidZwJ8FWbqAO1wO2OwjqvkRp05EMzf+TSr4C/BpCPjYD+/gc6DfAwz3vZVbr0raZa0aCGgBy0KWLIdWSaPEwZ8CzcA8yZBJBZyGyPhB1XCPUyei4Bnug7f3DvDi1ijGvl6Sfzkma9a76e5m+4tFbLsceiXNLF8KgKUmPlY24pycOBEFV+JiqNWHoHZ3O1BQ2wxbWK90545/LmC5s11yTr69LknmhClAVpn4WC6kLOPEicgcEXFQpYehtpxPlj/+r+kO1V3qVwHLHaLkcFvSxIlSgNWY+Vhq4UpOnIjMlbocautlYKFLd2i30anTF7DvjSsTZ73rOUUKgnJJVrAfRH6PsxAZXw4nC5iIQsARDVVzWla7qg26U41unfYMuE2yidOjIFGSoyY8zhGV51awzeHEiSg0ZP1RVceBRWW6U8/8sYCNN1zxaWcKtj2YuI48WGe/xYhKrEfBNk6aiKxRwnHOfbI27ZyygOWGJDm0c1pkgjBJpyQ2COWrN4PpVKUtYQiP4aSJKPT009HVJwBlazO6dtIZsNyKJE6KTJIj6UIAL20zXmPpQr47B1lrOWEisg59RUa+W3fsyV8K2Njhai8nRCarltxHAC5zMzaLeYAllev0ZQBERFajihoAe2Sj0bk/zoAPgJtsUGiskTzFDF4T9r3mq/+PPHe5qm7VT/NwqkRkPRHxQO5mh9G5UONnS/Rq9QYTH6ZAFCp6I/MrklOSV5P+cpxiK0rfpUb6HdVRSfWqrMUmZ7+cIhFZm9628sYuvV90pi7gEvmmh1Mhi9Cbkz+W3JU8Mcr4g3FbAiauIda7aW1EZEKZyncr5NeCb7giolmzyN2sA96/LtEXSVZwHGQh+jrhciM/hdmlZGOBufOB1Fwo5wr4Ntngdb5ENNtkFOsCrtCrVyGnQZZv5SZ+pCAR/SfrWVqefqqvSL/+m8NxEBERmSQhU3/N0QWczmkQERGZJDpFf03XBRzLaRAREZnE4ftwpNjvAgwAi1HI02QYPDkAAAAASUVORK5CYII=)}.coupon1-con::after{bottom:-2.4vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAAUCAYAAABVoO4uAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7xJREFUeNrs3V9ojXEYB/DveRsilMgFlgtSlCuZM8WFkhulRWqhyA1iFy6UsHKhuUFhGs0Q+TNzgZA1to7N0pmb44QxxjZtzGZr29l2jnN+nmd71cyx2XbOew59P/W872nv6X3Xs1+/Z7/3z+91RXLdvQDGgyiJuXZVMglE9H+IhGDyVgYt+djBbBARETkkGNBlhxbgRmaDiIjIIV3NumzUAlzNbBARETnk20ddVqfI4rnEemaEkpk5uxKYMAWYOguYuQiu1DQgdRlgpTA5RPRv9Wef/bqq0t6rlOmgZGqbEk8k7klUSNTo/4sIh4BA6zSJ+WjyLze+wrWYOG2Fa/EGFxZvlOI8mZkjon9Dg1eXpa5IrltPQ+t4eA6zQgkUkbgokWMX3V9EuwvanEmfL6v9mDR9q2vFXgvzVjGLRJTcWt/DXN/UIJ/mWtKxacd3hVmhBKqVcEtsj1Z8/0Tabo3EdgRa3ObhgVrjOSZVOcJsElHSMq/u6uqK1l7L/lmuRJCpoQQok0iT8I52B9KQvX378Bd5TPEhFmEiSk49bcDL20G75sKyOzAdDuczO+SwYok1El/HuiNpw7qP1Xj3+KEpP8HMElHyjX6rLgCh7gK75sIasC1booUpIofo428bEMMzL9Kog337fFFUjZpHzDARJY/m15C+SWvswZ8/sgZ0XrphN7NEDghLbEEcZmGTdtyp+zblx8Po7WSmiSjxgl0wxdl6eSzLrrUYPALWzuu6rM4yWxRnlzCGa75/UYS9CLRehO8GM01EiRX5DlNyGGivPyd909WBm6woX8+SuMOsUZzoc745DhznqPEXGW38REQJLb4fnmhN3TN4sxVl9KDX0TIlHjB7FAcejOBRozGMgmvQ3eZB/TNmnIicp6ed7++T3q5EJxXKtGsrhhsBa+elr2pYB56Opti77+SxTB0LMBE57MsrmJvbgLpKraEZdk39TcoQI4iQrHaYM+llsj4lMYNZpRh46uCxKvvuPCQickJPO0xVAeC/9RWRsN5wdW2or1vD7c++MWuhRB44WQeN3VsHj/UG7fXMOBHFl04vWXES5nJGEL7CPCm+C4crvkOOgAcVYZ3kYKeMho+g/1GlzRKzmXUahW+OHqu3ixknotjQmzpDAaDjs97VDNPkA+q9WoA/oX9K59M/J9n4q9pqjBnx7yCFWEfOSyV09vslEgvQ/zIHfSXNOP6VaAgTMIozKdFexjBsO/Xmj4f3fC9TTkQxopdmdYIBLbJv0P8638cSXvu9CiPyQ4ABAEERPcFzp2zfAAAAAElFTkSuQmCC)}.coupon2-con{background-repeat:repeat-y;background-size:100% auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAq4AAAADCAIAAADdgBpIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEJJREFUeNrs1kEBgCAQAEHPCkaghE2IQwobEIMqRLACGME/zETY18Z47gNWcqXIVQaAf2+frZw6AMDOrAAAbO0TYAC/KQcHQIRnPQAAAABJRU5ErkJggg==)}.coupon2-con::after,.coupon2-con::before{content:" ";display:block;position:absolute;left:0;right:0;height:3.2vw;background-repeat:no-repeat;background-size:100% 100%}.coupon2-con::before{top:-2.933vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAq4AAAAYCAYAAAA7839HAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABLpJREFUeNrs3VloXFUcx/H/mS3N0ixm05jEKaGZTtOOLQ2mqYQ2bdE21tgoSaTBYl/cwbRiH6zVB5+sGrBIRWoJQh8UF3wRoYgLFS0+aKkviigFLYobSNuX2Dr+TmYUxCVJM5N7R74f+OdMtjuXc7hzfjNz5l6XzWZtvrKHeivUXK6qUUUMwEym3PDkpwXZUqzMrG5JQXdOx3RCzUqGCQAwT7+qzqrOuHs+nJrvxtylBFdNau1qblL1q9ao2vy2GBtg1n5UNRZkS/Ud5kaPFjq4LrFI/Cu/bQAALtlvF8ymzpud/+Gibp/WT06o3la9riD781w3F5vDROaD6YBqj2qD8coqMB+LQ75/1XZZ0tzwJCMFAChAgL0YtV++6bDvTnVkv/5ozE4ff1bZ8g395oAC7ImCBldtuEfNM6pueh4oiDJVk+r7kO5fm1XUM0oAgMKIRM3qrpoul77RbOpcwr54ayj7ydEh5cw39Rd7FGA/m3EzMwTWuOop3fyA0AoU3PIQ71vK6pKMEACgOBJVZl3bze140VzvfVstXn5SmXN3/h3+uQdX/aNff/ee5ZYGsCwAKLx1Id63ta5xGSMEACiuSMxs9Zj/rEaZNaUn9JOXlUEr5xRc9Q+tat5X9dKjQNFsDuNO6fjX44LrtyvXMEIAgIVR3WJu6Dmz1NZb9N0xzUU1swqu+Vdaj6k66UWgqPpUzaEM1I2peqtsYIQAAAsnGje3ab/Z8u3+HcnX8qdm/Pfgqj+IqnlJlab3gKLzH468LYT7tdOltzE6AIAAOHPrHzRL9m3UNwf/M7jKPsudmxXAwrhflQjLzujJa9ISlaPWuYWRAQAElF0j5jY/albbfqfmpdF/DK76RUrNQ/QWsKD8evI7QrQ/+92qHTGFV0YGABAczUNu0yM+xD6tjFr7t+AqT1ju3JIAFtZjFoK1rnpgWGeVDbssM8qIAACC19xllh708+O+vwRXTVir1LCoDQiGfyZ5xAK8bLIeA/yVvCbd+r2OV1sBAGHhuncprcbv0jzV8GdwlXuDnDQB2A0W0FKd/Mmen7euoU5L9jESAIDwqGoy67y+Srdunw6umrQWqR2hZ4DA+SUDYwHc75PWsnrE9e1mBAAAoTN9idj8WXj86Xj8SyzVdAsQ/LGpekHln0weKfad5V9pnbCm9LgbOODfimEEAADhc8VKs/LajOatNr9UgNNfAeHhz6V8WPV4/ollsUKrX1f7qrV2j7vBg7lrRgMAEErO8ldz7PfBNUOHAGE7Qm2v6l1VqgihdYPu4mPLjA65bROEVgBA+CfGxmW+yfhXdJbSHUAoXas6pTpkfh2q2Zl5BtYVah62mtYR1/eAs/a19DAAoDTUJf3XlA+uTfQGEFr+qlrjqrtVr1huDew7qguzDKsVagZVO62iYYu7+lZnmWGzaIKeBQCUjkXT1yCo98F1Mb0BhJ6/OMhYvs6qjqtOqj63n778VgH1nOXWxPqTsLapOlU9Fon1WNs1Cbf0OrOOjQqsfAALAFCC4uX+a5Wf6KL0BlBS/JPNgXzlDub6DjMXzd2ubDRXq+zq1wM1r/jjYAcAoOTF6AKgxFW3mLv5MP0AAPjfi9AFAAAAKAW/CzAAPsfWAh3bmyAAAAAASUVORK5CYII=)}.coupon2-con::after{bottom:-2.933vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAq4AAAAYCAYAAAA7839HAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABNhJREFUeNrs3VtoHFUcx/HfbpOK7YOVEvQlQgmKDxpBpbUgWPsQpA8KSkjBoIgWwYdK4+3JBy32IUKtkBYVJGpT6RY1pVarmBpLdBOlkpK0jUlR0+bS5maTmEuzSfb4P2YbTIi5dZOdLd8P/Gd2J+3Z4T/Mnn8mZ86E4nsfcAKQvtbmKFRQRh4AANevnt/lIoX1YTIBAACAdJBBCoA0198u98U2KbRCyrxRWp2l0JpsKetO6Za7JrYBAHCdFK7jFitIBZA2/raosjhl0ajR4Yu6dHogcT6vtsh20h223qBwxgZlr18Zuj1PytlsZ3om2QMApHXh6jvBNaQCCLQRi88sPraotBib/MksY1zdvo2rdD76qDsffUrRkkdC92wNKTffCtiVZBQAkD5Gh/1ywI9x7SQbQGDFLPZY5FgUWnw3pWidQ+iF6iGLgxZbNNSd66pLIu7gk04XasgsACB9XOn1yx5fuJ4jG0Ag/WSRa7HDou1aG7Pi9bTFVvW1bnZHi/50P1o9HB8lywCA4Lvc7JeNvnCtIxtAoPgp6ootNvmTNNmNW/H6g33EvaqLlFsBK8UGyDgAINgdY9dvflXnC9dK0gEEhr9ZcpvFa1rAkIBFFK/+by5PqPXkHndkO8UrACDIZavU9qt/UekLV393cj9JAYJwZuppiw+X48OseHUWO9TZsNt9/SrDBgAAwXSxXhrurbM+qyVsiyu26RBZAVLudYsDKfjcl9Vee8hVvcMRAAAEjmv40q/2+8XVJ2ft1cTVHgCp8ZXFrlR8sL/yaqvndKa8Sc1VHAkAQHAMdEpN3/rxbB9NFq7WcfmJzI+SHSAl/HjTZ1P5y6N9B/j5nJ9xJ4qdYoMcEQBAILiTpX4o23vWT3VPFq4Jr2hiknMAy8sPEehI9U7Yl0JUg92lqotwRAAAqddxRmo44vvHt65uCv+n0/LT7uwiS8CyarX4IED7s9Od+nSMq64AgJSyfsgdf1Ny8RcTM+FMLVwTfEXL9FjA8nlXE0/HCgT7cmi2L4uImr7hyAAAUsPF5SrekHovvG/90pQ/A4andVp+DskCiwayBiw5P0/r/gDu1yeugSHvAICUVK1yJ96Wmqu+tzfbp/90+hVXX7x22SrPoonkAUvK38LfEcD9qlBXY48GuzlCAIDlMz4qd3yndPZw1N49bjVpbM7CNVG8+nF3D1pUk0VgCQvEALLzP26/8VYmnlICAMDS62+XK39eajz2ub3Ls76ob6Z/Fp6l8/JXXh+y2G0RJ6NA0kUDvG81iedCAwCwdOJjUu0BuUjhiDobimxLvtWg/3uHcMZsbdl/9M+AfMnt2+ifrFVicT8ZBpLmbID3rVGXmzlCAIClERuQzlXI1ZZJ/W3HbEuR1Z1zXjHJmE/b1tDPVryut5dbfMMWmzTL1VoAc/JzJncGeP9aNNTDUQIAJEd8XOprlS7VybX84m++imlsxD81stjqzJr5NhNybuEP67Ei9jZbPWbxsMV9Ftm+LY4KMG/+zqespLS0NkehgrKk7pyd4+sUzvzDtw0AwOIL1rF/52TVYNe4vW62Lb5I9TMGHLaC9a+FNreownWGTm6VrW61uElciQXmIxbKL61PSksZN0g3r0t24brSVndzmAAA18gPO/WPFW+baZaAhfpHgAEAXp6If3TbkpcAAAAASUVORK5CYII=)}.max-height-165{max-height:22vw}.text-index-56{text-indent:7.467vw}@-webkit-keyframes noticeac{0%{bottom:-60px}70%{opacity:1}100%{bottom:220px;opacity:0}}@keyframes noticeac{0%{bottom:-60px}70%{opacity:1}100%{bottom:220px;opacity:0}}.poster{width:100vw;min-height:60vh}.poster .p-swiper{width:100vw;min-height:60vh}.poster .swiper-container{width:100%;min-height:60vh}.poster .swiper-container .swiper-slide{width:100%;min-height:60vh;background-size:contain;background-position:center;overflow-y:auto}.poster .swiper-pagination-fraction{position:fixed;top:6.667vw;bottom:auto;left:auto;right:0;width:auto;padding:2vw 4vw;background-color:rgba(0,0,0,.8);font-size:30;color:#fff}.msg{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000}.msg .msgBgPoster{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.95)}.msg .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.8)}.msg .msgMainPoster{position:absolute;position:fixed;width:70%;left:50%;top:10%;transform:translate(-50%,0);z-index:9999}.msg .msgMain{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999}.msg .msgMain i.posterClose{position:absolute;top:-9.333vw;right:1.333vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msg .msgMain i.posterClose::after,.msg .msgMain i.posterClose::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msg .msgMain i.posterClose::before{transform:translate(-50%,-50%) rotate(-45deg)}.msg .msgMain i.posterClose::after{transform:translate(-50%,-50%) rotate(45deg)}.msg .msgMain i.posterClose span{display:block;position:absolute;top:6.4vw;left:2.933vw;height:2.667vw;border-left:.4vw solid #fff}.msg .msgMain i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:-8.267vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msg .msgMain i.close::after,.msg .msgMain i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msg .msgMain i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.msg .msgMain i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.msg .msgMain .msgPoster{width:80vw}.msg .msgMain .postercon{max-height:120vw;overflow-y:auto}.msg .msgMain .content{width:80vw;background-color:#fff;border-radius:1.333vw;padding:5.333vw}.msg .msgMain .content .word h2{font-size:4.8vw;padding-bottom:2vw}.msg .msgMain .content .word .desc{max-height:65vh;overflow-y:auto}.msg .msgMain .content .word p{margin:0 auto;color:#333;line-height:1.7}.msg .msgMain .content .opt{text-align:center;padding-top:2.667vw}.msg .msgMain .content .opt .btn{width:80%;height:9.333vw;line-height:9.333vw;display:inline-block;background-color:#4ca6ff;color:#fff;border-radius:133.333vw;font-size:3.733vw}.msg.msg-qrcode .content{width:62.667vw;background-size:100% auto;background-position:bottom center;background-repeat:no-repeat}.msg.msg-qrcode .content .time em{color:#0074f6}.msg.msg-qrcode .content .time span{margin-left:.667vw;text-decoration:underline}.msg.msg-qrcode .content .qrcode{padding-bottom:12vw;margin:8vw auto 0;width:33.333vw}.msg.msg-qrcode .content .qrcode span{display:block;background-color:#58bafe;border-radius:1.333vw;height:6.933vw;line-height:6.933vw}.msg.msg-tips .msgMain{width:77.333vw;min-height:54.667vw;border-radius:1.333vw;background-size:100% auto;background-repeat:no-repeat;background-position:bottom center}.msg.msg-tips .hd{height:11.733vw;line-height:11.733vw;background-color:#fafafa;border-top-left-radius:1.333vw;border-top-right-radius:1.333vw}.msg.msg-tips .bd{max-height:80vw;overflow:auto;line-height:1.7}.swiper-container{position:absolute;width:100%;height:100%}.swiper-container .swiper-slide{width:100%;height:100%;background-size:contain;background-position:center}.imgshow{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000}.imgshow .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.6)}.imgshow i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:2.667vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.imgshow i.close::after,.imgshow i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.imgshow i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.imgshow i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.imgshow img{max-width:100vw;max-height:80vh}.msgPoster .msgBgPoster{position:fixed;left:0;top:0;bottom:0;right:0;width:100%;height:100%;background-color:rgba(0,0,0,.8);z-index:4}.msgPoster .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.8)}.msgPoster .msgMainPoster{position:absolute;position:fixed;width:70%;left:50%;top:5%;transform:translate(-50%,0);z-index:9999}.msgPoster .msgMain{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999}.msgPoster .msgMain i.posterClose{position:absolute;top:-9.333vw;right:1.333vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msgPoster .msgMain i.posterClose::after,.msgPoster .msgMain i.posterClose::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msgPoster .msgMain i.posterClose::before{transform:translate(-50%,-50%) rotate(-45deg)}.msgPoster .msgMain i.posterClose::after{transform:translate(-50%,-50%) rotate(45deg)}.msgPoster .msgMain i.posterClose span{display:block;position:absolute;top:6.4vw;left:2.933vw;height:2.667vw;border-left:.4vw solid #fff}.msgPoster .msgMain i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:-8.267vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msgPoster .msgMain i.close::after,.msgPoster .msgMain i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msgPoster .msgMain i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.msgPoster .msgMain i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.msgPoster .msgMain .msgPoster{width:80vw}.msgPoster .msgMain .postercon{max-height:120vw;overflow-y:auto}.msgPoster .msgMain .content{width:80vw;background-color:#fff;border-radius:1.333vw;padding:5.333vw}.msgPoster .msgMain .content .word h2{font-size:4.8vw;padding-bottom:2vw}.msgPoster .msgMain .content .word .desc{max-height:65vh;overflow-y:auto}.msgPoster .msgMain .content .word p{margin:0 auto;color:#333;line-height:1.7}.msgPoster .msgMain .content .opt{text-align:center;padding-top:2.667vw}.msgPoster .msgMain .content .opt .btn{width:80%;height:9.333vw;line-height:9.333vw;display:inline-block;background-color:#4ca6ff;color:#fff;border-radius:133.333vw;font-size:3.733vw}.msgPoster.msg-qrcode .content{width:62.667vw;background-size:100% auto;background-position:bottom center;background-repeat:no-repeat}.msgPoster.msg-qrcode .content .time em{color:#0074f6}.msgPoster.msg-qrcode .content .time span{margin-left:.667vw;text-decoration:underline}.msgPoster.msg-qrcode .content .qrcode{padding-bottom:12vw;margin:8vw auto 0;width:33.333vw}.msgPoster.msg-qrcode .content .qrcode span{display:block;background-color:#58bafe;border-radius:1.333vw;height:6.933vw;line-height:6.933vw}.msgPoster.msg-tips .msgMain{width:77.333vw;min-height:54.667vw;border-radius:1.333vw;background-size:100% auto;background-repeat:no-repeat;background-position:bottom center}.msgPoster.msg-tips .hd{height:11.733vw;line-height:11.733vw;background-color:#fafafa;border-top-left-radius:1.333vw;border-top-right-radius:1.333vw}.msgPoster.msg-tips .bd{max-height:80vw;overflow:auto;line-height:1.7}.swiper-container{position:absolute;width:100%;height:100%}.swiper-container .swiper-slide{width:100%;height:100%;background-size:contain;background-position:center}.imgshow{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000}.imgshow .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.6)}.imgshow i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:2.667vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.imgshow i.close::after,.imgshow i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.imgshow i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.imgshow i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.imgshow img{max-width:100vw;max-height:80vh} \ No newline at end of file + */@-webkit-keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}@keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;transform-origin:center bottom}@-webkit-keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}@keyframes pulse{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scale3d(1,1,1)}}@keyframes rubberBand{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}@keyframes shake{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}@keyframes headShake{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}.swing{transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}@keyframes tada{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}@keyframes wobble{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{11.1%,from,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{11.1%,from,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;transform-origin:center}@-webkit-keyframes heartBeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}@keyframes heartBeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}.heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}@keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}@keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInDown{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInDownBig{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInLeftBig{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInRight{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInRightBig{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInUp{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeInUpBig{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:.2;transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:.2;transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}@keyframes flipInX{from{transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}@keyframes flipInY{from{transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}@keyframes lightSpeedIn{from{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateIn{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInDownLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInDownRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInUpLeft{from{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInUpRight{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{from{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}@keyframes jackInTheBox{from{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes rollIn{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInUp{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (print),(prefers-reduced-motion:reduce){.animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}}.bds-1-ddd{border:#ddd 1px solid}.bds-4-ddd{border:#ddd .533vw solid}.bds-1-fff{border:#fff 1px solid}.bds-1-f6f6f6{border:#f6f6f6 1px solid}.bts-1-ddd{border-top:#ddd 1px solid}.bls-1-ddd{border-left:#ddd 1px solid}.brs-1-ddd{border-right:#ddd 1px solid}.bbs-1-ddd{border-bottom:#ddd 1px solid}.bds-1-eee{border:#eee 1px solid}.bds-1-eee{border:#eee 1px solid}.bts-1-eee{border-top:#eee 1px solid}.bls-1-eee{border-left:#eee 1px solid}.brs-1-eee{border-right:#eee 1px solid}.bbs-1-eee{border-bottom:#eee 1px solid}.brs-1-999{border-right:#999 1px solid}.bds-2-ff9393{border:#ff9393 .267vw solid}.bbs-1-aaa{border-bottom:#aaa 1px solid}.bbs-1-e4bc93{border-bottom:#e4bc93 1px solid}.bds-1-2fff{border:#2fff 1px solid}.bds-1-bbb{border:#bbb 1px solid}.bts-3-d2daff{border-top:#d2daff .4vw solid}.bls-1-c9c9c9{border-left:#c9c9c9 1px solid}.bts-20-f9f9f9{border-top:#f9f9f9 2.667vw solid}.bbs-1-fff{border-bottom:#fff 1px solid}.bbs-1-f8f4df{border-bottom:#f8f4df 1px solid}.bts-20-f2f2f2{border-top:#f2f2f2 2.667vw solid}.bds-1-ffe3af{border:#ffe3af 1px solid}.bts-1-f6b37f{border-top:#f6b37f 1px solid}.bds-1-f6b07d{border:#f6b07d 1px solid}.bts-4-333{border-top:#333 .533vw solid}.bbs-4-ff9d47{border-bottom:#ff9d47 .533vw solid}.bbs-1-f4f4f4{border-bottom:#f4f4f4 1px solid}.last-b-none:last-child{border-bottom:none}.border-none{border:0;border:none;outline:0}.inner5{padding:.667vw}.inner10{padding:1.333vw}.inner20{padding:2.667vw}.inner30{padding:4vw}.inner40{padding:5.333vw}.inner50{padding:6.667vw}.ulib-r0{border-radius:0!important}.ulib-r5{border-radius:.667vw}.ulib-r10{border-radius:1.333vw}.ulib-rt20{border-top-left-radius:2.667vw;border-top-right-radius:2.667vw}.ulib-r20{border-radius:2.667vw}.ulib-rb20{border-bottom-left-radius:2.667vw;border-bottom-right-radius:2.667vw}.ulib-r750{border-radius:100vw}.ulib-rl750{border-top-left-radius:100vw;border-bottom-left-radius:100vw}.ml0{margin-left:0}.mt0{margin-top:0}.mr0{margin-right:0}.mb0{margin-bottom:0}.pl0{padding-left:0}.pt0{padding-top:0}.pr0{padding-right:0}.pb0{padding-bottom:0}.ml5{margin-left:.667vw}.mt5{margin-top:.667vw}.mr5{margin-right:.667vw}.mb5{margin-bottom:.667vw}.pl5{padding-left:.667vw}.pt5{padding-top:.667vw}.pr5{padding-right:.667vw}.pb5{padding-bottom:.667vw}.ml10{margin-left:1.333vw}.mt10{margin-top:1.333vw}.mr10{margin-right:1.333vw}.mb10{margin-bottom:1.333vw}.pl10{padding-left:1.333vw}.pt10{padding-top:1.333vw}.pr10{padding-right:1.333vw}.pb10{padding-bottom:1.333vw}.ml15{margin-left:2vw}.mt15{margin-top:2vw}.mr15{margin-right:2vw}.mb15{margin-bottom:2vw}.pl15{padding-left:2vw}.pt15{padding-top:2vw}.pr15{padding-right:2vw}.pb15{padding-bottom:2vw}.ml20{margin-left:2.667vw}.mt20{margin-top:2.667vw}.mr20{margin-right:2.667vw}.mb20{margin-bottom:2.667vw}.pl20{padding-left:2.667vw}.pt20{padding-top:2.667vw}.pr20{padding-right:2.667vw}.pb20{padding-bottom:2.667vw}.ml25{margin-left:3.333vw}.mt25{margin-top:3.333vw}.mr25{margin-right:3.333vw}.mb25{margin-bottom:3.333vw}.pl25{padding-left:3.333vw}.pt25{padding-top:3.333vw}.pr25{padding-right:3.333vw}.pb25{padding-bottom:3.333vw}.ml30{margin-left:4vw}.mt30{margin-top:4vw}.mr30{margin-right:4vw}.mb30{margin-bottom:4vw}.pl30{padding-left:4vw}.pt30{padding-top:4vw}.pr30{padding-right:4vw}.pb30{padding-bottom:4vw}.ml35{margin-left:4.667vw}.mt35{margin-top:4.667vw}.mr35{margin-right:4.667vw}.mb35{margin-bottom:4.667vw}.pl35{padding-left:4.667vw}.pt35{padding-top:4.667vw}.pr35{padding-right:4.667vw}.pb35{padding-bottom:4.667vw}.ml40{margin-left:5.333vw}.mt40{margin-top:5.333vw}.mr40{margin-right:5.333vw}.mb40{margin-bottom:5.333vw}.pl40{padding-left:5.333vw}.pt40{padding-top:5.333vw}.pr40{padding-right:5.333vw}.pb40{padding-bottom:5.333vw}.ml45{margin-left:6vw}.mt45{margin-top:6vw}.mr45{margin-right:6vw}.mb45{margin-bottom:6vw}.pl45{padding-left:6vw}.pt45{padding-top:6vw}.pr45{padding-right:6vw}.pb45{padding-bottom:6vw}.ml50{margin-left:6.667vw}.mt50{margin-top:6.667vw}.mr50{margin-right:6.667vw}.mb50{margin-bottom:6.667vw}.pl50{padding-left:6.667vw}.pt50{padding-top:6.667vw}.pr50{padding-right:6.667vw}.pb50{padding-bottom:6.667vw}.ml55{margin-left:7.333vw}.mt55{margin-top:7.333vw}.mr55{margin-right:7.333vw}.mb55{margin-bottom:7.333vw}.pl55{padding-left:7.333vw}.pt55{padding-top:7.333vw}.pr55{padding-right:7.333vw}.pb55{padding-bottom:7.333vw}.ml60{margin-left:8vw}.mt60{margin-top:8vw}.mr60{margin-right:8vw}.mb60{margin-bottom:8vw}.pl60{padding-left:8vw}.pt60{padding-top:8vw}.pr60{padding-right:8vw}.pb60{padding-bottom:8vw}.ml65{margin-left:8.667vw}.mt65{margin-top:8.667vw}.mr65{margin-right:8.667vw}.mb65{margin-bottom:8.667vw}.pl65{padding-left:8.667vw}.pt65{padding-top:8.667vw}.pr65{padding-right:8.667vw}.pb65{padding-bottom:8.667vw}.ml70{margin-left:9.333vw}.mt70{margin-top:9.333vw}.mr70{margin-right:9.333vw}.mb70{margin-bottom:9.333vw}.pl70{padding-left:9.333vw}.pt70{padding-top:9.333vw}.pr70{padding-right:9.333vw}.pb70{padding-bottom:9.333vw}.pl80{padding-left:10.667vw}.pt80{padding-top:10.667vw}.pr80{padding-right:10.667vw}.pb80{padding-bottom:10.667vw}.pl90{padding-left:12vw}.pt90{padding-top:12vw}.pr90{padding-right:12vw}.pb90{padding-bottom:12vw}.pl100{padding-left:13.333vw}.pt100{padding-top:13.333vw}.pr100{padding-right:13.333vw}.pb100{padding-bottom:13.333vw}.pl110{padding-left:14.667vw}.pt110{padding-top:14.667vw}.pr110{padding-right:14.667vw}.pb110{padding-bottom:14.667vw}.pl120{padding-left:16vw}.pt120{padding-top:16vw}.pr120{padding-right:16vw}.pb120{padding-bottom:16vw}.pl130{padding-left:17.333vw}.pt130{padding-top:17.333vw}.pr130{padding-right:17.333vw}.pb130{padding-bottom:17.333vw}.pl140{padding-left:18.667vw}.pt140{padding-top:18.667vw}.pr140{padding-right:18.667vw}.pb140{padding-bottom:18.667vw}.pl150{padding-left:20vw}.pt150{padding-top:20vw}.pr150{padding-right:20vw}.pb150{padding-bottom:20vw}.pl180{padding-left:24vw}.pt180{padding-top:24vw}.pr180{padding-right:24vw}.pb180{padding-bottom:24vw}.pl200{padding-left:26.667vw}.pt200{padding-top:26.667vw}.pr200{padding-right:26.667vw}.pb200{padding-bottom:26.667vw}.pl210{padding-left:28vw}.pt210{padding-top:28vw}.pr210{padding-right:28vw}.pb210{padding-bottom:28vw}.pl220{padding-left:29.333vw}.pt220{padding-top:29.333vw}.pr220{padding-right:29.333vw}.pb220{padding-bottom:29.333vw}.ml1{margin-left:1px}.mt1{margin-top:1px}.mr1{margin-right:1px}.mb1{margin-bottom:1px}.ml130{margin-left:17.333vw}.mt130{margin-top:17.333vw}.mr130{margin-right:17.333vw}.mb130{margin-bottom:17.333vw}.ml70{margin-left:9.333vw}.mt70{margin-top:9.333vw}.mr70{margin-right:9.333vw}.mb70{margin-bottom:9.333vw}.ml75{margin-left:10vw}.mt75{margin-top:10vw}.mr75{margin-right:10vw}.mb75{margin-bottom:10vw}.ml80{margin-left:10.667vw}.mt80{margin-top:10.667vw}.mr80{margin-right:10.667vw}.mb80{margin-bottom:10.667vw}.ml90{margin-left:12vw}.mt90{margin-top:12vw}.mr90{margin-right:12vw}.mb90{margin-bottom:12vw}.ml95{margin-left:12.667vw}.mt95{margin-top:12.667vw}.mr95{margin-right:12.667vw}.mb95{margin-bottom:12.667vw}.ml100{margin-left:13.333vw}.mt100{margin-top:13.333vw}.mr100{margin-right:13.333vw}.mb100{margin-bottom:13.333vw}.ml110{margin-left:14.667vw}.mt110{margin-top:14.667vw}.mr110{margin-right:14.667vw}.mb110{margin-bottom:14.667vw}.ml140{margin-left:18.667vw}.mt140{margin-top:18.667vw}.mr140{margin-right:18.667vw}.mb140{margin-bottom:18.667vw}.ml160{margin-left:21.333vw}.mt160{margin-top:21.333vw}.mr160{margin-right:21.333vw}.mb160{margin-bottom:21.333vw}.ml170{margin-left:22.667vw}.mt170{margin-top:22.667vw}.mr170{margin-right:22.667vw}.mb170{margin-bottom:22.667vw}.ml180{margin-left:24vw}.mt180{margin-top:24vw}.mr180{margin-right:24vw}.mb180{margin-bottom:24vw}.ml200{margin-left:26.667vw}.mt200{margin-top:26.667vw}.mr200{margin-right:26.667vw}.mb200{margin-bottom:26.667vw}.ml210{margin-left:28vw}.mt210{margin-top:28vw}.mr210{margin-right:28vw}.mb210{margin-bottom:28vw}.ml230{margin-left:30.667vw}.mt230{margin-top:30.667vw}.mr230{margin-right:30.667vw}.mb230{margin-bottom:30.667vw}.ml260{margin-left:34.667vw}.mt260{margin-top:34.667vw}.mr260{margin-right:34.667vw}.mb260{margin-bottom:34.667vw}.ml280{margin-left:37.333vw}.mt280{margin-top:37.333vw}.mr280{margin-right:37.333vw}.mb280{margin-bottom:37.333vw}.ml310{margin-left:41.333vw}.mt310{margin-top:41.333vw}.mr310{margin-right:41.333vw}.mb310{margin-bottom:41.333vw}.ml180{margin-left:24vw}.mt180{margin-top:24vw}.mr180{margin-right:24vw}.mb180{margin-bottom:24vw}.ml430{margin-left:57.333vw}.mt430{margin-top:57.333vw}.mr430{margin-right:57.333vw}.mb430{margin-bottom:57.333vw}.btn{display:inline-block;font-size:2vw;text-align:center;border:none;vertical-align:middle;cursor:pointer;transition:all .15s ease 0s}.btn:active{box-shadow:inset 0 .4vw .667vw rgba(0,0,0,.125)}.bg-fff-op15{background-color:rgba(255,255,255,.15)}.bg-fff-op30{background-color:rgba(255,255,255,.3)}.bg-fff-op80{background-color:rgba(255,255,255,.8)}.bg-fff-op95{background-color:rgba(255,255,255,.95)}.bg-000-op10{background-color:rgba(0,0,0,.1)}.bg-000-op50{background-color:rgba(0,0,0,.5)}.bg-000-op60{background-color:rgba(0,0,0,.6)}.bg-000-op80{background-color:rgba(0,0,0,.8)}.bg-eee-fff{background-image:linear-gradient(#eee,#fff)}.bg-fa{background-color:#fafafa}.bg-f1{background-color:#f1f1f1}.bg-f5{background-color:#f5f5f5}.bg-f6{background-color:#f6f6f6}.bg-f7{background-color:#f7f7f7}.bg-f8{background-color:#f8f8f8}.bg-f9{background-color:#f9f9f9}.bg-transparent{background-color:transparent}.placeholder-color-ccc::-moz-placeholder{color:#ccc!important}.placeholder-color-ccc:-ms-input-placeholder{color:#ccc!important}.placeholder-color-ccc::placeholder{color:#ccc!important}.color-000{color:#000}.bg-000{background-color:#000}.color-333{color:#333}.bg-333{background-color:#333}.color-555{color:#555}.bg-555{background-color:#555}.color-666{color:#666}.bg-666{background-color:#666}.color-aaa{color:#aaa}.bg-aaa{background-color:#aaa}.color-888{color:#888}.bg-888{background-color:#888}.color-999{color:#999}.bg-999{background-color:#999}.color-1a1a1a{color:#1a1a1a}.bg-1a1a1a{background-color:#1a1a1a}.color-aaa{color:#aaa}.bg-aaa{background-color:#aaa}.color-bbb{color:#bbb}.bg-bbb{background-color:#bbb}.color-ccc{color:#ccc}.bg-ccc{background-color:#ccc}.color-ddd{color:#ddd}.bg-ddd{background-color:#ddd}.color-eee{color:#eee}.bg-eee{background-color:#eee}.color-fff{color:#fff}.bg-fff{background-color:#fff}.color-ff0000{color:red}.bg-ff0000{background-color:red}.color-fe9538{color:#fe9538}.bg-fe9538{background-color:#fe9538}.color-ff5a5a{color:#ff5a5a}.bg-ff5a5a{background-color:#ff5a5a}.color-fccba0{color:#fccba0}.bg-fccba0{background-color:#fccba0}.color-fff5ec{color:#fff5ec}.bg-fff5ec{background-color:#fff5ec}.color-ad4635{color:#ad4635}.bg-ad4635{background-color:#ad4635}.color-00a2ff{color:#00a2ff}.bg-00a2ff{background-color:#00a2ff}.color-c4302c{color:#c4302c}.bg-c4302c{background-color:#c4302c}.color-dfb48a{color:#dfb48a}.bg-dfb48a{background-color:#dfb48a}.color-e4bc93{color:#e4bc93}.bg-e4bc93{background-color:#e4bc93}.color-ffa85a{color:#ffa85a}.bg-ffa85a{background-color:#ffa85a}.color-ff9d47{color:#ff9d47}.bg-ff9d47{background-color:#ff9d47}.color-fff7f1{color:#fff7f1}.bg-fff7f1{background-color:#fff7f1}.color-fff4eb{color:#fff4eb}.bg-fff4eb{background-color:#fff4eb}.clear:after,.clear:before{content:"";display:table}.clear:after{clear:both}.clear{zoom:1}.fl{float:left}.fr{float:right}.fn-clear:after,.fn-clear:before{content:"";display:table}.fn-clear:after{clear:both}.fn-clear{zoom:1}.fn-fl{float:left}.fn-fr{float:right}.fn-flex{display:flex;flex-flow:row;align-items:stretch}.fn-flex-item{display:block;flex:1}.fn-flex-item[flexsize="0"]{flex:0}.fn-flex-item[flexsize="1"]{flex:1}.fn-flex-item[flexsize="2"]{flex:2}.fn-flex-item[flexsize="3"]{flex:3}.fn-flex-item[flexsize="4"]{flex:4}.fn-flex-item[flexsize="5"]{flex:5}.fn-flex-item[flexsize="6"]{flex:6}.fn-flex-item[flexsize="7"]{flex:7}.fn-flex-item[flexsize="8"]{flex:8}.fn-flex-item[flexsize="9"]{flex:9}.fn-flex-itemfixed{flex:0 0 auto}.fn-flex-between{justify-content:space-between}.fn-flex-wrap{flex-wrap:wrap}.fn-flex-around{justify-content:space-around}.fn-flex-middle{align-items:center}.fn-flex-center{justify-content:center}.block{display:block}.inline-block{display:inline-block}.fn-hide{display:none}.overflowhidden{overflow:hidden}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.top-0{top:0}.left-0{left:0}.bottom-0{bottom:0}.right-0{right:0}.tp10{top:10%}.tp20{top:20%}.tp30{top:30%}.tp40{top:40%}.tp50{top:50%}.tp60{top:60%}.tp70{top:70%}.tp80{top:80%}.tp90{top:90%}.bp5{bottom:5%}.bp10{bottom:10%}.bp12{bottom:12%}.bp13{bottom:13%}.bp15{bottom:15%}.bp20{bottom:20%}.bp30{bottom:30%}.bp40{bottom:40%}.bp50{bottom:50%}.bp60{bottom:60%}.bp70{bottom:70%}.bp80{bottom:80%}.bp90{bottom:90%}.z-index--1{z-index:-1!important}.z-index-0{z-index:0}.z-index-1{z-index:1}.z-index-2{z-index:2}.z-index-3{z-index:3}.z-index-4{z-index:4}.z-index-10{z-index:10}.box-center-middle{top:50%;left:50%;transform:translate(-50%,-50%)}.box-middle{top:50%;transform:translate(0,-50%)}.box-center{left:50%;transform:translate(-50%,0)}.box-border{box-sizing:border-box}.wp20{width:20%;box-sizing:border-box}.wp25{width:25%;box-sizing:border-box}.wp33{width:33%;box-sizing:border-box}.wp40{width:40%;box-sizing:border-box}.wp45{width:45%;box-sizing:border-box}.wp48{width:48%;box-sizing:border-box}.wp49{width:49%;box-sizing:border-box}.wp50{width:50%;box-sizing:border-box}.wp60{width:60%!important;box-sizing:border-box}.wp65{width:65%!important;box-sizing:border-box}.wp70{width:70%!important;box-sizing:border-box}.wp80{width:80%!important;box-sizing:border-box}.wp90{width:90%;box-sizing:border-box}.wp100{width:100%;box-sizing:border-box}.w100vw{width:100vw}.h100vh{height:100vh}.transition-all{transition:all ease .2s}.op90{opacity:.9}.op70{opacity:.7}.op30{opacity:.3}.op20{opacity:.2}.op0{opacity:0}.bg-size-contain{background-size:contain}.bg-size-cover{background-size:cover}.bg-size-fullwidth{background-size:100% auto}.bg-size-fullheight{background-size:auto 100%}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-pos-top{background-position:top center}.bg-pos-bottom{background-position:bottom center}.bg-pos-center{background-position:center}.box-shadow-darkGray{box-shadow:0 0 1.333vw rgba(0,0,0,.15)}.box-shadow-lightGray{box-shadow:0 0 2.667vw rgba(0,0,0,.08)}.box-shadow-green{box-shadow:0 0 2.667vw rgba(55,190,77,.15)}.box-shadow-darkGreen{box-shadow:0 0 2.667vw rgba(55,190,77,.25)}.line-height-11{line-height:1.1}.line-height-13{line-height:1.3}.line-height-15{line-height:1.5}.line-height-17{line-height:1.7}.line-height-18{line-height:1.8}.line-height-20{line-height:2}.icon-jiazai{display:inline-block;-webkit-animation:rotate linear 1.2s infinite;animation:rotate linear 1.2s infinite}@-webkit-keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.text-nowrap{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-underline{text-decoration:underline}.text-through{text-decoration:line-through}.text-middle{vertical-align:middle}.text-lighter{font-weight:400}.text-bold{font-weight:600}.text-normal{font-weight:400}.text-break{word-break:break-all;word-wrap:break-word}.space-nowrap{white-space:nowrap}.space-normal{white-space:normal}.space-pre-line{white-space:pre-line}.text-italic{font-style:italic}.letter-spacing-5{letter-spacing:.667vw}.line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.font-12{font-size:1.6vw}.font-14{font-size:1.867vw}.font-16{font-size:2.133vw}.font-18{font-size:2.4vw}.font-20{font-size:2.667vw}.font-22{font-size:2.933vw}.font-24{font-size:3.2vw}.font-26{font-size:3.467vw}.font-28{font-size:3.733vw}.font-30{font-size:4vw}.font-32{font-size:4.267vw}.font-34{font-size:4.533vw}.font-36{font-size:4.8vw}.font-38{font-size:5.067vw}.font-40{font-size:5.333vw}.font-42{font-size:5.6vw}.font-44{font-size:5.867vw}.font-46{font-size:6.133vw}.font-48{font-size:6.4vw}.font-50{font-size:6.667vw}.font-52{font-size:6.933vw}.font-54{font-size:7.2vw}.font-56{font-size:7.467vw}.font-58{font-size:7.733vw}.font-60{font-size:8vw}.font-62{font-size:8.267vw}.font-64{font-size:8.533vw}.font-66{font-size:8.8vw}.font-68{font-size:9.067vw}.font-70{font-size:9.333vw}.font-72{font-size:9.6vw}.font-74{font-size:9.867vw}.font-76{font-size:10.133vw}.font-78{font-size:10.4vw}.font-80{font-size:10.667vw}.font-70{font-size:9.333vw}.font-80{font-size:10.667vw}.font-100{font-size:13.333vw}@font-face{font-family:iconfont;src:url(https://qs.haodian.cn/web/images/project/H5-ShiYu/iconfont/iconfont.woff2?t=1669962534987) format("woff2"),url(https://qs.haodian.cn/web/images/project/H5-ShiYu/iconfont/iconfont.woff?t=1669962534987) format("woff"),url(https://qs.haodian.cn/web/images/project/H5-ShiYu/iconfont/iconfont.ttf?t=1669962534987) format("truetype")}.iconfont{font-family:iconfont!important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-tuichu1:before{content:"\e647"}.icon-tixing:before{content:"\e6cc"}.icon-huodong2:before{content:"\e6bf"}.icon-qiehuan1:before{content:"\e607"}.icon-dizhi:before{content:"\e610"}.icon-zengjia:before{content:"\e8c8"}.icon-guanli:before{content:"\e6bd"}.icon-sousuo:before{content:"\e6be"}.icon-xinxi:before{content:"\e600"}.icon-tuichu:before{content:"\e66a"}.icon-084tuichu:before{content:"\e659"}.icon-time:before{content:"\e6bc"}.icon-shouye:before{content:"\e750"}.icon-zhibo:before{content:"\e633"}.icon-quyu:before{content:"\e67c"}.icon-dingdan:before{content:"\e639"}.icon-gengduo:before{content:"\e60c"}.icon-jiazai:before{content:"\eb7b"}.icon-wode:before{content:"\e6b8"}.icon-qiehuan:before{content:"\e6b9"}.icon-shuju:before{content:"\e6ba"}.icon-fenxiang:before{content:"\e6bb"}.icon-huodong:before{content:"\e6b6"}.icon-mendian:before{content:"\e6b7"}.imgsize-18X18{width:2.4vw;height:2.4vw}.imgsize-24X24{width:3.2vw;height:3.2vw}.imgsize-30X30{width:4vw;height:4vw}.imgsize-32X32{width:4.267vw;height:4.267vw}.imgsize-35X35{width:4.667vw;height:4.667vw}.imgsize-40X40{width:5.333vw;height:5.333vw}.imgsize-42X42{width:5.6vw;height:5.6vw}.imgsize-50X50{width:6.667vw;height:6.667vw}.imgsize-60X60{width:8vw;height:8vw}.imgsize-90X20{width:12vw;height:2.667vw}.imgsize-90X90{width:12vw;height:12vw}.imgsize-120X120{width:16vw;height:16vw}.imgsize-130X30{width:17.333vw;height:4vw}.imgsize-130X130{width:17.333vw;height:17.333vw}.imgsize-160X160{width:21.333vw;height:21.333vw}.imgsize-180X180{width:24vw;height:24vw}.imgsize-185X170{width:24.667vw;height:22.667vw}.imgsize-210X210{width:28vw;height:28vw}.imgsize-290X255{width:38.667vw;height:34vw}.imgsize-360X360{width:48vw;height:48vw}.imgsize-630X180{width:84vw;height:24vw}.imgsize-630X340{width:84vw;height:45.333vw}.imgsize-690X310{width:92vw;height:41.333vw}.imgsize-750X340{width:100vw;height:45.333vw}.imgsize-750X680{width:100vw;height:90.667vw}@-webkit-keyframes mDialogFadeIn{from{opacity:0}to{opacity:1}}@keyframes mDialogFadeIn{from{opacity:0}to{opacity:1}}.mDialogFadeIn{-webkit-animation-name:mDialogFadeIn;animation-name:mDialogFadeIn}@-webkit-keyframes mDialogFadeOut{from{opacity:1}to{opacity:0}}@keyframes mDialogFadeOut{from{opacity:1}to{opacity:0}}.mDialogFadeOut{-webkit-animation-name:mDialogFadeOut;animation-name:mDialogFadeOut}@-webkit-keyframes mDialogZoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes mDialogZoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.mDialogZoomIn{-webkit-animation-name:mDialogZoomIn;animation-name:mDialogZoomIn}@-webkit-keyframes mDialogZoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes mDialogZoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.mDialogZoomOut{-webkit-animation-name:mDialogZoomOut;animation-name:mDialogZoomOut}@-webkit-keyframes mDialogBigIn{0%{opacity:0;transform:scale(1.2,1.2)}100%{opacity:1;transform:scale(1,1)}}@keyframes mDialogBigIn{0%{opacity:0;transform:scale(1.2,1.2)}100%{opacity:1;transform:scale(1,1)}}.mDialogBigIn{-webkit-animation-name:mDialogBigIn;animation-name:mDialogBigIn}@-webkit-keyframes mDialogBigOut{0%{opacity:1}100%{opacity:0;transform:scale(1.2,1.2)}}@keyframes mDialogBigOut{0%{opacity:1}100%{opacity:0;transform:scale(1.2,1.2)}}.mDialogBigOut{-webkit-animation-name:mDialogBigOut;animation-name:mDialogBigOut}.mDialog-layer-container{visibility:hidden;position:fixed;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;box-sizing:border-box}.mDialog-layer-container *{box-sizing:border-box}.mDialog-layer-container.mDialog-layer-container-full>.mDialog-layer-title{border-radius:0}.mDialog-layer-container.mDialog-layer-container-full>.mDialog-layer-main{border-radius:0}.mDialog-layer-container.mDialog-layer-container-full>.mDialog-layer-btns{border-radius:0}.mDialog-layer-title{border-radius:2.6667vw 2.6667vw 0 0;background:#f5f5f5;clear:both;border-bottom:1px solid #d5d5d5;padding:2.6667vw;overflow:hidden;font-size:4.8vw}.mDialog-layer-main{word-break:break-all;word-wrap:break-word;overflow:hidden;font-size:4.2667vw}.mDialog-layer-main:after{content:"";display:table;clear:both}.mDialog-layer-main.mDialog-layer-main-full>div{height:100%;overflow:hidden}.mDialog-layer-main>div{position:relative}.mDialog-layer-btns{clear:both;border-top:1px solid #e8e8e8;background:#fff;border-radius:0 0 2.6667vw 2.6667vw;display:flex}.mDialog-layer-btns>.mDialog-btn{flex:1;display:block;text-align:center;position:relative;color:#007aff;font-size:4.8vw;padding:2.6667vw 0}.mDialog-layer-btns>.mDialog-btn:after{content:"";position:absolute;left:0;top:0;width:1px;height:100%;border-left:1px solid #d5d5d5;color:#d5d5d5}.mDialog-layer-btns>.mDialog-btn:active{background-color:rgba(0,0,0,.05)}.mDialog-layer-btns>.mDialog-btn:first-child:after{border-left:0}.mDialog-close{position:absolute;width:8.667vw;height:8.667vw;overflow:hidden;right:0;top:0;margin-top:-4.3333vw;margin-right:-4.3333vw;border-radius:100%;background-color:#000}.mDialog-close:before{transform:rotate(45deg);content:"";position:absolute;top:50%;left:1.3333vw;right:1.3333vw;background:#fff;height:.8vw;margin-top:-.4vw;border-radius:1.0667vw}.mDialog-close:after{transform:rotate(-45deg);content:"";position:absolute;top:50%;left:1.3333vw;right:1.3333vw;background:#fff;height:.8vw;margin-top:-.4vw;border-radius:1.0667vw}.mDialog-shade{position:fixed;left:0;top:0;right:0;bottom:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}.mDialog-shade.in{-webkit-animation-name:mDialogFadeIn;animation-name:mDialogFadeIn}.mDialog-shade.out{-webkit-animation-name:mDialogFadeOut;animation-name:mDialogFadeOut}.mDialog-default-section{background:#fff;font-size:4.2667vw;padding:2.6667vw}.mDialog-msg-section{background-color:rgba(0,0,0,.9);border-radius:2.6667vw;padding:4vw;color:#fff}@-webkit-keyframes line-spin-fade-loader{50%{opacity:.3}100%{opacity:1}}@keyframes line-spin-fade-loader{50%{opacity:.3}100%{opacity:1}}.mDialog-loading-section{background-color:rgba(0,0,0,.7);border-radius:2vw;padding:4vw 8vw;overflow:hidden}.mDialog-loading-section .loading-txt{font-size:4.2667vw;color:#fff;text-align:center;margin-top:2.6667vw;white-space:nowrap}.mDialog-loading-section .loading-icon{position:relative;width:16.533vw;height:16.533vw;margin:0 auto}.mDialog-loading-section .loading-icon>div{background-color:#fff;border-radius:.5333vw;-webkit-animation-fill-mode:both;animation-fill-mode:both;position:absolute;width:1.0667vw;height:4.8vw;margin-left:-.5333vw}.mDialog-loading-section .loading-icon>div:nth-child(1){top:11.733vw;left:50%;-webkit-animation:line-spin-fade-loader 1.2s .12s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .12s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(2){top:10.7173vw;left:10.7173vw;transform:rotate(-45deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .24s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .24s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(3){top:8.533vw;left:11.733vw;transform-origin:top center;transform:rotate(-90deg);-webkit-animation:line-spin-fade-loader 1.2s .36s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .36s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(4){top:5.816vw;left:11.733vw;transform:rotate(-135deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .48s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .48s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(5){top:0;left:50%;-webkit-animation:line-spin-fade-loader 1.2s .6s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .6s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(6){top:5.816vw;left:5.816vw;transform-origin:top center;transform:rotate(135deg);-webkit-animation:line-spin-fade-loader 1.2s .72s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .72s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(7){top:8.2667vw;left:4.8vw;margin-left:-.5333vw;transform:rotate(90deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .84s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .84s infinite ease-in-out}.mDialog-loading-section .loading-icon>div:nth-child(8){top:10.7173vw;left:5.816vw;margin-left:-.5333vw;transform:rotate(45deg);transform-origin:top center;-webkit-animation:line-spin-fade-loader 1.2s .96s infinite ease-in-out;animation:line-spin-fade-loader 1.2s .96s infinite ease-in-out}.mDialog-loading-section.loading-notext{padding:8vw}.mDialog-confirm-section{background:#fff;padding:5.333vw 4vw;border-radius:2.6667vw 2.6667vw 0 0}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}.clearfix:after{content:"";display:table;clear:both}input:focus,select:focus,textarea:focus{outline:0}em{font-style:normal}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}a{text-decoration:none;color:#333}body,button,select,textarea{font-family:"微软雅黑",Tahoma,Arial,Helvetica,sans-serif}html{width:100%;background-color:#fff;height:100%;overflow:hidden}body{background-color:#fff;height:100%;overflow:hidden}img{max-width:100%}#app{position:relative;z-index:1;height:100%;overflow:scroll}.container{width:100%;min-height:100vh}input.checkbox-input{position:relative;width:3.2vw;height:3.2vw;vertical-align:0;cursor:pointer}input.checkbox-input[type=checkbox]::after{position:absolute;top:0;left:0;bottom:0;right:0;content:" ";color:transparent;display:inline-block;visibility:visible;background-color:#191919;border:#fff 1px solid;border-radius:.667vw}input.checkbox-input[type=checkbox]:checked::after{position:absolute;top:0;left:0;bottom:0;right:0;content:" ";background-color:transparent;border:0}.orderTip{position:absolute;top:-.267vw;right:-9.6vw;width:26.667vw;height:8.667vw;padding-top:2.4vw;line-height:6.667vw;transform:rotate(45deg)}.orderTip2{position:absolute;top:-1.467vw;right:-9.2vw;width:26.667vw;height:11.733vw;padding-top:3.067vw;line-height:9.333vw;transform:rotate(45deg)}.player{width:100vw;height:56.667vw}.winInfo-swiper,.winInfo-swiper .swiper-slide{height:7.467vw;line-height:7.467vw}.tab-menu{padding:1.333vw 2vw;color:#666}.tab-menu.active{color:#1a1a1a}.glider{position:absolute;bottom:0;width:10.667vw;height:.533vw;background:#1a1a1a;z-index:0;transition:.25s ease-out;border-radius:750rpx}.glider-0{transform:translatex(120%)}.glider-1{transform:translatex(450%)}.glider2-0{transform:translatex(137%)}.glider2-1{transform:translatex(507%)}.w-50{width:6.667vw}.top--60{top:-8vw}.h-63{height:8.4vw}.h-260{height:34.667vw}.h-290{height:38.667vw}.h-750{height:100vw}.line-height-63{line-height:8.4vw}.bottom-opt{position:fixed;right:5.333vw;bottom:26.667vw;width:12.8vw;height:12.8vw;z-index:3}.cell-tt{height:3.733vw;padding-top:1px;line-height:3.333vw;background-color:#ccc;box-sizing:border-box}.cell-tt::before{display:block;position:absolute;top:0;left:-3.2vw;content:"";width:3.333vw;height:3.733vw;background-repeat:no-repeat;background-size:cover;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAcCAYAAACUJBTQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN9JREFUeNrs1bsOAUEYhuEhEoVLQCURlYoLUKt0xBUIjQvQaxVOBZVEFBpRKFzCdtQKdA6lxDrEO8lsK5L1T8OXPNUW724ykw04jhNWSkUQRRIZ5JBFUH1hIVyNM1aYmmdxlFFFzE/k3Zvu0ETChE4SEW8uOkhhIhXxdkQRFdylIt56KOAiGdGbo/TpF/k5ojPUpCN6fYylI8p8zUE6oi9xQzqiN8RWOnJDVzqiN7IR2duIqH/kdyOujcjGRmRhIzLAQzqyNv8Y8dNVx1I6ok9YHm08Je+Ja/6YabReAgwAxwgqT42bhQQAAAAASUVORK5CYII=)}.cell-tt::after{display:block;position:absolute;top:0;right:-3.2vw;content:"";width:3.333vw;height:3.733vw;background-repeat:no-repeat;background-size:cover;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAcCAYAAACUJBTQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN1JREFUeNrs1r8OwUAcwPFqvJ0HwCNILB6AdzCIiD8TEasYDBIP4EYWg4Ga/NkYivJtUptUr71fF5p8tst9c831ehml1NMy83hYYA6FNfa4ZA1M7qCBAXafBiSJnFBDB27YwLiREco4Rhlsa05+RwmFqAHdlVyRx0R32bbGCopxAjoR//2P4+6QKJEhWkn2+LfIIViFJRmp4iwZ2aJn4rwJizRxk470DR2coREnjYj1j/xexE0jskkjMpWOPNCVjvj/jqVkZIaK1O7yggtazvTOet9W6mhjJfWdvAQYAKd6Lbq2kFGMAAAAAElFTkSuQmCC)}.gengduo{height:3.733vw;padding-top:1px;line-height:3.333vw;background-color:#ccc;box-sizing:border-box}.gengduo::before{display:block;position:absolute;top:0;left:-3.2vw;content:"";width:3.333vw;height:3.733vw;background-repeat:no-repeat;background-size:cover;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAcCAYAAACUJBTQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiPHPmDAMNgRYQp7DQyHA2IO4D4kwgZmKhkQVbgdgFJsBEA0v6kS2ghSXaQJyOLkhtS1KAmJnWlnhgE6S2JUr0sISNHpYwjFoy8iyRoYclMbS2BJQ/smltSRKtg0sYiFtoHfGToBbRzJI0II6iZRL2A+LJtMwn3kC8HFepSw1LQNXreiDmokWOFwHiZUA8A4hZqV2sgIIkA4ivA3EkOWGLr90lDS0qcvBlNGItAXmdB2qQGhAbA7ETEJtSq0QACDAAfVsSu/yuHTEAAAAASUVORK5CYII=)}.gengduo::after{display:block;position:absolute;top:0;right:-3.2vw;content:"";width:3.333vw;height:3.733vw;background-repeat:no-repeat;background-size:cover;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAcCAYAAACUJBTQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANRJREFUeNpiPHPmTB8DA8McIL7GQCPABMSFQHwZiKcAMRutLIHR2UC8lRYWMaHxXYC4n9aWgEA6EGvT2hJmIE6htSUg4EEPS5ToYQkbPSxhGLVk5FoiQw9LYuhhSTa18guh4EqiR8S3ALEwrS0BWTCJHkk4CojT6JFPJgOxH60tAaWy5UDsTesczwXE66HVM02LFVYgngHEy4BYhNZlVyQQXwfiDGIyLCUFJMgn04H4LhCXA7E0LoWMwGbqfyoVUf+A+DQQ7wPis0B8C4ifAPEXgAADAL2XHrEO65hFAAAAAElFTkSuQmCC)}.goods-banner .swiper-pagination-fraction{top:69.333vw;right:0;left:auto;width:20vw}.goods-banner .swiper-pagination-fraction .swiper-pagination-current{font-size:4.8vw}.goods-con{top:-12vw}.rich-text-img img{max-width:100%;height:auto!important}.uinfo{top:18vw}.uinfoadd{padding:.8vw .8vw .8vw 1.333vw;background-image:linear-gradient(90deg,#edc9a3,#d9ac80)}.odslogan{top:64.667vw}.notice-shadow{position:absolute;left:0;right:0;bottom:-8vw;height:8vw;background-color:#fff;z-index:2}.notice{position:absolute;left:4vw;bottom:-8vw;-webkit-animation-name:noticeac;animation-name:noticeac;-webkit-animation-duration:4s;animation-duration:4s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-play-state:running;animation-play-state:running;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.introTitle::after{content:"";position:absolute;left:0;bottom:0;right:0;height:50%;background-color:#d1d1d1;z-index:0}.tx-shadow-e5::after{content:"";position:absolute;left:0;bottom:0;right:0;height:50%;background-color:#e5e5e5;z-index:0}.con-min60{min-width:8vw}.con-125{width:16.667vw}.con-180{width:24vw}.con-250{width:33.333vw}.con-270{width:36vw}.con-290{width:38.667vw}.con-340{width:45.333vw}.height-60{height:8vw}.height-70{height:9.333vw}.height-350{height:46.667vw}.height-500{height:66.667vw}.height-710{height:94.667vw}.height-1200{height:160vw}.select-more{width:23.333vw;margin-left:.667vw;padding:.4vw;border:#f6f6f6 1px solid;background-color:#f6f6f6;color:#666}.opt-line{margin:2.667vw auto 0 auto;width:14.4vw;height:.4vw;background-color:#1a1a1a}.actitle{max-width:78%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vertical10{vertical-align:1.333vw}.coupon1-con{background-repeat:repeat-y;background-size:100% auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAADCAIAAADEEUtaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrs1FEVABAQAEEnFZX0oZJWqHHvmYmwHxtntsKvYmwRIKe7elUBICeDBkjqCTAAq8cE0XkA84IAAAAASUVORK5CYII=)}.coupon1-con::after,.coupon1-con::before{content:" ";display:block;position:absolute;left:0;right:0;height:2.667vw;background-repeat:no-repeat;background-size:100% 100%}.coupon1-con::before{top:-2.4vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAAUCAYAAABVoO4uAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA6BJREFUeNrs3V1IU2EcBvDnnW1+57dmuYwyLVFv1HKlkiZGFgWx7MtIJVIqgryqiwgyCLo0k6BPMPoAwYIiIuiiCKHRTRcJUUJooFBGFIUarv87D0Vo2XI7O8bzg8cjjTX4K+/j2XbeKa/XC395O1w2ORRLKiWFkmxJhiRGYgfR74VLRv29k9rf4//vqeeCA56LIxw5EQXImOSzZEDyUvJM8lDikTVq3O91zZ8CluLVJXtQUidZwJ8FWbqAO1wO2OwjqvkRp05EMzf+TSr4C/BpCPjYD+/gc6DfAwz3vZVbr0raZa0aCGgBy0KWLIdWSaPEwZ8CzcA8yZBJBZyGyPhB1XCPUyei4Bnug7f3DvDi1ijGvl6Sfzkma9a76e5m+4tFbLsceiXNLF8KgKUmPlY24pycOBEFV+JiqNWHoHZ3O1BQ2wxbWK90545/LmC5s11yTr69LknmhClAVpn4WC6kLOPEicgcEXFQpYehtpxPlj/+r+kO1V3qVwHLHaLkcFvSxIlSgNWY+Vhq4UpOnIjMlbocautlYKFLd2i30anTF7DvjSsTZ73rOUUKgnJJVrAfRH6PsxAZXw4nC5iIQsARDVVzWla7qg26U41unfYMuE2yidOjIFGSoyY8zhGV51awzeHEiSg0ZP1RVceBRWW6U8/8sYCNN1zxaWcKtj2YuI48WGe/xYhKrEfBNk6aiKxRwnHOfbI27ZyygOWGJDm0c1pkgjBJpyQ2COWrN4PpVKUtYQiP4aSJKPT009HVJwBlazO6dtIZsNyKJE6KTJIj6UIAL20zXmPpQr47B1lrOWEisg59RUa+W3fsyV8K2Njhai8nRCarltxHAC5zMzaLeYAllev0ZQBERFajihoAe2Sj0bk/zoAPgJtsUGiskTzFDF4T9r3mq/+PPHe5qm7VT/NwqkRkPRHxQO5mh9G5UONnS/Rq9QYTH6ZAFCp6I/MrklOSV5P+cpxiK0rfpUb6HdVRSfWqrMUmZ7+cIhFZm9628sYuvV90pi7gEvmmh1Mhi9Cbkz+W3JU8Mcr4g3FbAiauIda7aW1EZEKZyncr5NeCb7giolmzyN2sA96/LtEXSVZwHGQh+jrhciM/hdmlZGOBufOB1Fwo5wr4Ntngdb5ENNtkFOsCrtCrVyGnQZZv5SZ+pCAR/SfrWVqefqqvSL/+m8NxEBERmSQhU3/N0QWczmkQERGZJDpFf03XBRzLaRAREZnE4ftwpNjvAgwAi1HI02QYPDkAAAAASUVORK5CYII=)}.coupon1-con::after{bottom:-2.4vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAAUCAYAAABVoO4uAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7xJREFUeNrs3V9ojXEYB/DveRsilMgFlgtSlCuZM8WFkhulRWqhyA1iFy6UsHKhuUFhGs0Q+TNzgZA1to7N0pmb44QxxjZtzGZr29l2jnN+nmd71cyx2XbOew59P/W872nv6X3Xs1+/Z7/3z+91RXLdvQDGgyiJuXZVMglE9H+IhGDyVgYt+djBbBARETkkGNBlhxbgRmaDiIjIIV3NumzUAlzNbBARETnk20ddVqfI4rnEemaEkpk5uxKYMAWYOguYuQiu1DQgdRlgpTA5RPRv9Wef/bqq0t6rlOmgZGqbEk8k7klUSNTo/4sIh4BA6zSJ+WjyLze+wrWYOG2Fa/EGFxZvlOI8mZkjon9Dg1eXpa5IrltPQ+t4eA6zQgkUkbgokWMX3V9EuwvanEmfL6v9mDR9q2vFXgvzVjGLRJTcWt/DXN/UIJ/mWtKxacd3hVmhBKqVcEtsj1Z8/0Tabo3EdgRa3ObhgVrjOSZVOcJsElHSMq/u6uqK1l7L/lmuRJCpoQQok0iT8I52B9KQvX378Bd5TPEhFmEiSk49bcDL20G75sKyOzAdDuczO+SwYok1El/HuiNpw7qP1Xj3+KEpP8HMElHyjX6rLgCh7gK75sIasC1booUpIofo428bEMMzL9Kog337fFFUjZpHzDARJY/m15C+SWvswZ8/sgZ0XrphN7NEDghLbEEcZmGTdtyp+zblx8Po7WSmiSjxgl0wxdl6eSzLrrUYPALWzuu6rM4yWxRnlzCGa75/UYS9CLRehO8GM01EiRX5DlNyGGivPyd909WBm6woX8+SuMOsUZzoc745DhznqPEXGW38REQJLb4fnmhN3TN4sxVl9KDX0TIlHjB7FAcejOBRozGMgmvQ3eZB/TNmnIicp6ed7++T3q5EJxXKtGsrhhsBa+elr2pYB56Opti77+SxTB0LMBE57MsrmJvbgLpKraEZdk39TcoQI4iQrHaYM+llsj4lMYNZpRh46uCxKvvuPCQickJPO0xVAeC/9RWRsN5wdW2or1vD7c++MWuhRB44WQeN3VsHj/UG7fXMOBHFl04vWXES5nJGEL7CPCm+C4crvkOOgAcVYZ3kYKeMho+g/1GlzRKzmXUahW+OHqu3ixknotjQmzpDAaDjs97VDNPkA+q9WoA/oX9K59M/J9n4q9pqjBnx7yCFWEfOSyV09vslEgvQ/zIHfSXNOP6VaAgTMIozKdFexjBsO/Xmj4f3fC9TTkQxopdmdYIBLbJv0P8638cSXvu9CiPyQ4ABAEERPcFzp2zfAAAAAElFTkSuQmCC)}.coupon2-con{background-repeat:repeat-y;background-size:100% auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAq4AAAADCAIAAADdgBpIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEJJREFUeNrs1kEBgCAQAEHPCkaghE2IQwobEIMqRLACGME/zETY18Z47gNWcqXIVQaAf2+frZw6AMDOrAAAbO0TYAC/KQcHQIRnPQAAAABJRU5ErkJggg==)}.coupon2-con::after,.coupon2-con::before{content:" ";display:block;position:absolute;left:0;right:0;height:3.2vw;background-repeat:no-repeat;background-size:100% 100%}.coupon2-con::before{top:-2.933vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAq4AAAAYCAYAAAA7839HAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABLpJREFUeNrs3VloXFUcx/H/mS3N0ixm05jEKaGZTtOOLQ2mqYQ2bdE21tgoSaTBYl/cwbRiH6zVB5+sGrBIRWoJQh8UF3wRoYgLFS0+aKkviigFLYobSNuX2Dr+TmYUxCVJM5N7R74f+OdMtjuXc7hzfjNz5l6XzWZtvrKHeivUXK6qUUUMwEym3PDkpwXZUqzMrG5JQXdOx3RCzUqGCQAwT7+qzqrOuHs+nJrvxtylBFdNau1qblL1q9ao2vy2GBtg1n5UNRZkS/Ud5kaPFjq4LrFI/Cu/bQAALtlvF8ymzpud/+Gibp/WT06o3la9riD781w3F5vDROaD6YBqj2qD8coqMB+LQ75/1XZZ0tzwJCMFAChAgL0YtV++6bDvTnVkv/5ozE4ff1bZ8g395oAC7ImCBldtuEfNM6pueh4oiDJVk+r7kO5fm1XUM0oAgMKIRM3qrpoul77RbOpcwr54ayj7ydEh5cw39Rd7FGA/m3EzMwTWuOop3fyA0AoU3PIQ71vK6pKMEACgOBJVZl3bze140VzvfVstXn5SmXN3/h3+uQdX/aNff/ee5ZYGsCwAKLx1Id63ta5xGSMEACiuSMxs9Zj/rEaZNaUn9JOXlUEr5xRc9Q+tat5X9dKjQNFsDuNO6fjX44LrtyvXMEIAgIVR3WJu6Dmz1NZb9N0xzUU1swqu+Vdaj6k66UWgqPpUzaEM1I2peqtsYIQAAAsnGje3ab/Z8u3+HcnX8qdm/Pfgqj+IqnlJlab3gKLzH468LYT7tdOltzE6AIAAOHPrHzRL9m3UNwf/M7jKPsudmxXAwrhflQjLzujJa9ISlaPWuYWRAQAElF0j5jY/albbfqfmpdF/DK76RUrNQ/QWsKD8evI7QrQ/+92qHTGFV0YGABAczUNu0yM+xD6tjFr7t+AqT1ju3JIAFtZjFoK1rnpgWGeVDbssM8qIAACC19xllh708+O+vwRXTVir1LCoDQiGfyZ5xAK8bLIeA/yVvCbd+r2OV1sBAGHhuncprcbv0jzV8GdwlXuDnDQB2A0W0FKd/Mmen7euoU5L9jESAIDwqGoy67y+Srdunw6umrQWqR2hZ4DA+SUDYwHc75PWsnrE9e1mBAAAoTN9idj8WXj86Xj8SyzVdAsQ/LGpekHln0weKfad5V9pnbCm9LgbOODfimEEAADhc8VKs/LajOatNr9UgNNfAeHhz6V8WPV4/ollsUKrX1f7qrV2j7vBg7lrRgMAEErO8ldz7PfBNUOHAGE7Qm2v6l1VqgihdYPu4mPLjA65bROEVgBA+CfGxmW+yfhXdJbSHUAoXas6pTpkfh2q2Zl5BtYVah62mtYR1/eAs/a19DAAoDTUJf3XlA+uTfQGEFr+qlrjqrtVr1huDew7qguzDKsVagZVO62iYYu7+lZnmWGzaIKeBQCUjkXT1yCo98F1Mb0BhJ6/OMhYvs6qjqtOqj63n778VgH1nOXWxPqTsLapOlU9Fon1WNs1Cbf0OrOOjQqsfAALAFCC4uX+a5Wf6KL0BlBS/JPNgXzlDub6DjMXzd2ubDRXq+zq1wM1r/jjYAcAoOTF6AKgxFW3mLv5MP0AAPjfi9AFAAAAKAW/CzAAPsfWAh3bmyAAAAAASUVORK5CYII=)}.coupon2-con::after{bottom:-2.933vw;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAq4AAAAYCAYAAAA7839HAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABNhJREFUeNrs3VtoHFUcx/HfbpOK7YOVEvQlQgmKDxpBpbUgWPsQpA8KSkjBoIgWwYdK4+3JBy32IUKtkBYVJGpT6RY1pVarmBpLdBOlkpK0jUlR0+bS5maTmEuzSfb4P2YbTIi5dZOdLd8P/Gd2J+3Z4T/Mnn8mZ86E4nsfcAKQvtbmKFRQRh4AANevnt/lIoX1YTIBAACAdJBBCoA0198u98U2KbRCyrxRWp2l0JpsKetO6Za7JrYBAHCdFK7jFitIBZA2/raosjhl0ajR4Yu6dHogcT6vtsh20h223qBwxgZlr18Zuj1PytlsZ3om2QMApHXh6jvBNaQCCLQRi88sPraotBib/MksY1zdvo2rdD76qDsffUrRkkdC92wNKTffCtiVZBQAkD5Gh/1ywI9x7SQbQGDFLPZY5FgUWnw3pWidQ+iF6iGLgxZbNNSd66pLIu7gk04XasgsACB9XOn1yx5fuJ4jG0Ag/WSRa7HDou1aG7Pi9bTFVvW1bnZHi/50P1o9HB8lywCA4Lvc7JeNvnCtIxtAoPgp6ootNvmTNNmNW/H6g33EvaqLlFsBK8UGyDgAINgdY9dvflXnC9dK0gEEhr9ZcpvFa1rAkIBFFK/+by5PqPXkHndkO8UrACDIZavU9qt/UekLV393cj9JAYJwZuppiw+X48OseHUWO9TZsNt9/SrDBgAAwXSxXhrurbM+qyVsiyu26RBZAVLudYsDKfjcl9Vee8hVvcMRAAAEjmv40q/2+8XVJ2ft1cTVHgCp8ZXFrlR8sL/yaqvndKa8Sc1VHAkAQHAMdEpN3/rxbB9NFq7WcfmJzI+SHSAl/HjTZ1P5y6N9B/j5nJ9xJ4qdYoMcEQBAILiTpX4o23vWT3VPFq4Jr2hiknMAy8sPEehI9U7Yl0JUg92lqotwRAAAqddxRmo44vvHt65uCv+n0/LT7uwiS8CyarX4IED7s9Od+nSMq64AgJSyfsgdf1Ny8RcTM+FMLVwTfEXL9FjA8nlXE0/HCgT7cmi2L4uImr7hyAAAUsPF5SrekHovvG/90pQ/A4andVp+DskCiwayBiw5P0/r/gDu1yeugSHvAICUVK1yJ96Wmqu+tzfbp/90+hVXX7x22SrPoonkAUvK38LfEcD9qlBXY48GuzlCAIDlMz4qd3yndPZw1N49bjVpbM7CNVG8+nF3D1pUk0VgCQvEALLzP26/8VYmnlICAMDS62+XK39eajz2ub3Ls76ob6Z/Fp6l8/JXXh+y2G0RJ6NA0kUDvG81iedCAwCwdOJjUu0BuUjhiDobimxLvtWg/3uHcMZsbdl/9M+AfMnt2+ifrFVicT8ZBpLmbID3rVGXmzlCAIClERuQzlXI1ZZJ/W3HbEuR1Z1zXjHJmE/b1tDPVryut5dbfMMWmzTL1VoAc/JzJncGeP9aNNTDUQIAJEd8XOprlS7VybX84m++imlsxD81stjqzJr5NhNybuEP67Ei9jZbPWbxsMV9Ftm+LY4KMG/+zqespLS0NkehgrKk7pyd4+sUzvzDtw0AwOIL1rF/52TVYNe4vW62Lb5I9TMGHLaC9a+FNreownWGTm6VrW61uElciQXmIxbKL61PSksZN0g3r0t24brSVndzmAAA18gPO/WPFW+baZaAhfpHgAEAXp6If3TbkpcAAAAASUVORK5CYII=)}.max-height-165{max-height:22vw}.text-index-56{text-indent:7.467vw}@-webkit-keyframes noticeac{0%{bottom:-60px}70%{opacity:1}100%{bottom:220px;opacity:0}}@keyframes noticeac{0%{bottom:-60px}70%{opacity:1}100%{bottom:220px;opacity:0}}.poster{width:100vw;min-height:60vh}.poster .p-swiper{width:100vw;min-height:60vh}.poster .swiper-container{width:100%;min-height:60vh}.poster .swiper-container .swiper-slide{width:100%;min-height:60vh;background-size:contain;background-position:center;overflow-y:auto}.poster .swiper-pagination-fraction{position:fixed;top:6.667vw;bottom:auto;left:auto;right:0;width:auto;padding:2vw 4vw;background-color:rgba(0,0,0,.8);font-size:30;color:#fff}.msg{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000}.msg .msgBgPoster{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.95)}.msg .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.8)}.msg .msgMainPoster{position:absolute;position:fixed;width:70%;left:50%;top:10%;transform:translate(-50%,0);z-index:9999}.msg .msgMain{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999}.msg .msgMain i.posterClose{position:absolute;top:-9.333vw;right:1.333vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msg .msgMain i.posterClose::after,.msg .msgMain i.posterClose::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msg .msgMain i.posterClose::before{transform:translate(-50%,-50%) rotate(-45deg)}.msg .msgMain i.posterClose::after{transform:translate(-50%,-50%) rotate(45deg)}.msg .msgMain i.posterClose span{display:block;position:absolute;top:6.4vw;left:2.933vw;height:2.667vw;border-left:.4vw solid #fff}.msg .msgMain i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:-8.267vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msg .msgMain i.close::after,.msg .msgMain i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msg .msgMain i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.msg .msgMain i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.msg .msgMain .msgPoster{width:80vw}.msg .msgMain .postercon{max-height:120vw;overflow-y:auto}.msg .msgMain .content{width:80vw;background-color:#fff;border-radius:1.333vw;padding:5.333vw}.msg .msgMain .content .word h2{font-size:4.8vw;padding-bottom:2vw}.msg .msgMain .content .word .desc{max-height:65vh;overflow-y:auto}.msg .msgMain .content .word p{margin:0 auto;color:#333;line-height:1.7}.msg .msgMain .content .opt{text-align:center;padding-top:2.667vw}.msg .msgMain .content .opt .btn{width:80%;height:9.333vw;line-height:9.333vw;display:inline-block;background-color:#4ca6ff;color:#fff;border-radius:133.333vw;font-size:3.733vw}.msg.msg-qrcode .content{width:62.667vw;background-size:100% auto;background-position:bottom center;background-repeat:no-repeat}.msg.msg-qrcode .content .time em{color:#0074f6}.msg.msg-qrcode .content .time span{margin-left:.667vw;text-decoration:underline}.msg.msg-qrcode .content .qrcode{padding-bottom:12vw;margin:8vw auto 0;width:33.333vw}.msg.msg-qrcode .content .qrcode span{display:block;background-color:#58bafe;border-radius:1.333vw;height:6.933vw;line-height:6.933vw}.msg.msg-tips .msgMain{width:77.333vw;min-height:54.667vw;border-radius:1.333vw;background-size:100% auto;background-repeat:no-repeat;background-position:bottom center}.msg.msg-tips .hd{height:11.733vw;line-height:11.733vw;background-color:#fafafa;border-top-left-radius:1.333vw;border-top-right-radius:1.333vw}.msg.msg-tips .bd{max-height:80vw;overflow:auto;line-height:1.7}.swiper-container{position:absolute;width:100%;height:100%}.swiper-container .swiper-slide{width:100%;height:100%;background-size:contain;background-position:center}.imgshow{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000}.imgshow .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.6)}.imgshow i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:2.667vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.imgshow i.close::after,.imgshow i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.imgshow i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.imgshow i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.imgshow img{max-width:100vw;max-height:80vh}.msgPoster .msgBgPoster{position:fixed;left:0;top:0;bottom:0;right:0;width:100%;height:100%;background-color:rgba(0,0,0,.8);z-index:4}.msgPoster .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.8)}.msgPoster .msgMainPoster{position:absolute;position:fixed;width:70%;left:50%;top:5%;transform:translate(-50%,0);z-index:9999}.msgPoster .msgMain{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999}.msgPoster .msgMain i.posterClose{position:absolute;top:-9.333vw;right:1.333vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msgPoster .msgMain i.posterClose::after,.msgPoster .msgMain i.posterClose::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msgPoster .msgMain i.posterClose::before{transform:translate(-50%,-50%) rotate(-45deg)}.msgPoster .msgMain i.posterClose::after{transform:translate(-50%,-50%) rotate(45deg)}.msgPoster .msgMain i.posterClose span{display:block;position:absolute;top:6.4vw;left:2.933vw;height:2.667vw;border-left:.4vw solid #fff}.msgPoster .msgMain i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:-8.267vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.msgPoster .msgMain i.close::after,.msgPoster .msgMain i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.msgPoster .msgMain i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.msgPoster .msgMain i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.msgPoster .msgMain .msgPoster{width:80vw}.msgPoster .msgMain .postercon{max-height:120vw;overflow-y:auto}.msgPoster .msgMain .content{width:80vw;background-color:#fff;border-radius:1.333vw;padding:5.333vw}.msgPoster .msgMain .content .word h2{font-size:4.8vw;padding-bottom:2vw}.msgPoster .msgMain .content .word .desc{max-height:65vh;overflow-y:auto}.msgPoster .msgMain .content .word p{margin:0 auto;color:#333;line-height:1.7}.msgPoster .msgMain .content .opt{text-align:center;padding-top:2.667vw}.msgPoster .msgMain .content .opt .btn{width:80%;height:9.333vw;line-height:9.333vw;display:inline-block;background-color:#4ca6ff;color:#fff;border-radius:133.333vw;font-size:3.733vw}.msgPoster.msg-qrcode .content{width:62.667vw;background-size:100% auto;background-position:bottom center;background-repeat:no-repeat}.msgPoster.msg-qrcode .content .time em{color:#0074f6}.msgPoster.msg-qrcode .content .time span{margin-left:.667vw;text-decoration:underline}.msgPoster.msg-qrcode .content .qrcode{padding-bottom:12vw;margin:8vw auto 0;width:33.333vw}.msgPoster.msg-qrcode .content .qrcode span{display:block;background-color:#58bafe;border-radius:1.333vw;height:6.933vw;line-height:6.933vw}.msgPoster.msg-tips .msgMain{width:77.333vw;min-height:54.667vw;border-radius:1.333vw;background-size:100% auto;background-repeat:no-repeat;background-position:bottom center}.msgPoster.msg-tips .hd{height:11.733vw;line-height:11.733vw;background-color:#fafafa;border-top-left-radius:1.333vw;border-top-right-radius:1.333vw}.msgPoster.msg-tips .bd{max-height:80vw;overflow:auto;line-height:1.7}.swiper-container{position:absolute;width:100%;height:100%}.swiper-container .swiper-slide{width:100%;height:100%;background-size:contain;background-position:center}.imgshow{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000}.imgshow .msgBg{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.6)}.imgshow i.close{position:absolute;left:50%;transform:translateX(-50%);bottom:2.667vw;width:6.667vw;height:6.667vw;border-radius:100%;border:.4vw solid #fff}.imgshow i.close::after,.imgshow i.close::before{position:absolute;left:50%;top:50%;content:"";width:3.333vw;height:.267vw;background-color:#fff}.imgshow i.close::before{transform:translate(-50%,-50%) rotate(-45deg)}.imgshow i.close::after{transform:translate(-50%,-50%) rotate(45deg)}.imgshow img{max-width:100vw;max-height:80vh} \ No newline at end of file