:root{--face:#e8e6e3;--face-dark:#c0c0c0;--face-light:#ffffff;--border:#808080;--border-light:#d4d0c8;--blue:#000080;--title:#fff;--chat-bg:#fff}*{box-sizing:border-box;margin:0;padding:0}body{font-family:宋体,SimSun,Microsoft YaHei,sans-serif;background:#008080;color:#000;font-size:13px;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;overflow:hidden}.win{background:var(--face);border:2px solid;border-color:var(--border-light) var(--border) var(--border) var(--border-light);box-shadow:1px 1px 0 #000}.win.resizable{resize:both;overflow:auto;min-width:320px;min-height:220px;max-width:95vw;max-height:92vh;display:flex;flex-direction:column}.win.resizable .body{overflow:auto}.titlebar{background:linear-gradient(90deg,#000080,#1084d0);color:var(--title);padding:3px 6px;font-size:12px;font-weight:700;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.titlebar .x{background:#c0c0c0;color:#000;border:1px solid #fff;width:16px;height:14px;text-align:center;line-height:12px;font-size:11px;cursor:pointer}button,input,select,textarea{font-family:inherit;font-size:13px;border:2px solid;border-color:var(--border) var(--border-light) var(--border-light) var(--border);background:var(--face-light);padding:3px 5px;outline:none}input:focus,select:focus,textarea:focus{border-color:#000080}button{background:var(--face);cursor:pointer;min-width:70px}button:active{border-color:var(--border-light) var(--border) var(--border) var(--border-light)}button:disabled{color:#808080;cursor:default}.btn-primary{background:linear-gradient(90deg,#000080,#1084d0);color:#fff;font-weight:700}.box{width:440px}.box .body{padding:16px}.section-title{color:var(--blue);font-weight:700;margin-bottom:10px;border-bottom:1px solid var(--border);padding-bottom:4px}.field{margin-bottom:10px;display:flex;align-items:center}.field label{width:70px;flex:none}.field input,.field select{flex:1 1}.row2{display:flex;gap:8px}.row2 .field{flex:1 1}.hint{font-size:12px;color:#444;margin-top:8px;line-height:1.6}.error{background:#ffd;border:1px solid #c00;color:#c00;padding:6px;margin-top:10px;display:none}.tabs{display:flex;border-bottom:2px solid var(--blue);margin-bottom:14px}.tab{padding:5px 16px;cursor:pointer;background:var(--face);border:1px solid var(--border);border-bottom:none;margin-right:2px}.tab.active{background:var(--blue);color:#fff;font-weight:700}#main{width:1020px;height:560px;display:none;flex-direction:column}#main .titlebar{flex:none}#main .toolbar{display:flex;gap:6px;padding:6px;border-bottom:1px solid var(--border);background:var(--face)}.mainbody{flex:1 1}.mainbody,.sidebar{display:flex;overflow:hidden}.sidebar{width:200px;background:var(--face);border-right:2px solid var(--border);flex-direction:column;flex:none}.sidebar .searchrow{padding:6px;display:flex;gap:4px;border-bottom:1px solid var(--border)}.sidebar .searchrow input{flex:1 1}#friendList{flex:1 1;overflow-y:auto;padding:4px}.friend{display:flex;align-items:center;gap:6px;padding:4px;cursor:pointer;border:1px solid transparent}.friend:hover{background:#1084d0;color:#fff}.friend.active{background:var(--blue);color:#fff}.avatar{width:24px;height:24px;border:1px solid var(--border);background:#eef;display:flex;align-items:center;justify-content:center;font-size:12px;flex:none}.friend .meta{flex:1 1;min-width:0}.friend .name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.friend .sub{font-size:10px;color:#666}.friend.active .sub,.friend:hover .sub{color:#ddf}.online-dot{background:#0a0}.offline-dot,.online-dot{width:8px;height:8px;border-radius:50%;flex:none}.offline-dot{background:#999}.chatarea{flex:1 1;display:flex;flex-direction:column}.chathead{padding:6px 10px;border-bottom:1px solid var(--border);background:var(--face-dark);font-weight:700}#msgBox{flex:1 1;overflow-y:auto;background:var(--chat-bg);padding:10px;display:flex;flex-direction:column;gap:6px}.msg{max-width:70%;padding:6px 8px;border:1px solid var(--border);border-radius:2px;font-size:13px;word-wrap:break-word;white-space:pre-wrap}.msg.me{align-self:flex-end;background:#cfe8ff}.msg.other{align-self:flex-start;background:#f0f0f0}.msg .who{font-size:10px;color:#888;margin-bottom:2px}.msg .time{font-size:10px;color:#aaa;float:right;margin-left:8px}.msg-img{max-width:200px;max-height:200px;border:1px solid var(--border);display:block}.msgbox-input{display:flex;gap:6px;padding:8px;border-top:1px solid var(--border)}.msgbox-input textarea{flex:1 1;resize:none;height:70px}.msg-tools{display:flex;gap:4px;padding:4px 8px;border-top:1px solid var(--border);background:var(--face)}.msg-tools button{min-width:0;font-size:12px;padding:2px 8px}.empty{color:#888;text-align:center;padding:30px;font-size:12px}.badge{display:inline-block;background:#c00;color:#fff;font-size:10px;line-height:1;padding:2px 4px;border-radius:8px;margin-left:4px;vertical-align:middle}.friend-del{color:#c00;font-weight:700;cursor:pointer;padding:0 4px;font-size:14px;flex:none}.friend.active .friend-del,.friend:hover .friend-del{color:#ffd}.groupbar{width:170px;background:var(--face);border-right:2px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.groupbar-head{padding:6px;font-weight:700;border-bottom:1px solid var(--border);background:var(--face-dark);font-size:12px}.groupbar-list{flex:1 1;overflow-y:auto;padding:4px}.group-item{display:flex;align-items:center;gap:6px;padding:4px;cursor:pointer;border:1px solid transparent}.group-item:hover{background:#1084d0;color:#fff}.group-item.active{background:var(--blue);color:#fff}.group-item .gname{flex:1 1;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.groupbar-actions{display:flex;gap:4px;padding:6px;border-top:1px solid var(--border)}.groupbar-actions button{flex:1 1;min-width:0;font-size:12px;padding:2px 4px}.group-chat{border-left:2px solid var(--border)}.ann-item{border:1px solid var(--border);margin-bottom:8px;padding:8px;background:#fff}.ann-title{font-weight:700;color:var(--blue);margin-bottom:4px}.ann-content{font-size:12px;line-height:1.6;white-space:pre-wrap}.ann-time{font-size:10px;color:#888;margin-top:4px;text-align:right}#modal{position:fixed;inset:0;background:rgba(0,0,0,.4);display:none;align-items:center;justify-content:center;z-index:100}#modal .box{width:360px}#modal .body{padding:14px}#modal .btns{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}#toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);background:#000080;color:#fff;padding:8px 20px;display:none;z-index:200;border:2px solid #fff}