/*
 * 站内插件输出的外观兼容
 * 这些插件自带写死的颜色和宽度，这里统一接到模板的变量上。
 * 只改外观，不动结构，插件升级后最多是这里失效，功能不受影响。
 */

/* 签到（k_misign）：右栏那块绿色面板 */
#midaben_sign .midaben_con { width: auto !important; height: auto !important; background: var(--surface) !important; border: 1px solid var(--line); border-radius: var(--r-lg) !important; overflow: hidden; display: flex; }
#midaben_sign .midaben_signpanel { flex: 1; height: 48px !important; line-height: 48px !important; background: var(--text) !important; color: var(--bg) !important; font-weight: 600; text-align: center; border-radius: 0 !important; }
#midaben_sign .midaben_signpanel:hover { opacity: .88; }
#midaben_sign .midaben_signpanel.visted, #midaben_sign .JD_sign.visted { background: var(--hover) !important; color: var(--text-3) !important; }
#midaben_sign .midaben_signinfo { background: var(--surface) !important; color: var(--text-2) !important; border-left: 1px solid var(--line); }
#midaben_sign .midaben_signinfo a, #midaben_sign .midaben_signinfo span { color: var(--text-2) !important; font-size: 12px; }
#midaben_sign .midaben_signpanel .font, #midaben_sign .midaben_signpanel .nums { color: inherit !important; background: none !important; }
#midaben_sign .fblock { background: var(--surface) !important; color: var(--text-2) !important; border-left: 1px solid var(--line); }
#midaben_sign .fblock .all, #midaben_sign .fblock .last, #midaben_sign .fblock a { color: var(--text-2) !important; background: none !important; font-size: 12px; }
#midaben_sign img { display: none; }

/* 顶部加载条（x520_loading / pace）：跟切页进度条撞色，统一成点缀色 */
.pace .pace-progress { background: var(--brand) !important; }
.pace-activity { border-color: var(--brand) !important; }

/* 表情包、编辑器扩展等插件按钮 */
.sunju_face_btn, .comiis_face_btn { border-radius: 8px !important; }

