/* ===== 行者国乐·知库 · 共享样式 ===== */
:root{
  --bg:#f5f6fa; --card:#ffffff; --ink:#1f2329; --sub:#6b7280;
  --line:#e6e8ee; --brand:#6d4aff; --brand-2:#4f8cff; --brand-bg:#efecff;
  --green:#16a34a; --red:#dc2626; --amber:#d97706;
  --radius:14px; --shadow:0 4px 20px rgba(16,24,40,.06);
  --maxw:860px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg); color:var(--ink);
  font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.7; font-size:15px; -webkit-font-smoothing:antialiased;
}
a{color:var(--brand-2);text-decoration:none}
a:hover{text-decoration:underline}
button{font-family:inherit;cursor:pointer;border:none;border-radius:10px;font-size:15px;transition:.15s}
.btn{background:var(--brand);color:#fff;padding:11px 22px;font-weight:600}
.btn:hover{filter:brightness(1.08)}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{background:#f3f4f8}
input,textarea,select{
  width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;
  font-size:15px;font-family:inherit;background:#fff;color:var(--ink);outline:none;transition:.15s;
}
input:focus,textarea:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(109,74,255,.12)}
.field{margin-bottom:16px}
.field label{display:block;font-weight:600;margin-bottom:6px;font-size:14px}
.field .hint{color:var(--sub);font-size:13px;margin-top:5px}
.center-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.card-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);max-width:var(--maxw);width:100%;padding:36px}
.card-box h1{font-size:24px;margin-bottom:6px}
.card-box .sub{color:var(--sub);margin-bottom:24px;font-size:14px}
.brand-tag{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--brand);margin-bottom:18px}
.brand-tag .dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-2))}
.preset-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.preset{padding:7px 14px;border:1px solid var(--line);border-radius:999px;font-size:13px;background:#fff;cursor:pointer}
.preset:hover{border-color:var(--brand);color:var(--brand)}
.note{background:#eef0ff;border:1px solid #dde1ff;border-radius:10px;padding:12px 14px;font-size:13px;color:#4a3fb0;margin-bottom:18px}
.err{color:var(--red);font-size:13px;margin-top:10px;min-height:18px}
.ok-msg{color:var(--green);font-size:13px;margin-top:10px}

/* ===== 主应用布局（桌面双栏 / 手机单栏+底部Tab） ===== */
.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}
.topbar{background:var(--card);border-bottom:1px solid var(--line);padding:10px 16px;display:flex;align-items:center;gap:10px;flex-shrink:0}
.topbar .logo{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--brand-2));display:flex;align-items:center;justify-content:center;color:#fff;font-size:17px;flex-shrink:0}
.topbar .title{font-weight:700;font-size:16px;white-space:nowrap}
.topbar .right{margin-left:auto;display:flex;gap:8px}
.topbar .right button{padding:7px 14px;font-size:14px}
.main{flex:1;display:flex;min-height:0}

