:root{
  --primary:#e64340;
  --primary-dark:#c93330;
  --pink:#ffe9e7;
  --pink-grad:linear-gradient(135deg,#ff6a5e,#e64340);
  --bg:#f6f4f3;
  --card:#ffffff;
  --text:#33251f;
  --muted:#9a8f89;
  --border:#f0e6e2;
  --radius:16px;
  --shadow:0 4px 18px rgba(230,67,64,.10);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{font-family:"PingFang SC","Microsoft YaHei",sans-serif;background:#efe9e6;color:var(--text);font-size:15px}
#app{max-width:460px;margin:0 auto;min-height:100vh;background:var(--bg);position:relative;overflow:hidden}
.hidden{display:none!important}
/* 文件选择框：不能用 display:none（部分安卓内核点 label 会异常），改为屏幕外隐藏 */
.vh-file{position:absolute;left:-9999px;top:0;width:1px;height:1px;opacity:0;overflow:hidden}

/* ---- 照片墙 ---- */
.pw-card{background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);margin-top:12px}
.pw-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pw-head h4{font-size:15px}
.pw-tip{color:var(--muted);font-size:11px;margin-top:8px;text-align:center}
.pw-empty{color:var(--muted);font-size:12px;text-align:center;padding:16px 0}
.pw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.pw-item{background:var(--bg);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.pw-photo{width:100%;aspect-ratio:1/1;background:var(--pink);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:11px}
.pw-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pw-mood{font-size:11px;color:#7a5c55;line-height:1.4;padding:6px 7px 0;word-break:break-all}
.pw-ops{display:flex;gap:4px;padding:6px 7px 7px;margin-top:auto}
.pw-op{flex:1;font-size:11px;color:var(--primary);border:1px solid var(--pink);border-radius:8px;padding:3px 0;background:#fff}
.pw-op.pw-del,.pw-op.pw-report{color:#b23b3b;border-color:#ffd9d6}
.pw-op:active{opacity:.75}

/* ---- 举报/操作按钮（动态） ---- */
.m-ops{display:flex;gap:14px;margin-left:auto}
.m-op{color:var(--muted);font-size:12px}
.m-op.m-del{color:#b23b3b}
.report-reasons{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.rep-r{border:1.5px solid var(--border);border-radius:16px;padding:6px 12px;font-size:12px;color:#6f625c;background:#fff}
.rep-r.on{border-color:var(--primary);color:var(--primary);background:var(--pink);font-weight:600}

/* ---- 封禁页 ---- */
.banned-box{padding:110px 34px;text-align:center}
.banned-ico{font-size:64px}
.banned-box h2{font-size:20px;margin:16px 0 10px}
.banned-box p{color:var(--muted);font-size:13px;line-height:1.7}
.banned-tip{margin-top:14px;font-size:12px}
.banned-box .btn-outline{margin-top:26px}

/* ---- 管理后台 ---- */
.admin-top{justify-content:flex-start;gap:8px}
.admin-top .topbar-title{flex:1;text-align:center;letter-spacing:1px}
.admin-badge{background:#fff;color:var(--primary);font-size:11px;font-weight:700;border-radius:10px;padding:2px 8px;margin-right:8px}
.admin-top .back-btn{color:#fff;font-size:24px;line-height:1;padding:0 6px}
.admin-tabs{display:flex;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}
.admin-tab{flex:1;padding:11px 0;font-size:13px;color:var(--muted);border-bottom:2px solid transparent}
.admin-tab.active{color:var(--primary);font-weight:700;border-bottom-color:var(--primary)}
.admin-body{padding:12px 12px 40px;display:flex;flex-direction:column;gap:10px}
.admin-card{background:var(--card);border-radius:12px;padding:12px;box-shadow:var(--shadow)}
.admin-card h5{font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.admin-card p{font-size:12px;color:#6f625c;line-height:1.5;margin-top:6px;word-break:break-all}
.admin-card .tag{font-size:10px;border-radius:8px;padding:1px 7px;background:var(--pink);color:var(--primary);font-weight:700}
.admin-card .tag.warn{background:#fff3d6;color:#a9660a}
.admin-card .tag.danger{background:#ffe4e2;color:#b23b3b}
.admin-card .tag.ok{background:#e6f7ec;color:#1f8a4c}
.admin-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.admin-btn{border:1px solid var(--border);border-radius:14px;padding:5px 12px;font-size:12px;color:#5d524d;background:#fff}
.admin-btn.primary{background:var(--pink-grad);color:#fff;border:none;font-weight:600}
.admin-btn.danger{color:#b23b3b;border-color:#ffd9d6}
.admin-btn:active{opacity:.8}
.admin-pics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}
.admin-pic{position:relative;border-radius:10px;overflow:hidden;background:var(--bg);aspect-ratio:1/1}
.admin-pic img{width:100%;height:100%;object-fit:cover;display:block}
.admin-search{display:flex;gap:8px;margin-bottom:4px}
.admin-search input{flex:1}
button{font-family:inherit;border:none;cursor:pointer;background:none}
input,select,textarea{font-family:inherit;font-size:14px;border:1px solid var(--border);border-radius:10px;padding:11px 12px;background:#fff;outline:none;width:100%}
input:focus,textarea:focus,select:focus{border-color:var(--primary)}
.btn-primary{background:var(--pink-grad);color:#fff;border-radius:24px;padding:12px;font-size:15px;font-weight:600;letter-spacing:2px;box-shadow:var(--shadow)}
.btn-primary:active{opacity:.85}
.btn-sm{padding:8px 18px;font-size:13px;letter-spacing:0}
.btn-outline{border:1.5px solid var(--primary);color:var(--primary);border-radius:24px;padding:10px 22px;font-weight:600;background:#fff}
.link-right{display:block;text-align:right;color:var(--muted);font-size:13px;margin-top:10px;text-decoration:none}

/* ---- 登录 ---- */
.auth-hero{background:var(--pink-grad);padding:52px 24px 66px;text-align:center;color:#fff;border-radius:0 0 40% 40%/0 0 60px 60px}
.auth-logo{font-size:44px;animation:beat 1.4s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1)}20%{transform:scale(1.18)}40%{transform:scale(1)}}
.auth-hero h1{font-size:30px;letter-spacing:10px;margin:6px 0 4px}
.auth-hero p{opacity:.9;font-size:13px;letter-spacing:3px}
.auth-card{margin:-30px 18px 0;background:var(--card);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.seg{display:flex;background:var(--pink);border-radius:12px;padding:3px;margin-bottom:16px}
.seg-btn{flex:1;padding:9px 4px;border-radius:10px;color:var(--muted);font-size:13px;transition:.2s}
.seg-btn.active{background:#fff;color:var(--primary);font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.seg.small .seg-btn{padding:7px 4px;font-size:12px}
.auth-form{display:flex;flex-direction:column;gap:12px}
.auth-form .form-title{font-weight:700;font-size:16px;text-align:center;padding:4px 0}
.code-row{display:flex;gap:10px}
.code-row input{flex:1}
.btn-code{flex-shrink:0;background:var(--pink);color:var(--primary);border-radius:10px;padding:0 14px;font-size:13px;font-weight:600;min-width:96px}
.btn-code:disabled{opacity:.5}
.auth-tip{text-align:center;color:var(--muted);font-size:12px;line-height:1.6}
.tip-hl{color:#c08419;font-weight:600}
.login-links{display:flex;justify-content:space-between;font-size:13px}
.login-links a{color:var(--muted);text-decoration:none}
.login-links a:active{color:var(--primary)}
.third-party{margin-top:16px}
.divider{display:flex;align-items:center;gap:10px;color:#c9bdb7;font-size:12px;margin-bottom:12px}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--border)}
.btn-wechat{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;background:#07c160;color:#fff;border-radius:24px;padding:12px;font-size:15px;font-weight:600;box-shadow:0 4px 14px rgba(7,193,96,.25)}
.btn-wechat:active{opacity:.85}
.third-party .auth-tip{margin-top:10px}

/* ---- 资料表单 ---- */
.onboard-head{text-align:center;padding:34px 20px 10px}
.onboard-head h2{font-size:22px}
.onboard-head p{color:var(--muted);font-size:13px;margin-top:6px}

/* ---- 注册完成页：新人试用规则 ---- */
.trial-notice{margin:6px 18px 0;padding:14px 15px;border-radius:var(--radius);
  background:linear-gradient(135deg,#fffaf0,#fff2ef);border:1px solid #ffe0b8;
  box-shadow:0 3px 14px rgba(232,160,40,.10)}
.trial-notice-head{display:flex;align-items:center;gap:10px}
.trial-notice-head .trial-ico{font-size:24px;line-height:1}
.trial-notice-head strong{display:block;font-size:14px;color:#a9660a;letter-spacing:.3px}
.trial-notice-head em{display:block;font-style:normal;font-size:12px;color:#b8925f;margin-top:3px}
.trial-rules{list-style:none;margin-top:11px;padding-top:10px;border-top:1px dashed #f2ddb6;display:flex;flex-direction:column;gap:7px}
.trial-rules li{position:relative;padding-left:11px;font-size:12px;line-height:1.55;color:#8a7458}
.trial-rules li::before{content:'';position:absolute;left:0;top:7px;width:4px;height:4px;border-radius:50%;background:#e8a028}
.trial-rules li b{color:#a9660a;margin-right:5px}
.profile-form{padding:14px 18px 40px;display:flex;flex-direction:column;gap:13px}
.form-grid{display:flex;gap:10px}
.form-grid>*{flex:1}
.tag-pick{display:flex;flex-wrap:wrap;gap:8px}
.tag-pick button{border:1.5px solid var(--border);border-radius:18px;padding:7px 14px;font-size:13px;color:var(--muted);background:#fff}
.tag-pick button.on{border-color:var(--primary);color:var(--primary);background:var(--pink);font-weight:600}
textarea{resize:none;min-height:80px}

/* ---- 主框架 ---- */
.topbar{position:sticky;top:0;z-index:20;background:var(--pink-grad);color:#fff;display:flex;align-items:center;justify-content:center;gap:10px;padding:13px;font-size:17px;font-weight:700;letter-spacing:2px}
.member-badge{font-size:11px;font-weight:600;letter-spacing:0;background:rgba(255,255,255,.25);padding:3px 10px;border-radius:12px}
#pages{min-height:calc(100vh - 110px)}
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:460px;display:flex;background:#fff;border-top:1px solid var(--border);z-index:30;padding-bottom:env(safe-area-inset-bottom)}
.tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 8px;font-size:11px;color:var(--muted);position:relative}
.tab-btn.active{color:var(--primary)}
.tab-ico{font-size:21px}
.tab-badge{position:absolute;top:4px;right:22%;background:var(--primary);color:#fff;font-size:10px;font-style:normal;min-width:16px;height:16px;border-radius:8px;line-height:16px;text-align:center;padding:0 4px}

/* ---- 缘分匹配 ---- */
#page-match{padding:16px 16px 90px}
#deck{position:relative;height:430px;max-width:340px;margin:0 auto}
.swipe-card{position:absolute;inset:0;background:var(--card);border-radius:22px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:transform .3s,opacity .3s;touch-action:none;cursor:grab}
.swipe-card.dragging{transition:none}
.swipe-card .card-photo{flex:1;display:flex;align-items:center;justify-content:center;font-size:74px;color:#fff;font-weight:700;position:relative}
.swipe-card .card-info{padding:14px 16px;background:#fff}
.swipe-card .card-info h3{font-size:20px;display:flex;align-items:center;gap:8px}
.swipe-card .card-info h3 .age{font-size:13px;color:var(--primary);background:var(--pink);border-radius:10px;padding:2px 8px;font-weight:600}
.swipe-card .meta{color:var(--muted);font-size:13px;margin-top:6px}
.swipe-card .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.swipe-card .tags span{background:var(--pink);color:var(--primary);font-size:11px;padding:3px 9px;border-radius:10px}
.swipe-card .stamp{position:absolute;top:18px;font-size:22px;font-weight:800;letter-spacing:4px;border:3px solid;border-radius:8px;padding:4px 10px;opacity:0;transition:.2s}
.stamp-like{right:16px;color:#3fbe7b;border-color:#3fbe7b;transform:rotate(12deg)}
.stamp-pass{left:16px;color:#b5aca6;border-color:#b5aca6;transform:rotate(-12deg)}
.deck-actions{display:flex;justify-content:center;gap:38px;margin-top:20px}
.act-btn{width:62px;height:62px;border-radius:50%;font-size:26px;color:#fff;box-shadow:var(--shadow)}
.act-pass{background:#fff;color:#b5aca6;border:1.5px solid #e8e0dc}
.act-like{background:var(--pink-grad);font-size:28px}
#deckEmpty{text-align:center;color:var(--muted);padding:120px 30px 0;line-height:2}
.empty-emoji{font-size:52px}

/* ---- 找对象 ---- */
#page-find{padding:12px 14px 90px}
.filter-bar{background:var(--card);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);margin-bottom:14px;display:flex;flex-direction:column;gap:10px}
.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.filter-grid select{padding:9px 8px;font-size:13px;color:var(--text);background:#fff}
.filter-actions{display:flex;gap:8px}
.filter-actions button{flex:1}
.filter-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px}
.filter-row input,.filter-row select{width:auto;flex:1;min-width:70px;padding:8px}
.filter-row label{display:flex;align-items:center;gap:4px;color:var(--muted);white-space:nowrap;flex:2;min-width:180px}
.filter-row label input{min-width:52px;flex:1}
.find-grid{display:flex;flex-direction:column;gap:12px}
.mini-card{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);cursor:pointer;transition:transform .15s}
.mini-card:active{transform:scale(.97)}
.mini-card .photo{height:130px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:40px;font-weight:700}
.mini-card .body{padding:10px 12px}
.mini-card .body h4{font-size:15px}
.mini-card .body p{color:var(--muted);font-size:12px;margin-top:4px}
.vip-tag{font-size:10px;color:#b8860b;background:linear-gradient(135deg,#ffe9b8,#ffd27a);padding:1px 7px;border-radius:8px;margin-left:5px;font-weight:700}

/* ---- 找对象：筛选结果卡片（头像+资料标签+自我介绍+操作） ---- */
.result-card{background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);cursor:pointer;transition:transform .15s}
.result-card:active{transform:scale(.98)}
.rc-top{display:flex;align-items:center;gap:12px}
.rc-top .avatar.rc-av{width:62px;height:62px;font-size:22px;border-radius:18px;box-shadow:0 2px 10px rgba(230,67,64,.18)}
.rc-info{flex:1;min-width:0}
.rc-info h4{font-size:17px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.rc-sex{font-size:13px;font-weight:700;color:var(--primary);background:var(--pink);border-radius:9px;padding:1px 7px}
.rc-sex.male{color:#3a7bd5;background:#e7f0fd}
.rc-info p{color:var(--muted);font-size:12px;margin-top:4px}
.rc-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.rc-tags span{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:4px 11px;font-size:12px;color:#6f625c}
.rc-bio{position:relative;margin-top:11px;padding:10px 12px;background:var(--pink);border-left:3px solid var(--primary);border-radius:10px;font-size:13px;line-height:1.7;color:#7a5c55}
.rc-quote{color:var(--primary);font-size:17px;font-weight:700;margin-right:4px;font-family:Georgia,serif}
.rc-count{float:right;color:var(--muted);font-size:11px;margin-left:8px;margin-top:4px}
.rc-bio-empty{color:var(--muted);border-left-color:#e8c9c4;background:var(--bg)}
.rc-actions{display:flex;gap:10px;margin-top:12px}
.rc-btn{flex:1;border-radius:22px;padding:9px 0;font-size:14px;font-weight:600;letter-spacing:1px}
.rc-like{border:1.5px solid var(--primary);color:var(--primary);background:#fff}
.rc-like:active{background:var(--pink)}
.rc-chat{background:var(--pink-grad);color:#fff;box-shadow:var(--shadow)}
.rc-chat:active{opacity:.85}

/* ---- 消息 ---- */
#page-msg{padding-bottom:90px;min-height:calc(100vh - 110px)}
.conv-item{display:flex;align-items:center;gap:12px;background:var(--card);padding:13px 16px;border-bottom:1px solid var(--border);cursor:pointer}
.conv-item:active{background:var(--pink)}
.conv-item .conv-main{flex:1;min-width:0}
.conv-item h4{font-size:15px}
.conv-item p{color:var(--muted);font-size:12px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.conv-time{color:var(--muted);font-size:11px}
.conv-unread{background:var(--primary);color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:9px;padding:0 5px}
/* 顶部未读汇总提示条 */
.unread-tip{display:flex;align-items:center;gap:8px;padding:9px 16px;background:#fff3f2;border-bottom:1px solid #ffe0dd;color:var(--primary);font-size:13px;font-weight:600}
.unread-tip span{flex:1}
.unread-tip button{background:var(--primary);color:#fff;border-radius:14px;padding:4px 12px;font-size:12px;font-weight:600}
.unread-tip button:active{opacity:.85}
.paywall{padding:90px 40px;text-align:center;color:var(--muted)}
.paywall .lock{font-size:54px}
.paywall h3{color:var(--text);margin:16px 0 8px}
.paywall .btn-primary{margin-top:22px;letter-spacing:0}
/* 关键修复：手机浏览器 100vh 含工具栏会把输入行顶出屏幕，改用 dvh 并适配安全区 */
#chatView{position:fixed;top:0;left:50%;transform:translateX(-50%);width:100%;max-width:460px;height:100vh;height:100dvh;background:var(--bg);z-index:40;display:flex;flex-direction:column}
.chat-head{background:var(--pink-grad);color:#fff;display:flex;align-items:center;padding:12px;font-weight:700;position:relative}
.chat-head .back-btn{position:absolute;left:6px;font-size:26px;color:#fff;padding:0 10px}
.chat-head span{margin:0 auto}
#chatBody{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch}
.bubble-row{display:flex;gap:8px;align-items:flex-end;max-width:85%}
.bubble-row.self{align-self:flex-end;flex-direction:row-reverse}
.bubble{background:#fff;padding:9px 13px;border-radius:14px 14px 14px 4px;font-size:14px;word-break:break-all;box-shadow:0 1px 4px rgba(0,0,0,.05)}
.self .bubble{background:var(--primary);color:#fff;border-radius:14px 14px 4px 14px}
/* 图片消息气泡（微信式） */
.bubble.bubble-img{padding:4px;background:#fff;min-width:96px}
.self .bubble.bubble-img{background:#fff}
.bubble.bubble-img img{display:block;max-width:min(46vw,190px);max-height:220px;border-radius:10px;object-fit:cover;cursor:zoom-in}
.bubble.bubble-img.loading{color:var(--muted);font-size:12px}
/* 试用期提示条（聊天窗内） */
.trial-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff8e6;border-top:1px solid #ffe6b0;color:#9a6a12;font-size:12px;line-height:1.4}
.trial-bar span{flex:1}
.trial-bar button{flex-shrink:0;background:linear-gradient(135deg,#f7c948,#e6a417);color:#5b3d05;font-weight:700;border-radius:14px;padding:5px 12px;font-size:12px}
.member-ribbon.trial{background:linear-gradient(135deg,#fff3d6,#ffe2ad)}
.member-ribbon.trial h4{color:#8a5a00}
.member-ribbon.trial .expire{color:#a8781f}
/* 表情面板 */
.emoji-panel{background:#f7f5f4;border-top:1px solid var(--border);padding:10px;display:grid;grid-template-columns:repeat(8,1fr);gap:4px;max-height:34vh;max-height:34dvh;overflow-y:auto}
.emoji-panel button{font-size:24px;padding:4px 0;border-radius:8px;line-height:1.3}
.emoji-panel button:active{background:var(--pink)}
/* 微信式输入行：表情 / 输入 / 图片 / 发送 */
.chat-input-row{display:flex;gap:8px;align-items:center;padding:9px 10px;background:#fff;border-top:1px solid var(--border);padding-bottom:calc(9px + env(safe-area-inset-bottom))}
.chat-input-row input{flex:1;min-width:0;border-radius:8px;padding:9px 11px}
.chat-ico-btn{flex-shrink:0;font-size:24px;line-height:1;padding:2px 4px;border-radius:8px}
.chat-ico-btn:active{background:var(--pink)}
#chatSend{flex-shrink:0;min-width:62px}
/* 图片全屏预览 */
#imgViewer{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:90;display:flex;align-items:center;justify-content:center;cursor:zoom-out}
#imgViewer img{max-width:96vw;max-height:96vh;max-height:96dvh;object-fit:contain}

/* ---- 动态 ---- */
#page-moments{padding:12px 14px 90px}
.moment-compose{background:var(--card);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);margin-bottom:14px}
.moment-compose-foot{display:flex;align-items:center;gap:10px;margin-top:10px}
.pic-btn{color:var(--muted);font-size:13px;border:1px solid var(--border);border-radius:8px;padding:6px 10px;cursor:pointer}
.pic-names{flex:1;color:var(--muted);font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.moment-item{background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);margin-bottom:12px}
.moment-item .m-head{display:flex;align-items:center;gap:10px;cursor:pointer}
.moment-item .m-head h4{font-size:14px}
.moment-item .m-head time{color:var(--muted);font-size:11px;display:block;margin-top:2px}
.moment-item .m-content{margin:10px 0;font-size:14px;line-height:1.6;white-space:pre-wrap}
.moment-item .m-pics{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.moment-item .m-pics img{width:104px;height:104px;object-fit:cover;border-radius:10px}
.m-foot{display:flex;gap:22px;color:var(--muted);font-size:13px}
.m-foot button{color:var(--muted);font-size:13px}
.m-foot button.liked{color:var(--primary)}
.comments{margin-top:10px;border-top:1px solid var(--border);padding-top:8px;display:flex;flex-direction:column;gap:6px}
.comment{font-size:13px;color:var(--text);background:var(--bg);border-radius:10px;padding:7px 10px}
.comment b{color:var(--primary);font-weight:600;margin-right:6px}
.cmt-row{display:flex;gap:8px;margin-top:8px}
.cmt-row input{flex:1;padding:7px 10px;font-size:13px}

/* ---- 我的 ---- */
#page-me{padding:14px 16px 90px}
.me-card{background:var(--card);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;align-items:center;gap:14px;margin-bottom:14px;cursor:pointer}
.me-card h3{font-size:18px}
.me-card p{color:var(--muted);font-size:13px;margin-top:4px}
.member-ribbon{background:linear-gradient(135deg,#3a2e22,#6b4f2e);border-radius:var(--radius);color:#f5deb3;padding:16px;margin-bottom:14px;box-shadow:var(--shadow)}
.member-ribbon h4{display:flex;justify-content:space-between;align-items:center;font-size:15px}
.member-ribbon .expire{color:#d9c39a;font-size:12px;margin-top:8px}
.member-ribbon .btn-gold{background:linear-gradient(135deg,#ffe9b8,#ffd27a);color:#6b4f2e;border-radius:18px;padding:7px 18px;font-weight:700;font-size:13px}
.me-menu{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.menu-item{display:flex;justify-content:space-between;align-items:center;padding:15px 16px;border-bottom:1px solid var(--border);font-size:14px;cursor:pointer}
.menu-item:last-child{border-bottom:none}
.menu-item:active{background:var(--pink)}
.menu-item .arr{color:#d5ccc7}

/* ---- 会员购买 ---- */
.plan-list{display:flex;gap:10px;margin:16px 0}
.plan{flex:1;border:2px solid var(--border);border-radius:14px;padding:14px 6px;text-align:center;cursor:pointer;position:relative}
.plan.on{border-color:var(--primary);background:var(--pink)}
.plan .p-name{font-weight:700;font-size:14px}
.plan .p-price{color:var(--primary);font-size:22px;font-weight:800;margin:6px 0 2px}
.plan .p-price small{font-size:12px;font-weight:400}
.plan .p-save{color:var(--muted);font-size:11px}
.plan .hot{position:absolute;top:-9px;right:-4px;background:var(--primary);color:#fff;font-size:10px;padding:2px 8px;border-radius:10px}

/* ---- 扫码支付 ---- */
.pay-amount{text-align:center;color:var(--primary);font-size:32px;font-weight:800;margin:8px 0 12px}
.pay-qr{display:flex;justify-content:center;margin:4px 0 10px}
.pay-qr img{width:min(260px,68vw);height:min(260px,68vw);object-fit:contain;background:#fff;border:1px solid var(--border);border-radius:14px;padding:8px}
.pay-quick{display:flex;gap:8px;margin:0 0 12px}
.pay-quick button{flex:1;padding:10px 0;font-size:13px}
.pay-guide{background:#FFF6F7;border:1px solid #F6DDE2;border-radius:12px;padding:10px 12px;margin-bottom:10px}
.pay-guide-hd{font-size:11px;color:#C2415A;font-weight:700;line-height:1.5;margin-bottom:7px}
.pay-guide-row{display:flex;gap:6px;font-size:11px;color:#7A6560;line-height:1.7}
.pay-guide-row i{flex:0 0 14px;height:14px;border-radius:7px;background:#F3C6CF;color:#8E2F45;font-style:normal;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:4px}
.pay-guide-row b{color:#C2415A;font-weight:700}
.pay-link{display:block;text-align:center;background:var(--primary);color:#fff;border-radius:12px;padding:12px 0;font-size:15px;font-weight:700;margin-bottom:12px;text-decoration:none}
.pay-qr-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:150px;border:1px dashed var(--border);border-radius:14px;color:var(--muted);font-size:13px;line-height:2;text-align:center;margin:4px 0 12px}
.pay-qr-empty span{font-size:11px;color:#b8ada7}
.pay-note{background:var(--bg);border-radius:12px;padding:10px 12px;font-size:12px;line-height:1.7;color:#6f625c;margin-bottom:10px}
.pay-meta{text-align:center;color:var(--muted);font-size:11px;margin-bottom:14px}
/* 扫码支付（微信 Native）：出码中 / 等待支付 */
.pay-qr-loading{height:min(260px,68vw);align-items:center;border:1px dashed var(--border);border-radius:14px;margin:4px 0 10px}
.gw-spin{width:34px;height:34px;border-radius:50%;border:3px solid #F3E3E7;border-top-color:var(--primary);animation:gwspin .8s linear infinite}
@keyframes gwspin{to{transform:rotate(360deg)}}
.pay-gw-state{text-align:center;font-size:12px;color:var(--primary);font-weight:700;margin:-2px 0 12px;min-height:18px}

/* ---- 弹层 / 配对 ---- */
.modal-mask{position:fixed;inset:0;background:rgba(30,15,12,.5);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.modal-box{background:#fff;width:100%;max-width:460px;border-radius:22px 22px 0 0;padding:20px;max-height:88vh;overflow-y:auto;animation:up .25s ease}
@keyframes up{from{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal-close{float:right;font-size:22px;color:var(--muted);padding:0 4px}
.detail-head{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.detail-head h3{font-size:20px}
.detail-head p{color:var(--muted);font-size:13px;margin-top:4px}
.detail-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.detail-row span{background:var(--bg);border-radius:9px;padding:6px 12px;font-size:13px;color:#6f625c}
.detail-bio{background:var(--bg);border-radius:12px;padding:12px;font-size:13px;line-height:1.7;color:#6f625c;margin-bottom:16px}
.detail-actions{display:flex;gap:12px}
.detail-actions .btn-primary,.detail-actions .btn-outline{flex:1;letter-spacing:0}
.detail-report{display:block;width:100%;margin-top:12px;color:var(--muted);font-size:12px;text-decoration:underline}
.match-pop{position:fixed;inset:0;background:rgba(230,67,64,.92);z-index:60;display:flex;align-items:center;justify-content:center}
.match-pop-card{background:#fff;border-radius:26px;padding:36px 30px;text-align:center;width:300px;animation:pop .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
.match-hearts{font-size:64px}
.match-pop-card h2{margin:10px 0 6px;font-size:24px}
.match-pop-card p{color:var(--muted);font-size:13px;margin-bottom:20px}
.match-pop-card .btn-primary{width:100%;margin-bottom:10px;letter-spacing:0}
.match-pop-card .btn-outline{width:100%}

/* ---- 头像 / 杂项 ---- */
.avatar{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:18px;flex-shrink:0;overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar.lg{width:72px;height:72px;font-size:28px}
.toast{position:fixed;top:16%;left:50%;transform:translateX(-50%);background:rgba(30,15,12,.85);color:#fff;padding:11px 22px;border-radius:12px;font-size:14px;z-index:99;max-width:80%;text-align:center;animation:up .2s ease}
.loading{position:fixed;inset:0;background:rgba(255,255,255,.7);z-index:98;display:flex;align-items:center;justify-content:center}
.spinner{width:36px;height:36px;border:4px solid var(--pink);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ver-tag{position:fixed;right:8px;bottom:calc(64px + env(safe-area-inset-bottom));font-size:10px;color:#c9bdb7;background:rgba(255,255,255,.8);padding:2px 7px;border-radius:8px;z-index:5;pointer-events:none}

/* ---- 真实认证 ---- */
.vf-card{background:var(--card);border-radius:14px;padding:14px;box-shadow:var(--shadow)}
.vf-card.locked{background:#f6f4f3;opacity:.72}
.vf-card.locked .vf-title{color:#9a8f8a}
.vf-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vf-desc{color:#6f625c;font-size:12px;line-height:1.6;margin-top:8px}
.vf-info{font-size:12px;color:#5d524d;line-height:1.7;margin-top:8px;background:var(--pink);border-radius:10px;padding:8px 10px}
.vf-ok{font-size:12.5px;color:#1f8a4c;font-weight:600;margin-top:8px}
.vf-pending{font-size:12.5px;color:#a9660a;font-weight:600;margin-top:8px}
.vf-note{font-size:12px;margin-top:8px;color:#6f625c;background:#f6f4f3;border-radius:10px;padding:8px 10px;word-break:break-all}
.vf-note.bad{background:#ffe4e2;color:#b23b3b}
.vf-tag{font-size:10px;border-radius:9px;padding:2px 8px;background:#f0ecea;color:#8b807b;font-weight:700}
.vf-tag.ok{background:#e6f7ec;color:#1f8a4c}
.vf-tag.warn{background:#fff3d6;color:#a9660a}
.vf-tag.danger{background:#ffe4e2;color:#b23b3b}
.vf-hint{font-style:normal;font-size:11px;color:var(--muted);margin-left:4px}
.vf-thumb{width:104px;height:104px;border-radius:10px;overflow:hidden;background:#f0ecea;margin-top:10px}
.vf-thumb img{width:100%;height:100%;object-fit:cover}
.vf-form{display:flex;flex-direction:column;gap:10px;margin-top:12px}
/* 人脸识别取景 */
.face-wrap{position:relative;width:210px;height:270px;margin:12px auto 0;border-radius:16px;overflow:hidden;background:#1b1b1b}
.face-wrap video{width:100%;height:100%;object-fit:cover;display:block}
.face-ring{position:absolute;inset:18px 26px 34px;border:2px dashed rgba(255,255,255,.8);border-radius:50%}
.vf-badge{background:#e6f7ec!important;color:#1f8a4c!important;font-weight:600}
/* 联系客服 / 意见反馈 */
.cs-card{background:var(--card);border-radius:14px;padding:14px;box-shadow:var(--shadow)}
.cs-title{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.cs-desc{color:#6f625c;font-size:12px;line-height:1.65;margin-top:8px}
.cs-cats{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.cs-cat{border:1.5px solid var(--border);border-radius:16px;padding:6px 14px;font-size:12.5px;color:#6f625c;background:#fff;cursor:pointer}
.cs-cat.on{border-color:var(--primary);color:var(--primary);background:var(--pink);font-weight:600}
#csText{margin-top:12px;min-height:110px;resize:vertical;line-height:1.6}
#csContact{margin-top:10px}
.cs-list-title{font-size:13px;font-weight:700;color:#5d524d;margin:16px 2px 2px}
.cs-item{background:var(--card);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow)}
.cs-item-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cs-cat-tag{font-size:10px;border-radius:9px;padding:2px 8px;background:var(--pink);color:var(--primary);font-weight:700}
.cs-time{font-size:11px;color:var(--muted);margin-left:auto}
.cs-content{font-size:13px;line-height:1.7;color:#3f3733;margin-top:9px;word-break:break-word;white-space:pre-wrap}
.cs-contact{font-size:11.5px;color:#9a8f8a;margin-top:6px;word-break:break-all}
.cs-reply{margin-top:10px;background:#f2fbf5;border:1px solid #d6f0df;border-radius:10px;padding:9px 11px}
.cs-reply-head{font-size:11.5px;font-weight:700;color:#1f8a4c;margin-bottom:5px}
.cs-reply p{font-size:12.5px;line-height:1.7;color:#3f5546;word-break:break-word;white-space:pre-wrap;margin:0}
.cs-new{font-size:10px;border-radius:9px;padding:2px 7px;background:var(--primary);color:#fff;font-weight:700}

/* ---- 聊天「N 条新消息」提示条（微信同款，用户翻历史时浮出） ---- */
#chatNewPill{position:absolute;left:50%;bottom:76px;z-index:30;
  transform:translateX(-50%) translateY(8px);
  background:var(--primary);color:#fff;border:none;border-radius:16px;padding:7px 15px;
  font-size:12.5px;font-weight:600;line-height:1;cursor:pointer;
  box-shadow:0 5px 16px rgba(232,85,109,.38);
  opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}
#chatNewPill.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