/* 通用：插件往侧栏 / 右栏塞的卡片 */
.klp-rail > div:not([class]), .klp-rail > .bm, .klp-side-in > div[id] > .bm { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.klp-rail > div > table { width: 100%; }
.klp-rail .bm_h { min-height: 44px; line-height: 44px; }
.klp-side-hook:empty, .klp-side-in > .k-nv-grp:empty { display: none; }
.klp-side-hook a { display: flex; align-items: center; gap: 8px; height: 32px; padding: 0 10px; border-radius: var(--r-sm); font-size: 13px; color: var(--text-3); }
.klp-side-hook a:hover { background: var(--hover); color: var(--text); }

/* 帖子页里插件加的楼层标记（IP 属地、编辑记录等） */
.klp-post .klp-authi img { max-height: 16px; vertical-align: -3px; }
.klp-post .pi .xg1, .klp-post .authi .xg1 { font-size: 12px; color: var(--text-3); }

/* AI 总结（klpbbs_aisum）等在正文顶部插入的卡片 */
.klp-post .pcb > div[class*="aisum"], .klp-post .pcb > div[id*="aisum"] { border-radius: 14px; }

/* 签到插件在各页右栏输出的大按钮：侧栏左下角已经有签到卡，这里不再重复显示 */
.klp-rail #midaben_sign { display: none; }

/* ========== 签到插件（k_misign，bluefang 风格）的签到页 ==========
   插件自带 sign.css 在页面里加载、和模板样式平级，这里统一加 #wp 前缀压过它。
   数字原本是雪碧图拼的位图，klp.js 的 initMisignPage() 会换成隐藏框里的真实数值（.klp-num）。 */
#wp .lineB { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 0; margin: 0 0 16px; padding: 0; height: auto; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; box-shadow: none; }
#wp .lineB .qdleft, #wp .lineB .qdright, #wp .lineB .qdright .content { float: none; width: auto; height: auto; margin: 0; padding: 0; background: none; border: 0; box-shadow: none; }
#wp .lineB .qdleft { display: flex; flex-direction: column; justify-content: center; gap: 12px; padding: 24px; border-right: 1px solid var(--line); }
#wp .lineB .qdleft .btn { position: static; display: flex; align-items: center; justify-content: center; width: 100%; height: 52px; margin: 0; padding: 0; border-radius: 14px; background: var(--text); color: var(--bg); font-size: 17px; font-weight: 700; text-indent: 0; box-shadow: none; cursor: pointer; }
#wp .lineB .qdleft .btn::before { content: "今日签到"; }
#wp .lineB .qdleft a.btn:hover { background: var(--text); opacity: .88; }
#wp .lineB .qdleft .btnvisted { background: var(--soft); color: var(--soft-ink); cursor: default; }
#wp .lineB .qdleft .btnvisted::before { content: "✓ 今日已签到"; }
#wp .lineB .qdleft .paiming { display: flex; align-items: baseline; justify-content: center; gap: 6px; margin: 0; padding: 0; width: auto; height: auto; background: none; border: 0; }
#wp .lineB .qdleft .paiming .font { float: none; width: auto; height: auto; padding: 0; margin: 0; font-size: 13px; line-height: 1.4; color: var(--text-3); background: none; }
#wp .lineB .qdright .content { display: flex; align-items: center; gap: 24px; padding: 24px 28px; height: 100%; box-sizing: border-box; }
#wp .lineB .qdright .content .mainCon { display: flex; flex-direction: column; gap: 8px; float: none; width: 150px; flex: none; height: auto; margin: 0; padding: 0; background: none; border: 0; font-size: 14px; }
#wp .lineB .qdright .content .mainCon .user { display: flex; align-items: center; gap: 10px; float: none; width: auto; height: auto; margin: 0; padding: 0; }
#wp .lineB .qdright .content .mainCon .user img { width: 44px; height: 44px; border-radius: 50%; margin: 0; padding: 0; border: 0; float: none; }
#wp .lineB .qdright .content .mainCon .user .author { float: none; margin: 0; padding: 0; font-size: 15px; font-weight: 600; color: var(--text); line-height: 1.3; }
#wp .lineB .qdright .content .mainCon .jtitle, #wp .lineB .qdright .content .mainCon .jingju { float: none; width: auto; height: auto; margin: 0; padding: 0; font-size: 12.5px; color: var(--text-3); background: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#wp .lineB .countqian { flex: 1; min-width: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; float: none; width: auto; height: auto; margin: 0; padding: 0; background: none; }
#wp .lineB .countqian li { float: none; width: auto; height: auto; margin: 0; padding: 12px 14px; border: 0; border-radius: 12px; background: var(--hover); text-align: left; }
#wp .lineB .countqian li h4 { margin: 0 0 4px; padding: 0; height: auto; line-height: 1.4; font-size: 12.5px; font-weight: 500; color: var(--text-3); background: none; }
#wp .lineB .countqian li h4 a { margin-left: 6px; font-size: 12px; color: var(--ink); }
#wp .lineB .countqian li p { display: flex; align-items: baseline; gap: 4px; margin: 0; padding: 0; height: auto; line-height: 1.2; background: none; }
#wp .lineB .countqian li p b { float: none; width: auto; height: auto; margin: 0; padding: 0; font-size: 12.5px; font-weight: 400; color: var(--text-3); background: none; }
#wp .lineB .weather_p { flex: none; min-width: 96px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; float: none; width: auto; height: auto; margin: 0; padding: 24px 12px; border-left: 1px solid var(--line); background: none; position: static; }
#wp .lineB .weather_p::before { content: "今日已签"; font-size: 12.5px; color: var(--text-3); }
#wp .lineB .weather_p .con { float: none; width: auto; height: auto; margin: 0; padding: 0; background: none; font: 500 28px/1.2 var(--mono); color: var(--text); text-align: center; }
#wp .lineB .weather_p .con span { margin-left: 3px; font: 12.5px var(--font); color: var(--text-3); }
/* 位图数字：隐藏雪碧图，显示真实数值 */
#wp .lineB .J_numpic > span { display: none; }
#wp .lineB .J_numpic { display: inline-flex; float: none; width: auto; height: auto !important; margin: 0; padding: 0; background: none; }
/* 「您的签到排名：N」插件已经输出了文字，后面的位图数字是重复的 */
#wp .lineB .paiming .pics { display: none !important; }
#wp .lineB .klp-num { font: 500 24px/1.2 var(--mono); color: var(--text); font-variant-numeric: tabular-nums; }
#wp .lineB .lvgrade .klp-num::before { content: "Lv."; font-size: 15px; color: var(--text-3); margin-right: 2px; }

/* 排行榜（ajax 载入的 k_misign_list） */
#wp .lineC { float: none; margin: 0 0 16px; padding: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
#wp .lineC .lineC_left { float: none; width: auto; margin: 0; padding: 0; background: none; border: 0; }
/* 加载中：切换标签时旧内容半透明 + 转圈（klp.js 接管了 ajaxget）；首次载入时 Discuz 写进来的「请稍候...」居中占位 */
#wp #ranklist { position: relative; min-height: 120px; }
#wp #ranklist.is-loading > * { opacity: .45; pointer-events: none; transition: opacity .15s; }
#wp #ranklist.is-loading::after { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; border-radius: 50%; border: 2px solid var(--line); border-top-color: var(--brand); animation: klpSpin .7s linear infinite; }
#wp #ranklist > span:only-child { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 120px; font-size: 13px; color: var(--text-3); }
#wp .left_tit { height: auto; margin: 0; padding: 14px 20px; border-bottom: 1px solid var(--line); background: none; }
#wp .left_tit .paihang { display: inline-flex; gap: 2px; margin: 0; padding: 3px; border-radius: 9px; background: var(--hover); height: auto; }
#wp .left_tit .paihang li { width: auto; float: none; margin: 0; padding: 0; height: auto; line-height: normal; background: none; border: 0; }
#wp .left_tit .paihang li a { width: auto; white-space: nowrap; display: inline-flex; align-items: center; height: 28px; padding: 0 14px; border-radius: 7px; color: var(--text-3); font-size: 13px; font-weight: 500; background: none; }
#wp .left_tit .paihang li a:hover { color: var(--text); }
#wp .left_tit .paihang li.active a { background: var(--surface); color: var(--text); box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 0 0 1px var(--line); }
#wp .arr_detail { margin: 0; padding: 0 8px 8px; background: none; border: 0; }
#wp .arr_detail table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
#wp .arr_detail th { height: auto; padding: 10px 12px; text-align: left; font-weight: 500; font-size: 12.5px; color: var(--text-3); background: none; border-bottom: 1px solid var(--line); }
#wp .arr_detail td { height: auto; padding: 11px 12px; text-align: left; color: var(--text); background: none; border-bottom: 1px solid var(--line); }
#wp .arr_detail tr:last-child td { border-bottom: 0; }
#wp .arr_detail tr:hover td { background: var(--hover); }
#wp .arr_detail td div { width: auto !important; }
#wp .arr_detail td a { font-weight: 500; }
#wp .arr_detail .btns { padding: 8px 0; }
/* 分页：插件的 sign.css 把 .btns 钉在右下角（absolute），页码全藏掉，只留上一页 / 下一页两张白底 jpg 箭头，
 * 夜间就是一块白方块。这里放回普通的 .pg 分页条；prev 的分隔线是插件写的 !important，只能同样用 !important 撤 */
#wp .lineC .lineC_left .btns { position: static; display: flex; justify-content: flex-end; width: auto; height: auto; line-height: normal; border: 0; border-radius: 0; }
#wp .lineC .lineC_left .btns strong, #wp .lineC .lineC_left .btns a { float: none; display: inline-grid; width: auto; height: 34px; min-width: 34px; padding: 0 8px; text-indent: 0; background-image: none; border: 0 !important; }
#wp .lineC .lineC_left .btns .prev, #wp .lineC .lineC_left .btns .nxt { padding: 0 12px; }
#wp .lineC .lineC_left .btns a:hover { background-color: var(--hover); }
#wp .arr_detail tr:hover td:has(> .btns) { background: none; }

/* 奖励动态 / 推送位 */
#wp .lineC_right, #wp .lineD { float: none; margin: 0 0 16px; padding: 16px 20px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
#wp .lineC_right .tit, #wp .lineD .tit { margin: 0 0 12px; padding: 0; height: auto; line-height: 1.4; font-size: 15px; font-weight: 600; color: var(--text); background: none; border: 0; }
#wp .lineD .content { background: none; border: 0; }
#wp .lineD .leftcon li { border: 0; background: none; }
#wp .lineD .headimg img { border-radius: 50%; }

/* ========== 楼中楼（replyfloor，PC 样式 2）==========
 * 插件的 style2.css 由 viewthread_top 钩子在正文里用 link 引入，排在本文件后面，
 * 所以这里的规则一律带 .klp-post 前缀压过它；display 由插件脚本行内切换，这里不碰。
 * 编辑器工具栏图标和快速回帖共用 thread.css 里 #fastposteditor 那一组规则。 */
.klp-post .replyfloor_box { margin: 16px 0 4px; }
.klp-post .replyfloor_hd { display: flex; align-items: center; justify-content: flex-end; gap: 10px; height: auto; line-height: 1.5; font-size: 12px; color: var(--text-3); }
.klp-post .replyfloor_tail_floor, .klp-post .replyfloor_tail_time, .klp-post .replyfloor_tail_from { margin: 0; color: var(--text-3); font-family: var(--mono); }
.klp-post .replyfloor_tail_floor em { font-style: normal; }
.klp-post .replyfloor_link_unfold, .klp-post .replyfloor_link_fold { height: 26px; line-height: 26px; width: auto; margin: 0; padding: 0 10px; border: 0; border-radius: var(--r-sm); background: var(--soft); color: var(--soft-ink); font-size: 12px; font-weight: 500; transition: opacity var(--dur-1) var(--ease-io); }
.klp-post .replyfloor_link_unfold:hover, .klp-post .replyfloor_link_fold:hover { opacity: .8; }
.klp-post .replyfloor_count { margin-left: 2px; font-family: var(--mono); }
.klp-post .replyfloor_bd { margin-top: 8px; padding: 2px 16px 14px; border: 0; border-radius: var(--r-md); background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); }

