.image-window-container { width: 100vw; height: 100vh; background-color: var(--bg-primary); display: flex; flex-direction: column; overflow: hidden; user-select: none; .title-bar { height: 40px; min-height: 40px; display: flex; justify-content: space-between; align-items: center; background: var(--bg-secondary); border-bottom: 1px solid var(--border-color); padding-right: 140px; // 为原生窗口控件留出空间 .window-drag-area { flex: 1; height: 100%; -webkit-app-region: drag; } .title-bar-controls { display: flex; align-items: center; gap: 8px; -webkit-app-region: no-drag; margin-right: 16px; button { background: transparent; border: none; color: var(--text-secondary); cursor: pointer; padding: 6px; border-radius: 4px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; &:hover { background: var(--bg-tertiary); color: var(--text-primary); } &:disabled { cursor: default; opacity: 1; } &.live-play-btn { &.active { background: rgba(var(--primary-rgb, 76, 132, 255), 0.16); color: var(--primary, #4c84ff); } } } .scale-text { min-width: 50px; text-align: center; color: var(--text-secondary); font-size: 12px; font-variant-numeric: tabular-nums; } .divider { width: 1px; height: 14px; background: var(--border-color); margin: 0 4px; } } } .image-viewport { flex: 1; display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; cursor: grab; &:active { cursor: grabbing; } .media-wrapper { position: relative; display: inline-flex; align-items: center; justify-content: center; will-change: transform; } img, video { display: block; max-width: none; max-height: none; object-fit: contain; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); pointer-events: auto; } .live-video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: fill; pointer-events: none; opacity: 0; will-change: opacity; transition: opacity 0.3s ease-in-out; } .live-video.visible { opacity: 1; } } } .image-window-empty { height: 100vh; display: flex; align-items: center; justify-content: center; color: var(--text-secondary); background-color: var(--bg-primary); }