/* V4 正式版补充样式：只给「接真数据后才有」的部件（登录、线上篇末任务、三条路章节页、系统消息等）。
   体验版的设计样式在 style.css / v3.css / lucky.css / v4.css，这里不改它们。 */
.boot-loading, .live-loading { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; min-height:50vh; color:var(--muted); font-size:13px; }
.boot-loading .brand-mark { width:44px; height:44px; font-size:22px; animation:v4pulse 1.4s ease-in-out infinite; }
@keyframes v4pulse { 50% { opacity:.45; } }
@media (prefers-reduced-motion: reduce) { .boot-loading .brand-mark { animation:none; } }

/* 登录 */
.login-sheet { max-height:92vh; overflow:auto; }
.login-sheet .lg-row { display:flex; gap:8px; align-items:center; margin-top:6px; }
.login-sheet .lg-row input { margin-top:0; flex:1; }
.login-sheet .lg-row .mini-btn { padding:10px 12px; font-size:12px; }
.login-sheet #lg-status { display:block; min-height:16px; margin-top:6px; color:var(--wine); }
.login-sheet a { color:var(--wine); }

/* 线上篇末任务 */
.live-task { display:grid; gap:18px; margin-top:16px; }
.live-task .tf[hidden] { display:none; }
.tf-label { display:flex; align-items:baseline; gap:8px; font-size:14px; line-height:1.5; }
.tf-label b { font-weight:700; }
.tf-label em { flex:none; font-style:normal; font-size:10px; padding:1px 6px; border-radius:999px; }
.tf-label .req { color:var(--wine); background:#fbf3f4; }
.tf-label .opt { color:var(--muted); background:var(--paper-2, #f1ece4); }
.tf-desc, .tf-lim { display:block; margin:4px 0 0; color:var(--muted); font-size:12px; }
.tf .choice-grid { margin-top:8px; }
.tf textarea { width:100%; min-height:72px; margin-top:8px; padding:11px; border:1px solid var(--line); border-radius:11px; font:inherit; font-size:15px; background:#fff; }
.tf.need textarea { border-color:var(--wine); }
.tf-imgs { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.tf-img { position:relative; width:76px; height:96px; border-radius:10px; overflow:hidden; background:#eee; }
.tf-img img { width:100%; height:100%; object-fit:cover; }
.tf-img button { position:absolute; right:3px; top:3px; width:22px; height:22px; border:0; border-radius:50%; background:rgba(0,0,0,.55); color:#fff; font-size:14px; line-height:22px; }
.tf-add { margin-top:8px; width:100%; }
.task-reply { margin:14px 0 0; padding:12px 14px; border-radius:12px; background:#fbf3f4; text-align:left; }
.task-reply b { display:block; color:var(--wine); font-size:12px; margin-bottom:4px; }
.task-reply p { margin:0; font-size:14px; line-height:1.7; }
.task-peers { margin:10px 0 0; color:var(--muted); font-size:12px; line-height:1.7; text-align:left; }
.task-done { display:flex; align-items:center; gap:6px; margin-top:14px; color:#2f6a52; font-weight:700; font-size:14px; }
.art-task { margin:22px 0; padding:16px; border:1px solid var(--line); border-radius:16px; background:#fff; }
.art-task .primary.wide { margin-top:16px; }
.page-article .reading img { max-width:100%; height:auto; border-radius:10px; }
.page-article .notice { margin-top:14px; }

/* 三条路：章节页 */
.line-list { display:grid; gap:10px; margin:16px 0; }
.line-lv, .line-chest { display:flex; align-items:center; gap:12px; width:100%; padding:13px 14px; border:1px solid var(--line); border-radius:14px; background:#fff; text-align:left; color:inherit; }
.line-lv > span:nth-child(2), .line-chest > span:nth-child(2) { flex:1; min-width:0; }
.line-lv b, .line-chest b { display:block; font-size:14px; line-height:1.45; }
.line-lv small, .line-chest small { display:block; margin-top:2px; color:var(--muted); font-size:12px; }
.lv-ic { flex:none; display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:var(--paper-2, #f1ece4); color:var(--ink); }
.line-lv.done .lv-ic { background:#eef6f1; color:#2f6a52; }
.line-lv.current { border-color:var(--wine); }
.line-lv.current .lv-ic { background:var(--wine); color:#fff; }
.line-lv.locked, .line-lv.soon { opacity:.55; }
.line-chest.ready { border-color:var(--wine); background:#fbf3f4; }
.line-chest.opened { opacity:.7; }

/* 小帅认证：一句外部反馈 */
.cert-fb { margin:18px 0 6px; padding:14px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.cert-fb h3 { margin:0 0 4px; font-size:15px; }

/* 改变 */
.post-text { white-space:pre-wrap; }
.post-replies { margin:8px 0 0; padding:8px 10px; border-radius:10px; background:var(--paper-2, #f1ece4); font-size:12px; line-height:1.7; }
.post-replies p { margin:0; }
.post-likes { display:inline-flex; align-items:center; gap:4px; color:var(--muted); font-size:12px; }
.post-actions button.on { color:var(--wine); }
.avatar-mini img, .cmt-av img, .rank-avatar img,
.avatar img:not(.face-badge):not(.corner-badge):not(.captain-corner),
.my-avatar img:not(.face-badge):not(.corner-badge):not(.captain-corner) { width:100%; height:100%; object-fit:cover; border-radius:50%; }

/* 系统消息 */
.notices .menu-row.unread strong { color:var(--ink); }
.notices .menu-row.read { opacity:.65; }
.notices .menu-row strong { white-space:normal; line-height:1.5; }

/* 链接做成按钮的样子 */
a.button-like { display:flex; align-items:center; justify-content:center; text-decoration:none; text-align:center; }
a.row-card, a.menu-row { color:inherit; text-decoration:none; }

/* ===================== v4fix2（型爷 2026-10-16 反馈）===================== */
/* 头像：顶栏 / 认证 / 列表都显示真头像 */
.top-stats .avatar { overflow:hidden; padding:0; display:grid; place-items:center; }
.top-stats .avatar img:not(.face-badge):not(.corner-badge):not(.captain-corner), .cert-face img, .w-av img { width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }
.w-av { overflow:hidden; }
.avatar-mini { overflow:hidden; }

/* 路径：连线层不挡点击；完成的区段整条都能点 */
.map-lines { pointer-events:none; }
.region { z-index:1; }
button.region-band { width:100%; border:0; cursor:pointer; text-align:left; font:inherit; }
.region-band .band-cta { pointer-events:none; padding:6px 12px; font-size:12px; }
.region:not(.collapsed) button.region-band { border-radius:0; }

/* 小帅认证：点亮后是自己的头像，外面一圈金色星尘在转；底色保持黑色 */
.cert-art-v4.approved { background:radial-gradient(circle at 50% 45%,#3a3029,#1a1614 70%); }
.cert-face { display:grid!important; place-items:center; width:78%; height:78%; border-radius:50%; overflow:hidden; background:#211D1A; color:#F3DFA8; position:relative; z-index:1; font-size:28px; font-family:"Songti SC","Noto Serif SC",serif; }
.cert-art-v4.locked .cert-face { filter:grayscale(.6) brightness(.8); }

/* 认证后：三条线在路径页直接展开 */
.path-lines { display:grid; gap:14px; margin:18px 0 0; }
.pl-line { padding:12px; border-radius:16px; background:var(--sunken, #EFEBE5); border:1px solid var(--line); }
.pl-line.rec { border-color:var(--gold); }
.pl-head { display:flex; align-items:center; gap:12px; padding:4px 4px 10px; }
.pl-no, .ovg-mark { display:grid; place-items:center; flex:none; width:42px; height:42px; border-radius:12px; background:var(--ink, #1F1C1A); color:var(--red-on-dark, #EF4B3F); font-weight:800; font-size:16px; }
.pl-head > span:nth-child(2) { flex:1; min-width:0; }
.pl-head b { display:block; font-size:17px; font-family:"Songti SC","Noto Serif SC",serif; }
.pl-head small { display:block; color:var(--muted); font-size:12px; margin-top:2px; }
.pl-head em { font-style:normal; font-size:13px; color:var(--muted); }
.pl-ch, .ovc { display:flex; align-items:center; gap:12px; width:100%; min-height:62px; margin-top:8px; padding:12px 14px; border:1px solid var(--line); border-radius:14px; background:#fff; color:var(--ink); text-align:left; font:inherit; }
.pl-ch .pl-ch-no { flex:none; font-size:12px; color:var(--muted); width:46px; }
.pl-ch .pl-ch-t { flex:1; min-width:0; font-size:15px; line-height:1.45; font-weight:600; }
.pl-ch small { flex:none; font-size:12px; color:var(--muted); }
.pl-ch.soon { opacity:.6; }
.pl-ch.done { border-color:#cfe3d6; }

/* 终章：深色卡，左右和上面的大框对齐 */
.finale-card { display:flex; align-items:center; gap:14px; width:100%; margin:18px 0 0; padding:18px 16px; border:0; border-radius:18px; background:linear-gradient(120deg,#1F1C1A,#3a2328); color:#F2EDE4; text-align:left; font:inherit; box-shadow:0 10px 24px rgba(31,28,26,.18); }
.finale-card .master-badge { flex:none; width:58px; height:auto; }
.finale-card > span { flex:1; min-width:0; display:grid; gap:3px; }
.finale-card b { font-size:17px; line-height:1.45; font-family:"Songti SC","Noto Serif SC",serif; color:#fff; }
.finale-card small { color:#cfc3b3; font-size:12.5px; line-height:1.6; }
.finale-card .fc-eyebrow { color:#E9D7B4; letter-spacing:1px; }
.finale-card .fc-badge { color:#E9D7B4; }
.finale-card > .ic { color:#E9D7B4; }

/* 攻略全貌：1.0 的节奏（深色编号块 01–05），字大、行高、整行可点 */
.ov-hero.slim h1 { font-size:26px; }
.ov-hero.slim p { font-size:13.5px; }
.ovg { margin:22px 0 0; padding:12px; border-radius:16px; background:var(--sunken, #EFEBE5); border:1px solid var(--line); scroll-margin-top:12px; }
.ovg-head { display:flex; align-items:center; gap:12px; padding:4px 4px 6px; }
.ovg-t { flex:1; min-width:0; }
.ovg-t small { display:block; font-size:12px; color:var(--muted); }
.ovg-t b { display:block; font-size:19px; font-family:"Songti SC","Noto Serif SC",serif; }
.ovg-count { flex:none; font-size:12.5px; color:var(--ink); }
.ovc .ovc-no { flex:none; display:grid; place-items:center; width:40px; height:40px; border-radius:10px; background:var(--sunken, #EFEBE5); font-weight:800; font-size:15px; font-variant-numeric:tabular-nums; }
.ovc.open .ovc-no { background:var(--wine); color:#fff; }
.ovc.done .ovc-no { background:#2f6a52; color:#fff; }
.ovc .ovc-t { flex:1; min-width:0; }
.ovc .ovc-t b { display:block; font-size:15.5px; line-height:1.45; }
.ovc .ovc-t small { display:block; margin-top:3px; font-size:12.5px; color:var(--muted); }
.ovc.soon { opacity:.7; }
.ovc .ovc-ok { color:#2f6a52; }
.ov-mile { display:flex; align-items:center; gap:12px; width:100%; margin:14px 0 0; padding:14px 16px; border:1px solid var(--gold); border-radius:14px; background:#fff; color:var(--ink); text-align:left; font:inherit; }
.ov-mile > span { flex:1; } .ov-mile b { display:block; font-size:15.5px; } .ov-mile small { display:block; font-size:12.5px; color:var(--muted); margin-top:2px; }
.ov-mile > .ic:first-child { color:var(--wine); width:22px; height:22px; }
.ov-label { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:24px 0 0; padding:12px 16px; border-left:4px solid var(--wine); border-radius:0 12px 12px 0; background:var(--ink, #1F1C1A); color:#fff; }
.ov-label b { font-size:16px; } .ov-label span { font-size:12px; color:#E9DFD2; text-align:right; }
.ov-ending { display:block; width:100%; margin:16px 0 0; padding:20px; border:0; border-radius:16px; background:var(--ink, #1F1C1A); color:#fff; text-align:left; font:inherit; }
.ov-ending .eyebrow { color:var(--red-on-dark, #EF4B3F); } .ov-ending b { display:block; margin:8px 0 6px; font-size:18px; line-height:1.5; font-family:"Songti SC","Noto Serif SC",serif; } .ov-ending small { color:#B3A99C; font-size:13px; }
.master-card.dark { margin-top:16px; background:linear-gradient(120deg,#1F1C1A,#3a2328)!important; border:0!important; color:#F2EDE4; }
.master-card.dark b { color:#fff; } .master-card.dark small { color:#cfc3b3; }

/* 三条路：每章页的每一篇，行高大一点不误触 */
.line-list { gap:12px; }
.line-lv, .line-chest { min-height:68px; padding:14px 16px; }
.line-lv b, .line-chest b { font-size:15px; }

/* 排行榜：两个榜 */
.rank-tabs { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:4px; margin-bottom:12px; border-radius:14px; background:var(--sunken, #EFEBE5); }
.rank-tabs button { padding:10px; border:0; border-radius:10px; background:transparent; font:inherit; font-size:15px; font-weight:700; color:var(--muted); }
.rank-tabs button[aria-selected="true"] { background:#fff; color:var(--ink); box-shadow:0 2px 8px rgba(31,28,26,.08); }
.rank-head.slim .eyebrow { font-size:15px; letter-spacing:1px; color:#F2EDE4; }
.rank-head.slim .rank-count { margin-top:8px; }

/* 周榜奖励 / 抽奖奖品：在 V4 里直接填地址 */
.reward-card { margin:0 0 14px; padding:16px; border:1px solid var(--line); border-radius:16px; background:#fff; }
.reward-card h3 { margin:0 0 4px; font-size:16px; }
.claim-form textarea, .claim-form select { width:100%; margin-top:6px; padding:11px; border:1px solid var(--line); border-radius:11px; font:inherit; font-size:15px; background:#fff; }
.claim-form .primary, .claim-form .button { margin-top:12px; }
.dl-claim { display:block; padding:12px 0; border-bottom:1px solid var(--line); }

/* 改变：顶部两个按钮 + 时间轴；广场图片按原比例铺满 */
.ch-top { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:14px 0 4px; }
.ch-top-btn { display:flex; align-items:center; gap:10px; padding:14px; border:1px solid var(--line); border-radius:16px; background:#fff; color:var(--ink); text-align:left; font:inherit; }
.ch-top-btn b { display:block; font-size:15.5px; } .ch-top-btn small { display:block; font-size:12px; color:var(--muted); margin-top:2px; }
.ch-top-btn .ic { flex:none; width:22px; height:22px; color:var(--wine); }
.ch-top-btn.primary { background:var(--wine); border-color:var(--wine); color:#fff; }
.ch-top-btn.primary .ic, .ch-top-btn.primary small { color:#fff; }
.post-card { padding:14px 16px; }
.post-card + .post-card { margin-top:12px; }
.post-card .post-text { font-size:15px; line-height:1.7; margin:10px 0; }
.post-card .post-img { display:block; width:calc(100% + 32px); max-width:none; max-height:none; height:auto; margin:10px -16px; border-radius:0; object-fit:initial; background:none; }
.post-actions { gap:10px; margin-top:12px; flex-wrap:wrap; }
.post-actions button, .post-actions .post-likes { padding:8px 14px; border-radius:999px; font-size:13px; }
.post-actions button.on { color:var(--wine); font-weight:700; }
.post-likers { margin:10px 0 0!important; font-size:12.5px!important; color:var(--muted); line-height:1.6; }
.post-likers .ic { color:var(--wine); }
button.post-replies { display:block; width:100%; margin-top:10px; padding:10px 12px; border:0; border-radius:10px; background:var(--sunken, #EFEBE5); text-align:left; font:inherit; font-size:13px; line-height:1.7; color:var(--ink); }
button.post-replies p { margin:0!important; font-size:13px!important; } button.post-replies small { color:var(--muted); }
.empty-post p { font-size:14px; }
.post-card.detail { margin-bottom:6px; }

/* 1.0 留言区 */
.comment { padding:16px 0; border-bottom:1px solid var(--line); }
.comment-head { display:flex; gap:10px; align-items:center; font-size:15px; }
.comment-head > b { min-width:0; overflow-wrap:anywhere; }
.comment-head time { margin-left:auto; flex-shrink:0; font-size:12px; color:var(--muted); }
.comment > p { font-size:15px; line-height:1.7; margin:10px 0; white-space:pre-wrap; overflow-wrap:anywhere; }
.comment .row { display:flex; gap:16px; align-items:center; }
.text-button { border:0; background:transparent; padding:6px 2px; font:inherit; font-size:13px; color:var(--muted); }
.like-button { display:inline-flex; align-items:center; gap:4px; }
.like-button svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linejoin:round; }
.like-button.liked { color:var(--wine); } .like-button.liked svg { fill:var(--wine); stroke:var(--wine); }
.reply { margin-top:8px; padding:9px 12px; border-radius:8px; background:var(--sunken, #EFEBE5); font-size:14px; line-height:1.7; overflow-wrap:anywhere; }
.reply .c-av { width:24px; height:24px; font-size:11px; margin-right:6px; vertical-align:middle; }
.c-av { display:inline-grid; place-items:center; flex:none; width:34px; height:34px; border-radius:50%; overflow:hidden; background:var(--deep, #1F1C1A); color:#F3DFA8; font-size:14px; }
.c-av img { width:100%; height:100%; object-fit:cover; }
.cmt-author { font-style:normal; font-size:11px; padding:1px 6px; border-radius:999px; background:var(--wine); color:#fff; }
.cmt-entry-box { display:flex; gap:8px; align-items:flex-end; margin:12px 0 6px; padding:8px; border:1px solid var(--line); border-radius:14px; background:var(--sunken, #EFEBE5); flex-wrap:wrap; }
.cmt-entry-box textarea { flex:1; min-width:0; height:44px; min-height:44px; padding:10px 12px; border:0; border-radius:10px; background:#fff; font:inherit; font-size:15px; line-height:1.6; resize:none; transition:height .15s; }
.cmt-entry-box .primary { flex:none; padding:10px 16px; }
.cmt-reply-to { flex-basis:100%; font-size:12.5px; color:var(--muted); }
.cmt-empty { padding:18px 0; color:var(--muted); font-size:14px; text-align:center; }

/* 推文排版：照 1.0——表情包、小图按原尺寸居中，不放大；表格有框 */
.reading { font-size:15.5px; line-height:1.75; }
.reading p { margin:0 0 14px; }
.reading img, .page-article .reading img { display:block; width:auto; max-width:100%; height:auto; margin:14px auto; border-radius:8px; }
.reading p:has(> img) { margin:30px 0; text-align:center; }
.reading > img { margin:30px auto; }
.reading h2 { font-size:20px; margin:30px 0 12px; }
.reading h3 { font-size:18px; margin:30px 0 12px; }
.reading blockquote { margin:22px 0; padding:15px 20px; background:#EFEBE5; border-left:3px solid #2A2522; }
.reading ul, .reading ol { margin:0 0 14px; padding-left:1.3em; }
.reading li { margin:4px 0; }
.reading table { width:100%; border-collapse:collapse; font-size:14.5px; margin:12px 0 16px; display:block; overflow-x:auto; }
.reading th, .reading td { border:1px solid var(--line, #D9D1C5); padding:9px 10px; text-align:left; vertical-align:top; line-height:1.6; }
.reading th { background:#EFEBE5; font-weight:650; white-space:nowrap; }
.reading figure { margin:18px 0; padding:14px; border:1px dashed #D9D1C5; border-radius:10px; background:#EFEBE5; }
.reading figure img { margin:0 auto; }
.reading hr { border:0; border-top:1px solid var(--line); margin:32px 0; }
.reading a[href^="https://v.douyin.com/"] { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:8px 20px; margin:8px 0; border-radius:12px; background:var(--wine); color:#fff; font-size:16px; font-weight:700; text-decoration:none; }

/* 关卡封面精简 */
.cover.slim h1 { margin:6px 0 14px; }
.cover.slim .art-hero, .cover.slim .art-hero .ah-body { min-height:170px; }

/* 我的：继续变帅大按钮；兄弟队长（银色）挂在头像外侧，不压头像 */
.me-continue { display:block; width:100%; margin:14px 0 2px; padding:15px; border-radius:14px; font-size:16px; font-weight:700; }
.my-avatar .captain-corner { position:absolute; right:-22px; bottom:-4px; width:30px; height:auto; z-index:3; filter:grayscale(1) drop-shadow(0 2px 5px #1F1C1A33); }

/* 小帅认证：前后对比卡直接放在页面上 */
.compare-card { margin:16px 0; padding:16px; border-radius:18px; background:linear-gradient(140deg,#1F1C1A,#3a2328); color:#F2EDE4; }
.cc-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.cc-head b { font-size:17px; color:#fff; } .cc-head small { color:#E9D7B4; font-size:12.5px; }
.cc-pics { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:12px 0 4px; }
.cc-pics figure { margin:0; }
.cc-pics img { display:block; width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:12px; background:#2A2522; }
.cc-pics figcaption { margin-top:6px; font-size:12px; color:#cfc3b3; text-align:center; }
.cc-quote { margin:12px 0 0; font-size:15px; line-height:1.7; color:#fff; } .cc-quote small { display:block; color:#cfc3b3; font-size:12px; }
.cc-tip { margin:10px 0 0; font-size:11.5px; color:#9d9184; text-align:center; }
.cert-hero.v4 .cert-art-v4 { margin:0 auto 6px; }

/* 起点照 */
.baseline-view { margin:0; } .baseline-view img { display:block; width:100%; height:auto; border-radius:14px; }
.baseline-view figcaption { margin-top:8px; font-size:12.5px; color:var(--muted); text-align:center; }

/* ===================================================================
   v4fix3（型爷 2026-10-16 第二轮）
   =================================================================== */
/* 三条线：线头整条可点，收起 / 展开 */
.pl-head { width:100%; border:0; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer; }
.pl-line.folded .pl-head { padding-bottom:4px; }
.pl-head .band-cta { pointer-events:none; color:var(--muted); border-color:var(--line); background:#fff; }
/* 点章：原地展开。层级：章名大、展开后的各关弱一点 */
.pl-ch .pl-arrow { flex:none; transform:rotate(90deg); transition:transform .2s; color:var(--muted); }
.pl-ch.on .pl-arrow { transform:rotate(-90deg); }
.pl-ch-box { margin-top:8px; border:1px solid var(--wine); border-radius:14px; background:#fff; overflow:hidden; }
.pl-ch-box > .pl-ch { margin:0; border:0; border-radius:0; min-height:58px; }
.pl-ch.on .pl-ch-t { font-size:17px; font-weight:800; line-height:1.4; }
.pl-ch.on .pl-ch-no { color:var(--wine); font-weight:700; }
.pl-ch-body { padding:2px 12px 12px; border-top:1px solid var(--line); background:#FCFAF7; }
.pl-ch-value { margin:10px 2px 0; font-size:12.5px; line-height:1.65; color:var(--muted); }
.pl-ch-body .line-list { gap:8px; margin:10px 0 0; }
.pl-ch-body .line-lv, .pl-ch-body .line-chest { min-height:52px; padding:10px 12px; border-radius:12px; }
.pl-ch-body .line-lv b, .pl-ch-body .line-chest b { font-size:13.5px; font-weight:500; color:#3a3530; }
.pl-ch-body .line-lv small, .pl-ch-body .line-chest small { font-size:11.5px; }
.pl-ch-body .line-lv.next b { font-weight:700; color:var(--ink); }
.pl-ch-body .lv-ic { transform:scale(.9); }
.pl-ch-body .line-chest { margin-top:8px; }
.pl-ch-body .ch-actions { margin-top:8px; }
/* 底部常驻留言条 + 写评论面板（1.0 的样子） */
.page-foot { flex:none; padding:8px 14px calc(8px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:rgba(247,244,239,.97); }
.rp-bar:empty { display:none; }
.rp-bar .cmt-dock + .primary { margin-top:8px; }
.cmt-dock { display:flex; align-items:center; gap:10px; }
.cmt-dock .cd-write { flex:1; min-width:0; display:flex; align-items:center; gap:6px; height:40px; padding:0 14px; border:1px solid var(--line); border-radius:999px; background:#fff; color:var(--muted); font:inherit; font-size:14px; text-align:left; white-space:nowrap; overflow:hidden; }
.cmt-dock .cd-count { flex:none; display:inline-flex; align-items:center; gap:5px; height:40px; padding:0 6px 0 4px; border:0; background:none; color:var(--ink); font:inherit; font-size:14px; }
.cmt-dock .cd-count b { font-weight:700; font-variant-numeric:tabular-nums; }
.cmt-composer { position:fixed; inset:0; z-index:85; }
.cmt-composer .cmp-backdrop { position:absolute; inset:0; background:rgba(31,28,26,.45); }
.cmt-composer .cmp-sheet { position:absolute; left:0; right:0; bottom:var(--kb, 0px); width:min(100%,520px); margin:0 auto; padding:16px 18px calc(14px + env(safe-area-inset-bottom)); border-radius:20px 20px 0 0; background:var(--paper); box-shadow:0 -10px 30px rgba(31,28,26,.15); }
.cmp-head { display:grid; grid-template-columns:64px 1fr 76px; align-items:center; gap:8px; }   /* 「发表」放在顶部右边：键盘弹起也不会被顶出去 */
.cmp-head b { font-size:16px; text-align:center; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cmp-head .text-button { justify-self:start; color:var(--muted); }
.cmp-head .primary { width:76px; min-height:36px; padding:7px 0; font-size:14px; border-radius:10px; }
.cmt-composer textarea { display:block; width:100%; min-height:110px; max-height:34vh; margin-top:10px; padding:12px; border:1px solid var(--line); border-radius:12px; background:#fff; font:inherit; font-size:16px; line-height:1.6; resize:none; box-sizing:border-box; }
.cmp-foot { display:flex; justify-content:flex-end; margin-top:10px; }
.cmp-foot .primary { flex:none; width:auto; min-width:96px; padding:10px 22px; }
/* 看得太快了 */
.too-fast .tf-ico { display:grid; place-items:center; width:52px; height:52px; margin:4px auto 6px; border-radius:50%; background:#fbf3f4; color:var(--wine); }
.too-fast .m-title { text-align:center; }
.too-fast .sheet-copy { text-align:center; }
/* 懒人套装标题：右边「全部套装」深色圆角底 + 红字，按钮底边和「型爷精选，照着穿轻松帅」那一行底边对齐 */
.section-title.look-head { align-items:flex-end; margin-bottom:12px; }
.look-head .look-sub { margin:4px 0 0; line-height:18px; }
.look-all { flex:none; display:inline-flex; align-items:center; height:30px; padding:0 13px; border:0; border-radius:999px; background:var(--ink, #1F1C1A); color:var(--red-on-dark, #EF4B3F); font:inherit; font-size:12.5px; font-weight:700; letter-spacing:.3px; }
/* 每日抽奖：往期中奖默认 3 条、我的抽奖记录默认 5 条，其余点「展开」 */
.dl-more { display:none !important; }
.show-more > .dl-more { display:flex !important; }
.dl-expand { display:block; width:100%; margin:8px 0 0; padding:8px 0; border:0; background:none; color:var(--wine); font:inherit; font-size:12.5px; font-weight:700; text-align:center; }
/* 型爷编号：一律黑底红字（之前在抽奖列表里被「.dl-row span」盖成了灰色） */
.member-no, .dl-row .member-no, .dl-row span.member-no { color:#EF4B3F; background:#1F1C1A; }
/* 改变的配图：朋友圈大小（型爷 10-16 第二轮） */
.post-card .pm-grid { margin:8px 0 10px; }
.pm-grid img { display:block; cursor:zoom-in; background:#eee8df; }
.pm-grid.one img { width:auto; height:auto; max-width:66%; max-height:240px; border-radius:6px; object-fit:cover; }
.pm-grid:not(.one) { display:grid; grid-template-columns:repeat(3, 1fr); gap:4px; width:min(100%, 276px); }
.pm-grid.two { grid-template-columns:repeat(2, 1fr); width:min(66%, 184px); }
.pm-grid:not(.one) img { width:100%; aspect-ratio:1/1; height:auto; object-fit:cover; border-radius:4px; }
.post-actions .post-admin { margin-left:auto; color:#9a392f; }
/* 发记录：九宫格选图，每张右上角 × 删掉 */
.rec-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:6px; margin:10px 0 6px; }
.rec-cell { position:relative; display:block; aspect-ratio:1/1; border-radius:10px; overflow:hidden; background:#eee8df; }
.rec-cell img { width:100%; height:100%; object-fit:cover; display:block; }
.rec-del { position:absolute; top:4px; right:4px; width:26px; height:26px; display:grid; place-items:center; padding:0; border:0; border-radius:50%; background:rgba(31,28,26,.72); color:#fff; font-size:17px; line-height:1; }
.rec-add { display:grid; place-content:center; justify-items:center; gap:4px; border:1.5px dashed var(--line-accent, #d6c3a0); background:var(--surface, #FCFAF7); color:var(--wine); font:inherit; }
.rec-add .ic { width:26px; height:26px; }
.rec-add small { color:var(--muted); font-size:11.5px; }
.rec-grid.empty { grid-template-columns:1fr; }
.rec-grid.empty .rec-add { aspect-ratio:auto; min-height:150px; }
.rec-rule { display:flex; gap:6px; align-items:flex-start; margin:12px 0 4px; padding:10px 12px; border-radius:10px; background:#fbf3f4; color:#7A2632; font-size:12.5px; line-height:1.6; }
.rec-rule .ic { flex:none; margin-top:3px; }
/* 我的 · 继续变帅：带进度（第几章、第几关） */
.me-continue-card { display:grid; gap:6px; width:100%; margin:14px 0 2px; padding:14px 16px; border:0; border-radius:14px; background:var(--wine); color:#fff; text-align:left; font:inherit; box-shadow:0 8px 20px rgba(122,38,50,.22); }
.mcc-top { display:flex; align-items:center; justify-content:space-between; }
.mcc-top b { font-size:16px; font-weight:800; letter-spacing:.5px; }
.mcc-top em { display:grid; place-items:center; width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.16); font-style:normal; }
.mcc-where { font-size:13px; line-height:1.5; color:#F3DFA8; }
.mcc-bar { display:block; height:4px; border-radius:4px; background:rgba(255,255,255,.2); overflow:hidden; }
.mcc-bar i { display:block; height:100%; background:#F3DFA8; border-radius:4px; }
.mcc-sub { font-size:11.5px; color:rgba(255,255,255,.75); }
/* v4fix4：排行榜奖品条居中、三张卡底边对齐；我的改变「删除」 */
.rank-podium .rank-prize { justify-content:center; margin-top:auto; box-sizing:border-box; width:100%; padding:8px 4px 0; background:none; border-radius:0; text-align:center; white-space:nowrap; }
.post-actions .post-del { margin-left:auto; color:#9a392f; }
.post-actions .post-admin + .post-del, .post-actions .post-del + .post-admin { margin-left:0; }
.rank-list-person .rank-position { width:30px; box-sizing:border-box; padding:2px 0; text-align:center; border-radius:8px; font-variant-numeric:tabular-nums; }
.rank-podium-person.rank-place-1 { transform:none; }   /* 三张卡上下对齐，奖品条在同一条线上 */
/* v4fix5：统一选照片（单张时格子大一点）、上传中预览 */
.rec-grid.single { grid-template-columns:minmax(0, 200px); }
.rec-grid.single .rec-cell { aspect-ratio:3/4; }
.rec-grid.single.empty .rec-add { aspect-ratio:3/4; min-height:0; }
.rec-cell.loading img { opacity:.45; }
.rec-cell.loading em { position:absolute; inset:auto 0 0 0; padding:4px 0; background:rgba(31,28,26,.6); color:#fff; font-style:normal; font-size:11px; text-align:center; }
.tf .tf-pick { margin-top:8px; }
/* 广场点「帅」：点了变实心 */
.post-actions button.on .ic { fill:currentColor; }
.post-actions button.on { color:var(--wine); }
/* 管理员隐藏留言 */
.comment .cmt-hide { margin-left:auto; color:#9a392f; font-size:12px; }
.reply .cmt-hide { color:#9a392f; font-size:12px; }
/* v4fix6：改变页 = 改变广场；右下角圆按钮发记录（在底部导航上面）；「我的时间轴」挪到「我的」页 */
.fab-post { position:fixed; z-index:30; right:max(16px, calc((100% - 520px)/2 + 16px)); bottom:calc(84px + env(safe-area-inset-bottom)); display:grid; place-items:center; align-content:center; gap:0; width:58px; height:58px; padding:0; border:0; border-radius:50%; background:var(--wine); color:#fff; box-shadow:0 10px 22px rgba(122,38,50,.32); font:inherit; }
.fab-post .ic { width:22px; height:22px; }
.fab-post span { font-size:10px; font-weight:700; line-height:1; margin-top:2px; }
.page-layer .fab-post, #sheet-root > .fab-post { z-index:60; bottom:calc(24px + env(safe-area-inset-bottom)); }
.sq-list { padding-bottom:70px; }
.sq-more { margin-top:12px; }
/* v4fix7：头像统一带荣誉——小帅认证星尘环（ring-on）+ 兄弟队长小徽章 */
.face-wrap { position:relative; display:inline-flex; flex:none; }
.face-badge { position:absolute; right:-5px; bottom:-4px; width:15px; height:auto; z-index:3; pointer-events:none; filter:grayscale(1) drop-shadow(0 1px 2px rgba(31,28,26,.35)); }
.comment-head .avatar-mini, .comment-head .c-av { width:30px; height:30px; font-size:13px; }
.comment-head .avatar-mini img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
#top-avatar { position:relative; overflow:visible; }
#top-avatar > img:not(.face-badge) { border-radius:50%; }
#top-avatar .face-badge { right:-6px; bottom:-5px; width:16px; }
/* 发记录：输入框像朋友圈「这一刻的想法」 */
.rec-text { display:block; width:100%; min-height:96px; margin:12px 0 4px; padding:12px; border:1px solid var(--line); border-radius:12px; background:#fff; font:inherit; font-size:16px; line-height:1.6; resize:none; box-sizing:border-box; }
/* 我的记录：一排正方形缩略图，左右滑 */
.mr-strip { display:flex; gap:8px; overflow-x:auto; padding:2px 2px 8px; margin:0 -2px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.mr-strip::-webkit-scrollbar { display:none; }
.mr-thumb { position:relative; flex:none; width:104px; height:104px; padding:0; border:0; border-radius:12px; overflow:hidden; background:#eee8df; scroll-snap-align:start; font:inherit; color:var(--ink); }
.mr-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.mr-thumb em { position:absolute; left:6px; bottom:6px; padding:1px 6px; border-radius:999px; background:rgba(31,28,26,.6); color:#fff; font-style:normal; font-size:10.5px; }
.mr-thumb .mr-lock { position:absolute; right:6px; top:6px; display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:rgba(31,28,26,.6); color:#fff; }
.mr-thumb .mr-n { position:absolute; right:6px; bottom:6px; padding:0 5px; border-radius:6px; background:rgba(31,28,26,.6); color:#fff; font-size:10.5px; font-weight:700; }
.mr-thumb .mr-txt { display:block; padding:10px; font-size:12px; line-height:1.5; text-align:left; }
.mr-add { display:grid; place-content:center; justify-items:center; gap:4px; border:1.5px dashed var(--line-accent, #d6c3a0); background:var(--surface, #FCFAF7); color:var(--wine); }
.mr-add .ic { width:22px; height:22px; } .mr-add span { font-size:11.5px; color:var(--muted); }
.mr-empty { display:flex; align-items:center; gap:12px; width:100%; padding:14px 16px; border:1.5px dashed var(--line-accent, #d6c3a0); border-radius:14px; background:var(--surface, #FCFAF7); color:var(--ink); text-align:left; font:inherit; }
.mr-empty .ic { color:var(--wine); width:20px; height:20px; } .mr-empty b { display:block; font-size:14.5px; } .mr-empty small { display:block; font-size:12px; color:var(--muted); margin-top:2px; }
.vis-locked { font-size:12px; color:#9a392f; padding:6px 0; }