/* 每条回复：头像 +（名字 · 时间 · 属地 …… 悬停才出现的操作）+ 正文 */
.klp-post .replyfloor_content_li { display: flex; align-items: flex-start; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 14px; overflow: visible; }
.klp-post .replyfloor_content_li:last-child { border-bottom: 0; }
.klp-post .replyfloor_content_avatar { float: none; flex: none; width: 28px; height: 28px; margin-top: 1px; padding: 0; border: 0; border-radius: 50%; overflow: hidden; background: var(--hover); }
.klp-post .replyfloor_content_avatar img { display: block; width: 28px; height: 28px; object-fit: cover; }
.klp-post .replyfloor_content_cnt { flex: 1; min-width: 0; margin: 0; word-break: break-word; }
.klp-post .replyfloor_content_head { display: flex; align-items: center; gap: 8px; height: auto; line-height: 20px; overflow: visible; font-size: 12px; color: var(--text-3); }
.klp-post .replyfloor_content_head_z { float: none; flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0 8px; }
.klp-post .replyfloor_content_head_y { float: none; flex: none; display: flex; gap: 2px; opacity: 0; transition: opacity var(--dur-1) var(--ease-io); }
.klp-post .replyfloor_content_li:hover .replyfloor_content_head_y, .klp-post .replyfloor_content_li:focus-within .replyfloor_content_head_y { opacity: 1; }
.klp-post .replyfloor_content_user { color: var(--text-3); }
.klp-post .replyfloor_content_user a { color: var(--text); font-size: 13px; font-weight: 600; white-space: nowrap; }
.klp-post .replyfloor_content_user a:hover { color: var(--ink); }
.klp-post .replyfloor_content_toreply { margin: 0 4px; color: var(--text-3); }
.klp-post .replyfloor_content_time, .klp-post .replyfloor_content_location, .klp-post .replyfloor_content_from, .klp-post .replyfloor_content_from a { margin: 0; font-size: 12px; color: var(--text-3); }
.klp-post .replyfloor_content_moderating { margin: 0; padding: 0 6px; border-radius: 999px; background: var(--warn-soft); color: var(--warn); font-size: 11.5px; }
.klp-post .replyfloor_content_rpbtn, .klp-post .replyfloor_content_editbtn, .klp-post .replyfloor_content_reportbtn, .klp-post .replyfloor_content_delbtn { margin: 0; padding: 0 6px; border-radius: 6px; color: var(--text-3); line-height: 22px; transition: background-color var(--dur-1) var(--ease-io), color var(--dur-1) var(--ease-io); }
.klp-post .replyfloor_content_rpbtn:hover, .klp-post .replyfloor_content_editbtn:hover, .klp-post .replyfloor_content_reportbtn:hover { background: var(--hover); color: var(--text); }
.klp-post .replyfloor_content_delbtn:hover { background: var(--danger-soft); color: var(--danger); }
.klp-post .replyfloor_content_main { margin-top: 2px; }
.klp-post .replyfloor_content_text { font-size: 14px; line-height: 1.65; color: var(--text); }
.klp-post .replyfloor_content_text a { color: var(--ink); }
.klp-post .replyfloor_content_image { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; overflow: visible; }
.klp-post .replyfloor_content_image_li { float: none; width: 110px; height: 110px; margin: 0; border-radius: var(--r-sm); overflow: hidden; background: var(--hover); }
.klp-post .replyfloor_content_image_li img { width: 100%; height: 100%; cursor: zoom-in; }
.klp-post .replyfloor_content_locked { padding: 6px 10px; border: 0; border-radius: var(--r-sm); background: var(--warn-soft) none; color: var(--warn); }

