:root{--canvas:#f7f6f3;--surface:#fff;--sunken:#f1efe9;--border:#e8e4dc;--ink:#211f1b;--ink-2:#706b62;--ink-3:#a19a8f;--accent:#b4553a;--accent-deep:#93432e;--accent-soft:#f5e3dc;--green:#376b43;--green-soft:#edf4ed;--blue:#2f678e;--blue-soft:#e7f2f8;--yellow:#956400;--yellow-soft:#fbf3db;--purple:#66558d;--purple-soft:#f0ebf7;--ease:cubic-bezier(.16,1,.3,1);--serif:'Noto Serif SC','Songti SC',serif;--sans:'Plus Jakarta Sans','PingFang SC','Microsoft YaHei',sans-serif}
*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{background:var(--canvas);color:var(--ink);font:14px/1.7 var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}.mini-stage{display:none}.app{min-height:100vh}.topbar{position:sticky;top:0;z-index:30;height:70px;padding:0 28px;background:rgba(247,246,243,.88);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none}.brand-mark{width:38px;height:38px;border-radius:11px;background:var(--accent);color:#fff;display:grid;place-items:center;font:600 17px var(--serif);box-shadow:0 7px 20px rgba(180,85,58,.16)}.brand strong{display:block;font:600 16px var(--serif)}.brand small{display:block;color:var(--ink-3);font-size:10.5px}.top-actions{display:flex;align-items:center;gap:10px}.campus-switch{padding:3px;background:var(--sunken);border-radius:999px;display:flex}.campus-switch button{border:0;background:transparent;padding:5px 13px;border-radius:999px;color:var(--ink-2);font-size:12px;cursor:pointer;transition:.25s var(--ease)}.campus-switch button.on{background:var(--accent);color:#fff}.icon-btn{width:32px;height:32px;border:1px solid var(--border);background:var(--surface);border-radius:50%;cursor:pointer;color:var(--ink-2);font:600 13px var(--serif)}
.layout{display:grid;grid-template-columns:220px minmax(0,1fr);max-width:1280px;margin:auto;min-height:calc(100vh - 70px)}.side-nav{padding:28px 14px 24px;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:4px}.side-label{padding:0 12px 8px;color:var(--ink-3);font-size:10px;letter-spacing:.12em}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 13px;border:0;border-radius:9px;background:transparent;color:var(--ink-2);cursor:pointer;text-align:left;transition:.2s var(--ease)}.nav-item:hover{background:var(--sunken);color:var(--ink)}.nav-item.on{background:var(--accent-soft);color:var(--accent-deep);font-weight:600}.nav-item span{width:18px;text-align:center}.side-note{margin-top:auto;padding:15px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.side-note b{display:block;font:600 13px var(--serif);margin-bottom:6px}.side-note span{color:var(--green);font-size:11px;display:flex;align-items:center;gap:6px}.side-note i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px var(--green-soft)}.side-note p{font-size:10.5px;color:var(--ink-3);margin-top:8px}.content{min-width:0}.view{display:none;min-height:calc(100vh - 70px);animation:rise .4s var(--ease)}.view.on{display:block}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#view-chat{position:relative;padding-bottom:120px}.chat{max-width:850px;margin:auto;padding:50px 34px 20px;display:flex;flex-direction:column;gap:20px}.hero{text-align:center;padding:50px 0 28px}.hero-tag,.kicker{display:inline-block;color:var(--accent-deep);background:var(--accent-soft);font-size:10px;letter-spacing:.13em;padding:4px 11px;border-radius:999px;font-weight:600}.hero h1{font:600 clamp(30px,4vw,46px)/1.35 var(--serif);letter-spacing:-.025em;margin:18px 0 10px}.hero h1 em{font-style:normal;color:var(--accent)}.hero>p{color:var(--ink-2);font-size:13.5px}.hot-head{max-width:650px;margin:34px auto 10px;display:flex;justify-content:space-between;align-items:center;color:var(--ink-3);font-size:11px}.hot-head button{border:0;background:transparent;color:var(--accent-deep);font-size:11px;cursor:pointer}.chips{max-width:680px;margin:auto;display:flex;justify-content:center;flex-wrap:wrap;gap:8px}.chip{padding:8px 13px;border:1px solid var(--border);background:var(--surface);border-radius:999px;color:var(--ink-2);font-size:12px;cursor:pointer;transition:.25s var(--ease)}.chip:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-2px)}
.msg{display:flex;flex-direction:column;animation:rise .4s var(--ease)}.msg.user{align-items:flex-end}.msg.user .bubble{max-width:78%;padding:10px 15px;background:var(--accent);color:#fff;border-radius:15px 15px 4px 15px}.msg.bot{align-items:flex-start}.msg-time{margin-top:4px;color:var(--ink-3);font-size:9.5px}.bot-card{max-width:95%;padding:18px 19px;background:var(--surface);border:1px solid var(--border);border-radius:15px 15px 15px 4px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:10.5px;font-weight:600}.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.badge.hit{background:var(--green-soft);color:var(--green)}.badge.miss{background:var(--yellow-soft);color:var(--yellow)}.core{font:600 16px var(--serif);margin:10px 0 7px}.answer{font-size:13.5px;color:var(--ink-2)}.answer strong{color:var(--accent-deep);font-weight:600}.tip{margin-top:10px;padding-left:11px;border-left:2px solid var(--border);color:var(--ink-3);font-size:11.5px}.sources{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.sources>span{display:block;color:var(--ink-3);font-size:10px;letter-spacing:.08em;margin-bottom:7px}.source-row{width:100%;padding:8px 4px;border:0;border-bottom:1px solid var(--border);background:transparent;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;cursor:pointer}.source-row:last-child{border-bottom:0}.source-row:hover b{color:var(--accent-deep)}.source-row b{font-size:12px;font-weight:500}.source-row small{color:var(--ink-3);white-space:nowrap}.feedback-strip{margin-top:13px;padding:10px 12px;border-radius:9px;background:var(--yellow-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--yellow);font-size:11.5px}.feedback-strip button{border:0;background:transparent;color:inherit;font-weight:600;cursor:pointer;white-space:nowrap}.typing{display:flex;gap:5px;padding:13px 16px;border:1px solid var(--border);border-radius:14px 14px 14px 4px;background:var(--surface)}.typing i{width:5px;height:5px;border-radius:50%;background:var(--ink-3);animation:dot 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes dot{0%,60%,100%{transform:none;opacity:.4}30%{transform:translateY(-4px);opacity:1}}
.composer{position:fixed;z-index:20;left:max(220px,calc(50% - 640px + 220px));right:max(0px,calc(50% - 640px));bottom:0;padding:13px 28px 15px;background:linear-gradient(to top,var(--canvas) 72%,transparent)}.composer-in{max-width:780px;margin:auto;padding:8px 8px 8px 17px;background:var(--surface);border:1px solid var(--border);border-radius:19px;display:flex;align-items:flex-end;gap:10px;transition:.25s}.composer-in:focus-within{border-color:var(--accent);box-shadow:0 7px 24px rgba(180,85,58,.09)}.composer textarea{flex:1;min-height:34px;max-height:110px;border:0;outline:0;resize:none;background:transparent;padding:6px 0;line-height:1.5}.send{width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:50%;background:var(--accent);color:#fff;cursor:pointer;transition:.2s}.send:hover{background:var(--accent-deep)}.send:active{transform:scale(.94)}.send:disabled{background:var(--ink-3)}.composer>p{text-align:center;color:var(--ink-3);font-size:9.5px;margin-top:5px}
.page-head{max-width:980px;margin:auto;padding:50px 38px 24px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.page-head>div>span{font-size:9.5px;letter-spacing:.14em;color:var(--accent-deep)}.page-head h2{font:600 30px var(--serif);margin:4px 0}.page-head p{color:var(--ink-2);font-size:13px}.search{width:270px;padding:8px 13px;border:1px solid var(--border);border-radius:10px;background:var(--surface);display:flex;align-items:center;gap:8px}.search input{width:100%;border:0;outline:0;background:transparent;font-size:12px}.category-grid{max-width:980px;margin:auto;padding:0 38px 24px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.category-card{padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:13px;cursor:pointer;transition:.25s var(--ease)}.category-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(40,34,27,.06)}.category-card .cat-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-deep);margin-bottom:13px}.category-card h3{font:600 15px var(--serif)}.category-card p{color:var(--ink-3);font-size:11px;margin:4px 0 11px}.category-card span{color:var(--ink-2);font-size:10.5px}.popular-card{max-width:904px;margin:0 auto 44px;padding:22px;background:var(--surface);border:1px solid var(--border);border-radius:14px;display:grid;grid-template-columns:240px 1fr;gap:30px}.popular-card h3{font:600 18px var(--serif);margin-top:8px}.popular-row{width:100%;padding:10px 0;border:0;border-bottom:1px solid var(--border);background:transparent;display:flex;justify-content:space-between;text-align:left;cursor:pointer}.popular-row:last-child{border-bottom:0}.popular-row:hover span:first-child{color:var(--accent-deep)}.popular-row small{color:var(--ink-3)}
.feedback-card{max-width:760px;margin:0 auto 50px;padding:26px;background:var(--surface);border:1px solid var(--border);border-radius:15px}.feedback-type{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.feedback-type button{padding:7px 12px;border:1px solid var(--border);background:transparent;border-radius:999px;color:var(--ink-2);font-size:12px;cursor:pointer}.feedback-type button.on{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent-deep);font-weight:600}.feedback-card label{display:block;margin-bottom:16px}.feedback-card label>span{display:block;font-size:11.5px;color:var(--ink-2);margin-bottom:6px}.feedback-card textarea,.feedback-card input,.feedback-card select{width:100%;border:1px solid var(--border);background:var(--canvas);border-radius:9px;padding:10px 12px;outline:0}.feedback-card textarea{height:140px;resize:vertical}.feedback-card textarea:focus,.feedback-card input:focus,.feedback-card select:focus{border-color:var(--accent)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.primary{padding:10px 17px;border:0;border-radius:9px;background:var(--accent);color:#fff;cursor:pointer;font-weight:600}.privacy{color:var(--ink-3);font-size:10.5px;margin-top:10px}.bottom-nav{display:none}
.modal{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;padding:20px}.modal.show{display:flex}.modal-mask{position:absolute;inset:0;background:rgba(33,31,27,.24);backdrop-filter:blur(4px)}.modal-card{position:relative;width:min(560px,100%);max-height:82vh;overflow:auto;padding:26px;background:var(--surface);border-radius:16px;box-shadow:0 24px 70px rgba(33,31,27,.18);animation:rise .3s var(--ease)}.modal-close{position:absolute;right:15px;top:13px;width:30px;height:30px;border:0;background:var(--sunken);border-radius:50%;cursor:pointer;font-size:18px}.modal-card h2{font:600 22px var(--serif);margin-bottom:10px}.modal-card h3{font:600 16px var(--serif);margin:15px 0 6px}.modal-card p,.modal-card li{font-size:12.5px;color:var(--ink-2)}.modal-card ul{padding-left:18px}.source-detail{padding:14px;background:var(--canvas);border:1px solid var(--border);border-radius:10px;margin-top:15px}.source-detail div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--border);font-size:11.5px}.source-detail div:last-child{border-bottom:0}.source-detail span{color:var(--ink-3)}.toast{position:fixed;left:50%;bottom:92px;z-index:100;transform:translate(-50%,8px);padding:8px 16px;border-radius:999px;background:var(--ink);color:#fff;opacity:0;pointer-events:none;font-size:12px;transition:.3s}.toast.show{opacity:1;transform:translate(-50%,0)}
body.mode-mini{min-height:100vh;padding:36px;background:#ebe8e1}body.mode-mini .mini-stage{display:block;position:fixed;inset:0;pointer-events:none}.device-label{position:absolute;top:13px;left:50%;transform:translateX(-50%);color:#8e887e;font-size:10px;letter-spacing:.08em}.mode-mini .app{width:390px;min-height:844px;max-height:calc(100vh - 72px);margin:auto;overflow:auto;border-radius:30px;background:var(--canvas);box-shadow:0 24px 70px rgba(45,39,32,.18);position:relative}.mode-mini .topbar{position:sticky;height:64px;padding:0 15px}.mode-mini .brand small,.mode-mini .side-nav{display:none}.mode-mini .brand-mark{width:34px;height:34px}.mode-mini .campus-switch button{padding:4px 8px;font-size:10px}.mode-mini .layout{display:block;min-height:780px}.mode-mini .view{min-height:780px}.mode-mini .chat{padding:24px 16px 145px}.mode-mini .hero{padding:30px 0 10px}.mode-mini .hero h1{font-size:27px}.mode-mini .hero>p{font-size:12px}.mode-mini .composer{position:absolute;left:0;right:0;bottom:58px;padding:10px 12px;background:linear-gradient(to top,var(--canvas) 76%,transparent)}.mode-mini .composer>p{display:none}.mode-mini .bottom-nav{display:flex;position:sticky;z-index:40;bottom:0;height:58px;background:rgba(255,255,255,.96);border-top:1px solid var(--border);align-items:center;justify-content:space-around}.mode-mini .bottom-nav button{border:0;background:transparent;color:var(--ink-3);font-size:10px;display:grid;gap:1px;place-items:center;cursor:pointer}.mode-mini .bottom-nav button span{font-size:17px;line-height:1}.mode-mini .bottom-nav button.on{color:var(--accent-deep);font-weight:600}.mode-mini .page-head{padding:30px 18px 18px;display:block}.mode-mini .page-head h2{font-size:25px}.mode-mini .search{width:100%;margin-top:15px}.mode-mini .category-grid{padding:0 18px 18px;grid-template-columns:1fr 1fr;gap:10px}.mode-mini .category-card{padding:14px}.mode-mini .popular-card{margin:0 18px 80px;padding:18px;display:block}.mode-mini .popular-card>div:first-child{margin-bottom:12px}.mode-mini .feedback-card{margin:0 18px 80px;padding:18px}.mode-mini .form-row{grid-template-columns:1fr}.mode-mini .modal{position:absolute}.mode-mini .modal-card{width:calc(100% - 28px);padding:22px}.mode-mini .toast{position:absolute;bottom:76px}
@media(max-width:760px){body:not(.mode-mini){padding:0}.topbar{height:64px;padding:0 15px}.brand small{display:none}.layout{display:block}.side-nav{display:none}.view{min-height:calc(100vh - 122px)}.chat{padding:24px 16px 145px}.hero{padding:30px 0 15px}.hero h1{font-size:28px}.composer{left:0;bottom:58px;padding:10px 12px}.composer>p{display:none}.bottom-nav{display:flex;position:fixed;z-index:40;left:0;right:0;bottom:0;height:58px;background:rgba(255,255,255,.96);border-top:1px solid var(--border);align-items:center;justify-content:space-around}.bottom-nav button{border:0;background:transparent;color:var(--ink-3);font-size:10px;display:grid;gap:1px;place-items:center}.bottom-nav button span{font-size:17px}.bottom-nav button.on{color:var(--accent-deep);font-weight:600}.page-head{padding:30px 18px 18px;display:block}.search{width:100%;margin-top:15px}.category-grid{padding:0 18px 18px;grid-template-columns:1fr 1fr;gap:10px}.popular-card{margin:0 18px 80px;padding:18px;display:block}.popular-card>div:first-child{margin-bottom:12px}.feedback-card{margin:0 18px 80px;padding:18px}.form-row{grid-template-columns:1fr}}
@media(max-width:430px){body.mode-mini{padding:0}.mode-mini .app{width:100%;min-height:100vh;max-height:none;border-radius:0;box-shadow:none}.device-label{display:none}.category-grid{grid-template-columns:1fr}.mode-mini .category-grid{grid-template-columns:1fr 1fr}}
.mini-dev-banner{display:none}
body.mode-mini .mini-dev-banner{display:block;position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:130;width:390px;padding:7px 14px;background:var(--accent-deep);color:#fff;border-radius:0 0 999px 999px;text-align:center;font-size:11px;box-shadow:0 8px 24px rgba(147,67,46,.28)}
@media(max-width:430px){body.mode-mini .mini-dev-banner{width:100%;border-radius:0}}
