:root { --pri:#1f4e79; --bg:#f5f7fa; --card:#fff; --warn:#b7791f; --ok:#276749; --danger:#c53030; }
* { box-sizing:border-box; }
body { margin:0; font-family:"Microsoft YaHei","PingFang SC",sans-serif; background:var(--bg); color:#222; }
.topnav { display:flex; align-items:center; gap:16px; background:var(--pri); color:#fff; padding:10px 20px; flex-wrap:wrap; }
.topnav a { color:#e8f0f8; text-decoration:none; }
.topnav .brand { font-weight:bold; font-size:18px; }
.topnav .links { display:flex; gap:14px; flex:1; flex-wrap:wrap; }
.userbox { display:flex; align-items:center; gap:10px; font-size:13px; }
.userbox span { color:#fff; font-weight:500; }
.userbox a { color:#fff; background:rgba(255,255,255,.15); padding:4px 10px; border-radius:4px; text-decoration:none; }
.userbox a:hover { background:rgba(255,255,255,.28); }
.userbox button { background:#c53030; color:#fff; border:0; padding:4px 12px; border-radius:4px; cursor:pointer; font-size:13px; }
.userbox button:hover { background:#9b2c2c; }
.page { max-width:1080px; margin:0 auto; padding:18px; }
h1,h2,h3 { color:var(--pri); }
.card { background:var(--card); border-radius:8px; padding:16px 20px; margin-bottom:14px; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.narrow { max-width:640px; margin-left:auto; margin-right:auto; }
.center { text-align:center; }
.hero { text-align:center; padding:30px 0 10px; }
.bigsearch { display:flex; gap:8px; justify-content:center; margin:18px 0; flex-wrap:wrap; }
.bigsearch input[name=q] { width:min(560px,80%); padding:12px 14px; font-size:16px; border:2px solid var(--pri); border-radius:6px; }
.bigsearch select { padding:8px; border-radius:6px; border:1px solid #ccc; }
.quicklinks { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-bottom:10px; }
.quicklinks a { padding:6px 14px; background:#e8f0f8; color:var(--pri); border-radius:16px; text-decoration:none; font-size:14px; }
.quicklinks a:hover { background:var(--pri); color:#fff; }
.stats { text-align:center; color:#555; margin:10px 0 22px; }
.stat { margin:0 10px; }
label { display:block; margin:10px 0; font-size:14px; }
input[type=text],input[type=password],input[type=file],input[type=number],textarea,select {
  width:100%; padding:8px 10px; border:1px solid #cbd5e0; border-radius:5px; font-size:14px; margin-top:4px; }
textarea { font-family:inherit; }
button, .btn { background:var(--pri); color:#fff; border:0; padding:9px 18px; border-radius:5px; cursor:pointer;
  font-size:14px; text-decoration:none; display:inline-block; }
/* 上面的 display:inline-block 会盖掉浏览器对 [hidden] 的 display:none，
   导致「停止」「直接存到桌面」等按钮在不需要时仍显示 */
[hidden] { display:none !important; }
button:hover, .btn:hover { filter:brightness(1.1); }
button.primary { background:var(--pri); }
button.danger, .btn.danger { background:var(--danger); }
.flash { padding:10px 14px; border-radius:6px; margin-bottom:12px; font-size:14px; }
.flash.ok { background:#e6f4ea; color:var(--ok); }
.flash.error { background:#fdecea; color:var(--danger); }
.flash.warn { background:#fdf6e3; color:var(--warn); }
.badge { display:inline-block; padding:2px 8px; border-radius:10px; font-size:12px; margin-left:6px; }
.badge.ok { background:#e6f4ea; color:var(--ok); }
.badge.warn { background:#fdecea; color:var(--danger); }
.badge.lvl { background:#e8f0f8; color:var(--pri); }
.result { background:var(--card); border-radius:8px; padding:14px 18px; margin-bottom:10px; box-shadow:0 1px 2px rgba(0,0,0,.06); }
.r-title { font-size:16px; margin-bottom:6px; }
.r-title a { color:var(--pri); text-decoration:none; font-weight:bold; }
.art { color:var(--warn); margin-left:8px; }
.snippet { margin:6px 0; line-height:1.7; }
.meta { color:#777; }
.result-meta { color:#555; }
.empty { color:#888; }
.list li { margin:6px 0; }
.list a { color:var(--pri); text-decoration:none; }
.list small { color:#777; display:block; }
.kv { border-collapse:collapse; width:100%; font-size:14px; }
.kv th { text-align:left; color:#555; width:7em; padding:6px 8px; background:#f0f4f8; }
.kv td { padding:6px 8px; }
.chunk { background:var(--card); border-left:3px solid var(--pri); border-radius:0 6px 6px 0; padding:10px 16px; margin:8px 0; }
.chunk p { line-height:1.9; margin:4px 0; white-space:pre-wrap; }
.c-head { font-weight:bold; color:var(--pri); }
.doc-head .badges { margin:6px 0; }
.qa-answer .answer-text { white-space:pre-wrap; line-height:1.9; }
.reflist li { margin:6px 0; }
.reflist a { color:var(--pri); }
.review-point.miss { border-left:4px solid var(--danger); }
.review-point blockquote { margin:8px 0; padding:6px 12px; background:#f7fafc; border-left:3px solid #cbd5e0; }
.grid { width:100%; border-collapse:collapse; background:var(--card); font-size:13px; }
.grid th,.grid td { border-bottom:1px solid #e2e8f0; padding:8px 10px; text-align:left; vertical-align:top; }
.grid th { background:var(--pri); color:#fff; }
.st-ready { color:var(--ok); } .st-failed { color:var(--danger); } .st-parsing,.st-pending { color:var(--warn); }
.editform,.ops form { display:inline-flex; gap:4px; margin:2px; align-items:center; }
.editform select,.ops select { padding:3px 5px; font-size:12px; width:auto; margin:0; }
.editform button,.ops button { padding:3px 9px; font-size:12px; }
.inline { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:8px 0; }
.inline input,.inline select { width:auto; margin:0; }
.login-card { max-width:420px; margin:10vh auto; background:var(--card); padding:34px; border-radius:10px; box-shadow:0 4px 18px rgba(0,0,0,.12); text-align:center; }
.login-card .sub { color:#778; margin-top:0; }
.hint { color:#667; font-size:13px; }
.check input { width:auto; display:inline; }
#llm-result,#crawl-result { display:block; margin-top:6px; }
.adminbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
.adminbar .inline { margin:0; }

/* ===== 登录页美化 ===== */
.login-wrap { min-height: calc(100vh - 60px); display:flex; align-items:center; justify-content:center; padding: 20px; }
.login-card-v2 { width: 100%; max-width: 400px; background: var(--card); border-radius: 14px;
  padding: 40px 36px; box-shadow: 0 8px 30px rgba(31,78,121,.12); text-align:center; }
.login-logo { font-size: 44px; margin-bottom: 8px; }
.login-card-v2 h1 { color: var(--pri); margin: 0 0 6px; font-size: 24px; }
.login-card-v2 .sub { color: #888; font-size: 13px; margin: 0 0 24px; }
.login-form .field { text-align: left; margin-bottom: 16px; }
.login-form .field label { display:block; font-size: 13px; color: #555; margin-bottom: 6px; font-weight: 600; }
.login-form .field input { width: 100%; padding: 11px 14px; border: 1.5px solid #d8e0ea; border-radius: 8px;
  font-size: 15px; transition: border-color .2s, box-shadow .2s; box-sizing: border-box; }
.login-form .field input:focus { outline: none; border-color: var(--pri); box-shadow: 0 0 0 3px rgba(31,78,121,.12); }
.login-btn { width: 100%; padding: 12px; font-size: 16px; border-radius: 8px; margin-top: 6px; }

/* ===== 首页功能卡片网格 ===== */
.feature-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; margin: 20px 0; }
.feature-card { display:block; background: var(--card); border-radius: 10px; padding: 18px; text-decoration:none;
  color: #222; box-shadow: 0 1px 4px rgba(0,0,0,.07); border-top: 3px solid var(--pri); transition: transform .15s, box-shadow .15s; }
.feature-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(31,78,121,.15); }
.feature-card .fc-icon { font-size: 26px; margin-bottom: 8px; }
.feature-card .fc-title { font-weight: 700; color: var(--pri); font-size: 15px; margin-bottom: 4px; }
.feature-card .fc-desc { font-size: 12.5px; color: #777; line-height: 1.5; }

/* ============ 自适应：手机 / 平板 / 桌面 ============ */
html, body { max-width: 100%; overflow-x: hidden; }
img { max-width: 100%; height: auto; }

/* 平板：≤1024px */
@media (max-width: 1024px) {
  .page { max-width: 100%; padding: 14px; }
  .grid { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .kv { font-size: 13px; }
}

/* 手机：≤640px */
@media (max-width: 640px) {
  body { font-size: 15px; }
  .topnav { padding: 10px 12px; gap: 8px; }
  .topnav .brand { font-size: 16px; }
  .topnav .links { gap: 10px; font-size: 13px; flex-basis: 100%; }
  .userbox { font-size: 12px; width: 100%; justify-content: flex-end; }
  .page { padding: 12px; }
  .card { padding: 12px; border-radius: 6px; }
  .hero { padding: 18px 0 6px; }
  .hero h1 { font-size: 21px; }
  h1 { font-size: 21px; } h2 { font-size: 18px; } h3 { font-size: 16px; }

  .bigsearch { flex-direction: column; align-items: stretch; gap: 8px; }
  .bigsearch input[name=q] { width: 100%; font-size: 16px; }
  .bigsearch select, .bigsearch button { width: 100%; padding: 11px; }

  .quicklinks a { font-size: 13px; padding: 5px 12px; }
  .stat { display: inline-block; margin: 3px 6px; }

  .grid { display: block; overflow-x: auto; font-size: 12px; white-space: nowrap; }
  .grid th, .grid td { padding: 6px 8px; }

  /* 著录表在手机上改为纵向堆叠 */
  .kv, .kv tbody, .kv tr, .kv th, .kv td { display: block; width: auto; }
  .kv th { background: transparent; color: #333; padding: 4px 8px 0; }
  .kv td { padding: 2px 8px 8px; }

  .adminbar, .adminbar .inline { flex-direction: column; align-items: stretch; }
  .adminbar .btn, .adminbar button, .inline button { width: 100%; text-align: center; }
  .inline input, .inline select { width: 100% !important; }
  .editform, .ops { flex-wrap: wrap; }
  .editform select, .ops select { width: auto; }

  .chunk { padding: 8px 12px; }
  .result { padding: 12px; }
  .login-card { margin: 5vh 12px; padding: 22px; }
  button, .btn { padding: 10px 16px; }
}

/* 超小屏：≤380px */
@media (max-width: 380px) {
  .topnav .links a { font-size: 12px; }
  .hero h1 { font-size: 19px; }
}

/* ============ AI 问答 · 聊天界面 ============ */
.chat-layout { display:flex; gap:14px; align-items:stretch; }
.chat-side { width:220px; flex:none; background:var(--card); border-radius:8px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,.08); display:flex; flex-direction:column; }
.chat-side .btn-new-chat { width:100%; padding:9px 10px; border-radius:6px; margin-bottom:10px; }
.chat-side .convs { flex:1; overflow-y:auto; max-height:56vh; }
.conv-item { display:flex; align-items:center; gap:4px; border-radius:6px; padding:6px 8px; margin:2px 0; }
.conv-item:hover { background:#eef3f8; }
.conv-item.active { background:#e3edf6; }
.conv-item .conv-title { flex:1; color:var(--pri); text-decoration:none; font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.conv-item .conv-del { background:transparent; color:#a0aec0; padding:2px 6px; font-size:12px; border-radius:4px; }
.conv-item .conv-del:hover { background:#fdecea; color:var(--danger); }
.side-hint { margin-top:10px; font-size:12px; }

.chat-main { flex:1; min-width:0; display:flex; flex-direction:column; }
.chat-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.chat-head h2 { margin:0; }
.chat-log { flex:1; overflow-y:auto; max-height:58vh; min-height:220px; padding:10px 4px; scroll-behavior:smooth; }

.msg { display:flex; gap:10px; margin:12px 0; align-items:flex-start; }
.msg.me { flex-direction:row-reverse; }
.msg .avatar { flex:none; width:34px; height:34px; border-radius:50%; background:var(--pri); color:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; }
.msg.me .avatar { background:#5a7ea6; }
.msg .bubble { max-width:min(760px,86%); min-width:0; background:#f2f5f9; border-radius:10px; padding:10px 14px; }
.msg.me .bubble { background:#dcebff; }

/* 服务端渲染的历史消息在 JS 接管前是一整段纯文本：先按 pre-wrap 显示，
   JS 重排后子元素自带 white-space:normal，不会多出空行。 */
.chat-log .md { white-space:pre-wrap; }
.chat-log .md > * { white-space:normal; }

/* 长网址 / 长法名 / 长英文标识 / 统一社会信用代码：允许在任意字符处折行。
   没有这条，手机上一个 400px 的 URL 会把整个气泡撑宽，被 body 的
   overflow-x:hidden 直接裁掉，看起来就是"回答右边少了一截"。 */
.bubble .md, .bubble .md p, .bubble .md li, .bubble .md .sec,
.bubble .md a, .bubble .md code, .bubble .md strong,
.thinking pre, .trace .t-label, .trace .t-detail,
.stage-pill, .badge, .de-title, .de-sub, .de-tip, .de-dl,
.reflist li, .reflist small, .chunk p, .sug {
  overflow-wrap:anywhere;
}

.bubble .md p { margin:6px 0; line-height:1.85; white-space:normal; word-break:break-word; }
.bubble .md .sec { font-weight:700; color:var(--pri); margin:12px 0 4px; }
.bubble .md .sec-label { font-weight:700; color:var(--pri); margin-right:2px; }
.bubble .md ul,.bubble .md ol { margin:6px 0 6px 20px; padding:0; }
.bubble .md li { margin:3px 0; line-height:1.8; }
.bubble .md code { background:#e8edf3; padding:1px 5px; border-radius:4px; font-size:13px; }
.bubble .md a { color:var(--pri); }
.cite-tag { display:inline-block; background:#e6f0fa; color:var(--pri); border-radius:4px; padding:0 6px; font-size:12px; margin-left:2px; white-space:nowrap; }

.stage-pill { display:inline-block; background:#eef3f8; color:#4a5b74; border-radius:14px; padding:4px 12px; font-size:13px; margin:2px 0 6px; }
.thinking { margin:4px 0 8px; background:#f7f9fb; border:1px dashed #cbd5e0; border-radius:6px; padding:4px 10px; font-size:12.5px; }
.thinking summary { cursor:pointer; color:#5a6b85; }
.thinking pre { white-space:pre-wrap; word-break:break-word; max-height:220px; overflow:auto; color:#556; margin:6px 0; }

/* 推理轨迹：智能体每一步做了什么、花了多久，一眼可查 */
.trace { margin:4px 0 8px; background:#f6faf7; border:1px solid #d6e9dd; border-radius:6px; padding:4px 10px; font-size:12.5px; }
.trace summary { cursor:pointer; color:#3f6b53; }
.trace ol { margin:6px 0 6px 4px; padding-left:0; list-style:none; }
.trace li { display:flex; gap:6px; align-items:baseline; padding:2px 0; border-bottom:1px dashed #e3efe8; }
.trace li:last-child { border-bottom:none; }
.trace li i { font-style:normal; width:16px; flex:none; }
.trace .t-label { color:#2f4f3f; font-weight:600; flex:none; }
.trace .t-detail { color:#6b7f74; flex:1; overflow:hidden; text-overflow:ellipsis; }
.trace .t-ms { color:#9aa8a0; font-size:11.5px; flex:none; }
.trace li.step-fill_laws .t-label, .trace li.step-online .t-label { color:#1a6b8a; }
.trace li.step-revise .t-label { color:#8a5a1a; }

.badges { display:flex; flex-wrap:wrap; align-items:center; gap:4px 0; margin:6px 0 2px; }
.badges .badge { margin:0 6px 0 0; max-width:100%; }
.badges .conf { font-weight:600; }
.cites { margin:8px 0; }
.cites > summary { cursor:pointer; color:var(--pri); font-size:13.5px; }
.cites .chunk { background:#fbfcfe; }
.reflist { margin:6px 0 6px 20px; }
.reflist li { margin:4px 0; font-size:13px; }
.reflist small { color:#777; display:block; }

.sugs { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0 2px; }
.sug { background:#fff; border:1px solid #cfd9e6; color:var(--pri); border-radius:16px; padding:5px 12px; font-size:13px; cursor:pointer; }
.sug:hover { background:var(--pri); color:#fff; }

.msg-ops { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.msg-ops .op { background:transparent; color:#67758c; border:1px solid #dbe2ea; padding:2px 10px;
  font-size:12px; border-radius:5px; white-space:nowrap; }
.msg-ops .op:hover { color:var(--pri); border-color:var(--pri); }
.msg-ops .op.on { background:#e6f0fa; color:var(--pri); border-color:var(--pri); }

/* 文书导出条：AI 起草了起诉状/协议/申诉状等时，紧跟回答正文显示 */
.doc-export { margin:12px 0 8px; padding:12px 14px; border:1px solid #c7d9ec; border-left:4px solid var(--pri);
  border-radius:8px; background:linear-gradient(180deg,#f4f9ff 0%,#fff 100%); }
.de-head { display:flex; align-items:center; gap:10px; }
.de-icon { font-size:24px; line-height:1; }
.de-meta { min-width:0; }
.de-title { font-size:15px; font-weight:700; color:var(--pri); }
.de-tag { display:inline-block; margin-left:8px; padding:1px 7px; border-radius:10px; font-size:11px;
  font-weight:500; color:var(--ok); background:#e6f4ea; vertical-align:2px; }
.de-sub { margin-top:3px; font-size:12px; color:#66788f; line-height:1.5; }
.de-acts { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.de-dl { font-size:13px; padding:7px 14px; border-radius:6px; cursor:pointer; text-decoration:none;
  display:inline-block; border:1px solid var(--pri); }
.de-dl.primary { background:var(--pri); color:#fff; }
.de-dl.ghost { background:#fff; color:var(--pri); }
.de-dl:hover { filter:brightness(1.08); }
.de-dl[hidden] { display:none; }
.de-tip { margin-top:9px; font-size:12px; color:#7a8798; line-height:1.6; }
.de-tip b { color:var(--pri); }
.dl-form { margin:0; }

.chat-input { display:flex; gap:8px; align-items:flex-end; border-top:1px solid #e2e8f0; padding-top:12px; margin-top:6px; }
.chat-input textarea { flex:1 1 auto; min-width:0; resize:none; min-height:44px; max-height:160px; font-size:15px; }
.chat-input .send { flex:none; }
.chat-input .stop { flex:none; background:var(--danger); }

@media (max-width: 860px) {
  .chat-layout { flex-direction:column; }
  .chat-side { width:100%; }
  .chat-side .convs { max-height:140px; }
  .chat-log { max-height:none; }
  .msg .bubble { max-width:88%; }
}

/* ===== 文档正文排版 ===== */
.doc-body { background: var(--card); border-radius: 10px; padding: 28px 32px;
  line-height: 1.9; font-size: 15.5px; color: #2a2a2a; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.doc-body .doc-heading { font-weight: 700; color: var(--pri); font-size: 17px;
  margin: 22px 0 10px; padding-left: 10px; border-left: 4px solid var(--pri); }
.doc-body .doc-para { margin: 0 0 14px; text-indent: 2em; word-break: break-word; }
.doc-body .doc-para:last-child { margin-bottom: 0; }
@media (max-width: 600px) {
  .doc-body { padding: 18px 16px; font-size: 14.5px; line-height: 1.85; }
  .doc-body .doc-para { text-indent: 2em; }
}

/* ============ AI 问答 · 手机端（≤640px）专门重排 ============
   桌面靠一行 flex 显示的「推理轨迹」在 360~414px 下会被压成窄列：
   步骤名、几十字的说明和耗时挤在同一行，说明被省略号截断、文字折成五六行。
   这里改成两行卡片式：第一行 图标 + 步骤名 + 耗时，第二行整行显示说明。 */
@media (max-width: 640px) {
  .chat-layout { gap:10px; }
  .chat-side { padding:10px; }
  .chat-side .convs { max-height:112px; }
  .side-hint { font-size:11.5px; line-height:1.5; }
  .chat-main { min-width:0; padding:12px 10px; }
  .chat-head h2 { font-size:17px; }
  .chat-main > .hint { font-size:12.5px; line-height:1.65; }
  .chat-log { padding:6px 0; min-height:160px; }

  .msg { gap:8px; margin:10px 0; }
  .msg .avatar { width:28px; height:28px; font-size:14px; }
  .msg .bubble { max-width:calc(100% - 36px); padding:9px 11px; border-radius:9px; min-width:0; }
  .bubble .md p, .bubble .md li { font-size:14.5px; line-height:1.8; }
  .bubble .md .sec { margin:10px 0 3px; }
  .bubble .md ul, .bubble .md ol { margin-left:18px; }
  .bubble .md li { padding-left:2px; }

  /* 推理轨迹：两行布局，说明完整可读，不再被 text-overflow 吃掉 */
  .trace, .thinking { padding:6px 9px; font-size:12.5px; }
  .trace summary, .thinking summary { line-height:1.6; }
  .trace ol { margin:6px 0 2px; }
  .trace li { flex-wrap:wrap; align-items:flex-start; gap:2px 6px; padding:5px 0; }
  .trace li i { width:18px; flex:none; line-height:1.6; }
  .trace .t-label { flex:0 1 auto; line-height:1.6; }
  .trace .t-ms { order:1; margin-left:auto; flex:none; line-height:1.6; }
  .trace .t-detail { order:2; flex:1 0 100%; padding-left:24px;
    overflow:visible; text-overflow:clip; white-space:normal;
    line-height:1.55; color:#5b6f63; }
  .thinking pre { max-height:200px; font-size:12.5px; line-height:1.6; }

  /* 徽标、追问建议、操作按钮：允许换行，按钮文字不再被压成两行 */
  .badges { gap:4px 0; }
  .badges .badge { font-size:11.5px; padding:2px 7px; }
  .msg-ops { gap:6px; }
  .msg-ops .op { min-height:30px; padding:4px 10px; }
  .sug { max-width:100%; white-space:normal; text-align:left; line-height:1.5; }

  /* 文书下载条：按钮整行铺开，手机上更好点 */
  .doc-export { padding:10px; margin:10px 0 6px; }
  .de-head { gap:8px; align-items:flex-start; }
  .de-icon { font-size:20px; }
  .de-title { font-size:14px; line-height:1.5; }
  .de-acts { flex-direction:column; gap:6px; }
  .de-acts .de-dl { width:100%; text-align:center; padding:9px 10px; }
  .de-tip { font-size:11.5px; }
  .cites .chunk { padding:8px 10px; }
  .reflist { margin-left:16px; }

  /* 输入框吸底：长回答时不用一路滚到页尾才能继续追问；
     16px 字号同时避免 iOS Safari 聚焦时自动放大页面 */
  .chat-input { position:sticky; bottom:0; z-index:5; background:var(--card);
    padding:8px 0 calc(8px + env(safe-area-inset-bottom));
    margin-top:8px; box-shadow:0 -8px 14px rgba(255,255,255,.92); }
  .chat-input textarea { font-size:16px; }
  .chat-input .send, .chat-input .stop { padding:10px 14px; }
}

@media (max-width: 380px) {
  .trace .t-detail { padding-left:0; }
  .bubble .md p, .bubble .md li { font-size:14px; }
}

/* ---------- 注册入口 / 就近合作律师推荐 ---------- */
.reg-foot { margin:14px 0 0 !important; text-align:center; line-height:1.7; }
.reg-foot a { color:var(--pri); font-weight:bold; }
.reg-foot small { display:block; color:#98a2b3; font-size:11.5px; }
.login-card-v2 .field small { color:#98a2b3; font-weight:normal; }

.city-pick { display:flex; align-items:center; gap:6px; margin:0 0 0 auto;
  font-size:12.5px; color:#667; white-space:nowrap; }
.city-pick select { width:auto; min-width:150px; margin:0; padding:5px 8px;
  font-size:12.5px; border:1px solid #cbd5e0; border-radius:5px; background:#fff; }

.lawyer-rec { margin-top:14px; border:1px solid #cfe0f0; border-radius:10px;
  background:linear-gradient(180deg,#f4f9ff,#fff); overflow:hidden; min-width:0; }
.lr-head { display:flex; align-items:center; gap:10px; padding:10px 12px;
  background:#eaf3fb; border-bottom:1px solid #cfe0f0; }
.lr-icon { font-size:22px; }
.lr-title { font-weight:bold; color:var(--pri); font-size:14px; }
.lr-sub { font-size:11.5px; color:#667; margin-top:2px; overflow-wrap:anywhere; }
.lr-list { padding:8px 12px; display:grid; gap:8px; }
.lr-item { border:1px solid #e2e8f0; border-radius:8px; padding:9px 11px;
  background:#fff; min-width:0; }
.lr-top { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:5px; }
.lr-top strong { color:var(--pri); font-size:14px; overflow-wrap:anywhere; }
.lr-dist { margin-left:auto; color:var(--ok); font-weight:bold; font-size:12px; white-space:nowrap; }
.lr-line { font-size:12.5px; color:#445; line-height:1.65; overflow-wrap:anywhere; }
.lr-intro { color:#778; }
.lr-foot { padding:8px 12px; border-top:1px dashed #dbe6f0;
  font-size:11px; color:#889; overflow-wrap:anywhere; }

/* 后台：合作律师录入表单 */
.lawyer-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px 14px; }
.lawyer-form label { margin:2px 0; font-size:12.5px; color:#556; }
.lawyer-form label b { color:var(--danger); }
.lawyer-form label.wide { grid-column:1 / -1; }
.lawyer-form .form-actions { grid-column:1 / -1; display:flex; align-items:center;
  gap:10px; flex-wrap:wrap; margin-top:6px; }
.lawyer-form .form-actions .hint { font-size:11.5px; }
.lawyer-form input[type=checkbox] { width:auto; margin:0; }

@media (max-width: 900px) { .lawyer-form { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 640px) {
  .lawyer-form { grid-template-columns:1fr; }
  .city-pick { margin:0; width:100%; }
  .city-pick select { flex:1; min-width:0; }
  .lr-dist { margin-left:0; }
  .lr-list { padding:8px; }
  .lr-item { padding:8px; }
}

/* v9 找回密码 / 手机号 */
.forgot-link { text-align:right; margin:10px 0 0 !important; font-size:12.5px; }
.forgot-link a { color:var(--pri); }
.reset-result { text-align:left; background:#f7f9fc; border:1px solid #d8e0ea;
  border-radius:10px; padding:16px; overflow-wrap:anywhere; }
.reset-result .hint { font-size:12.5px; color:#667085; margin:0 0 8px; }
.temp-pw-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:6px 0 14px; }
.temp-pw-row code { flex:1; min-width:0; background:#fff; border:1px dashed var(--pri);
  border-radius:6px; padding:10px 12px; font-size:17px; font-weight:700;
  letter-spacing:1px; overflow-wrap:anywhere; }
.temp-pw-row .btn.small { padding:9px 12px; font-size:12.5px; }
.reset-result .login-btn { display:block; width:100%; box-sizing:border-box; text-align:center; }
.reset-result .flash { margin:0 0 14px; font-size:12.5px; }
.grid td.ops input[name=phone] { width:120px; }
@media (max-width: 640px) {
  .temp-pw-row code { font-size:15px; letter-spacing:0; }
  .grid td.ops input[name=phone] { width:100%; }
}

/* v10 后台·软件分发：二维码卡片、上传表单、对外地址 */
.sw-base { background:#f7fafc; border:1px solid #dbe4ec; border-radius:8px;
  padding:12px 14px; margin-top:12px; overflow-wrap:anywhere; }
.sw-base-label { display:block; font-size:12px; color:#667085; margin-bottom:4px; }
.sw-base code { display:block; background:#fff; border:1px dashed #a9bed2; border-radius:6px;
  padding:8px 10px; font-size:14px; overflow-wrap:anywhere; }
.sw-base .flash { margin:10px 0 0; font-size:12.5px; }
.sw-base-form { margin-top:10px; flex-wrap:wrap; align-items:flex-end; }
.sw-base-form label { flex:2 1 320px; min-width:0; margin:4px 0; }
.sw-base-form .hint { flex:1 1 100%; }
.sw-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 14px; }
.sw-form .wide, .sw-form .form-actions { grid-column:1/-1; }
.sw-form small.hint { display:block; font-weight:400; }
.sw-card { display:grid; grid-template-columns:220px minmax(0,1fr); gap:18px;
  border:1px solid #dfe7ef; border-radius:10px; padding:16px; margin:14px 0; background:#fff; }
.sw-qr { text-align:center; min-width:0; }
.sw-qr img { width:100%; max-width:200px; height:auto; image-rendering:pixelated;
  border:1px solid #e2e8f0; border-radius:8px; }
.sw-qr-ops { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin-top:10px; }
.sw-qr-ops .btn, .sw-qr-ops button { font-size:12px; padding:6px 9px; }
.sw-info { min-width:0; }
.sw-info h3 { margin:0 0 8px; font-size:17px; overflow-wrap:anywhere; }
.sw-meta { display:flex; flex-wrap:wrap; gap:6px; font-size:12px; color:#4d6072; }
.sw-meta span { background:#eef4fa; border-radius:12px; padding:3px 9px; }
.sw-desc { font-size:13px; line-height:1.7; color:#4a5b6b; white-space:pre-wrap;
  overflow-wrap:anywhere; margin:10px 0; }
.sw-url { margin:8px 0; }
/* 用可换行的 code 而非只读 input：手机端长下载链接能完整显示，不会被框体裁掉 */
.sw-url-text { display:block; width:100%; font-size:12px; padding:8px 10px;
  border:1px solid #d7e0ea; border-radius:6px; background:#f8fafc; color:#315b80;
  overflow-wrap:anywhere; word-break:break-all; user-select:all; }
.sw-file { font-size:11.5px; overflow-wrap:anywhere; }
.sw-actions { display:flex; flex-wrap:wrap; gap:7px; align-items:center; margin-top:10px; }
.sw-actions form { margin:0; }
.sw-actions .btn, .sw-actions button { font-size:12.5px; padding:7px 11px; }
.sw-edit { margin-top:12px; border-top:1px dashed #dce4ec; padding-top:10px; }
.sw-edit summary { cursor:pointer; color:var(--pri); font-size:13px; }
.sw-edit .inline { flex-wrap:wrap; align-items:flex-end; margin-top:8px; }
.sw-edit .inline label { min-width:180px; flex:1; }
@media (max-width: 760px) {
  .sw-card { grid-template-columns:1fr; gap:12px; }
  .sw-qr img { max-width:180px; }
  .sw-form { grid-template-columns:1fr; }
}
@media (max-width: 420px) {
  .sw-card { padding:12px; }
  .sw-qr-ops .btn, .sw-qr-ops button { flex:1 1 44%; }
  .sw-actions .btn, .sw-actions button { flex:1 1 44%; text-align:center; }
  .sw-base-form { display:block; }
}