/* 底部：展开更多 / 分页 +「我要说一句」；还没有回复时只剩按钮，不要分隔线 */
.klp-post .replyfloor_content_pager { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding-top: 12px; border-top: 1px solid var(--line); overflow: visible; }
.klp-post .replyfloor_content_ul:first-child:empty ~ .replyfloor_content_pager { border-top: 0; padding-top: 10px; }
.klp-post .replyfloor_content_more, .klp-post .replyfloor_content_pg, .klp-post .replyfloor_content_pg .pg, .klp-post .replyfloor_content_hrmore, .klp-post .replyfloor_content_showmore, .klp-post .replyfloor_content_hidemore { float: none; }
.klp-post .replyfloor_content_more { display: flex; align-items: center; font-size: 12.5px; color: var(--text-3); }
.klp-post .replyfloor_content_more a, .klp-post .replyfloor_content_showmore a, .klp-post .replyfloor_content_hidemore a { color: var(--ink); }
.klp-post .replyfloor_content_showmore a::after, .klp-post .replyfloor_content_hidemore a::after { border-color: var(--ink); }
.klp-post .replyfloor_content_hrmore::before { background: var(--line); }
.klp-post .replyfloor_content_btn { float: none; margin-left: auto; }
.klp-post .replyfloor_content_btn a { display: inline-flex; align-items: center; height: 30px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface); color: var(--text); font-size: 13px; font-weight: 500; line-height: 1; }
.klp-post .replyfloor_content_btn a:hover { border-color: var(--line); background: var(--hover); color: var(--text); }

