/* ============================================================
   悬赏平台 APP 全局样式  —— 移动端优先，RTL/LTR 全逻辑属性
   ============================================================ */
/* 内置默认维文字体（SIL OFL），无需后台上传即可显示 */
@font-face{font-family:'UGDefault';src:url('/assets/fonts/ug-default.ttf') format('truetype');
  font-weight:400;font-style:normal;font-display:swap;}
:root{
  --primary:#ff6a3d; --primary-soft:#fff0eb;
  --secondary:#3d8bff;
  --success:#18b874; --warning:#ff9f1c; --danger:#f24d5e;
  --ink:#1d2129; --ink-2:#4e5969; --ink-3:#86909c;
  --line:#eef0f3; --bg:#f5f6f8; --card:#ffffff;
  --ug-font-1:"UKIJ Tuz"; --ug-font-2:"ALKATIP";
  --zh-font-1:"PingFang SC"; --zh-font-2:"Microsoft YaHei";
  --r-lg:16px; --r-md:12px; --r-btn:10px; --r-input:8px;
  --space:4px;
  --shadow:0 4px 16px rgba(20,26,38,.06);
  --shadow-pop:0 8px 30px rgba(20,26,38,.14);
  --tab-h:60px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{
  font-family:var(--zh-font-1),var(--zh-font-2),system-ui,-apple-system,sans-serif;
  background:var(--bg);color:var(--ink);
  font-size:15px;line-height:1.5;
  padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));
  -webkit-font-smoothing:antialiased;
}
html[dir="rtl"] body{font-family:var(--ug-font-1),var(--ug-font-2),system-ui,Arial;}
a{color:inherit;text-decoration:none;}
img{display:block;max-width:100%;}
button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit;}
input,textarea,select{font-family:inherit;font-size:15px;outline:none;border:none;background:none;width:100%;color:var(--ink);}
ul{list-style:none;}
.money-text,.number-text,.num{font-family:system-ui,Segoe UI,Arial,sans-serif !important;font-variant-numeric:tabular-nums;}

/* 方向类图标 RTL 翻转；金额/数字/二维码不翻转 */
html[dir="rtl"] .ic-flip{transform:scaleX(-1);}

