/* 公告与通知 - 全站样式 (PC+自适应) */
.nc-hide{display:none!important;}
/* 顶栏图标（点击用 document 事件委托，动态插入也能点） */
.ncTopLink{position:relative;display:inline-block;vertical-align:middle;margin:0 4px;text-decoration:none!important;}
.ncTopLink .ncIc{width:26px;height:26px;display:inline-block;vertical-align:middle;border-radius:50%;background:linear-gradient(135deg,#4facfe 0%,#2f80ed 100%);box-shadow:0 2px 6px rgba(47,128,237,.35);position:relative;}
.ncTopLink .ncIc.ncMail{background:linear-gradient(135deg,#ff9a9e 0%,#f6416c 100%);box-shadow:0 2px 6px rgba(246,65,108,.35);}
/* 【v22 修复】原写法 url('data:image/svg+xml;utf8,<svg ...>') 里 < > " 未做 URL 编码，
   部分手机浏览器解析失败 → mask 失效 → ::after 变成白色方块（表现为「图标显示异常/消失」）。
   改为 URL 编码的 background-image，只使用 %3C %3E %23 %27，全平台通用；
   即使加载失败也只是「没有白色图案」，仍是一个完整的彩色圆点，不会出现白块。 */
.ncTopLink .ncIc::after{content:'';position:absolute;left:5px;top:5px;right:5px;bottom:5px;background-repeat:no-repeat;background-position:center;background-size:contain;}
.ncTopLink .ncIc.ncMsg::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M4 4h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4l-4 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2zm2 4v2h12V8H6zm0 4v2h8v-2H6z'/%3E%3C/svg%3E");}
.ncTopLink .ncIc.ncMail::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2zm8 8L4 7v10h16V7l-8 5z'/%3E%3C/svg%3E");}
.ncTopLink .ncBadge{position:absolute;top:-5px;right:-8px;min-width:16px;height:16px;line-height:16px;border-radius:8px;background:#ff4d4f;color:#fff;font-size:11px;text-align:center;padding:0 4px;z-index:2;}
/* 新消息精美提示卡片 */
.ncTipBar{position:fixed;left:50%;top:12px;transform:translateX(-50%);z-index:999999;box-sizing:border-box;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);padding:11px 14px 13px;background:rgba(255,255,255,.95);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);color:#1f2329;border:1px solid rgba(47,128,237,.20);border-radius:16px;box-shadow:0 18px 46px rgba(20,48,97,.18),0 4px 14px rgba(20,48,97,.08);cursor:pointer;overflow:hidden;animation:ncTipIn .5s cubic-bezier(.21,1.02,.73,1);will-change:transform,opacity;}
.ncTipBar::before{content:'';position:absolute;left:0;right:0;top:0;bottom:0;border-radius:16px;background:linear-gradient(135deg,rgba(255,255,255,.95) 20%,rgba(230,243,255,.55));pointer-events:none;}
.ncTipIc{position:relative;flex:none;width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#4facfe 0%,#2f80ed 100%);box-shadow:0 6px 14px rgba(47,128,237,.35);display:flex;align-items:center;justify-content:center;}
.ncTipIc::after{content:'';width:20px;height:20px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0'/%3E%3C/svg%3E") center/contain no-repeat;}
.ncTipTxt{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;}
.ncTipTxt b{display:block;font-size:14px;line-height:1.3;color:#142c4b;font-weight:600;letter-spacing:.2px;}
.ncTipTxt i{display:block;font-style:normal;font-size:12px;line-height:1.4;color:#7189a6;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ncTipBtn{position:relative;flex:none;background:linear-gradient(135deg,#4facfe,#2f80ed);color:#fff;border-radius:18px;padding:7px 14px;font-size:12px;font-weight:600;letter-spacing:.5px;text-decoration:none;box-shadow:0 4px 10px rgba(47,128,237,.3);}
.ncTipClose{position:absolute;right:8px;top:6px;z-index:2;width:20px;height:20px;line-height:18px;text-align:center;color:#9fb0c3;background:rgba(0,0,0,.05);border:none;border-radius:50%;cursor:pointer;font-size:15px;padding:0;}
.ncTipClose:hover{color:#4a5a6b;background:rgba(0,0,0,.1);}
.ncTipProgress{position:absolute;left:0;right:0;bottom:0;z-index:2;height:3px;background:linear-gradient(90deg,#4facfe,#2f80ed);animation:ncTipCount 6s linear forwards;}
@keyframes ncTipIn{from{opacity:0;transform:translate(-50%,-16px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes ncTipCount{from{width:100%}to{width:0}}
/* 大弹窗通用 */
.ncOverlay{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.55);z-index:999999;display:none;align-items:center;justify-content:center;}
.ncOverlay.show{display:flex;}
.ncBox{background:#fff;border-radius:8px;width:760px;max-width:96vw;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 6px 30px rgba(0,0,0,.3);}
.ncBoxHead{background:#f5f7fa;border-bottom:1px solid #e5e7eb;padding:12px 18px;display:flex;align-items:center;}
.ncBoxHead .ncTitle{font-size:16px;font-weight:700;flex:none;margin-right:12px;}
.ncBoxHead .ncX{width:30px;height:30px;text-align:center;line-height:28px;font-size:20px;color:#888;cursor:pointer;border-radius:4px;margin-left:auto;}
.ncBoxHead .ncX:hover{background:#eee;color:#333;}
.ncTabBar{display:flex;border-bottom:1px solid #eee;background:#fafafa;}
.ncTab{flex:1;text-align:center;padding:10px 0;cursor:pointer;color:#555;position:relative;}
.ncTab.active{background:#fff;color:#1890ff;font-weight:700;border-bottom:2px solid #1890ff;}
.ncTab .ncBadge{position:static;display:inline-block;margin-left:4px;vertical-align:middle;}
.ncBody{flex:1;overflow:auto;padding:14px;min-height:300px;background:#fff;}
/* 客服弹窗：聊天记录独立滚动，回复区固定底部 */
.ncBody.csBody{display:flex;flex-direction:column;overflow:hidden;padding:0;}
.ncBody.csBody .ncChatWrap{flex:1;min-height:0;overflow-y:auto;padding:14px 14px 6px;box-sizing:border-box;margin:0;}
.ncBody.csBody .ncReply{flex:none;border-top:1px solid #eee;background:#fff;padding:8px 14px 10px;}
.ncBtn{margin-left:6px;padding:6px 12px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#333;cursor:pointer;}
.ncBtn.primary{background:#1890ff;border-color:#1890ff;color:#fff;}
.ncBtn.ncWx{background:#07c160;border-color:#07c160;color:#fff;}
.ncBtn.ncWx:hover{background:#06ad56;border-color:#06ad56;}
.ncBtn.ncQq{background:#e64340;border-color:#e64340;color:#fff;}
.ncBtn.ncQq:hover{background:#d63330;border-color:#d63330;}
#ncMsgOverlayCs .ncTabBar .ncBtn{margin-left:4px;margin-right:0;}
#ncMsgOverlayCs .ncTabBar .ncBtn:last-child{margin-right:18px;}
/* 客服悬浮球：可拖动 */
.ncFloat{position:fixed;right:14px;bottom:14px;z-index:9980;display:none;width:62px;height:62px;border-radius:50%;background:linear-gradient(135deg,#4facfe 0%,#2f80ed 100%);box-shadow:0 6px 18px rgba(47,128,237,.45);cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;align-items:center;justify-content:center;}
.ncFloat.ncFloatDragging{cursor:grabbing;opacity:.9;}
.ncFloatIc{width:30px;height:30px;pointer-events:none;display:block;}
.ncSetting{text-align:right;padding:6px 14px;background:#fafafa;border-top:1px solid #eee;}
.ncSetting label{display:inline-flex;align-items:center;gap:4px;cursor:pointer;}
.ncSetting input[type=checkbox]{width:16px;height:16px;flex:none;margin:0;}
.ncToggle{margin-left:6px;padding:6px 12px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#555;cursor:pointer;font-size:13px;line-height:1.5;display:inline-flex;align-items:center;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.ncToggle:first-child{margin-left:0;}
.ncToggle.on{background:#1890ff;border-color:#1890ff;color:#fff;}
.ncToggle.ncGreen{background:#52c41a;border-color:#52c41a;color:#fff;}
/* 客服消息会话 */
.ncSess{border:1px solid #eee;border-radius:6px;margin-bottom:8px;padding:10px;cursor:pointer;display:flex;align-items:center;}
.ncSess:hover{background:#f7fbff;}
.ncSess .ncUnread{margin-left:auto;min-width:18px;height:18px;border-radius:9px;background:#ff4d4f;color:#fff;text-align:center;font-size:11px;line-height:18px;padding:0 4px;}
.ncChatWrap{margin-bottom:8px;}
.ncChat{margin:4px 0;}
.ncChat .who{font-size:12px;color:#999;}
.ncChat .txt{display:inline-block;max-width:80%;margin-top:3px;padding:6px 10px;border-radius:6px;background:#f0f0f0;}
.ncChat.admin .who{color:#1890ff;}
.ncChat.admin .txt{background:#e6f7ff;}
.ncChat.me .txt{background:#f6ffed;}
.ncChat.hasCard{cursor:pointer;}
.ncChatTyping{color:#999;font-size:12px;padding:6px 2px;display:flex;align-items:center;gap:6px;}
.ncChatTyping .ncTypingDots{display:inline-flex;gap:3px;align-items:center;}
.ncChatTyping .ncTypingDots i{width:5px;height:5px;border-radius:50%;background:#bbb;animation:ncTypingBlink 1.2s infinite;}
.ncChatTyping .ncTypingDots i:nth-child(2){animation-delay:.2s;}
.ncChatTyping .ncTypingDots i:nth-child(3){animation-delay:.4s;}
@keyframes ncTypingBlink{0%,60%,100%{opacity:.25}30%{opacity:1}}
/* 系统消息（新：卡片式，可点击查看详情） */
.ncSysCard{display:flex;gap:10px;align-items:flex-start;background:#f8fafc;border:1px solid #eef0f4;border-radius:10px;padding:10px 12px;margin-bottom:9px;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;}
.ncSysCard:hover{background:#f0f5ff;border-color:#c9dcff;box-shadow:0 3px 10px rgba(24,144,255,.08);}
.ncSysCard.unread{border-color:#f3c0c4;background:#fff7f7;}
.ncSysCard .ncSysIc{flex:none;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:18px;background:#fff;border:1px solid #e5e8ef;border-radius:50%;}
.ncSysCard.unread .ncSysIc{background:#fff1f0;border-color:#ffa39e;}
.ncSysCard .ncSysMain{flex:1;min-width:0;display:flex;flex-direction:column;}
.ncSysCard .ncSysHead{display:flex;align-items:center;gap:6px;width:100%;}
.ncSysCard .ncSysTitle{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:#1f2329;}
.ncSysCard .ncSysTime{flex:none;color:#aaa;font-size:12px;}
.ncSysCard .unread-dot{flex:none;width:8px;height:8px;border-radius:4px;background:#ff4d4f;margin:0;}
.ncSysCard .ncSysPrev{display:block;margin-top:5px;color:#6b7280;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5;}
/* 兼容旧样式（如有残留历史调用） */
.ncSys{border-bottom:1px dashed #eee;padding:8px 2px;}
.ncSys .t{font-weight:700;}
.ncSys .time{float:right;color:#aaa;font-size:12px;}
.ncSys .unread-dot{display:inline-block;width:8px;height:8px;border-radius:4px;background:#ff4d4f;margin-left:6px;}
/* 公告弹窗 */
.ncNoticeOverlay{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.6);z-index:1000000;display:none;align-items:center;justify-content:center;}
.ncNoticeOverlay.show{display:flex;}
.ncNoticeBox{background:#fff;border-radius:10px;width:720px;max-width:95vw;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,.35);}
.ncNoticeBoxHead{display:flex;align-items:center;padding:10px 14px;border-bottom:1px solid #eee;background:#fafafa;}
.ncNoticeTitle{flex:1;font-weight:700;font-size:15px;}
.ncNoticeBoxHead .ncX{width:28px;height:28px;text-align:center;line-height:26px;font-size:18px;color:#888;cursor:pointer;border-radius:50%;}
.ncNoticeBoxHead .ncX:hover{background:#eee;}
.ncNoticeContent{flex:1;overflow:auto;padding:14px;word-break:break-word;}
.ncNoticeContent img{max-width:100%;}
.ncNoticeContent video{max-width:100%;}
.ncNoticeFoot{display:flex;align-items:center;padding:10px 14px;border-top:1px solid #eee;background:#fafafa;}
.ncNoticeFoot .ncPrev,.ncNoticeFoot .ncNext{padding:7px 14px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;cursor:pointer;}
.ncNoticeFoot .ncCount{margin:0 10px;color:#888;font-size:13px;}
.ncNoticeFoot .ncRight{margin-left:auto;display:flex;align-items:center;}
.ncNoticeFoot label{cursor:pointer;color:#666;font-size:13px;margin-right:8px;}
.ncKnow{background:#ff7d1f;border:none;color:#fff;padding:8px 18px;border-radius:20px;cursor:pointer;font-weight:700;}
.ncKnow:hover{opacity:.9;}
/* 滚动广播（右→左，与导航菜单同宽 1200，蓝色渐变醒目） */
.ncBroadcastHost{width:1200px;max-width:100%;margin:0 auto;padding:6px 0 0;box-sizing:border-box;}
.ncBroadcast{overflow:hidden;position:relative;white-space:nowrap;height:44px;line-height:44px;background:linear-gradient(90deg,#56a8ff 0%,#2f80ed 45%,#1e63d8 100%);border:none;border-radius:8px;box-shadow:0 4px 14px rgba(47,128,237,.35);}
.ncBroadcast:before{content:'';position:absolute;top:0;left:-70%;width:45%;height:100%;background:linear-gradient(105deg,rgba(255,255,255,0),rgba(255,255,255,.32),rgba(255,255,255,0));transform:skewX(-20deg);animation:ncShine 3.2s ease-in-out infinite;z-index:2;}
@keyframes ncShine{0%{left:-70%}55%,100%{left:135%}}
.ncBroadcast .ncBtag{position:absolute;left:0;top:0;bottom:0;z-index:3;min-width:58px;padding:0 8px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#6db7ff 0%,#2f80ed 100%);border-right:1px solid rgba(255,255,255,.28);}
.ncBtag svg{display:block;filter:drop-shadow(0 1px 1px rgba(10,60,170,.35));}
.ncBtag svg .ncw1,.ncBtag svg .ncw2{animation:ncWave 1.4s ease-in-out infinite;}
.ncBtag svg .ncw2{animation-delay:.22s;}
@keyframes ncWave{0%,100%{opacity:.35}50%{opacity:1}}
.ncBroadcast .ncBtrack{position:absolute;top:0;left:0;white-space:nowrap;height:42px;line-height:42px;z-index:1;}
.ncBroadcast .ncBtrack span{display:inline-block;padding-left:16px;font-size:16px;font-weight:700;color:#fff;letter-spacing:.5px;text-shadow:0 1px 2px rgba(10,60,170,.4);}
/* 响应式 */
@media (max-width: 768px){
  .ncBox{width:94%;max-width:94vw;}
  .ncNoticeBox{width:94%;max-width:94vw;}
  .ncIc{width:22px;height:22px;}
  .ncTipBar{top:10px;gap:8px;padding:9px 10px 11px;}
  .ncTipIc{width:34px;height:34px;border-radius:10px;}
  .ncTipIc::after{width:17px;height:17px;}
  .ncTipBtn{padding:6px 10px;}
  .ncTipClose{right:5px;top:5px;width:18px;height:18px;line-height:16px;font-size:13px;}
  /* 修复移动端客服弹窗底部“静音/关闭新消息通知”无法点击/被裁切 */
  .ncOverlay{overflow-y:auto;}
  .ncBox{margin:auto;}
  .ncBody{min-height:0;}
  .ncSetting{position:sticky;bottom:0;z-index:5;flex:none;background:#fafafa;padding:8px 12px;box-shadow:0 -2px 6px rgba(0,0,0,.04);}
  .ncSetting label{padding:4px 0;}
  .ncSetting .ncToggle{padding:9px 14px;font-size:14px;border-radius:6px;}
  .ncFloat{width:58px;height:58px;}
  .ncFloatIc{width:28px;height:28px;}
  .ncBody.csBody .ncChatWrap{padding:10px 10px 4px;}
}
/* 媒体消息 */
.ncMedia{margin-top:4px;}
.ncMedia .ncImg{max-width:240px;max-height:240px;border-radius:6px;display:block;margin:3px 0;cursor:pointer;}
.ncMedia .ncVideo{max-width:280px;max-height:240px;border-radius:6px;display:block;margin:3px 0;background:#000;width:100%;}
.ncMedia .ncFile{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #d9d9d9;border-radius:6px;padding:6px 10px;margin:3px 0;max-width:300px;min-width:180px;box-sizing:border-box;}
.ncMedia .ncFile .ncFileNm{flex:1;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;}
.ncMedia .ncFile .ncFileBtn{background:#1890ff;color:#fff;border-radius:4px;padding:4px 14px;text-decoration:none;font-size:12px;flex-shrink:0;cursor:pointer;}
.ncMedia .ncFile .ncFileBtn:hover{background:#40a9ff;}
.ncReplyBtns{display:flex;align-items:center;gap:8px;padding-top:6px;}
.ncReply textarea{width:100%;height:70px;box-sizing:border-box;border:1px solid #ccc;border-radius:4px;padding:6px;resize:none;}
.ncAttPicks{font-size:12px;color:#666;padding-top:4px;}
.ncAttPicks span{display:inline-block;background:#e6f4ff;border:1px solid #91caff;border-radius:4px;padding:1px 6px;margin:2px 4px 0 0;color:#0958d9;}
/* 客服在线状态 */
.ncCsStatus{font-size:12px;padding:2px 10px;border-radius:10px;margin-right:10px;line-height:18px;}
.ncCsStatus.on{background:#e6ffed;color:#389e0d;border:1px solid #b7eb8f;}
.ncCsStatus.off{background:#fff1f0;color:#cf1322;border:1px solid #ffa39e;}