/* 编辑器：文本框和工具栏合成一个输入框，聚焦时整框亮焦点环 */
.klp-post .replyfloor_editor { padding-top: 12px; }
.klp-post .replyfloor_editor .replyfloor_replyto { padding: 0 0 6px; font-size: 12px; line-height: 1.5; color: var(--text-3); }
.klp-post .replyfloor_editor .replyfloor_replyto:empty { display: none; }
.klp-post .replyfloor_editor .tedt { display: flex; flex-direction: column; width: 100%; margin: 0; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); overflow: visible; transition: border-color var(--dur-1) var(--ease-io), box-shadow var(--dur-1) var(--ease-io); }
.klp-post .replyfloor_editor .tedt:focus-within { border-color: var(--brand); box-shadow: var(--ring); }
.klp-post .replyfloor_editor .tedt .area { order: -1; margin: 0; padding: 0; border: 0; background: none; }
.klp-post .replyfloor_editor .tedt textarea, .klp-post .replyfloor_editor .tedt textarea:focus { display: block; width: 100%; min-height: 76px; box-sizing: border-box; margin: 0; padding: 10px 12px 4px; border: 0; border-radius: var(--r-md) var(--r-md) 0 0; background: none; box-shadow: none; outline: none; color: var(--text); font: 14px/1.65 var(--font); resize: vertical; }
.klp-post .replyfloor_editor .tedt textarea::placeholder { color: var(--text-3); }
.klp-post .replyfloor_editor .tedt .bar { display: flex; align-items: center; height: auto; margin: 0; padding: 0 6px 4px; border: 0; background: none; }
.klp-post .replyfloor_editor .tedt .bar .fpd { display: flex; align-items: center; gap: 2px; float: none; margin: 0; padding: 0; background: none; }
.klp-post .replyfloor_upimage { display: flex; flex-wrap: wrap; gap: 6px; }
.klp-post .replyfloor_upimage_li { float: none; margin: 6px 0 0; }
.klp-post .replyfloor_upimage_img img { border-radius: var(--r-sm); }
.klp-post .replyfloor_editor .pnpost { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 10px 0 0; padding: 0; overflow: visible; }
.klp-post .replyfloor_editor .replyfloor_editor_left { float: none; }
.klp-post .replyfloor_editor .replyfloor_editor_right { float: none; margin-left: auto; display: flex; flex-direction: row-reverse; align-items: center; gap: 12px; }
.klp-post .replyfloor_editor .replyfloor_editor_btntip, .klp-post .replyfloor_editor .replyfloor_editor_notice { float: none; height: auto; margin: 0; line-height: 1.5; font-size: 12px; color: var(--text-3); }
.klp-post .replyfloor_editor .replyfloor_editor_btntip strong { font-family: var(--mono); font-weight: 600; color: var(--text-2); }
.klp-post .replyfloor_editor .replyfloor_editor_notice label { display: inline-flex; align-items: center; gap: 4px; }
.klp-post .replyfloor_editor #seccode_replyfloor { align-items: center; gap: 6px; }
.klp-post .replyfloor_editor .replyfloor_seccodeverify { width: 100px; height: 30px; box-sizing: border-box; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface); color: var(--text); }
.klp-post .replyfloor_editor .replyfloor_seccodeimg { height: 30px; border-radius: var(--r-sm); cursor: pointer; }
.klp-post .replyfloor_editor .replyfloor_editor_btn, .klp-post .replyfloor_editmsg_btn { float: none; height: 32px; line-height: 32px; padding: 0 16px; border: 0; border-radius: var(--r-sm); background: var(--text); color: var(--bg); font: 600 13px var(--font); transition: opacity var(--dur-1) var(--ease-io); }
.klp-post .replyfloor_editor .replyfloor_editor_btn:hover, .klp-post .replyfloor_editmsg_btn:hover { opacity: .88; }
.klp-post .replyfloor_editor .replyfloor_editor_btn strong { font-weight: 600; }

/* 小喇叭（ahome_horn）：插件在输出里内联了一段 <style>，#hornbox 铺白色半透明图、发布按钮写死白底，
   夜间模式下成了一块白边灰底。内联样式是 id 选择器，这里只能用 !important 压 */
#hornbox { width: auto !important; margin: 0 0 16px !important; background: none !important; border-radius: 0 !important; }
#hornbox > .bm { float: none; width: auto; margin: 0; border: 0; background: none; box-shadow: none; }
#hornbox .bmw { margin: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
#hornbox .bm_h { display: flex; align-items: center; height: auto; min-height: 48px; padding: 0 20px; background: none; border-bottom: 1px solid var(--line); }
#hornbox .bm_h h2 { display: flex; align-items: center; margin: 0; font-size: 15px; font-weight: 600; color: var(--text); }
#hornaddbtn { margin: 0 0 0 10px !important; padding: 2px 10px !important; border: 1px solid var(--line) !important; border-radius: 999px !important; background: var(--surface) !important; color: var(--text-2) !important; font-weight: 400; }
#hornaddbtn:hover { border-color: var(--brand) !important; color: var(--ink) !important; }
#hornbox .bm_h + div { padding: 8px 20px !important; overflow-y: auto !important; scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
#hornbox .tsmini_horn_content { border-collapse: collapse; }
#hornbox .tsmini_horn_content tr { border-bottom: 1px dashed var(--line) !important; }
#hornbox .tsmini_horn_content tr:last-child { border-bottom: 0 !important; }
#hornbox .tsmini_horn_content td { padding: 6px 0; line-height: 22px !important; color: var(--text-2); }
#hornbox .tsmini_horn_content td > div { padding-bottom: 0 !important; }
#hornbox .tsmini_horn_content b a { color: var(--text); }
#hornbox .tsmini_horn_content td[width="120"] { color: var(--text-3) !important; font: 12px var(--mono); white-space: nowrap; }
#hornbox .tsmini_horn_avatar img { border-radius: 50% !important; }
/* 「发布小喇叭」弹窗（plugin.php?id=ahome_horn:add，模板 source/plugin/ahome_horn/template/add.htm，旧版风格共用不改）：
   表格没给标签列宽度，弹窗一窄标签就被挤成一个字一行；控件全是行内样式写死的宽度和外边距。
   #profilelist 这个 id 设置区的资料页也在用，所以从表单的 action 限定 */
