/* 微信 Windows 收藏与登录窗口的比例参考；不覆盖官网、教务或考试界面。 */
.comm-rail { position:relative; }
.avatar-radio-coral{background:#cba7a0;color:#fff}.avatar-radio-sea{background:#8aa8b5;color:#fff}.avatar-radio-gold{background:#b4a36d;color:#fff}.avatar-radio-lilac{background:#b7aac8;color:#fff}.avatar-radio-mint{background:#99b5a6;color:#fff}.avatar-radio-teacher{background:#89998a;color:#fff}
.comm-window { position:relative; }
.comm-window button,.comm-auth-window button,.comm-settings button { font-family:inherit; }
.comm-window-close { width:43px; height:30px; display:grid; place-items:center; padding:7px 13px; color:#555; }
.comm-window-close .icon { width:15px; height:15px; }
.comm-window-close:hover,.comm-titlebar>button:hover { background:#e81123; color:white; }
.comm-menu { position:absolute; z-index:30; left:40px; bottom:19px; width:154px; padding:5px 0; color:#202020; background:#fff; border:1px solid #d2d2d2; border-radius:3px; box-shadow:0 4px 16px #0002; }
.comm-menu button { display:block; width:100%; text-align:left; padding:10px 23px; font-size:13px; }
.comm-menu button:hover { background:#ededed; }
body[data-surface="chat"] .comm-favorites-window { grid-template-columns:60px 254px minmax(0,1fr); }
.comm-categories { min-height:0; overflow-y:auto; border-right:1px solid #dfdfdf; background:#eeeeef; padding-top:12px; }
.comm-sidebar-search { display:flex; align-items:center; gap:8px; height:29px; margin:0 13px 11px; padding:0 9px; border:1px solid transparent; border-radius:5px; background:#f9f9f9; color:#aaa; }
.comm-sidebar-search .icon { width:14px; height:14px; }
.comm-sidebar-search input { min-width:0; width:100%; outline:0; border:0; padding:0; background:transparent; font:12px "Microsoft YaHei UI",sans-serif; color:#222; }
.comm-sidebar-search:focus-within { border-color:#aaa; background:white; }
.comm-categories>button { width:100%; display:flex; align-items:center; gap:12px; padding:12px 22px; color:#333; font-size:13px; text-align:left; }
.comm-categories>button .icon { width:19px; height:19px; color:#777; }
.comm-categories>button:hover { background:#eaeaea; }
.comm-categories>button.selected { background:#13ad75; color:white; }
.comm-categories>button.selected .icon { color:white; }
.comm-categories>button.comm-new-note { justify-content:center; width:calc(100% - 26px); padding:9px; margin:0 13px 15px; border-radius:4px; background:#fafafa; }
.comm-categories>button.comm-new-note:hover { background:white; }
.comm-categories>button.comm-category-separated { border-top:1px solid #e3e3e3; margin-top:7px; padding-top:18px; }
.comm-favorites-main { min-width:0; min-height:0; display:flex; flex-direction:column; background:#fff; }
.comm-favorites-toolbar { height:51px; flex-shrink:0; display:flex; align-items:center; padding:0 26px; border-bottom:1px solid #eee; }
.comm-favorites-toolbar h2 { margin:0; font-size:14px; font-weight:400; }
.comm-favorites-toolbar label { display:flex; align-items:center; gap:8px; height:30px; width:min(100%,310px); padding:0 10px; background:#f0f0f0; border:1px solid transparent; border-radius:4px; color:#888; }
.comm-favorites-toolbar label:focus-within { background:white; border-color:#aaa; }
.comm-favorites-toolbar .icon { width:14px; height:14px; }
.comm-favorites-toolbar input { border:0; outline:0; background:transparent; width:100%; min-width:0; color:#222; font:12px "Microsoft YaHei UI","Microsoft YaHei",sans-serif; }
.comm-favorite-list { flex:1; min-height:0; overflow-y:auto; padding:14px 30px 20px; scrollbar-color:#ccc transparent; }
.comm-favorite-row { display:flex; width:100%; padding:17px 17px 14px; margin-bottom:10px; gap:17px; text-align:left; border:0; border-radius:7px; color:#222; background:#f0f0f1; }
.comm-favorite-row:hover { background:#e7e7e8; }
.comm-item-kind { display:none; }
.comm-item-kind .icon { width:25px; height:25px; }
.comm-kind-text { background:#f3f3f3; color:#888; }
.comm-kind-link { background:#edf4ff; color:#678bbf; }
.comm-favorite-copy { min-width:0; flex:1; display:flex; flex-direction:column; gap:8px; }
.comm-favorite-copy>strong { font-size:14px; font-weight:400; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.comm-favorite-copy>span { color:#777; font-size:12px; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; line-height:1.6; }
.comm-favorite-copy>small { display:flex; align-items:center; justify-content:space-between; gap:10px; color:#a0a0a0; font-size:11px; }
.comm-favorite-copy time { font:11px "Microsoft YaHei UI",sans-serif; white-space:nowrap; }
.comm-empty { display:grid; place-items:center; min-height:260px; color:#aaa; font-size:13px; }
.comm-reader { position:absolute; z-index:25; top:55px; bottom:34px; left:calc(50% - 305px); width:min(610px,calc(100% - 70px)); display:flex; flex-direction:column; background:white; border:1px solid #bfc1c3; border-radius:4px; box-shadow:0 8px 30px #0003; overflow:hidden; }
.comm-titlebar { display:flex; align-items:center; justify-content:space-between; height:36px; min-height:36px; padding-left:15px; background:#fafafa; color:#555; font-size:12px; user-select:none; }
.comm-titlebar>button { width:42px; height:36px; display:grid; place-items:center; padding:10px 13px; }
.comm-titlebar .icon { width:15px; height:15px; }
.comm-reader-tools { height:39px; flex-shrink:0; display:flex; align-items:center; justify-content:space-between; padding:0 25px; border-bottom:1px solid #eee; color:#888; }
.comm-reader-tools .icon { width:17px; height:17px; }
.comm-reader-tools button { color:#555; padding:5px 9px; font-size:12px; }
.comm-reader-tools button:hover { background:#eee; }
.comm-reader-body { flex:1; min-height:0; padding:29px 35px 55px; white-space:pre-wrap; overflow-wrap:anywhere; overflow-y:auto; font:15px/2 "Microsoft YaHei UI","Microsoft YaHei",sans-serif; color:#222; user-select:text; outline:0; }
.comm-note-editor { border:0; resize:none; border-radius:0; width:100%; background:white; }
.comm-auth-desktop { display:flex; align-items:center; justify-content:center; min-height:calc(100svh - 100px); }
.comm-auth-window { position:relative; display:flex; flex-direction:column; width:380px; min-height:510px; background:#fff; border:1px solid #bfc2c7; border-radius:4px; box-shadow:0 9px 35px #19212d24; color:#222; }
.comm-auth-content { padding:24px 39px 20px; text-align:center; flex:1; }
.comm-auth-content h1 { font-size:21px; font-weight:400; margin:18px 0 30px; color:#191919; }
.comm-accounts { margin:3px -13px 18px; }
.comm-account-row { display:flex; align-items:center; width:100%; gap:13px; padding:17px 10px; border-bottom:1px solid #ededed; text-align:left; }
.comm-account-row:hover { background:#f4f4f4; }
.comm-account-row .avatar { width:45px; height:45px; border-radius:5px; }
.comm-account-row>span:not(.avatar) { display:flex; flex-direction:column; gap:7px; flex:1; min-width:0; }
.comm-account-row strong { font-size:15px; font-weight:400; }
.comm-account-row small { color:#999; font-size:11px; overflow:hidden; text-overflow:ellipsis; }
.comm-account-row em { font-size:11px; color:#aaa; font-style:normal; white-space:nowrap; }
.comm-text-button { font-size:12px; padding:9px 5px; color:#576b95; }
.comm-text-button:hover { text-decoration:underline; }
.comm-auth-footer { text-align:center; padding:10px 20px 22px; }
.comm-login-content { padding-top:40px; }
.comm-login-content .comm-login-avatar { width:72px; height:72px; border-radius:7px; margin:0 auto; }
.comm-login-placeholder { display:grid; place-items:center; background:#f1f1f1; color:#aaa; }
.comm-login-placeholder .icon { width:40px; height:40px; }
.comm-signing-in { display:flex; flex-direction:column; align-items:center; justify-content:center; }
.comm-signing-in h1 { margin:24px 0 0; font-size:16px; color:#777; }
.comm-login-spinner { width:29px; height:29px; border:2px solid #e5e9e6; border-top-color:#07a956; border-radius:50%; animation:spin .8s linear infinite; }
@media(prefers-reduced-motion:reduce){.comm-login-spinner{animation:none}}
.avatar-secondary { background:#e8ddc8; color:#806d4a; font-size:22px; }
.comm-login-content h1 { font-size:19px; margin:18px 0 26px; }
.comm-login-handle { color:#999; font-size:12px; margin:-12px 0 38px; }
.comm-green-button { display:block; width:100%; height:39px; border:0; border-radius:4px; background:#07c160; color:white; font:15px "Microsoft YaHei UI",sans-serif; }
.comm-green-button:hover { background:#06ad56; }
.comm-green-button:active { background:#079a4f; }
.comm-green-button:disabled { background:#abdcc2; }
.comm-field { display:flex; align-items:center; gap:10px; height:44px; border-bottom:1px solid #e7e7e7; text-align:left; font-size:13px; }
.comm-field>span { flex-shrink:0; color:#555; }
.comm-field input { min-width:0; width:100%; border:0; outline:0; background:transparent; font-size:13px; color:#222; }
.comm-field>button { width:22px; height:25px; padding:2px; color:#999; }
.comm-field .icon { width:19px; height:19px; }
.comm-feedback { min-height:20px; margin:12px 0 15px; color:#fa5151; font-size:12px; line-height:1.6; text-align:left; }
.comm-auth-description { font-size:12px; color:#999; margin:-14px 0 30px; }
.comm-security-question { text-align:left; margin:28px 0 25px; }
.comm-security-question small { color:#999; font-size:11px; }
.comm-security-question p { margin:12px 0; font-size:17px; }
.comm-answer-label { display:block; text-align:left; color:#555; font-size:12px; margin-bottom:9px; }
#comm-security-answer { width:100%; border:0; border-bottom:1px solid #ddd; outline:0; padding:9px 0 11px; border-radius:0; background:transparent; font:14px "Microsoft YaHei UI",sans-serif; color:#222; }
#comm-security-answer:focus { border-bottom-color:#07c160; }
.comm-success { display:grid; place-items:center; width:70px; height:70px; border:2px solid #07c160; color:#07c160; border-radius:50%; margin:46px auto 0; }
.comm-success .icon { width:40px; height:40px; }
.comm-success~.comm-green-button { margin-top:45px; }
.comm-settings { position:absolute; width:min(540px,calc(100% - 30px)); height:365px; top:100px; left:50%; transform:translateX(-50%); background:#fff; border:1px solid #bfc1c3; border-radius:4px; box-shadow:0 8px 30px #0003; z-index:35; }
.comm-settings-body { display:flex; height:calc(100% - 36px); }
.comm-settings-body aside { width:130px; background:#f4f4f4; padding:23px 20px; font-size:13px; }
.comm-settings-body>div { flex:1; text-align:center; padding:30px 15px; }
.comm-settings-body .avatar { width:56px; height:56px; margin:auto; border-radius:5px; }
.comm-settings-body h2 { font-size:16px; font-weight:400; margin:15px 0; }
.comm-settings-body p { font-size:12px; color:#888; }
.comm-light-button { background:#eee; color:#333; padding:7px 25px; border-radius:3px; margin-top:17px; font-size:12px; }
.comm-settings-actions { display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap; }
.comm-settings-actions .comm-light-button { padding:7px 16px; }
.comm-settings-actions .comm-restart-button { border:1px solid #ddd;background:#f7f7f7;color:#666; }
.comm-secondary-empty { display:grid; place-items:center; flex:1; color:#b3b3b3; font-size:13px; }
.broadcast-recording { max-width:650px; margin:26px auto; padding:16px 18px; border:1px solid #cfd7df; background:#f4f6f8; font-family:SimSun,"宋体",serif; }
.broadcast-recording-title { font-weight:bold; font-size:14px; margin:0 0 12px; color:#344e64; }
.broadcast-recording audio { display:block; width:100%; height:36px; }
.broadcast-player { display:flex; align-items:center; gap:13px; color:#7a858e; font:12px Arial,"宋体",serif; }
.broadcast-play { width:30px; height:30px; display:grid; place-items:center; border:1px solid #bcc8d2; color:#8fa2b1; background:#e7edf1; }
.broadcast-play .icon { width:15px; height:15px; }
.broadcast-player-track { height:4px; background:#d4dde4; flex:1; }
.broadcast-recording small { display:block; font-size:12px; color:#7a858e; margin:13px 0 0; }
@media(max-width:700px){body[data-surface="chat"] .comm-favorites-window{grid-template-columns:48px 126px minmax(0,1fr)}.comm-categories>button{gap:8px;padding:12px 11px;font-size:12px}.comm-categories h2{padding-left:15px}.comm-favorite-list{padding:0 12px 15px}.comm-favorites-toolbar{padding:0 12px}.comm-item-kind{display:none}.comm-reader{left:12px;width:calc(100% - 24px);top:45px;bottom:15px}.comm-reader-body{padding:22px;font-size:14px}.comm-favorite-copy>small{font-size:10px;flex-wrap:wrap}.comm-auth-window{width:min(380px,100%);min-height:490px}.comm-auth-content{padding-left:29px;padding-right:29px}.comm-auth-desktop{min-height:calc(100svh - 85px)}.comm-settings{top:55px}.comm-settings-body aside{width:105px;padding:23px 12px}.comm-menu{left:30px}}
@media(max-height:630px){.comm-auth-window{min-height:450px}.comm-auth-content{padding-top:12px;padding-bottom:8px}.comm-login-content{padding-top:20px}.comm-auth-footer{padding-bottom:10px}.comm-auth-content h1{margin-top:13px;margin-bottom:20px}.comm-account-row{padding-top:13px;padding-bottom:13px}}
@media(max-width:650px){
 body[data-surface="chat"] .chat-window>.comm-rail{display:flex;grid-column:1;grid-row:2}
 body[data-surface="chat"] .chat-window:not(.comm-favorites-window):has(>.comm-rail){grid-template-columns:48px minmax(0,1fr)}
 body[data-surface="chat"] .comm-favorites-window>.comm-categories{grid-column:2;grid-row:2}
 body[data-surface="chat"] .comm-favorites-window>.comm-favorites-main{grid-column:3;grid-row:2}
}

/* 广播站小号：复用桌面通讯布局，侧栏与气泡不另换视觉风格。 */
body[data-surface="chat"] .comm-secondary-window .conversation{display:grid;grid-template-rows:65px minmax(0,1fr) 136px;min-height:0;overflow:hidden}
body[data-surface="chat"] .comm-secondary-window .contact-item{width:100%;border:0;text-align:left;border-radius:0}
body[data-surface="chat"] .comm-secondary-window .contact-item time{align-self:flex-start;margin-top:2px;font-size:11px;color:#999}
body[data-surface="chat"] .comm-secondary-window .conversation-header h2 button{border:0;background:transparent;padding:0;font:inherit;color:inherit}
body[data-surface="chat"] .radio-message-list{overflow:auto;min-height:0;padding:18px 26px 30px;scrollbar-width:thin;background:#f5f5f5}
body[data-surface="chat"] .radio-message-list .message-row{display:flex;align-items:flex-start;gap:10px;margin:18px 0}
body[data-surface="chat"] .radio-message-list .message-row.self{justify-content:flex-end}
body[data-surface="chat"] .radio-message-list .message-content{max-width:min(80%,520px);min-width:0}
body[data-surface="chat"] .radio-message-list .message-bubble{white-space:pre-wrap;overflow-wrap:anywhere;position:relative;min-height:36px}
body[data-surface="chat"] .radio-message-list .self .message-bubble{background:#95ec69;border-color:#89e45e}
body[data-surface="chat"] .radio-message-list .message-time{text-align:center;color:#a0a0a0;font-size:12px;margin:18px 0}
body[data-surface="chat"] .radio-message-list .self .message-bubble:before{display:none}
body[data-surface="chat"] .radio-composer{background:#fff;border-top:1px solid #e8e8e8;padding:10px 16px 12px}
body[data-surface="chat"] .radio-composer textarea{width:100%;height:66px;resize:none;background:transparent;border:0;outline-offset:2px;font:14px/1.6 "Microsoft YaHei",sans-serif}
body[data-surface="chat"] .radio-composer>div{display:flex;align-items:center;justify-content:flex-end;gap:18px}
body[data-surface="chat"] .radio-composer small{color:#aaa;font-size:11px}
body[data-surface="chat"] .radio-composer button{border:0;border-radius:4px;background:#f0f0f0;color:#07a657;padding:6px 24px;font-size:13px}
body[data-surface="chat"] .radio-file-card{display:flex;align-items:center;gap:14px;min-width:210px;text-align:left;background:white;border:0;padding:5px;color:#333}
body[data-surface="chat"] .radio-file-card strong{display:block;max-width:230px;overflow-wrap:anywhere;font-size:13px;font-weight:400}
body[data-surface="chat"] .radio-file-card small{display:block;color:#aaa;font-size:11px;margin-top:10px}
body[data-surface="chat"] .radio-file-icon{display:grid;place-items:center;width:38px;height:44px;background:#e8f0e6;color:#72916d}
body[data-surface="chat"] .radio-profile-card{position:absolute;z-index:25;left:75px;top:60px;width:min(340px,calc(100% - 95px));padding:24px;background:white;box-shadow:0 3px 20px #0003;border:1px solid #dedede}
body[data-surface="chat"] .radio-profile-card header{display:flex;justify-content:flex-end;margin:-15px -15px 6px}
body[data-surface="chat"] .radio-profile-card h2{font-size:19px;font-weight:500;margin:14px 0 8px}
body[data-surface="chat"] .radio-profile-card p{font-size:13px;color:#777;margin:10px 0;overflow-wrap:anywhere}
body[data-surface="chat"] .radio-profile-card>.avatar{width:54px;height:54px}
body[data-surface="chat"] .radio-contact-directory>p{margin:24px;color:#999;font-size:14px}
body[data-surface="chat"] .radio-moments-cover{background:#a3b3a3 url('assets/school-home-archive.png') center/cover;min-height:200px}
body[data-surface="chat"] .radio-send-failed{display:flex;gap:6px;align-items:center;font-size:11px;color:#999;margin-top:6px}
body[data-surface="chat"] .radio-send-failed b{display:grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#e65353;color:white}
body[data-surface="chat"] .comm-secondary-window .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:700px){
 body[data-surface="chat"] .comm-secondary-window .contacts-panel{display:flex;min-width:0;position:static}
 body[data-surface="chat"] .comm-secondary-window.show-contacts .conversation{visibility:visible}
 body[data-surface="chat"] .comm-secondary-window{display:grid!important;grid-template-columns:48px 150px minmax(0,1fr)!important;grid-template-rows:28px minmax(0,1fr);padding-top:0}
 body[data-surface="chat"] .comm-secondary-window>.chat-titlebar{position:static;grid-column:1/-1;grid-row:1}
 body[data-surface="chat"] .comm-secondary-window>.comm-rail{grid-column:1;grid-row:2}
 body[data-surface="chat"] .comm-secondary-window>.contacts-panel{grid-column:2;grid-row:2}
 body[data-surface="chat"] .comm-secondary-window>.conversation{grid-column:3;grid-row:2;grid-template-rows:55px minmax(0,1fr) 116px;height:auto}
 body[data-surface="chat"] .radio-message-list{padding:12px}
 body[data-surface="chat"] .radio-composer textarea{height:50px}
 body[data-surface="chat"] .radio-composer small{display:none}
 body[data-surface="chat"] .radio-file-card{min-width:0}
}
@media(max-width:520px){
 body[data-surface="chat"] .comm-secondary-window{grid-template-columns:44px minmax(0,1fr)!important}
 body[data-surface="chat"] .comm-secondary-window .contacts-panel{display:none}
 body[data-surface="chat"] .comm-secondary-window>.conversation{grid-column:2}
 body[data-surface="chat"] .comm-secondary-window.show-contacts .contacts-panel{display:flex;grid-column:2;grid-row:2}
 body[data-surface="chat"] .comm-secondary-window.show-contacts>.conversation{display:none}
 body[data-surface="chat"] .radio-message-list .message-content{max-width:calc(100% - 46px)}
 body[data-surface="chat"] .comm-radio-moments .comm-rail{display:flex;width:44px;min-width:44px}
}
