:root{
  --bg:#f1eee8;--paper:#fbfaf7;--ink:#17191f;--muted:#7d7b75;--line:#d9d4ca;
  --accent:#7b3429;--accent2:#1d5c52;--dark:#17191f;--safeB:env(safe-area-inset-bottom);
  --safeT:env(safe-area-inset-top)
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC",sans-serif}
body{min-height:100vh}button,input,textarea{font:inherit}.hidden{display:none!important}
#app{max-width:780px;margin:auto;min-height:100vh;padding-bottom:calc(84px + var(--safeB))}
.topbar{height:calc(68px + var(--safeT));padding:calc(10px + var(--safeT)) 16px 8px;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;background:rgba(241,238,232,.92);backdrop-filter:blur(18px);border-bottom:1px solid rgba(217,212,202,.7)}
.brand{display:flex;gap:10px;align-items:center}.seal{width:36px;height:36px;border:1px solid var(--accent);color:var(--accent);display:grid;place-items:center;border-radius:9px;font:700 20px "Songti SC",serif}
.brand b{display:block;font:700 19px "Songti SC",serif}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.iconBtn{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:8px 10px}
main{padding:12px 16px 26px}.loginView{min-height:calc(100vh - 110px);display:flex;flex-direction:column;justify-content:center;gap:20px}.hero{text-align:center}.heroSeal{width:82px;height:82px;border:1px solid var(--accent);border-radius:20px;margin:auto;display:grid;place-items:center;color:var(--accent);font:700 46px "Songti SC",serif}.hero h1{font:700 29px/1.3 "Songti SC",serif}.hero p{color:var(--muted)}
.panel{background:rgba(251,250,247,.88);border:1px solid var(--line);border-radius:16px;padding:15px;margin:12px 0}.loginPanel{max-width:480px;width:100%;margin:0 auto}.loginPanel label{font-size:12px;color:var(--muted)}input,textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:11px;padding:12px;outline:none}input:focus,textarea:focus{border-color:#ad786d;box-shadow:0 0 0 2px rgba(123,52,41,.08)}
.primary{border:0;background:var(--dark);color:#fff;border-radius:11px;padding:13px 15px;font-weight:700}.loginPanel .primary{width:100%;margin-top:10px}.soft{border:1px solid var(--line);background:#fff;border-radius:10px;padding:12px}.danger{border:1px solid #d8aaa3;background:#fff5f3;color:#a13c31;border-radius:10px;padding:12px}.dangerPanel{text-align:center}
.hint{font-size:11px;color:var(--muted);line-height:1.6}.statusStrip{display:flex;gap:6px;overflow:auto;padding:2px 0 8px}.cap{white-space:nowrap;border:1px solid var(--line);border-radius:999px;background:#fff;padding:5px 8px;font-size:10px}.cap.ok{color:#206750;border-color:#a8cdbf;background:#f0faf6}.cap.no{color:#9b4b40;background:#fff3f1}
.view{display:none}.view.active{display:block}.heroMini{padding:24px 4px 13px}.eyebrow{font-size:10px;letter-spacing:.18em;color:var(--accent);font-weight:700}.heroMini h2,.pageHead h2{font:700 28px/1.35 "Songti SC",serif;margin:8px 0}.heroMini p,.pageHead p{color:var(--muted);line-height:1.7;margin:0}.pageHead{padding:14px 3px 4px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px;text-align:center}.stat b{font-size:25px}.stat span{display:block;font-size:10px;color:var(--muted);margin-top:3px}
.sectionTitle{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.sectionTitle span{font-size:10px;color:var(--muted)}.linkBtn{border:0;background:none;color:var(--accent);font-size:12px}.fileInput{display:none}
.uploadItem,.docCard,.resultCard{border:1px solid var(--line);background:#fff;border-radius:13px;padding:12px;margin:9px 0}.uploadTop,.docTop{display:flex;justify-content:space-between;gap:10px}.uploadTop b,.docTop b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{height:6px;background:#ebe6dd;border-radius:999px;margin:10px 0;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--accent2);border-radius:999px;transition:.2s}.meta{font-size:10px;color:var(--muted);line-height:1.55}.tag{display:inline-block;border:1px solid var(--line);background:#f6f3ed;border-radius:999px;padding:3px 7px;margin:2px;font-size:10px}.status{font-size:10px;border-radius:999px;padding:3px 7px;background:#eee}.status.ready{background:#eaf6f0;color:#246851}.status.indexing{background:#fff5dc;color:#8b6a14}.status.stored{background:#eef2f7;color:#516477}.status.error{background:#fff0ee;color:#9d3d32}
.searchRow,.askBox{display:grid;grid-template-columns:1fr auto;gap:8px}.searchRow button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:0 12px}.treeGroup{margin:12px 0}.treeGroup h3{font:700 20px "Songti SC",serif;margin:6px}.treeSub{border-left:2px solid #cdbeb0;padding-left:11px;margin:8px}.treeSub b{font-size:13px}.treeDocs{margin-top:6px}.treeDoc{font-size:12px;padding:5px 0;color:#484842}
.chat{min-height:45vh}.bubble{max-width:92%;border-radius:15px;padding:12px 13px;margin:9px 0;line-height:1.7;font-size:14px;white-space:pre-wrap}.bubble.user{margin-left:auto;background:var(--dark);color:#fff}.bubble.ai{background:#fff;border:1px solid var(--line)}.sources{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);font-size:11px;color:var(--muted)}.composer{position:sticky;bottom:calc(70px + var(--safeB));background:rgba(241,238,232,.95);backdrop-filter:blur(16px);padding:8px 0;display:grid;grid-template-columns:1fr auto;gap:8px}.composer textarea{resize:none}.rules{padding-left:20px;color:#56544f;line-height:1.8;font-size:13px}
.nav{position:fixed;z-index:30;bottom:0;left:50%;transform:translateX(-50%);width:min(780px,100%);height:calc(70px + var(--safeB));padding:7px 10px var(--safeB);display:grid;grid-template-columns:repeat(5,1fr);background:rgba(247,245,240,.96);backdrop-filter:blur(20px);border-top:1px solid var(--line)}.nav button{border:0;background:none;color:#8b877f;display:grid;place-items:center;gap:1px}.nav button span{font:700 20px "Songti SC",serif}.nav button b{font-size:9px}.nav button.active{color:var(--accent)}
#toast{position:fixed;z-index:100;left:50%;bottom:calc(92px + var(--safeB));transform:translateX(-50%) translateY(20px);opacity:0;background:#17191f;color:#fff;padding:9px 13px;border-radius:10px;font-size:12px;transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(min-width:650px){.stats{grid-template-columns:repeat(4,1fr)}}
