/* pro.luwan.run 前台 · 增量样式
   基础 token 与组件沿用原型 proto.css，这里只补「真实站点渲染」需要的结构类。 */

/* ---------- 全局：主背景白 + 链接/可点区域光标 ----------
   原型内容区在 .browser 白底卡片内；真实站点没有浏览器外壳，
   正文直接落在 body 上 ⇒ body 用 --bg（白），与原型内容区一致。
   链接与 data-go 可点卡片统一 pointer 光标。 */
body{background:var(--bg)}
a{cursor:pointer}
[data-go]{cursor:pointer}

/* ---------- 订阅源状态点：压掉通用 .st 徽章的 padding/font-size ----------
   通用 .st（app.css 下方）是「状态徽章」（padding:1px 7px + border-radius:999px），
   会把 .srcrow 里的 6px 圆点撑成胖椭圆。这里按原型复位为 6px 小圆点。 */
.srcrow .st{width:6px;height:6px;padding:0;font-size:0;line-height:1;border-radius:50%;background:var(--success);flex:none;box-shadow:none}
.srcrow .st.warn{background:#f59e0b}

/* ---------- 投稿页：运动分类多选 tag（对齐原型 s-submit 选中态） ----------
   原型里选中项是「绿描边 + ✓」，未选中是「+」。这里用 button + .on 复现，
   选中/取消由既有的 [data-subtag] 委托切换 class。 */
.subtags{display:flex;gap:6px;flex-wrap:wrap;padding-top:4px}
.subtags .tag{cursor:pointer;padding:5px 11px;font-size:11px;font-family:inherit;border:0}
.subtags .tag::after{content:" +";color:var(--ink-4);font-weight:400}
.subtags .tag.on{box-shadow:inset 0 0 0 1.5px #16a34a}
.subtags .tag.on::after{content:" ✓";color:#16a34a;font-weight:700}

.loading{padding:60px 0;text-align:center;color:var(--ink-4);font-size:13px}

/* ---------- 评论区容器级修正 ----------
   原型的 .cmt 是「头像 30px + 正文 1fr」两栏 grid —— 那是给「单条评论 + 输入框」那一行用的。
   真实站点里 .cmt 是**整个评论区的容器**（内含 .cmsec 精选区 / 全部评论 / .cmting），
   沿用 grid 会把 .cmsec 塞进 30px 的第一列 ⇒ 宽度一路塌陷（.cmain 宽 0、文字逐字换行、
   整块高 1200+px、赞按钮点不到）。这里改回块级。 */
.cmt{display:block}
/* .cmsec 在原型里是「标题 —— 横线 —— 数量」的一行式 section header（display:flex + gap:9px）。
   真实站点用它装整段评论列表 ⇒ 每条评论变成横向排列的 flex item，窄屏直接溢出。改回块级纵向堆叠。 */
.cmsec{display:block;padding-top:2px}
.cmsec > b{display:block;font-size:12.5px;font-weight:700;color:var(--ink-3);margin:12px 0 2px}

/* ---------- 详情页 ---------- */
.crumb{margin:18px 0 10px;font-size:12px;color:var(--ink-4)}
.crumb a{color:var(--ink-3)}
.crumb a:hover{color:var(--brand-deep)}

.artwrap{max-width:760px;margin:0 auto}
.artwrap h1{font-size:26px;line-height:1.42;margin:0 0 12px;color:var(--ink-1);letter-spacing:-.01em}
.ameta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--ink-3);padding-bottom:14px;border-bottom:1px solid var(--line)}
.ameta .langsw{margin-left:auto;display:flex;gap:4px}
.ameta .langsw button{font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid var(--line-2);color:var(--ink-3)}
.ameta .langsw button.on{background:var(--on-brand);color:var(--brand-bright);border-color:transparent;font-weight:700}
.artwrap .summary{margin:16px 0;padding:12px 14px;background:var(--brand-soft);border-radius:10px;border-left:3px solid var(--brand)}
.artwrap .summary b{display:block;font-size:11.5px;color:var(--brand-deep);margin-bottom:4px}
.artwrap .summary p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.75}
.abody{font-size:14.5px;line-height:1.95;color:var(--ink-2);margin:20px 0 24px}
.abody p{margin:0 0 16px}
.abody h2,.abody h3{color:var(--ink-1);margin:26px 0 12px;font-size:17px;line-height:1.5}
.abody blockquote{margin:18px 0;padding:10px 16px;background:var(--bg-soft);border-left:3px solid var(--line-2);color:var(--ink-3);font-size:13.5px}
.abody img{border-radius:10px;display:block;margin:16px 0}
.abody a{color:var(--accent);text-decoration:underline}

.opbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.opbar .btn.on{background:var(--brand-deep);color:#fff}

/* ---------- 播客 ---------- */
.podhero{display:grid;grid-template-columns:190px minmax(0,1fr);gap:22px;margin-top:16px;align-items:start}
@media(max-width:760px){.podhero{grid-template-columns:1fr}}
.eplist{display:flex;flex-direction:column;gap:10px}
.eprow{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}
.eprow:hover{border-color:#f2c800}
.eprow b{display:block;font-size:13px;color:var(--ink-1);margin-bottom:3px}
.segtext{margin-top:6px;border:1px solid var(--line);border-radius:11px;background:var(--surface);padding:6px 4px;max-height:340px;overflow:auto}
.segrow{display:flex;gap:12px;padding:8px 12px;cursor:pointer;border-radius:8px}
.segrow:hover{background:var(--bg-soft)}
.segrow .ts{font-size:11px;color:var(--ink-4);flex:none;width:52px;padding-top:2px}
.segrow p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.7}
.segrow p.tr{margin-top:2px;color:var(--ink-3);font-size:12px}

/* ---------- 比赛详情 ---------- */
.rhead{margin:14px 0 12px}
.rhead h1{font-size:23px;margin:0 0 6px;color:var(--ink-1)}
.rhead .year{font-size:13px;color:var(--ink-4);font-weight:700}
.jgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px}
.jrow{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);padding:4px 0}
.jrow em{margin-left:auto;font-style:normal;font-family:Consolas,monospace;font-size:11px;color:var(--ink-4)}
.jpanel{margin-top:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:12px 14px}
.jpanel .more{margin-left:auto;font-size:11.5px}

.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.tbl th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line-2);color:var(--ink-4);font-size:11.5px;font-weight:700}
.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:middle}

.mapwrap{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:var(--bg-soft);margin-bottom:12px}
.mapwrap svg,.mapwrap img{display:block;width:100%;height:220px}
.mapstats{display:flex;gap:24px;margin-bottom:10px}
.mapstats b{display:block;font-size:16px;color:var(--ink-1)}
.mapstats span{font-size:11px;color:var(--ink-4)}
.hintx{font-size:12px;color:var(--ink-3);margin:8px 0}

/* 星级分布条（赛事点评聚合） */
.rdist{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.distrow{display:flex;align-items:center;gap:9px;font-size:11.5px;color:var(--ink-3)}
.distrow span{flex:none;width:34px;font-family:Consolas,monospace;color:var(--ink-4)}
.distrow .sbar{flex:1;height:6px;border-radius:999px;background:var(--bg-soft);overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}
.distrow .sbar i{display:block;height:100%;background:var(--brand);border-radius:999px}
.distrow em{flex:none;font-style:normal;font-family:Consolas,monospace;color:var(--ink-4);width:22px;text-align:right}

.weather{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:12px}
.weather b{display:block;font-size:15px;color:var(--ink-1)}
.weather span{font-size:11px;color:var(--ink-4)}

.kv{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line);font-size:12.5px}
.kv span{color:var(--ink-4)}
.schedule{list-style:none;margin:6px 0 0;padding:0}
.schedule li{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:12.5px}
.schedule b{color:var(--ink-1);flex:none;width:150px;font-family:Consolas,monospace;font-size:11.5px}

