:root{--primary:#4a90e2;--bg:#f5f7fa;--card:#ffffff;--border:#e2e8f0;--text:#1a202c;--text-light:#718096;--accent:#3182ce;--success:#38a169;--danger:#e53e3e}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.app,body{height:100vh}.app{display:flex;overflow:hidden}.sidebar{width:300px;min-width:300px;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;padding:20px 16px;gap:16px}.sidebar h2{font-size:1rem;display:flex;align-items:center;gap:6px}.sidebar .subtitle{font-size:.78rem;color:var(--text-light)}.divider{border:none;border-top:1px solid var(--border);margin:4px 0}.mode-toggle{display:flex;gap:4px}.mode-toggle button{flex:1 1;padding:8px;border:1px solid var(--border);background:var(--card);border-radius:6px;font-size:.82rem;cursor:pointer;transition:all .2s}.mode-toggle button.active{background:var(--accent);color:white;border-color:var(--accent)}.doc-list{font-size:.8rem;color:var(--text-light)}.doc-list-item{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.main{flex:1 1;display:flex;flex-direction:column;overflow:hidden}.header{padding:16px 24px;border-bottom:1px solid var(--border);background:var(--card)}.header h1{font-size:1.3rem}.header p{font-size:.82rem;color:var(--text-light);margin-top:2px}.messages{flex:1 1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.message{display:flex;gap:12px;max-width:80%}.message.user{align-self:flex-end;flex-direction:row-reverse}.message-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}.message.user .message-avatar{background:var(--accent);color:white}.message.assistant .message-avatar{background:#e2e8f0}.message-content{padding:12px 16px;border-radius:12px;font-size:.92rem;line-height:1.6;white-space:pre-wrap}.message.user .message-content{background:var(--accent);color:white;border-bottom-right-radius:4px}.message.assistant .message-content{background:var(--card);border:1px solid var(--border);border-bottom-left-radius:4px}.input-area{padding:16px 24px;border-top:1px solid var(--border);background:var(--card);display:flex;gap:10px}.input-area input{flex:1 1;padding:12px 16px;border:1px solid var(--border);border-radius:10px;font-size:.92rem;outline:none;font-family:inherit}.input-area input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(49,130,206,.1)}.input-area button{padding:12px 20px;background:var(--accent);color:white;border:none;border-radius:10px;font-size:.92rem;font-weight:600;cursor:pointer;transition:opacity .2s}.input-area button:hover{opacity:.85}.input-area button:disabled{opacity:.5;cursor:not-allowed}.btn{padding:8px 16px;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;width:100%;transition:opacity .2s}.btn:hover{opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:white}.btn-danger{background:var(--danger);color:white}.btn-ghost{background:transparent;color:var(--danger);padding:4px 8px;font-size:.78rem;width:auto}label{display:block;font-size:.8rem;font-weight:600;color:var(--text-light);margin-bottom:4px}input[type=file],input[type=password],input[type=text]{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.88rem;outline:none;font-family:inherit}input:focus{border-color:var(--accent)}.admin-panel{flex:1 1;overflow-y:auto;padding:24px}.admin-panel h2{font-size:1.2rem;margin-bottom:16px}.admin-section{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:16px}.admin-section h3{font-size:1rem;margin-bottom:12px}.file-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.file-item:last-child{border-bottom:none}.toast{position:fixed;top:16px;right:16px;padding:10px 20px;border-radius:8px;font-size:.88rem;z-index:9999;animation:fadeInOut 2.5s ease;pointer-events:none;color:white}.toast-success{background:var(--success)}.toast-error{background:var(--danger)}@keyframes fadeInOut{0%{opacity:0;transform:translateY(-10px)}15%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0}}.loading-dots:after{content:"";animation:dots 1.5s steps(4) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}@media (max-width:768px){.app{flex-direction:column}.sidebar{width:100%;min-width:100%;max-height:40vh}.message{max-width:95%}}