/* ===== 作品打卡页面升级 v2 前端样式 ===== */
/* 品牌：蓝#3b82f6/#2563eb 橙#f97316/#ef4444 绿#10b981 金#f59e0b */
:root {
  --blue:#3b82f6; --blue-d:#2563eb; --orange:#f97316; --orange-r:#ef4444;
  --green:#10b981; --gold:#f59e0b;
  --bg:#f0f4ff; --card:#fff; --text:#1e293b; --text-l:#94a3b8; --border:#e2e8f0;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); font-family:-apple-system,"Microsoft YaHei",sans-serif; color:var(--text); }
.ckv-app { max-width:480px; margin:0 auto; padding-bottom:60px; background:var(--bg); min-height:100vh; }

/* ===== 模块1 顶部导航 ===== */
.ckv-nav { position:sticky; top:0; z-index:50; display:flex; align-items:center; justify-content:space-between; padding:12px 16px; background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.05); }
.ckv-nav-left { display:flex; align-items:center; gap:8px; cursor:pointer; }
.ckv-nav-logo { width:32px; height:32px; border-radius:50%; background:linear-gradient(135deg,var(--blue),var(--blue-d)); display:flex; align-items:center; justify-content:center; font-size:18px; color:#fff; }
.ckv-nav-title { font-size:17px; font-weight:900; }
.ckv-nav-right { display:flex; align-items:center; gap:10px; }
.ckv-nav-btn { font-size:13px; color:var(--text-l); cursor:pointer; background:none; border:none; }
.ckv-nav-avatar { width:32px; height:32px; border-radius:50%; background:var(--blue); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:16px; color:#fff; }

/* ===== 模块2 Banner ===== */
.ckv-banner { position:relative; margin:14px 16px; border-radius:20px; background:linear-gradient(135deg,#3b82f6,#2563eb 55%,#f97316); overflow:hidden; padding:20px; color:#fff; min-height:150px; }
.ckv-banner .star { position:absolute; color:rgba(255,255,255,.5); font-size:12px; animation:tw 2.5s ease-in-out infinite; }
@keyframes tw { 0%,100%{opacity:.3} 50%{opacity:1} }
.ckv-banner-ip { position:absolute; right:14px; bottom:8px; width:80px; height:80px; animation:wave 2s ease-in-out infinite; }
@keyframes wave { 0%,100%{transform:rotate(-4deg) translateY(0)} 50%{transform:rotate(4deg) translateY(-6px)} }
.ckv-banner-title { font-size:19px; font-weight:900; text-shadow:0 2px 4px rgba(0,0,0,.2); }
.ckv-banner-sub { font-size:12px; opacity:.9; margin-top:6px; }
.ckv-banner-status { display:inline-block; margin-top:12px; padding:6px 14px; border-radius:20px; font-size:13px; font-weight:800; }
.ckv-banner-status.uncheck { background:var(--orange); color:#fff; }
.ckv-banner-status.done { background:rgba(16,185,129,.9); color:#fff; }

/* ===== 模块3 我的数据 ===== */
.ckv-me { margin:0 16px; background:#fff; border-radius:18px; padding:18px; box-shadow:0 4px 16px rgba(0,0,0,.05); }
.ckv-me-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; text-align:center; }
.ckv-me-stat { padding:10px 4px; }
.ckv-me-stat .ico { font-size:22px; }
.ckv-me-stat .num { font-size:18px; font-weight:900; color:var(--blue-d); margin-top:4px; }
.ckv-me-stat .lbl { font-size:11px; color:var(--text-l); margin-top:2px; }
.ckv-me-progress { margin-top:14px; background:var(--bg); border-radius:12px; padding:12px; }
.ckv-me-prog-label { font-size:12px; color:var(--text); display:flex; justify-content:space-between; }
.ckv-me-prog-bar { height:8px; background:#e2e8f0; border-radius:4px; margin-top:8px; overflow:hidden; }
.ckv-me-prog-fill { height:100%; background:linear-gradient(90deg,var(--orange),var(--orange-r)); border-radius:4px; transition:width .4s; }
.ckv-me-milestone { margin-top:12px; background:#fff7ed; border:1px solid #fed7aa; border-radius:12px; padding:12px; }
.ckv-me-milestone-title { font-size:12px; font-weight:800; color:var(--orange); }
.ckv-me-milestone-desc { font-size:11px; color:#b45309; margin-top:4px; }
.ckv-me-milestone-bar { height:6px; background:#fed7aa; border-radius:3px; margin-top:8px; overflow:hidden; }
.ckv-me-milestone-fill { height:100%; background:var(--orange); border-radius:3px; }
.ckv-me-btn { display:block; width:100%; margin-top:14px; padding:14px; border:none; border-radius:14px; font-size:15px; font-weight:900; color:#fff; background:linear-gradient(135deg,var(--orange),var(--orange-r)); box-shadow:0 6px 16px rgba(249,115,22,.35); cursor:pointer; }

/* ===== 模块4 今日任务 ===== */
.ckv-sec { margin:20px 16px 0; }
.ckv-sec-title { font-size:16px; font-weight:900; margin-bottom:12px; display:flex; align-items:center; gap:6px; }
.ckv-task { display:flex; align-items:center; gap:12px; background:#fff; border-radius:14px; padding:14px; margin-bottom:10px; box-shadow:0 2px 8px rgba(0,0,0,.04); }
.ckv-task .ico { width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:22px; flex-shrink:0; }
.ckv-task-ico-blue { background:#eff6ff; } .ckv-task-ico-orange { background:#fff7ed; } .ckv-task-ico-green { background:#ecfdf5; } .ckv-task-ico-cyan { background:#ecfeff; }
.ckv-task-info { flex:1; min-width:0; }
.ckv-task-name { font-size:14px; font-weight:800; }
.ckv-task-desc { font-size:12px; color:#64748b; margin-top:4px; line-height:1.5; }
.ckv-task-meta { display:flex; align-items:center; gap:10px; font-size:11px; color:var(--text-l); margin-top:5px; }
.ckv-task-deadline { color:var(--text-l); }
.ckv-task-points { font-size:12px; color:var(--gold); font-weight:800; }
.ckv-task-btn { padding:8px 16px; border-radius:20px; font-size:12px; font-weight:800; flex-shrink:0; border:none; cursor:pointer; }
.ckv-task-btn.go { background:var(--orange); color:#fff; }
.ckv-task-btn.pending { background:#e2e8f0; color:var(--text-l); }
.ckv-task-btn.done { background:var(--green); color:#fff; }
/* Phase6 订阅通知开放标签：块级不破任务卡 flex 布局，内部模板内容正常渲染 */
wx-open-subscribe.ckv-sub-wrap { display:block; flex-shrink:0; }
wx-open-subscribe.ckv-sub-wrap .ckv-task-btn, wx-open-subscribe.ckv-sub-wrap .ckv-work-btn { width:100%; }
.ckv-empty { text-align:center; padding:30px 20px; background:#fff; border-radius:14px; color:var(--text-l); font-size:14px; }
.ckv-empty .ip { font-size:40px; margin-bottom:8px; }

/* ===== 模块5 打卡日历 ===== */
.ckv-cal { background:#fff; border-radius:18px; padding:16px; box-shadow:0 2px 8px rgba(0,0,0,.04); }
.ckv-cal-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.ckv-cal-month { font-size:15px; font-weight:900; }
.ckv-cal-streak { font-size:13px; color:var(--orange); font-weight:900; }
.ckv-cal-att { display:flex; align-items:center; gap:16px; margin-bottom:14px; padding:12px; background:var(--bg); border-radius:14px; }
.ckv-cal-att svg { flex-shrink:0; }
.ckv-cal-att-ring { transition:stroke-dashoffset .8s ease; }
.ckv-cal-att-num { position:relative; }
.ckv-cal-att-num b { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:15px; color:var(--blue-d); }
.ckv-cal-att-num span { display:none; }
.ckv-cal-att-info { flex:1; display:flex; flex-direction:column; gap:6px; font-size:12px; color:var(--text-l); }
.ckv-cal-att-info b { color:var(--blue-d); font-weight:800; }
.ckv-cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.ckv-cal-dow { text-align:center; font-size:11px; color:var(--text-l); padding:4px; }
.ckv-cal-day { aspect-ratio:1; border-radius:10px; display:flex; flex-direction:column; align-items:center; justify-content:center; font-size:13px; font-weight:700; }
.ckv-cal-day.blank { visibility:hidden; }
.ckv-cal-day.checked { background:var(--green); color:#fff; box-shadow:0 2px 6px rgba(16,185,129,.4); }
.ckv-cal-day.today { outline:2px solid var(--blue); }
.ckv-cal-day.future { color:#d1d5db; }
.ckv-cal-day .fire { font-size:9px; animation:fireWiggle 1s ease-in-out infinite; }
@keyframes fireWiggle { 0%,100%{transform:scale(1)} 50%{transform:scale(1.25)} }

/* ===== 模块6 排行榜 ===== */
.ckv-rank-tabs { display:flex; gap:8px; margin-bottom:12px; }
.ckv-rank-tab { flex:1; padding:10px; border-radius:12px; background:#fff; border:1px solid var(--border); font-size:13px; font-weight:800; color:var(--text-l); cursor:pointer; }
.ckv-rank-tab.active { background:var(--blue); color:#fff; border-color:transparent; }
.ckv-rank-item { display:flex; align-items:center; gap:10px; background:#fff; border-radius:12px; padding:12px; margin-bottom:8px; }
.ckv-rank-item.top1 { background:linear-gradient(135deg,#fef3c7,#fde68a); }
.ckv-rank-item.top2 { background:linear-gradient(135deg,#f1f5f9,#e2e8f0); }
.ckv-rank-item.top3 { background:linear-gradient(135deg,#fff7ed,#fed7aa); }
.ckv-rank-item.mine { border:2px solid var(--blue); }
.ckv-rank-num { width:28px; font-weight:900; text-align:center; font-size:14px; }
.ckv-rank-num.top1 { font-size:20px; }
.ckv-rank-av { width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:18px; }
.ckv-rank-name { flex:1; min-width:0; }
.ckv-rank-name .nm { font-size:14px; font-weight:800; }
.ckv-rank-ai { display:inline-block; margin-left:6px; padding:1px 6px; border-radius:8px; background:#e0f2fe; color:#0369a1; font-size:10px; font-weight:800; vertical-align:middle; }
.ckv-rank-ai-tip { margin-top:10px; padding:10px 12px; border-radius:10px; background:#eff6ff; color:#475569; font-size:11px; line-height:1.6; }
.ckv-rank-name .meta { font-size:11px; color:var(--text-l); }
.ckv-rank-score { font-weight:900; color:var(--blue-d); font-size:15px; }
.ckv-rank-fire { font-size:12px; color:var(--orange); }
.ckv-rank-mine-tip { text-align:center; margin-top:10px; font-size:13px; color:var(--orange); font-weight:800; }
.ckv-rank-more { display:block; width:100%; margin-top:10px; padding:12px; border:1px solid var(--blue); border-radius:12px; background:none; color:var(--blue); font-size:13px; font-weight:800; cursor:pointer; }

/* ===== 模块7 优秀作品墙 ===== */
/* 卡通鼓励语 */
.ckv-cheer { position:fixed; left:50%; top:38%; transform:translateX(-50%); z-index:1300; background:linear-gradient(135deg,var(--blue),var(--blue-d)); color:#fff; padding:12px 22px; border-radius:30px; font-size:15px; font-weight:900; box-shadow:0 8px 24px rgba(59,130,246,.4); animation:cheerIn 1.8s ease forwards; pointer-events:none; }
@keyframes cheerIn { 0%{opacity:0; transform:translateX(-50%) scale(.6)} 20%{opacity:1; transform:translateX(-50%) scale(1.08)} 30%{transform:translateX(-50%) scale(1)} 75%{opacity:1} 100%{opacity:0; transform:translateX(-50%) translateY(-20px)} }
.ckv-works { display:flex; gap:10px; overflow-x:auto; padding-bottom:8px; }
.ckv-work { flex-shrink:0; width:160px; background:#fff; border-radius:14px; overflow:hidden; box-shadow:0 2px 8px rgba(0,0,0,.05); }
.ckv-work-thumb { height:110px; background:linear-gradient(135deg,var(--blue),var(--blue-d)); display:flex; align-items:center; justify-content:center; font-size:30px; color:#fff; }
.ckv-work-info { padding:10px; }
.ckv-work-name { font-size:13px; font-weight:800; }
.ckv-work-meta { font-size:11px; color:var(--text-l); margin-top:3px; }
.ckv-work-foot { display:flex; align-items:center; justify-content:space-between; margin-top:6px; }
.ckv-work-points { font-size:11px; color:var(--gold); font-weight:800; }
.ckv-like { display:inline-flex; align-items:center; gap:3px; padding:4px 10px; border:none; border-radius:14px; background:#f1f5f9; color:#64748b; font-size:12px; font-weight:800; cursor:pointer; transition:all .2s; }
.ckv-like.liked { background:#fee2e2; color:#ef4444; }
.ckv-work-btn { display:block; width:100%; margin-top:10px; padding:12px; border:none; border-radius:12px; font-size:13px; font-weight:900; color:#fff; background:linear-gradient(135deg,var(--orange),var(--orange-r)); cursor:pointer; }

/* ===== 模块8 快捷入口 + 商城 ===== */
.ckv-shop-tip { background:linear-gradient(135deg,#eff6ff,#fff7ed); border:1px solid #bfdbfe; border-radius:14px; padding:12px 14px; font-size:12px; color:#475569; line-height:1.6; margin-bottom:10px; }
.ckv-shop-tip b { color:var(--orange); }
.ckv-quick { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.ckv-quick-item { text-align:center; background:#fff; border-radius:14px; padding:14px 4px; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,.04); }
.ckv-quick-item .ico { font-size:24px; }
.ckv-quick-item .nm { font-size:12px; font-weight:800; margin-top:6px; }
.ckv-shop { background:#fff; border-radius:18px; padding:16px; }
.ckv-shop-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.ckv-shop-my { font-size:13px; color:var(--blue-d); font-weight:900; }
.ckv-shop-tabs { display:flex; gap:6px; margin-bottom:12px; overflow-x:auto; }
.ckv-shop-tab { padding:6px 12px; border-radius:16px; background:var(--bg); font-size:12px; font-weight:700; color:var(--text-l); cursor:pointer; white-space:nowrap; }
.ckv-shop-tab.active { background:var(--blue); color:#fff; }
.ckv-shop-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.ckv-shop-card { border:1px solid var(--border); border-radius:12px; padding:12px; text-align:center; }
.ckv-shop-card .ico { width:52px; height:52px; margin:0 auto; border-radius:12px; background:var(--bg); display:flex; align-items:center; justify-content:center; font-size:26px; }
.ckv-shop-card .nm { font-size:13px; font-weight:800; margin-top:6px; }
.ckv-shop-card .price { font-size:12px; color:var(--gold); font-weight:900; margin-top:4px; }
.ckv-shop-btn { display:block; width:100%; margin-top:8px; padding:8px; border:none; border-radius:16px; font-size:12px; font-weight:800; cursor:pointer; }
.ckv-shop-btn.ok { background:var(--blue); color:#fff; }
.ckv-shop-btn.no { background:var(--border); color:var(--text-l); }

/* ===== 打卡规则弹窗 ===== */
.ckv-modal { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:10000; display:none; align-items:center; justify-content:center; }
.ckv-modal.show { display:flex; }
.ckv-modal-box { background:#fff; border-radius:18px; padding:20px; width:88%; max-width:340px; max-height:80vh; overflow-y:auto; }
.ckv-modal-title { font-size:16px; font-weight:900; margin-bottom:12px; text-align:center; }
.ckv-rule-row { display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid var(--border); font-size:13px; }
.ckv-rule-row .points { color:var(--orange); font-weight:900; }
.ckv-modal-close { display:block; width:100%; margin-top:16px; padding:12px; border:none; border-radius:12px; font-size:14px; font-weight:800; color:#fff; background:var(--blue); cursor:pointer; }

/* ===== 打卡提交弹窗 ===== */
.ckv-submit { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:10001; display:none; align-items:center; justify-content:center; }
.ckv-submit.show { display:flex; }
.ckv-submit-box { background:#fff; border-radius:18px; padding:20px; width:88%; max-width:340px; max-height:85vh; overflow-y:auto; }
.ckv-submit-title { font-size:16px; font-weight:900; margin-bottom:8px; }
.ckv-submit-desc { font-size:13px; color:var(--text-l); margin-bottom:14px; line-height:1.6; }
.ckv-upload { position:relative; border:2px dashed var(--blue); border-radius:12px; padding:20px; text-align:center; color:var(--text-l); font-size:13px; cursor:pointer; margin-bottom:12px; overflow:hidden; }
/* 修复：上传区整块可点。input 以透明层铺满整块（iOS/Android 微信内原生点击可靠拉起选择器）；
   原 `display:none` + 仅靠 JS 转发 .click() 在部分安卓微信 webview 会失效 → 改为占满 + opacity:0。 */
.ckv-upload input { position:absolute; left:0; top:0; width:100%; height:100%; opacity:0; cursor:pointer; z-index:1; }
.ckv-submit-text { width:100%; min-height:60px; border:1px solid var(--border); border-radius:10px; padding:10px; font-size:13px; resize:vertical; margin-bottom:12px; }
.ckv-submit-btn { display:block; width:100%; padding:14px; border:none; border-radius:12px; font-size:15px; font-weight:900; color:#fff; background:linear-gradient(135deg,var(--orange),var(--orange-r)); cursor:pointer; }
.ckv-toast { position:fixed; top:60px; left:50%; transform:translateX(-50%); background:rgba(30,41,59,.95); color:#fff; padding:10px 20px; border-radius:20px; font-size:13px; font-weight:700; opacity:0; pointer-events:none; transition:opacity .3s; z-index:10500; }
.ckv-toast.show { opacity:1; }

/* ===== 奖励动画 ===== */
.ckv-reward-overlay { position:fixed; inset:0; z-index:200; pointer-events:none; }
.ckv-reward-float { position:fixed; left:50%; top:40%; transform:translate(-50%,-50%); font-size:28px; font-weight:900; color:var(--orange); text-shadow:0 2px 8px rgba(249,115,22,.4); opacity:0; z-index:210; animation:rewardUp 1.2s ease-out forwards; }
@keyframes rewardUp { 0%{opacity:0;transform:translate(-50%,0) scale(.6)} 20%{opacity:1;transform:translate(-50%,-20px) scale(1.1)} 80%{opacity:1;transform:translate(-50%,-80px) scale(1)} 100%{opacity:0;transform:translate(-50%,-120px) scale(.9)} }
.ckv-reward-coin { position:fixed; font-size:20px; z-index:215; pointer-events:none; animation:coinFly .9s ease-in forwards; }
@keyframes coinFly { 0%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:translateY(-140px) scale(.6)} }
.ckv-reward-burst { position:fixed; left:50%; top:40%; transform:translate(-50%,-50%); z-index:205; pointer-events:none; }
.ckv-burst-particle { position:absolute; width:8px; height:8px; border-radius:50%; animation:burstP 0.8s ease-out forwards; }
@keyframes burstP { 0%{opacity:1;transform:translate(0,0) scale(1)} 100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.3)} }
.ckv-milestone-pop { position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:220; display:none; align-items:center; justify-content:center; }
.ckv-milestone-pop.show { display:flex; }
.ckv-milestone-pop-box { background:#fff; border-radius:20px; padding:30px 24px; text-align:center; animation:popIn .4s ease-out; }
@keyframes popIn { 0%{transform:scale(.5);opacity:0} 100%{transform:scale(1);opacity:1} }
.ckv-milestone-pop .ico { font-size:50px; }
.ckv-milestone-pop .title { font-size:20px; font-weight:900; color:var(--orange); margin-top:10px; }
.ckv-milestone-pop .desc { font-size:13px; color:var(--text-l); margin-top:8px; }
.ckv-milestone-pop .ok { display:block; width:100%; margin-top:18px; padding:12px; border:none; border-radius:12px; font-size:14px; font-weight:900; color:#fff; background:linear-gradient(135deg,var(--orange),var(--orange-r)); cursor:pointer; }
.ckv-point-bounce { display:inline-block; animation:bounce .6s ease; }
@keyframes bounce { 0%{transform:scale(1)} 30%{transform:scale(1.4)} 100%{transform:scale(1)} }

/* ==================== Phase3 追加：打卡体系页通用 ==================== */
/* 打卡体系页隐藏站点5项底栏与悬浮CTA（由 _checkin-nav 3项底栏替代；本文件仅 /checkin 加载，天然按页隔离） */
.f-bottom-nav { display:none !important; }
.f-float-cta { display:none !important; }
.ckv-app { padding-bottom:96px; } /* 给打卡底栏让位 */

/* ===== 日历补签橙标（仅新增标记，基础结构不动） ===== */
.ckv-cal-day.signed { background:linear-gradient(135deg,#fb923c,var(--orange)); color:#fff; box-shadow:0 2px 6px rgba(249,115,22,.4); }
.ckv-cal-day.signed .fire { color:#fff; }

/* ===== 打卡提交：9图预览宫格 / 视频预览 / 上传进度 ===== */
.ckv-upload-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:12px; }
.ckv-upload-grid:empty { display:none; }
.ckv-up-item { position:relative; aspect-ratio:1; border-radius:10px; overflow:hidden; background:var(--bg); }
.ckv-up-item img { width:100%; height:100%; object-fit:cover; display:block; }
.ckv-up-del { position:absolute; top:4px; right:4px; width:20px; height:20px; border-radius:50%; background:rgba(0,0,0,.55); color:#fff; border:none; font-size:11px; cursor:pointer; line-height:1; padding:0; }
.ckv-video-preview { position:relative; margin-bottom:12px; }
.ckv-video-preview video { width:100%; border-radius:10px; max-height:180px; background:#000; display:block; }
.ckv-video-preview .ckv-up-del { top:6px; right:6px; width:24px; height:24px; }
.ckv-upload-progress { margin-bottom:12px; }
.ckv-upload-progress .bar { height:8px; background:#e2e8f0; border-radius:4px; overflow:hidden; }
.ckv-upload-progress .fill { height:100%; width:0%; background:linear-gradient(90deg,var(--blue),var(--blue-d)); transition:width .2s; }
.ckv-upload-progress .txt { font-size:11px; color:var(--text-l); margin-top:6px; text-align:center; }

/* ===== AI评分结果弹层 ===== */
.ckv-result-emoji { font-size:46px; margin-bottom:4px; }
.ckv-result-stars { font-size:30px; color:var(--gold); letter-spacing:4px; margin:6px 0 10px; }
.ckv-result-comment { font-size:13px; color:var(--text); background:var(--bg); border-radius:12px; padding:12px; line-height:1.7; text-align:left; margin-bottom:12px; }
.ckv-result-points { text-align:left; margin-bottom:12px; }
.ckv-result-pt-row { display:flex; justify-content:space-between; gap:10px; padding:8px 2px; border-bottom:1px dashed var(--border); font-size:13px; }
.ckv-result-pt-row:last-child { border-bottom:none; }
.ckv-result-pt-row b { color:var(--orange); flex-shrink:0; }
.ckv-result-share-tip { font-size:12px; color:var(--text-l); margin-bottom:12px; }
.ckv-result-share-tip b { color:var(--orange); }

/* ===== 新手引导4步浮层（遮罩 + 高亮挖孔 + 气泡） ===== */
.ckv-guide { position:fixed; inset:0; z-index:300; }
.ckv-guide-mask { position:absolute; inset:0; background:rgba(0,0,0,.65); }
.ckv-guide-highlight { position:relative; z-index:301; background:#fff; border-radius:12px; padding:8px; margin:-8px; box-shadow:0 0 0 3px #fff, 0 0 0 6px var(--orange); }
.ckv-guide-bubble { position:absolute; left:16px; right:16px; max-width:340px; margin:0 auto; background:#fff; border-radius:14px; padding:14px 16px; z-index:302; box-shadow:0 8px 30px rgba(0,0,0,.3); transition:top .3s; }
.ckv-guide-step { font-size:11px; color:var(--blue); font-weight:900; margin-bottom:6px; }
.ckv-guide-text { font-size:14px; line-height:1.7; font-weight:700; }
.ckv-guide-btns { display:flex; gap:10px; margin-top:12px; }
.ckv-guide-skip { flex:1; padding:10px; border:1px solid var(--border); background:#fff; border-radius:10px; color:var(--text-l); font-weight:800; cursor:pointer; }
.ckv-guide-next { flex:2; padding:10px; border:none; background:var(--blue); color:#fff; border-radius:10px; font-weight:900; cursor:pointer; }

/* ===== 与 checkin-h5.css 共享的最小集（本页会用到的 CKH5 动态弹层组件） ===== */
.ckh-modal { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:400; display:flex; align-items:center; justify-content:center; padding:20px; }
.ckh-modal-box { background:#fff; border-radius:18px; padding:20px; width:100%; max-width:340px; max-height:80vh; overflow-y:auto; }
.ckh-modal-title { font-size:16px; font-weight:900; margin-bottom:8px; text-align:center; }
.ckh-modal-desc { font-size:13px; color:var(--text-l); margin-bottom:14px; line-height:1.6; text-align:center; }
.ckh-input { width:100%; border:1px solid var(--border); border-radius:10px; padding:12px; font-size:14px; margin-bottom:10px; }
.ckh-btn-primary { display:block; width:100%; padding:13px; border:none; border-radius:12px; font-size:14px; font-weight:900; color:#fff; background:linear-gradient(135deg,var(--blue),var(--blue-d)); cursor:pointer; }
.ckh-child-item { display:flex; align-items:center; gap:12px; border:2px solid var(--border); border-radius:12px; padding:12px; margin-bottom:10px; cursor:pointer; }
.ckh-child-item.active { border-color:var(--blue); background:#eff6ff; }
.ckh-child-av { width:40px; height:40px; border-radius:50%; background:var(--blue); color:#fff; display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:900; }
.ckh-child-info b { font-size:14px; display:block; }
.ckh-child-info span { font-size:12px; color:var(--text-l); }
.ckh-badge-pop { text-align:center; padding:10px 0; }
.ckh-badge-pop-ico { font-size:52px; }
.ckh-badge-pop-ico.gray { filter:grayscale(1); opacity:.45; }
.ckh-badge-pop-title { font-size:14px; font-weight:900; color:var(--gold); margin-top:6px; }
.ckh-badge-pop-name { font-size:18px; font-weight:900; margin:8px 0 14px; }

/* ==================== 20260909 品牌化美化追加（模块A · 集中追加便于回滚） ==================== */
/* A3 我的数据卡：16px 圆角 + 品牌蓝阴影 + 蓝豆仔 IP 角标点缀 + 数字 20px / 标签 12px（覆盖上方 .ckv-me 基础卡） */
.ckv-me { position:relative; border-radius:16px; box-shadow:0 4px 20px rgba(37,99,235,.08); }
.ckv-me-ip { position:absolute; top:-16px; right:-4px; width:46px; height:46px; object-fit:contain; transform:rotate(8deg); filter:drop-shadow(0 3px 8px rgba(37,99,235,.28)); pointer-events:none; z-index:2; }
.ckv-me-stat .num { font-size:20px; color:#2563EB; }
.ckv-me-stat .lbl { font-size:12px; color:#94A3B8; }
/* A2 「今日打卡任务」大按钮：橙渐变 + 白16px加粗 + 56px高圆角20 + 右侧箭头 + :active 缩放反馈 */
.ckv-me-btn { position:relative; display:flex; align-items:center; justify-content:center; min-height:56px; border-radius:20px; font-size:16px; background:linear-gradient(135deg,#FB923C,#F97316); box-shadow:0 6px 20px rgba(249,115,22,.35); transition:transform .12s ease, box-shadow .12s ease; }
.ckv-me-btn::after { content:'›'; position:absolute; right:18px; top:50%; transform:translateY(-52%); font-size:22px; line-height:1; opacity:.92; }
.ckv-me-btn:active { transform:scale(.97); box-shadow:0 3px 8px rgba(249,115,22,.22); }
/* A4 打卡日历：格子 8px 圆角；已打卡=浅绿底+绿点；补签=浅橙底+橙点；今日=品牌蓝描边（点标 DOM 由 renderCalendar 输出 .dot，替代原 .fire） */
.ckv-cal-day { border-radius:8px; }
.ckv-cal-day .dot { display:block; width:5px; height:5px; border-radius:50%; margin-top:2px; background:#10B981; }
.ckv-cal-day.checked { background:#ECFDF5; color:#047857; box-shadow:none; }
.ckv-cal-day.checked .dot { background:#10B981; }
.ckv-cal-day.signed { background:linear-gradient(135deg,#FFF7ED,#FFEDD5); color:#C2410C; box-shadow:none; }
.ckv-cal-day.signed .dot { background:#F97316; }
.ckv-cal-day.today { outline:2px solid #2563EB; outline-offset:1px; }

/* ==================== 20260909 精致版追加（模块A8 · 集中追加便于回滚） ==================== */
/* A8-1 品牌渐变 Header：#1E40AF→#7C3AED 蓝紫渐变 + 白字 + 48px IP 圆头像 + 铃铛红点 + 底部弧形波浪装饰 */
.ckv-nav { background:linear-gradient(135deg,#1E40AF,#7C3AED); box-shadow:0 4px 14px rgba(30,64,175,.28); }
.ckv-nav::after { content:''; position:absolute; left:-8%; right:-8%; bottom:-8px; height:13px; background:var(--bg); border-radius:50% 50% 0 0 / 100% 100% 0 0; pointer-events:none; }
.ckv-nav-logo { width:48px; height:48px; background:#fff; overflow:hidden; box-shadow:0 2px 8px rgba(0,0,0,.18); }
.ckv-nav-logo img { width:100%; height:100%; object-fit:contain; display:block; }
.ckv-nav-title { color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.18); }
.ckv-nav-btn { color:rgba(255,255,255,.92); font-weight:700; }
.ckv-nav-bell { position:relative; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.16); display:flex; align-items:center; justify-content:center; font-size:17px; cursor:pointer; }
.ckv-nav-bell::after { content:''; position:absolute; top:5px; right:6px; width:8px; height:8px; border-radius:50%; background:#F87171; border:1.5px solid #fff; }
/* A8-2 数据看板对齐精致版：数字 24px 加粗 + 图标渐变底小圆（🏆蓝/🔥橙/⭐紫） */
.ckv-me-stat .num { font-size:24px; }
.ckv-me-stat .ico { width:34px; height:34px; margin:0 auto; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:17px; }
.ckv-me-stat .ico.i-blue { background:linear-gradient(135deg,#DBEAFE,#BFDBFE); }
.ckv-me-stat .ico.i-orange { background:linear-gradient(135deg,#FFEDD5,#FED7AA); }
.ckv-me-stat .ico.i-purple { background:linear-gradient(135deg,#EDE9FE,#DDD6FE); }
/* A8-3 页面角落半透明蓝豆仔装饰（不挡操作） */
.ck-corner-ip { position:fixed; right:4px; bottom:110px; width:52px; height:52px; object-fit:contain; opacity:.14; pointer-events:none; z-index:1; }