.rwrite .lock{border:1px dashed var(--line-2);border-radius:11px;padding:16px;text-align:center;background:var(--bg-soft)}
.rwrite .lock b{display:block;color:var(--ink-2);font-size:13px}
.rwrite .lock span{font-size:12px;color:var(--ink-4)}
.diminput{margin:10px 0}
.diminput .stars{cursor:pointer;color:var(--brand-deep);font-size:15px;letter-spacing:2px}
.diminput .stars i{font-style:normal;color:var(--line-2)}
.diminput .stars i.on{color:#f2c800}
.rwrite textarea{width:100%;min-height:82px;border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;font-family:inherit;font-size:12.5px;color:var(--ink-2);background:var(--surface);resize:vertical}

/* ---------- 表单 ---------- */
.fld{margin-bottom:12px}
.fld .lb{font-size:11.5px;color:var(--ink-4);margin-bottom:5px;display:flex;align-items:center;gap:4px}
.fld .lb em{color:var(--danger);font-style:normal}
.inp{width:100%;border:1px solid var(--line-2);border-radius:9px;padding:8px 11px;font-size:13px;font-family:inherit;color:var(--ink-1);background:var(--surface)}
.inp:focus{outline:none;border-color:var(--brand-deep)}
textarea.inp{min-height:70px;resize:vertical;line-height:1.7}

/* ---------- 歌词层 ---------- */
.lyrow{padding:11px 4px;cursor:pointer;border-radius:9px;opacity:.42;transition:opacity .2s}
.lyrow.past{opacity:.3}
.lyrow.on{opacity:1;background:rgba(255,255,255,.06)}
.lyrow .ly{margin:0;font-size:16px;line-height:1.75;color:#fff}
.lyrow .ly.zh{font-size:14px;color:rgba(255,255,255,.66);margin-top:2px}
.lyrow .ly.en{font-size:15px;color:rgba(255,255,255,.82)}
#plxLy{padding:14px 0 60vh;overflow-y:auto;height:100%;scrollbar-width:thin}

/* ---------- 其他 ---------- */
.hcard .hb{padding:14px 16px}
.hcard h3{margin:8px 0 6px;font-size:18px;color:var(--ink-1);line-height:1.5}
.hcard p{margin:0 0 8px;font-size:12.5px;color:var(--ink-3);line-height:1.7}
.morebar{text-align:center;padding:18px 0}
.grp{font-size:12px;color:var(--ink-4);margin:14px 0 6px;font-weight:700}
.st{font-size:10.5px;padding:1px 7px;border-radius:999px;font-weight:700}
.st.published{background:var(--success-soft);color:#0d7a3a}
.st.pending{background:var(--brand-soft);color:#7a6700}
.st.draft{background:var(--bg-soft);color:var(--ink-4)}
.st.rejected{background:var(--danger-soft);color:#b91c1c}
.st.offline{background:var(--bg-soft);color:var(--ink-4)}

@media(max-width:720px){
  .page{padding:0 16px 72px}
  .sitehead .in{padding:10px 16px;gap:12px}
  .artwrap h1{font-size:21px}
  .jgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mapstats{gap:14px}
}

/* ---------- 首页（对齐原型 v1.0） ---------- */
.tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.hintbar .skip{margin-left:auto;cursor:pointer;color:var(--ink-4);font-size:11.5px}
.hintbar .skip:hover{color:var(--ink-1)}
.sidebox .row .n.hot{color:var(--brand-deep);font-weight:700}
.t-silver{background:#e2e8f0;color:#475569}
[data-theme="dark"] .t-silver{background:rgba(148,163,184,.2);color:#cbd5e1}
.empty{color:var(--ink-4);font-size:12px;padding:14px 0;text-align:center}

/* ---------- 资讯流（对齐原型 v1.0 s-news） ---------- */
.newsfilt{position:sticky;top:56px;z-index:25;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.newsfilt .nfrow{max-width:1160px;margin:0 auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 0 12px}
.nfcount{margin-left:auto;font-size:11.5px;color:var(--ink-4);white-space:nowrap}
.ndate{font-size:11.5px;font-weight:700;letter-spacing:.1em;color:var(--ink-4);padding:12px 0 6px}
.nfend{text-align:center;font-size:11.5px;color:var(--ink-4);padding:26px 0}
.explain{margin:0;font-size:11.5px;color:var(--ink-3);line-height:1.7}
.srcrow .btn{white-space:nowrap}
/* 桌面端让侧栏避开吸顶筛选条（≤1080px 由 proto.css 隐藏 .side） */
.newssec .side{top:120px}

/* ---------- 资讯详情（对齐原型 v1.0 s-article） ---------- */
.art{margin:0 auto}
.t-ai{background:#ede9fe;color:#7c3aed}
[data-theme="dark"] .t-ai{background:rgba(124,58,237,.22);color:#c4b5fd}
.srcbox .ph{width:46px;height:46px;flex:none}
.summary ul{margin:8px 0 0;padding-left:18px}
.summary li{font-size:12.5px;color:var(--ink-2);line-height:1.85;margin:3px 0}
.summary .disc{margin:8px 0 0;font-size:11px;color:var(--ink-4)}
.summary .sh{font-size:12px;font-weight:700;color:#7c3aed;display:flex;align-items:center;gap:6px;margin-bottom:4px}
.summary.on{display:none}

/* 内联链接（播客页 bnote 等） */
.lnk{color:var(--accent);font-weight:700;white-space:nowrap;font-size:12px}
.lnk:hover{text-decoration:underline}