form[action*="ahome_horn:add"] { display: block; width: 440px; max-width: calc(100vw - 64px); }
form[action*="ahome_horn:add"] .ct_list { width: 100%; margin: 0 !important; border-collapse: separate; border-spacing: 0 12px; }
form[action*="ahome_horn:add"] .ct_list th { width: 1%; padding: 9px 16px 0 0; white-space: nowrap; text-align: left; vertical-align: top; font-size: 13px; font-weight: 500; color: var(--text-2); }
form[action*="ahome_horn:add"] .ct_list th p { margin: 0; line-height: inherit !important; }
form[action*="ahome_horn:add"] .ct_list td { vertical-align: top; color: var(--text-2); font-size: 13px; }
form[action*="ahome_horn:add"] select { height: 36px; margin: 0 !important; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); color: var(--text); font: 14px var(--font); }
form[action*="ahome_horn:add"] select#color { width: auto !important; }
form[action*="ahome_horn:add"] input[type="text"], form[action*="ahome_horn:add"] textarea { box-sizing: border-box; width: 100% !important; margin: 0 !important; padding: 8px 12px !important; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); color: var(--text); font: 14px/1.6 var(--font); outline: none; transition: border-color var(--dur-1) var(--ease-io), box-shadow var(--dur-2) var(--ease-io); }
form[action*="ahome_horn:add"] input[type="text"]:focus, form[action*="ahome_horn:add"] textarea:focus { border-color: var(--brand); box-shadow: var(--ring); }
form[action*="ahome_horn:add"] textarea { min-height: 88px; resize: vertical; }
form[action*="ahome_horn:add"] label { display: inline-flex !important; align-items: center; gap: 6px; padding: 8px 0 0 !important; line-height: 1.5 !important; }
form[action*="ahome_horn:add"] label input { margin: 0; accent-color: var(--ink); }
form[action*="ahome_horn:add"] label b { color: var(--danger) !important; }
form[action*="ahome_horn:add"] .ct_list span[style*="#AAA"] { color: var(--text-3) !important; }
/* 表情：插件内联的 .smile 是白底白边，夜间是一排白块 */
form[action*="ahome_horn:add"] .ct_list ul { display: grid; grid-template-columns: repeat(8, 1fr); gap: 2px; width: auto !important; margin: 0; padding: 0; list-style: none; }
form[action*="ahome_horn:add"] .ct_list li.smile { float: none !important; display: grid; place-items: center; height: 32px; margin: 0; padding: 0; border: 0; border-radius: var(--r-sm); background: none; cursor: pointer; transition: background-color var(--dur-1) var(--ease-io); }
form[action*="ahome_horn:add"] .ct_list li.smile:hover { background: var(--hover); border: 0; }
form[action*="ahome_horn:add"] .ct_list li.smile img { height: 22px !important; }
form[action*="ahome_horn:add"] .ct_list td[colspan] { padding-top: 4px; text-align: right !important; }
form[action*="ahome_horn:add"] button.pn { margin: 0 !important; }

/* 手机号绑定（klpbbs_pnbind）：模板用的是 Discuz 原生类名（旧版风格也要能看），
   排版由 space.css 的「设置区」一节负责，这里只补几处修饰。
   模板在 source/plugin/klpbbs_pnbind/template/my_bind.htm */
.klp-pnbind h3 { font-weight: 600; color: var(--text); }
.klp-pnbind .klp-pnb-num { font: 600 16px var(--mono); letter-spacing: .04em; }
.klp-pnbind .klp-pnb-ok { margin-left: 8px; font-size: 13px; color: var(--ok); }
.klp-pnbind .klp-pnb-vcode { width: 140px; letter-spacing: .3em; }
.klp-pnbind .tfm td .pn { margin-left: 8px; vertical-align: top; }
.klp-pnbind .tfm td .xg1 { margin-left: 8px; font-size: 12px; }
.klp-pnb-help p { max-width: 720px; margin: 0 0 8px; font-size: 13px; line-height: 1.7; color: var(--text-2); }
.klp-pnb-help p:last-child { margin-bottom: 0; }
.klp-pnb-help a { margin-left: 4px; }

/* 头像上传（uploadavatarpc）：选图区原本是一张画着棋盘格和蓝色按钮的 gif 当背景，
   裁剪工具条那几个按钮也是写死的浅蓝底 + 图标图。这里只换外观，结构和 id 一概不动
   —— 真正的点击目标是铺满选图区的透明 file input，插件的 JS 按 id 取元素。 */
/* 选择器都带一层 .ct2_a：插件的 avatar.css 是在页面里现 link 进来的，排在本文件后面，
   同权重会赢，多一个类名才压得住（不用 !important）。 */
.ct2_a #avatarcontainer { box-sizing: border-box; padding: 0; border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--bg); }
.ct2_a #avatarselector { display: grid; place-items: center; background: none; border-radius: var(--r-lg); }
.ct2_a #avatarselector::after { content: "点击选择图片"; display: inline-flex; align-items: center; height: 36px; padding: 0 16px; border-radius: var(--r-md); background: var(--text); color: var(--bg); font: 600 14px var(--font); pointer-events: none; }
.ct2_a #avatarselector:hover { background: var(--hover); }
.ct2_a #backfileselector { background-image: none; border: 1px solid var(--line); border-radius: var(--r-sm); }
.ct2_a #cropperenlarge, .ct2_a #croppernarrow, .ct2_a #cropperrotatel, .ct2_a #cropperrotater { background-color: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); }

