Files
chatroom/resources/css/app.css
T
pllx f17f171f4b fix: 修复迁移遗留的按钮无响应、头像框层级及构建错误
迁移收尾修复:
- heartbeat.js: 移除 export { } 中重复的 startHeartbeat/stopHeartbeat(已通过 export function 导出)
- scripts.blade.php: 移除 JS 注释中的 {{ }} 避免 Blade 编译为 e() 导致 PHP 解析错误
- preferences-status.js: 补全 6 个缺失的 window.* 赋值(toggleBlockMenu/toggleFeatureMenu 等),
  实现迁移中丢失的 updateDailyStatus/clearDailyStatus,修复 handleFeatureLocalClear 清屏回调
- toolbar.js: 补全 window.runFeatureShortcut 赋值

头像框样式修复(chat-decorations.css):
- z-index 互换:头像降至 1,框升至 3,使框边缘可遮挡头像外围
- 使用 CSS mask(radial-gradient)挖环形替代旧 ::before 实心圆遮挡方案
- clip-path: circle(50%) 硬裁剪确保圆形,不受 chat.css border-radius: 2px 覆盖
- 特异性提升至 .user-item .avatar-frame-wrapper .user-head

新 Vite 模块(从 Blade 迁移):
- chat-state.js / message-renderer.js / user-list.js / chat-events.js
- composer.js(重写)/ heartbeat.js / admin-commands.js
- vip-presence.js / chat-decorations.css
2026-04-27 09:19:49 +00:00

149 lines
3.2 KiB
CSS

@import 'tailwindcss';
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
@source '../../storage/framework/views/*.php';
@source '../**/*.blade.php';
@source '../**/*.js';
@theme {
--font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol', 'Noto Color Emoji';
}
/* 五子棋公屏邀请按钮由 Vite 事件委托接管,这里集中维护 hover 视觉态。 */
.gomoku-invite-open:hover {
background: #ddeeff !important;
}
.gomoku-invite-accept:hover {
opacity: .8 !important;
}
.vip-presence-banner {
position: fixed;
inset: 24px 24px auto 24px;
z-index: 100000;
display: flex;
justify-content: center;
pointer-events: none;
animation: vip-presence-enter .55s ease-out both;
}
.vip-presence-banner.is-leaving {
animation: vip-presence-leave .65s ease-in both;
}
.vip-presence-banner__glow {
position: absolute;
inset: 14px auto auto 50%;
width: min(72vw, 720px);
height: 88px;
border-radius: 9999px;
filter: blur(34px);
transform: translateX(-50%);
opacity: .95;
}
.vip-presence-banner__card {
position: relative;
width: min(92vw, 760px);
border: 1px solid rgba(255, 255, 255, .35);
border-radius: 28px;
padding: 20px 24px;
overflow: hidden;
box-shadow: 0 20px 60px rgba(15, 23, 42, .35);
}
.vip-presence-banner__card::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.16) 38%, transparent 72%);
transform: translateX(-120%);
animation: vip-presence-shine 2.6s ease-in-out infinite;
}
.vip-presence-banner__meta {
position: relative;
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.vip-presence-banner__icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 42px;
height: 42px;
border-radius: 16px;
background: rgba(15, 23, 42, .22);
backdrop-filter: blur(10px);
font-size: 24px;
}
.vip-presence-banner__level {
font-size: 12px;
font-weight: 800;
letter-spacing: .12em;
text-transform: uppercase;
color: rgba(255, 255, 255, .92);
}
.vip-presence-banner__type {
font-size: 11px;
font-weight: 700;
padding: 6px 10px;
border-radius: 9999px;
color: #0f172a;
background: rgba(255, 255, 255, .72);
}
.vip-presence-banner__text {
position: relative;
margin-top: 14px;
font-size: clamp(16px, 2vw, 24px);
font-weight: 800;
line-height: 1.5;
text-wrap: balance;
text-shadow: 0 2px 18px rgba(15, 23, 42, .22);
}
@keyframes vip-presence-enter {
from {
opacity: 0;
transform: translateY(-22px) scale(.96);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes vip-presence-leave {
from {
opacity: 1;
transform: translateY(0) scale(1);
}
to {
opacity: 0;
transform: translateY(-16px) scale(.98);
}
}
@keyframes vip-presence-shine {
0% {
transform: translateX(-120%);
}
55%,
100% {
transform: translateX(140%);
}
}
@import './chat-decorations.css';