﻿*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow:hidden;background:#f7f7f7;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body{overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}
input,textarea,button,select{font-family:inherit;font-size:14px;outline:none}
button{cursor:pointer;border:none;background:none;color:inherit}
img{-webkit-user-drag:none;user-select:none}
/* ===== 全局动画：页面切换/点击动效 ===== */
.page{animation:pageIn .28s cubic-bezier(.36,.66,.31,.98);animation-fill-mode:both}
@keyframes pageIn{from{opacity:.35;transform:translate3d(26px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pageInUp{from{opacity:.4;transform:translate3d(0,18px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pageOut{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-22px,0,0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}
@keyframes scaleIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200px 0}100%{background-position:200px 0}}
.page.page-up{animation:pageInUp .28s cubic-bezier(.36,.66,.31,.98)}
.page.page-back{animation:pageOut .22s ease}

/* ===== 全局按压反馈(原生 App 触感) ===== */
button,.p-ai,.p-si,.nitem,.post-card,.forum-card,a,.notif-cat,.notif-item-row,.msg-item,.soft-row,.nav-card,.disc-tab,.bitem,.ftab,.top-tab,.content-tab,.top-search,.top-avatar,.sys-row{cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button:active,.nitem:active,.top-search:active,.top-avatar:active,.p-ai:active{opacity:.55;transition:opacity .12s ease}
.post-card:active,.forum-card:active,.soft-row:active,.nav-card:active,.msg-item:active,.notif-cat:active,.notif-item-row:active,.sys-row:active{opacity:.75;transition:opacity .15s ease}
.disc-tab:active,.bitem:active,.ftab:active,.top-tab:active,.content-tab:active{opacity:.6;transition:opacity .12s ease}
.p-si{transition:background .15s ease}
.p-si:active{background:#fff0f5!important}

/* ===== 点击水波纹 ===== */
.ripple{position:absolute;border-radius:50%;background:rgba(0,0,0,.08);transform:scale(0);animation:rippleEffect .45s linear forwards;pointer-events:none;opacity:0}
@keyframes rippleEffect{0%{transform:scale(0);opacity:.5}100%{transform:scale(4);opacity:0}}
/* 兜底：动画结束后 transform 归零, 避免残留 scale */
.ripple{animation-fill-mode:forwards}

/* ===== 骨架屏/加载 shimmer ===== */
.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e8e8e8 50%,#f0f0f0 75%);background-size:200px 100%;animation:shimmer 1.2s infinite}

/* ===== 页面滚动条美化 ===== */
#app::-webkit-scrollbar{width:4px}
#app::-webkit-scrollbar-track{background:transparent}
#app::-webkit-scrollbar-thumb{background:rgba(0,0,0,.12);border-radius:2px}
#app::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.2)}
html,body{height:100%;margin:0;padding:0}
:root{--primary:#ff4785;--primary-dark:#e0256a;--primary-light:#ff8cae;--bg:#f8f9fa;--card:#ffffff;--line:#eef0f4;--text:#2d3436;--text2:#666;--text3:#999}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;max-width:640px;margin:0 auto;width:100%;overflow:hidden}
#app{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;width:100%}
/* 所有 page 底部留出 bnav 高度 + 安全区, 否则内容最后一行被底栏遮住无法滑到底 */
.page{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px));overflow-x:hidden}
.page:not(.active){padding-bottom:0}
/* 排行榜/消息/通知/签到等滚动列表, 末尾再加 80px 确保视觉上"到底了" */
#rankList,#sysNotifList,#chatUserList,#chatPageMessages,#discPosts,#forumPosts,#postGrid,#userPosts,#notifDetailList,.list-scroll,#checkinRankList{padding-bottom:80px!important}
.page{display:none}
.page.active{display:block}

/* ===== 双端自适应：桌面端（>768px） ===== */
@media (min-width:768px){
  body{max-width:680px;box-shadow:0 0 40px rgba(0,0,0,.08);border-left:1px solid #f0f0f0;border-right:1px solid #f0f0f0;background:#f0f1f4}
  .post-grid{max-width:640px;margin:0 auto}
  .banner-carousel{aspect-ratio:2.4/1}
  .forum-card{transition:transform .2s ease,box-shadow .2s ease}
  .forum-card:hover{transform:translateY(-2px)!important;box-shadow:0 6px 18px rgba(255,71,133,.15)!important}
  .p-head{border-radius:0 0 24px 24px}
  .auth-page .auth-card{max-width:420px}
}

/* ===== 性能优化：图片懒加载淡入 + 全局动效 ===== */
img[loading="lazy"]{animation:imgFade .4s ease}
@keyframes imgFade{from{opacity:0}to{opacity:1}}
.post-card{transition:transform .15s ease,box-shadow .15s ease}
.post-card:active{opacity:.75;transition:opacity .15s ease}
@keyframes popIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
@keyframes bellWiggle{0%,100%{transform:rotate(0)}10%{transform:rotate(15deg)}20%{transform:rotate(-12deg)}30%{transform:rotate(10deg)}40%{transform:rotate(-6deg)}50%{transform:rotate(0)}}

/* ===== 骨架屏加载 ===== */
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
.skeleton-card{background:#fff;border-radius:10px;padding:12px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.skeleton-line{height:12px;border-radius:6px;margin-bottom:8px;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 37%,#f0f0f0 63%);background-size:400px 100%;animation:shimmer 1.2s infinite}
.skeleton-line.w60{width:60%}.skeleton-line.w80{width:80%}.skeleton-line.w40{width:40%}
.skeleton-img{height:80px;border-radius:6px;margin-bottom:8px;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 37%,#f0f0f0 63%);background-size:400px 100%;animation:shimmer 1.2s infinite}

/* 底部导航 - 唯一一份，固定悬浮 */
.bnav{position:fixed;bottom:0;left:0;right:0;height:60px;background:rgba(255,255,255,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid #e2e8f0;display:flex;align-items:stretch;z-index:1000;padding:0;max-width:640px;margin:0 auto;padding-bottom:env(safe-area-inset-bottom,0)}
.nitem{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;color:#999;font-size:16px;font-weight:600;text-decoration:none;-webkit-tap-highlight-color:transparent;cursor:pointer;border:none;background:none;font-family:inherit;transition:color .25s ease}
.nitem i{display:none}
.nitem span{line-height:1;margin-top:0}
.nitem.active{color:var(--primary,#ff4785)}
.nitem:active{opacity:.55;transition:opacity .12s ease}
.nitem.post-btn{font-size:26px;font-weight:700;color:#333}
.nitem.post-btn i{display:none}

/* ===== 顶部导航 ===== */
.top-header{background:#fff;position:sticky;top:0;z-index:100;border-bottom:1px solid #f0f0f0}
.top-row{display:flex;align-items:center;padding:0 14px;height:44px}
.top-tabs{display:flex;gap:0;flex:1;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.top-tabs::-webkit-scrollbar{display:none}
.top-tab{padding:10px 0;font-size:15px;font-weight:600;color:#999;text-decoration:none;position:relative;margin-right:20px;cursor:pointer;transition:color .2s;border:none;background:none;font-family:inherit;flex-shrink:0}
.top-tab.active{color:#222}
.top-tab.active::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--primary,#ff4785);border-radius:1px}
.top-right{display:flex;align-items:center;gap:12px;margin-left:auto}
.top-right a{color:#999;font-size:16px;text-decoration:none}
.top-right .avatar{width:26px;height:26px;border-radius:50%;object-fit:cover}
/* 顶栏搜索框 + 头像（必须 flex:0 0 auto，否则会被 .top-tabs 的 flex:1 挤掉） */
.top-search{flex:0 0 auto;display:flex;align-items:center;gap:6px;background:#f5f5f5;border-radius:16px;padding:6px 12px;margin-left:12px;cursor:pointer;min-width:0;white-space:nowrap}
.top-search:hover{background:#eee}
.top-search span{font-size:12.5px;color:#aaa}
.top-avatar{flex:0 0 auto;margin-left:10px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;overflow:hidden}
.top-avatar img{width:30px;height:30px;border-radius:50%;object-fit:cover;display:block}
.top-avatar .fa-user{font-size:18px;color:#999}

/* ===== 分类标签 ===== */
.tag-bar{background:#fff;padding:8px 14px;overflow-x:auto;white-space:nowrap}
.tag-bar::-webkit-scrollbar{display:none}
.tag-item{display:inline-flex;align-items:center;gap:4px;padding:5px 14px;border-radius:14px;font-size:12px;font-weight:500;color:#666;background:#f5f5f5;text-decoration:none;margin-right:6px;cursor:pointer;transition:all .2s;border:none;font-family:inherit}
.tag-item.active{background:rgba(99,102,241,.12);color:var(--primary,#ff4785)}
.tag-item .dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:2px}
.tag-item.buy-link{color:#ff4785;font-weight:600}

/* ===== 横幅广告（轮播流畅滑动） ===== */
.banner-carousel{position:relative;margin:8px 14px;border-radius:14px;overflow:hidden;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));aspect-ratio:2.2/1;box-shadow:0 4px 16px rgba(99,102,241,.15)}
.banner-carousel .slide-track{display:flex;height:100%;transition:transform .45s cubic-bezier(.4,0,.2,1)}
.banner-carousel .slide{flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center;padding:16px;text-decoration:none;color:#fff;position:relative;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));overflow:hidden}
.banner-carousel .slide:nth-child(2){background:linear-gradient(135deg,#f093fb,#f5576c)}
.banner-carousel .slide:nth-child(3){background:linear-gradient(135deg,#4facfe,#00f2fe)}
.banner-carousel .slide .banner-img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}
.banner-carousel .slide .banner-title{position:absolute;left:0;right:0;bottom:0;padding:24px 14px 10px;background:linear-gradient(transparent,rgba(0,0,0,.55));color:#fff;text-align:left;font-size:14px;font-weight:700;line-height:1.4;z-index:2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.banner-carousel .slide .banner-tag{position:absolute;top:10px;left:10px;z-index:2;background:rgba(0,0,0,.45);backdrop-filter:blur(4px);padding:3px 10px;border-radius:12px;font-size:10px;font-weight:600;color:#fff}
.banner-carousel .slide-content{text-align:center;position:relative;z-index:2}
.banner-carousel .slide-content h3{font-size:17px;font-weight:700;margin-bottom:4px;text-shadow:0 2px 8px rgba(0,0,0,.15)}
.banner-carousel .slide-content p{font-size:12px;opacity:.9}
.banner-carousel .slide::before{content:'';position:absolute;top:-40%;right:-20%;width:200px;height:200px;border-radius:50%;background:rgba(255,255,255,.12)}
.banner-carousel .slide::after{content:'';position:absolute;bottom:-40%;left:-15%;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.08)}
.banner-dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:3}
.banner-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.45);cursor:pointer;transition:all .3s}
.banner-dot.active{width:20px;border-radius:3px;background:#fff;box-shadow:0 0 6px rgba(255,255,255,.5)}

/* ===== 精选轮播 ===== */
.featured-section{padding:0 14px;margin:10px 0}
.featured-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.featured-header h2{font-size:15px;font-weight:700;color:#222}
.featured-slider{position:relative;overflow:hidden;border-radius:12px}
.featured-slide{background:#fff;display:none;box-shadow:0 1px 6px rgba(0,0,0,.06);margin-bottom:6px;text-decoration:none;color:#333;animation:fadeIn .4s ease}
.featured-slide.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.featured-slide-inner{display:flex;padding:14px;gap:12px}
.featured-icon{width:56px;height:56px;border-radius:12px;background:linear-gradient(135deg,var(--primary,#ff4785),#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;flex-shrink:0}
.featured-info{flex:1;min-width:0}
.featured-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:4px;font-size:9px;font-weight:600;background:#fef3c7;color:#d97706;margin-bottom:4px}
.featured-title{font-size:14px;font-weight:700;color:#222;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.featured-sub{font-size:11px;color:#999;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.featured-footer{display:flex;align-items:center;gap:6px}
.featured-author{width:18px;height:18px;border-radius:50%;object-fit:cover;background:#e0e0e0}
.featured-author-name{font-size:10px;color:#999;flex:1}
.featured-badge-num{font-size:9px;font-weight:600;color:#ff4785;background:rgba(99,102,241,.1);padding:1px 6px;border-radius:4px}
.featured-dots{display:flex;justify-content:center;gap:4px;padding:6px 0 2px}
.featured-dot{width:6px;height:6px;border-radius:50%;background:#ddd;cursor:pointer;transition:all .3s}
.featured-dot.active{width:18px;border-radius:3px;background:var(--primary,#ff4785)}

/* ===== 精选区广告轮播 ===== */
.ad-carousel{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:2.6/1;background:#f5f5f5}
.ad-slide{position:absolute;top:0;left:0;width:100%;height:100%;display:none;background-size:cover;background-position:center;cursor:pointer}
.ad-slide.active{display:block;animation:fadeIn .4s ease}
.ad-slide-tag{position:absolute;top:8px;left:8px;background:rgba(245,158,11,.9);color:#fff;padding:2px 8px;border-radius:6px;font-size:9px;font-weight:700}
.ad-slide-title{position:absolute;left:0;right:0;bottom:0;padding:20px 12px 8px;background:linear-gradient(transparent,rgba(0,0,0,.5));color:#fff;font-size:13px;font-weight:600}

/* ===== 广告位（可点击，后台可配） ===== */
.ad-banner{margin:8px 14px;padding:10px 14px;background:linear-gradient(135deg,var(--primary,#ff4785),#8b5cf6);border-radius:12px;display:flex;align-items:center;gap:10px;font-size:12px;color:#fff;text-decoration:none;box-shadow:0 4px 14px rgba(99,102,241,.2);cursor:pointer;transition:all .25s}
.ad-banner:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(99,102,241,.3)}
.ad-banner .ad-tag{flex-shrink:0;background:rgba(255,255,255,.25);padding:2px 8px;border-radius:6px;font-size:9px;font-weight:700;letter-spacing:.5px}
.ad-banner .ad-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.ad-banner .ad-arrow{flex-shrink:0;opacity:.7;font-size:11px}

/* ===== 内容筛选 ===== */
.content-tabs{display:flex;align-items:center;gap:4px;padding:6px 14px 2px}
.content-tab{padding:4px 12px;border-radius:6px;font-size:12px;font-weight:500;color:#999;text-decoration:none;cursor:pointer;transition:all .2s;border:none;background:none;font-family:inherit}
.content-tab.active{background:rgba(99,102,241,.08);color:var(--primary,#ff4785);font-weight:600}

/* ===== 帖子列表（单列横排） ===== */
.post-grid{display:flex;flex-direction:column;gap:10px;padding:6px 14px calc(90px + env(safe-area-inset-bottom))}
.post-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.04);text-decoration:none;color:#333;cursor:pointer;transition:all .15s}
.post-card:active{opacity:.75;transition:opacity .15s ease}
.post-card-img{width:100%;aspect-ratio:16/9;background:linear-gradient(135deg,#ff478520,#e0256a20);display:flex;align-items:center;justify-content:center;font-size:28px;color:#ff4785;position:relative;overflow:hidden}
.post-card-img .badge{position:absolute;top:6px;left:6px;padding:2px 6px;border-radius:3px;font-size:9px;font-weight:600}
.post-card-img .badge-hot{background:linear-gradient(135deg,#f97316,#ef4444);color:#fff;display:inline-flex;align-items:center;gap:2px}
.post-card-body{padding:10px 12px 12px}
.post-card-title{font-size:14px;font-weight:600;line-height:1.4;margin-bottom:4px}
.post-card-desc{font-size:12px;color:#666;line-height:1.5;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.post-card-images{display:flex;gap:4px;margin-bottom:8px}
.post-card-images img{flex:1;height:80px;object-fit:cover;border-radius:6px;min-width:0}
.post-card-footer{display:flex;align-items:center;gap:4px;font-size:11px;color:#999;padding-top:8px;border-top:1px solid #f5f5f5}
.post-card-author{font-size:11px;color:#999;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.post-card-tag{font-size:9px;padding:1px 5px;border-radius:3px;font-weight:600}
.post-card-time{font-size:10px;color:#ccc;white-space:nowrap}
.empty{text-align:center;padding:40px 20px;color:#999;font-size:13px}
.empty i{font-size:36px;display:block;margin-bottom:8px;opacity:.3}
.empty-state{text-align:center;padding:50px 20px;color:#ccc}
.empty-state i{font-size:40px;display:block;margin-bottom:10px}
.empty-state span{font-size:13px}

/* 发现 - 版块卡片 */
.disc-banner{background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));padding:14px 16px;display:flex;align-items:center;justify-content:space-between;color:#fff}
.disc-banner h2{font-size:15px;font-weight:700}
.disc-banner p{font-size:11px;opacity:.8;margin-top:2px}
.stitle{padding:10px 14px 6px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#333}
.stitle i{color:#ff4785;font-size:14px}
.cards{padding:0 10px}
.citem{display:flex;align-items:center;gap:10px;background:#fff;border-radius:10px;padding:10px 12px;margin-bottom:6px;box-shadow:0 1px 3px rgba(0,0,0,.05);cursor:pointer;text-decoration:none;color:#333}
.citem:active{opacity:.7;transition:opacity .12s ease}
.cicon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#fff;flex-shrink:0}
.cinfo{flex:1;min-width:0}
.cname{font-size:13px;font-weight:600;margin-bottom:1px}
.cmeta{font-size:10px;color:#999;display:flex;gap:8px}
.carrow{font-size:12px;color:#ccc;flex-shrink:0}
.disc-tip{background:#fff8e1;padding:7px 14px;font-size:11px;color:#e65100;border-bottom:1px solid #ffe082;line-height:1.4}

/* 发布表单 */
.create-wrap{padding:10px 14px}
.create-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:8px;box-shadow:0 1px 6px rgba(0,0,0,.04)}
.c-grp{margin-bottom:12px}
.c-grp label{display:block;font-size:12px;color:#666;margin-bottom:4px;font-weight:600}
.c-grp input,.c-grp select,.c-grp textarea{width:100%;padding:10px 12px;border:2px solid #e8ecf1;border-radius:10px;font-size:14px;outline:none;background:#fafafa;transition:all .2s;font-family:inherit}
.c-grp input:focus,.c-grp select:focus,.c-grp textarea:focus{border-color:#e0256a;background:#fff}
.c-grp textarea{min-height:150px;resize:vertical;line-height:1.6}
.c-row{display:flex;gap:8px}
.c-row .c-grp{flex:1}
.c-btn{width:100%;padding:12px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--primary-dark,#e0256a),#a29bfe);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s}
.c-btn:active{opacity:.85;transition:opacity .12s ease}
.c-btn:disabled{opacity:.6;cursor:not-allowed}

/* 消息页面 */
.msg-header{background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));color:#fff;padding:14px 16px;display:flex;align-items:center;gap:10px}
.msg-header h1{font-size:18px;font-weight:700;letter-spacing:.5px;flex:1}
.msg-header .back-btn{color:rgba(255,255,255,.8);font-size:16px;text-decoration:none}
.msg-list{padding:0 14px}
.msg-item{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid #f0f0f0;text-decoration:none;color:#333;position:relative}
.msg-item:last-child{border-bottom:none}
.msg-item:active{background:#f9f9f9;margin:0 -14px;padding:14px}
.msg-icon{width:50px;height:50px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:#fff;overflow:hidden;position:relative}
.msg-icon img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.msg-body{flex:1;min-width:0}
.msg-top{display:flex;align-items:center;margin-bottom:4px;gap:4px}
.msg-name{font-size:15px;font-weight:600;color:#222;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-time{font-size:11px;color:#b0b0b0;white-space:nowrap;flex-shrink:0}
.msg-bottom{display:flex;align-items:center;gap:6px}
.msg-preview{font-size:13px;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3;flex:1}
.msg-badge{min-width:18px;height:18px;border-radius:9px;background:#ff4757;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 5px;flex-shrink:0}
.msg-badge.zero{display:none}
.sys-item{padding:12px 14px;border-bottom:1px solid #f2f2f2;display:flex;align-items:flex-start;gap:10px}
.sys-icon{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;flex-shrink:0}
.sys-body{flex:1;min-width:0}
.sys-title{font-size:13px;font-weight:500;color:#222}
.sys-text{font-size:12px;color:#999;margin-top:2px;word-break:break-all}
.sys-text img{max-width:120px!important;max-height:120px!important;border-radius:8px;display:block;margin-top:4px}
.sys-time{font-size:10px;color:#ccc;margin-top:2px}

/* 个人中心模块 */
.p-head{display:flex;align-items:center;gap:14px;padding:20px 16px 14px;background:var(--primary,#ff4785);border-radius:0 0 20px 20px;position:relative;overflow:hidden}
.p-av{width:64px;height:64px;border-radius:50%;overflow:hidden;flex-shrink:0;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;border:2px solid rgba(255,255,255,.5);box-shadow:0 4px 14px rgba(0,0,0,.2)}
.p-av img{width:100%;height:100%;object-fit:cover}
.p-av-fallback{width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.2)!important;align-items:center;justify-content:center;color:#fff;font-size:24px;font-weight:700;flex-shrink:0;border:2px solid rgba(255,255,255,.5)}
.p-us{flex:1;min-width:0}
.p-us h2{font-size:20px;font-weight:700;color:#fff;margin-bottom:1px;text-shadow:0 1px 4px rgba(0,0,0,.15)}
.p-us .lv{font-size:11px;color:rgba(255,255,255,.85);margin-bottom:6px}
.p-us .lv{font-size:13px;color:#888;margin-bottom:4px}
.p-us .lv b{color:var(--primary-dark,#e0256a)}
.p-xp-bar{height:4px;background:#eee;border-radius:2px;overflow:hidden;width:100%;max-width:200px}
.p-xp-f{height:100%;border-radius:2px;background:linear-gradient(90deg,#e0256a,#a29bfe);transition:width .4s ease}
.p-xp-t{font-size:10px;color:#b0b0b0;margin-top:2px}
.p-acct{background:#fff;margin:0 14px;border-radius:14px;box-shadow:0 1px 10px rgba(0,0,0,.04);overflow:hidden}
.p-acct-h{padding:10px 14px 6px;font-size:13px;font-weight:700;color:#1a1a2e}
.p-acct-h i{color:var(--primary-dark,#e0256a);margin-right:4px}
.p-acct-g{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #f0f0f0}
.p-acct-i{display:flex;flex-direction:column;align-items:center;padding:12px 0 14px;border-right:1px solid #f0f0f0}
.p-acct-i:last-child{border-right:none}
.p-acct-i .n{font-size:20px;font-weight:800;color:#1a1a2e}
.p-acct-i .l{font-size:10px;color:#b0b0b0;margin-top:2px}
.p-acct-i .l i{font-size:10px;margin-right:2px}
.p-acts{margin:10px 14px 0}
.p-as{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;background:#fff;border-radius:14px;box-shadow:0 1px 10px rgba(0,0,0,.04)}
.p-as::-webkit-scrollbar{display:none}
.p-ap{flex:0 0 100%;scroll-snap-align:start;display:grid;grid-template-columns:repeat(4,1fr);padding:4px 0}
.p-ai{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:14px 4px;cursor:pointer;text-decoration:none;color:#2d3436;border-radius:14px;transition:all .15s}
.p-ai:active{background:rgba(108,92,231,.06);opacity:.7;transition:opacity .12s ease}
.p-ai .ic{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:17px;color:#fff}
.p-ai .t{font-size:11px;font-weight:600;color:#2d3436}
.p-ad{display:flex;justify-content:center;gap:5px;margin-top:8px}
.p-ad span{width:5px;height:5px;border-radius:50%;background:#d0d0d0;transition:all .3s;cursor:pointer}
.p-ad span.on{width:20px;border-radius:3px;background:#e0256a}
.p-set{margin:10px 14px 0;background:#fff;border-radius:14px;box-shadow:0 1px 10px rgba(0,0,0,.04);overflow:hidden}
.p-si{display:flex;align-items:center;gap:10px;padding:13px 14px;cursor:pointer;text-decoration:none;color:#2d3436;transition:all .15s;border-bottom:1px solid #f5f5f5}
.p-si:last-child{border-bottom:none}
.p-si:active{background:#f8f9fa}
.p-si .mi{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;flex-shrink:0}
.p-si .mf{flex:1;font-size:13px;font-weight:500}
.p-si .ar{color:#ccc;font-size:12px}
.login-prompt{text-align:center;padding:80px 20px}
.login-prompt i{font-size:48px;color:#d0d0d0;margin-bottom:12px}
.login-prompt h3{font-size:16px;font-weight:600;margin-bottom:4px;color:#666}
.login-prompt p{font-size:13px;color:#b0b0b0;margin-bottom:16px}
.login-prompt button{padding:10px 28px;border:none;border-radius:10px;background:var(--primary-dark,#e0256a);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.msg{display:none;padding:8px 12px;border-radius:8px;margin-bottom:10px;font-size:12px}
.msg.show{display:block}
.msg.er{background:#fef2f2;color:#c0392b}
.msg.ok{background:#d4edda;color:#155724}

/* 弹窗 */
.modal{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;align-items:center;justify-content:center;padding:20px;opacity:0;transition:opacity .25s ease}
.modal.active{display:flex;opacity:1}
.mbox{background:#fff;border-radius:18px;width:100%;max-width:360px;overflow:hidden;animation:mboxIn .3s cubic-bezier(.34,1.56,.64,1)}
@keyframes mboxIn{from{transform:scale(.85) translateY(20px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.mhd{padding:18px 16px 12px;text-align:center;font-size:16px;font-weight:700;border-bottom:1px solid #f0f0f0}
.mbd{padding:16px}
.mbd input{width:100%;padding:11px 12px;margin-bottom:10px;border:2px solid #e8ecf1;border-radius:10px;font-size:14px;outline:none;background:#fafafa;transition:all .2s}
.mbd input:focus{border-color:var(--primary,#ff4785);background:#fff}
.mft{display:flex;border-top:1px solid #f0f0f0}
.mft button,.mft a{flex:1;padding:13px;border:none;background:none;font-size:14px;cursor:pointer;text-align:center;text-decoration:none;font-weight:600;transition:background .15s}
.mft button:active,.mft a:active{background:#f8f9fa}
.mft .pbtn{color:var(--primary,#ff4785)}
.mft .cancel{color:#999}
/* 登录/注册页（现代渐变风格） */
.auth-page{background:linear-gradient(160deg,#f8f9ff 0%,#eef0ff 50%,#e8e6ff 100%);min-height:100vh;padding:0;position:relative;overflow:hidden}
.auth-page.active{display:block}
.auth-page::before{content:'';position:absolute;top:-80px;right:-60px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(99,102,241,.18),transparent 70%);pointer-events:none}
.auth-page::after{content:'';position:absolute;bottom:-60px;left:-40px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(139,92,246,.15),transparent 70%);pointer-events:none}
.auth-page .auth-header{display:flex;align-items:center;padding:14px;position:relative;z-index:2}
.auth-page .auth-header a{color:#333;font-size:18px;text-decoration:none;padding:6px 10px 6px 0}
.auth-page .auth-header span{font-weight:700;font-size:16px}
.auth-page .auth-card{padding:24px 20px;max-width:400px;width:100%;margin:0 auto;position:relative;z-index:2}
.auth-page .auth-logo{text-align:center;margin-bottom:22px}
.auth-page .auth-logo .logo-icon{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#ff4785,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:28px;margin:0 auto 10px;box-shadow:0 8px 24px rgba(99,102,241,.35)}
.auth-page .auth-title{font-size:24px;font-weight:800;color:#1a1a2e;margin-bottom:2px;text-align:center}
.auth-page .auth-sub{font-size:13px;color:#8a94b8;margin-bottom:24px;text-align:center}
.auth-page .auth-box{background:rgba(255,255,255,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:16px;padding:24px 20px;box-shadow:0 8px 40px rgba(99,102,241,.1);border:1px solid rgba(255,255,255,.8)}
.auth-page .auth-input{width:100%;padding:14px 16px 14px 42px;border:1.5px solid #e8ecf4;border-radius:12px;font-size:14px;outline:none;transition:all .25s;box-sizing:border-box;background:#f8f9ff;color:#333}
.auth-page .auth-input:focus{border-color:#ff4785;background:#fff;box-shadow:0 0 0 4px rgba(99,102,241,.1)}
.auth-page .auth-input::placeholder{color:#b0b8d0}
.auth-page .auth-field{position:relative;margin-bottom:14px}
.auth-page .auth-field .field-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#a0a8c8;font-size:14px;z-index:1;pointer-events:none}
.auth-page .auth-btn{width:100%;padding:14px;border:none;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;transition:all .25s;background:linear-gradient(135deg,var(--primary,#ff4785),#8b5cf6);color:#fff;box-shadow:0 6px 20px rgba(99,102,241,.3)}
.auth-page .auth-btn:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(99,102,241,.4)}
.auth-page .auth-btn:active{opacity:.85;transition:opacity .12s ease}
.auth-page .auth-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}
.auth-page .auth-link{font-size:13px;color:#8a94b8;text-align:center;margin-top:18px}
.auth-page .auth-link a{color:#ff4785;font-weight:700;text-decoration:none}
.auth-page .auth-err{font-size:12px;color:#e74c3c;text-align:center;margin-bottom:12px;display:none;padding:10px 12px;background:#fff0f0;border-radius:10px;border:1px solid #ffd6d6}
.auth-page .auth-err.show{display:block}
.auth-page .auth-ok{font-size:12px;color:#10b981;text-align:center;margin-bottom:12px;display:none;padding:10px 12px;background:#f0fff4;border-radius:10px;border:1px solid #d1f5dd}
.auth-page .auth-ok.show{display:block}
.auth-page .auth-close{position:absolute;top:12px;left:12px;z-index:2;color:#666;font-size:20px;text-decoration:none;width:36px;height:36px;display:flex;align-items:center;justify-content:center}

/* JS defer就绪前兜底:隐藏动态渲染的详情区,避免加载中闪现丑页(就绪后JS移除该class) */
html:not(.js-ready) [id='notif'][id$='View'],html:not(.js-ready) [id='notif'][id$='View'] *{visibility:hidden!important}
html:not(.js-ready) #notifSysView{display:none!important}
html:not(.js-ready) .page:not(.active){display:none!important}

/* ===== 任务5: 体验优化（2026-08-19）===== */
/* 全局按钮/可点击卡片按压反馈 —— 只透明度, 不用 transform */
button:not(:disabled):active{opacity:.6;transition:opacity .1s ease}
.post-card:active{opacity:.75;transition:opacity .15s ease}
.msg-item:active{background:#f5f5f5}
.p-ai:active,.p-si:active{opacity:.7}
.tag-item:active{opacity:.7;transition:opacity .12s ease}
/* 图片加载失败兜底（占位底色，避免破图） */
img{background:#f5f5f7}
img[loading="lazy"]{min-height:1px}
/* 滚动条美化（桌面端） */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-thumb{background:#d0d0d8;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#b8b8c2}
::-webkit-scrollbar-track{background:transparent}
/* 空状态统一样式 */
.empty-state{text-align:center;padding:48px 20px;color:#b8b8c4}
.empty-state i{font-size:36px;display:block;margin-bottom:10px;opacity:.35}
.empty-state span{font-size:13px}
/* toast 层级提升（不被弹窗盖住） */
#toastBox{z-index:999999!important}
/* 长列表滚动性能 */
.post-card,.msg-item{contain:layout style}
/* 防止 iOS 双击缩放（双击点赞误触缩放） */
button,a,span[onclick],div[onclick]{touch-action:manipulation}

/* ===== v3.1 主题风格页 ===== */
.theme-page-root{position:relative;background:var(--bg,#f8f9fa);min-height:100vh}
.theme-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:6px;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));padding:12px 14px;color:#fff}
.theme-header-back{color:#fff;font-size:18px;text-decoration:none;padding:4px 8px 4px 0}
.theme-header-title{font-weight:600;font-size:16px;flex:1;display:flex;align-items:center;gap:6px}
.theme-header-title i{font-size:12px}

.theme-page{padding:16px 14px}
.theme-section{margin-bottom:20px}
.theme-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#333;margin-bottom:12px}
.theme-section-title i{font-size:11px;color:var(--primary,#ff4785)}
.theme-section-desc{font-size:10px;color:#999;font-weight:400;margin-left:auto}

/* 主题色网格 */
.theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.theme-item{position:relative;cursor:pointer;padding:16px 8px;border-radius:16px;background:#fff;border:2px solid #e8e8e8;text-align:center;transition:all .25s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px rgba(0,0,0,.04)}
.theme-item:hover{border-color:#ff4785;transform:translateY(-3px);box-shadow:0 6px 18px rgba(255,71,133,.1)}
.theme-item.active{border-color:var(--primary,#ff4785);box-shadow:0 0 0 3px rgba(255,71,133,.15)}
.theme-item .theme-dot{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#ff4785,#8b5cf6);margin:0 auto 8px;box-shadow:0 4px 12px rgba(255,71,133,.2);display:flex;align-items:center;justify-content:center;transition:transform .25s}
.theme-item:hover .theme-dot{transform:scale(1.12)}
.theme-item .theme-name{font-size:12px;font-weight:600;color:#333;transition:color .2s}
.theme-item:hover .theme-name{color:var(--primary,#ff4785)}
.theme-item.active .theme-name{color:var(--primary,#ff4785)}
.theme-item .theme-check{position:absolute;top:6px;right:6px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;opacity:0;transition:opacity .2s}
.theme-item.active .theme-check{opacity:1}

/* 自由配色 */
.theme-color-picker{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:14px;box-shadow:0 2px 8px rgba(0,0,0,.04);transition:all .25s}
.color-swatch{width:48px;height:48px;border:none;border-radius:50%;cursor:pointer;background:transparent;flex-shrink:0;transition:transform .2s;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.color-swatch:hover{transform:scale(1.1)}
.color-info{flex:1;min-width:0}
.color-hint{font-size:12px;color:#666}
.color-value-wrap{font-size:10px;color:#999;margin-top:2px}
.color-value{font-weight:700;transition:color .15s}
.color-apply{padding:9px 18px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--primary,#ff4785),#8b5cf6);color:#fff;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;flex-shrink:0}
.color-apply:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(255,71,133,.25)}

/* 字号/圆角选择 */
.theme-scale-row{display:flex;gap:8px}
.theme-scale-item{flex:1;padding:12px;border:2px solid #e8e8e8;border-radius:12px;text-align:center;cursor:pointer;font-weight:500;color:#666;transition:all .25s cubic-bezier(.4,0,.2,1);background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.theme-scale-item:hover{border-color:var(--primary,#ff4785);transform:translateY(-1px)}
.theme-scale-item.active{border-color:var(--primary,#ff4785);color:var(--primary,#ff4785);font-weight:700;background:rgba(255,71,133,.04)}

/* 夜间模式 & 背景图按钮 */
.theme-btns-row{display:flex;gap:8px}
.theme-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:13px;border:2px solid #e8e8e8;border-radius:16px;cursor:pointer;font-size:12px;font-weight:600;color:#666;transition:all .25s cubic-bezier(.4,0,.2,1);background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.theme-btn:hover{border-color:var(--primary,#ff4785);transform:translateY(-1px);box-shadow:0 4px 16px rgba(255,71,133,.1)}
.theme-btn.theme-btn-icon i{font-size:14px}
.theme-btn.on{border-color:#222;background:#f5f5f5;color:#222}
.theme-btn.on i{color:#222}

/* 重置按钮 */
.theme-reset-btn{width:100%;padding:13px;border:1px solid #e8e8e8;border-radius:16px;background:#fff;color:#666;font-size:13px;font-weight:600;cursor:pointer;transition:all .25s;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.theme-reset-btn:hover{border-color:var(--primary,#ff4785);color:var(--primary,#ff4785);transform:translateY(-1px)}

/* ===== v3.1 优化社区/圈子页面 ===== */
/* 社区列表页 - 群组卡片 */
.community-card{display:flex;align-items:center;gap:14px;padding:18px 16px;margin:0 10px 14px;background:#fff;border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.04);transition:all .25s cubic-bezier(.4,0,.2,1);border:1px solid #f0f0f0;overflow:hidden}
.community-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.08)}
.community-card .community-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
.community-card .community-info{flex:1;min-width:0}
.community-card .community-name{font-size:15px;font-weight:700;color:#222;margin-bottom:2px}
.community-card .community-meta{font-size:11px;color:#999}
.community-card .community-qr{width:72px;height:72px;border:1px solid #f0f0f0;border-radius:10px;background:#fafafa;object-fit:contain;flex-shrink:0}
.community-card .community-actions{display:flex;gap:8px;margin-top:14px}
.community-card .community-btn{flex:1;padding:10px 6px;border:none;border-radius:10px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}
.community-card .community-btn.primary{background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));color:#fff}
.community-card .community-btn.outline{border:1px solid #12b7f5;color:#12b7f5;background:#fff}
.community-card .community-must{display:inline-block;padding:1px 7px;border-radius:8px;background:linear-gradient(135deg,#ff4785,#f59e0b);color:#fff;font-size:9px;font-weight:700;vertical-align:middle;margin-left:4px}

/* 板块/圈子详情页顶部 */
.forum-header-bar{position:sticky;top:0;z-index:10;padding:12px 14px;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));color:#fff;display:flex;align-items:center;gap:8px}
.forum-header-bar .back{color:#fff;font-size:18px;text-decoration:none;padding:4px 8px 4px 0}
.forum-header-bar .title{font-weight:700;font-size:16px;flex:1;display:flex;align-items:center;gap:6px}
.forum-header-bar .title i{font-size:12px}
.forum-sort-bar{display:flex;gap:0;background:#fff;border-bottom:1px solid #f0f0f0;overflow-x:auto;-webkit-overflow-scrolling:touch}
.forum-sort{flex:1;min-width:52px;text-align:center;font-size:12px;font-weight:600;color:#999;padding:11px 4px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;transition:all .2s}
.forum-sort.active{color:var(--primary,#ff4785);border-bottom-color:var(--primary,#ff4785)}
.forum-sort-bar::-webkit-scrollbar{display:none}

/* 发现页圈子卡片 */
.forum-card{display:flex;align-items:center;gap:10px;padding:14px;background:linear-gradient(135deg,#fff,#f8f9ff);border:1px solid #eef0f6;border-radius:14px;cursor:pointer;box-shadow:0 2px 8px rgba(99,102,241,.05);transition:all .25s cubic-bezier(.4,0,.2,1);min-width:0;overflow:hidden}
.forum-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(99,102,241,.15)}
.forum-card:active{transform:scale(.98)}
.forum-card-icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.forum-card-icon i{font-size:18px}
.forum-card-info{flex:1;min-width:0;overflow:hidden}
.forum-card-name{font-size:13px;font-weight:700;color:#222;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.forum-card-meta{display:flex;align-items:center;gap:3px;color:#999;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.forum-card-arrow{font-size:10px;color:#ccc;flex-shrink:0}

/* ===== 精品软件分享区 ===== */
.soft-header{position:sticky;top:0;z-index:10;padding:12px 14px;background:linear-gradient(135deg,var(--primary,#6366f1),var(--primary-dark,#8b5cf6));color:#fff;display:flex;align-items:center;gap:8px}
.soft-header .back{color:#fff;font-size:18px;text-decoration:none;padding:4px 8px 4px 0}
.soft-header .title{font-weight:700;font-size:16px;flex:1;display:flex;align-items:center;gap:6px}
.soft-header .title i{font-size:12px}
.soft-list{padding:10px 12px 80px;background:#f5f6fa}
.soft-row{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:13px 14px;margin-bottom:10px;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.04);transition:all .2s;border:1px solid #f0f0f5}
.soft-row:active{transform:scale(.98)}
.soft-row-icon{width:50px;height:50px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff;font-size:22px;box-shadow:0 4px 10px rgba(0,0,0,.12)}
.soft-row-info{flex:1;min-width:0}
.soft-row-name{font-size:15px;font-weight:700;color:#222;display:flex;align-items:center;gap:6px}
.soft-row-desc{font-size:12px;color:#999;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.soft-row-score{display:flex;align-items:center;gap:3px;font-size:12px;color:#f59e0b;font-weight:700;flex-shrink:0}
.soft-row-score i{font-size:10px}
.soft-row-arrow{color:#ccc;font-size:11px;flex-shrink:0}

/* 软件详情页 */
.soft-detail-hero{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:16px 16px 20px;color:#fff;position:relative;overflow:hidden}
.soft-detail-hero::after{content:'';position:absolute;top:-40px;right:-30px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.1)}
.soft-detail-top{display:flex;align-items:center;gap:12px;position:relative;z-index:2}
.soft-detail-icon{width:64px;height:64px;border-radius:16px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;flex-shrink:0;box-shadow:0 6px 16px rgba(0,0,0,.25);border:2px solid rgba(255,255,255,.35)}
.soft-detail-name{font-size:20px;font-weight:800;text-shadow:0 1px 6px rgba(0,0,0,.2)}
.soft-detail-meta{font-size:11px;opacity:.9;margin-top:4px;display:flex;gap:10px;flex-wrap:wrap}
.soft-detail-score{display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.18);padding:3px 10px;border-radius:12px;font-size:12px;font-weight:700;margin-top:8px}
.soft-detail-score i{color:#ffd700}
/* 截图横向滑动 */
.soft-shots{background:#fff;padding:14px 0;border-bottom:1px solid #f0f0f0}
.soft-shots-title{font-size:13px;font-weight:700;color:#222;padding:0 14px;margin-bottom:10px}
.soft-shots-track{display:flex;gap:10px;overflow-x:auto;padding:0 14px 6px;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}
.soft-shots-track::-webkit-scrollbar{display:none}
.soft-shot{flex-shrink:0;width:160px;height:280px;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb;box-shadow:0 4px 14px rgba(0,0,0,.1);scroll-snap-align:start;background:#f8f9ff;position:relative}
.soft-shot img{width:100%;height:100%;object-fit:cover;display:block}
.soft-shot-ph{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;text-align:center;padding:12px;box-sizing:border-box}
.soft-shot-ph i{font-size:30px;margin-bottom:10px;opacity:.9}
.soft-shot-ph span{font-size:12px;font-weight:700;opacity:.95;line-height:1.5}
.soft-shot-ph small{font-size:9px;opacity:.7;margin-top:6px}
/* 操作按钮 */
.soft-actions{display:flex;gap:10px;padding:14px;background:#fff;border-bottom:1px solid #f0f0f0}
.soft-btn{flex:1;padding:12px 6px;border:none;border-radius:12px;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}
.soft-btn:active{transform:scale(.96)}
.soft-btn.dl{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;box-shadow:0 4px 12px rgba(99,102,241,.35)}
.soft-btn.share{background:#f0f4ff;color:#6366f1;border:1px solid #dbe4ff}
.soft-btn.rate{background:#fff7ed;color:#f59e0b;border:1px solid #fed7aa}
/* 软件介绍 */
.soft-intro{background:#fff;padding:16px 14px;border-bottom:1px solid #f0f0f0}
.soft-sec-title{font-size:14px;font-weight:700;color:#222;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.soft-sec-title i{color:#6366f1;font-size:12px}
.soft-intro-text{font-size:13px;color:#555;line-height:1.8;white-space:pre-line}
/* 评分区 */
.soft-rate-box{background:#fff;padding:16px 14px;border-bottom:1px solid #f0f0f0}
.soft-stars{display:flex;gap:6px;justify-content:center;margin:10px 0}
.soft-star{font-size:30px;color:#e0e0e0;cursor:pointer;transition:transform .15s,color .15s}
.soft-star.on{color:#ffd700}
.soft-star:active{transform:scale(1.2)}
.soft-rate-tip{text-align:center;font-size:12px;color:#999;margin-bottom:10px}
.soft-rate-input{width:100%;box-sizing:border-box;min-height:72px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:10px;font-size:13px;outline:none;resize:vertical;font-family:inherit;line-height:1.6;background:#fafbff}
.soft-rate-input:focus{border-color:#6366f1}
.soft-rate-submit{width:100%;padding:11px;border:none;border-radius:10px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;font-size:13px;font-weight:700;cursor:pointer;margin-top:10px}
.soft-rate-submit:active{transform:scale(.98)}
/* 评论列表 */
.soft-comments{padding:16px 14px 80px;background:#f5f6fa}
.soft-cmt{background:#fff;border-radius:12px;padding:12px 14px;margin-bottom:10px;border:1px solid #f0f0f5}
.soft-cmt-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.soft-cmt-av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700;flex-shrink:0}
.soft-cmt-user{font-size:13px;font-weight:600;color:#222;flex:1}
.soft-cmt-stars{font-size:10px;color:#ffd700}
.soft-cmt-text{font-size:13px;color:#555;line-height:1.6}
.soft-cmt-time{font-size:10px;color:#bbb;margin-top:6px}

/* ===== 网站导航 ===== */
.nav-page{background:linear-gradient(160deg,#eef2ff 0%,#fdf2f8 50%,#ecfeff 100%);min-height:100vh;padding-bottom:80px}
.nav-header{position:sticky;top:0;z-index:10;padding:12px 14px;background:rgba(255,255,255,.85);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(99,102,241,.12);display:flex;align-items:center;gap:8px}
.nav-header .back{color:var(--primary,#6366f1);font-size:18px;text-decoration:none;padding:4px 8px 4px 0}
.nav-header .title{font-weight:700;font-size:16px;flex:1;color:var(--primary,#4338ca);display:flex;align-items:center;gap:6px}
.nav-search{margin:14px 14px 4px;position:relative}
.nav-search i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#a5b4fc;font-size:13px}
.nav-search input{width:100%;box-sizing:border-box;padding:11px 14px 11px 38px;border:none;border-radius:22px;background:rgba(255,255,255,.9);font-size:13px;outline:none;box-shadow:0 2px 10px rgba(99,102,241,.1);color:#333}
.nav-search input:focus{box-shadow:0 2px 14px rgba(99,102,241,.22)}
.nav-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px 14px}
.nav-card{background:rgba(255,255,255,.88);border-radius:16px;padding:16px 14px;cursor:pointer;text-decoration:none;display:flex;flex-direction:column;gap:8px;box-shadow:0 2px 10px rgba(99,102,241,.08);border:1px solid rgba(255,255,255,.9);transition:all .2s;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.nav-card:active{transform:scale(.96)}
.nav-card-icon{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:19px;box-shadow:0 4px 10px rgba(0,0,0,.12)}
.nav-card-name{font-size:14px;font-weight:700;color:#1e1b4b}
.nav-card-desc{font-size:11px;color:#8b8ba7;line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.nav-empty{text-align:center;padding:40px 20px;color:#a5b4fc;font-size:13px}
.nav-count{font-size:11px;color:#a5b4fc;padding:0 16px}

/* ===== 发现页两个入口（全部板块下方） ===== */
.soft-entry{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#eef2ff,#f5f3ff);border-radius:16px;padding:14px;margin-bottom:6px;cursor:pointer;border:1px solid rgba(99,102,241,.12);transition:all .2s}
.soft-entry:active{transform:scale(.98)}
.soft-entry-icon{width:46px;height:46px;border-radius:13px;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;flex-shrink:0;box-shadow:0 4px 12px rgba(99,102,241,.3)}
.soft-entry-info{flex:1;min-width:0}
.soft-entry-name{font-size:15px;font-weight:700;color:#3730a3}
.soft-entry-desc{font-size:11px;color:#8b8ba7;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.soft-entry-arrow{color:#a5b4fc;font-size:12px;flex-shrink:0}

/* ===== 软件/网站 发布表单弹窗 ===== */
.softform{width:100%;max-width:340px;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.25);max-height:86vh;display:flex;flex-direction:column}
.softform-h{display:flex;align-items:center;padding:14px 16px;background:linear-gradient(135deg,var(--primary,#6366f1),var(--primary-dark,#8b5cf6));color:#fff;font-weight:700;font-size:16px}
.softform-h span{flex:1}
.softform-h i{font-size:18px;cursor:pointer;opacity:.85}
.softform-bd{padding:14px 16px;overflow-y:auto}
.softform-bd label{display:block;font-size:12px;color:#888;margin:12px 0 5px;font-weight:600}
.softform-bd label:first-child{margin-top:0}
.softform-bd input,.softform-bd textarea{width:100%;padding:10px 12px;border:2px solid #eef0f5;border-radius:10px;font-size:14px;outline:none;box-sizing:border-box;background:#fafbfc;transition:all .2s;font-family:inherit;color:#222}
.softform-bd input:focus,.softform-bd textarea:focus{border-color:var(--primary,#ff4785);background:#fff}
.softform-row{display:flex;gap:10px}
.softform-row>div{flex:1;min-width:0}
.softform-ft{display:flex;padding:12px 16px 16px;gap:10px}
.softform-cancel{flex:1;padding:12px;border:none;border-radius:12px;background:#f1f2f6;color:#666;font-size:14px;font-weight:700;cursor:pointer}
.softform-ok{flex:1;padding:12px;border:none;border-radius:12px;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));color:#fff;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 6px 16px rgba(99,102,241,.25)}

/* ===== 软件详情：下载卡片 ===== */
.soft-dl-in{display:flex;flex-direction:column;gap:10px;padding:16px 14px}
.soft-dl-btn{width:100%;padding:14px;border:none;border-radius:14px;background:linear-gradient(135deg,var(--primary,#ff4785),var(--primary-dark,#e0256a));color:#fff;font-size:15px;font-weight:800;cursor:pointer;box-shadow:0 6px 16px rgba(99,102,241,.28);display:flex;align-items:center;justify-content:center;gap:8px}
.soft-dl-btn.na{background:#d8dce3;box-shadow:none;cursor:not-allowed}
.soft-dl-sec{width:100%;padding:12px;border:1.5px solid var(--primary,#ff4785);border-radius:14px;color:var(--primary,#ff4785);font-size:13px;font-weight:700;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box}

/* ===== 网站卡片删除按钮 ===== */
.nav-card{position:relative}
.nav-del{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;background:rgba(0,0,0,.45);color:#fff;font-size:15px;line-height:22px;text-align:center;cursor:pointer;display:none;z-index:2}
.nav-card:active .nav-del{display:block}
body.soft-admin .nav-del{display:block}

/* ===== 软件列表 hover 增强 ===== */
.soft-row:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(99,102,241,.12);border-color:var(--primary,#e0256a)}
.nav-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(99,102,241,.16)}

/* ===== 通知消息页 6 分类图标(独立配色,不受主题色影响) ===== */

/* ===== 通知子页 列表卡片(收到的赞/收到的投币/好友关注等子页) ===== */
.sys-row,.notif-item-row{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 14px;margin:0 12px 8px;
  background:#fff;border-radius:12px;
  cursor:pointer;transition:background .12s ease,opacity .15s ease;
  position:relative;
}
.sys-row:hover,.notif-item-row:hover{background:#fafafa}
.sys-row::after,.notif-item-row::after{
  content:'';position:absolute;left:64px;right:0;bottom:0;height:1px;
  background:#f5f5f5;display:none
}
.sys-row > div:first-child,.notif-item-row > div:first-child{
  width:42px;height:42px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:#f5f5f5;flex-shrink:0;overflow:hidden;font-size:18px;color:#999
}
.sys-row > div:first-child img,.notif-item-row > div:first-child img{
  width:100%;height:100%;object-fit:cover
}
.sys-row > div:nth-child(2),.notif-item-row > div:nth-child(2){
  flex:1;min-width:0;display:flex;flex-direction:column;gap:4px
}
.sys-row b,.notif-item-row b{color:#222;font-weight:600}
.sys-row .title,.notif-item-row .title{font-size:13.5px;color:#222;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sys-row .desc,.notif-item-row .desc{font-size:12px;color:#999;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sys-row .time,.notif-item-row .time{font-size:11px;color:#bbb;margin-top:2px}

/* 评论/回复卡片 */
.notif-comment{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 14px;margin:0 12px 8px;
  background:#fff;border-radius:12px;
  cursor:pointer;transition:background .12s ease
}
.notif-comment:hover{background:#fafafa}
.notif-comment > div:first-child{
  width:40px;height:40px;border-radius:50%;
  background:#f5f5f5;flex-shrink:0;overflow:hidden;
  display:flex;align-items:center;justify-content:center;color:#bbb;font-size:16px
}
.notif-comment > div:first-child img{width:100%;height:100%;object-fit:cover}
.notif-comment-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.notif-comment-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.notif-comment-name{font-size:13.5px;color:#222;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notif-comment-time{font-size:11px;color:#bbb;flex-shrink:0}
.notif-comment-text{font-size:12.5px;color:#666;line-height:1.5;background:#f7f7f9;padding:8px 10px;border-radius:8px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.notif-comment-post{font-size:12px;color:#999;background:#fff7ed;border-left:3px solid #f59e0b;padding:6px 10px;border-radius:0 6px 6px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 系统通知行(蓝色喇叭/违规红/签到黄) */
.sys-icon-row{display:flex;align-items:flex-start;gap:12px;padding:14px 14px;margin:0 12px 8px;background:#fff;border-radius:12px;cursor:pointer;transition:background .12s ease}
.sys-icon-row:hover{background:#fafafa}
.sys-icon-row .icon{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.sys-icon-row.violation .icon{background:linear-gradient(135deg,#ef4444,#dc2626)}
.sys-icon-row.reward .icon{background:linear-gradient(135deg,#fbbf24,#f59e0b)}
.sys-icon-row > div:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.sys-icon-row .title{font-size:13.5px;color:#222;font-weight:600}
.sys-icon-row .content{font-size:12.5px;color:#666;line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sys-icon-row .time{font-size:11px;color:#bbb;margin-top:2px}

.notif-empty{
  padding:60px 20px;text-align:center;color:#bbb;font-size:13px;
  display:flex;flex-direction:column;align-items:center;gap:8px
}
.notif-empty i{font-size:42px;opacity:.4}
.notif-cat{display:flex;flex-direction:row;align-items:center;gap:12px;padding:14px 16px;background:#fff;margin:0 0 8px;cursor:pointer;transition:background .15s}
.notif-cat-icon{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff!important;font-size:18px;flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.06);background-image:none!important}
.notif-cat-icon.style-pink{background:linear-gradient(135deg,#ff7a9c,#e0256a)!important}
.notif-cat-icon.style-green{background:linear-gradient(135deg,#7ed957,#3fae2a)!important}
.notif-cat-icon.style-blue{background:linear-gradient(135deg,#7ec8ff,#2563eb)!important}
.notif-cat-icon.style-yellow{background:linear-gradient(135deg,#ffd54f,#f59e0b)!important}
.notif-cat-icon.style-purple{background:linear-gradient(135deg,#c084fc,#9333ea)!important}
.notif-cat-icon.style-cyan{background:linear-gradient(135deg,#38bdf8,#0284c7)!important}
.notif-cat:active{background:#f5f5f5}
.notif-cat-icon{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.notif-cat-name{flex:1;font-size:15px;color:#333;font-weight:500}
.notif-cat-badge{background:#f43f5e;color:#fff;font-size:11px;min-width:18px;height:18px;border-radius:9px;padding:0 6px;display:flex;align-items:center;justify-content:center;line-height:1;margin-right:6px}
.notif-cat-arrow{color:#c8c8c8;font-size:13px}
.notif-section-title{display:flex;align-items:center;gap:8px;padding:14px 16px 8px;font-size:13px;font-weight:700;color:#666;background:#f7f8fa;border-top:8px solid #f7f8fa}
.notif-section-title i{color:#999}
.notif-item-row{display:flex;gap:12px;padding:12px 16px;background:#fff;margin:1px 0;cursor:pointer;transition:background .12s}
.notif-item-row:active{background:#f5f5f5}
.notif-item-icon{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.notif-item-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#f5f5f5}
.notif-item-avatar-fb{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#fbbf24,#f97316);color:#fff;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.notif-item-body{flex:1;min-width:0}
.notif-item-title{font-size:14px;color:#333;line-height:1.5;margin-bottom:4px}
.notif-item-title b{color:#222;font-weight:700}
.notif-item-desc{font-size:12px;color:#999;line-height:1.5;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.notif-item-quote{font-size:13px;color:#555;background:#f5f5f5;padding:8px 10px;border-radius:6px;margin:6px 0;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.notif-item-post{font-size:12px;color:#888;background:#fafafa;padding:6px 10px;border-radius:6px;margin-top:4px;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notif-item-post i{color:#bbb;margin-right:4px}
.notif-item-time{font-size:11px;color:#bbb;margin-top:4px}
.notif-tip-badge{display:inline-block;background:linear-gradient(135deg,#ffd54f,#f59e0b);color:#fff;font-size:12px;font-weight:700;padding:3px 10px;border-radius:12px;margin:4px 0}
.notif-tip-badge i{font-size:11px;margin-right:2px}
.notif-empty{text-align:center;padding:60px 20px;color:#bbb;font-size:13px}
.notif-empty i{display:block;font-size:40px;margin-bottom:12px;opacity:.3}

/* ===== 系统通知弹窗(截图样式) ===== */
.notif-modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px;animation:fadeIn .2s ease}
.notif-modal{background:#fff;border-radius:16px;width:100%;max-width:320px;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.18);animation:scaleIn .2s ease}
.notif-modal-title{padding:20px 20px 12px;font-size:18px;font-weight:700;color:#222;text-align:center}
.notif-modal-body{padding:0 20px 20px;font-size:14px;color:#555;line-height:1.7;max-height:50vh;overflow-y:auto}
.notif-modal-actions{display:flex;border-top:1px solid #f0f0f0}
.notif-modal-btn{flex:1;padding:14px 0;border:none;background:#fff;font-size:15px;cursor:pointer;transition:background .12s;color:#666}
.notif-modal-btn+.notif-modal-btn{border-left:1px solid #f0f0f0}
.notif-modal-btn.ok{color:#007aff;font-weight:600}
.notif-modal-btn:active{background:#f2f2f2}

/* 系统通知列表行：蓝色喇叭 */
.sys-row .notif-item-icon{background:#3b82f6!important;color:#fff!important}
.notif-comment{display:flex;gap:10px;padding:12px 16px;background:#fff!important;margin:8px 0;cursor:pointer}
.notif-comment-body{flex:1;min-width:0}
.notif-comment-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.notif-comment-name{font-size:14px;font-weight:600;color:#333}
.notif-comment-time{font-size:11px;color:#999}
.notif-comment-text{font-size:13px;color:#666;line-height:1.5;margin-bottom:6px;word-break:break-word}
.notif-comment-post{display:inline-block;font-size:12px;color:#888;background:#f5f5f5;padding:5px 10px;border-radius:6px;max-width:100%}

/* 消息页配色：保留白底黑字, 不被主题色染红 */
.msg-header{background:#fff!important;color:#222!important;border-bottom:1px solid #f0f0f0}
.msg-header h1{color:#222!important}
.sys-icon{background:linear-gradient(135deg,#ff7a9c,#e0256a)!important}

/* ===== 原生 App 按压效果(全局) ===== */
/* 1. 任何可点击元素加平滑过渡 */
.post-card,.forum-card,.notif-cat,.notif-comment,.msg-item,.soft-row,.nav-card,
.nitem,.bitem,.ftab,.disc-tab,.top-tab,.content-tab,.top-search,.top-avatar,
button,.a,[onclick]{
  -webkit-tap-highlight-color:transparent;
  transition:background-color .12s ease, transform .12s ease, opacity .12s ease;
}
/* 2. 按下时(纯 CSS,无需 JS)*/
.post-card:active,.forum-card:active,.notif-cat:active,.notif-comment:active,
.msg-item:active,.soft-row:active,.nav-card:active,
.nitem:active,.bitem:active,.ftab:active,.disc-tab:active,.top-tab:active,
button:active,.a:active,[onclick]:active{
  background-color:rgba(0,0,0,.06)!important;
  transform:scale(.97);
  opacity:.85;
}
/* 3. 按钮额外加阴影按下效果 */
button:active{box-shadow:inset 0 2px 6px rgba(0,0,0,.12)}

/* ===== 原生 App 触觉反馈(v2:全局增强) ===== */
/* 输入框聚焦动画 */
input:focus,textarea:focus,select:focus{transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}
/* 长按波纹效果 —— 动画结束后回到 scale(0) opacity:0, 避免残留 */
.ripple::after{content:'';position:absolute;border-radius:50%;background:rgba(255,255,255,.4);transform:scale(0);opacity:0;pointer-events:none;width:100px;height:100px;margin-top:-50px;margin-left:-50px;top:50%;left:50%;animation:rippleAnim .6s ease-out forwards}
@keyframes rippleAnim{0%{transform:scale(0);opacity:1}100%{transform:scale(4);opacity:0}}
/* 列表项左滑/右滑删除提示 */
.list-item-swipe{transition:transform .2s ease,background .15s ease}
/* 加载 spinner */
.spinner{width:20px;height:20px;border:2px solid rgba(255,71,133,.2);border-top-color:#ff4785;border-radius:50%;animation:spin .8s linear infinite;display:inline-block;vertical-align:middle}
/* 骨架屏(灰色闪烁) */
.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e8e8e8 50%,#f0f0f0 75%);background-size:200px 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:4px}
/* 底栏 tab 切换指示器 */
.bnav{transition:transform .2s cubic-bezier(.4,0,.2,1)}
.nitem{transition:color .2s ease,transform .15s ease,background-color .15s ease}
.nitem.active{animation:pop .35s ease}
/* 顶栏/底栏隐藏时平滑 */
.top-header,.msg-header{transition:transform .25s ease,opacity .2s ease}
/* 卡片悬浮抬起(桌面端) */
@media (hover:hover){.post-card:hover,.forum-card:hover,.notif-cat:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.08)}}
/* 滚动条美化 */
::-webkit-scrollbar{width:0;height:0}
/* 全局图片淡入:首屏内联图(opacity:0 0→1)必须有兜底,否则全部图片不可见 */
img{transition:opacity .25s ease;opacity:1}
img.loaded,img[loaded]{opacity:1}
img[loading="lazy"]{animation:imgFade .4s ease}
/* 链接点击高亮(覆盖浏览器默认) */
a{-webkit-tap-highlight-color:transparent;color:inherit;text-decoration:none}
a:active{opacity:.7}
/* FAB 加号按钮兜底：定位 + z-index, display 由 JS 根据页面控制(只在首页/发现/板块列表显示) */
#globalFabBtn{position:fixed!important;right:18px!important;bottom:90px!important;z-index:5000!important;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#ff4785,#e0256a);color:#fff;font-size:26px;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(255,71,133,.5);text-decoration:none}


/* ==========================================================================
   精灵社区 · 设计系统 v1.0 —— 增量层（critical_v43.css）
   说明：本段追加在 critical_v42.css 之后，不修改/删除任何原有规则。
   对比度数值均由 WCAG 2.2 相对亮度公式实测，非估算。
   ========================================================================== */

/* ---------- 1. 扩展设计 Token ---------- */
:root{
  /* 中性灰阶 50-900（替代散落的 #222/#333/#666/#999/#bbb/#ccc） */
  --n-50:#fafafa;  --n-100:#f5f5f7; --n-200:#eef0f4; --n-300:#e3e6ec;
  --n-400:#c9ced8; --n-500:#9aa2ad; --n-600:#6b7280; --n-700:#4b5563;
  --n-800:#2d3340; --n-900:#222222;

  /* 品牌粉 50-900（原 #ff4785 定位为 500 档） */
  --pink-50:#fff1f6; --pink-100:#ffe0ec; --pink-200:#ffc2da; --pink-300:#ff8fb9;
  --pink-400:#ff5c98; --pink-500:#ff4785; --pink-600:#f0246d;
  --pink-700:#c81a56; --pink-800:#a01545; --pink-900:#7d0f36;
  --brand:var(--pink-500);
  --brand-deep:var(--pink-700);
  --pink-text:var(--pink-700);   /* 粉字可读档：白底 5.62:1（500 档仅 3.23，小字不达标） */

  /* 强调色 + 语义色（500=图形/大字号，700=正文可读档） */
  --violet-500:#8b5cf6; --violet-700:#6d28d9;
  --indigo-500:#5856d6; --indigo-700:#4338ca;
  --success-500:#10b981; --success-700:#047857;   /* 700 白底 5.48:1 */
  --warning-500:#f59e0b; --warning-600:#d97706;   /* 600 白底 3.19:1，图标/大字达标 */
                         --warning-700:#b45309;   /* 700 白底 5.02:1，正文达标 */
  --danger-500:#ef4444;  --danger-700:#be123c;    /* 700 白底 6.29:1 */
  --info-500:#3b82f6;    --info-700:#1d4ed8;      /* 700 白底 6.70:1 */

  /* 字体栈（统一为 1 套主栈 + 2 个专用） */
  --font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC",
              "Noto Sans CJK SC","Microsoft YaHei",sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --font-display:"KaiTi","楷体",STKaiti,serif;    /* 仅软件名/标题装饰 */

  /* 字号刻度：9 档 rem（尊重系统字号设置），替代原 26 档 px */
  --fs-2xs:.6875rem; /* 11 仅角标 */
  --fs-xs:.75rem;    /* 12 时间戳 */
  --fs-sm:.8125rem;  /* 13 次要 */
  --fs-base:.875rem; /* 14 次级正文 */
  --fs-md:1rem;      /* 16 正文 */
  --fs-lg:1.125rem;  /* 18 小标题 */
  --fs-xl:1.25rem;   /* 20 卡片标题 */
  --fs-2xl:1.5rem;   /* 24 区块标题 */
  --fs-3xl:1.875rem; /* 30 页标题 */
  --fs-4xl:2.25rem;  /* 36 大数字 */
  --fs-display:clamp(1.375rem,4.5vw,1.75rem);   /* 流式大标题 */

  /* 间距（4px 基数 / 8px 节奏） */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px;
  --sp-6:24px; --sp-8:32px; --sp-10:40px; --sp-12:48px;

  /* 圆角 */
  --r-sm:6px; --r-md:10px; --r-lg:14px; --r-xl:20px; --r-2xl:24px; --r-full:9999px;

  /* 阴影（3 级） */
  --sh-1:0 1px 3px rgba(17,24,39,.06);
  --sh-2:0 4px 14px rgba(17,24,39,.08);
  --sh-3:0 10px 28px rgba(17,24,39,.14);

  /* 动效（只动 transform/opacity） */
  --ease:cubic-bezier(.4,0,.2,1); --dur-fast:.2s; --dur:.25s; --dur-slow:.3s;

  /* 布局 */
  --app-max:640px; --tap:44px;
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);

  /* 修正旧 token 的不合规值（原值保留于注释备查） */
  --text3:#6b7280;   /* 原 #999（2.85:1 不合格）→ 4.83:1 */
  --text2:#4b5563;   /* 原 #666（5.74:1 已达标）→ 提升至 7.56:1 */
}

/* ---------- 2. 基础改进（纯新增，不覆盖原有布局） ---------- */
html{-webkit-text-size-adjust:100%}   /* 禁止 iOS 横屏自动放大字号 */

/* 焦点可见（键盘无障碍） */
a:focus-visible,button:focus-visible,input:focus-visible,
textarea:focus-visible,[onclick]:focus-visible{
  outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--r-sm)
}

/* 尊重系统"减弱动效"偏好 */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ---------- 3. 对比度热修 ----------
   针对 603 处内联 style 中不合规的硬编码色值。
   已核验：站内不存在 background-color:#999 / border-color:#ccc 等会被子串误伤的写法。 */
[style*="color:#999"]{color:#6b7280!important}     /* 2.85 → 4.83  (50 处) */
[style*="color:#9aa2ad"]{color:#6b7280!important}  /* 2.58 → 4.83  (10 处) */
[style*="color:#ccc"]{color:#6b7280!important}     /* 1.61 → 4.83  (12 处，空态文字) */
[style*="color:#bbb"]{color:#6b7280!important}     /* 1.92 → 4.83  ( 4 处) */
/* 金币黄：主要用于 fa-coins/fa-trophy 等图标(需≥3:1)与 32px 大数字，
   改用 amber-600 保留金色观感，2.15 → 3.19 达标 */
[style*="color:#f59e0b"]{color:#d97706!important}  /* 2.15 → 3.19  (17 处) */

/* ---------- 4. 极小字号修正 ---------- */
[style*="font-size:9px"]{font-size:11px!important}
[style*="font-size:10px"]{font-size:11px!important}   /* 17 处 */

/* ---------- 5. 移动优先工具类（新页面/迁移时使用） ---------- */
.tappable{min-width:var(--tap);min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center}
.safe-bottom{padding-bottom:calc(var(--sp-4) + var(--safe-b))}
.t-xs{font-size:var(--fs-xs);line-height:1.4}
.t-sm{font-size:var(--fs-sm);line-height:1.4}
.t-base{font-size:var(--fs-base);line-height:1.6}
.t-md{font-size:var(--fs-md);line-height:1.6}
.t-lg{font-size:var(--fs-lg);line-height:1.4;font-weight:600}
.t-xl{font-size:var(--fs-xl);line-height:1.25;font-weight:700}
.t-2xl{font-size:var(--fs-2xl);line-height:1.25;font-weight:700}
.t-display{font-size:var(--fs-display);line-height:1.25;font-weight:800}
.c-1{color:var(--n-900)!important} .c-2{color:var(--n-700)!important} .c-3{color:var(--n-600)!important}
.c-brand{color:var(--pink-text)!important} .c-warn{color:var(--warning-700)!important} .c-ok{color:var(--success-700)!important}

/* 按钮：终点加深至 pink-700，白字 4.52 → 5.62 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
  min-height:var(--tap);padding:0 var(--sp-5);border-radius:var(--r-full);
  font-size:var(--fs-base);font-weight:700;
  transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.btn:active{transform:scale(.96)}
.btn-primary{background:linear-gradient(135deg,var(--pink-500),var(--pink-700));
  color:#fff;box-shadow:0 4px 12px rgba(255,71,133,.3)}
.btn-ghost{background:var(--n-100);color:var(--n-700)}
.btn-outline{border:1px solid var(--n-300);color:var(--n-700);background:#fff}
.btn-sm{min-height:36px;padding:0 var(--sp-4);font-size:var(--fs-sm)}
.btn-block{width:100%}
.btn[disabled]{opacity:.5;pointer-events:none}

/* 卡片 / Chip / 输入框 */
.card{background:#fff;border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--sh-2);
  transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.card:active{transform:scale(.99)}
@media (hover:hover){.card:hover{transform:translateY(-2px);box-shadow:var(--sh-3)}}
.chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-3);
  border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:600;line-height:1.6;
  background:var(--n-100);color:var(--n-700);white-space:nowrap}
.chip-brand{background:var(--pink-50);color:var(--pink-text)}
.chip-ok{background:#ecfdf5;color:var(--success-700)}
.chip-warn{background:#fffbeb;color:var(--warning-700)}
.field{width:100%;min-height:var(--tap);padding:var(--sp-3) var(--sp-4);
  border:1px solid var(--n-300);border-radius:var(--r-md);font-size:var(--fs-md);background:#fff;
  transition:border-color var(--dur-fast) var(--ease)}
.field:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px var(--pink-50)}
.field::placeholder{color:var(--n-500)}
.empty{padding:var(--sp-12) var(--sp-5);text-align:center;color:var(--n-600);font-size:var(--fs-base)}
.skeleton{background:linear-gradient(90deg,var(--n-100) 25%,var(--n-50) 50%,var(--n-100) 75%);
  background-size:200% 100%;animation:sk 1.2s infinite;border-radius:var(--r-md)}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* 栅格（免媒体查询自适应） */
.grid-2,.grid-3,.grid-4{display:grid;gap:var(--sp-3)}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-auto{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}

/* ---------- 6. 移动优先断点（base=360，逐级增强） ---------- */
@media (min-width:576px){
  .grid-2{gap:var(--sp-4)}
}
@media (min-width:768px){
  .grid-2{grid-template-columns:repeat(2,1fr)}
  .grid-3{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:992px){
  .grid-3{grid-template-columns:repeat(3,1fr)}
  .grid-4{grid-template-columns:repeat(4,1fr)}
}
@media (min-width:1200px){
  :root{--app-max:720px}
}