/* ========== AI 助手（klpbbs_ai）的对话页嵌进主题外壳 ==========
 *
 * 入口还是 plugin.php?id=klpbbs_ai:chat。chat.inc.php 认出本模板（TPLDIR）之后换一份外壳模板
 * klpbbs_ai:chat_klp：论坛的侧栏和顶栏照常，帕帕自己的会话左栏 + 对话区放进内容区，
 * 于是整页是「论坛导航 | 会话 | 对话」三栏。正文和独立页共用 klpbbs_ai:chat_body。
 * 旧版风格和手机版仍旧进插件自己的独立页面，那边不受这一节影响。
 *
 * kai.css 由 chat.inc.php 塞进 seohead 引入，同时给 <html> 挂上 kai-in-theme；
 * 插件那两段自带配色都写了 :not(.kai-in-theme)，所以这里不用堆权重去压。 */

/* ---- 一、整套 --kai-* 改指向模板的设计令牌：配色、圆角、动效、夜间模式全部跟论坛一致 ---- */
:root.kai-in-theme {
	--kai-primary: var(--brand);
	--kai-primary-strong: var(--ink);
	--kai-primary-hover: var(--soft-ink);
	--kai-primary-text: var(--ink);
	--kai-primary-soft: var(--soft);
	--kai-primary-line: color-mix(in srgb, var(--brand) 40%, var(--line));
	--kai-ring: color-mix(in srgb, var(--brand) 28%, transparent);
	--kai-bg: var(--bg);
	--kai-surface: var(--surface);
	--kai-surface-2: var(--hover);
	--kai-surface-3: var(--line);
	--kai-border: var(--line);
	--kai-line: var(--line);
	--kai-text: var(--text-2);
	--kai-heading: var(--text);
	--kai-text-2: var(--text-2);
	--kai-muted: var(--text-3);
	--kai-ok: var(--ok); --kai-ok-bg: var(--ok-soft);
	--kai-warn: var(--warn); --kai-warn-bg: var(--warn-soft); --kai-warn-bd: var(--warn-line);
	--kai-err: var(--danger); --kai-err-bg: var(--danger-soft); --kai-err-bd: var(--danger-soft);
	--kai-radius: var(--r-lg); --kai-radius-sm: var(--r-sm); --kai-radius-xs: 6px;
	--kai-shadow: var(--shadow-sm); --kai-shadow-lift: var(--shadow-pop);
	--kai-ease: var(--ease); --kai-dur: var(--dur-2);
	/* 手机宽度下抽屉和标题条按顶栏高度定位，换成模板的顶栏 */
	--kai-top: var(--top-h);
}

/* ---- 二、布局：这一页不跟着页面滚，滚动只发生在会话栏和消息区里面 ---- */
/* 插件模板够不到外面的 .klp-app / .klp-main，用 :has 认出这一页 */
body:has(.klp-kai) .klp-app { height: 100vh; min-height: 0; overflow: hidden; }
body:has(.klp-kai) .klp-main { padding: 0; min-height: 0; overflow: hidden; }
body:has(.klp-kai) .klp-main > .wp, body:has(.klp-kai) .klp-main > #wp { height: 100%; }
/* 页脚在这一页没有位置：整屏都给对话 */
body:has(.klp-kai) .klp-foot { display: none; }
.klp-kai { height: 100%; }
/* 高度改成吃满内容区。选择器带上 :root.kai-in-theme 是为了压过 kai.css 里
   .kai-vh .kai-shell 那条兜底（不认 dvh 的老内核会挂上 .kai-vh） */
:root.kai-in-theme .kai-shell {
	height: 100%; max-width: none; margin: 0; padding: 0 24px;
	grid-template-columns: 220px minmax(0, 1fr);
}

/* ---- 三、几处写死 #fff 的地方 ---- */
/* 主按钮和发送键跟模板的 .k-btn-pri 一致（浅色近黑、夜间近白），
   不然夜间模式下点缀色本身就亮，上面压白字读不出来 */
