2026-05-10 13:12:44 +08:00

380 lines
7.2 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* === 全局重置 === */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', 'PingFang SC', Roboto, system-ui, sans-serif;
}
body {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
min-height: 100vh;
padding: 20px;
color: #fff;
}
/* === 主容器 === */
.container {
max-width: 1400px;
margin: 0 auto;
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(10px);
border-radius: 24px;
padding: 24px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
border: 1px solid rgba(255, 255, 255, 0.1);
}
/* === 标题区域 === */
h1 {
font-size: 2.5em;
margin-bottom: 24px;
background: linear-gradient(45deg, #fff, #e94560);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 0 0 20px rgba(233, 69, 96, 0.3);
letter-spacing: 2px;
}
/* === 两列布局 === */
.main-layout {
display: grid;
grid-template-columns: 280px 1fr 300px;
gap: 20px;
margin-top: 20px;
}
/* === 左侧面板通用样式 === */
.left-panel, .right-panel {
background: rgba(10, 10, 20, 0.6);
border-radius: 20px;
padding: 20px;
border: 1px solid rgba(255, 255, 255, 0.05);
backdrop-filter: blur(5px);
}
/* === 素材分类标题 === */
.left-panel h3 {
color: #e94560;
margin: 16px 0 12px 0;
font-size: 1.2em;
letter-spacing: 1px;
border-left: 4px solid #e94560;
padding-left: 12px;
}
.left-panel h3:first-of-type {
margin-top: 0;
}
/* === 素材网格 === */
.material-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
margin-bottom: 10px;
}
/* === 素材项 === */
.material-item {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
padding: 10px;
text-align: center;
cursor: pointer;
transition: all 0.2s ease;
color: #fff;
font-size: 0.9em;
}
.material-item:hover {
background: rgba(233, 69, 96, 0.2);
border-color: #e94560;
transform: translateY(-2px);
}
/* === 中间画布区域 === */
.canvas-area {
background: rgba(0, 0, 0, 0.3);
border-radius: 20px;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
border: 1px solid rgba(255, 255, 255, 0.05);
}
/* === 画布 === */
#mainCanvas {
width: 100%;
max-width: 800px;
aspect-ratio: 16/9;
background: #0a0a14;
border-radius: 16px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
border: 2px solid rgba(233, 69, 96, 0.3);
cursor: crosshair;
}
/* === 画布控制栏 === */
.canvas-controls {
margin-top: 16px;
display: flex;
gap: 12px;
flex-wrap: wrap;
justify-content: center;
}
/* === 按钮样式 === */
.btn {
background: linear-gradient(45deg, #2a1a3a, #1a1a2e);
border: 1px solid #533483;
color: #fff;
padding: 10px 24px;
border-radius: 30px;
font-size: 0.95em;
font-weight: 500;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
letter-spacing: 0.5px;
}
.btn:hover {
background: linear-gradient(45deg, #3a2a4a, #2a1a3a);
border-color: #e94560;
transform: translateY(-2px);
box-shadow: 0 6px 15px rgba(233, 69, 96, 0.3);
}
.btn-primary {
background: linear-gradient(45deg, #e94560, #533483);
border-color: #e94560;
font-weight: 600;
}
.btn-primary:hover {
background: linear-gradient(45deg, #ff5570, #634393);
box-shadow: 0 6px 20px rgba(233, 69, 96, 0.5);
}
/* === 右侧面板 === */
.right-panel {
display: flex;
flex-direction: column;
gap: 20px;
}
/* === 场景列表 === */
.scene-list {
background: rgba(0, 0, 0, 0.2);
border-radius: 12px;
padding: 12px;
min-height: 120px;
border: 1px solid rgba(255, 255, 255, 0.05);
}
.scene-item {
background: rgba(233, 69, 96, 0.1);
border: 1px solid #533483;
border-radius: 8px;
padding: 8px 12px;
margin-bottom: 8px;
cursor: pointer;
transition: all 0.2s;
display: flex;
justify-content: space-between;
align-items: center;
}
.scene-item:hover {
background: rgba(233, 69, 96, 0.2);
border-color: #e94560;
}
.scene-item.active {
background: rgba(233, 69, 96, 0.3);
border-color: #e94560;
box-shadow: 0 0 15px rgba(233, 69, 96, 0.3);
}
/* === 时间轴 === */
.timeline {
background: rgba(0, 0, 0, 0.3);
border-radius: 16px;
padding: 16px;
margin-top: 20px;
border: 1px solid rgba(255, 255, 255, 0.05);
}
.timeline h3 {
color: #e94560;
margin-bottom: 12px;
font-size: 1.1em;
}
.timeline-controls {
display: flex;
gap: 10px;
margin-bottom: 16px;
flex-wrap: wrap;
}
.frames-container {
display: flex;
gap: 12px;
overflow-x: auto;
padding: 12px 0;
min-height: 100px;
}
.frame-thumb {
min-width: 120px;
height: 68px;
background: #0f0f1a;
border: 2px solid #533483;
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
font-size: 0.8em;
color: #aaa;
position: relative;
}
.frame-thumb:hover {
border-color: #e94560;
transform: scale(1.05);
}
.frame-thumb.active {
border-color: #e94560;
background: rgba(233, 69, 96, 0.2);
box-shadow: 0 0 15px rgba(233, 69, 96, 0.3);
}
.frame-index {
font-size: 1.2em;
font-weight: bold;
color: #e94560;
margin-bottom: 4px;
}
/* === 预览模式样式 === */
.preview-mode .left-panel,
.preview-mode .right-panel,
.preview-mode .timeline,
.preview-mode .canvas-controls .btn:not(#exitPreviewBtn):not(#playPreviewBtn):not(#pausePreviewBtn):not(#stopPreviewBtn) {
display: none !important;
}
.preview-mode .canvas-area {
grid-column: 1 / -1;
justify-content: center;
min-height: 80vh;
}
.preview-mode #mainCanvas {
max-width: 1200px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.6);
}
.preview-mode .preview-controls {
display: flex !important;
gap: 12px;
margin-top: 20px;
justify-content: center;
}
/* === 分享面板样式 === */
.share-panel {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #1a1a2e;
border: 2px solid #e94560;
border-radius: 24px;
padding: 30px;
z-index: 1000;
min-width: 400px;
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.8);
backdrop-filter: blur(20px);
}
.share-panel h3 {
color: #e94560;
margin-bottom: 20px;
font-size: 1.5em;
}
.share-url {
background: #0a0a14;
border: 1px solid #533483;
border-radius: 12px;
padding: 12px;
margin: 15px 0;
word-break: break-all;
font-size: 0.9em;
color: #fff;
max-height: 100px;
overflow-y: auto;
}
.share-actions {
display: flex;
gap: 12px;
justify-content: flex-end;
margin-top: 20px;
}
/* === 遮罩层 === */
.overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(5px);
z-index: 999;
}
/* === 工具类 === */
.hidden {
display: none !important;
}
/* === canvas-asset来自原来文件保留 === */
.canvas-asset:hover {
transform: scale(1.1);
}
.canvas-asset.selected {
outline: 2px dashed #e94560;
outline-offset: 4px;
}
/* === 滚动条样式(来自原来文件,保留) === */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #0f0f1a;
}
::-webkit-scrollbar-thumb {
background: #533483;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #e94560;
}