.floating-window { position: fixed; background: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); display: flex; flex-direction: column; overflow: hidden; z-index: 1000; transition: all 0.3s ease; } .floating-window.minimized { transform: translateY(calc(100% - 40px)); border-radius: 8px 8px 0 0; } .window-header { background: #f5f5f5; padding: 8px 12px; display: flex; justify-content: space-between; align-items: center; cursor: move; user-select: none; border-bottom: 1px solid #e0e0e0; height: 40px; } .window-title { font-size: 14px; font-weight: 500; color: #333; } .window-controls { display: flex; gap: 8px; } .window-control-button { background: none; border: none; font-size: 16px; color: #666; cursor: pointer; padding: 0 4px; line-height: 1; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 4px; } .window-control-button:hover { background: rgba(0, 0, 0, 0.05); } .minimize-button:hover { color: #1890ff; } .close-button:hover { color: #ff4d4f; } .window-content { flex: 1; padding: 12px; position: relative; min-height: 200px; transition: height 0.3s ease; } .window-content.minimized { height: 0; padding: 0; overflow: hidden; } .window-content canvas { width: 100% !important; height: 100% !important; } .resize-handle { position: absolute; right: 0; bottom: 0; width: 20px; height: 20px; cursor: se-resize; } .resize-handle::after { content: ''; position: absolute; right: 4px; bottom: 4px; width: 8px; height: 8px; border-right: 2px solid #ccc; border-bottom: 2px solid #ccc; }