/* ==========================================================
   圈子AI匹配系统 · 设计令牌
   配色参考「出门」的年轻化方向：不用大红大紫，用低饱和高亮
   ========================================================== */
:root{
  --brand:#6C5CE7;
  --brand-soft:#EEEAFF;
  --brand-2:#00C2A8;
  --brand-2-soft:#E3FBF7;
  --accent:#FF7A59;
  --bg:#F5F6FA;
  --card:#FFFFFF;
  --text:#141722;
  --text-2:#4A5060;
  --muted:#8B91A6;
  --line:#ECEEF5;
  --ok:#12B886;
  --warn:#F59F00;
  --radius:18px;
  --radius-sm:12px;
  --shadow:0 6px 24px rgba(28,32,58,.07);
  --shadow-lg:0 14px 40px rgba(28,32,58,.12);
  --grad:linear-gradient(135deg,#7C6CFF 0%,#5B4BE0 55%,#4A3AC9 100%);
  --grad-2:linear-gradient(135deg,#00D4B8 0%,#00A38C 100%);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);
  font-size:15px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}
input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
a{color:var(--brand);text-decoration:none}

/* 手机外框（桌面预览时居中成手机屏） */
#app{max-width:460px;margin:0 auto;min-height:100vh;background:var(--bg);position:relative;padding-bottom:76px}
@media(min-width:520px){
  body{background:#EDEFF5}
  #app{box-shadow:0 0 0 1px rgba(0,0,0,.04),0 24px 70px rgba(28,32,58,.14);min-height:100vh}
}

/* ---------- 通用 ---------- */
.row{display:flex;align-items:center}
.between{justify-content:space-between}
.gap8{gap:8px}.gap12{gap:12px}
.muted{color:var(--muted)}
.tiny{font-size:12px}
.small{font-size:13px}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:44px;padding:0 20px;border-radius:999px;font-weight:600;font-size:15px;
  background:var(--grad);color:#fff;box-shadow:0 6px 18px rgba(108,92,231,.28);
  transition:transform .15s ease,opacity .2s;width:100%;
}
.btn:active{transform:scale(.97)}
.btn.ghost{background:#fff;color:var(--brand);box-shadow:inset 0 0 0 1.5px var(--brand-soft)}
.btn.plain{background:var(--brand-soft);color:var(--brand);box-shadow:none}
.btn.teal{background:var(--grad-2);box-shadow:0 6px 18px rgba(0,194,168,.24)}
.btn.sm{height:34px;padding:0 14px;font-size:13px;width:auto;border-radius:999px}
.btn[disabled]{opacity:.45;pointer-events:none}
.tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;background:var(--brand-soft);color:var(--brand);font-weight:500}
.tag.teal{background:var(--brand-2-soft);color:#00897B}
.tag.gray{background:#F2F3F8;color:var(--text-2)}

/* ---------- 顶部 ---------- */
.hero{background:var(--grad);color:#fff;padding:20px 20px 62px;border-radius:0 0 26px 26px;position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;right:-70px;top:-90px;background:rgba(255,255,255,.09)}
.hero h1{margin:0;font-size:19px;font-weight:700;letter-spacing:.2px}
.hero .sub{margin-top:4px;font-size:12.5px;opacity:.82}
.hero-pill{display:inline-flex;align-items:center;gap:5px;background:rgba(255,255,255,.16);padding:4px 10px;border-radius:999px;font-size:12px;backdrop-filter:blur(4px)}
.pull-up{margin-top:-46px;position:relative;z-index:2}

/* ---------- 底部导航 ---------- */
.tabbar{
  position:fixed;bottom:0;left:0;right:0;max-width:460px;margin:0 auto;
  background:rgba(255,255,255,.94);backdrop-filter:blur(14px);
  border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);
  padding:8px 0 calc(8px + env(safe-area-inset-bottom));z-index:50;
}
.tabbar button{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--muted);font-weight:500}
.tabbar button.on{color:var(--brand)}
.tabbar .ico{font-size:19px;line-height:1}

/* ---------- 匹配卡 ---------- */
.match-card{padding:0;overflow:hidden;margin-bottom:14px}
.match-head{display:flex;gap:12px;padding:16px 16px 12px}
.avatar{
  width:48px;height:48px;border-radius:15px;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:17px;
}
.score-ring{
  width:52px;height:52px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  font-weight:800;font-size:16px;color:var(--brand);position:relative;
}
.reason{
  margin:0 16px 12px;background:#FAFAFE;border-left:3px solid var(--brand);
  border-radius:0 10px 10px 0;padding:10px 12px;font-size:13px;color:var(--text-2);line-height:1.6;
}
.reason .ai{font-size:11px;font-weight:700;color:var(--brand);letter-spacing:.5px;display:block;margin-bottom:3px}
.match-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px dashed var(--line);background:#FCFCFE}
.contact-box{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ok);font-weight:600}

/* ---------- 表单 ---------- */
.field{margin-bottom:16px}
.field > label{display:block;font-size:13px;font-weight:600;margin-bottom:7px;color:var(--text-2)}
.field .hint{font-size:11.5px;color:var(--muted);font-weight:400;margin-left:6px}
.input,select.input,textarea.input{
  width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:11px 13px;background:#FBFBFD;outline:none;transition:.18s;
}
.input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px var(--brand-soft)}
textarea.input{resize:vertical;min-height:78px;line-height:1.6}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:7px 13px;border-radius:999px;background:#F2F3F8;font-size:13px;color:var(--text-2);border:1.5px solid transparent;transition:.15s}
.chip.on{background:var(--brand-soft);color:var(--brand);border-color:#CFC5FF;font-weight:600}

/* ---------- 列表 ---------- */
.list-item{display:flex;gap:12px;padding:14px 16px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 4px 12px}
.section-title h2{font-size:15.5px;margin:0;font-weight:700}
.section-title .more{font-size:12.5px;color:var(--muted)}

/* ---------- 空态 / 提示 ---------- */
.empty{text-align:center;padding:48px 24px;color:var(--muted)}
.empty .big{font-size:38px;margin-bottom:10px;opacity:.5}
.toast{
  position:fixed;left:50%;bottom:110px;transform:translateX(-50%) translateY(10px);
  background:rgba(20,23,34,.92);color:#fff;padding:11px 20px;border-radius:999px;
  font-size:13.5px;opacity:0;pointer-events:none;transition:.26s;z-index:200;max-width:86vw;text-align:center;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- 弹层 ---------- */
.sheet-mask{position:fixed;inset:0;background:rgba(15,18,30,.42);opacity:0;pointer-events:none;transition:.24s;z-index:100}
.sheet-mask.show{opacity:1;pointer-events:auto}
.sheet{
  position:fixed;left:50%;bottom:0;transform:translate(-50%,100%);width:100%;max-width:460px;
  background:#fff;border-radius:24px 24px 0 0;padding:22px 20px calc(24px + env(safe-area-inset-bottom));
  transition:transform .28s cubic-bezier(.32,.72,0,1);z-index:101;max-height:88vh;overflow:auto;
}
.sheet.show{transform:translate(-50%,0)}
.sheet h3{margin:0 0 6px;font-size:17px}

/* ---------- 信用分/统计 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat{background:#fff;border-radius:14px;padding:12px 10px;text-align:center;box-shadow:var(--shadow)}
.stat b{display:block;font-size:19px;color:var(--brand);line-height:1.3}
.stat span{font-size:11.5px;color:var(--muted)}

.bar{height:6px;border-radius:99px;background:var(--line);overflow:hidden}
.bar > i{display:block;height:100%;border-radius:99px;background:var(--grad)}

/* ---------- 每日签到 ---------- */
.checkin-chip{
  margin-top:14px;display:inline-flex;align-items:center;justify-content:center;
  height:34px;padding:0 16px;border-radius:999px;font-size:13px;font-weight:600;
  background:rgba(255,255,255,.96);color:var(--brand);box-shadow:0 4px 14px rgba(20,23,60,.16);
  transition:transform .15s;
}
.checkin-chip:active{transform:scale(.96)}
.checkin-chip.done{background:rgba(255,255,255,.18);color:#fff;box-shadow:none;font-weight:500}

.cal-grid{display:grid;grid-template-columns:repeat(14,1fr);gap:4px}
.cal-day{
  aspect-ratio:1;border-radius:7px;background:#F2F3F8;color:var(--muted);
  display:grid;place-items:center;font-size:10.5px;font-weight:600;
}
.cal-day.on{background:var(--brand);color:#fff}
.cal-day.today{box-shadow:0 0 0 2px var(--brand-soft), 0 0 0 3px var(--brand)}

/* ---------- 模拟扫码框 ---------- */
.fakeqr{
  width:168px;height:168px;margin:0 auto 20px;border-radius:16px;
  background:
    repeating-linear-gradient(90deg,#141722 0 8px,#fff 8px 16px),
    repeating-linear-gradient(0deg,rgba(108,92,231,.55) 0 8px,transparent 8px 16px);
  background-blend-mode:multiply;
  box-shadow:0 0 0 8px #fff,0 0 0 9px var(--line);
}
