/* Kole UI Mobile · Overlay 样式 — 对齐移动端规格 §40 遮罩层:浮层基座。它自己不承载内容语义 —— scrim 是纯装饰(aria-hidden), 内容放进 content 槽位并由宿主给 role(对话框 role=dialog、面板 role=region …)。 两种尺寸:默认固定全屏(fixed);contained=true 时改为绝对定位填充最近的定位祖先, 用于「卡片内局部加载遮罩」这类不覆盖全屏的场景。 注意:scrim 是真·指针目标,但**不写 cursor: pointer** —— 触屏没有指针形态, 鼠标专属的交互提示会把「可点」这件事表达成只有鼠标用户能收到(键盘路径由 content 里的关闭按钮与 Esc 承担)。 */ .kole-m-overlay { --kole-m-overlay-blur: 6px; --kole-m-overlay-duration: var(--kole-m-duration-slide); position: fixed; inset: 0; z-index: 2000; box-sizing: border-box; display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity var(--kole-m-overlay-duration) var(--kole-m-ease-slide); } .kole-m-overlay.is-open { opacity: 1; pointer-events: auto; } /* 变体 contained=true:填充最近的定位祖先(局部遮罩,如卡片加载态) */ .kole-m-overlay--contained { position: absolute; z-index: 10; } /* 变体 tone:三档遮罩浓度与质感 */ .kole-m-overlay--default .kole-m-overlay__scrim { background: var(--kole-color-mask); } .kole-m-overlay--strong .kole-m-overlay__scrim { background: var(--kole-color-mask-strong); } .kole-m-overlay--blur .kole-m-overlay__scrim { background: var(--kole-color-mask); -webkit-backdrop-filter: blur(var(--kole-m-overlay-blur)); backdrop-filter: blur(var(--kole-m-overlay-blur)); } .kole-m-overlay__scrim { position: absolute; inset: 0; border: 0; padding: 0; } .kole-m-overlay__content { position: relative; z-index: 1; box-sizing: border-box; max-width: 80%; max-height: 80%; overflow: auto; -webkit-overflow-scrolling: touch; } @media (prefers-reduced-motion: reduce) { .kole-m-overlay { transition: none; } }