/* ---- 窗口 ---- */
.window{position:absolute;min-width:280px;background:rgba(15,15,17,.72);border-radius:18px;
  backdrop-filter:blur(26px) saturate(1.2);-webkit-backdrop-filter:blur(26px) saturate(1.2);
  border:1px solid rgba(255,255,255,.1);
  box-shadow:0 40px 90px rgba(0,0,0,.6);
  overflow:hidden;z-index:100;display:flex;flex-direction:column;
  transform-origin:center 20%;}
.window.opening{animation:winIn .34s cubic-bezier(.2,1.1,.3,1) both;}
@keyframes winIn{from{opacity:0;transform:scale(.86) translateY(18px)}to{opacity:1;transform:none}}
.window.closing{animation:winOut .22s ease-in both;}
@keyframes winOut{to{opacity:0;transform:scale(.88) translateY(10px)}}
.win-rs{position:absolute;z-index:5;}
.rs-n{top:-4px;left:10px;right:10px;height:8px;cursor:n-resize;}
.rs-s{bottom:-4px;left:10px;right:10px;height:8px;cursor:s-resize;}
.rs-e{right:-4px;top:10px;bottom:10px;width:8px;cursor:e-resize;}
.rs-w{left:-4px;top:10px;bottom:10px;width:8px;cursor:w-resize;}
.rs-ne{top:-5px;right:-5px;width:14px;height:14px;cursor:ne-resize;}
.rs-nw{top:-5px;left:-5px;width:14px;height:14px;cursor:nw-resize;}
.rs-se{bottom:-5px;right:-5px;width:14px;height:14px;cursor:se-resize;}
.rs-sw{bottom:-5px;left:-5px;width:14px;height:14px;cursor:sw-resize;}
.win-head{height:34px;background:rgba(35,35,40,.6);display:flex;align-items:center;
  padding:0 12px;gap:8px;cursor:grab;flex:none;}
.win-head:active{cursor:grabbing}
.circle{width:12px;height:12px;border-radius:50%;flex:none;border:none;padding:0;cursor:pointer;position:relative;
  background:rgba(255,255,255,.16);transition:background .15s;}
/* 12px 的圆点作为点击目标太小，指针稍偏就落到标题栏上并被当成拖窗口，
   click 随之丢失。用伪元素把可点区域扩到 20x30：宽度 20 = 12 圆点 + 8 间距，
   刚好铺满两按钮之间又不互相重叠；高度吃满标题栏，上下都不会漏。
   视觉尺寸不变，z-index 保证热区盖在标题栏拖动区之上。 */
.circle{z-index:1;}
.circle::before{content:'';position:absolute;left:50%;top:50%;
  width:20px;height:34px;transform:translate(-50%,-50%);}
.win-head:hover .circle.red{background:#ff5f57}
.win-head:hover .circle.yellow{background:#febc2e}
.win-head:hover .circle.green{background:#28c840}
.circle.red::after{content:'×';position:absolute;inset:0;font-size:11px;line-height:12px;text-align:center;color:rgba(0,0,0,.55);opacity:0;}
.win-head:hover .circle.red::after{opacity:1}
.win-title{display:flex;align-items:center;gap:7px;margin:0 auto;transform:translateX(-22px);
  color:rgba(255,255,255,.85);font-size:13px;font-weight:500;pointer-events:none;}
.win-title img{width:17px;height:17px;object-fit:contain;}
.win-body{flex:1;overflow:auto;scrollbar-width:none;}
.win-body::-webkit-scrollbar{display:none}
.win-body.pad{padding:18px;color:#e8e8ea;font-size:14px;line-height:1.7;}
.win-body video{display:block;width:100%;height:100%;object-fit:cover;background:#000;}
.win-body .note{white-space:pre-wrap;-webkit-user-select:text;user-select:text;outline:none;min-height:100%;}
/* 富文本公告（来自 CMS 头部公告）：取消 pre-wrap，改用常规 HTML 排版 */
.win-body .note-rich{white-space:normal;}
.win-body .note-rich>*:first-child{margin-top:0;}
.win-body .note-rich p{margin:0 0 10px;}
.win-body .note-rich h1,.win-body .note-rich h2,.win-body .note-rich h3,
.win-body .note-rich h4,.win-body .note-rich h5,.win-body .note-rich h6{margin:16px 0 8px;font-weight:600;line-height:1.4;color:#fff;}
.win-body .note-rich h1{font-size:19px;}
.win-body .note-rich h2{font-size:17px;}
.win-body .note-rich h3{font-size:15.5px;}
.win-body .note-rich h4,.win-body .note-rich h5,.win-body .note-rich h6{font-size:14px;}
.win-body .note-rich ul,.win-body .note-rich ol{margin:0 0 10px;padding-left:22px;}
.win-body .note-rich li{margin:3px 0;}
.win-body .note-rich a{color:#5ec2ff;text-decoration:none;}
.win-body .note-rich a:hover{text-decoration:underline;}
.win-body .note-rich strong,.win-body .note-rich b{font-weight:600;color:#fff;}
.win-body .note-rich img{display:block;max-width:100%;height:auto;border-radius:6px;margin:10px 0;}
.win-body .note-rich hr{border:none;border-top:1px solid rgba(255,255,255,0.12);margin:14px 0;}
.win-body .note-rich blockquote{margin:10px 0;padding:8px 12px;border-left:3px solid rgba(255,255,255,0.18);background:rgba(255,255,255,0.04);border-radius:0 6px 6px 0;color:rgba(255,255,255,0.75);}
.win-body .note-rich pre{margin:10px 0;padding:10px 12px;background:rgba(0,0,0,0.35);border-radius:6px;overflow-x:auto;white-space:pre;font-size:12.5px;}
.win-body .note-rich code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;background:rgba(255,255,255,0.08);padding:1px 5px;border-radius:4px;}
.win-body .note-rich pre code{background:none;padding:0;}
.win-body .note-rich table{width:100%;border-collapse:collapse;margin:10px 0;font-size:13px;}
.win-body .note-rich th,.win-body .note-rich td{border:1px solid rgba(255,255,255,0.12);padding:6px 9px;text-align:left;}
.win-body .note-rich th{background:rgba(255,255,255,0.06);font-weight:600;color:#fff;}
.win-body img.full{display:block;width:100%;}