:root.kai-in-theme .kai-btn,
:root.kai-in-theme .kai-btn:hover { background: var(--text); border-color: var(--text); color: var(--bg); }
:root.kai-in-theme .kai-btn:hover { opacity: .88; }
:root.kai-in-theme .kai-btn.ghost { background: transparent; color: var(--text-2); border-color: var(--line); opacity: 1; }
:root.kai-in-theme .kai-btn.ghost:hover { background: var(--hover); color: var(--text); }
:root.kai-in-theme .kai-btn.danger { background: var(--danger); border-color: var(--danger); color: #fff; }
:root.kai-in-theme .kai-send { background: var(--text); color: var(--bg); }
:root.kai-in-theme .kai-send:hover { background: var(--text); opacity: .88; }
/* 帕帕的头像和开场白那块方形标记是点缀色渐变，字改成底色，两种主题都读得清 */
:root.kai-in-theme .kai-avatar,
:root.kai-in-theme .kai-hello .mark { color: var(--bg); }
/* 「我的积分」（klpbbs_ai:wallet）在主题里就是一张普通的滚动页，
   .klp-main 已经有留白了，kai-wrap 自己那份去掉 */
.klp-kai-page .kai-wrap { max-width: 820px; margin: 0; padding: 0; }

/* 开放平台（klpbbs_new_api）嵌在设置区里的「我的授权」：knapi.css 用「:root, .knapi-embed」声明浅色变量，
   夜间只改了 :root，嵌入块自己那份浅色变量就一直生效，夜间成了一大块白底。
   这里把它的变量映射到本模板的令牌，跟着 html[data-theme] 走；html 前缀是为了比 .knapi-embed 多一级 */
html .knapi-embed {
	--knapi-primary: var(--brand); --knapi-primary-strong: var(--ink); --knapi-primary-hover: var(--ink); --knapi-primary-text: var(--ink); --knapi-primary-soft: var(--soft);
	--knapi-bg: var(--bg); --knapi-surface: var(--surface); --knapi-surface-2: var(--bg); --knapi-border: var(--line); --knapi-border-2: var(--line); --knapi-line: var(--line);
	--knapi-text: var(--text); --knapi-heading: var(--text); --knapi-text-2: var(--text-2); --knapi-muted: var(--text-3); --knapi-faint: var(--text-3);
	--knapi-ok: var(--ok); --knapi-ok-bg: var(--ok-soft); --knapi-ok-bd: var(--line);
	--knapi-warn: var(--warn); --knapi-warn-bg: var(--warn-soft); --knapi-warn-bd: var(--warn-line);
	--knapi-err: var(--danger); --knapi-err-bg: var(--danger-soft); --knapi-err-bd: var(--line); --knapi-danger: var(--danger);
	--knapi-code-inline-bg: var(--hover);
	--knapi-r-sm: var(--r-sm); --knapi-r: var(--r-sm); --knapi-r-lg: var(--r-md); --knapi-r-xl: var(--r-lg);
	--knapi-ring: var(--ring);
	color-scheme: inherit;
}

/* 勋章排序（klpbbs_medal_order，插件模板 extend_common.css 写死了灰底白条、300px 宽） */
.medal-list { width: auto; max-width: 420px; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); overflow: hidden; }
.medal-list li { display: flex; align-items: center; gap: 4px; padding: 8px 12px; border-top: 1px solid var(--line); background: var(--surface); color: var(--text); }
.medal-list li:first-child { border-top: 0; }
.medal-list li:hover { background: var(--hover); }
.medal-list .sortable-dragging { background: var(--surface); box-shadow: var(--shadow-pop); }
.medal-list .sortable-placeholder { background: var(--soft); }
.medal-list .drag-trigger { margin-right: 8px; }
.medal-list img { max-height: 28px; margin-right: 6px; }

/* 头像挂件（sunju_facemall，设置区「头像挂件」）：face.css 是压缩过的一整套白底 + B 站蓝（#00a1d6），
   夜间整块发白。只把底色、文字、边框、强调色换成令牌，布局不动。插件样式表在 plugins.css 之后加载，选择器前加 html 提一级 */
html .sunju_facemall_init, html .sunju_facemall_init button { background: transparent; color: var(--text-2); font-family: var(--font); }
html .sunju_facemall_init a, html .sj_fm_tab ul li, html .sj_fm_facelist_wp .sj_fm_facelist_title, html .sj_fm_pay_name, html .sj_fm_cate div { color: var(--text); }
html .sunju_facemall_wp .sj_fm_nav, html .sunju_facemall_wp .sj_fm_tab, html .sj_fm_final { border-color: var(--line); }
html .sj_fm_nav .sj_fm_nav_a, html .sj_fm_cate div.cur, html .sj_fm_price_btn { background-color: var(--ink); }
html .sj_fm_cate div.cur, html .sj_fm_price_btn { color: var(--bg); }
html .sj_fm_nav .sj_fm_nav_b, html .sj_fm_tab ul li.cur, html .sj_fm_price_box ul li.active, html .sj_fm_point a, html .sj_fm_price_number { color: var(--ink); }
html .sj_fm_tab ul li.cur, html .sj_fm_price_box ul li.active { border-color: var(--ink); }
html .sunju_facemall_wp .sj_fm_headimg, html .sj_fm_facelist .sj_fm_facelist_wp, html .sj_fm_price_box ul li { border-color: var(--line); }
html .sj_fm_facelist .sj_fm_facelist_wp { border-radius: var(--r-md); background: var(--surface); transition: border-color var(--dur-1) var(--ease-io); }
html .sj_fm_facelist .sj_fm_facelist_wp:hover { border-color: var(--brand); }
html .sj_fm_headimg .sj_fm_change { background: var(--ink); border-color: var(--ink); }
html .sj_fm_change a { color: var(--bg); }
html .sj_fm_headimg .sj_fm_drop { background: var(--surface); border-color: var(--line); }
html .sj_fm_drop span { color: var(--text-2); }
html .sj_fm_headimg .sj_fm_drop_not span { color: var(--text-3); }
html .sj_fm_pay { background: var(--bg); }
/* 页头那句「目前本功能仅支持手机版」：新模板在楼层、名片、空间头部叠了挂件（klp_avatar_frame），这里不成立了；旧版风格还是看不到，所以不改插件模板 */
h2:has(+ .sunju_facemall_init) { display: none; }
html .sj_fm_price_disabled { background: var(--line); color: var(--text-3); }