/* 左：知识库面板 */
.kb-panel{width:320px;min-width:280px;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;transition:width .2s}
.kb-head{padding:14px 16px;border-bottom:1px solid var(--line);flex-shrink:0}
.kb-head .kb-title{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px}
.kb-head .kb-sub{color:var(--sub);font-size:12.5px;margin-top:2px}
.kb-body{flex:1;overflow-y:auto;padding:8px}
.doc-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;font-size:14px}
.doc-item:hover{background:#f5f5fa}
.doc-item.active{background:var(--brand-bg);color:var(--brand)}
.doc-item .ic{width:30px;height:30px;border-radius:8px;background:#eef0ff;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.doc-item .info{flex:1;min-width:0}
.doc-item .t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-item .s{font-size:12px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-item .tag{font-size:11px;color:var(--sub);background:#f1f2f6;padding:1px 8px;border-radius:999px;flex-shrink:0}

/* 知识库空状态 */
.kb-empty{padding:40px 20px;text-align:center;color:var(--sub);font-size:13px}

/* 原文阅读视图 */
.reader{flex:1;overflow-y:auto;background:var(--card);display:flex;flex-direction:column;min-height:0}
.reader-top{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-shrink:0}
.reader-top .back{background:none;color:var(--brand);font-size:14px;padding:4px 8px}
.reader-top .rt{font-weight:700;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.reader-body{flex:1;overflow-y:auto;padding:18px 22px}
.reader-body .chunk{margin-bottom:18px;padding:14px 16px;background:#fafafd;border:1px solid var(--line);border-radius:10px}
.reader-body .chunk.hl{border-color:var(--brand);background:var(--brand-bg)}
.reader-body .chunk .ct{font-weight:600;font-size:13px;color:var(--brand);margin-bottom:6px}
.reader-body .chunk .cc{font-size:14px;white-space:pre-wrap;word-break:break-word}

/* 右：对话面板 */
.chat-panel{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
.chat-body{flex:1;overflow-y:auto;padding:22px 18px 10px}
.chat-inner{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
.msg{display:flex;gap:12px;align-items:flex-start}
.msg .avatar{width:34px;height:34px;border-radius:9px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff}
.msg.user .avatar{background:var(--brand-2)}
.msg.ai .avatar{background:linear-gradient(135deg,var(--brand),var(--brand-2))}
.msg .bubble{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;max-width:75%;line-height:1.75;white-space:pre-wrap;word-break:break-word}
.msg.user{flex-direction:row-reverse}
.msg.user .bubble{background:var(--brand-bg);border-color:#ded9ff;border-radius:12px 4px 12px 12px}
.msg.ai .bubble{border-radius:4px 12px 12px 12px}
.msg.ai .bubble.blink::after{content:'▌';color:var(--brand);animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.source-row{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:6px}
.source-row .s-title{font-size:12px;color:var(--sub)}
.source-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--brand);background:var(--brand-bg);border:1px solid #ded9ff;border-radius:999px;padding:5px 12px;cursor:pointer;width:fit-content}
.source-chip:hover{filter:brightness(.98)}
.chat-input{background:var(--card);border-top:1px solid var(--line);padding:12px 16px;flex-shrink:0}
.chat-input-inner{max-width:760px;margin:0 auto;display:flex;gap:10px;align-items:flex-end}
.chat-input textarea{flex:1;resize:none;max-height:140px;min-height:46px;border-radius:12px;padding:12px 14px}
.send-btn{width:46px;height:46px;border-radius:12px;background:var(--brand);color:#fff;font-size:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.send-btn:hover{filter:brightness(1.08)}
.send-btn:disabled{opacity:.4;cursor:not-allowed}
.banner{max-width:760px;margin:0 auto 16px;background:#fff7e6;border:1px solid #ffe0a3;border-radius:10px;padding:10px 14px;font-size:13px;color:#92600a;display:flex;align-items:center;gap:8px}
.empty-state{text-align:center;color:var(--sub);padding:50px 20px}
.empty-state .big{font-size:40px;margin-bottom:10px}
.empty-state .et{font-size:17px;font-weight:600;color:var(--ink)}
.suggest-chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}
.suggest-chips .chip{padding:8px 14px;background:#fff;border:1px solid var(--line);border-radius:999px;font-size:13px;cursor:pointer}
.suggest-chips .chip:hover{border-color:var(--brand);color:var(--brand)}

/* 手机底部 Tab（窄屏显示） */
.mobile-tabs{display:none;background:var(--card);border-top:1px solid var(--line);flex-shrink:0}
.mobile-tabs .tab{flex:1;padding:10px 0;background:none;font-size:14px;color:var(--sub);display:flex;flex-direction:column;align-items:center;gap:2px}
.mobile-tabs .tab.active{color:var(--brand);font-weight:600}
.mobile-tabs .tab .tic{font-size:17px}

/* 手机「更多」菜单（默认隐藏，窄屏显示 ⋯ 按钮） */
.more-btn{display:none;font-weight:700;line-height:1}
.more-menu{display:none;position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 34px rgba(16,24,40,.16);padding:6px;min-width:190px;z-index:60}
.more-menu.open{display:block}
.mm-email{font-size:12.5px;color:var(--sub);padding:9px 12px 10px;border-bottom:1px solid var(--line);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm-item{display:block;width:100%;text-align:left;background:none;padding:11px 12px;border-radius:9px;font-size:14.5px}
.mm-item:hover{background:#f5f5fa}
.mm-item.mm-danger{color:var(--red)}

/* ===== 响应式：窄屏（手机/平板竖屏） ===== */
@media (max-width: 899px){
  .app{height:100vh;height:100dvh}
  .kb-panel{width:100%;border-right:none}
  .main{display:block}
  .kb-panel,.chat-panel{height:100%}
  .mobile-tabs{display:flex;padding-bottom:env(safe-area-inset-bottom)}
  body[data-tab="chat"] .kb-panel{display:none}
  body[data-tab="kb"] .chat-panel{display:none}
  /* 知识库 Tab 下顶栏只留标题 + ⋯（隐藏次数/新对话，避免误点无效按钮） */
  body[data-tab="kb"] .quota-badge{display:none}
  body[data-tab="kb"] #newChatBtn{display:none}
  .chat-body{padding:14px 14px 8px}

  /* 顶栏：标题占满剩余空间，确保「知库」可见 */
  .topbar{padding:8px 10px;gap:8px}
  .topbar .logo{width:28px;height:28px;font-size:15px}
  .topbar .title{flex:1;min-width:0;font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar .right{position:relative;gap:6px;flex-shrink:0}
  .topbar .right button{padding:7px 11px;font-size:13px}
  .quota-badge{padding:5px 9px !important;font-size:12.5px !important}
  #emailBadge{display:none}
  #redeemBtn,#adminBtn,#logoutBtn{display:none}
  .more-btn{display:inline-block;padding:7px 13px !important}

  /* 消息区：隐藏头像，AI 回复全宽阅读式排版（主流 AI App 样式） */
  .msg{gap:0}
  .msg .avatar{display:none}
  .msg .bubble{max-width:100%;border-radius:12px;padding:12px 15px}
  .msg.ai .bubble{background:transparent;border:none;padding:6px 4px;max-width:100%}
  .msg.user .bubble{max-width:86%;border-radius:14px 14px 14px 4px;padding:11px 14px}

  /* 输入区适配安全区 */
  .chat-input{padding:8px 10px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}
  /* iOS：输入框字号 <16px 聚焦时会自动放大页面，统一提到 16px */
  input,textarea,select{font-size:16px}
  .chat-input textarea{min-height:44px;padding:11px 12px}
  .send-btn{width:44px;height:44px}
  .reader-body{padding:14px 12px}
  .banner{font-size:12.5px}
  /* 知识库面板标题完整显示（不截断，放不下就换行） */
  .kb-head .kb-title{flex-wrap:wrap;word-break:break-all}
}

/* ===== 管理后台响应式 ===== */
@media (max-width: 640px){
  .admin-layout{padding:14px 10px}
  .card-box{padding:18px 14px}
  .card-box h1{font-size:20px}
  .card-box .sub{font-size:13px;margin-bottom:16px}
  .tabs{margin-bottom:14px;gap:2px}
  .tabs button{padding:9px 11px;font-size:14px}
  /* 数据中心 4 列卡片 → 2 列 */
  #statsPane .cards{grid-template-columns:repeat(2,1fr) !important;gap:8px !important}
  #statsPane .cd{padding:12px !important}
  #statsPane .cd div:last-child{font-size:20px !important}
  /* 用户详情网格 → 单列 */
  .detail-box div[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr !important}
  /* 列表行允许换行，按钮不被挤出屏幕 */
  .doc-row{flex-wrap:wrap;gap:6px 10px}
  .doc-row > div:last-child{flex-shrink:0}
}

/* ===== 后台管理页 ===== */
.admin-layout{min-height:100vh;padding:28px 16px}
.admin-box{max-width:720px;margin:0 auto}
.tabs{display:flex;gap:6px;margin-bottom:20px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{background:none;border:none;padding:10px 16px;color:var(--sub);border-bottom:2px solid transparent;font-size:15px;border-radius:0;white-space:nowrap}
.tabs button.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.kv{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px}
.kv .v{color:var(--sub);font-family:monospace}
.upload-box{border:2px dashed var(--line);border-radius:12px;padding:26px;text-align:center;color:var(--sub);cursor:pointer;transition:.15s}
.upload-box:hover,.upload-box.drag{border-color:var(--brand);color:var(--brand);background:var(--brand-bg)}
.doc-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line);font-size:14px}
.doc-row .t{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-row .s{color:var(--sub);font-size:12.5px}
.doc-row .del{background:none;color:var(--red);font-size:13px;padding:4px 10px}
