*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#111318;color:#e7e9ee}input,button,textarea{font-family:inherit;font-size:14px}input{background:#1c2028;border:1px solid #2c3140;color:#e7e9ee;border-radius:6px;padding:8px 10px}button{background:#4a6cf7;border:none;color:#fff;border-radius:6px;padding:8px 14px;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.secondary{background:#2c3140}.auth-shell{max-width:360px;margin:80px auto;display:flex;flex-direction:column;gap:12px;padding:24px;background:#171a21;border-radius:12px}.auth-shell h1{margin:0 0 8px;font-size:20px}.error{color:#ff6b6b;font-size:13px}.app-shell{display:grid;grid-template-columns:280px 1fr;height:100vh}.sidebar{border-right:1px solid #23273222;background:#14161c;display:flex;flex-direction:column}.sidebar-header{padding:14px;border-bottom:1px solid #23273233;display:flex;justify-content:space-between;align-items:center}.conversation-list{overflow-y:auto;flex:1}.conversation-item{padding:12px 14px;cursor:pointer;border-bottom:1px solid #1c202966}.conversation-item:hover{background:#1c2028}.conversation-item.active{background:#232a3d}.conversation-item .name{font-weight:600;font-size:14px}.conversation-item .preview{font-size:12px;color:#9aa0ac;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-pane{display:flex;flex-direction:column;height:100vh}.chat-header{padding:14px;border-bottom:1px solid #23273233;font-weight:600}.message-list{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}.message-row{max-width:60%}.message-row.mine{align-self:flex-end;text-align:right}.message-bubble{background:#1c2028;padding:8px 12px;border-radius:12px;display:inline-block;text-align:left}.message-row.mine .message-bubble{background:#3a53c9}.message-row.pending .message-bubble{opacity:.6}.message-meta{font-size:11px;color:#7c8291;margin-bottom:2px}.composer{display:flex;gap:8px;padding:14px;border-top:1px solid #23273233}.composer input{flex:1}.empty-state{margin:auto;color:#7c8291}