/* ---------- 顶部导航栏 ---------- */
.navbar{
  position:sticky;top:0;z-index:50;height:48px;display:flex;align-items:center;
  background:var(--card);padding-inline:8px;border-bottom:.5px solid var(--line);
}
.navbar .nav-back{width:40px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--ink);}
.navbar .nav-title{flex:1;text-align:center;font-size:17px;font-weight:600;padding-inline:4px;}
.navbar .nav-right{min-width:40px;display:flex;align-items:center;justify-content:flex-end;gap:4px;padding-inline-end:8px;}
.navbar.has-color{background:var(--primary);color:#fff;border:none;}
.navbar.has-color .nav-back{color:#fff;}

/* ---------- 页面容器 ---------- */
.page{padding:12px 12px 16px;}
.card{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:14px;margin-bottom:12px;}
.card.sm{border-radius:var(--r-md);padding:12px;}
.section-head{display:flex;align-items:center;justify-content:space-between;margin:4px 2px 10px;}
.section-head .t{font-size:16px;font-weight:700;display:flex;align-items:center;gap:6px;}
.section-head .more{font-size:13px;color:var(--ink-3);}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:44px;padding:0 18px;border-radius:var(--r-btn);
  background:var(--primary);color:#fff;font-size:15px;font-weight:600;
  transition:transform .12s ease,opacity .12s;
}
.btn:active{transform:scale(.95);}
.btn.block{width:100%;}
.btn.secondary{background:var(--primary-soft);color:var(--primary);}
.btn.ghost{background:#f2f3f5;color:var(--ink-2);}
.btn.text{background:none;color:var(--primary);min-height:36px;padding:0 8px;}
.btn.danger{background:var(--danger);}
.btn.disabled,.btn:disabled{background:#d4d7dc;color:#fff;pointer-events:none;}
.btn.sm{min-height:34px;padding:0 12px;font-size:13px;border-radius:8px;}

/* ---------- 表单 ---------- */
.field{margin-bottom:12px;}
.field label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:6px;}
.input,.textarea,.select{
  width:100%;background:#f7f8fa;border:1px solid transparent;border-radius:var(--r-input);
  padding:11px 12px;min-height:44px;
}
.input:focus,.textarea:focus,.select:focus{border-color:var(--primary);background:#fff;}
.textarea{min-height:96px;resize:vertical;line-height:1.6;}
.form-row{display:flex;align-items:center;gap:10px;}
.hint{font-size:12px;color:var(--ink-3);margin-top:5px;}

/* ---------- 标签 / 徽章 ---------- */
.tag{display:inline-flex;align-items:center;gap:3px;font-size:11px;padding:2px 8px;border-radius:6px;background:var(--primary-soft);color:var(--primary);font-weight:600;}
.tag.gray{background:#f2f3f5;color:var(--ink-3);}
.tag.green{background:#e7f8f1;color:var(--success);}
.tag.blue{background:#eaf2ff;color:var(--secondary);}
.tag.fire{background:linear-gradient(90deg,#ff6a3d,#ff9f1c);color:#fff;}
.badge-dot{position:absolute;top:8px;inset-inline-end:18px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;}

/* ---------- 任务卡片 ---------- */
.task-card{display:flex;gap:12px;padding:13px;background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);margin-bottom:11px;}
.task-card .price-col{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:66px;padding-inline-end:12px;border-inline-end:1px dashed var(--line);}
.task-card .price{font-size:19px;font-weight:800;color:var(--primary);line-height:1.1;}
.task-card .price small{font-size:12px;font-weight:600;}
.task-card .price-sub{font-size:11px;color:var(--ink-3);margin-top:3px;}
.task-card .tc-body{flex:1;min-width:0;}
.task-card .tc-title{font-size:15px;font-weight:600;margin-bottom:5px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
.task-card .tc-desc{font-size:12.5px;color:var(--ink-3);margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;}
.task-card .tc-tags{display:flex;gap:5px;margin-bottom:9px;flex-wrap:wrap;}
.task-card .tc-foot{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3);}
.avatar{width:20px;height:20px;border-radius:50%;object-fit:cover;background:#eee;}
.avatar.lg{width:60px;height:60px;} .avatar.md{width:36px;height:36px;}

/* ---------- 横向分类标签栏 ---------- */
.cat-bar{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none;}
.cat-bar::-webkit-scrollbar{display:none;}
.cat-bar .chip{flex:0 0 auto;padding:7px 15px;border-radius:18px;background:var(--card);font-size:13.5px;color:var(--ink-2);box-shadow:var(--shadow);}
.cat-bar .chip.active{background:var(--primary);color:#fff;font-weight:600;}

/* ---------- 底部 Tab ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;height:calc(var(--tab-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:var(--card);display:flex;border-top:.5px solid var(--line);
}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ink-3);position:relative;}
.tabbar a.active{color:var(--primary);}
.tabbar a .lbl{font-size:10.5px;}
.tabbar a.publish{position:relative;}
.tabbar a.publish .pub-btn{
  width:48px;height:48px;border-radius:50%;background:linear-gradient(145deg,var(--primary),#ff8e53);
  display:flex;align-items:center;justify-content:center;color:#fff;margin-top:-22px;box-shadow:0 6px 16px rgba(255,106,61,.4);
}

/* ---------- 快捷入口宫格 ---------- */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.quick-grid .qi{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 0;}
.quick-grid .qi .ico{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;}
.quick-grid .qi span{font-size:12px;color:var(--ink-2);}

/* ---------- 轮播 ---------- */
.banner{position:relative;border-radius:var(--r-lg);overflow:hidden;margin-bottom:12px;box-shadow:var(--shadow);}
.banner .slides{display:flex;transition:transform .35s ease;}
.banner .slides img{width:100%;height:150px;object-fit:cover;flex:0 0 100%;}
.banner .dots{position:absolute;bottom:8px;left:0;right:0;display:flex;justify-content:center;gap:5px;}
.banner .dots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.5);}
.banner .dots i.on{background:#fff;width:14px;border-radius:3px;}

/* ---------- 搜索框 ---------- */
.searchbox{display:flex;align-items:center;gap:8px;background:#f2f3f5;border-radius:18px;padding:8px 14px;color:var(--ink-3);font-size:13.5px;}

/* ---------- 个人中心 ---------- */
.profile-head{display:flex;align-items:center;gap:14px;padding:18px 4px 6px;}
.profile-head .ph-info{flex:1;}
.profile-head .ph-name{font-size:19px;font-weight:700;display:flex;align-items:center;gap:6px;}
.profile-head .ph-id{font-size:12px;color:var(--ink-3);margin-top:3px;}
.asset-strip{display:flex;text-align:center;margin-top:14px;}
.asset-strip .a{flex:1;}
.asset-strip .a b{font-size:18px;display:block;}
.asset-strip .a span{font-size:12px;color:var(--ink-3);}
.menu-list{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden;}
.menu-list .mi{display:flex;align-items:center;gap:12px;padding:14px;border-bottom:.5px solid var(--line);min-height:48px;}
.menu-list .mi:last-child{border:none;}
.menu-list .mi .mi-ic{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;}
.menu-list .mi .mi-t{flex:1;font-size:14.5px;}
.menu-list .mi .mi-v{font-size:12.5px;color:var(--ink-3);}
.menu-list .mi .arrow{color:var(--ink-3);}

/* ---------- 消息 ---------- */
.msg-item{display:flex;gap:12px;padding:13px;background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);margin-bottom:10px;}
.msg-item .mi-av{position:relative;width:46px;height:46px;border-radius:12px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;}
.msg-item .mi-body{flex:1;min-width:0;}
.msg-item .mi-top{display:flex;justify-content:space-between;margin-bottom:4px;}
.msg-item .mi-name{font-weight:600;font-size:14.5px;}
.msg-item .mi-time{font-size:11.5px;color:var(--ink-3);}
.msg-item .mi-last{font-size:13px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.unread-dot{width:9px;height:9px;border-radius:50%;background:var(--danger);animation:breathe 1.8s ease-in-out infinite;}

/* ---------- 聊天 ---------- */
.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - 48px);}
.chat-list{flex:1;overflow-y:auto;padding:14px;}
.bubble{max-width:74%;padding:10px 13px;border-radius:14px;margin-bottom:10px;font-size:14.5px;position:relative;word-break:break-word;}
.bubble.me{background:var(--primary);color:#fff;margin-inline-start:auto;border-end-end-radius:4px;}
.bubble.other{background:var(--card);box-shadow:var(--shadow);border-end-start-radius:4px;}
.bubble img{border-radius:8px;margin-top:4px;max-width:160px;}
.chat-input-bar{display:flex;align-items:center;gap:8px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:var(--card);border-top:.5px solid var(--line);}
.chat-input-bar .input{background:#f2f3f5;border-radius:18px;}

/* ---------- 底部抽屉弹窗 ---------- */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:80;opacity:0;pointer-events:none;transition:opacity .25s;}
.mask.show{opacity:1;pointer-events:auto;}
.sheet{position:fixed;inset-inline:0;bottom:0;z-index:90;background:var(--card);border-radius:18px 18px 0 0;padding:16px 16px calc(18px + env(safe-area-inset-bottom));transform:translateY(105%);transition:transform .3s cubic-bezier(.22,1,.36,1);max-height:82vh;overflow-y:auto;}
.sheet.show{transform:translateY(0);}
.sheet .sheet-handle{width:36px;height:4px;border-radius:2px;background:#e0e2e6;margin:0 auto 14px;}
.sheet .sheet-title{font-size:16px;font-weight:700;text-align:center;margin-bottom:14px;}

/* 居中弹窗 */
.modal{position:fixed;inset:0;z-index:90;display:none;align-items:center;justify-content:center;padding:28px;}
.modal.show{display:flex;}
.modal .modal-box{background:var(--card);border-radius:var(--r-lg);padding:20px;width:100%;max-width:320px;box-shadow:var(--shadow-pop);}

/* ---------- 骨架屏 ---------- */
.skeleton{background:#f0f1f4;border-radius:8px;position:relative;overflow:hidden;}
.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);animation:shimmer 1.3s infinite;}
html[dir="rtl"] .skeleton::after{transform:translateX(100%);background:linear-gradient(270deg,transparent,rgba(255,255,255,.65),transparent);}
.sk-line{height:14px;margin-bottom:9px;}
.sk-card{height:104px;margin-bottom:12px;border-radius:var(--r-lg);}

/* ---------- 空状态 ---------- */
.empty{display:flex;flex-direction:column;align-items:center;padding:50px 20px;color:var(--ink-3);}
.empty svg{width:120px;height:120px;margin-bottom:14px;}
.empty .e-t{font-size:14px;margin-bottom:14px;text-align:center;}

/* ---------- Toast ---------- */
.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.8);color:#fff;padding:11px 20px;border-radius:10px;font-size:14px;z-index:200;max-width:80%;text-align:center;opacity:0;transition:opacity .2s;pointer-events:none;}
.toast.show{opacity:1;}

/* ---------- 签到日历 ---------- */
.sign-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;}
.sign-day{aspect-ratio:1;border-radius:12px;background:#f5f6f8;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:var(--ink-3);gap:2px;}
.sign-day.done{background:var(--primary-soft);color:var(--primary);}
.sign-day.today{border:1.5px solid var(--primary);color:var(--primary);font-weight:700;}

/* VIP / 套餐卡片 */
.plan-card{border:1.5px solid var(--line);border-radius:var(--r-lg);padding:16px;text-align:center;position:relative;flex:1;background:var(--card);}
.plan-card.active{border-color:var(--primary);background:var(--primary-soft);}
.plan-card .pp-name{font-weight:700;margin-bottom:6px;}
.plan-card .pp-price{font-size:22px;font-weight:800;color:var(--primary);}
.plan-card .pp-price small{font-size:12px;}
.plan-row{display:flex;gap:10px;}

/* 进度条（上传） */
.progress{height:6px;border-radius:3px;background:#eee;overflow:hidden;margin-top:6px;}
.progress i{display:block;height:100%;background:var(--primary);width:0;transition:width .2s;}

/* 开关 */
.switch{position:relative;width:46px;height:26px;flex:0 0 auto;}
.switch input{display:none;}
.switch .sl{position:absolute;inset:0;background:#d4d7dc;border-radius:13px;transition:.2s;}
.switch .sl::before{content:"";position:absolute;width:22px;height:22px;border-radius:50%;background:#fff;top:2px;inset-inline-start:2px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.switch input:checked + .sl{background:var(--primary);}
.switch input:checked + .sl::before{inset-inline-start:22px;}

/* ---------- 动画 ---------- */
@keyframes shimmer{100%{transform:translateX(100%);}}
@keyframes breathe{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(.8);}}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
.fade-in{animation:fadeUp .4s ease both;}
@keyframes pop{0%{transform:scale(.9);opacity:0;}100%{transform:none;opacity:1;}}

/* 列表分段淡入 */
.stagger > *{animation:fadeUp .35s ease both;}
.stagger > *:nth-child(1){animation-delay:.02s}.stagger > *:nth-child(2){animation-delay:.06s}
.stagger > *:nth-child(3){animation-delay:.1s}.stagger > *:nth-child(4){animation-delay:.14s}
.stagger > *:nth-child(5){animation-delay:.18s}.stagger > *:nth-child(6){animation-delay:.22s}

/* PC 访问前台提示 */
.mobile-only-mask{display:none;}
@media (min-width:768px){
  .mobile-only-mask{position:fixed;inset:0;z-index:999;background:#0f1320;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;text-align:center;}
  .mobile-only-mask svg{width:120px;height:120px;margin-bottom:24px;}
  .mobile-only-mask h2{font-size:22px;margin-bottom:10px;}
  .mobile-only-mask p{color:#9aa3b5;font-size:14px;line-height:1.7;max-width:340px;}
  body{overflow:hidden;}
}
